@wavemaker/app-ng-runtime 11.5.0-next.40002 → 11.5.0-next.40301
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.
- app-ng-runtime/components/basic/search/bundles/index.umd.js +7 -0
- app-ng-runtime/components/basic/search/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/basic/search/esm2015/search.component.js +7 -1
- app-ng-runtime/components/basic/search/fesm2015/index.js +6 -0
- app-ng-runtime/components/basic/search/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/basic/tree/bundles/index.umd.js +236 -132
- app-ng-runtime/components/basic/tree/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/basic/tree/esm2015/tree.component.js +208 -135
- app-ng-runtime/components/basic/tree/fesm2015/index.js +207 -134
- app-ng-runtime/components/basic/tree/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/basic/tree/index.metadata.json +1 -1
- app-ng-runtime/components/basic/tree/tree.component.d.ts +21 -25
- app-ng-runtime/components/chart/bundles/index.umd.js +1 -7
- app-ng-runtime/components/chart/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/chart/esm2015/chart.component.js +2 -8
- app-ng-runtime/components/chart/fesm2015/index.js +1 -7
- app-ng-runtime/components/chart/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/chart/index.metadata.json +1 -1
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js +0 -6
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/containers/tabs/esm2015/tab-pane/tab-pane.component.js +1 -7
- app-ng-runtime/components/containers/tabs/fesm2015/index.js +0 -6
- app-ng-runtime/components/containers/tabs/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/containers/tabs/index.metadata.json +1 -1
- app-ng-runtime/components/containers/tabs/tab-pane/tab-pane.component.d.ts +0 -2
- app-ng-runtime/components/data/form/bundles/index.umd.js +3 -9
- app-ng-runtime/components/data/form/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/data/form/esm2015/form.component.js +5 -11
- app-ng-runtime/components/data/form/fesm2015/index.js +4 -10
- app-ng-runtime/components/data/form/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/data/form/index.metadata.json +1 -1
- app-ng-runtime/components/input/calendar/bundles/index.umd.js +1 -11
- app-ng-runtime/components/input/calendar/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/input/calendar/calendar.component.d.ts +2 -4
- app-ng-runtime/components/input/calendar/esm2015/calendar.component.js +2 -12
- app-ng-runtime/components/input/calendar/fesm2015/index.js +1 -11
- app-ng-runtime/components/input/calendar/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/input/calendar/index.metadata.json +1 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +3 -9
- app-ng-runtime/components/input/default/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +2 -4
- app-ng-runtime/components/input/default/esm2015/base-form-custom.component.js +4 -2
- app-ng-runtime/components/input/default/esm2015/dataset-aware-form.component.js +1 -9
- app-ng-runtime/components/input/default/fesm2015/index.js +3 -9
- app-ng-runtime/components/input/default/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/input/default/index.metadata.json +1 -1
- app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +0 -1
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +24 -25
- app-ng-runtime/components/input/epoch/bundles/index.umd.js.map +1 -1
- app-ng-runtime/components/input/epoch/esm2015/base-date-time.component.js +19 -17
- app-ng-runtime/components/input/epoch/esm2015/date/date.component.js +3 -5
- app-ng-runtime/components/input/epoch/esm2015/date-time/date-time-picker.component.js +10 -10
- app-ng-runtime/components/input/epoch/esm2015/date-time/date-time.component.js +2 -2
- app-ng-runtime/components/input/epoch/esm2015/time/time.component.js +2 -2
- app-ng-runtime/components/input/epoch/fesm2015/index.js +31 -31
- app-ng-runtime/components/input/epoch/fesm2015/index.js.map +1 -1
- app-ng-runtime/components/input/epoch/index.metadata.json +1 -1
- app-ng-runtime/core/bundles/index.umd.js +8 -12
- app-ng-runtime/core/bundles/index.umd.js.map +1 -1
- app-ng-runtime/core/esm2015/services/state-persistence.service.js +2 -4
- app-ng-runtime/core/esm2015/services/viewport.service.js +7 -9
- app-ng-runtime/core/esm2015/utils/utils.js +2 -2
- app-ng-runtime/core/fesm2015/index.js +8 -12
- app-ng-runtime/core/fesm2015/index.js.map +1 -1
- app-ng-runtime/mobile/components/basic/default/bundles/index.umd.js +1 -1
- app-ng-runtime/mobile/components/basic/default/bundles/index.umd.js.map +1 -1
- app-ng-runtime/mobile/components/basic/default/esm2015/image-cache/image-cache.directive.js +2 -2
- app-ng-runtime/mobile/components/basic/default/fesm2015/index.js +1 -1
- app-ng-runtime/mobile/components/basic/default/fesm2015/index.js.map +1 -1
- app-ng-runtime/mobile/components/basic/default/index.metadata.json +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +2 -35
- app-ng-runtime/runtime/base/bundles/index.umd.js.map +1 -1
- app-ng-runtime/runtime/base/esm2015/services/i18n.service.js +3 -35
- app-ng-runtime/runtime/base/fesm2015/index.js +2 -34
- app-ng-runtime/runtime/base/fesm2015/index.js.map +1 -1
- app-ng-runtime/runtime/base/index.metadata.json +1 -1
- app-ng-runtime/runtime/base/services/i18n.service.d.ts +0 -2
|
@@ -351,9 +351,7 @@ export class StatePersistence {
|
|
|
351
351
|
if (!_.get(parsedObj, [stateParam]) && !_.get(parsedObj, key)) {
|
|
352
352
|
return;
|
|
353
353
|
}
|
|
354
|
-
|
|
355
|
-
// _.get(parsedObj, stateParam + '.' + key) is undefined so using (parsedObj && parsedObj[stateParam] && parsedObj[stateParam][key]) condition.
|
|
356
|
-
if (_.get(parsedObj, stateParam + '.' + key) || (parsedObj && parsedObj[stateParam] && parsedObj[stateParam][key])) {
|
|
354
|
+
if (_.get(parsedObj, stateParam + '.' + key)) {
|
|
357
355
|
if (subParam) {
|
|
358
356
|
delete parsedObj[stateParam][key][subParam];
|
|
359
357
|
}
|
|
@@ -494,4 +492,4 @@ StatePersistence.ɵprov = i0.ɵɵdefineInjectable({ factory: function StatePersi
|
|
|
494
492
|
StatePersistence.decorators = [
|
|
495
493
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
496
494
|
];
|
|
497
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtcGVyc2lzdGVuY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3NlcnZpY2VzL3N0YXRlLXBlcnNpc3RlbmNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUVZLG9CQUFlLEdBQUcsU0FBUyxDQUFDO1FBQzVCLDBCQUFxQixHQUFHLEVBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFDLENBQUM7UUFDekUscUJBQWdCLEdBQUcsSUFBSSxDQUFDO0tBeWVuQztJQXZlRzs7O09BR0c7SUFDSSxpQkFBaUIsQ0FBQyxHQUFHO1FBQ3hCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDM0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxhQUFhLENBQUMsVUFBZSxFQUFFLFVBQWtCLEVBQUUsYUFBc0I7UUFDNUUsSUFBSSxHQUFHLEdBQUcsYUFBYSxJQUFJLFVBQVUsQ0FBQztRQUN0QyxJQUFJLFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2pFLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFD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Q0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUksWUFBWTthQUNuQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFJLFlBQVk7U0FDM0MsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMkJHO0lBQ0ssU0FBUyxDQUFDLFVBQVU7UUFDeEIsSUFBSSxRQUFhLENBQUM7UUFDbEIsSUFBSTtZQUNBLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNqQixrQkFBa0IsQ0FBQyxVQUFVLENBQUM7aUJBQ3pCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUksWUFBWTtpQkFDbkMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBSSxZQUFZO2lCQUNuQyxPQUFPLENBQUMsSUFBSSxFQUFHLEdBQUcsQ0FBQyxDQUFJLFlBQVk7aUJBQ25DLE9BQU8sQ0FBQyxJQUFJLEVBQUcsR0FBRyxDQUFDLENBQUksWUFBWTtpQkFDbkMsT0FBTyxDQUFDLElBQUksRUFBRyxHQUFHLENBQUMsQ0FBSSxZQUFZO2lCQUNuQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFJLFlBQVk7aUJBQ25DLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUksWUFBWTthQUMzQyxDQUFDO1NBQ0w7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkI7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDOzs7O1lBNWVKLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmRlY2xhcmUgY29uc3QgXztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTdGF0ZVBlcnNpc3RlbmNlIHtcbiAgICBwcml2YXRlIEhJU1RPUllfSEFORExFUiA9ICdyZXBsYWNlJztcbiAgICBwcml2YXRlIEhJU1RPUllfSEFORExFUl9UWVBFUyA9IHsncHVzaCc6ICdwdXNoU3RhdGUnLCAncmVwbGFjZSc6ICdyZXBsYWNlU3RhdGUnfTtcbiAgICBwcml2YXRlIFdJREdFVF9TVEFURV9LRVkgPSAnd3MnO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcGFzc2VkIHZhbHVlIGFzIHRoZSBIaXN0b3J5IGhhbmRsZXIgaWYgaXQgZXhpc3RzIGluIHRoZSBIaXN0b3J5X0hhbmRsZXJfVHlwZXMgb2JqZWN0XG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRIaXN0b3J5SGFuZGxlcih2YWwpIHtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuSElTVE9SWV9IQU5ETEVSX1RZUEVTKS5pbmRleE9mKHZhbCkgPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5ISVNUT1JZX0hBTkRMRVIgPSB2YWw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgdW5pcXVlIGtleSBmb3Igc2V0dGluZyBzdGF0ZSBwYXJhbSBieSB1c2luZyB0aGUgdmlld1BhcmVudCBwcm9wZXJ0eSBvZiBhIHdpZGdldFxuICAgICAqIHNvIHRoYXQgbmFtZSBjb25mbGljdHMgYXJlIGF2b2lkZWQgd2hlbiB0aGUgc2FtZSB3aWRnZXQgbmFtZSBpc1xuICAgICAqIHByZXNlbnQgaW5zaWRlIGEgUGFnZSwgYSBQYXJ0aWFsIHdpdGhpbiBhIFBhZ2Ugb3IgYSBQcmVmYWIgd2l0aGluIGEgUGFnZSBhbmQgc28gb24uXG4gICAgICogRS5nLjpcbiAgICAgKiBpZiBhIHBhZ2UgaGFzIGEgdGFicyB3aWRnZXQgd2l0aCB0aGUgbmFtZSB0YWJzMSwgYSBwYXJ0aWFsIFBhcnRpYWwxKGluc2lkZSBjb250YWluZXIxKSBpbmNsdXNpb24gd2l0aGluIHdoaWNoXG4gICAgICogdGhlcmUgaXMgYSB0YWJzIHdpdGggbmFtZSB0YWJzMSBhbmQgYSBwcmVmYWIgTXlQcmVmYWIgaW5jbHVzaW9uIHdpdGggYSB0YWJzIHdpZGdldCB3aXRoIHRoZSBuYW1lIHRhYnMxLFxuICAgICAqIGdldE5lc3RlZFBhdGggd2lsbCByZXR1cm4gdGFiczEsIGNvbnRhaW5lcjEuUGFydGlhbDEudGFiczEgYW5kIE15UHJlZmFiMS5NeVByZWZhYi50YWJzMSByZXNwZWN0aXZlbHkuXG4gICAgICogQHBhcmFtIHZpZXdQYXJlbnRcbiAgICAgKiBAcGFyYW0gd2lkZ2V0TmFtZVxuICAgICAqIEBwYXJhbSBjdXJyZW50T3V0cHV0XG4gICAgICovXG4gICAgcHVibGljIGdldE5lc3RlZFBhdGgodmlld1BhcmVudDogYW55LCB3aWRnZXROYW1lOiBzdHJpbmcsIGN1cnJlbnRPdXRwdXQ/OiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IG91dCA9IGN1cnJlbnRPdXRwdXQgfHwgd2lkZ2V0TmFtZTtcbiAgICAgICAgaWYgKHZpZXdQYXJlbnQgJiYgKHZpZXdQYXJlbnQucHJlZmFiTmFtZSB8fCB2aWV3UGFyZW50LnBhcnRpYWxOYW1lKSkge1xuICAgICAgICAgICAgb3V0ID0gb3V0Lmxlbmd0aCA+IDAgPyBvdXQgKyAnLicgKyAodmlld1BhcmVudC5wcmVmYWJOYW1lIHx8IHZpZXdQYXJlbnQucGFydGlhbE5hbWUpIDogKHZpZXdQYXJlbnQucHJlZmFiTmFtZSB8fCB2aWV3UGFyZW50LnBhcnRpYWxOYW1lKTtcbiAgICAgICAgICAgIC8vIHNhbWUgcGFydGlhbC9wcmVmYWIgY2FuIGJlIGRyb3BwZWQgbXVsdGlwbGUgdGltZXMgaW4gYSBwYWdlLiBBcHBlbmRpbmcgY29udGFpbmVyJ3MgbmFtZSBmb3IgdW5pcXVlbmVzcy5cbiAgICAgICAgICAgIG91dCA9IG91dCArICcuJyArIHZpZXdQYXJlbnQuY29udGFpbmVyV2lkZ2V0Lm5hbWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROZXN0ZWRQYXRoKHZpZXdQYXJlbnQuY29udGFpbmVyV2lkZ2V0LnZpZXdQYXJlbnQsIHdpZGdldE5hbWUsIG91dCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dC5zcGxpdCgnLicpLnJldmVyc2UoKS5qb2luKCcuJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVjb2RlcyBhbmQgcGFyc2VzIHRoZSBzdGF0ZSBpbmZvcm1hdGlvbiBhbmQgcmV0dXJucyB0aGUgcGFyc2VkIHN0YXRlIG9iamVjdFxuICAgICAqIEBwYXJhbSBtb2RlIDogb3B0aW9uYWwgcGFyYW1ldGVyIGlmIHRoZSB3aWRnZXQvdmFyaWFibGUgdXNlcyBhIHN0YXRlIGhhbmRsaW5nIG1vZGUodXJsLCBsb2NhbCBzdG9yYWdlLCBzZXNzaW9uIHN0b3JhZ2UpXG4gICAgICogb3RoZXIgdGhhbiB0aGUgcHJvamVjdCBsZXZlbCBtb2RlXG4gICAgICovXG4gICAgcHVibGljIGdldFN0YXRlSW5mb3JtYXRpb24obW9kZSkge1xuICAgICAgICBsZXQgcGFyc2VkU3RhdGVJbmZvLCBzdGF0ZUluZm87XG4gICAgICAgIGlmIChtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICd1cmwnKSB7XG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkVVJJID0gZGVjb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgICAgIHN0YXRlSW5mbyA9IGRlY29kZWRVUkkubWF0Y2goLyh3bV9zdGF0ZT0pLio/KCZ8JCkvKTtcbiAgICAgICAgICAgIGlmIChzdGF0ZUluZm8pIHtcbiAgICAgICAgICAgICAgICBzdGF0ZUluZm8gPSBzdGF0ZUluZm9bMF0ucmVwbGFjZSgnd21fc3RhdGU9JywgJycpO1xuICAgICAgICAgICAgICAgIHBhcnNlZFN0YXRlSW5mbyA9IHRoaXMudXJpVG9Kc29uKHN0YXRlSW5mbyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFN0YXRlSW5mbztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdsb2NhbHN0b3JhZ2UnKSB7XG4gICAgICAgICAgICBzdGF0ZUluZm8gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXFwvL2csICcnKSArICdfd21fc3RhdGUnKTtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdzZXNzaW9uc3RvcmFnZScpIHtcbiAgICAgICAgICAgIHN0YXRlSW5mbyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0od2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1xcLy9nLCAnJykgKyAnX3dtX3N0YXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlSW5mbykge1xuICAgICAgICAgICAgcGFyc2VkU3RhdGVJbmZvID0gSlNPTi5wYXJzZShzdGF0ZUluZm8pO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFN0YXRlSW5mbztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIHBhc3NlZCB3aWRnZXQgaW5zdGFuY2UgaGFzIGFueSBzdGF0ZSBpbmZvcm1hdGlvbiBhdmFpbGFibGUgb3Igbm90XG4gICAgICogQHBhcmFtIHdpZGdldFxuICAgICAqIEBwYXJhbSBtb2RlIDogb3B0aW9uYWwgcGFyYW1ldGVyIGlmIHRoZSB3aWRnZXQgdXNlcyBhIHN0YXRlIGhhbmRsaW5nIG1vZGUodXJsLCBsb2NhbCBzdG9yYWdlLCBzZXNzaW9uIHN0b3JhZ2UpXG4gICAgICogb3RoZXIgdGhhbiB0aGUgcHJvamVjdCBsZXZlbCBtb2RlXG4gICAgICovXG4gICAgcHVibGljIGdldFdpZGdldFN0YXRlKHdpZGdldCwgbW9kZT8pIHtcbiAgICAgICAgbW9kZSA9IG1vZGUgfHwgdGhpcy5jb21wdXRlTW9kZSh3aWRnZXQuc3RhdGVoYW5kbGVyKTtcbiAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBhcnNlZFN0YXRlSW5mbyA9IHRoaXMuZ2V0U3RhdGVJbmZvcm1hdGlvbihtb2RlKTtcbiAgICAgICAgaWYgKHBhcnNlZFN0YXRlSW5mbyAmJiB3aWRnZXQgICYmIHdpZGdldC5nZXRBcHBJbnN0YW5jZSgpLmFjdGl2ZVBhZ2VOYW1lICYmIChtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdsb2NhbHN0b3JhZ2UnIHx8IG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ3Nlc3Npb25zdG9yYWdlJykpIHtcbiAgICAgICAgICAgIHBhcnNlZFN0YXRlSW5mbyA9IHBhcnNlZFN0YXRlSW5mb1t3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF8uZ2V0KHBhcnNlZFN0YXRlSW5mbywgdGhpcy5XSURHRVRfU1RBVEVfS0VZKSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGVLZXkgPSB0aGlzLmdldE5lc3RlZFBhdGgod2lkZ2V0LnZpZXdQYXJlbnQsIHdpZGdldC5nZXRXaWRnZXQoKS5uYW1lKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZWRTdGF0ZUluZm9bdGhpcy5XSURHRVRfU1RBVEVfS0VZXVtzdGF0ZUtleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wdXRlTW9kZSh3aWRnZXRTdGF0ZUhhbmRsZXIpIHtcbiAgICAgICAgaWYgKCF3aWRnZXRTdGF0ZUhhbmRsZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAndXJsJztcbiAgICAgICAgfSBlbHNlIGlmICh3aWRnZXRTdGF0ZUhhbmRsZXIgJiYgd2lkZ2V0U3RhdGVIYW5kbGVyLnRvTG93ZXJDYXNlKCkgPT09ICdub25lJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHdpZGdldFN0YXRlSGFuZGxlci50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcGFzc2VkIHZhbHVlIHRvIHRoZSBzdGF0ZSBpbmZvcm1hdGlvbiBieSB1c2luZyB0aGUgcGFzc2VkIHdpZGdldCBpbnN0YW5jZVxuICAgICAqIEBwYXJhbSB3aWRnZXRcbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKiBAcGFyYW0gbW9kZSA6IG9wdGlvbmFsIHBhcmFtZXRlciBpZiB0aGUgd2lkZ2V0IHVzZXMgYSBzdGF0ZSBoYW5kbGluZyBtb2RlKHVybCwgbG9jYWwgc3RvcmFnZSwgc2Vzc2lvbiBzdG9yYWdlKVxuICAgICAqIG90aGVyIHRoYW4gdGhlIHByb2plY3QgbGV2ZWwgbW9kZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRXaWRnZXRTdGF0ZSh3aWRnZXQsIHZhbHVlLCBtb2RlPykge1xuICAgICAgICBjb25zdCBzdGF0ZUtleSA9IHRoaXMuZ2V0TmVzdGVkUGF0aCh3aWRnZXQudmlld1BhcmVudCwgd2lkZ2V0LmdldFdpZGdldCgpLm5hbWUpO1xuICAgICAgICBtb2RlID0gbW9kZSB8fCB0aGlzLmNvbXB1dGVNb2RlKHdpZGdldC5zdGF0ZWhhbmRsZXIpO1xuICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFN0YXRlUGFyYW1zKHRoaXMuV0lER0VUX1NUQVRFX0tFWSwgc3RhdGVLZXksIHZhbHVlLCBtb2RlLCB3aWRnZXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIHBhc3NlZCB3aWRnZXTigJlzIHN0YXRlIGluZm9ybWF0aW9uIGZyb20gdGhlIFN0YXRlIE9iamVjdC4gSWYgYSBrZXkgaXMgcGFzc2VkLCB0aGVuIG9ubHkgdGhhdFxuICAgICAqIHBhcnRpY3VsYXIgZW50cnkgd2lsbCBiZSByZW1vdmVkLCBub3QgYW55IG90aGVyIGVudHJpZXMgZm9yIHRoYXQgd2lkZ2V0LlxuICAgICAqIEBwYXJhbSB3aWRnZXRcbiAgICAgKiBAcGFyYW0ga2V5XG4gICAgICogQHBhcmFtIG1vZGUgOiBvcHRpb25hbCBwYXJhbWV0ZXIgaWYgdGhlIHdpZGdldCB1c2VzIGEgc3RhdGUgaGFuZGxpbmcgbW9kZSh1cmwsIGxvY2FsIHN0b3JhZ2UsIHNlc3Npb24gc3RvcmFnZSlcbiAgICAgKiBvdGhlciB0aGFuIHRoZSBwcm9qZWN0IGxldmVsIG1vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlV2lkZ2V0U3RhdGUod2lkZ2V0LCBrZXk/LCBtb2RlPykge1xuICAgICAgICBtb2RlID0gbW9kZSB8fCB0aGlzLmNvbXB1dGVNb2RlKHdpZGdldC5zdGF0ZWhhbmRsZXIpO1xuICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGF0ZUtleSA9IHRoaXMuZ2V0TmVzdGVkUGF0aCh3aWRnZXQudmlld1BhcmVudCwgd2lkZ2V0LmdldFdpZGdldCgpLm5hbWUpO1xuICAgICAgICB0aGlzLnJlbW92ZVN0YXRlUGFyYW0odGhpcy5XSURHRVRfU1RBVEVfS0VZLCBzdGF0ZUtleSwga2V5LCBtb2RlLCB3aWRnZXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHBhc3NlZCB2YWx1ZSB0byB0aGUgc3RhdGUgaW5mb3JtYXRpb24gYnkgdXNpbmcgdGhlIHBhc3NlZCB2YXJpYWJsZSBuYW1lIGFzIGtleVxuICAgICAqIEBwYXJhbSB2YXJpYWJsZU5hbWVcbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKiBAcGFyYW0gbW9kZSA6IG9wdGlvbmFsIHBhcmFtZXRlciBpZiB0aGUgdmFyaWFibGUgdXNlcyBhIHN0YXRlIGhhbmRsaW5nIG1vZGUodXJsLCBsb2NhbCBzdG9yYWdlLCBzZXNzaW9uIHN0b3JhZ2UpXG4gICAgICogb3RoZXIgdGhhbiB0aGUgcHJvamVjdCBsZXZlbCBtb2RlXG4gICAgICovXG4gICAgcHVibGljIHNldFN0YXRlVmFyaWFibGUodmFyaWFibGVOYW1lLCB2YWx1ZSwgbW9kZT8pIHtcbiAgICAgICAgbW9kZSA9IG1vZGUgfHwgdGhpcy5jb21wdXRlTW9kZShtb2RlKTtcbiAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTdGF0ZVBhcmFtcygnJywgdmFyaWFibGVOYW1lLCB2YWx1ZSwgbW9kZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBwYXNzZWQgdmFyaWFibGUgbmFtZSBoYXMgYW55IHN0YXRlIGluZm9ybWF0aW9uIGF2YWlsYWJsZSBpbiB0aGUgdXJsIG9yIG5vdFxuICAgICAqIEBwYXJhbSB2YXJpYWJsZU5hbWVcbiAgICAgKiBAcGFyYW0gbW9kZSA6IG9wdGlvbmFsIHBhcmFtZXRlciBpZiB0aGUgdmFyaWFibGUgdXNlcyBhIHN0YXRlIGhhbmRsaW5nIG1vZGUodXJsLCBsb2NhbCBzdG9yYWdlLCBzZXNzaW9uIHN0b3JhZ2UpXG4gICAgICogb3RoZXIgdGhhbiB0aGUgcHJvamVjdCBsZXZlbCBtb2RlXG4gICAgICovXG4gICAgcHVibGljIGdldFN0YXRlVmFyaWFibGUodmFyaWFibGVOYW1lOiBzdHJpbmcsIG1vZGU/KSB7XG4gICAgICAgIG1vZGUgPSBtb2RlIHx8IHRoaXMuY29tcHV0ZU1vZGUobW9kZSk7XG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnNlZFN0YXRlSW5mbyA9IHRoaXMuZ2V0U3RhdGVJbmZvcm1hdGlvbihtb2RlKTtcbiAgICAgICAgaWYgKHBhcnNlZFN0YXRlSW5mbykge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFN0YXRlSW5mb1t2YXJpYWJsZU5hbWVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSBwYXNzZWQgdmFyaWFibGXigJlzIHN0YXRlIGluZm9ybWF0aW9uIGZyb20gdGhlIFVSTC5cbiAgICAgKiBAcGFyYW0gdmFyaWFibGVOYW1lXG4gICAgICogQHBhcmFtIG1vZGUgOiBvcHRpb25hbCBwYXJhbWV0ZXIgaWYgdGhlIHdpZGdldCB1c2VzIGEgc3RhdGUgaGFuZGxpbmcgbW9kZSh1cmwsIGxvY2FsIHN0b3JhZ2UsIHNlc3Npb24gc3RvcmFnZSlcbiAgICAgKiBvdGhlciB0aGFuIHRoZSBwcm9qZWN0IGxldmVsIG1vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlU3RhdGVWYXJpYWJsZSh2YXJpYWJsZU5hbWUsIG1vZGU/KSB7XG4gICAgICAgIG1vZGUgPSBtb2RlIHx8IHRoaXMuY29tcHV0ZU1vZGUobW9kZSk7XG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVtb3ZlU3RhdGVQYXJhbSgnJywgdmFyaWFibGVOYW1lLCBudWxsLCBtb2RlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBwYXNzZWQgc3RhdGUgaW5mb3JtYXRpb24gaW4gdGhlIHVybCBieSBwYXJzaW5nIHRoZSBwYXNzZWQgdmFsdWUgYW5kIGNoZWNraW5nXG4gICAgICogaXRzIHR5cGUuIElmIGl0cyBhbiBhcnJheSB0eXBlLCB0aGVuIHRoZSBwYXNzZWQgdmFsdWVzIHdpbGwgYmUgcHVzaGVkIGludG8gYW4gYXJyYXkgYW5kIHRoZW4gc2V0IGluIHRoZSBzdGF0ZVxuICAgICAqIEUuZy5cbiAgICAgKiBDdXJyZW50IHN0YXRlIGluZm9ybWF0aW9uIGlzIGxpa2UgOlxuICAgICB7XG4gICAgICAgXCJ3aWRnZXRfc3RhdGVcIjoge1xuICAgICAgICAgICBcIlRhYmxlMVwiOiB7XG4gICAgICAgICAgICAgICBcInNlbGVjdGVkSXRlbVwiOiBbXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBcInBhZ2VcIjogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgXCJpbmRleFwiOiBcIjFcIlxuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBdLFxuICAgICAgICAgICBcInBhZ2luYXRpb25cIjogXCIxXCJcbiAgICAgICAgIH1cbiAgICAgICAgIH1cbiAgICAgfVxuICAgICAqIElucHV0IHZhbHVlIHdpbGwgYmUgbGlrZTpcbiAgICAge1xuICAgICAgIFwic2VsZWN0ZWRJdGVtXCI6IFtcbiAgICAgICAgIHtcbiAgICAgICAgICAgXCJwYWdlXCI6IFwiMVwiLFxuICAgICAgICAgICBcImluZGV4XCI6IFwiMlwiXG4gICAgICAgICB9XG4gICAgICAgXVxuICAgICB9XG5cbiAgICAgKiBUaGlzIHBhcnNpbmcgbG9naWMgd2lsbCBjb252ZXJ0IGl0IHRvIHRoZSBmb2xsb3dpbmdcbiAgICAge1xuICAgICAgIFwid2lkZ2V0X3N0YXRlXCI6IHtcbiAgICAgICAgICAgXCJUYWJsZTFcIjoge1xuICAgICAgICAgICAgICAgXCJzZWxlY3RlZEl0ZW1cIjogW1xuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgXCJwYWdlXCI6IFwiMVwiLFxuICAgICAgICAgICAgICAgICAgIFwiaW5kZXhcIjogXCIxXCJcbiAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIFwicGFnZVwiOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICBcImluZGV4XCI6IFwiMlwiXG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgIFwicGFnaW5hdGlvblwiOiBcIjFcIlxuICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICB9XG4gICAgICogQmFzZWQgb24gaG93IHRoZSBISVNUT1JZX0hBTkRMRVIgaXMgY29uZmlndXJlZCwgdGhlIHVwZGF0ZWQgdXJsIHdpbGwgZWl0aGVyIHJlcGxhY2UgdGhlIGV4aXN0aW5nIHVybCBvclxuICAgICAqIHB1c2ggYSBuZXcgc3RhdGUgaW4gdGhlIHVybCBzbyB0aGF0IGJhY2sgYnV0dG9uIG1heSB0cmFjayBlYWNoIHVwZGF0ZSB0byB0aGUgc3RhdGUuXG4gICAgICogQHBhcmFtIHN0YXRlUGFyYW1cbiAgICAgKiBAcGFyYW0ga2V5XG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqIEBwYXJhbSBtb2RlIDogb3B0aW9uYWwgcGFyYW1ldGVyIGlmIHRoZSB3aWRnZXQvdmFyaWFibGUgdXNlcyBhIHN0YXRlIGhhbmRsaW5nIG1vZGUodXJsLCBsb2NhbCBzdG9yYWdlLCBzZXNzaW9uIHN0b3JhZ2UpXG4gICAgICogb3RoZXIgdGhhbiB0aGUgcHJvamVjdCBsZXZlbCBtb2RlXG4gICAgICovXG4gICAgcHVibGljIHNldFN0YXRlUGFyYW1zKHN0YXRlUGFyYW06IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbDogYW55LCBtb2RlPywgd2lkZ2V0Pykge1xuICAgICAgICBsZXQgdXJsID0gJycsIHBhcnNlZE9iajtcbiAgICAgICAgY29uc3Qgc3RhdGVPYmogPSB0aGlzLmdldFN0YXRlSW5mb3JtYXRpb24obW9kZSk7XG4gICAgICAgIGlmICh3aWRnZXQgJiYgc3RhdGVPYmogJiYgd2lkZ2V0LmdldEFwcEluc3RhbmNlKCkuYWN0aXZlUGFnZU5hbWUgJiYgKG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ2xvY2Fsc3RvcmFnZScgfHwgbW9kZS50b0xvd2VyQ2FzZSgpID09PSAnc2Vzc2lvbnN0b3JhZ2UnKSkge1xuICAgICAgICAgICAgcGFyc2VkT2JqID0gc3RhdGVPYmpbd2lkZ2V0LmdldEFwcEluc3RhbmNlKCkuYWN0aXZlUGFnZU5hbWVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyc2VkT2JqID0gXy5jbG9uZShzdGF0ZU9iaik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlUGFyYW0pIHtcbiAgICAgICAgICAgIGlmIChwYXJzZWRPYmogJiYgIXBhcnNlZE9ialtzdGF0ZVBhcmFtXSkge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9ialtzdGF0ZVBhcmFtXSA9IHt9O1xuICAgICAgICAgICAgfSBlbHNlIGlmICghcGFyc2VkT2JqKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqID0ge1tzdGF0ZVBhcmFtXToge319O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF8uaXNPYmplY3QodmFsKSAmJiAhXy5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRPYmpbc3RhdGVQYXJhbV1ba2V5XSA9IHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldIHx8IHt9O1xuICAgICAgICAgICAgICAgIF8ubWVyZ2UocGFyc2VkT2JqW3N0YXRlUGFyYW1dW2tleV0sIHZhbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHBhcnNlZE9iaiAmJiAhcGFyc2VkT2JqW2tleV0pIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRPYmpba2V5XSA9IHt9O1xuICAgICAgICAgICAgfSBlbHNlIGlmICghcGFyc2VkT2JqKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqID0ge1trZXldOiB7fX07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXy5pc09iamVjdCh2YWwpICYmICFfLmlzQXJyYXkodmFsKSkge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9ialtrZXldID0gcGFyc2VkT2JqW2tleV0gfHwge307XG4gICAgICAgICAgICAgICAgXy5tZXJnZShwYXJzZWRPYmpba2V5XSwgdmFsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqW2tleV0gPSB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZm9yIExvY2FsIGFuZCBTZXNzaW9uIFN0b3JhZ2UsIHdyYXAgc3RhdGUgb2JqZWN0IGluc2lkZSBwYWdlIG5hbWUgc28gdGhhdCB3aWRnZXQgbmFtZSBjb25mbGljdHMgZG9uJ3QgYXJpc2UgYmV0d2VlbiBwYWdlcy5cbiAgICAgICAgaWYgKHdpZGdldCAmJiB3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZSAmJiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYWxzdG9yYWdlJyB8fCBtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdzZXNzaW9uc3RvcmFnZScpKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGVPYmopIHtcbiAgICAgICAgICAgICAgICBzdGF0ZU9ialt3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZV0gPSBwYXJzZWRPYmo7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqID0gc3RhdGVPYmo7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9iaiA9IHtbd2lkZ2V0LmdldEFwcEluc3RhbmNlKCkuYWN0aXZlUGFnZU5hbWVdOiBwYXJzZWRPYmp9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuXG4gICAgICAgIGxldCBkZWNvZGVkVVJJID0gZGVjb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgaWYgKGRlY29kZWRVUkkuaW5kZXhPZignPycpIDwgMCkge1xuICAgICAgICAgICAgZGVjb2RlZFVSSSA9IGRlY29kZWRVUkkgKyAnP3dtX3N0YXRlPSc7XG4gICAgICAgIH0gZWxzZSBpZiAoZGVjb2RlZFVSSS5pbmRleE9mKCd3bV9zdGF0ZScpIDwgMCkge1xuICAgICAgICAgICAgZGVjb2RlZFVSSSA9IGRlY29kZWRVUkkgKyAnJndtX3N0YXRlPSc7XG4gICAgICAgIH1cbiAgICAgICAgdXJsID0gZGVjb2RlZFVSSS5yZXBsYWNlKC8od21fc3RhdGU9KS4qPygmfCQpLyAsJyQxJyArIHRoaXMuanNvblRvVXJpKHBhcnNlZE9iaikgKyAnJDInKTtcblxuICAgICAgICBpZiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYWxzdG9yYWdlJykge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0od2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1xcLy9nLCAnJykgKyAnX3dtX3N0YXRlJywgSlNPTi5zdHJpbmdpZnkocGFyc2VkT2JqKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnc2Vzc2lvbnN0b3JhZ2UnKSB7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cXC8vZywgJycpICsgJ193bV9zdGF0ZScsIEpTT04uc3RyaW5naWZ5KHBhcnNlZE9iaikpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24uaHJlZikgPT09IGRlY29kZVVSSUNvbXBvbmVudCh1cmwpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuSElTVE9SWV9IQU5ETEVSID09PSAncHVzaCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7IHBhdGg6IHVybCB9LCAnJywgdXJsKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLkhJU1RPUllfSEFORExFUiA9PT0gJ3JlcGxhY2UnKSB7XG4gICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoeyBwYXRoOiB1cmwgfSwgJycsIHVybCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSBwYXNzZWQgc3RhdGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgdXJsXG4gICAgICogRS5nLlxuICAgICAqIEN1cnJlbnQgc3RhdGUgaW5mb3JtYXRpb24gaXMgbGlrZSA6XG4gICAgIHtcbiAgICAgICBcIndpZGdldF9zdGF0ZVwiOiB7XG4gICAgICAgICAgIFwiVGFibGUxXCI6IHtcbiAgICAgICAgICAgICAgIFwic2VsZWN0ZWRJdGVtXCI6IFtcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIFwicGFnZVwiOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICBcImluZGV4XCI6IFwiMVwiXG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgXCJwYWdlXCI6IFwiMlwiLFxuICAgICAgICAgICAgICAgICBcImluZGV4XCI6IFwiMVwiXG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgIFwicGFnaW5hdGlvblwiOiBcIjFcIlxuICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICB9XG4gICAgICogSW5wdXQgdmFsdWVzIHdpbGwgYmUgbGlrZTpcbiAgICAgc3ViUGFyYW0gOiAnc2VsZWN0ZWRJdGVtJ1xuXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCBjb252ZXJ0IGl0IHRvIHRoZSBmb2xsb3dpbmdcbiAgICAge1xuICAgICAgIFwid2lkZ2V0X3N0YXRlXCI6IHtcbiAgICAgICAgICAgXCJUYWJsZTFcIjoge1xuICAgICAgICAgICAgIFwicGFnaW5hdGlvblwiOiBcIjFcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICB9XG4gICAgICogQHBhcmFtIHN0YXRlUGFyYW1cbiAgICAgKiBAcGFyYW0ga2V5XG4gICAgICogQHBhcmFtIHN1YlBhcmFtXG4gICAgICogQHBhcmFtIG1vZGUgOiBvcHRpb25hbCBwYXJhbWV0ZXIgaWYgdGhlIHdpZGdldC92YXJpYWJsZSB1c2VzIGEgc3RhdGUgaGFuZGxpbmcgbW9kZSh1cmwsIGxvY2FsIHN0b3JhZ2UsIHNlc3Npb24gc3RvcmFnZSlcbiAgICAgKiBvdGhlciB0aGFuIHRoZSBwcm9qZWN0IGxldmVsIG1vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlU3RhdGVQYXJhbShzdGF0ZVBhcmFtLCBrZXksIHN1YlBhcmFtPywgbW9kZT8sIHdpZGdldD8pIHtcbiAgICAgICAgbGV0IHVybCA9ICcnLCBwYXJzZWRPYmo7XG4gICAgICAgIGNvbnN0IHN0YXRlT2JqID0gdGhpcy5nZXRTdGF0ZUluZm9ybWF0aW9uKG1vZGUpO1xuICAgICAgICBpZiAod2lkZ2V0ICYmIHN0YXRlT2JqICYmIHdpZGdldC5nZXRBcHBJbnN0YW5jZSgpLmFjdGl2ZVBhZ2VOYW1lICYmIChtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdsb2NhbHN0b3JhZ2UnIHx8IG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ3Nlc3Npb25zdG9yYWdlJykpIHtcbiAgICAgICAgICAgIHBhcnNlZE9iaiA9IHN0YXRlT2JqW3dpZGdldC5nZXRBcHBJbnN0YW5jZSgpLmFjdGl2ZVBhZ2VOYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcnNlZE9iaiA9IF8uY2xvbmUoc3RhdGVPYmopO1xuICAgICAgICB9XG4gICAgICAgIGlmICghXy5nZXQocGFyc2VkT2JqLCBbc3RhdGVQYXJhbV0pICYmICFfLmdldChwYXJzZWRPYmosIGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjQ2OThdOiB3aGVuIHRhYmxlIGlzIGluc2lkZSBhIHByZWZhYiwgc3RhdGUgcGVyc2lzdGVuY2Uga2V5IGlzIGxpa2UgXCJUZXN0TGFiZWxfMTEuVGVzdExhYmVsXzEuc3RhdGljVmFyaWFibGUxVGFibGUxXCJcbiAgICAgICAgLy8gXy5nZXQocGFyc2VkT2JqLCBzdGF0ZVBhcmFtICsgJy4nICsga2V5KSBpcyB1bmRlZmluZWQgc28gdXNpbmcgKHBhcnNlZE9iaiAmJiBwYXJzZWRPYmpbc3RhdGVQYXJhbV0gJiYgcGFyc2VkT2JqW3N0YXRlUGFyYW1dW2tleV0pIGNvbmRpdGlvbi5cbiAgICAgICAgaWYgKF8uZ2V0KHBhcnNlZE9iaiwgc3RhdGVQYXJhbSArICcuJyArIGtleSkgfHwgKHBhcnNlZE9iaiAmJiBwYXJzZWRPYmpbc3RhdGVQYXJhbV0gJiYgcGFyc2VkT2JqW3N0YXRlUGFyYW1dW2tleV0pKSB7XG4gICAgICAgICAgICBpZiAoc3ViUGFyYW0pIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcGFyc2VkT2JqW3N0YXRlUGFyYW1dW2tleV1bc3ViUGFyYW1dO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcGFyc2VkT2JqW3N0YXRlUGFyYW1dW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXy5pc0VtcHR5KHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWRPYmpbc3RhdGVQYXJhbV1ba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChfLmlzRW1wdHkocGFyc2VkT2JqW3N0YXRlUGFyYW1dKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWRPYmpbc3RhdGVQYXJhbV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIXN0YXRlUGFyYW0gJiYgXy5nZXQocGFyc2VkT2JqLCBrZXkpKSB7XG4gICAgICAgICAgICBkZWxldGUgcGFyc2VkT2JqW2tleV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBmb3IgTG9jYWwgYW5kIFNlc3Npb24gU3RvcmFnZSwgd3JhcCBzdGF0ZSBvYmplY3QgaW5zaWRlIHBhZ2UgbmFtZSBzbyB0aGF0IHdpZGdldCBuYW1lIGNvbmZsaWN0cyBkb24ndCBhcmlzZSBiZXR3ZWVuIHBhZ2VzLlxuICAgICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC5nZXRBcHBJbnN0YW5jZSgpLmFjdGl2ZVBhZ2VOYW1lICYmIChtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdsb2NhbHN0b3JhZ2UnIHx8IG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ3Nlc3Npb25zdG9yYWdlJykpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZU9iaikge1xuICAgICAgICAgICAgICAgIHN0YXRlT2JqW3dpZGdldC5nZXRBcHBJbnN0YW5jZSgpLmFjdGl2ZVBhZ2VOYW1lXSA9IHBhcnNlZE9iajtcbiAgICAgICAgICAgICAgICBwYXJzZWRPYmogPSBzdGF0ZU9iajtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqID0ge1t3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZV06IHBhcnNlZE9ian07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgICAgICBpZiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYWxzdG9yYWdlJykge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0od2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1xcLy9nLCAnJykgKyAnX3dtX3N0YXRlJywgSlNPTi5zdHJpbmdpZnkocGFyc2VkT2JqKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnc2Vzc2lvbnN0b3JhZ2UnKSB7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cXC8vZywgJycpICsgJ193bV9zdGF0ZScsIEpTT04uc3RyaW5naWZ5KHBhcnNlZE9iaikpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVjb2RlZFVSSSA9IGRlY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgICAgIGlmIChfLmlzRW1wdHkocGFyc2VkT2JqKSkge1xuICAgICAgICAgICAgdXJsID0gZGVjb2RlZFVSSS5yZXBsYWNlKC8od21fc3RhdGU9KS4qPygmfCQpLyAsJycgKyAnJDInKTtcbiAgICAgICAgICAgIGlmIChfLmluY2x1ZGVzKFsnJicsICc/J10sIHVybC5jaGFyQXQodXJsLmxlbmd0aCAtIDEpKSkge1xuICAgICAgICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKHVybC5jaGFyQXQodXJsLmxlbmd0aCAtIDEpLCAnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cmwgPSBkZWNvZGVkVVJJLnJlcGxhY2UoLyh3bV9zdGF0ZT0pLio/KCZ8JCkvICwnJDEnICsgdGhpcy5qc29uVG9VcmkocGFyc2VkT2JqKSArICckMicpO1xuICAgICAgICB9XG5cbiAgICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHsgcGF0aDogdXJsIH0sICcnLCB1cmwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBTdGF0ZSBJbmZvcm1hdGlvbiBvYmplY3QgaW50byBhbiBlbmNvZGVkIG9iamVjdCB3aGVuIHN0YXRlIGhhbmRsaW5nIG1vZGUgaXMgVVJMXG4gICAgICogc28gdGhhdCBhIG1lYW5pbmdmdWwgVVJMIGNhbiBiZSBmb3JtZWQgYW5kIHRoZSB1c2VyIGNhbiBtYWtlIGNoYW5nZXMgZWFzaWx5IHRvIHRoZSBVUkwuXG4gICAgICogRS5nLlxuICAgICAqIHN0YXRlIGluZm9ybWF0aW9uIGlucHV0IHdpbGwgYmUgbGlrZSA6XG4gICAgIHtcbiAgICAgICAgIFwid2lkZ2V0LXN0YXRlXCI6IHtcbiAgICAgICAgICAgICBcIlRhYmxlMVwiOiB7XG4gICAgICAgICAgICAgXCJwYWdpbmF0aW9uXCI6IFwiM1wiLFxuICAgICAgICAgICAgIFwic2VhcmNoXCI6W1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZmllbGRcIjpcInN0YXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWx1ZVwiOlwiTllcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hdGNoTW9kZVwiOlwiYW55d2hlcmVpZ25vcmVjYXNlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6XCJzdHJpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICB9XG4gICAgICAgICB9XG4gICAgIH0sXG4gICAgIFwiQ3VzdG9tVmFyaWFibGVTZWxlY3RlZEl0ZW1zXCI6IFtcIjJcIiwgXCIzXCJdXG4gICAgIH1cblxuXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCBjb252ZXJ0IGl0IHRvIHRoZSBmb2xsb3dpbmdcbiAgICAgKCd3aWRnZXQtc3RhdGUnfignVGFibGUxJ34oJ3BhZ2luYXRpb24nficzJ18nc2VhcmNoJ34hKCdmaWVsZCd+J3N0YXRlJ18ndmFsdWUnfidOWSdfJ21hdGNoTW9kZSd+J2FueXdoZXJlaWdub3JlY2FzZSdfJ3R5cGUnfidzdHJpbmcnKSopKV8nQ3VzdG9tVmFyaWFibGVTZWxlY3RlZEl0ZW1zJ34hJzInXyczJyopXG4gICAgICogQHBhcmFtIGpzb25PYmpcbiAgICAgKi9cbiAgICBwcml2YXRlIGpzb25Ub1VyaShqc29uT2JqKSB7XG4gICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShqc29uT2JqKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bKCknfl8hKl0vZywgZnVuY3Rpb24oYykge1xuICAgICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlICgpJ35fISogd2l0aCBcXHUwMDAwIGVzY2FwZSBzZXF1ZW5jZXNcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdcXFxcdScgKyAoJzAwMDAnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFx7L2csICcoJykgICAgLy8gICAgeyAtPiAoXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcfS9nLCAnKScpICAgIC8vICAgIH0gLT4gKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cIi9nLCAgXCInXCIpICAgIC8vICAgIFwiIC0+ICdcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFw6L2csICd+JykgICAgLy8gICAgOiAtPiB+XG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLywvZywgICdfJykgICAgLy8gICAgLCAtPiBfXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcWy9nLCAnIScpICAgIC8vICAgIFsgLT4gIVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXF0vZywgJyonKSAgICAvLyAgICBdIC0+ICpcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWNvZGVzIHRoZSBlbmNvZGVkIFN0YXRlIEluZm9ybWF0aW9uIG9iamVjdCBpbnRvIGEgSlNPTiBvYmplY3Qgd2hlbiBzdGF0ZSBoYW5kbGluZyBtb2RlIGlzIFVSTFxuICAgICAqIHNvIHRoYXQgc3RhdGUgaW5mb3JtYXRpb24gY2FuIGJlIHBhcnNlZCBhbmQgYXBwbGllZCB0byB0aGUgd2lkZ2V0cy5cbiAgICAgKiBFLmcuXG4gICAgICogZW5jb2RlZCBzdGF0ZSBpbmZvcm1hdGlvbiBpbnB1dCB3aWxsIGJlIGxpa2UgOlxuICAgICAoJ3dpZGdldC1zdGF0ZSd+KCdUYWJsZTEnfigncGFnaW5hdGlvbid+JzMnXydzZWFyY2gnfiEoJ2ZpZWxkJ34nc3RhdGUnXyd2YWx1ZSd+J05ZJ18nbWF0Y2hNb2RlJ34nYW55d2hlcmVpZ25vcmVjYXNlJ18ndHlwZSd+J3N0cmluZycpKikpXydDdXN0b21WYXJpYWJsZVNlbGVjdGVkSXRlbXMnfiEnMidfJzMnKilcblxuXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCBjb252ZXJ0IGl0IHRvIHRoZSBmb2xsb3dpbmdcbiAgICAge1xuICAgICAgICAgXCJ3aWRnZXQtc3RhdGVcIjoge1xuICAgICAgICAgICAgIFwiVGFibGUxXCI6IHtcbiAgICAgICAgICAgICBcInBhZ2luYXRpb25cIjogXCIzXCIsXG4gICAgICAgICAgICAgXCJzZWFyY2hcIjpbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmaWVsZFwiOlwic3RhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInZhbHVlXCI6XCJOWVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWF0Y2hNb2RlXCI6XCJhbnl3aGVyZWlnbm9yZWNhc2VcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjpcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgIH1cbiAgICAgICAgIH1cbiAgICAgfSxcbiAgICAgXCJDdXN0b21WYXJpYWJsZVNlbGVjdGVkSXRlbXNcIjogW1wiMlwiLCBcIjNcIl1cbiAgICAgfVxuICAgICAqIEBwYXJhbSBlbmNvZGVkT2JqXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cmlUb0pzb24oZW5jb2RlZE9iaikge1xuICAgICAgICBsZXQgcmVzcG9uc2U6IGFueTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3BvbnNlID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgICAgICBkZWNvZGVVUklDb21wb25lbnQoZW5jb2RlZE9iailcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKC9nLCAneycpICAgIC8vICAgICggLT4ge1xuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFwpL2csICd9JykgICAgLy8gICAgKSAtPiB9XG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8nL2csICAnXCInKSAgICAvLyAgICAnIC0+IFwiXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9+L2csICAnOicpICAgIC8vICAgIH4gLT4gOlxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXy9nLCAgJywnKSAgICAvLyAgICBfIC0+ICxcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcIS9nLCAnWycpICAgIC8vICAgICEgLT4gW1xuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFwqL2csICddJykgICAgLy8gICAgKiAtPiBdXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbn1cblxuIl19
|
|
495
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtcGVyc2lzdGVuY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3NlcnZpY2VzL3N0YXRlLXBlcnNpc3RlbmNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUVZLG9CQUFlLEdBQUcsU0FBUyxDQUFDO1FBQzVCLDBCQUFxQixHQUFHLEVBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFDLENBQUM7UUFDekUscUJBQWdCLEdBQUcsSUFBSSxDQUFDO0tBdWVuQztJQXJlRzs7O09BR0c7SUFDSSxpQkFBaUIsQ0FBQyxHQUFHO1FBQ3hCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDM0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxhQUFhLENBQUMsVUFBZSxFQUFFLFVBQWtCLEVBQUUsYUFBc0I7UUFDNUUsSUFBSSxHQUFHLEdBQUcsYUFBYSxJQUFJLFVBQVUsQ0FBQztRQUN0QyxJQUFJLFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2pFLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFD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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMkJHO0lBQ0ssU0FBUyxDQUFDLFVBQVU7UUFDeEIsSUFBSSxRQUFhLENBQUM7UUFDbEIsSUFBSTtZQUNBLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNqQixrQkFBa0IsQ0FBQyxVQUFVLENBQUM7aUJBQ3pCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUksWUFBWTtpQkFDbkMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBSSxZQUFZO2lCQUNuQyxPQUFPLENBQUMsSUFBSSxFQUFHLEdBQUcsQ0FBQyxDQUFJLFlBQVk7aUJBQ25DLE9BQU8sQ0FBQyxJQUFJLEVBQUcsR0FBRyxDQUFDLENBQUksWUFBWTtpQkFDbkMsT0FBTyxDQUFDLElBQUksRUFBRyxHQUFHLENBQUMsQ0FBSSxZQUFZO2lCQUNuQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFJLFlBQVk7aUJBQ25DLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUksWUFBWTthQUMzQyxDQUFDO1NBQ0w7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkI7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDOzs7O1lBMWVKLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmRlY2xhcmUgY29uc3QgXztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTdGF0ZVBlcnNpc3RlbmNlIHtcbiAgICBwcml2YXRlIEhJU1RPUllfSEFORExFUiA9ICdyZXBsYWNlJztcbiAgICBwcml2YXRlIEhJU1RPUllfSEFORExFUl9UWVBFUyA9IHsncHVzaCc6ICdwdXNoU3RhdGUnLCAncmVwbGFjZSc6ICdyZXBsYWNlU3RhdGUnfTtcbiAgICBwcml2YXRlIFdJREdFVF9TVEFURV9LRVkgPSAnd3MnO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcGFzc2VkIHZhbHVlIGFzIHRoZSBIaXN0b3J5IGhhbmRsZXIgaWYgaXQgZXhpc3RzIGluIHRoZSBIaXN0b3J5X0hhbmRsZXJfVHlwZXMgb2JqZWN0XG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRIaXN0b3J5SGFuZGxlcih2YWwpIHtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuSElTVE9SWV9IQU5ETEVSX1RZUEVTKS5pbmRleE9mKHZhbCkgPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5ISVNUT1JZX0hBTkRMRVIgPSB2YWw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgdW5pcXVlIGtleSBmb3Igc2V0dGluZyBzdGF0ZSBwYXJhbSBieSB1c2luZyB0aGUgdmlld1BhcmVudCBwcm9wZXJ0eSBvZiBhIHdpZGdldFxuICAgICAqIHNvIHRoYXQgbmFtZSBjb25mbGljdHMgYXJlIGF2b2lkZWQgd2hlbiB0aGUgc2FtZSB3aWRnZXQgbmFtZSBpc1xuICAgICAqIHByZXNlbnQgaW5zaWRlIGEgUGFnZSwgYSBQYXJ0aWFsIHdpdGhpbiBhIFBhZ2Ugb3IgYSBQcmVmYWIgd2l0aGluIGEgUGFnZSBhbmQgc28gb24uXG4gICAgICogRS5nLjpcbiAgICAgKiBpZiBhIHBhZ2UgaGFzIGEgdGFicyB3aWRnZXQgd2l0aCB0aGUgbmFtZSB0YWJzMSwgYSBwYXJ0aWFsIFBhcnRpYWwxKGluc2lkZSBjb250YWluZXIxKSBpbmNsdXNpb24gd2l0aGluIHdoaWNoXG4gICAgICogdGhlcmUgaXMgYSB0YWJzIHdpdGggbmFtZSB0YWJzMSBhbmQgYSBwcmVmYWIgTXlQcmVmYWIgaW5jbHVzaW9uIHdpdGggYSB0YWJzIHdpZGdldCB3aXRoIHRoZSBuYW1lIHRhYnMxLFxuICAgICAqIGdldE5lc3RlZFBhdGggd2lsbCByZXR1cm4gdGFiczEsIGNvbnRhaW5lcjEuUGFydGlhbDEudGFiczEgYW5kIE15UHJlZmFiMS5NeVByZWZhYi50YWJzMSByZXNwZWN0aXZlbHkuXG4gICAgICogQHBhcmFtIHZpZXdQYXJlbnRcbiAgICAgKiBAcGFyYW0gd2lkZ2V0TmFtZVxuICAgICAqIEBwYXJhbSBjdXJyZW50T3V0cHV0XG4gICAgICovXG4gICAgcHVibGljIGdldE5lc3RlZFBhdGgodmlld1BhcmVudDogYW55LCB3aWRnZXROYW1lOiBzdHJpbmcsIGN1cnJlbnRPdXRwdXQ/OiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IG91dCA9IGN1cnJlbnRPdXRwdXQgfHwgd2lkZ2V0TmFtZTtcbiAgICAgICAgaWYgKHZpZXdQYXJlbnQgJiYgKHZpZXdQYXJlbnQucHJlZmFiTmFtZSB8fCB2aWV3UGFyZW50LnBhcnRpYWxOYW1lKSkge1xuICAgICAgICAgICAgb3V0ID0gb3V0Lmxlbmd0aCA+IDAgPyBvdXQgKyAnLicgKyAodmlld1BhcmVudC5wcmVmYWJOYW1lIHx8IHZpZXdQYXJlbnQucGFydGlhbE5hbWUpIDogKHZpZXdQYXJlbnQucHJlZmFiTmFtZSB8fCB2aWV3UGFyZW50LnBhcnRpYWxOYW1lKTtcbiAgICAgICAgICAgIC8vIHNhbWUgcGFydGlhbC9wcmVmYWIgY2FuIGJlIGRyb3BwZWQgbXVsdGlwbGUgdGltZXMgaW4gYSBwYWdlLiBBcHBlbmRpbmcgY29udGFpbmVyJ3MgbmFtZSBmb3IgdW5pcXVlbmVzcy5cbiAgICAgICAgICAgIG91dCA9IG91dCArICcuJyArIHZpZXdQYXJlbnQuY29udGFpbmVyV2lkZ2V0Lm5hbWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROZXN0ZWRQYXRoKHZpZXdQYXJlbnQuY29udGFpbmVyV2lkZ2V0LnZpZXdQYXJlbnQsIHdpZGdldE5hbWUsIG91dCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dC5zcGxpdCgnLicpLnJldmVyc2UoKS5qb2luKCcuJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVjb2RlcyBhbmQgcGFyc2VzIHRoZSBzdGF0ZSBpbmZvcm1hdGlvbiBhbmQgcmV0dXJucyB0aGUgcGFyc2VkIHN0YXRlIG9iamVjdFxuICAgICAqIEBwYXJhbSBtb2RlIDogb3B0aW9uYWwgcGFyYW1ldGVyIGlmIHRoZSB3aWRnZXQvdmFyaWFibGUgdXNlcyBhIHN0YXRlIGhhbmRsaW5nIG1vZGUodXJsLCBsb2NhbCBzdG9yYWdlLCBzZXNzaW9uIHN0b3JhZ2UpXG4gICAgICogb3RoZXIgdGhhbiB0aGUgcHJvamVjdCBsZXZlbCBtb2RlXG4gICAgICovXG4gICAgcHVibGljIGdldFN0YXRlSW5mb3JtYXRpb24obW9kZSkge1xuICAgICAgICBsZXQgcGFyc2VkU3RhdGVJbmZvLCBzdGF0ZUluZm87XG4gICAgICAgIGlmIChtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICd1cmwnKSB7XG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkVVJJID0gZGVjb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgICAgIHN0YXRlSW5mbyA9IGRlY29kZWRVUkkubWF0Y2goLyh3bV9zdGF0ZT0pLio/KCZ8JCkvKTtcbiAgICAgICAgICAgIGlmIChzdGF0ZUluZm8pIHtcbiAgICAgICAgICAgICAgICBzdGF0ZUluZm8gPSBzdGF0ZUluZm9bMF0ucmVwbGFjZSgnd21fc3RhdGU9JywgJycpO1xuICAgICAgICAgICAgICAgIHBhcnNlZFN0YXRlSW5mbyA9IHRoaXMudXJpVG9Kc29uKHN0YXRlSW5mbyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFN0YXRlSW5mbztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdsb2NhbHN0b3JhZ2UnKSB7XG4gICAgICAgICAgICBzdGF0ZUluZm8gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXFwvL2csICcnKSArICdfd21fc3RhdGUnKTtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdzZXNzaW9uc3RvcmFnZScpIHtcbiAgICAgICAgICAgIHN0YXRlSW5mbyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0od2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1xcLy9nLCAnJykgKyAnX3dtX3N0YXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlSW5mbykge1xuICAgICAgICAgICAgcGFyc2VkU3RhdGVJbmZvID0gSlNPTi5wYXJzZShzdGF0ZUluZm8pO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFN0YXRlSW5mbztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIHBhc3NlZCB3aWRnZXQgaW5zdGFuY2UgaGFzIGFueSBzdGF0ZSBpbmZvcm1hdGlvbiBhdmFpbGFibGUgb3Igbm90XG4gICAgICogQHBhcmFtIHdpZGdldFxuICAgICAqIEBwYXJhbSBtb2RlIDogb3B0aW9uYWwgcGFyYW1ldGVyIGlmIHRoZSB3aWRnZXQgdXNlcyBhIHN0YXRlIGhhbmRsaW5nIG1vZGUodXJsLCBsb2NhbCBzdG9yYWdlLCBzZXNzaW9uIHN0b3JhZ2UpXG4gICAgICogb3RoZXIgdGhhbiB0aGUgcHJvamVjdCBsZXZlbCBtb2RlXG4gICAgICovXG4gICAgcHVibGljIGdldFdpZGdldFN0YXRlKHdpZGdldCwgbW9kZT8pIHtcbiAgICAgICAgbW9kZSA9IG1vZGUgfHwgdGhpcy5jb21wdXRlTW9kZSh3aWRnZXQuc3RhdGVoYW5kbGVyKTtcbiAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBhcnNlZFN0YXRlSW5mbyA9IHRoaXMuZ2V0U3RhdGVJbmZvcm1hdGlvbihtb2RlKTtcbiAgICAgICAgaWYgKHBhcnNlZFN0YXRlSW5mbyAmJiB3aWRnZXQgICYmIHdpZGdldC5nZXRBcHBJbnN0YW5jZSgpLmFjdGl2ZVBhZ2VOYW1lICYmIChtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdsb2NhbHN0b3JhZ2UnIHx8IG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ3Nlc3Npb25zdG9yYWdlJykpIHtcbiAgICAgICAgICAgIHBhcnNlZFN0YXRlSW5mbyA9IHBhcnNlZFN0YXRlSW5mb1t3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF8uZ2V0KHBhcnNlZFN0YXRlSW5mbywgdGhpcy5XSURHRVRfU1RBVEVfS0VZKSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGVLZXkgPSB0aGlzLmdldE5lc3RlZFBhdGgod2lkZ2V0LnZpZXdQYXJlbnQsIHdpZGdldC5nZXRXaWRnZXQoKS5uYW1lKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZWRTdGF0ZUluZm9bdGhpcy5XSURHRVRfU1RBVEVfS0VZXVtzdGF0ZUtleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wdXRlTW9kZSh3aWRnZXRTdGF0ZUhhbmRsZXIpIHtcbiAgICAgICAgaWYgKCF3aWRnZXRTdGF0ZUhhbmRsZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAndXJsJztcbiAgICAgICAgfSBlbHNlIGlmICh3aWRnZXRTdGF0ZUhhbmRsZXIgJiYgd2lkZ2V0U3RhdGVIYW5kbGVyLnRvTG93ZXJDYXNlKCkgPT09ICdub25lJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHdpZGdldFN0YXRlSGFuZGxlci50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcGFzc2VkIHZhbHVlIHRvIHRoZSBzdGF0ZSBpbmZvcm1hdGlvbiBieSB1c2luZyB0aGUgcGFzc2VkIHdpZGdldCBpbnN0YW5jZVxuICAgICAqIEBwYXJhbSB3aWRnZXRcbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKiBAcGFyYW0gbW9kZSA6IG9wdGlvbmFsIHBhcmFtZXRlciBpZiB0aGUgd2lkZ2V0IHVzZXMgYSBzdGF0ZSBoYW5kbGluZyBtb2RlKHVybCwgbG9jYWwgc3RvcmFnZSwgc2Vzc2lvbiBzdG9yYWdlKVxuICAgICAqIG90aGVyIHRoYW4gdGhlIHByb2plY3QgbGV2ZWwgbW9kZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRXaWRnZXRTdGF0ZSh3aWRnZXQsIHZhbHVlLCBtb2RlPykge1xuICAgICAgICBjb25zdCBzdGF0ZUtleSA9IHRoaXMuZ2V0TmVzdGVkUGF0aCh3aWRnZXQudmlld1BhcmVudCwgd2lkZ2V0LmdldFdpZGdldCgpLm5hbWUpO1xuICAgICAgICBtb2RlID0gbW9kZSB8fCB0aGlzLmNvbXB1dGVNb2RlKHdpZGdldC5zdGF0ZWhhbmRsZXIpO1xuICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFN0YXRlUGFyYW1zKHRoaXMuV0lER0VUX1NUQVRFX0tFWSwgc3RhdGVLZXksIHZhbHVlLCBtb2RlLCB3aWRnZXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIHBhc3NlZCB3aWRnZXTigJlzIHN0YXRlIGluZm9ybWF0aW9uIGZyb20gdGhlIFN0YXRlIE9iamVjdC4gSWYgYSBrZXkgaXMgcGFzc2VkLCB0aGVuIG9ubHkgdGhhdFxuICAgICAqIHBhcnRpY3VsYXIgZW50cnkgd2lsbCBiZSByZW1vdmVkLCBub3QgYW55IG90aGVyIGVudHJpZXMgZm9yIHRoYXQgd2lkZ2V0LlxuICAgICAqIEBwYXJhbSB3aWRnZXRcbiAgICAgKiBAcGFyYW0ga2V5XG4gICAgICogQHBhcmFtIG1vZGUgOiBvcHRpb25hbCBwYXJhbWV0ZXIgaWYgdGhlIHdpZGdldCB1c2VzIGEgc3RhdGUgaGFuZGxpbmcgbW9kZSh1cmwsIGxvY2FsIHN0b3JhZ2UsIHNlc3Npb24gc3RvcmFnZSlcbiAgICAgKiBvdGhlciB0aGFuIHRoZSBwcm9qZWN0IGxldmVsIG1vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlV2lkZ2V0U3RhdGUod2lkZ2V0LCBrZXk/LCBtb2RlPykge1xuICAgICAgICBtb2RlID0gbW9kZSB8fCB0aGlzLmNvbXB1dGVNb2RlKHdpZGdldC5zdGF0ZWhhbmRsZXIpO1xuICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGF0ZUtleSA9IHRoaXMuZ2V0TmVzdGVkUGF0aCh3aWRnZXQudmlld1BhcmVudCwgd2lkZ2V0LmdldFdpZGdldCgpLm5hbWUpO1xuICAgICAgICB0aGlzLnJlbW92ZVN0YXRlUGFyYW0odGhpcy5XSURHRVRfU1RBVEVfS0VZLCBzdGF0ZUtleSwga2V5LCBtb2RlLCB3aWRnZXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHBhc3NlZCB2YWx1ZSB0byB0aGUgc3RhdGUgaW5mb3JtYXRpb24gYnkgdXNpbmcgdGhlIHBhc3NlZCB2YXJpYWJsZSBuYW1lIGFzIGtleVxuICAgICAqIEBwYXJhbSB2YXJpYWJsZU5hbWVcbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKiBAcGFyYW0gbW9kZSA6IG9wdGlvbmFsIHBhcmFtZXRlciBpZiB0aGUgdmFyaWFibGUgdXNlcyBhIHN0YXRlIGhhbmRsaW5nIG1vZGUodXJsLCBsb2NhbCBzdG9yYWdlLCBzZXNzaW9uIHN0b3JhZ2UpXG4gICAgICogb3RoZXIgdGhhbiB0aGUgcHJvamVjdCBsZXZlbCBtb2RlXG4gICAgICovXG4gICAgcHVibGljIHNldFN0YXRlVmFyaWFibGUodmFyaWFibGVOYW1lLCB2YWx1ZSwgbW9kZT8pIHtcbiAgICAgICAgbW9kZSA9IG1vZGUgfHwgdGhpcy5jb21wdXRlTW9kZShtb2RlKTtcbiAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTdGF0ZVBhcmFtcygnJywgdmFyaWFibGVOYW1lLCB2YWx1ZSwgbW9kZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBwYXNzZWQgdmFyaWFibGUgbmFtZSBoYXMgYW55IHN0YXRlIGluZm9ybWF0aW9uIGF2YWlsYWJsZSBpbiB0aGUgdXJsIG9yIG5vdFxuICAgICAqIEBwYXJhbSB2YXJpYWJsZU5hbWVcbiAgICAgKiBAcGFyYW0gbW9kZSA6IG9wdGlvbmFsIHBhcmFtZXRlciBpZiB0aGUgdmFyaWFibGUgdXNlcyBhIHN0YXRlIGhhbmRsaW5nIG1vZGUodXJsLCBsb2NhbCBzdG9yYWdlLCBzZXNzaW9uIHN0b3JhZ2UpXG4gICAgICogb3RoZXIgdGhhbiB0aGUgcHJvamVjdCBsZXZlbCBtb2RlXG4gICAgICovXG4gICAgcHVibGljIGdldFN0YXRlVmFyaWFibGUodmFyaWFibGVOYW1lOiBzdHJpbmcsIG1vZGU/KSB7XG4gICAgICAgIG1vZGUgPSBtb2RlIHx8IHRoaXMuY29tcHV0ZU1vZGUobW9kZSk7XG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnNlZFN0YXRlSW5mbyA9IHRoaXMuZ2V0U3RhdGVJbmZvcm1hdGlvbihtb2RlKTtcbiAgICAgICAgaWYgKHBhcnNlZFN0YXRlSW5mbykge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFN0YXRlSW5mb1t2YXJpYWJsZU5hbWVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSBwYXNzZWQgdmFyaWFibGXigJlzIHN0YXRlIGluZm9ybWF0aW9uIGZyb20gdGhlIFVSTC5cbiAgICAgKiBAcGFyYW0gdmFyaWFibGVOYW1lXG4gICAgICogQHBhcmFtIG1vZGUgOiBvcHRpb25hbCBwYXJhbWV0ZXIgaWYgdGhlIHdpZGdldCB1c2VzIGEgc3RhdGUgaGFuZGxpbmcgbW9kZSh1cmwsIGxvY2FsIHN0b3JhZ2UsIHNlc3Npb24gc3RvcmFnZSlcbiAgICAgKiBvdGhlciB0aGFuIHRoZSBwcm9qZWN0IGxldmVsIG1vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlU3RhdGVWYXJpYWJsZSh2YXJpYWJsZU5hbWUsIG1vZGU/KSB7XG4gICAgICAgIG1vZGUgPSBtb2RlIHx8IHRoaXMuY29tcHV0ZU1vZGUobW9kZSk7XG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVtb3ZlU3RhdGVQYXJhbSgnJywgdmFyaWFibGVOYW1lLCBudWxsLCBtb2RlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBwYXNzZWQgc3RhdGUgaW5mb3JtYXRpb24gaW4gdGhlIHVybCBieSBwYXJzaW5nIHRoZSBwYXNzZWQgdmFsdWUgYW5kIGNoZWNraW5nXG4gICAgICogaXRzIHR5cGUuIElmIGl0cyBhbiBhcnJheSB0eXBlLCB0aGVuIHRoZSBwYXNzZWQgdmFsdWVzIHdpbGwgYmUgcHVzaGVkIGludG8gYW4gYXJyYXkgYW5kIHRoZW4gc2V0IGluIHRoZSBzdGF0ZVxuICAgICAqIEUuZy5cbiAgICAgKiBDdXJyZW50IHN0YXRlIGluZm9ybWF0aW9uIGlzIGxpa2UgOlxuICAgICB7XG4gICAgICAgXCJ3aWRnZXRfc3RhdGVcIjoge1xuICAgICAgICAgICBcIlRhYmxlMVwiOiB7XG4gICAgICAgICAgICAgICBcInNlbGVjdGVkSXRlbVwiOiBbXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBcInBhZ2VcIjogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgXCJpbmRleFwiOiBcIjFcIlxuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBdLFxuICAgICAgICAgICBcInBhZ2luYXRpb25cIjogXCIxXCJcbiAgICAgICAgIH1cbiAgICAgICAgIH1cbiAgICAgfVxuICAgICAqIElucHV0IHZhbHVlIHdpbGwgYmUgbGlrZTpcbiAgICAge1xuICAgICAgIFwic2VsZWN0ZWRJdGVtXCI6IFtcbiAgICAgICAgIHtcbiAgICAgICAgICAgXCJwYWdlXCI6IFwiMVwiLFxuICAgICAgICAgICBcImluZGV4XCI6IFwiMlwiXG4gICAgICAgICB9XG4gICAgICAgXVxuICAgICB9XG5cbiAgICAgKiBUaGlzIHBhcnNpbmcgbG9naWMgd2lsbCBjb252ZXJ0IGl0IHRvIHRoZSBmb2xsb3dpbmdcbiAgICAge1xuICAgICAgIFwid2lkZ2V0X3N0YXRlXCI6IHtcbiAgICAgICAgICAgXCJUYWJsZTFcIjoge1xuICAgICAgICAgICAgICAgXCJzZWxlY3RlZEl0ZW1cIjogW1xuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgXCJwYWdlXCI6IFwiMVwiLFxuICAgICAgICAgICAgICAgICAgIFwiaW5kZXhcIjogXCIxXCJcbiAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIFwicGFnZVwiOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICBcImluZGV4XCI6IFwiMlwiXG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgIFwicGFnaW5hdGlvblwiOiBcIjFcIlxuICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICB9XG4gICAgICogQmFzZWQgb24gaG93IHRoZSBISVNUT1JZX0hBTkRMRVIgaXMgY29uZmlndXJlZCwgdGhlIHVwZGF0ZWQgdXJsIHdpbGwgZWl0aGVyIHJlcGxhY2UgdGhlIGV4aXN0aW5nIHVybCBvclxuICAgICAqIHB1c2ggYSBuZXcgc3RhdGUgaW4gdGhlIHVybCBzbyB0aGF0IGJhY2sgYnV0dG9uIG1heSB0cmFjayBlYWNoIHVwZGF0ZSB0byB0aGUgc3RhdGUuXG4gICAgICogQHBhcmFtIHN0YXRlUGFyYW1cbiAgICAgKiBAcGFyYW0ga2V5XG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqIEBwYXJhbSBtb2RlIDogb3B0aW9uYWwgcGFyYW1ldGVyIGlmIHRoZSB3aWRnZXQvdmFyaWFibGUgdXNlcyBhIHN0YXRlIGhhbmRsaW5nIG1vZGUodXJsLCBsb2NhbCBzdG9yYWdlLCBzZXNzaW9uIHN0b3JhZ2UpXG4gICAgICogb3RoZXIgdGhhbiB0aGUgcHJvamVjdCBsZXZlbCBtb2RlXG4gICAgICovXG4gICAgcHVibGljIHNldFN0YXRlUGFyYW1zKHN0YXRlUGFyYW06IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbDogYW55LCBtb2RlPywgd2lkZ2V0Pykge1xuICAgICAgICBsZXQgdXJsID0gJycsIHBhcnNlZE9iajtcbiAgICAgICAgY29uc3Qgc3RhdGVPYmogPSB0aGlzLmdldFN0YXRlSW5mb3JtYXRpb24obW9kZSk7XG4gICAgICAgIGlmICh3aWRnZXQgJiYgc3RhdGVPYmogJiYgd2lkZ2V0LmdldEFwcEluc3RhbmNlKCkuYWN0aXZlUGFnZU5hbWUgJiYgKG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ2xvY2Fsc3RvcmFnZScgfHwgbW9kZS50b0xvd2VyQ2FzZSgpID09PSAnc2Vzc2lvbnN0b3JhZ2UnKSkge1xuICAgICAgICAgICAgcGFyc2VkT2JqID0gc3RhdGVPYmpbd2lkZ2V0LmdldEFwcEluc3RhbmNlKCkuYWN0aXZlUGFnZU5hbWVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyc2VkT2JqID0gXy5jbG9uZShzdGF0ZU9iaik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlUGFyYW0pIHtcbiAgICAgICAgICAgIGlmIChwYXJzZWRPYmogJiYgIXBhcnNlZE9ialtzdGF0ZVBhcmFtXSkge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9ialtzdGF0ZVBhcmFtXSA9IHt9O1xuICAgICAgICAgICAgfSBlbHNlIGlmICghcGFyc2VkT2JqKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqID0ge1tzdGF0ZVBhcmFtXToge319O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF8uaXNPYmplY3QodmFsKSAmJiAhXy5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRPYmpbc3RhdGVQYXJhbV1ba2V5XSA9IHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldIHx8IHt9O1xuICAgICAgICAgICAgICAgIF8ubWVyZ2UocGFyc2VkT2JqW3N0YXRlUGFyYW1dW2tleV0sIHZhbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHBhcnNlZE9iaiAmJiAhcGFyc2VkT2JqW2tleV0pIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRPYmpba2V5XSA9IHt9O1xuICAgICAgICAgICAgfSBlbHNlIGlmICghcGFyc2VkT2JqKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqID0ge1trZXldOiB7fX07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXy5pc09iamVjdCh2YWwpICYmICFfLmlzQXJyYXkodmFsKSkge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9ialtrZXldID0gcGFyc2VkT2JqW2tleV0gfHwge307XG4gICAgICAgICAgICAgICAgXy5tZXJnZShwYXJzZWRPYmpba2V5XSwgdmFsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqW2tleV0gPSB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZm9yIExvY2FsIGFuZCBTZXNzaW9uIFN0b3JhZ2UsIHdyYXAgc3RhdGUgb2JqZWN0IGluc2lkZSBwYWdlIG5hbWUgc28gdGhhdCB3aWRnZXQgbmFtZSBjb25mbGljdHMgZG9uJ3QgYXJpc2UgYmV0d2VlbiBwYWdlcy5cbiAgICAgICAgaWYgKHdpZGdldCAmJiB3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZSAmJiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYWxzdG9yYWdlJyB8fCBtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdzZXNzaW9uc3RvcmFnZScpKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGVPYmopIHtcbiAgICAgICAgICAgICAgICBzdGF0ZU9ialt3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZV0gPSBwYXJzZWRPYmo7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqID0gc3RhdGVPYmo7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9iaiA9IHtbd2lkZ2V0LmdldEFwcEluc3RhbmNlKCkuYWN0aXZlUGFnZU5hbWVdOiBwYXJzZWRPYmp9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuXG4gICAgICAgIGxldCBkZWNvZGVkVVJJID0gZGVjb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgaWYgKGRlY29kZWRVUkkuaW5kZXhPZignPycpIDwgMCkge1xuICAgICAgICAgICAgZGVjb2RlZFVSSSA9IGRlY29kZWRVUkkgKyAnP3dtX3N0YXRlPSc7XG4gICAgICAgIH0gZWxzZSBpZiAoZGVjb2RlZFVSSS5pbmRleE9mKCd3bV9zdGF0ZScpIDwgMCkge1xuICAgICAgICAgICAgZGVjb2RlZFVSSSA9IGRlY29kZWRVUkkgKyAnJndtX3N0YXRlPSc7XG4gICAgICAgIH1cbiAgICAgICAgdXJsID0gZGVjb2RlZFVSSS5yZXBsYWNlKC8od21fc3RhdGU9KS4qPygmfCQpLyAsJyQxJyArIHRoaXMuanNvblRvVXJpKHBhcnNlZE9iaikgKyAnJDInKTtcblxuICAgICAgICBpZiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYWxzdG9yYWdlJykge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0od2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1xcLy9nLCAnJykgKyAnX3dtX3N0YXRlJywgSlNPTi5zdHJpbmdpZnkocGFyc2VkT2JqKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnc2Vzc2lvbnN0b3JhZ2UnKSB7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cXC8vZywgJycpICsgJ193bV9zdGF0ZScsIEpTT04uc3RyaW5naWZ5KHBhcnNlZE9iaikpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24uaHJlZikgPT09IGRlY29kZVVSSUNvbXBvbmVudCh1cmwpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuSElTVE9SWV9IQU5ETEVSID09PSAncHVzaCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7IHBhdGg6IHVybCB9LCAnJywgdXJsKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLkhJU1RPUllfSEFORExFUiA9PT0gJ3JlcGxhY2UnKSB7XG4gICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoeyBwYXRoOiB1cmwgfSwgJycsIHVybCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSBwYXNzZWQgc3RhdGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgdXJsXG4gICAgICogRS5nLlxuICAgICAqIEN1cnJlbnQgc3RhdGUgaW5mb3JtYXRpb24gaXMgbGlrZSA6XG4gICAgIHtcbiAgICAgICBcIndpZGdldF9zdGF0ZVwiOiB7XG4gICAgICAgICAgIFwiVGFibGUxXCI6IHtcbiAgICAgICAgICAgICAgIFwic2VsZWN0ZWRJdGVtXCI6IFtcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIFwicGFnZVwiOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICBcImluZGV4XCI6IFwiMVwiXG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgXCJwYWdlXCI6IFwiMlwiLFxuICAgICAgICAgICAgICAgICBcImluZGV4XCI6IFwiMVwiXG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgIFwicGFnaW5hdGlvblwiOiBcIjFcIlxuICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICB9XG4gICAgICogSW5wdXQgdmFsdWVzIHdpbGwgYmUgbGlrZTpcbiAgICAgc3ViUGFyYW0gOiAnc2VsZWN0ZWRJdGVtJ1xuXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCBjb252ZXJ0IGl0IHRvIHRoZSBmb2xsb3dpbmdcbiAgICAge1xuICAgICAgIFwid2lkZ2V0X3N0YXRlXCI6IHtcbiAgICAgICAgICAgXCJUYWJsZTFcIjoge1xuICAgICAgICAgICAgIFwicGFnaW5hdGlvblwiOiBcIjFcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICB9XG4gICAgICogQHBhcmFtIHN0YXRlUGFyYW1cbiAgICAgKiBAcGFyYW0ga2V5XG4gICAgICogQHBhcmFtIHN1YlBhcmFtXG4gICAgICogQHBhcmFtIG1vZGUgOiBvcHRpb25hbCBwYXJhbWV0ZXIgaWYgdGhlIHdpZGdldC92YXJpYWJsZSB1c2VzIGEgc3RhdGUgaGFuZGxpbmcgbW9kZSh1cmwsIGxvY2FsIHN0b3JhZ2UsIHNlc3Npb24gc3RvcmFnZSlcbiAgICAgKiBvdGhlciB0aGFuIHRoZSBwcm9qZWN0IGxldmVsIG1vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlU3RhdGVQYXJhbShzdGF0ZVBhcmFtLCBrZXksIHN1YlBhcmFtPywgbW9kZT8sIHdpZGdldD8pIHtcbiAgICAgICAgbGV0IHVybCA9ICcnLCBwYXJzZWRPYmo7XG4gICAgICAgIGNvbnN0IHN0YXRlT2JqID0gdGhpcy5nZXRTdGF0ZUluZm9ybWF0aW9uKG1vZGUpO1xuICAgICAgICBpZiAod2lkZ2V0ICYmIHN0YXRlT2JqICYmIHdpZGdldC5nZXRBcHBJbnN0YW5jZSgpLmFjdGl2ZVBhZ2VOYW1lICYmIChtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdsb2NhbHN0b3JhZ2UnIHx8IG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ3Nlc3Npb25zdG9yYWdlJykpIHtcbiAgICAgICAgICAgIHBhcnNlZE9iaiA9IHN0YXRlT2JqW3dpZGdldC5nZXRBcHBJbnN0YW5jZSgpLmFjdGl2ZVBhZ2VOYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcnNlZE9iaiA9IF8uY2xvbmUoc3RhdGVPYmopO1xuICAgICAgICB9XG4gICAgICAgIGlmICghXy5nZXQocGFyc2VkT2JqLCBbc3RhdGVQYXJhbV0pICYmICFfLmdldChwYXJzZWRPYmosIGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5nZXQocGFyc2VkT2JqLCBzdGF0ZVBhcmFtICsgJy4nICsga2V5KSkge1xuICAgICAgICAgICAgaWYgKHN1YlBhcmFtKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldW3N1YlBhcmFtXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlZE9ialtzdGF0ZVBhcmFtXVtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF8uaXNFbXB0eShwYXJzZWRPYmpbc3RhdGVQYXJhbV1ba2V5XSkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcGFyc2VkT2JqW3N0YXRlUGFyYW1dW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXy5pc0VtcHR5KHBhcnNlZE9ialtzdGF0ZVBhcmFtXSkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcGFyc2VkT2JqW3N0YXRlUGFyYW1dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZVBhcmFtICYmIF8uZ2V0KHBhcnNlZE9iaiwga2V5KSkge1xuICAgICAgICAgICAgZGVsZXRlIHBhcnNlZE9ialtrZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZm9yIExvY2FsIGFuZCBTZXNzaW9uIFN0b3JhZ2UsIHdyYXAgc3RhdGUgb2JqZWN0IGluc2lkZSBwYWdlIG5hbWUgc28gdGhhdCB3aWRnZXQgbmFtZSBjb25mbGljdHMgZG9uJ3QgYXJpc2UgYmV0d2VlbiBwYWdlcy5cbiAgICAgICAgaWYgKHdpZGdldCAmJiB3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZSAmJiAobW9kZS50b0xvd2VyQ2FzZSgpID09PSAnbG9jYWxzdG9yYWdlJyB8fCBtb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdzZXNzaW9uc3RvcmFnZScpKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGVPYmopIHtcbiAgICAgICAgICAgICAgICBzdGF0ZU9ialt3aWRnZXQuZ2V0QXBwSW5zdGFuY2UoKS5hY3RpdmVQYWdlTmFtZV0gPSBwYXJzZWRPYmo7XG4gICAgICAgICAgICAgICAgcGFyc2VkT2JqID0gc3RhdGVPYmo7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnNlZE9iaiA9IHtbd2lkZ2V0LmdldEFwcEluc3RhbmNlKCkuYWN0aXZlUGFnZU5hbWVdOiBwYXJzZWRPYmp9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ2xvY2Fsc3RvcmFnZScpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cXC8vZywgJycpICsgJ193bV9zdGF0ZScsIEpTT04uc3RyaW5naWZ5KHBhcnNlZE9iaikpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZGUudG9Mb3dlckNhc2UoKSA9PT0gJ3Nlc3Npb25zdG9yYWdlJykge1xuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXFwvL2csICcnKSArICdfd21fc3RhdGUnLCBKU09OLnN0cmluZ2lmeShwYXJzZWRPYmopKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY29kZWRVUkkgPSBkZWNvZGVVUklDb21wb25lbnQod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgICAgICBpZiAoXy5pc0VtcHR5KHBhcnNlZE9iaikpIHtcbiAgICAgICAgICAgIHVybCA9IGRlY29kZWRVUkkucmVwbGFjZSgvKHdtX3N0YXRlPSkuKj8oJnwkKS8gLCcnICsgJyQyJyk7XG4gICAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhbJyYnLCAnPyddLCB1cmwuY2hhckF0KHVybC5sZW5ndGggLSAxKSkpIHtcbiAgICAgICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSh1cmwuY2hhckF0KHVybC5sZW5ndGggLSAxKSwgJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXJsID0gZGVjb2RlZFVSSS5yZXBsYWNlKC8od21fc3RhdGU9KS4qPygmfCQpLyAsJyQxJyArIHRoaXMuanNvblRvVXJpKHBhcnNlZE9iaikgKyAnJDInKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7IHBhdGg6IHVybCB9LCAnJywgdXJsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgU3RhdGUgSW5mb3JtYXRpb24gb2JqZWN0IGludG8gYW4gZW5jb2RlZCBvYmplY3Qgd2hlbiBzdGF0ZSBoYW5kbGluZyBtb2RlIGlzIFVSTFxuICAgICAqIHNvIHRoYXQgYSBtZWFuaW5nZnVsIFVSTCBjYW4gYmUgZm9ybWVkIGFuZCB0aGUgdXNlciBjYW4gbWFrZSBjaGFuZ2VzIGVhc2lseSB0byB0aGUgVVJMLlxuICAgICAqIEUuZy5cbiAgICAgKiBzdGF0ZSBpbmZvcm1hdGlvbiBpbnB1dCB3aWxsIGJlIGxpa2UgOlxuICAgICB7XG4gICAgICAgICBcIndpZGdldC1zdGF0ZVwiOiB7XG4gICAgICAgICAgICAgXCJUYWJsZTFcIjoge1xuICAgICAgICAgICAgIFwicGFnaW5hdGlvblwiOiBcIjNcIixcbiAgICAgICAgICAgICBcInNlYXJjaFwiOltcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZpZWxkXCI6XCJzdGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidmFsdWVcIjpcIk5ZXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtYXRjaE1vZGVcIjpcImFueXdoZXJlaWdub3JlY2FzZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOlwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICB9LFxuICAgICBcIkN1c3RvbVZhcmlhYmxlU2VsZWN0ZWRJdGVtc1wiOiBbXCIyXCIsIFwiM1wiXVxuICAgICB9XG5cblxuICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgY29udmVydCBpdCB0byB0aGUgZm9sbG93aW5nXG4gICAgICgnd2lkZ2V0LXN0YXRlJ34oJ1RhYmxlMSd+KCdwYWdpbmF0aW9uJ34nMydfJ3NlYXJjaCd+ISgnZmllbGQnfidzdGF0ZSdfJ3ZhbHVlJ34nTlknXydtYXRjaE1vZGUnfidhbnl3aGVyZWlnbm9yZWNhc2UnXyd0eXBlJ34nc3RyaW5nJykqKSlfJ0N1c3RvbVZhcmlhYmxlU2VsZWN0ZWRJdGVtcyd+IScyJ18nMycqKVxuICAgICAqIEBwYXJhbSBqc29uT2JqXG4gICAgICovXG4gICAgcHJpdmF0ZSBqc29uVG9VcmkoanNvbk9iaikge1xuICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoanNvbk9iailcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvWygpJ35fISpdL2csIGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSAoKSd+XyEqIHdpdGggXFx1MDAwMCBlc2NhcGUgc2VxdWVuY2VzXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnXFxcXHUnICsgKCcwMDAwJyArIGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcey9nLCAnKCcpICAgIC8vICAgIHsgLT4gKFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXH0vZywgJyknKSAgICAvLyAgICB9IC0+IClcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXCIvZywgIFwiJ1wiKSAgICAvLyAgICBcIiAtPiAnXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcOi9nLCAnficpICAgIC8vICAgIDogLT4gflxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8sL2csICAnXycpICAgIC8vICAgICwgLT4gX1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFsvZywgJyEnKSAgICAvLyAgICBbIC0+ICFcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxdL2csICcqJykgICAgLy8gICAgXSAtPiAqXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVjb2RlcyB0aGUgZW5jb2RlZCBTdGF0ZSBJbmZvcm1hdGlvbiBvYmplY3QgaW50byBhIEpTT04gb2JqZWN0IHdoZW4gc3RhdGUgaGFuZGxpbmcgbW9kZSBpcyBVUkxcbiAgICAgKiBzbyB0aGF0IHN0YXRlIGluZm9ybWF0aW9uIGNhbiBiZSBwYXJzZWQgYW5kIGFwcGxpZWQgdG8gdGhlIHdpZGdldHMuXG4gICAgICogRS5nLlxuICAgICAqIGVuY29kZWQgc3RhdGUgaW5mb3JtYXRpb24gaW5wdXQgd2lsbCBiZSBsaWtlIDpcbiAgICAgKCd3aWRnZXQtc3RhdGUnfignVGFibGUxJ34oJ3BhZ2luYXRpb24nficzJ18nc2VhcmNoJ34hKCdmaWVsZCd+J3N0YXRlJ18ndmFsdWUnfidOWSdfJ21hdGNoTW9kZSd+J2FueXdoZXJlaWdub3JlY2FzZSdfJ3R5cGUnfidzdHJpbmcnKSopKV8nQ3VzdG9tVmFyaWFibGVTZWxlY3RlZEl0ZW1zJ34hJzInXyczJyopXG5cblxuICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgY29udmVydCBpdCB0byB0aGUgZm9sbG93aW5nXG4gICAgIHtcbiAgICAgICAgIFwid2lkZ2V0LXN0YXRlXCI6IHtcbiAgICAgICAgICAgICBcIlRhYmxlMVwiOiB7XG4gICAgICAgICAgICAgXCJwYWdpbmF0aW9uXCI6IFwiM1wiLFxuICAgICAgICAgICAgIFwic2VhcmNoXCI6W1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZmllbGRcIjpcInN0YXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWx1ZVwiOlwiTllcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hdGNoTW9kZVwiOlwiYW55d2hlcmVpZ25vcmVjYXNlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6XCJzdHJpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICB9XG4gICAgICAgICB9XG4gICAgIH0sXG4gICAgIFwiQ3VzdG9tVmFyaWFibGVTZWxlY3RlZEl0ZW1zXCI6IFtcIjJcIiwgXCIzXCJdXG4gICAgIH1cbiAgICAgKiBAcGFyYW0gZW5jb2RlZE9ialxuICAgICAqL1xuICAgIHByaXZhdGUgdXJpVG9Kc29uKGVuY29kZWRPYmopIHtcbiAgICAgICAgbGV0IHJlc3BvbnNlOiBhbnk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXNwb25zZSA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgICAgICAgZGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZWRPYmopXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXCgvZywgJ3snKSAgICAvLyAgICAoIC0+IHtcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKS9nLCAnfScpICAgIC8vICAgICkgLT4gfVxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCAgJ1wiJykgICAgLy8gICAgJyAtPiBcIlxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvfi9nLCAgJzonKSAgICAvLyAgICB+IC0+IDpcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL18vZywgICcsJykgICAgLy8gICAgXyAtPiAsXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXCEvZywgJ1snKSAgICAvLyAgICAhIC0+IFtcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKi9nLCAnXScpICAgIC8vICAgICogLT4gXVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG59XG5cbiJdfQ==
|
|
@@ -4,7 +4,7 @@ import { isAndroid, isAndroidTablet, isIos } from '../utils/utils';
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
let MINIMUM_MOBILE_WIDTH = 480;
|
|
6
6
|
let MINIMUM_TAB_WIDTH = 768;
|
|
7
|
-
let MINIMUM_LARGE_SCREEN_WIDTH =
|
|
7
|
+
let MINIMUM_LARGE_SCREEN_WIDTH = 1280;
|
|
8
8
|
export class IViewportService {
|
|
9
9
|
}
|
|
10
10
|
export class Viewport {
|
|
@@ -73,14 +73,12 @@ export class Viewport {
|
|
|
73
73
|
else {
|
|
74
74
|
MINIMUM_MOBILE_WIDTH = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--screen-xs')) || 480;
|
|
75
75
|
MINIMUM_TAB_WIDTH = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--screen-sm')) || 768;
|
|
76
|
-
|
|
77
|
-
if (
|
|
78
|
-
this.isTabletType = isAndroid() || isIos() || isAndroidTablet();
|
|
79
|
-
this.isMobileType = false;
|
|
80
|
-
}
|
|
81
|
-
else if (this.screenWidth >= MINIMUM_TAB_WIDTH) {
|
|
76
|
+
// Tablet specification: min >= 480 max >= 768
|
|
77
|
+
if (minValue >= MINIMUM_MOBILE_WIDTH && maxValue >= MINIMUM_TAB_WIDTH) {
|
|
82
78
|
this.type = 1 /* TABLET */;
|
|
83
|
-
|
|
79
|
+
if (isAndroid() || isIos() || isAndroidTablet()) {
|
|
80
|
+
this.isTabletType = true;
|
|
81
|
+
}
|
|
84
82
|
}
|
|
85
83
|
else {
|
|
86
84
|
this.type = 0 /* MOBILE */;
|
|
@@ -98,4 +96,4 @@ Viewport.decorators = [
|
|
|
98
96
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
99
97
|
];
|
|
100
98
|
Viewport.ctorParameters = () => [];
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFVLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTNFLElBQUksb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBQy9CLElBQUksaUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQzVCLElBQUksMEJBQTBCLEdBQUcsSUFBSSxDQUFDO0FBU3RDLE1BQU0sT0FBTyxnQkFBZ0I7Q0FHNUI7QUFRRCxNQUFNLE9BQU8sUUFBUTtJQWFqQjtRQVpPLGdCQUFXLEdBQUc7WUFDakIsVUFBVSxFQUFFLEtBQUs7WUFDakIsV0FBVyxFQUFFLEtBQUs7U0FDckIsQ0FBQztRQUNLLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLG1CQUFjLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFNNUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXJCLE1BQU0sQ0FBQyxnQkFBZ0Isd0JBQXVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFeEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN0QzthQUFNO1lBQ0gsSUFBSSxDQUFDLFdBQVcs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QUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7OztZQWxHSixVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFdmVudE5vdGlmaWVyIH0gZnJvbSAnLi4vdXRpbHMvZXZlbnQtbm90aWZpZXInO1xuaW1wb3J0IHsgaXNBbmRyb2lkLCBpc0FuZHJvaWRUYWJsZXQsIGlzSW9zLCBpc0lwYWQgfSBmcm9tICcuLi91dGlscy91dGlscyc7XG5cbmxldCBNSU5JTVVNX01PQklMRV9XSURUSCA9IDQ4MDtcbmxldCBNSU5JTVVNX1RBQl9XSURUSCA9IDc2ODtcbmxldCBNSU5JTVVNX0xBUkdFX1NDUkVFTl9XSURUSCA9IDEyMDA7XG5cbmNvbnN0IGVudW0gU0NSRUVOX1RZUEUge1xuICAgIE1PQklMRSxcbiAgICBUQUJMRVQsXG4gICAgTEFSR0VfU0NSRUVOX0RFVklDRVNcbn1cbmRlY2xhcmUgY29uc3QgXztcblxuZXhwb3J0IGNsYXNzIElWaWV3cG9ydFNlcnZpY2Uge1xuICAgIG5vdGlmeTogKGV2ZW50bmFtZTogVmlld3BvcnRFdmVudCwgb3B0aW9ucz86IEFycmF5PGFueT4pID0+IHZvaWQ7XG4gICAgc3Vic2NyaWJlOiAoZXZlbnRuYW1lOiBWaWV3cG9ydEV2ZW50LCBjYWxsYmFjazogKGRhdGE6IGFueSkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gVmlld3BvcnRFdmVudCB7XG4gICAgT1JJRU5UQVRJT05fQ0hBTkdFID0gJ29yaWVudGF0aW9uY2hhbmdlJyxcbiAgICBSRVNJWkUgPSAncmVzaXplJ1xufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydCBpbXBsZW1lbnRzIElWaWV3cG9ydFNlcnZpY2UsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIG9yaWVudGF0aW9uID0ge1xuICAgICAgICBpc1BvcnRyYWl0OiBmYWxzZSxcbiAgICAgICAgaXNMYW5kc2NhcGU6IGZhbHNlXG4gICAgfTtcbiAgICBwdWJsaWMgaXNNb2JpbGVUeXBlID0gZmFsc2U7XG4gICAgcHVibGljIGlzVGFibGV0VHlwZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgdHlwZTtcbiAgICBwdWJsaWMgX2V2ZW50Tm90aWZpZXIgPSBuZXcgRXZlbnROb3RpZmllcih0cnVlKTtcbiAgICBwcml2YXRlIHNjcmVlbldpZHRoO1xuICAgIHByaXZhdGUgc2NyZWVuSGVpZ2h0O1xuICAgIHByaXZhdGUgc2VsZWN0ZWRWaWV3UG9ydDogYW55O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc2V0U2NyZWVuVHlwZSgpO1xuXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFZpZXdwb3J0RXZlbnQuUkVTSVpFLCB0aGlzLnJlc2l6ZUZuLmJpbmQodGhpcykpO1xuXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gd2luZG93Lm1hdGNoTWVkaWEoJyhvcmllbnRhdGlvbjogcG9ydHJhaXQpJyk7XG4gICAgICAgIGlmIChxdWVyeS5tYXRjaGVzKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uLmlzUG9ydHJhaXQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcmllbnRhdGlvbi5pc0xhbmRzY2FwZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgYSBtZWRpYSBxdWVyeSBjaGFuZ2UgbGlzdGVuZXJcbiAgICAgICAgLy8gYWRkRXZlbnRMaXN0ZW5lciBpcyBub3Qgc3VwcG9ydGVkIGlvcyBicm93c2VyXG4gICAgICAgIGlmIChxdWVyeS5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICBxdWVyeS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAkZXZlbnQgPT4gdGhpcy5vcmllbnRhdGlvbkNoYW5nZSgkZXZlbnQsICEkZXZlbnQubWF0Y2hlcykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlKHNlbGVjdGVkVmlld1BvcnQ6IE9iamVjdCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmlld1BvcnQgPSBzZWxlY3RlZFZpZXdQb3J0O1xuICAgICAgICB0aGlzLnNldFNjcmVlblR5cGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9yaWVudGF0aW9uQ2hhbmdlKCRldmVudCwgaXNMYW5kc2NhcGUpIHtcbiAgICAgICAgaWYgKGlzTGFuZHNjYXBlICE9PSB0aGlzLm9yaWVudGF0aW9uLmlzTGFuZHNjYXBlKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uLmlzUG9ydHJhaXQgPSAhaXNMYW5kc2NhcGU7XG4gICAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uLmlzTGFuZHNjYXBlID0gaXNMYW5kc2NhcGU7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeShWaWV3cG9ydEV2ZW50Lk9SSUVOVEFUSU9OX0NIQU5HRSwgeyAkZXZlbnQsIGRhdGE6IHtpc1BvcnRyYWl0OiAhaXNMYW5kc2NhcGUsIGlzTGFuZHNjYXBlOiBpc0xhbmRzY2FwZX0gfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2l6ZUZuKCRldmVudCkge1xuICAgICAgICB0aGlzLnNldFNjcmVlblR5cGUoKTtcbiAgICAgICAgdGhpcy5vcmllbnRhdGlvbkNoYW5nZSgkZXZlbnQsIHRoaXMuc2NyZWVuV2lkdGggPj0gdGhpcy5zY3JlZW5IZWlnaHQpO1xuICAgICAgICB0aGlzLm5vdGlmeShWaWV3cG9ydEV2ZW50LlJFU0laRSwgeyRldmVudCwgZGF0YToge3NjcmVlbldpZHRoOiB0aGlzLnNjcmVlbldpZHRoLCBzY3JlZW5IZWlnaHQ6IHRoaXMuc2NyZWVuSGVpZ2h0fX0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdWJzY3JpYmUoZXZlbnROYW1lLCBjYWxsYmFjazogKGRhdGE6IGFueSkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXZlbnROb3RpZmllci5zdWJzY3JpYmUoZXZlbnROYW1lLCBjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgcHVibGljIG5vdGlmeShldmVudE5hbWU6IHN0cmluZywgLi4uZGF0YTogQXJyYXk8YW55Pikge1xuICAgICAgICB0aGlzLl9ldmVudE5vdGlmaWVyLm5vdGlmeS5hcHBseSh0aGlzLl9ldmVudE5vdGlmaWVyLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2NyZWVuVHlwZSgpIHtcbiAgICAgICAgY29uc3QgJGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLndtLWFwcCcpO1xuICAgICAgICB0aGlzLnNjcmVlbldpZHRoID0gJGVsLmNsaWVudFdpZHRoO1xuICAgICAgICB0aGlzLnNjcmVlbkhlaWdodCA9ICRlbC5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgdmFyIG1pblZhbHVlID0gdGhpcy5zY3JlZW5XaWR0aCA8IHRoaXMuc2NyZWVuSGVpZ2h0ID8gdGhpcy5zY3JlZW5XaWR0aCA6IHRoaXMuc2NyZWVuSGVpZ2h0O1xuICAgICAgICB2YXIgbWF4VmFsdWUgPSB0aGlzLnNjcmVlbldpZHRoID4gdGhpcy5zY3JlZW5IZWlnaHQgPyB0aGlzLnNjcmVlbldpZHRoIDogdGhpcy5zY3JlZW5IZWlnaHQ7XG5cbiAgICAgICAgdGhpcy5pc1RhYmxldFR5cGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc01vYmlsZVR5cGUgPSBmYWxzZTtcblxuICAgICAgICBpZiAoXy5nZXQodGhpcy5zZWxlY3RlZFZpZXdQb3J0LCAnZGV2aWNlQ2F0ZWdvcnknKSkge1xuICAgICAgICAgICAgY29uc3QgZGV2aWNlQ2F0ZWdvcnkgPSB0aGlzLnNlbGVjdGVkVmlld1BvcnQuZGV2aWNlQ2F0ZWdvcnk7XG4gICAgICAgICAgICBpZiAoZGV2aWNlQ2F0ZWdvcnkgPT09ICdUYWInKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1RhYmxldFR5cGUgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkZXZpY2VDYXRlZ29yeSA9PT0gJ1NtYXJ0cGhvbmUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc01vYmlsZVR5cGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgIE1JTklNVU1fTU9CSUxFX1dJRFRIID0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0tc2NyZWVuLXhzJykpIHx8IDQ4MDtcbiAgICAgICAgICAgICBNSU5JTVVNX1RBQl9XSURUSCA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLXNjcmVlbi1zbScpKSB8fCA3Njg7XG4gICAgICAgICAgICAgTUlOSU1VTV9MQVJHRV9TQ1JFRU5fV0lEVEggPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zY3JlZW4tbGcnKSkgfHwgMTIwMDtcbiAgICAgICAgICAgIGlmICh0aGlzLnNjcmVlbldpZHRoID49IE1JTklNVU1fTEFSR0VfU0NSRUVOX1dJRFRIKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1RhYmxldFR5cGUgPSBpc0FuZHJvaWQoKSB8fCBpc0lvcygpIHx8IGlzQW5kcm9pZFRhYmxldCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNNb2JpbGVUeXBlID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuV2lkdGggPj0gTUlOSU1VTV9UQUJfV0lEVEgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnR5cGUgPSBTQ1JFRU5fVFlQRS5UQUJMRVQ7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1RhYmxldFR5cGUgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnR5cGUgPSBTQ1JFRU5fVFlQRS5NT0JJTEU7XG4gICAgICAgICAgICAgICAgdGhpcy5pc01vYmlsZVR5cGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuX2V2ZW50Tm90aWZpZXIuZGVzdHJveSgpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemVGbik7XG4gICAgfVxufVxuIl19
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFVLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTNFLElBQUksb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBQy9CLElBQUksaUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQzVCLElBQUksMEJBQTBCLEdBQUcsSUFBSSxDQUFDO0FBU3RDLE1BQU0sT0FBTyxnQkFBZ0I7Q0FHNUI7QUFRRCxNQUFNLE9BQU8sUUFBUTtJQWFqQjtRQVpPLGdCQUFXLEdBQUc7WUFDakIsVUFBVSxFQUFFLEtBQUs7WUFDakIsV0FBVyxFQUFFLEtBQUs7U0FDckIsQ0FBQztRQUNLLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLG1CQUFjLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFNNUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXJCLE1BQU0sQ0FBQyxnQkFBZ0Isd0JBQXVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFeEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN0QzthQUFNO1lBQ0gsSUFBSSxDQUFDLFdBQVcs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LENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQzthQUM1QjtpQkFBTSxJQUFJLGNBQWMsS0FBSyxZQUFZLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2FBQzVCO1NBQ0o7YUFBTTtZQUNGLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUM7WUFDbkgsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztZQUNqSCw4Q0FBOEM7WUFDOUMsSUFBSSxRQUFRLElBQUksb0JBQW9CLElBQUksUUFBUSxJQUFJLGlCQUFpQixFQUFFO2dCQUNuRSxJQUFJLENBQUMsSUFBSSxpQkFBcUIsQ0FBQztnQkFDL0IsSUFBSSxTQUFTLEVBQUUsSUFBSSxLQUFLLEVBQUUsSUFBSSxlQUFlLEVBQUUsRUFBRTtvQkFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7aUJBQzVCO2FBQ0o7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLElBQUksaUJBQXFCLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2FBQzVCO1NBQ0o7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7OztZQWpHSixVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFdmVudE5vdGlmaWVyIH0gZnJvbSAnLi4vdXRpbHMvZXZlbnQtbm90aWZpZXInO1xuaW1wb3J0IHsgaXNBbmRyb2lkLCBpc0FuZHJvaWRUYWJsZXQsIGlzSW9zLCBpc0lwYWQgfSBmcm9tICcuLi91dGlscy91dGlscyc7XG5cbmxldCBNSU5JTVVNX01PQklMRV9XSURUSCA9IDQ4MDtcbmxldCBNSU5JTVVNX1RBQl9XSURUSCA9IDc2ODtcbmxldCBNSU5JTVVNX0xBUkdFX1NDUkVFTl9XSURUSCA9IDEyODA7XG5cbmNvbnN0IGVudW0gU0NSRUVOX1RZUEUge1xuICAgIE1PQklMRSxcbiAgICBUQUJMRVQsXG4gICAgTEFSR0VfU0NSRUVOX0RFVklDRVNcbn1cbmRlY2xhcmUgY29uc3QgXztcblxuZXhwb3J0IGNsYXNzIElWaWV3cG9ydFNlcnZpY2Uge1xuICAgIG5vdGlmeTogKGV2ZW50bmFtZTogVmlld3BvcnRFdmVudCwgb3B0aW9ucz86IEFycmF5PGFueT4pID0+IHZvaWQ7XG4gICAgc3Vic2NyaWJlOiAoZXZlbnRuYW1lOiBWaWV3cG9ydEV2ZW50LCBjYWxsYmFjazogKGRhdGE6IGFueSkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gVmlld3BvcnRFdmVudCB7XG4gICAgT1JJRU5UQVRJT05fQ0hBTkdFID0gJ29yaWVudGF0aW9uY2hhbmdlJyxcbiAgICBSRVNJWkUgPSAncmVzaXplJ1xufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydCBpbXBsZW1lbnRzIElWaWV3cG9ydFNlcnZpY2UsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIG9yaWVudGF0aW9uID0ge1xuICAgICAgICBpc1BvcnRyYWl0OiBmYWxzZSxcbiAgICAgICAgaXNMYW5kc2NhcGU6IGZhbHNlXG4gICAgfTtcbiAgICBwdWJsaWMgaXNNb2JpbGVUeXBlID0gZmFsc2U7XG4gICAgcHVibGljIGlzVGFibGV0VHlwZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgdHlwZTtcbiAgICBwdWJsaWMgX2V2ZW50Tm90aWZpZXIgPSBuZXcgRXZlbnROb3RpZmllcih0cnVlKTtcbiAgICBwcml2YXRlIHNjcmVlbldpZHRoO1xuICAgIHByaXZhdGUgc2NyZWVuSGVpZ2h0O1xuICAgIHByaXZhdGUgc2VsZWN0ZWRWaWV3UG9ydDogYW55O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc2V0U2NyZWVuVHlwZSgpO1xuXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFZpZXdwb3J0RXZlbnQuUkVTSVpFLCB0aGlzLnJlc2l6ZUZuLmJpbmQodGhpcykpO1xuXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gd2luZG93Lm1hdGNoTWVkaWEoJyhvcmllbnRhdGlvbjogcG9ydHJhaXQpJyk7XG4gICAgICAgIGlmIChxdWVyeS5tYXRjaGVzKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uLmlzUG9ydHJhaXQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcmllbnRhdGlvbi5pc0xhbmRzY2FwZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgYSBtZWRpYSBxdWVyeSBjaGFuZ2UgbGlzdGVuZXJcbiAgICAgICAgLy8gYWRkRXZlbnRMaXN0ZW5lciBpcyBub3Qgc3VwcG9ydGVkIGlvcyBicm93c2VyXG4gICAgICAgIGlmIChxdWVyeS5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICBxdWVyeS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAkZXZlbnQgPT4gdGhpcy5vcmllbnRhdGlvbkNoYW5nZSgkZXZlbnQsICEkZXZlbnQubWF0Y2hlcykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlKHNlbGVjdGVkVmlld1BvcnQ6IE9iamVjdCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmlld1BvcnQgPSBzZWxlY3RlZFZpZXdQb3J0O1xuICAgICAgICB0aGlzLnNldFNjcmVlblR5cGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9yaWVudGF0aW9uQ2hhbmdlKCRldmVudCwgaXNMYW5kc2NhcGUpIHtcbiAgICAgICAgaWYgKGlzTGFuZHNjYXBlICE9PSB0aGlzLm9yaWVudGF0aW9uLmlzTGFuZHNjYXBlKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uLmlzUG9ydHJhaXQgPSAhaXNMYW5kc2NhcGU7XG4gICAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uLmlzTGFuZHNjYXBlID0gaXNMYW5kc2NhcGU7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeShWaWV3cG9ydEV2ZW50Lk9SSUVOVEFUSU9OX0NIQU5HRSwgeyAkZXZlbnQsIGRhdGE6IHtpc1BvcnRyYWl0OiAhaXNMYW5kc2NhcGUsIGlzTGFuZHNjYXBlOiBpc0xhbmRzY2FwZX0gfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2l6ZUZuKCRldmVudCkge1xuICAgICAgICB0aGlzLnNldFNjcmVlblR5cGUoKTtcbiAgICAgICAgdGhpcy5vcmllbnRhdGlvbkNoYW5nZSgkZXZlbnQsIHRoaXMuc2NyZWVuV2lkdGggPj0gdGhpcy5zY3JlZW5IZWlnaHQpO1xuICAgICAgICB0aGlzLm5vdGlmeShWaWV3cG9ydEV2ZW50LlJFU0laRSwgeyRldmVudCwgZGF0YToge3NjcmVlbldpZHRoOiB0aGlzLnNjcmVlbldpZHRoLCBzY3JlZW5IZWlnaHQ6IHRoaXMuc2NyZWVuSGVpZ2h0fX0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdWJzY3JpYmUoZXZlbnROYW1lLCBjYWxsYmFjazogKGRhdGE6IGFueSkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXZlbnROb3RpZmllci5zdWJzY3JpYmUoZXZlbnROYW1lLCBjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgcHVibGljIG5vdGlmeShldmVudE5hbWU6IHN0cmluZywgLi4uZGF0YTogQXJyYXk8YW55Pikge1xuICAgICAgICB0aGlzLl9ldmVudE5vdGlmaWVyLm5vdGlmeS5hcHBseSh0aGlzLl9ldmVudE5vdGlmaWVyLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2NyZWVuVHlwZSgpIHtcbiAgICAgICAgY29uc3QgJGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLndtLWFwcCcpO1xuICAgICAgICB0aGlzLnNjcmVlbldpZHRoID0gJGVsLmNsaWVudFdpZHRoO1xuICAgICAgICB0aGlzLnNjcmVlbkhlaWdodCA9ICRlbC5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgdmFyIG1pblZhbHVlID0gdGhpcy5zY3JlZW5XaWR0aCA8IHRoaXMuc2NyZWVuSGVpZ2h0ID8gdGhpcy5zY3JlZW5XaWR0aCA6IHRoaXMuc2NyZWVuSGVpZ2h0O1xuICAgICAgICB2YXIgbWF4VmFsdWUgPSB0aGlzLnNjcmVlbldpZHRoID4gdGhpcy5zY3JlZW5IZWlnaHQgPyB0aGlzLnNjcmVlbldpZHRoIDogdGhpcy5zY3JlZW5IZWlnaHQ7XG5cbiAgICAgICAgdGhpcy5pc1RhYmxldFR5cGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc01vYmlsZVR5cGUgPSBmYWxzZTtcblxuICAgICAgICBpZiAoXy5nZXQodGhpcy5zZWxlY3RlZFZpZXdQb3J0LCAnZGV2aWNlQ2F0ZWdvcnknKSkge1xuICAgICAgICAgICAgY29uc3QgZGV2aWNlQ2F0ZWdvcnkgPSB0aGlzLnNlbGVjdGVkVmlld1BvcnQuZGV2aWNlQ2F0ZWdvcnk7XG4gICAgICAgICAgICBpZiAoZGV2aWNlQ2F0ZWdvcnkgPT09ICdUYWInKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1RhYmxldFR5cGUgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkZXZpY2VDYXRlZ29yeSA9PT0gJ1NtYXJ0cGhvbmUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc01vYmlsZVR5cGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgIE1JTklNVU1fTU9CSUxFX1dJRFRIID0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0tc2NyZWVuLXhzJykpIHx8IDQ4MDtcbiAgICAgICAgICAgICBNSU5JTVVNX1RBQl9XSURUSCA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLXNjcmVlbi1zbScpKSB8fCA3Njg7XG4gICAgICAgICAgICAvLyBUYWJsZXQgc3BlY2lmaWNhdGlvbjogbWluID49IDQ4MCBtYXggPj0gNzY4XG4gICAgICAgICAgICBpZiAobWluVmFsdWUgPj0gTUlOSU1VTV9NT0JJTEVfV0lEVEggJiYgbWF4VmFsdWUgPj0gTUlOSU1VTV9UQUJfV0lEVEgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnR5cGUgPSBTQ1JFRU5fVFlQRS5UQUJMRVQ7XG4gICAgICAgICAgICAgICAgaWYgKGlzQW5kcm9pZCgpIHx8IGlzSW9zKCkgfHwgaXNBbmRyb2lkVGFibGV0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1RhYmxldFR5cGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy50eXBlID0gU0NSRUVOX1RZUEUuTU9CSUxFO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNNb2JpbGVUeXBlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9ldmVudE5vdGlmaWVyLmRlc3Ryb3koKTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplRm4pO1xuICAgIH1cbn1cbiJdfQ==
|