@ethlete/core 3.13.0 → 3.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/structured-data/structured-data.component.mjs +4 -4
- package/esm2022/lib/directives/animatable/animatable.directive.mjs +4 -4
- package/esm2022/lib/directives/animated-if/animated-if.directive.mjs +4 -4
- package/esm2022/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +4 -4
- package/esm2022/lib/directives/animated-overlay/animated-overlay.directive.mjs +4 -4
- package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +4 -4
- package/esm2022/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +4 -4
- package/esm2022/lib/directives/debug/debug.directive.mjs +4 -4
- package/esm2022/lib/directives/delayable/delayable.directive.mjs +4 -4
- package/esm2022/lib/directives/is-active-element/is-active-element.directive.mjs +4 -4
- package/esm2022/lib/directives/is-element/is-element.directive.mjs +4 -4
- package/esm2022/lib/directives/let/let.directive.mjs +4 -4
- package/esm2022/lib/directives/observe-content/observe-content.directive.mjs +4 -4
- package/esm2022/lib/directives/observe-resize/observe-resize.directive.mjs +4 -4
- package/esm2022/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +4 -4
- package/esm2022/lib/directives/observe-visibility/observe-visibility.directive.mjs +4 -4
- package/esm2022/lib/directives/repeat/repeat.directive.mjs +4 -4
- package/esm2022/lib/directives/root-boundary/root-boundary.directive.mjs +4 -4
- package/esm2022/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +4 -4
- package/esm2022/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +4 -4
- package/esm2022/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +4 -4
- package/esm2022/lib/directives/seo/seo.directive.mjs +4 -4
- package/esm2022/lib/pipes/infer-mime-type/infer-mime-type.pipe.mjs +4 -4
- package/esm2022/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +4 -4
- package/esm2022/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +4 -4
- package/esm2022/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +4 -4
- package/esm2022/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +4 -4
- package/esm2022/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +4 -4
- package/esm2022/lib/pipes/to-array/to-array.pipe.mjs +4 -4
- package/esm2022/lib/services/click-observer.service.mjs +7 -7
- package/esm2022/lib/services/content-observer.service.mjs +7 -7
- package/esm2022/lib/services/focus-visible.service.mjs +4 -4
- package/esm2022/lib/services/intersection-observer.service.mjs +7 -7
- package/esm2022/lib/services/resize-observer.service.mjs +7 -7
- package/esm2022/lib/services/router-state.service.mjs +4 -4
- package/esm2022/lib/services/viewport.service.mjs +4 -4
- package/esm2022/lib/utils/selection-model.utils.mjs +8 -7
- package/fesm2022/ethlete-core.mjs +127 -126
- package/fesm2022/ethlete-core.mjs.map +1 -1
- package/lib/utils/selection-model.utils.d.ts +1 -0
- package/package.json +15 -15
|
@@ -166,13 +166,13 @@ export class RouterStateService {
|
|
|
166
166
|
}
|
|
167
167
|
return changes;
|
|
168
168
|
}
|
|
169
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
170
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.
|
|
169
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: RouterStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
170
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: RouterStateService, providedIn: 'root' }); }
|
|
171
171
|
}
|
|
172
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
172
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: RouterStateService, decorators: [{
|
|
173
173
|
type: Injectable,
|
|
174
174
|
args: [{
|
|
175
175
|
providedIn: 'root',
|
|
176
176
|
}]
|
|
177
177
|
}], ctorParameters: function () { return []; } });
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXN0YXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9yb3V0ZXItc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQVEsYUFBYSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEdBQUcsRUFFSCxRQUFRLEVBQ1IsV0FBVyxHQUNaLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFFakMsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUM5RCxNQUFNLHFDQUFxQyxHQUFHLE1BQU0sQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0FBQzlGLE1BQU0sMENBQTBDLEdBQUcsTUFBTSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7QUFnQnhHLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsU0FBdUMsRUFBRSxFQUFFLEVBQUU7SUFDbEYsT0FBTztRQUNMLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMscUNBQXFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNsSCxHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsMENBQTBDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFD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LEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDeEIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUN4QixDQUFDLENBQUM7UUFFSCxLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRTtZQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFNUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQzthQUNwQjtTQUNGO1FBRUQsT0FBTyxPQUFZLENBQUM7SUFDdEIsQ0FBQzs4R0F6UFUsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YSwgTmF2aWdhdGlvbkVuZCwgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgcGFpcndpc2UsXG4gIHNoYXJlUmVwbGF5LFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGVxdWFsIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jb25zdCBFVF9ESVNBQkxFX1NDUk9MTF9UT1AgPSBTeW1ib2woJ0VUX0RJU0FCTEVfU0NST0xMX1RPUCcpO1xuY29uc3QgRVRfRElTQUJMRV9TQ1JPTExfVE9QX0FTX1JFVFVSTl9ST1VURSA9IFN5bWJvbCgnRVRfRElTQUJMRV9TQ1JPTExfVE9QX0FTX1JFVFVSTl9ST1VURScpO1xuY29uc3QgRVRfRElTQUJMRV9TQ1JPTExfVE9QX09OX1BBVEhfUEFSQU1fQ0hBTkdFID0gU3ltYm9sKCdFVF9ESVNBQkxFX1NDUk9MTF9UT1BfT05fUEFUSF9QQVJBTV9DSEFOR0UnKTtcblxuZXhwb3J0IGludGVyZmFjZSBSb3V0ZXJEaXNhYmxlU2Nyb2xsVG9wQ29uZmlnIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSBzY3JvbGwgdG8gdG9wIE9OTFkgd2hlbiBuYXZpZ2F0aW5nIGJhY2sgdG8gdGhpcyByb3V0ZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGFzUmV0dXJuUm91dGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgc2Nyb2xsIHRvIHRvcCB3aGVuIGEgcGF0aCBwYXJhbSBjaGFuZ2VzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgb25QYXRoUGFyYW1DaGFuZ2U/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3Qgcm91dGVyRGlzYWJsZVNjcm9sbFRvcCA9IChjb25maWc6IFJvdXRlckRpc2FibGVTY3JvbGxUb3BDb25maWcgPSB7fSkgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLighY29uZmlnLmFzUmV0dXJuUm91dGUgPyB7IFtFVF9ESVNBQkxFX1NDUk9MTF9UT1BdOiB0cnVlIH0gOiB7IFtFVF9ESVNBQkxFX1NDUk9MTF9UT1BfQVNfUkVUVVJOX1JPVVRFXTogdHJ1ZSB9KSxcbiAgICAuLi4oY29uZmlnLm9uUGF0aFBhcmFtQ2hhbmdlID8geyBbRVRfRElTQUJMRV9TQ1JPTExfVE9QX09OX1BBVEhfUEFSQU1fQ0hBTkdFXTogdHJ1ZSB9IDoge30pLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IEVUX1BST1BFUlRZX1JFTU9WRUQgPSBTeW1ib2woJ0VUX1BST1BFUlRZX1JFTU9WRUQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JvbGxFbmhhbmNlbWVudHNDb25maWcge1xuICAvKipcbiAgICogVGhlIHNjcm9sbGFibGUgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcbiAgICovXG4gIHNjcm9sbEVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBxdWVyeSBwYXJhbXMgdGhhdCBzaG91bGQgdHJpZ2dlciBhIHNjcm9sbCB0byB0b3AuXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqIEBleGFtcGxlIFsncGFnZSddIC8vIHdpbGwgc2Nyb2xsIHRvIHRvcCB3aGVuIHRoZSBwYWdlIHF1ZXJ5IHBhcmFtIGNoYW5nZXNcbiAgICovXG4gIHF1ZXJ5UGFyYW1UcmlnZ2VyTGlzdD86IHN0cmluZ1tdO1xuICAvKipcbiAgICogQ29uZmlnIGZvciBmcmFnbWVudCBzY3JvbGxpbmcuXG4gICAqL1xuICBmcmFnbWVudD86IHtcbiAgICAvKipcbiAgICAgKiBFbmFibGUgZnJhZ21lbnQgc2Nyb2xsaW5nIChzY3JvbGwgdG8gZWxlbWVudCB3aXRoIGlkKVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byB1c2Ugc21vb3RoIHNjcm9sbGluZyBvciBub3QuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBzbW9vdGg/OiBib29sZWFuO1xuICB9O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUm91dGVyU3RhdGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfaXNTY3JvbGxUb3BPbk5hdmlnYXRpb25FbmFibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJy8nKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcbiAgICBkYXRhOiBEYXRhO1xuICAgIHBhdGhQYXJhbXM6IFBhcmFtcztcbiAgICBxdWVyeVBhcmFtczogUGFyYW1zO1xuICAgIHRpdGxlOiBzdHJpbmcgfCBudWxsO1xuICAgIGZyYWdtZW50OiBzdHJpbmcgfCBudWxsO1xuICB9Pih7XG4gICAgdGl0bGU6IG51bGwsXG4gICAgZnJhZ21lbnQ6IG51bGwsXG4gICAgZGF0YToge30sXG4gICAgcGF0aFBhcmFtczoge30sXG4gICAgcXVlcnlQYXJhbXM6IHt9LFxuICB9KTtcblxuICBnZXQgcm91dGUkKCkge1xuICAgIHJldHVybiB0aGlzLl9yb3V0ZSQuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgfVxuXG4gIGdldCByb3V0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcm91dGUkLmdldFZhbHVlKCk7XG4gIH1cblxuICBnZXQgc3RhdGUkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IGRhdGEkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQucGlwZShcbiAgICAgIG1hcCgoc3RhdGUpID0+IHN0YXRlLmRhdGEpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGVxdWFsKGEsIGIpKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5nZXRWYWx1ZSgpLmRhdGE7XG4gIH1cblxuICBnZXQgcGF0aFBhcmFtcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5waXBlKFxuICAgICAgbWFwKChzdGF0ZSkgPT4gc3RhdGUucGF0aFBhcmFtcyksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gZXF1YWwoYSwgYikpLFxuICAgICk7XG4gIH1cblxuICBnZXQgcGF0aFBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUkLmdldFZhbHVlKCkucGF0aFBhcmFtcztcbiAgfVxuXG4gIGdldCBxdWVyeVBhcmFtcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5waXBlKFxuICAgICAgbWFwKChzdGF0ZSkgPT4gc3RhdGUucXVlcnlQYXJhbXMpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGVxdWFsKGEsIGIpKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0IHF1ZXJ5UGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuZ2V0VmFsdWUoKS5xdWVyeVBhcmFtcztcbiAgfVxuXG4gIGdldCB0aXRsZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5waXBlKFxuICAgICAgbWFwKChzdGF0ZSkgPT4gc3RhdGUudGl0bGUpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0IHRpdGxlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuZ2V0VmFsdWUoKS50aXRsZTtcbiAgfVxuXG4gIGdldCBmcmFnbWVudCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5waXBlKFxuICAgICAgbWFwKChzdGF0ZSkgPT4gc3RhdGUuZnJhZ21lbnQpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0IGZyYWdtZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuZ2V0VmFsdWUoKS5mcmFnbWVudDtcbiAgfVxuXG4gIGdldCBkYXRhQ2hhbmdlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YSQucGlwZShcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBtYXAoKHYpID0+IHRoaXMuX2ZpbmRDaGFuZ2VzKHYpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgKTtcbiAgfVxuXG4gIGdldCBxdWVyeVBhcmFtQ2hhbmdlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlQYXJhbXMkLnBpcGUoXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgbWFwKCh2KSA9PiB0aGlzLl9maW5kQ2hhbmdlcyh2KSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICAgICk7XG4gIH1cblxuICBnZXQgcGF0aFBhcmFtQ2hhbmdlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFBhcmFtcyQucGlwZShcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBtYXAoKHYpID0+IHRoaXMuX2ZpbmRDaGFuZ2VzKHYpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX3JvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KTogZXZlbnQgaXMgTmF2aWdhdGlvbkVuZCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYS51cmwgPT09IGIudXJsKSxcbiAgICAgICAgbWFwKChldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgdXJsIH0gPSBldmVudDtcblxuICAgICAgICAgIGNvbnN0IHVybFdpdGhvdXRRdWVyeVBhcmFtcyA9IHVybC5zcGxpdCgnPycpWzBdID8/ICcnO1xuICAgICAgICAgIGNvbnN0IHdpdGhvdXRGcmFnbWVudCA9IHVybFdpdGhvdXRRdWVyeVBhcmFtcy5zcGxpdCgnIycpWzBdID8/ICcnO1xuXG4gICAgICAgICAgcmV0dXJuIHdpdGhvdXRGcmFnbWVudDtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuX3JvdXRlJCk7XG5cbiAgICB0aGlzLl9yb3V0ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgIGxldCByb3V0ZSA9IHRoaXMuX3JvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC5yb290O1xuXG4gICAgICAgICAgd2hpbGUgKHJvdXRlLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgIHJvdXRlID0gcm91dGUuZmlyc3RDaGlsZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7IGRhdGEsIHBhcmFtcywgcXVlcnlQYXJhbXMsIHRpdGxlLCBmcmFnbWVudCB9ID0gcm91dGU7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHBhdGhQYXJhbXM6IHBhcmFtcyxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlID8/IG51bGwsXG4gICAgICAgICAgICBmcmFnbWVudCxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5fc3RhdGUkKTtcbiAgfVxuXG4gIGVuYWJsZVNjcm9sbEVuaGFuY2VtZW50cyhjb25maWc6IFNjcm9sbEVuaGFuY2VtZW50c0NvbmZpZyA9IHt9KSB7XG4gICAgaWYgKHRoaXMuX2lzU2Nyb2xsVG9wT25OYXZpZ2F0aW9uRW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzU2Nyb2xsVG9wT25OYXZpZ2F0aW9uRW5hYmxlZCA9IHRydWU7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9zdGF0ZSQucGlwZShwYWlyd2lzZSgpKSwgdGhpcy5fcm91dGUkLnBpcGUocGFpcndpc2UoKSldKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEpKVxuICAgICAgLnN1YnNjcmliZSgoW1twcmV2U3RhdGUsIGN1cnJTdGF0ZV0sIFtwcmV2Um91dGUsIGN1cnJSb3V0ZV1dKSA9PiB7XG4gICAgICAgIGNvbnN0IHNhbWVVcmxOYXZpZ2F0aW9uID0gcHJldlJvdXRlID09PSBjdXJyUm91dGU7XG4gICAgICAgIGNvbnN0IGRpZEZyYWdtZW50Q2hhbmdlID0gcHJldlN0YXRlLmZyYWdtZW50ICE9PSBjdXJyU3RhdGUuZnJhZ21lbnQ7XG5cbiAgICAgICAgaWYgKHNhbWVVcmxOYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgY29uc3QgYWxsUXVlcnlQYXJhbXMgPSBbXG4gICAgICAgICAgICAuLi5uZXcgU2V0KE9iamVjdC5rZXlzKHByZXZTdGF0ZS5xdWVyeVBhcmFtcykuY29uY2F0KE9iamVjdC5rZXlzKGN1cnJTdGF0ZS5xdWVyeVBhcmFtcykpKSxcbiAgICAgICAgICBdO1xuXG4gICAgICAgICAgY29uc3QgY2hhbmdlZFF1ZXJ5UGFyYW1zID0gYWxsUXVlcnlQYXJhbXMuZmlsdGVyKFxuICAgICAgICAgICAgKGtleSkgPT4gY3VyclN0YXRlLnF1ZXJ5UGFyYW1zW2tleV0gIT09IHByZXZTdGF0ZS5xdWVyeVBhcmFtc1trZXldLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIWNvbmZpZy5xdWVyeVBhcmFtVHJpZ2dlckxpc3Q/Lmxlbmd0aCAmJiAhZGlkRnJhZ21lbnRDaGFuZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjYXNlUXVlcnlQYXJhbXMgPSBjaGFuZ2VkUXVlcnlQYXJhbXMuc29tZSgoa2V5KSA9PiBjb25maWcucXVlcnlQYXJhbVRyaWdnZXJMaXN0Py5pbmNsdWRlcyhrZXkpKTtcbiAgICAgICAgICBjb25zdCBjYXNlRnJhZ21lbnQgPSBkaWRGcmFnbWVudENoYW5nZSAmJiBjb25maWcuZnJhZ21lbnQ/LmVuYWJsZWQ7XG5cbiAgICAgICAgICBpZiAoY2FzZVF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICAoY29uZmlnLnNjcm9sbEVsZW1lbnQgPz8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5zY3JvbGxUb3AgPSAwO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2FzZUZyYWdtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBmcmFnbWVudEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjdXJyU3RhdGUuZnJhZ21lbnQgPz8gJycpO1xuXG4gICAgICAgICAgICBpZiAoZnJhZ21lbnRFbGVtZW50KSB7XG4gICAgICAgICAgICAgIGZyYWdtZW50RWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiBjb25maWcuZnJhZ21lbnQ/LnNtb290aCA/ICdzbW9vdGgnIDogJ2F1dG8nIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB2aWFSZXR1cm5Sb3V0ZSA9XG4gICAgICAgICAgICBjdXJyU3RhdGUuZGF0YVtFVF9ESVNBQkxFX1NDUk9MTF9UT1BfQVNfUkVUVVJOX1JPVVRFXSAmJiBwcmV2U3RhdGUuZGF0YVtFVF9ESVNBQkxFX1NDUk9MTF9UT1BdO1xuICAgICAgICAgIGNvbnN0IGV4cGxpY2l0bHkgPSBjdXJyU3RhdGUuZGF0YVtFVF9ESVNBQkxFX1NDUk9MTF9UT1BdO1xuICAgICAgICAgIGNvbnN0IHBhdGhQYXJhbXNDaGFuZ2UgPSBjdXJyU3RhdGUuZGF0YVtFVF9ESVNBQkxFX1NDUk9MTF9UT1BfT05fUEFUSF9QQVJBTV9DSEFOR0VdO1xuXG4gICAgICAgICAgaWYgKHZpYVJldHVyblJvdXRlIHx8IGV4cGxpY2l0bHkgfHwgcGF0aFBhcmFtc0NoYW5nZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGVsID0gY29uZmlnLnNjcm9sbEVsZW1lbnQgPz8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAgIGVsLnNjcm9sbFRvcCA9IDA7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0UXVlcnlQYXJhbTxUID0gc3RyaW5nIHwgdW5kZWZpbmVkPihrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQucGlwZShcbiAgICAgIG1hcCgoc3RhdGUpID0+IHN0YXRlLnF1ZXJ5UGFyYW1zW2tleV0pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICApO1xuICB9XG5cbiAgc2VsZWN0UGF0aFBhcmFtPFQgPSBzdHJpbmcgfCB1bmRlZmluZWQ+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5waXBlKFxuICAgICAgbWFwKChzdGF0ZSkgPT4gc3RhdGUucGF0aFBhcmFtc1trZXldKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgKTtcbiAgfVxuXG4gIHNlbGVjdERhdGE8VCA9IHVua25vd24+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5waXBlKFxuICAgICAgbWFwKChzdGF0ZSkgPT4gc3RhdGUuZGF0YVtrZXldKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBlcXVhbChhLCBiKSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbmRDaGFuZ2VzPFQgZXh0ZW5kcyBbUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIFJlY29yZDxzdHJpbmcsIHVua25vd24+XSwgSiBleHRlbmRzIFBhcnRpYWw8VFtudW1iZXJdPj4oW1xuICAgIHByZXZpb3VzLFxuICAgIGN1cnJlbnQsXG4gIF06IFQpIHtcbiAgICBjb25zdCBjaGFuZ2VzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gICAgY29uc3QgYWxsS2V5cyA9IG5ldyBTZXQ8a2V5b2YgdHlwZW9mIHByZXZpb3VzICYga2V5b2YgdHlwZW9mIGN1cnJlbnQ+KFtcbiAgICAgIC4uLk9iamVjdC5rZXlzKHByZXZpb3VzKSxcbiAgICAgIC4uLk9iamVjdC5rZXlzKGN1cnJlbnQpLFxuICAgIF0pO1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgYWxsS2V5cykge1xuICAgICAgaWYgKCFlcXVhbChwcmV2aW91c1trZXldLCBjdXJyZW50W2tleV0pKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IGN1cnJlbnRba2V5XSA9PT0gdW5kZWZpbmVkID8gRVRfUFJPUEVSVFlfUkVNT1ZFRCA6IGN1cnJlbnRba2V5XTtcblxuICAgICAgICBjaGFuZ2VzW2tleV0gPSB2YWw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYW5nZXMgYXMgSjtcbiAgfVxufVxuIl19
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXN0YXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9yb3V0ZXItc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQVEsYUFBYSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEdBQUcsRUFFSCxRQUFRLEVBQ1IsV0FBVyxHQUNaLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFFakMsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUM5RCxNQUFNLHFDQUFxQyxHQUFHLE1BQU0sQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0FBQzlGLE1BQU0sMENBQTBDLEdBQUcsTUFBTSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7QUFnQnhHLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsU0FBdUMsRUFBRSxFQUFFLEVBQUU7SUFDbEYsT0FBTztRQUNMLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMscUNBQXFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNsSCxHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsMENBQTBDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFD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LEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDeEIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUN4QixDQUFDLENBQUM7UUFFSCxLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRTtZQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFNUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQzthQUNwQjtTQUNGO1FBRUQsT0FBTyxPQUFZLENBQUM7SUFDdEIsQ0FBQzsrR0F6UFUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YSwgTmF2aWdhdGlvbkVuZCwgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgcGFpcndpc2UsXG4gIHNoYXJlUmVwbGF5LFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGVxdWFsIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jb25zdCBFVF9ESVNBQkxFX1NDUk9MTF9UT1AgPSBTeW1ib2woJ0VUX0RJU0FCTEVfU0NST0xMX1RPUCcpO1xuY29uc3QgRVRfRElTQUJMRV9TQ1JPTExfVE9QX0FTX1JFVFVSTl9ST1VURSA9IFN5bWJvbCgnRVRfRElTQUJMRV9TQ1JPTExfVE9QX0FTX1JFVFVSTl9ST1VURScpO1xuY29uc3QgRVRfRElTQUJMRV9TQ1JPTExfVE9QX09OX1BBVEhfUEFSQU1fQ0hBTkdFID0gU3ltYm9sKCdFVF9ESVNBQkxFX1NDUk9MTF9UT1BfT05fUEFUSF9QQVJBTV9DSEFOR0UnKTtcblxuZXhwb3J0IGludGVyZmFjZSBSb3V0ZXJEaXNhYmxlU2Nyb2xsVG9wQ29uZmlnIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSBzY3JvbGwgdG8gdG9wIE9OTFkgd2hlbiBuYXZpZ2F0aW5nIGJhY2sgdG8gdGhpcyByb3V0ZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGFzUmV0dXJuUm91dGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgc2Nyb2xsIHRvIHRvcCB3aGVuIGEgcGF0aCBwYXJhbSBjaGFuZ2VzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgb25QYXRoUGFyYW1DaGFuZ2U/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3Qgcm91dGVyRGlzYWJsZVNjcm9sbFRvcCA9IChjb25maWc6IFJvdXRlckRpc2FibGVTY3JvbGxUb3BDb25maWcgPSB7fSkgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLighY29uZmlnLmFzUmV0dXJuUm91dGUgPyB7IFtFVF9ESVNBQkxFX1NDUk9MTF9UT1BdOiB0cnVlIH0gOiB7IFtFVF9ESVNBQkxFX1NDUk9MTF9UT1BfQVNfUkVUVVJOX1JPVVRFXTogdHJ1ZSB9KSxcbiAgICAuLi4oY29uZmlnLm9uUGF0aFBhcmFtQ2hhbmdlID8geyBbRVRfRElTQUJMRV9TQ1JPTExfVE9QX09OX1BBVEhfUEFSQU1fQ0hBTkdFXTogdHJ1ZSB9IDoge30pLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IEVUX1BST1BFUlRZX1JFTU9WRUQgPSBTeW1ib2woJ0VUX1BST1BFUlRZX1JFTU9WRUQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JvbGxFbmhhbmNlbWVudHNDb25maWcge1xuICAvKipcbiAgICogVGhlIHNjcm9sbGFibGUgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcbiAgICovXG4gIHNjcm9sbEVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBxdWVyeSBwYXJhbXMgdGhhdCBzaG91bGQgdHJpZ2dlciBhIHNjcm9sbCB0byB0b3AuXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqIEBleGFtcGxlIFsncGFnZSddIC8vIHdpbGwgc2Nyb2xsIHRvIHRvcCB3aGVuIHRoZSBwYWdlIHF1ZXJ5IHBhcmFtIGNoYW5nZXNcbiAgICovXG4gIHF1ZXJ5UGFyYW1UcmlnZ2VyTGlzdD86IHN0cmluZ1tdO1xuICAvKipcbiAgICogQ29uZmlnIGZvciBmcmFnbWVudCBzY3JvbGxpbmcuXG4gICAqL1xuICBmcmFnbWVudD86IHtcbiAgICAvKipcbiAgICAgKiBFbmFibGUgZnJhZ21lbnQgc2Nyb2xsaW5nIChzY3JvbGwgdG8gZWxlbWVudCB3aXRoIGlkKVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byB1c2Ugc21vb3RoIHNjcm9sbGluZyBvciBub3QuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBzbW9vdGg/OiBib29sZWFuO1xuICB9O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUm91dGVyU3RhdGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfaXNTY3JvbGxUb3BPbk5hdmlnYXRpb25FbmFibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJy8nKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcbiAgICBkYXRhOiBEYXRhO1xuICAgIHBhdGhQYXJhbXM6IFBhcmFtcztcbiAgICBxdWVyeVBhcmFtczogUGFyYW1zO1xuICAgIHRpdGxlOiBzdHJpbmcgfCBudWxsO1xuICAgIGZyYWdtZW50OiBzdHJpbmcgfCBudWxsO1xuICB9Pih7XG4gICAgdGl0bGU6IG51bGwsXG4gICAgZnJhZ21lbnQ6IG51bGwsXG4gICAgZGF0YToge30sXG4gICAgcGF0aFBhcmFtczoge30sXG4gICAgcXVlcnlQYXJhbXM6IHt9LFxuICB9KTtcblxuICBnZXQgcm91dGUkKCkge1xuICAgIHJldHVybiB0aGlzLl9yb3V0ZSQuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgfVxuXG4gIGdldCByb3V0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcm91dGUkLmdldFZhbHVlKCk7XG4gIH1cblxuICBnZXQgc3RhdGUkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ2V0IGRhdGEkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQucGlwZShcbiAgICAgIG1hcCgoc3RhdGUpID0+IHN0YXRlLmRhdGEpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGVxdWFsKGEsIGIpKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5nZXRWYWx1ZSgpLmRhdGE7XG4gIH1cblxuICBnZXQgcGF0aFBhcmFtcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5waXBlKFxuICAgICAgbWFwKChzdGF0ZSkgPT4gc3RhdGUucGF0aFBhcmFtcyksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gZXF1YWwoYSwgYikpLFxuICAgICk7XG4gIH1cblxuICBnZXQgcGF0aFBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUkLmdldFZhbHVlKCkucGF0aFBhcmFtcztcbiAgfVxuXG4gIGdldCBxdWVyeVBhcmFtcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5waXBlKFxuICAgICAgbWFwKChzdGF0ZSkgPT4gc3RhdGUucXVlcnlQYXJhbXMpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGVxdWFsKGEsIGIpKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0IHF1ZXJ5UGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuZ2V0VmFsdWUoKS5xdWVyeVBhcmFtcztcbiAgfVxuXG4gIGdldCB0aXRsZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5waXBlKFxuICAgICAgbWFwKChzdGF0ZSkgPT4gc3RhdGUudGl0bGUpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0IHRpdGxlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuZ2V0VmFsdWUoKS50aXRsZTtcbiAgfVxuXG4gIGdldCBmcmFnbWVudCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5waXBlKFxuICAgICAgbWFwKChzdGF0ZSkgPT4gc3RhdGUuZnJhZ21lbnQpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0IGZyYWdtZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuZ2V0VmFsdWUoKS5mcmFnbWVudDtcbiAgfVxuXG4gIGdldCBkYXRhQ2hhbmdlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YSQucGlwZShcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBtYXAoKHYpID0+IHRoaXMuX2ZpbmRDaGFuZ2VzKHYpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgKTtcbiAgfVxuXG4gIGdldCBxdWVyeVBhcmFtQ2hhbmdlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlQYXJhbXMkLnBpcGUoXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgbWFwKCh2KSA9PiB0aGlzLl9maW5kQ2hhbmdlcyh2KSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICAgICk7XG4gIH1cblxuICBnZXQgcGF0aFBhcmFtQ2hhbmdlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFBhcmFtcyQucGlwZShcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBtYXAoKHYpID0+IHRoaXMuX2ZpbmRDaGFuZ2VzKHYpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX3JvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KTogZXZlbnQgaXMgTmF2aWdhdGlvbkVuZCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYS51cmwgPT09IGIudXJsKSxcbiAgICAgICAgbWFwKChldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgdXJsIH0gPSBldmVudDtcblxuICAgICAgICAgIGNvbnN0IHVybFdpdGhvdXRRdWVyeVBhcmFtcyA9IHVybC5zcGxpdCgnPycpWzBdID8/ICcnO1xuICAgICAgICAgIGNvbnN0IHdpdGhvdXRGcmFnbWVudCA9IHVybFdpdGhvdXRRdWVyeVBhcmFtcy5zcGxpdCgnIycpWzBdID8/ICcnO1xuXG4gICAgICAgICAgcmV0dXJuIHdpdGhvdXRGcmFnbWVudDtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuX3JvdXRlJCk7XG5cbiAgICB0aGlzLl9yb3V0ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgIGxldCByb3V0ZSA9IHRoaXMuX3JvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC5yb290O1xuXG4gICAgICAgICAgd2hpbGUgKHJvdXRlLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgIHJvdXRlID0gcm91dGUuZmlyc3RDaGlsZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7IGRhdGEsIHBhcmFtcywgcXVlcnlQYXJhbXMsIHRpdGxlLCBmcmFnbWVudCB9ID0gcm91dGU7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHBhdGhQYXJhbXM6IHBhcmFtcyxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlID8/IG51bGwsXG4gICAgICAgICAgICBmcmFnbWVudCxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5fc3RhdGUkKTtcbiAgfVxuXG4gIGVuYWJsZVNjcm9sbEVuaGFuY2VtZW50cyhjb25maWc6IFNjcm9sbEVuaGFuY2VtZW50c0NvbmZpZyA9IHt9KSB7XG4gICAgaWYgKHRoaXMuX2lzU2Nyb2xsVG9wT25OYXZpZ2F0aW9uRW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzU2Nyb2xsVG9wT25OYXZpZ2F0aW9uRW5hYmxlZCA9IHRydWU7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9zdGF0ZSQucGlwZShwYWlyd2lzZSgpKSwgdGhpcy5fcm91dGUkLnBpcGUocGFpcndpc2UoKSldKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEpKVxuICAgICAgLnN1YnNjcmliZSgoW1twcmV2U3RhdGUsIGN1cnJTdGF0ZV0sIFtwcmV2Um91dGUsIGN1cnJSb3V0ZV1dKSA9PiB7XG4gICAgICAgIGNvbnN0IHNhbWVVcmxOYXZpZ2F0aW9uID0gcHJldlJvdXRlID09PSBjdXJyUm91dGU7XG4gICAgICAgIGNvbnN0IGRpZEZyYWdtZW50Q2hhbmdlID0gcHJldlN0YXRlLmZyYWdtZW50ICE9PSBjdXJyU3RhdGUuZnJhZ21lbnQ7XG5cbiAgICAgICAgaWYgKHNhbWVVcmxOYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgY29uc3QgYWxsUXVlcnlQYXJhbXMgPSBbXG4gICAgICAgICAgICAuLi5uZXcgU2V0KE9iamVjdC5rZXlzKHByZXZTdGF0ZS5xdWVyeVBhcmFtcykuY29uY2F0KE9iamVjdC5rZXlzKGN1cnJTdGF0ZS5xdWVyeVBhcmFtcykpKSxcbiAgICAgICAgICBdO1xuXG4gICAgICAgICAgY29uc3QgY2hhbmdlZFF1ZXJ5UGFyYW1zID0gYWxsUXVlcnlQYXJhbXMuZmlsdGVyKFxuICAgICAgICAgICAgKGtleSkgPT4gY3VyclN0YXRlLnF1ZXJ5UGFyYW1zW2tleV0gIT09IHByZXZTdGF0ZS5xdWVyeVBhcmFtc1trZXldLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIWNvbmZpZy5xdWVyeVBhcmFtVHJpZ2dlckxpc3Q/Lmxlbmd0aCAmJiAhZGlkRnJhZ21lbnRDaGFuZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjYXNlUXVlcnlQYXJhbXMgPSBjaGFuZ2VkUXVlcnlQYXJhbXMuc29tZSgoa2V5KSA9PiBjb25maWcucXVlcnlQYXJhbVRyaWdnZXJMaXN0Py5pbmNsdWRlcyhrZXkpKTtcbiAgICAgICAgICBjb25zdCBjYXNlRnJhZ21lbnQgPSBkaWRGcmFnbWVudENoYW5nZSAmJiBjb25maWcuZnJhZ21lbnQ/LmVuYWJsZWQ7XG5cbiAgICAgICAgICBpZiAoY2FzZVF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICAoY29uZmlnLnNjcm9sbEVsZW1lbnQgPz8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5zY3JvbGxUb3AgPSAwO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2FzZUZyYWdtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBmcmFnbWVudEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjdXJyU3RhdGUuZnJhZ21lbnQgPz8gJycpO1xuXG4gICAgICAgICAgICBpZiAoZnJhZ21lbnRFbGVtZW50KSB7XG4gICAgICAgICAgICAgIGZyYWdtZW50RWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiBjb25maWcuZnJhZ21lbnQ/LnNtb290aCA/ICdzbW9vdGgnIDogJ2F1dG8nIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB2aWFSZXR1cm5Sb3V0ZSA9XG4gICAgICAgICAgICBjdXJyU3RhdGUuZGF0YVtFVF9ESVNBQkxFX1NDUk9MTF9UT1BfQVNfUkVUVVJOX1JPVVRFXSAmJiBwcmV2U3RhdGUuZGF0YVtFVF9ESVNBQkxFX1NDUk9MTF9UT1BdO1xuICAgICAgICAgIGNvbnN0IGV4cGxpY2l0bHkgPSBjdXJyU3RhdGUuZGF0YVtFVF9ESVNBQkxFX1NDUk9MTF9UT1BdO1xuICAgICAgICAgIGNvbnN0IHBhdGhQYXJhbXNDaGFuZ2UgPSBjdXJyU3RhdGUuZGF0YVtFVF9ESVNBQkxFX1NDUk9MTF9UT1BfT05fUEFUSF9QQVJBTV9DSEFOR0VdO1xuXG4gICAgICAgICAgaWYgKHZpYVJldHVyblJvdXRlIHx8IGV4cGxpY2l0bHkgfHwgcGF0aFBhcmFtc0NoYW5nZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGVsID0gY29uZmlnLnNjcm9sbEVsZW1lbnQgPz8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAgIGVsLnNjcm9sbFRvcCA9IDA7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0UXVlcnlQYXJhbTxUID0gc3RyaW5nIHwgdW5kZWZpbmVkPihrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQucGlwZShcbiAgICAgIG1hcCgoc3RhdGUpID0+IHN0YXRlLnF1ZXJ5UGFyYW1zW2tleV0pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICApO1xuICB9XG5cbiAgc2VsZWN0UGF0aFBhcmFtPFQgPSBzdHJpbmcgfCB1bmRlZmluZWQ+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5waXBlKFxuICAgICAgbWFwKChzdGF0ZSkgPT4gc3RhdGUucGF0aFBhcmFtc1trZXldKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgKTtcbiAgfVxuXG4gIHNlbGVjdERhdGE8VCA9IHVua25vd24+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5waXBlKFxuICAgICAgbWFwKChzdGF0ZSkgPT4gc3RhdGUuZGF0YVtrZXldKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBlcXVhbChhLCBiKSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbmRDaGFuZ2VzPFQgZXh0ZW5kcyBbUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIFJlY29yZDxzdHJpbmcsIHVua25vd24+XSwgSiBleHRlbmRzIFBhcnRpYWw8VFtudW1iZXJdPj4oW1xuICAgIHByZXZpb3VzLFxuICAgIGN1cnJlbnQsXG4gIF06IFQpIHtcbiAgICBjb25zdCBjaGFuZ2VzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gICAgY29uc3QgYWxsS2V5cyA9IG5ldyBTZXQ8a2V5b2YgdHlwZW9mIHByZXZpb3VzICYga2V5b2YgdHlwZW9mIGN1cnJlbnQ+KFtcbiAgICAgIC4uLk9iamVjdC5rZXlzKHByZXZpb3VzKSxcbiAgICAgIC4uLk9iamVjdC5rZXlzKGN1cnJlbnQpLFxuICAgIF0pO1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgYWxsS2V5cykge1xuICAgICAgaWYgKCFlcXVhbChwcmV2aW91c1trZXldLCBjdXJyZW50W2tleV0pKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IGN1cnJlbnRba2V5XSA9PT0gdW5kZWZpbmVkID8gRVRfUFJPUEVSVFlfUkVNT1ZFRCA6IGN1cnJlbnRba2V5XTtcblxuICAgICAgICBjaGFuZ2VzW2tleV0gPSB2YWw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYW5nZXMgYXMgSjtcbiAgfVxufVxuIl19
|
|
@@ -216,8 +216,8 @@ export class ViewportService {
|
|
|
216
216
|
}
|
|
217
217
|
return 'xs';
|
|
218
218
|
}
|
|
219
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.
|
|
220
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.
|
|
219
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: ViewportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
220
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: ViewportService, providedIn: 'root' }); }
|
|
221
221
|
}
|
|
222
222
|
__decorate([
|
|
223
223
|
Memo(),
|
|
@@ -235,10 +235,10 @@ __decorate([
|
|
|
235
235
|
__metadata("design:paramtypes", [Object]),
|
|
236
236
|
__metadata("design:returntype", void 0)
|
|
237
237
|
], ViewportService.prototype, "_buildMediaQuery", null);
|
|
238
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.
|
|
238
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: ViewportService, decorators: [{
|
|
239
239
|
type: Injectable,
|
|
240
240
|
args: [{
|
|
241
241
|
providedIn: 'root',
|
|
242
242
|
}]
|
|
243
243
|
}], ctorParameters: function () { return []; }, propDecorators: { getBreakpointSize: [], _buildMediaQuery: [] } });
|
|
244
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxlQUFlLEVBRWYsT0FBTyxFQUNQLGFBQWEsRUFDYixZQUFZLEVBQ1osUUFBUSxFQUNSLEdBQUcsRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQVdsRSxNQUFNLE9BQU8sZUFBZTtJQWtCMUIsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZ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QUF3TWxCO0lBREMsSUFBSSxFQUFFOzs7O3dEQWlCTjtBQWdCTztJQUxQLElBQUksQ0FBQztRQUNKLFFBQVEsRUFBRSxDQUFDLENBQXlCLEVBQUUsRUFBRTtZQUN0QyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUN6QyxDQUFDO0tBQ0YsQ0FBQzs7Ozt1REE2QkQ7MkZBbFFVLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzBFQXVNQyxpQkFBaUIsTUFnQ1QsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBmaW5hbGl6ZSxcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgREVGQVVMVF9WSUVXUE9SVF9DT05GSUcsIFZJRVdQT1JUX0NPTkZJRyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNZW1vIH0gZnJvbSAnLi4vZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBCcmVha3BvaW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZXF1YWwgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuL3Jlc2l6ZS1vYnNlcnZlci5zZXJ2aWNlJztcbmltcG9ydCB7IEJ1aWxkTWVkaWFRdWVyeU9wdGlvbnMgfSBmcm9tICcuL3ZpZXdwb3J0LnR5cGVzJztcblxuaW50ZXJmYWNlIFNpemUge1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdwb3J0U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc2l6ZU9ic2VydmVyU2VydmljZSA9IGluamVjdChSZXNpemVPYnNlcnZlclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3cG9ydENvbmZpZyA9IGluamVjdChWSUVXUE9SVF9DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSkgfHwgREVGQVVMVF9WSUVXUE9SVF9DT05GSUc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JyZWFrcG9pbnRPYnNlcnZlciA9IGluamVjdChCcmVha3BvaW50T2JzZXJ2ZXIpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdwb3J0TW9uaXRvclN0b3AkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfaXNWaWV3cG9ydE1vbml0b3JFbmFibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfaXNYcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfaXNTbSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfaXNNZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfaXNMZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfaXNYbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfaXMyWGwkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHJpdmF0ZSBfdmlld3BvcnRTaXplJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2l6ZSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIF9zY3JvbGxiYXJTaXplJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2l6ZSB8IG51bGw+KG51bGwpO1xuXG4gIGdldCBpc1hzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNYcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXNYcygpIHtcbiAgICByZXR1cm4gdGhpcy5faXNYcyQudmFsdWU7XG4gIH1cblxuICBnZXQgaXNTbSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU20kLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzU20oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU20kLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGlzTWQkKCkge1xuICAgIHJldHVybiB0aGlzLl9pc01kJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBpc01kKCkge1xuICAgIHJldHVybiB0aGlzLl9pc01kJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBpc0xnJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNMZyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXNMZygpIHtcbiAgICByZXR1cm4gdGhpcy5faXNMZyQudmFsdWU7XG4gIH1cblxuICBnZXQgaXNYbCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzWGwkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzWGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzWGwkLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGlzMlhsJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXMyWGwkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzMlhsKCkge1xuICAgIHJldHVybiB0aGlzLl9pczJYbCQudmFsdWU7XG4gIH1cblxuICBnZXQgdmlld3BvcnRTaXplJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld3BvcnRTaXplJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCB2aWV3cG9ydFNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdwb3J0U2l6ZSQudmFsdWU7XG4gIH1cblxuICBnZXQgc2Nyb2xsYmFyU2l6ZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Njcm9sbGJhclNpemUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHNjcm9sbGJhclNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Njcm9sbGJhclNpemUkLnZhbHVlO1xuICB9XG5cbiAgY3VycmVudFZpZXdwb3J0JCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuaXNYcyQsIHRoaXMuaXNTbSQsIHRoaXMuaXNNZCQsIHRoaXMuaXNMZyQsIHRoaXMuaXNYbCQsIHRoaXMuaXMyWGwkXSkucGlwZShcbiAgICBtYXAoKHZhbCkgPT4gdGhpcy5nZXRDdXJyZW50Vmlld3BvcnQodmFsKSksXG4gICAgZGVib3VuY2VUaW1lKDApLFxuICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG5cbiAgZ2V0IGN1cnJlbnRWaWV3cG9ydCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDdXJyZW50Vmlld3BvcnQoW3RoaXMuaXNYcywgdGhpcy5pc1NtLCB0aGlzLmlzTWQsIHRoaXMuaXNMZywgdGhpcy5pc1hsLCB0aGlzLmlzMlhsXSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9vYnNlcnZlRGVmYXVsdEJyZWFrcG9pbnRzKCk7XG4gIH1cblxuICBvYnNlcnZlKG9wdGlvbnM6IHsgbWluPzogbnVtYmVyIHwgQnJlYWtwb2ludDsgbWF4PzogbnVtYmVyIHwgQnJlYWtwb2ludCB9KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgbWVkaWFRdWVyeSA9IHRoaXMuX2J1aWxkTWVkaWFRdWVyeShvcHRpb25zKTtcblxuICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShtZWRpYVF1ZXJ5KS5waXBlKFxuICAgICAgbWFwKCh4KSA9PiB4Lm1hdGNoZXMpLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICApO1xuICB9XG5cbiAgaXNNYXRjaGVkKG9wdGlvbnM6IHsgbWluPzogbnVtYmVyIHwgQnJlYWtwb2ludDsgbWF4PzogbnVtYmVyIHwgQnJlYWtwb2ludCB9KTogYm9vbGVhbiB7XG4gICAgY29uc3QgbWVkaWFRdWVyeSA9IHRoaXMuX2J1aWxkTWVkaWFRdWVyeShvcHRpb25zKTtcblxuICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKG1lZGlhUXVlcnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgc2l6ZSBDU1MgdmFyaWFibGVzIHRvIHRoZSBkb2N1bWVudEVsZW1lbnQgaW4gcGl4ZWxzLlxuICAgKiAtIGAtLWV0LXZ3YDogdmlld3BvcnQgd2lkdGggZXhjbHVkaW5nIHNjcm9sbGJhciB3aWR0aFxuICAgKiAtIGAtLWV0LXZoYDogdmlld3BvcnQgaGVpZ2h0IGV4Y2x1ZGluZyBzY3JvbGxiYXIgaGVpZ2h0XG4gICAqIC0gYC0tZXQtc3dgOiBzY3JvbGxiYXIgd2lkdGhcbiAgICogLSBgLS1ldC1zaGA6IHNjcm9sbGJhciBoZWlnaHRcbiAgICovXG4gIG1vbml0b3JWaWV3cG9ydCgpIHtcbiAgICBpZiAodGhpcy5faXNWaWV3cG9ydE1vbml0b3JFbmFibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLl9pc1ZpZXdwb3J0TW9uaXRvckVuYWJsZWQgPSB0cnVlO1xuXG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlXG4gICAgICAub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSBlWzBdO1xuXG4gICAgICAgICAgaWYgKCFlbnRyeSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3Qgd2lkdGggPSBlbnRyeS5jb250ZW50UmVjdC53aWR0aDtcbiAgICAgICAgICBjb25zdCBoZWlnaHQgPSBlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQ7XG5cbiAgICAgICAgICBjb25zdCBvYmogPSB7IHdpZHRoLCBoZWlnaHQgfTtcblxuICAgICAgICAgIGlmIChlcXVhbChvYmosIHRoaXMuX3ZpZXdwb3J0U2l6ZSQudmFsdWUpKSByZXR1cm47XG5cbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tZXQtdncnLCBgJHtvYmoud2lkdGh9cHhgKTtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tZXQtdmgnLCBgJHtvYmouaGVpZ2h0fXB4YCk7XG5cbiAgICAgICAgICB0aGlzLl92aWV3cG9ydFNpemUkLm5leHQob2JqKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXQtdncnKTtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXQtdmgnKTtcblxuICAgICAgICAgIHRoaXMuX3ZpZXdwb3J0U2l6ZSQubmV4dChudWxsKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl92aWV3cG9ydE1vbml0b3JTdG9wJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBjb25zdCBzY3JvbGxiYXJSdWxlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHNjcm9sbGJhclJ1bGVyLnN0eWxlLndpZHRoID0gJzEwMHB4JztcbiAgICBzY3JvbGxiYXJSdWxlci5zdHlsZS5oZWlnaHQgPSAnMTAwcHgnO1xuICAgIHNjcm9sbGJhclJ1bGVyLnN0eWxlLm92ZXJmbG93ID0gJ3Njcm9sbCc7XG4gICAgc2Nyb2xsYmFyUnVsZXIuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIHNjcm9sbGJhclJ1bGVyLnN0eWxlLnRvcCA9ICctOTk5OXB4JztcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcm9sbGJhclJ1bGVyKTtcblxuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyU2VydmljZVxuICAgICAgLm9ic2VydmUoc2Nyb2xsYmFyUnVsZXIpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSBlWzBdO1xuXG4gICAgICAgICAgaWYgKCFlbnRyeSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3Qgc2l6ZSA9IGVudHJ5LmNvbnRlbnRSZWN0LndpZHRoO1xuXG4gICAgICAgICAgY29uc3Qgb2JqID0geyB3aWR0aDogMTAwIC0gc2l6ZSwgaGVpZ2h0OiAxMDAgLSBzaXplIH07XG5cbiAgICAgICAgICBpZiAoZXF1YWwob2JqLCB0aGlzLl9zY3JvbGxiYXJTaXplJC52YWx1ZSkpIHJldHVybjtcblxuICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1ldC1zdycsIGAke29iai53aWR0aH1weGApO1xuICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1ldC1zaCcsIGAke29iai5oZWlnaHR9cHhgKTtcblxuICAgICAgICAgIHRoaXMuX3Njcm9sbGJhclNpemUkLm5leHQob2JqKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHNjcm9sbGJhclJ1bGVyKTtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXQtdncnKTtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXQtdmgnKTtcblxuICAgICAgICAgIHRoaXMuX3Njcm9sbGJhclNpemUkLm5leHQobnVsbCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fdmlld3BvcnRNb25pdG9yU3RvcCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgdW5tb25pdG9yVmlld3BvcnQoKSB7XG4gICAgdGhpcy5fdmlld3BvcnRNb25pdG9yU3RvcCQubmV4dCgpO1xuICAgIHRoaXMuX2lzVmlld3BvcnRNb25pdG9yRW5hYmxlZCA9IGZhbHNlO1xuICB9XG5cbiAgQE1lbW8oKVxuICBnZXRCcmVha3BvaW50U2l6ZSh0eXBlOiBCcmVha3BvaW50LCBvcHRpb246ICdtaW4nIHwgJ21heCcpIHtcbiAgICBjb25zdCBpbmRleCA9IG9wdGlvbiA9PT0gJ21pbicgPyAwIDogMTtcbiAgICBjb25zdCBzaXplID0gdGhpcy5fdmlld3BvcnRDb25maWcuYnJlYWtwb2ludHNbdHlwZV1baW5kZXhdO1xuXG4gICAgaWYgKHNpemUgPT09IEluZmluaXR5IHx8IHNpemUgPT09IDApIHtcbiAgICAgIHJldHVybiBzaXplO1xuICAgIH1cblxuICAgIGlmIChvcHRpb24gPT09ICdtaW4nKSB7XG4gICAgICByZXR1cm4gc2l6ZTtcbiAgICB9XG5cbiAgICAvLyBEdWUgdG8gc2NhbGluZywgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSB2aWV3cG9ydCBtYXkgYmUgYSBkZWNpbWFsIG51bWJlci5cbiAgICAvLyBFZy4gb24gV2luZG93cyAxMSB3aXRoIDE1MCUgc2NhbGluZywgdGhlIHZpZXdwb3J0IHNpemUgbWF5IGJlIDE1MzUuMzNweFxuICAgIC8vIGFuZCB0aHVzIG5vdCBtYXRjaGluZyBhbnkgb2YgdGhlIGRlZmF1bHQgYnJlYWtwb2ludHMuXG4gICAgcmV0dXJuIHNpemUgKyAwLjk7XG4gIH1cblxuICBwcml2YXRlIF9vYnNlcnZlRGVmYXVsdEJyZWFrcG9pbnRzKCkge1xuICAgIHRoaXMub2JzZXJ2ZSh7IG1heDogJ3hzJyB9KS5zdWJzY3JpYmUodGhpcy5faXNYcyQpO1xuICAgIHRoaXMub2JzZXJ2ZSh7IG1pbjogJ3NtJywgbWF4OiAnc20nIH0pLnN1YnNjcmliZSh0aGlzLl9pc1NtJCk7XG4gICAgdGhpcy5vYnNlcnZlKHsgbWluOiAnbWQnLCBtYXg6ICdtZCcgfSkuc3Vic2NyaWJlKHRoaXMuX2lzTWQkKTtcbiAgICB0aGlzLm9ic2VydmUoeyBtaW46ICdsZycsIG1heDogJ2xnJyB9KS5zdWJzY3JpYmUodGhpcy5faXNMZyQpO1xuICAgIHRoaXMub2JzZXJ2ZSh7IG1pbjogJ3hsJywgbWF4OiAneGwnIH0pLnN1YnNjcmliZSh0aGlzLl9pc1hsJCk7XG4gICAgdGhpcy5vYnNlcnZlKHsgbWluOiAnMnhsJyB9KS5zdWJzY3JpYmUodGhpcy5faXMyWGwkKTtcbiAgfVxuXG4gIEBNZW1vKHtcbiAgICByZXNvbHZlcjogKHY6IEJ1aWxkTWVkaWFRdWVyeU9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBgJHt2Lm1pbiA/PyAnJ30tJHt2Lm1heCA/PyAnJ31gO1xuICAgIH0sXG4gIH0pXG4gIHByaXZhdGUgX2J1aWxkTWVkaWFRdWVyeShvcHRpb25zOiBCdWlsZE1lZGlhUXVlcnlPcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLm1pbiAmJiAhb3B0aW9ucy5tYXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXQgbGVhc3Qgb25lIG9mIG1pbiBvciBtYXggbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVkaWFRdWVyeVBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKG9wdGlvbnMubWluKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMubWluID09PSAnbnVtYmVyJykge1xuICAgICAgICBtZWRpYVF1ZXJ5UGFydHMucHVzaChgKG1pbi13aWR0aDogJHtvcHRpb25zLm1pbn1weClgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lZGlhUXVlcnlQYXJ0cy5wdXNoKGAobWluLXdpZHRoOiAke3RoaXMuZ2V0QnJlYWtwb2ludFNpemUob3B0aW9ucy5taW4sICdtaW4nKX1weClgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5taW4gJiYgb3B0aW9ucy5tYXgpIHtcbiAgICAgIG1lZGlhUXVlcnlQYXJ0cy5wdXNoKCdhbmQnKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5tYXgpIHtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5tYXggPT09ICdudW1iZXInKSB7XG4gICAgICAgIG1lZGlhUXVlcnlQYXJ0cy5wdXNoKGAobWF4LXdpZHRoOiAke29wdGlvbnMubWF4fXB4KWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVkaWFRdWVyeVBhcnRzLnB1c2goYChtYXgtd2lkdGg6ICR7dGhpcy5nZXRCcmVha3BvaW50U2l6ZShvcHRpb25zLm1heCwgJ21heCcpfXB4KWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtZWRpYVF1ZXJ5UGFydHMuam9pbignICcpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXJyZW50Vmlld3BvcnQoW2lzWHMsIGlzU20sIGlzTWQsIGlzTGcsIGlzWGwsIGlzMlhsXTogW1xuICAgIGJvb2xlYW4sXG4gICAgYm9vbGVhbixcbiAgICBib29sZWFuLFxuICAgIGJvb2xlYW4sXG4gICAgYm9vbGVhbixcbiAgICBib29sZWFuLFxuICBdKTogQnJlYWtwb2ludCB7XG4gICAgaWYgKGlzWHMpIHtcbiAgICAgIHJldHVybiAneHMnO1xuICAgIH0gZWxzZSBpZiAoaXNTbSkge1xuICAgICAgcmV0dXJuICdzbSc7XG4gICAgfSBlbHNlIGlmIChpc01kKSB7XG4gICAgICByZXR1cm4gJ21kJztcbiAgICB9IGVsc2UgaWYgKGlzTGcpIHtcbiAgICAgIHJldHVybiAnbGcnO1xuICAgIH0gZWxzZSBpZiAoaXNYbCkge1xuICAgICAgcmV0dXJuICd4bCc7XG4gICAgfSBlbHNlIGlmIChpczJYbCkge1xuICAgICAgcmV0dXJuICcyeGwnO1xuICAgIH1cblxuICAgIHJldHVybiAneHMnO1xuICB9XG59XG4iXX0=
|
|
244
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxlQUFlLEVBRWYsT0FBTyxFQUNQLGFBQWEsRUFDYixZQUFZLEVBQ1osUUFBUSxFQUNSLEdBQUcsRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQVdsRSxNQUFNLE9BQU8sZUFBZTtJQWtCMUIsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZ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QUF3TWxCO0lBREMsSUFBSSxFQUFFOzs7O3dEQWlCTjtBQWdCTztJQUxQLElBQUksQ0FBQztRQUNKLFFBQVEsRUFBRSxDQUFDLENBQXlCLEVBQUUsRUFBRTtZQUN0QyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUN6QyxDQUFDO0tBQ0YsQ0FBQzs7Ozt1REE2QkQ7NEZBbFFVLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzBFQXVNQyxpQkFBaUIsTUFnQ1QsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBmaW5hbGl6ZSxcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgREVGQVVMVF9WSUVXUE9SVF9DT05GSUcsIFZJRVdQT1JUX0NPTkZJRyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNZW1vIH0gZnJvbSAnLi4vZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBCcmVha3BvaW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZXF1YWwgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuL3Jlc2l6ZS1vYnNlcnZlci5zZXJ2aWNlJztcbmltcG9ydCB7IEJ1aWxkTWVkaWFRdWVyeU9wdGlvbnMgfSBmcm9tICcuL3ZpZXdwb3J0LnR5cGVzJztcblxuaW50ZXJmYWNlIFNpemUge1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdwb3J0U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc2l6ZU9ic2VydmVyU2VydmljZSA9IGluamVjdChSZXNpemVPYnNlcnZlclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3cG9ydENvbmZpZyA9IGluamVjdChWSUVXUE9SVF9DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSkgfHwgREVGQVVMVF9WSUVXUE9SVF9DT05GSUc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JyZWFrcG9pbnRPYnNlcnZlciA9IGluamVjdChCcmVha3BvaW50T2JzZXJ2ZXIpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdwb3J0TW9uaXRvclN0b3AkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfaXNWaWV3cG9ydE1vbml0b3JFbmFibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfaXNYcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfaXNTbSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfaXNNZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfaXNMZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfaXNYbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfaXMyWGwkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHJpdmF0ZSBfdmlld3BvcnRTaXplJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2l6ZSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIF9zY3JvbGxiYXJTaXplJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2l6ZSB8IG51bGw+KG51bGwpO1xuXG4gIGdldCBpc1hzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNYcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXNYcygpIHtcbiAgICByZXR1cm4gdGhpcy5faXNYcyQudmFsdWU7XG4gIH1cblxuICBnZXQgaXNTbSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU20kLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzU20oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU20kLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGlzTWQkKCkge1xuICAgIHJldHVybiB0aGlzLl9pc01kJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBpc01kKCkge1xuICAgIHJldHVybiB0aGlzLl9pc01kJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBpc0xnJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNMZyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXNMZygpIHtcbiAgICByZXR1cm4gdGhpcy5faXNMZyQudmFsdWU7XG4gIH1cblxuICBnZXQgaXNYbCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzWGwkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzWGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzWGwkLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGlzMlhsJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXMyWGwkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzMlhsKCkge1xuICAgIHJldHVybiB0aGlzLl9pczJYbCQudmFsdWU7XG4gIH1cblxuICBnZXQgdmlld3BvcnRTaXplJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld3BvcnRTaXplJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCB2aWV3cG9ydFNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdwb3J0U2l6ZSQudmFsdWU7XG4gIH1cblxuICBnZXQgc2Nyb2xsYmFyU2l6ZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Njcm9sbGJhclNpemUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHNjcm9sbGJhclNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Njcm9sbGJhclNpemUkLnZhbHVlO1xuICB9XG5cbiAgY3VycmVudFZpZXdwb3J0JCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuaXNYcyQsIHRoaXMuaXNTbSQsIHRoaXMuaXNNZCQsIHRoaXMuaXNMZyQsIHRoaXMuaXNYbCQsIHRoaXMuaXMyWGwkXSkucGlwZShcbiAgICBtYXAoKHZhbCkgPT4gdGhpcy5nZXRDdXJyZW50Vmlld3BvcnQodmFsKSksXG4gICAgZGVib3VuY2VUaW1lKDApLFxuICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG5cbiAgZ2V0IGN1cnJlbnRWaWV3cG9ydCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDdXJyZW50Vmlld3BvcnQoW3RoaXMuaXNYcywgdGhpcy5pc1NtLCB0aGlzLmlzTWQsIHRoaXMuaXNMZywgdGhpcy5pc1hsLCB0aGlzLmlzMlhsXSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9vYnNlcnZlRGVmYXVsdEJyZWFrcG9pbnRzKCk7XG4gIH1cblxuICBvYnNlcnZlKG9wdGlvbnM6IHsgbWluPzogbnVtYmVyIHwgQnJlYWtwb2ludDsgbWF4PzogbnVtYmVyIHwgQnJlYWtwb2ludCB9KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgbWVkaWFRdWVyeSA9IHRoaXMuX2J1aWxkTWVkaWFRdWVyeShvcHRpb25zKTtcblxuICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShtZWRpYVF1ZXJ5KS5waXBlKFxuICAgICAgbWFwKCh4KSA9PiB4Lm1hdGNoZXMpLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICApO1xuICB9XG5cbiAgaXNNYXRjaGVkKG9wdGlvbnM6IHsgbWluPzogbnVtYmVyIHwgQnJlYWtwb2ludDsgbWF4PzogbnVtYmVyIHwgQnJlYWtwb2ludCB9KTogYm9vbGVhbiB7XG4gICAgY29uc3QgbWVkaWFRdWVyeSA9IHRoaXMuX2J1aWxkTWVkaWFRdWVyeShvcHRpb25zKTtcblxuICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKG1lZGlhUXVlcnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgc2l6ZSBDU1MgdmFyaWFibGVzIHRvIHRoZSBkb2N1bWVudEVsZW1lbnQgaW4gcGl4ZWxzLlxuICAgKiAtIGAtLWV0LXZ3YDogdmlld3BvcnQgd2lkdGggZXhjbHVkaW5nIHNjcm9sbGJhciB3aWR0aFxuICAgKiAtIGAtLWV0LXZoYDogdmlld3BvcnQgaGVpZ2h0IGV4Y2x1ZGluZyBzY3JvbGxiYXIgaGVpZ2h0XG4gICAqIC0gYC0tZXQtc3dgOiBzY3JvbGxiYXIgd2lkdGhcbiAgICogLSBgLS1ldC1zaGA6IHNjcm9sbGJhciBoZWlnaHRcbiAgICovXG4gIG1vbml0b3JWaWV3cG9ydCgpIHtcbiAgICBpZiAodGhpcy5faXNWaWV3cG9ydE1vbml0b3JFbmFibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLl9pc1ZpZXdwb3J0TW9uaXRvckVuYWJsZWQgPSB0cnVlO1xuXG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlXG4gICAgICAub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSBlWzBdO1xuXG4gICAgICAgICAgaWYgKCFlbnRyeSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3Qgd2lkdGggPSBlbnRyeS5jb250ZW50UmVjdC53aWR0aDtcbiAgICAgICAgICBjb25zdCBoZWlnaHQgPSBlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQ7XG5cbiAgICAgICAgICBjb25zdCBvYmogPSB7IHdpZHRoLCBoZWlnaHQgfTtcblxuICAgICAgICAgIGlmIChlcXVhbChvYmosIHRoaXMuX3ZpZXdwb3J0U2l6ZSQudmFsdWUpKSByZXR1cm47XG5cbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tZXQtdncnLCBgJHtvYmoud2lkdGh9cHhgKTtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tZXQtdmgnLCBgJHtvYmouaGVpZ2h0fXB4YCk7XG5cbiAgICAgICAgICB0aGlzLl92aWV3cG9ydFNpemUkLm5leHQob2JqKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXQtdncnKTtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXQtdmgnKTtcblxuICAgICAgICAgIHRoaXMuX3ZpZXdwb3J0U2l6ZSQubmV4dChudWxsKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl92aWV3cG9ydE1vbml0b3JTdG9wJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBjb25zdCBzY3JvbGxiYXJSdWxlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHNjcm9sbGJhclJ1bGVyLnN0eWxlLndpZHRoID0gJzEwMHB4JztcbiAgICBzY3JvbGxiYXJSdWxlci5zdHlsZS5oZWlnaHQgPSAnMTAwcHgnO1xuICAgIHNjcm9sbGJhclJ1bGVyLnN0eWxlLm92ZXJmbG93ID0gJ3Njcm9sbCc7XG4gICAgc2Nyb2xsYmFyUnVsZXIuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIHNjcm9sbGJhclJ1bGVyLnN0eWxlLnRvcCA9ICctOTk5OXB4JztcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcm9sbGJhclJ1bGVyKTtcblxuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyU2VydmljZVxuICAgICAgLm9ic2VydmUoc2Nyb2xsYmFyUnVsZXIpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSBlWzBdO1xuXG4gICAgICAgICAgaWYgKCFlbnRyeSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3Qgc2l6ZSA9IGVudHJ5LmNvbnRlbnRSZWN0LndpZHRoO1xuXG4gICAgICAgICAgY29uc3Qgb2JqID0geyB3aWR0aDogMTAwIC0gc2l6ZSwgaGVpZ2h0OiAxMDAgLSBzaXplIH07XG5cbiAgICAgICAgICBpZiAoZXF1YWwob2JqLCB0aGlzLl9zY3JvbGxiYXJTaXplJC52YWx1ZSkpIHJldHVybjtcblxuICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1ldC1zdycsIGAke29iai53aWR0aH1weGApO1xuICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1ldC1zaCcsIGAke29iai5oZWlnaHR9cHhgKTtcblxuICAgICAgICAgIHRoaXMuX3Njcm9sbGJhclNpemUkLm5leHQob2JqKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHNjcm9sbGJhclJ1bGVyKTtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXQtdncnKTtcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXQtdmgnKTtcblxuICAgICAgICAgIHRoaXMuX3Njcm9sbGJhclNpemUkLm5leHQobnVsbCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fdmlld3BvcnRNb25pdG9yU3RvcCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgdW5tb25pdG9yVmlld3BvcnQoKSB7XG4gICAgdGhpcy5fdmlld3BvcnRNb25pdG9yU3RvcCQubmV4dCgpO1xuICAgIHRoaXMuX2lzVmlld3BvcnRNb25pdG9yRW5hYmxlZCA9IGZhbHNlO1xuICB9XG5cbiAgQE1lbW8oKVxuICBnZXRCcmVha3BvaW50U2l6ZSh0eXBlOiBCcmVha3BvaW50LCBvcHRpb246ICdtaW4nIHwgJ21heCcpIHtcbiAgICBjb25zdCBpbmRleCA9IG9wdGlvbiA9PT0gJ21pbicgPyAwIDogMTtcbiAgICBjb25zdCBzaXplID0gdGhpcy5fdmlld3BvcnRDb25maWcuYnJlYWtwb2ludHNbdHlwZV1baW5kZXhdO1xuXG4gICAgaWYgKHNpemUgPT09IEluZmluaXR5IHx8IHNpemUgPT09IDApIHtcbiAgICAgIHJldHVybiBzaXplO1xuICAgIH1cblxuICAgIGlmIChvcHRpb24gPT09ICdtaW4nKSB7XG4gICAgICByZXR1cm4gc2l6ZTtcbiAgICB9XG5cbiAgICAvLyBEdWUgdG8gc2NhbGluZywgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSB2aWV3cG9ydCBtYXkgYmUgYSBkZWNpbWFsIG51bWJlci5cbiAgICAvLyBFZy4gb24gV2luZG93cyAxMSB3aXRoIDE1MCUgc2NhbGluZywgdGhlIHZpZXdwb3J0IHNpemUgbWF5IGJlIDE1MzUuMzNweFxuICAgIC8vIGFuZCB0aHVzIG5vdCBtYXRjaGluZyBhbnkgb2YgdGhlIGRlZmF1bHQgYnJlYWtwb2ludHMuXG4gICAgcmV0dXJuIHNpemUgKyAwLjk7XG4gIH1cblxuICBwcml2YXRlIF9vYnNlcnZlRGVmYXVsdEJyZWFrcG9pbnRzKCkge1xuICAgIHRoaXMub2JzZXJ2ZSh7IG1heDogJ3hzJyB9KS5zdWJzY3JpYmUodGhpcy5faXNYcyQpO1xuICAgIHRoaXMub2JzZXJ2ZSh7IG1pbjogJ3NtJywgbWF4OiAnc20nIH0pLnN1YnNjcmliZSh0aGlzLl9pc1NtJCk7XG4gICAgdGhpcy5vYnNlcnZlKHsgbWluOiAnbWQnLCBtYXg6ICdtZCcgfSkuc3Vic2NyaWJlKHRoaXMuX2lzTWQkKTtcbiAgICB0aGlzLm9ic2VydmUoeyBtaW46ICdsZycsIG1heDogJ2xnJyB9KS5zdWJzY3JpYmUodGhpcy5faXNMZyQpO1xuICAgIHRoaXMub2JzZXJ2ZSh7IG1pbjogJ3hsJywgbWF4OiAneGwnIH0pLnN1YnNjcmliZSh0aGlzLl9pc1hsJCk7XG4gICAgdGhpcy5vYnNlcnZlKHsgbWluOiAnMnhsJyB9KS5zdWJzY3JpYmUodGhpcy5faXMyWGwkKTtcbiAgfVxuXG4gIEBNZW1vKHtcbiAgICByZXNvbHZlcjogKHY6IEJ1aWxkTWVkaWFRdWVyeU9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBgJHt2Lm1pbiA/PyAnJ30tJHt2Lm1heCA/PyAnJ31gO1xuICAgIH0sXG4gIH0pXG4gIHByaXZhdGUgX2J1aWxkTWVkaWFRdWVyeShvcHRpb25zOiBCdWlsZE1lZGlhUXVlcnlPcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLm1pbiAmJiAhb3B0aW9ucy5tYXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXQgbGVhc3Qgb25lIG9mIG1pbiBvciBtYXggbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVkaWFRdWVyeVBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKG9wdGlvbnMubWluKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMubWluID09PSAnbnVtYmVyJykge1xuICAgICAgICBtZWRpYVF1ZXJ5UGFydHMucHVzaChgKG1pbi13aWR0aDogJHtvcHRpb25zLm1pbn1weClgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lZGlhUXVlcnlQYXJ0cy5wdXNoKGAobWluLXdpZHRoOiAke3RoaXMuZ2V0QnJlYWtwb2ludFNpemUob3B0aW9ucy5taW4sICdtaW4nKX1weClgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5taW4gJiYgb3B0aW9ucy5tYXgpIHtcbiAgICAgIG1lZGlhUXVlcnlQYXJ0cy5wdXNoKCdhbmQnKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5tYXgpIHtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5tYXggPT09ICdudW1iZXInKSB7XG4gICAgICAgIG1lZGlhUXVlcnlQYXJ0cy5wdXNoKGAobWF4LXdpZHRoOiAke29wdGlvbnMubWF4fXB4KWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVkaWFRdWVyeVBhcnRzLnB1c2goYChtYXgtd2lkdGg6ICR7dGhpcy5nZXRCcmVha3BvaW50U2l6ZShvcHRpb25zLm1heCwgJ21heCcpfXB4KWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtZWRpYVF1ZXJ5UGFydHMuam9pbignICcpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXJyZW50Vmlld3BvcnQoW2lzWHMsIGlzU20sIGlzTWQsIGlzTGcsIGlzWGwsIGlzMlhsXTogW1xuICAgIGJvb2xlYW4sXG4gICAgYm9vbGVhbixcbiAgICBib29sZWFuLFxuICAgIGJvb2xlYW4sXG4gICAgYm9vbGVhbixcbiAgICBib29sZWFuLFxuICBdKTogQnJlYWtwb2ludCB7XG4gICAgaWYgKGlzWHMpIHtcbiAgICAgIHJldHVybiAneHMnO1xuICAgIH0gZWxzZSBpZiAoaXNTbSkge1xuICAgICAgcmV0dXJuICdzbSc7XG4gICAgfSBlbHNlIGlmIChpc01kKSB7XG4gICAgICByZXR1cm4gJ21kJztcbiAgICB9IGVsc2UgaWYgKGlzTGcpIHtcbiAgICAgIHJldHVybiAnbGcnO1xuICAgIH0gZWxzZSBpZiAoaXNYbCkge1xuICAgICAgcmV0dXJuICd4bCc7XG4gICAgfSBlbHNlIGlmIChpczJYbCkge1xuICAgICAgcmV0dXJuICcyeGwnO1xuICAgIH1cblxuICAgIHJldHVybiAneHMnO1xuICB9XG59XG4iXX0=
|
|
@@ -174,6 +174,7 @@ export class SelectionModel {
|
|
|
174
174
|
this._options$.next([]);
|
|
175
175
|
this._valueBinding$.next(null);
|
|
176
176
|
this._keyBinding$.next(null);
|
|
177
|
+
this._disabledBinding$.next(null);
|
|
177
178
|
this._labelBinding$.next(null);
|
|
178
179
|
this._allowMultiple$.next(false);
|
|
179
180
|
}
|
|
@@ -310,6 +311,11 @@ export class SelectionModel {
|
|
|
310
311
|
}
|
|
311
312
|
return getObjectProperty(option, fnOrPropertyPath);
|
|
312
313
|
}
|
|
314
|
+
execFnOrGetOptionPropertyNullable(option, fnOrPropertyPath) {
|
|
315
|
+
if (!fnOrPropertyPath || !isObject(option))
|
|
316
|
+
return null;
|
|
317
|
+
return this.execFnOrGetOptionProperty(option, fnOrPropertyPath);
|
|
318
|
+
}
|
|
313
319
|
getOptionProperty(option, propertyPath) {
|
|
314
320
|
if (!propertyPath || !isObject(option))
|
|
315
321
|
return option;
|
|
@@ -320,12 +326,7 @@ export class SelectionModel {
|
|
|
320
326
|
return this.getOption(optionKey, this.keyBinding, this.selection) !== undefined;
|
|
321
327
|
}
|
|
322
328
|
isDisabled(option) {
|
|
323
|
-
|
|
324
|
-
return false;
|
|
325
|
-
const result = this.execFnOrGetOptionProperty(option, this.disabledBinding);
|
|
326
|
-
if (result === option)
|
|
327
|
-
return false;
|
|
328
|
-
return !!result;
|
|
329
|
+
return !!this.execFnOrGetOptionPropertyNullable(option, this.disabledBinding);
|
|
329
330
|
}
|
|
330
331
|
getFilteredOptions(filter = this.filter, options = this.options) {
|
|
331
332
|
if (!filter)
|
|
@@ -383,4 +384,4 @@ export class SelectionModel {
|
|
|
383
384
|
}
|
|
384
385
|
}
|
|
385
386
|
}
|
|
386
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGVsLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvc2VsZWN0aW9uLW1vZGVsLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUNMLGVBQWUsRUFHZixhQUFhLEVBQ2IsTUFBTSxFQUNOLEdBQUcsRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYyxFQUFvQyxFQUFFO0lBQ3BFLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUM7QUFDckQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEdBQTRCLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDdkUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUxQyxJQUFJLENBQUMsY0FBYztRQUFFLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXRDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFOUIsSUFBSSxLQUFLLEdBQVksR0FBRyxDQUFDO0lBRXpCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMs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LElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWhILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxuICBTdWJzY3JpcHRpb24sXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3RhcnRXaXRoLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUeXBlZFF1ZXJ5TGlzdCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IHN3aXRjaFF1ZXJ5TGlzdENoYW5nZXMgfSBmcm9tICcuL2FuZ3VsYXIudXRpbHMnO1xuaW1wb3J0IHsgY3JlYXRlRGVzdHJveSB9IGZyb20gJy4vZGVzdHJveS51dGlscyc7XG5cbmNvbnN0IGlzT2JqZWN0ID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbDtcbn07XG5cbmNvbnN0IGdldE9iamVjdFByb3BlcnR5ID0gKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHByb3A6IHN0cmluZykgPT4ge1xuICBjb25zdCBoYXNEb3ROb3RhdGlvbiA9IHByb3AuaW5jbHVkZXMoJy4nKTtcblxuICBpZiAoIWhhc0RvdE5vdGF0aW9uKSByZXR1cm4gb2JqW3Byb3BdO1xuXG4gIGNvbnN0IHByb3BzID0gcHJvcC5zcGxpdCgnLicpO1xuXG4gIGxldCB2YWx1ZTogdW5rbm93biA9IG9iajtcblxuICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcHMpIHtcbiAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIHZhbHVlID0gdmFsdWVbcHJvcF07XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59O1xuXG5leHBvcnQgdHlwZSBTZWxlY3Rpb25Nb2RlbFR5cGVzID0gc3RyaW5nIHwgbnVtYmVyIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmtub3duO1xuZXhwb3J0IHR5cGUgU2VsZWN0aW9uTW9kZWxQcm9wZXJ0eVBhdGggPSBzdHJpbmc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBTZWxlY3Rpb25Nb2RlbE9wdGlvblZhbHVlRm48VCBleHRlbmRzIFNlbGVjdGlvbk1vZGVsVHlwZXMgPSBhbnk+ID0gKG9wdGlvbjogVCkgPT4gdW5rbm93bjtcblxuLyoqXG4gKiBZb3UgY2FuIHVzZSBhIHByb3BlcnR5IHBhdGggb3IgYSBmdW5jdGlvbiB0byBnZXQgdGhlIHZhbHVlIG9mIGFuIG9wdGlvbi4gVGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBhcyAqKmxpZ2h0d2VpZ2h0IGFzIHBvc3NpYmxlKiogYXMgaXQgd2lsbCBiZSBjYWxsZWQgKiphIGxvdCoqLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBQcm9wZXJ0eSBwYXRoXG4gKiBcImlkXCIgLy8gb3B0aW9uLmlkXG4gKiBcInVzZXIubmFtZVwiIC8vIG9wdGlvbi51c2VyLm5hbWVcbiAqXG4gKiAvLyBGdW5jdGlvblxuICogKG9wdGlvbikgPT4gb3B0aW9uLmlkIC8vIG9wdGlvbi5pZFxuICogKG9wdGlvbikgPT4gb3B0aW9uLnVzZXIubmFtZSAvLyBvcHRpb24udXNlci5uYW1lXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBTZWxlY3Rpb25Nb2RlbEJpbmRpbmc8VCBleHRlbmRzIFNlbGVjdGlvbk1vZGVsVHlwZXMgPSBhbnk+ID1cbiAgfCBTZWxlY3Rpb25Nb2RlbFByb3BlcnR5UGF0aFxuICB8IFNlbGVjdGlvbk1vZGVsT3B0aW9uVmFsdWVGbjxUPjtcblxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbk1vZGVsPFQgZXh0ZW5kcyBTZWxlY3Rpb25Nb2RlbFR5cGVzID0gdW5rbm93bj4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGNyZWF0ZURlc3Ryb3koKTtcbiAgcHJpdmF0ZSBfbGFzdFNlbGVjdGlvblNldFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgZ2V0IHNlbGVjdGlvbiQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbiQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbiAgZ2V0IHNlbGVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uJC52YWx1ZTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3Rpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KFtdKTtcblxuICBnZXQgb3B0aW9ucyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zJC52YWx1ZTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VFtdPihbXSk7XG4gIHJlYWRvbmx5IG9wdGlvbnNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLm9wdGlvbnMkKTtcblxuICBnZXQgdmFsdWVCaW5kaW5nJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVCaW5kaW5nJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBnZXQgdmFsdWVCaW5kaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZUJpbmRpbmckLnZhbHVlO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZhbHVlQmluZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlbGVjdGlvbk1vZGVsQmluZGluZzxUPiB8IG51bGw+KG51bGwpO1xuXG4gIGdldCBrZXlCaW5kaW5nJCgpIHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5fa2V5QmluZGluZyQsIHRoaXMudmFsdWVCaW5kaW5nJF0pLnBpcGUoXG4gICAgICBtYXAoKFtrZXlCaW5kaW5nLCB2YWx1ZUJpbmRpbmddKSA9PiBrZXlCaW5kaW5nIHx8IHZhbHVlQmluZGluZyksXG4gICAgKTtcbiAgfVxuICBnZXQga2V5QmluZGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5fa2V5QmluZGluZyQudmFsdWUgfHwgdGhpcy52YWx1ZUJpbmRpbmc7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfa2V5QmluZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlbGVjdGlvbk1vZGVsQmluZGluZzxUPiB8IG51bGw+KG51bGwpO1xuXG4gIGdldCBsYWJlbEJpbmRpbmckKCkge1xuICAgIHJldHVybiB0aGlzLl9sYWJlbEJpbmRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIGdldCBsYWJlbEJpbmRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsQmluZGluZyQudmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfbGFiZWxCaW5kaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VsZWN0aW9uTW9kZWxCaW5kaW5nPFQ+IHwgbnVsbD4obnVsbCk7XG5cbiAgZ2V0IGRpc2FibGVkQmluZGluZyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkQmluZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbiAgZ2V0IGRpc2FibGVkQmluZGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWRCaW5kaW5nJC52YWx1ZTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNhYmxlZEJpbmRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWxlY3Rpb25Nb2RlbEJpbmRpbmc8VD4gfCBudWxsPihudWxsKTtcblxuICBnZXQgYWxsb3dNdWx0aXBsZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FsbG93TXVsdGlwbGUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIGdldCBhbGxvd011bHRpcGxlKCkge1xuICAgIHJldHVybiB0aGlzLl9hbGxvd011bHRpcGxlJC52YWx1ZTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9hbGxvd011bHRpcGxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGdldCBmaWx0ZXIkKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXIkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIGdldCBmaWx0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlciQudmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgcmVhZG9ubHkgdmFsdWUkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3Rpb24kLCB0aGlzLnZhbHVlQmluZGluZyQsIHRoaXMuYWxsb3dNdWx0aXBsZSRdKS5waXBlKFxuICAgIG1hcCgoW3NlbGVjdGlvbiwgdmFsdWVCaW5kaW5nLCBhbGxvd011bHRpcGxlXSkgPT4ge1xuICAgICAgaWYgKGFsbG93TXVsdGlwbGUpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi5tYXAoKG9wdGlvbikgPT4gdGhpcy5leGVjRm5PckdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgdmFsdWVCaW5kaW5nKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IFtvcHRpb25dID0gc2VsZWN0aW9uO1xuXG4gICAgICBpZiAoIW9wdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgICAgIHJldHVybiB0aGlzLmV4ZWNGbk9yR2V0T3B0aW9uUHJvcGVydHkob3B0aW9uLCB2YWx1ZUJpbmRpbmcpO1xuICAgIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IGZpbHRlcmVkT3B0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9wdGlvbnMkLCB0aGlzLmZpbHRlciQsIHRoaXMubGFiZWxCaW5kaW5nJF0pLnBpcGUoXG4gICAgbWFwKChbb3B0aW9ucywgZmlsdGVyXSkgPT4gdGhpcy5nZXRGaWx0ZXJlZE9wdGlvbnMoZmlsdGVyLCBvcHRpb25zKSksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zQW5kU2VsZWN0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX29wdGlvbnMkLCB0aGlzLl9zZWxlY3Rpb24kXSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5hbGxvd011bHRpcGxlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuYWxsb3dNdWx0aXBsZSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgW29wdGlvbl0gPSB0aGlzLnNlbGVjdGlvbjtcblxuICAgICAgICAgIGlmICghb3B0aW9uKSByZXR1cm47XG5cbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihbb3B0aW9uXSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHNldFNlbGVjdGlvbihzZWxlY3Rpb246IFQgfCBUW10pIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoc2VsZWN0aW9uKSkge1xuICAgICAgc2VsZWN0aW9uID0gW3NlbGVjdGlvbl07XG4gICAgfVxuXG4gICAgdGhpcy5fc2VsZWN0aW9uJC5uZXh0KHNlbGVjdGlvbik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldFNlbGVjdGlvbkZyb21WYWx1ZSh2YWx1ZTogdW5rbm93bikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdmFsdWUubWFwKCh2KSA9PiB0aGlzLmdldE9wdGlvbkJ5VmFsdWUodikpLmZpbHRlcigodik6IHYgaXMgVCA9PiB2ICE9PSB1bmRlZmluZWQpO1xuXG4gICAgICB0aGlzLnNldFNlbGVjdGlvbihzZWxlY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldE9wdGlvbkJ5VmFsdWUodmFsdWUpO1xuXG4gICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0U2VsZWN0aW9uRnJvbVZhbHVlJCh2YWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMuX2xhc3RTZWxlY3Rpb25TZXRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9sYXN0U2VsZWN0aW9uU2V0U3Vic2NyaXB0aW9uID0gdGhpcy5vcHRpb25zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIGZpbHRlcigobykgPT4gISFvLmxlbmd0aCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLnNldFNlbGVjdGlvbkZyb21WYWx1ZSh2YWx1ZSkpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgc2V0VmFsdWVCaW5kaW5nKGZuT3JQcm9wZXJ0eVBhdGg6IFNlbGVjdGlvbk1vZGVsQmluZGluZzxUPiB8IG51bGwpIHtcbiAgICB0aGlzLl92YWx1ZUJpbmRpbmckLm5leHQoZm5PclByb3BlcnR5UGF0aCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldEtleUJpbmRpbmcoZm5PclByb3BlcnR5UGF0aDogU2VsZWN0aW9uTW9kZWxCaW5kaW5nPFQ+IHwgbnVsbCkge1xuICAgIHRoaXMuX2tleUJpbmRpbmckLm5leHQoZm5PclByb3BlcnR5UGF0aCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldExhYmVsQmluZGluZyhmbk9yUHJvcGVydHlQYXRoOiBTZWxlY3Rpb25Nb2RlbEJpbmRpbmc8VD4gfCBudWxsKSB7XG4gICAgdGhpcy5fbGFiZWxCaW5kaW5nJC5uZXh0KGZuT3JQcm9wZXJ0eVBhdGgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXREaXNhYmxlZEJpbmRpbmcoZm5PclByb3BlcnR5UGF0aDogU2VsZWN0aW9uTW9kZWxCaW5kaW5nPFQ+IHwgbnVsbCkge1xuICAgIHRoaXMuX2Rpc2FibGVkQmluZGluZyQubmV4dChmbk9yUHJvcGVydHlQYXRoKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0T3B0aW9ucyhvcHRpb25zOiBUW10pIHtcbiAgICB0aGlzLl9vcHRpb25zJC5uZXh0KG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRPcHRpb25zRnJvbVF1ZXJ5TGlzdChxdWVyeUxpc3Q6IFR5cGVkUXVlcnlMaXN0PFQ+KSB7XG4gICAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KHRoaXMuc2V0T3B0aW9uc0Zyb21RdWVyeUxpc3QpO1xuXG4gICAgcXVlcnlMaXN0LmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgocXVlcnlMaXN0KSxcbiAgICAgICAgdGFwKChsaXN0KSA9PiB0aGlzLnNldE9wdGlvbnMobGlzdC50b0FycmF5KCkpKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldE9wdGlvbnNGcm9tUXVlcnlMaXN0JChxdWVyeUxpc3QkOiBPYnNlcnZhYmxlPFR5cGVkUXVlcnlMaXN0PFQ+IHwgbnVsbCB8IHVuZGVmaW5lZD4pIHtcbiAgICBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQodGhpcy5zZXRPcHRpb25zRnJvbVF1ZXJ5TGlzdCQpO1xuXG4gICAgcXVlcnlMaXN0JFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaFF1ZXJ5TGlzdENoYW5nZXMoKSxcbiAgICAgICAgdGFwKChsaXN0KSA9PiB0aGlzLnNldE9wdGlvbnMobGlzdD8udG9BcnJheSgpIHx8IFtdKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRBbGxvd011bHRpcGxlKGFsbG93TXVsdGlwbGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9hbGxvd011bHRpcGxlJC5uZXh0KGFsbG93TXVsdGlwbGUpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRGaWx0ZXIoZmlsdGVyOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgY29uc3Qgc2FuaXRpemVkRmlsdGVyID0gZmlsdGVyPy50cmltKCkgfHwgJyc7XG5cbiAgICB0aGlzLl9maWx0ZXIkLm5leHQoc2FuaXRpemVkRmlsdGVyKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbiQubmV4dChbXSk7XG4gICAgdGhpcy5fb3B0aW9ucyQubmV4dChbXSk7XG4gICAgdGhpcy5fdmFsdWVCaW5kaW5nJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2tleUJpbmRpbmckLm5leHQobnVsbCk7XG4gICAgdGhpcy5fbGFiZWxCaW5kaW5nJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2FsbG93TXVsdGlwbGUkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgZ2V0T3B0aW9uQnlWYWx1ZSQodmFsdWU6IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9uc0FuZFNlbGVjdGlvbiQucGlwZShtYXAoKCkgPT4gdGhpcy5nZXRPcHRpb25CeVZhbHVlKHZhbHVlKSkpO1xuICB9XG5cbiAgZ2V0T3B0aW9uQnlMYWJlbCQobGFiZWw6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zQW5kU2VsZWN0aW9uJC5waXBlKG1hcCgoKSA9PiB0aGlzLmdldE9wdGlvbkJ5TGFiZWwobGFiZWwpKSk7XG4gIH1cblxuICBnZXRPcHRpb25CeUtleSQoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9uc0FuZFNlbGVjdGlvbiQucGlwZShtYXAoKCkgPT4gdGhpcy5nZXRPcHRpb25CeUtleShrZXkpKSk7XG4gIH1cblxuICBpc1NlbGVjdGVkJChvcHRpb246IFQpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uJC5waXBlKG1hcCgoKSA9PiB0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSkpO1xuICB9XG5cbiAgaXNEaXNhYmxlZCQob3B0aW9uOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnNBbmRTZWxlY3Rpb24kLnBpcGUobWFwKCgpID0+IHRoaXMuaXNEaXNhYmxlZChvcHRpb24pKSk7XG4gIH1cblxuICBnZXRMYWJlbCQob3B0aW9uOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxCaW5kaW5nJC5waXBlKG1hcCgobGFiZWxCaW5kaW5nKSA9PiB0aGlzLmV4ZWNGbk9yR2V0T3B0aW9uUHJvcGVydHkob3B0aW9uLCBsYWJlbEJpbmRpbmcpKSk7XG4gIH1cblxuICBnZXRWYWx1ZSQob3B0aW9uOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVCaW5kaW5nJC5waXBlKG1hcCgodmFsdWVCaW5kaW5nKSA9PiB0aGlzLmV4ZWNGbk9yR2V0T3B0aW9uUHJvcGVydHkob3B0aW9uLCB2YWx1ZUJpbmRpbmcpKSk7XG4gIH1cblxuICBnZXRLZXkkKG9wdGlvbjogVCkge1xuICAgIHJldHVybiB0aGlzLmtleUJpbmRpbmckLnBpcGUobWFwKChrZXlCaW5kaW5nKSA9PiB0aGlzLmV4ZWNGbk9yR2V0T3B0aW9uUHJvcGVydHkob3B0aW9uLCBrZXlCaW5kaW5nKSkpO1xuICB9XG5cbiAgZ2V0T3B0aW9uQnlWYWx1ZSh2YWx1ZTogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbih2YWx1ZSwgdGhpcy52YWx1ZUJpbmRpbmcpO1xuICB9XG5cbiAgZ2V0T3B0aW9uQnlMYWJlbChsYWJlbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9uKGxhYmVsLCB0aGlzLmxhYmVsQmluZGluZyk7XG4gIH1cblxuICBnZXRPcHRpb25CeUtleShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbihrZXksIHRoaXMua2V5QmluZGluZyk7XG4gIH1cblxuICBnZXRPcHRpb24oXG4gICAgdmFsdWU6IHVua25vd24sXG4gICAgcHJvcGVydHlQYXRoOiBTZWxlY3Rpb25Nb2RlbEJpbmRpbmc8VD4gfCBudWxsID0gbnVsbCxcbiAgICBvcHRpb25zID0gWy4uLnRoaXMub3B0aW9ucywgLi4udGhpcy5zZWxlY3Rpb25dLFxuICApIHtcbiAgICBpZiAoIXByb3BlcnR5UGF0aCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24gPT09IHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IHtcbiAgICAgIGlmICghaXNPYmplY3Qob3B0aW9uKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICByZXR1cm4gdGhpcy5leGVjRm5PckdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgcHJvcGVydHlQYXRoKSA9PT0gdmFsdWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXRPcHRpb25CeUluZGV4KGluZGV4OiBudW1iZXIsIG9wdGlvbnMgPSB0aGlzLmdldEZpbHRlcmVkT3B0aW9ucygpKTogVCB8IG51bGwge1xuICAgIHJldHVybiBvcHRpb25zW2luZGV4XSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0T3B0aW9uQnlPZmZzZXQoXG4gICAgb2Zmc2V0OiBudW1iZXIsXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBjb25maWc6IHsgbG9vcD86IGJvb2xlYW47IGNsYW1wPzogYm9vbGVhbjsgc2tpcERpc2FibGVkPzogYm9vbGVhbjsgb3B0aW9ucz86IFRbXSB9ID0geyBjbGFtcDogdHJ1ZSB9LFxuICApOiBUIHwgbnVsbCB7XG4gICAgY29uc3QgeyBsb29wLCBjbGFtcCwgc2tpcERpc2FibGVkLCBvcHRpb25zID0gdGhpcy5nZXRGaWx0ZXJlZE9wdGlvbnMoKSB9ID0gY29uZmlnO1xuXG4gICAgY29uc3QgbmV3SW5kZXggPSBpbmRleCArIG9mZnNldDtcbiAgICBjb25zdCByZW1haW5pbmdPZmZzZXQgPSBuZXdJbmRleCAqIC0xO1xuXG4gICAgbGV0IG9wdGlvblJlc3VsdDogVCB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKG5ld0luZGV4IDwgMCkge1xuICAgICAgaWYgKGxvb3ApIHtcbiAgICAgICAgb3B0aW9uUmVzdWx0ID0gdGhpcy5nZXRPcHRpb25CeU9mZnNldChyZW1haW5pbmdPZmZzZXQsIG9wdGlvbnMubGVuZ3RoIC0gMSwgY29uZmlnKTtcbiAgICAgIH0gZWxzZSBpZiAoY2xhbXApIHtcbiAgICAgICAgb3B0aW9uUmVzdWx0ID0gdGhpcy5nZXRGaXJzdE9wdGlvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9uUmVzdWx0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5ld0luZGV4ID49IG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICBpZiAobG9vcCkge1xuICAgICAgICBvcHRpb25SZXN1bHQgPSB0aGlzLmdldE9wdGlvbkJ5T2Zmc2V0KHJlbWFpbmluZ09mZnNldCwgMCwgY29uZmlnKTtcbiAgICAgIH0gZWxzZSBpZiAoY2xhbXApIHtcbiAgICAgICAgb3B0aW9uUmVzdWx0ID0gdGhpcy5nZXRMYXN0T3B0aW9uKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25SZXN1bHQgPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25SZXN1bHQgPSB0aGlzLmdldE9wdGlvbkJ5SW5kZXgobmV3SW5kZXgpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25SZXN1bHQgJiYgc2tpcERpc2FibGVkICYmIHRoaXMuaXNEaXNhYmxlZChvcHRpb25SZXN1bHQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25CeU9mZnNldChvZmZzZXQsIG5ld0luZGV4LCBjb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiBvcHRpb25SZXN1bHQ7XG4gIH1cblxuICBnZXRGaXJzdE9wdGlvbihvcHRpb25zID0gdGhpcy5nZXRGaWx0ZXJlZE9wdGlvbnMoKSk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25CeUluZGV4KDAsIG9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0TGFzdE9wdGlvbihvcHRpb25zID0gdGhpcy5nZXRGaWx0ZXJlZE9wdGlvbnMoKSk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25CeUluZGV4KG9wdGlvbnMubGVuZ3RoIC0gMSwgb3B0aW9ucyk7XG4gIH1cblxuICBnZXRPcHRpb25JbmRleChvcHRpb246IFQsIG9wdGlvbnMgPSB0aGlzLmdldEZpbHRlcmVkT3B0aW9ucygpKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRLZXkob3B0aW9uKTtcbiAgICBjb25zdCBpbmRleCA9IG9wdGlvbnMuZmluZEluZGV4KChvKSA9PiB0aGlzLmdldEtleShvKSA9PT0ga2V5KTtcblxuICAgIHJldHVybiBpbmRleCA9PT0gLTEgPyBudWxsIDogaW5kZXg7XG4gIH1cblxuICBnZXROb25NdWx0aXBsZVNlbGVjdGVkT3B0aW9uKCk6IFQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5hbGxvd011bHRpcGxlKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvblswXSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0Tm9uTXVsdGlwbGVTZWxlY3RlZE9wdGlvbkluZGV4KCkge1xuICAgIGlmICh0aGlzLmFsbG93TXVsdGlwbGUpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3Qgb3B0ID0gdGhpcy5nZXROb25NdWx0aXBsZVNlbGVjdGVkT3B0aW9uKCk7XG5cbiAgICBpZiAoIW9wdCkgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25JbmRleChvcHQpO1xuICB9XG5cbiAgZ2V0Tm9uTXVsdGlwbGVPcHRpb25CeU9mZnNldEZyb21TZWxlY3RlZChcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBjb25maWc6IHsgbG9vcD86IGJvb2xlYW47IGNsYW1wPzogYm9vbGVhbiB9ID0geyBjbGFtcDogdHJ1ZSB9LFxuICApIHtcbiAgICBpZiAodGhpcy5hbGxvd011bHRpcGxlKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXROb25NdWx0aXBsZVNlbGVjdGVkT3B0aW9uSW5kZXgoKTtcblxuICAgIGlmIChpbmRleCA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25CeU9mZnNldChpbmRleCwgb2Zmc2V0LCBjb25maWcpO1xuICB9XG5cbiAgZ2V0TGFiZWwob3B0aW9uOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMuZXhlY0ZuT3JHZXRPcHRpb25Qcm9wZXJ0eShvcHRpb24sIHRoaXMubGFiZWxCaW5kaW5nKTtcbiAgfVxuXG4gIGdldFZhbHVlKG9wdGlvbjogVCkge1xuICAgIHJldHVybiB0aGlzLmV4ZWNGbk9yR2V0T3B0aW9uUHJvcGVydHkob3B0aW9uLCB0aGlzLnZhbHVlQmluZGluZyk7XG4gIH1cblxuICBnZXRLZXkob3B0aW9uOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMuZXhlY0ZuT3JHZXRPcHRpb25Qcm9wZXJ0eShvcHRpb24sIHRoaXMua2V5QmluZGluZyk7XG4gIH1cblxuICBnZXREaXNhYmxlZChvcHRpb246IFQpIHtcbiAgICByZXR1cm4gdGhpcy5leGVjRm5PckdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgdGhpcy5kaXNhYmxlZEJpbmRpbmcpO1xuICB9XG5cbiAgZXhlY0ZuT3JHZXRPcHRpb25Qcm9wZXJ0eShvcHRpb246IFQsIGZuT3JQcm9wZXJ0eVBhdGg6IFNlbGVjdGlvbk1vZGVsQmluZGluZzxUPiB8IG51bGwpIHtcbiAgICBpZiAoIWZuT3JQcm9wZXJ0eVBhdGggfHwgIWlzT2JqZWN0KG9wdGlvbikpIHJldHVybiBvcHRpb247XG5cbiAgICBpZiAodHlwZW9mIGZuT3JQcm9wZXJ0eVBhdGggPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBmbk9yUHJvcGVydHlQYXRoKG9wdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldE9iamVjdFByb3BlcnR5KG9wdGlvbiwgZm5PclByb3BlcnR5UGF0aCk7XG4gIH1cblxuICBnZXRPcHRpb25Qcm9wZXJ0eShvcHRpb246IFQsIHByb3BlcnR5UGF0aDogc3RyaW5nIHwgbnVsbCkge1xuICAgIGlmICghcHJvcGVydHlQYXRoIHx8ICFpc09iamVjdChvcHRpb24pKSByZXR1cm4gb3B0aW9uO1xuXG4gICAgcmV0dXJuIGdldE9iamVjdFByb3BlcnR5KG9wdGlvbiwgcHJvcGVydHlQYXRoKTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQob3B0aW9uOiBUKSB7XG4gICAgY29uc3Qgb3B0aW9uS2V5ID0gdGhpcy5leGVjRm5PckdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgdGhpcy5rZXlCaW5kaW5nKTtcblxuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbihvcHRpb25LZXksIHRoaXMua2V5QmluZGluZywgdGhpcy5zZWxlY3Rpb24pICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBpc0Rpc2FibGVkKG9wdGlvbjogVCkge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZEJpbmRpbmcpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZXhlY0ZuT3JHZXRPcHRpb25Qcm9wZXJ0eShvcHRpb24sIHRoaXMuZGlzYWJsZWRCaW5kaW5nKTtcblxuICAgIGlmIChyZXN1bHQgPT09IG9wdGlvbikgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuICEhcmVzdWx0O1xuICB9XG5cbiAgZ2V0RmlsdGVyZWRPcHRpb25zKGZpbHRlciA9IHRoaXMuZmlsdGVyLCBvcHRpb25zID0gdGhpcy5vcHRpb25zKSB7XG4gICAgaWYgKCFmaWx0ZXIpIHJldHVybiBvcHRpb25zO1xuXG4gICAgY29uc3Qgc3BsaXRGaWx0ZXIgPSBmaWx0ZXIuc3BsaXQoJyAnKS5maWx0ZXIoKGYpID0+IGYpO1xuXG4gICAgcmV0dXJuIG9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5nZXRMYWJlbChvcHRpb24pO1xuXG4gICAgICBpZiAoIWxhYmVsIHx8IHR5cGVvZiBsYWJlbCAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcblxuICAgICAgY29uc3Qgc3BsaXRMYWJlbCA9IGxhYmVsLnNwbGl0KCcgJykuZmlsdGVyKChsKSA9PiBsKTtcblxuICAgICAgcmV0dXJuIHNwbGl0RmlsdGVyLmV2ZXJ5KChmKSA9PiBzcGxpdExhYmVsLnNvbWUoKGwpID0+IGwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpKSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRTZWxlY3RlZE9wdGlvbihvcHRpb246IFQpIHtcbiAgICBpZiAodGhpcy5hbGxvd011bHRpcGxlKSB7XG4gICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKG9wdGlvbikpIHJldHVybjtcblxuICAgICAgdGhpcy5fc2VsZWN0aW9uJC5uZXh0KFsuLi50aGlzLnNlbGVjdGlvbiwgb3B0aW9uXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbiQubmV4dChbb3B0aW9uXSk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlU2VsZWN0ZWRPcHRpb24ob3B0aW9uOiBUKSB7XG4gICAgY29uc3Qgb3B0aW9uS2V5ID0gdGhpcy5leGVjRm5PckdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgdGhpcy5rZXlCaW5kaW5nKTtcblxuICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKG9wdGlvbikpIHJldHVybjtcblxuICAgIHRoaXMuX3NlbGVjdGlvbiQubmV4dChcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmZpbHRlcigoc2VsZWN0ZWRPcHRpb24pID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5leGVjRm5PckdldE9wdGlvblByb3BlcnR5KHNlbGVjdGVkT3B0aW9uLCB0aGlzLmtleUJpbmRpbmcpO1xuXG4gICAgICAgIHJldHVybiBrZXkgIT09IG9wdGlvbktleTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBjbGVhclNlbGVjdGVkT3B0aW9ucygpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb24kLm5leHQoW10pO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0ZWRPcHRpb24ob3B0aW9uOiBUKSB7XG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkT3B0aW9uKG9wdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkU2VsZWN0ZWRPcHRpb24ob3B0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvLyBGSVhNRTogVG9nZ2xlIHNob3VsZCByZXNwZWN0IGRpc2FibGVkIGJpbmRpbmcgaWYgaXQgZXhpc3RzXG4gIHRvZ2dsZUFsbFNlbGVjdGVkT3B0aW9ucygpIHtcbiAgICBjb25zdCBmaWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmdldEZpbHRlcmVkT3B0aW9ucygpO1xuICAgIGNvbnN0IHVuc2VsZWN0ZWRPcHRpb25zID0gZmlsdGVyZWRPcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PiAhdGhpcy5pc1NlbGVjdGVkKG9wdGlvbikpO1xuXG4gICAgaWYgKHVuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdW5zZWxlY3RlZE9wdGlvbnMuZmlsdGVyKChvKSA9PiAhdGhpcy5zZWxlY3Rpb24uc29tZSgocykgPT4gdGhpcy5nZXRLZXkocykgPT09IHRoaXMuZ2V0S2V5KG8pKSk7XG5cbiAgICAgIHRoaXMuX3NlbGVjdGlvbiQubmV4dChbLi4udGhpcy5zZWxlY3Rpb24sIC4uLnNlbGVjdGlvbl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbi5maWx0ZXIoKHMpID0+ICFmaWx0ZXJlZE9wdGlvbnMuc29tZSgobykgPT4gdGhpcy5nZXRLZXkobykgPT09IHRoaXMuZ2V0S2V5KHMpKSk7XG5cbiAgICAgIHRoaXMuX3NlbGVjdGlvbiQubmV4dChzZWxlY3Rpb24pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
387
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGVsLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvc2VsZWN0aW9uLW1vZGVsLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUNMLGVBQWUsRUFHZixhQUFhLEVBQ2IsTUFBTSxFQUNOLEdBQUcsRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYyxFQUFvQyxFQUFFO0lBQ3BFLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUM7QUFDckQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEdBQTRCLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDdkUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUxQyxJQUFJLENBQUMsY0FBYztRQUFFLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXRDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFOUIsSUFBSSxLQUFLLEdBQVksR0FBRyxDQUFDO0lBRXpCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFdkMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNyQjtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBeUJGLE1BQU0sT0FBTyxjQUFjO0lBSXpCLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBR0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFJRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUNELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUdELElBQUksV0FBVztRQUNiLE9BQU8sYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2hFLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLElBQUksWUFBWSxDQUFDLENBQ2hFLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ3RELENBQUM7SUFHRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUNELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUdELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFDRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFHRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFDRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFHRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQXdCRDtRQTNGaUIsY0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBQ3JDLGtDQUE2QixHQUF3QixJQUFJLENBQUM7UUFRakQsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQVEzQyxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUM7UUFDakQsa0JBQWEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBUWhDLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQWtDLElBQUksQ0FBQyxDQUFDO1FBVTVFLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQWtDLElBQUksQ0FBQyxDQUFDO1FBUTFFLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQWtDLElBQUksQ0FBQyxDQUFDO1FBUTVFLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFrQyxJQUFJLENBQUMsQ0FBQztRQVEvRSxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBUXRELGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUVuRCxXQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUYsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDL0MsSUFBSSxhQUFhLEVBQUU7Z0JBQ2pCLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO2FBQ3hGO1lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQztZQUUzQixJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUV6QixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVPLHFCQUFnQixHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQy9GLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQ3BFLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQy9DLENBQUM7UUFFZSwwQkFBcUIsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBR3pGLElBQUksQ0FBQyxjQUFjO2FBQ2hCLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxJQUFJLENBQUMsYUFBYTtnQkFBRSxPQUFPO1lBRS9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBRWhDLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU87WUFFcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLEVBQ0Ysa0JBQWtCLEVBQUUsQ0FDckI7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQWtCO1FBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzdCLFNBQVMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFakMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBYztRQUNsQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFVLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7WUFFcEcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM5QjthQUFNO1lBQ0wsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRS9DLElBQUksU0FBUyxFQUFFO2dCQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDOUI7U0FDRjtJQUNILENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFjO1FBQ25DLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUVsRCxJQUFJLENBQUMsNkJBQTZCLEdBQUcsSUFBSSxDQUFDLFFBQVE7YUFDL0MsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFDekIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUM1QyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1I7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsZUFBZSxDQUFDLGdCQUFpRDtRQUMvRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTNDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGFBQWEsQ0FBQyxnQkFBaUQ7UUFDN0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUV6QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxlQUFlLENBQUMsZ0JBQWlEO1FBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFM0MsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsZ0JBQWlEO1FBQ2xFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU5QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBWTtRQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU3QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxTQUE0QjtRQUNsRCx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUV2RCxTQUFTLENBQUMsT0FBTzthQUNkLElBQUksQ0FDSCxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQ3BCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUM5QyxrQkFBa0IsRUFBRSxDQUNyQjthQUNBLFNBQVMsRUFBRSxDQUFDO1FBRWYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsVUFBNEQ7UUFDbkYsd0JBQXdCLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFeEQsVUFBVTthQUNQLElBQUksQ0FDSCxzQkFBc0IsRUFBRSxFQUN4QixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQ3JELGtCQUFrQixFQUFFLENBQ3JCO2FBQ0EsU0FBUyxFQUFFLENBQUM7UUFFZixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxhQUFzQjtRQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV6QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBcUI7UUFDN0IsTUFBTSxlQUFlLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUU3QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWM7UUFDOUIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFhO1FBQzdCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVc7UUFDekIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQVM7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFTO1FBQ25CLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFTO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RyxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQVM7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlHLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBUztRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYztRQUM3QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsY0FBYyxDQUFDLEdBQVc7UUFDeEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFNBQVMsQ0FDUCxLQUFjLEVBQ2QsZUFBZ0QsSUFBSSxFQUNwRCxPQUFPLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRTlDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLENBQUM7U0FDbkQ7UUFFRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUVwQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUssS0FBSyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWEsRUFBRSxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1FBQ2pFLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsaUJBQWlCLENBQ2YsTUFBYyxFQUNkLEtBQWEsRUFDYixTQUFxRixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7UUFFcEcsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUVsRixNQUFNLFFBQVEsR0FBRyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ2hDLE1BQU0sZUFBZSxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUV0QyxJQUFJLFlBQVksR0FBYSxJQUFJLENBQUM7UUFFbEMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFO1lBQ2hCLElBQUksSUFBSSxFQUFFO2dCQUNSLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQ3BGO2lCQUFNLElBQUksS0FBSyxFQUFFO2dCQUNoQixZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3RDO2lCQUFNO2dCQUNMLFlBQVksR0FBRyxJQUFJLENBQUM7YUFDckI7U0FDRjthQUFNLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDckMsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQ25FO2lCQUFNLElBQUksS0FBSyxFQUFFO2dCQUNoQixZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3JDO2lCQUFNO2dCQUNMLFlBQVksR0FBRyxJQUFJLENBQUM7YUFDckI7U0FDRjthQUFNO1lBQ0wsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNoRDtRQUVELElBQUksWUFBWSxJQUFJLFlBQVksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2pFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekQ7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7UUFDaEQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtRQUMvQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQVMsRUFBRSxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1FBQzNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUUvRCxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUVELDRCQUE0QjtRQUMxQixJQUFJLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFcEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNuQyxDQUFDO0lBRUQsaUNBQWlDO1FBQy9CLElBQUksSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPLElBQUksQ0FBQztRQUVwQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUVoRCxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXRCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsd0NBQXdDLENBQ3RDLE1BQWMsRUFDZCxTQUE4QyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7UUFFN0QsSUFBSSxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXBDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO1FBRXZELElBQUksS0FBSyxLQUFLLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUVoQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxRQUFRLENBQUMsTUFBUztRQUNoQixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBUztRQUNoQixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBUztRQUNkLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFTO1FBQ25CLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELHlCQUF5QixDQUFDLE1BQVMsRUFBRSxnQkFBaUQ7UUFDcEYsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sTUFBTSxDQUFDO1FBRTFELElBQUksT0FBTyxnQkFBZ0IsS0FBSyxVQUFVLEVBQUU7WUFDMUMsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqQztRQUVELE9BQU8saUJBQWlCLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGlDQUFpQyxDQUFDLE1BQVMsRUFBRSxnQkFBaUQ7UUFDNUYsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXhELE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFTLEVBQUUsWUFBMkI7UUFDdEQsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUV0RCxPQUFPLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQVM7UUFDbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFMUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxTQUFTLENBQUM7SUFDbEYsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFTO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU87UUFDN0QsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLE9BQU8sQ0FBQztRQUU1QixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVwQyxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFFdEQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXJELE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBUztRQUN6QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztnQkFBRSxPQUFPO1lBRXBDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDcEQ7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxNQUFTO1FBQzVCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU87UUFFckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFNUUsT0FBTyxHQUFHLEtBQUssU0FBUyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxNQUFTO1FBQzVCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUNMLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCw2REFBNkQ7SUFDN0Qsd0JBQXdCO1FBQ3RCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2xELE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFdkYsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7WUFDNUIsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWxILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUMxRDthQUFNO1lBQ0wsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVoSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgU3Vic2NyaXB0aW9uLFxuICBjb21iaW5lTGF0ZXN0LFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG4gIHN0YXJ0V2l0aCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHlwZWRRdWVyeUxpc3QgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBzd2l0Y2hRdWVyeUxpc3RDaGFuZ2VzIH0gZnJvbSAnLi9hbmd1bGFyLnV0aWxzJztcbmltcG9ydCB7IGNyZWF0ZURlc3Ryb3kgfSBmcm9tICcuL2Rlc3Ryb3kudXRpbHMnO1xuXG5jb25zdCBpc09iamVjdCA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGw7XG59O1xuXG5jb25zdCBnZXRPYmplY3RQcm9wZXJ0eSA9IChvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwcm9wOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgaGFzRG90Tm90YXRpb24gPSBwcm9wLmluY2x1ZGVzKCcuJyk7XG5cbiAgaWYgKCFoYXNEb3ROb3RhdGlvbikgcmV0dXJuIG9ialtwcm9wXTtcblxuICBjb25zdCBwcm9wcyA9IHByb3Auc3BsaXQoJy4nKTtcblxuICBsZXQgdmFsdWU6IHVua25vd24gPSBvYmo7XG5cbiAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BzKSB7XG4gICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICB2YWx1ZSA9IHZhbHVlW3Byb3BdO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuZXhwb3J0IHR5cGUgU2VsZWN0aW9uTW9kZWxUeXBlcyA9IHN0cmluZyB8IG51bWJlciB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5rbm93bjtcbmV4cG9ydCB0eXBlIFNlbGVjdGlvbk1vZGVsUHJvcGVydHlQYXRoID0gc3RyaW5nO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IHR5cGUgU2VsZWN0aW9uTW9kZWxPcHRpb25WYWx1ZUZuPFQgZXh0ZW5kcyBTZWxlY3Rpb25Nb2RlbFR5cGVzID0gYW55PiA9IChvcHRpb246IFQpID0+IHVua25vd247XG5cbi8qKlxuICogWW91IGNhbiB1c2UgYSBwcm9wZXJ0eSBwYXRoIG9yIGEgZnVuY3Rpb24gdG8gZ2V0IHRoZSB2YWx1ZSBvZiBhbiBvcHRpb24uIFRoZSBmdW5jdGlvbiBzaG91bGQgYmUgYXMgKipsaWdodHdlaWdodCBhcyBwb3NzaWJsZSoqIGFzIGl0IHdpbGwgYmUgY2FsbGVkICoqYSBsb3QqKi5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUHJvcGVydHkgcGF0aFxuICogXCJpZFwiIC8vIG9wdGlvbi5pZFxuICogXCJ1c2VyLm5hbWVcIiAvLyBvcHRpb24udXNlci5uYW1lXG4gKlxuICogLy8gRnVuY3Rpb25cbiAqIChvcHRpb24pID0+IG9wdGlvbi5pZCAvLyBvcHRpb24uaWRcbiAqIChvcHRpb24pID0+IG9wdGlvbi51c2VyLm5hbWUgLy8gb3B0aW9uLnVzZXIubmFtZVxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IHR5cGUgU2VsZWN0aW9uTW9kZWxCaW5kaW5nPFQgZXh0ZW5kcyBTZWxlY3Rpb25Nb2RlbFR5cGVzID0gYW55PiA9XG4gIHwgU2VsZWN0aW9uTW9kZWxQcm9wZXJ0eVBhdGhcbiAgfCBTZWxlY3Rpb25Nb2RlbE9wdGlvblZhbHVlRm48VD47XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25Nb2RlbDxUIGV4dGVuZHMgU2VsZWN0aW9uTW9kZWxUeXBlcyA9IHVua25vd24+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG4gIHByaXZhdGUgX2xhc3RTZWxlY3Rpb25TZXRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIGdldCBzZWxlY3Rpb24kKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb24kLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIGdldCBzZWxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbiQudmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VFtdPihbXSk7XG5cbiAgZ2V0IG9wdGlvbnMkKCkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucyQudmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRbXT4oW10pO1xuICByZWFkb25seSBvcHRpb25zU2lnbmFsID0gdG9TaWduYWwodGhpcy5vcHRpb25zJCk7XG5cbiAgZ2V0IHZhbHVlQmluZGluZyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlQmluZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbiAgZ2V0IHZhbHVlQmluZGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVCaW5kaW5nJC52YWx1ZTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF92YWx1ZUJpbmRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWxlY3Rpb25Nb2RlbEJpbmRpbmc8VD4gfCBudWxsPihudWxsKTtcblxuICBnZXQga2V5QmluZGluZyQoKSB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2tleUJpbmRpbmckLCB0aGlzLnZhbHVlQmluZGluZyRdKS5waXBlKFxuICAgICAgbWFwKChba2V5QmluZGluZywgdmFsdWVCaW5kaW5nXSkgPT4ga2V5QmluZGluZyB8fCB2YWx1ZUJpbmRpbmcpLFxuICAgICk7XG4gIH1cbiAgZ2V0IGtleUJpbmRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2tleUJpbmRpbmckLnZhbHVlIHx8IHRoaXMudmFsdWVCaW5kaW5nO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2tleUJpbmRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWxlY3Rpb25Nb2RlbEJpbmRpbmc8VD4gfCBudWxsPihudWxsKTtcblxuICBnZXQgbGFiZWxCaW5kaW5nJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxCaW5kaW5nJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBnZXQgbGFiZWxCaW5kaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9sYWJlbEJpbmRpbmckLnZhbHVlO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xhYmVsQmluZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlbGVjdGlvbk1vZGVsQmluZGluZzxUPiB8IG51bGw+KG51bGwpO1xuXG4gIGdldCBkaXNhYmxlZEJpbmRpbmckKCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZEJpbmRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIGdldCBkaXNhYmxlZEJpbmRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkQmluZGluZyQudmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzYWJsZWRCaW5kaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VsZWN0aW9uTW9kZWxCaW5kaW5nPFQ+IHwgbnVsbD4obnVsbCk7XG5cbiAgZ2V0IGFsbG93TXVsdGlwbGUkKCkge1xuICAgIHJldHVybiB0aGlzLl9hbGxvd011bHRpcGxlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBnZXQgYWxsb3dNdWx0aXBsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWxsb3dNdWx0aXBsZSQudmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYWxsb3dNdWx0aXBsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBnZXQgZmlsdGVyJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBnZXQgZmlsdGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXIkLnZhbHVlO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHJlYWRvbmx5IHZhbHVlJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuc2VsZWN0aW9uJCwgdGhpcy52YWx1ZUJpbmRpbmckLCB0aGlzLmFsbG93TXVsdGlwbGUkXSkucGlwZShcbiAgICBtYXAoKFtzZWxlY3Rpb24sIHZhbHVlQmluZGluZywgYWxsb3dNdWx0aXBsZV0pID0+IHtcbiAgICAgIGlmIChhbGxvd011bHRpcGxlKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3Rpb24ubWFwKChvcHRpb24pID0+IHRoaXMuZXhlY0ZuT3JHZXRPcHRpb25Qcm9wZXJ0eShvcHRpb24sIHZhbHVlQmluZGluZykpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBbb3B0aW9uXSA9IHNlbGVjdGlvbjtcblxuICAgICAgaWYgKCFvcHRpb24pIHJldHVybiBudWxsO1xuXG4gICAgICByZXR1cm4gdGhpcy5leGVjRm5PckdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgdmFsdWVCaW5kaW5nKTtcbiAgICB9KSxcbiAgKTtcblxuICByZWFkb25seSBmaWx0ZXJlZE9wdGlvbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5vcHRpb25zJCwgdGhpcy5maWx0ZXIkLCB0aGlzLmxhYmVsQmluZGluZyRdKS5waXBlKFxuICAgIG1hcCgoW29wdGlvbnMsIGZpbHRlcl0pID0+IHRoaXMuZ2V0RmlsdGVyZWRPcHRpb25zKGZpbHRlciwgb3B0aW9ucykpLFxuICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9uc0FuZFNlbGVjdGlvbiQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9vcHRpb25zJCwgdGhpcy5fc2VsZWN0aW9uJF0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYWxsb3dNdWx0aXBsZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmFsbG93TXVsdGlwbGUpIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IFtvcHRpb25dID0gdGhpcy5zZWxlY3Rpb247XG5cbiAgICAgICAgICBpZiAoIW9wdGlvbikgcmV0dXJuO1xuXG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oW29wdGlvbl0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uOiBUIHwgVFtdKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHNlbGVjdGlvbikpIHtcbiAgICAgIHNlbGVjdGlvbiA9IFtzZWxlY3Rpb25dO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbGVjdGlvbiQubmV4dChzZWxlY3Rpb24pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRTZWxlY3Rpb25Gcm9tVmFsdWUodmFsdWU6IHVua25vd24pIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHZhbHVlLm1hcCgodikgPT4gdGhpcy5nZXRPcHRpb25CeVZhbHVlKHYpKS5maWx0ZXIoKHYpOiB2IGlzIFQgPT4gdiAhPT0gdW5kZWZpbmVkKTtcblxuICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRPcHRpb25CeVZhbHVlKHZhbHVlKTtcblxuICAgICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihzZWxlY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFNlbGVjdGlvbkZyb21WYWx1ZSQodmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9sYXN0U2VsZWN0aW9uU2V0U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fbGFzdFNlbGVjdGlvblNldFN1YnNjcmlwdGlvbiA9IHRoaXMub3B0aW9ucyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoKG8pID0+ICEhby5sZW5ndGgpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRTZWxlY3Rpb25Gcm9tVmFsdWUodmFsdWUpKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHNldFZhbHVlQmluZGluZyhmbk9yUHJvcGVydHlQYXRoOiBTZWxlY3Rpb25Nb2RlbEJpbmRpbmc8VD4gfCBudWxsKSB7XG4gICAgdGhpcy5fdmFsdWVCaW5kaW5nJC5uZXh0KGZuT3JQcm9wZXJ0eVBhdGgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRLZXlCaW5kaW5nKGZuT3JQcm9wZXJ0eVBhdGg6IFNlbGVjdGlvbk1vZGVsQmluZGluZzxUPiB8IG51bGwpIHtcbiAgICB0aGlzLl9rZXlCaW5kaW5nJC5uZXh0KGZuT3JQcm9wZXJ0eVBhdGgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRMYWJlbEJpbmRpbmcoZm5PclByb3BlcnR5UGF0aDogU2VsZWN0aW9uTW9kZWxCaW5kaW5nPFQ+IHwgbnVsbCkge1xuICAgIHRoaXMuX2xhYmVsQmluZGluZyQubmV4dChmbk9yUHJvcGVydHlQYXRoKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRCaW5kaW5nKGZuT3JQcm9wZXJ0eVBhdGg6IFNlbGVjdGlvbk1vZGVsQmluZGluZzxUPiB8IG51bGwpIHtcbiAgICB0aGlzLl9kaXNhYmxlZEJpbmRpbmckLm5leHQoZm5PclByb3BlcnR5UGF0aCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldE9wdGlvbnMob3B0aW9uczogVFtdKSB7XG4gICAgdGhpcy5fb3B0aW9ucyQubmV4dChvcHRpb25zKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0T3B0aW9uc0Zyb21RdWVyeUxpc3QocXVlcnlMaXN0OiBUeXBlZFF1ZXJ5TGlzdDxUPikge1xuICAgIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCh0aGlzLnNldE9wdGlvbnNGcm9tUXVlcnlMaXN0KTtcblxuICAgIHF1ZXJ5TGlzdC5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHF1ZXJ5TGlzdCksXG4gICAgICAgIHRhcCgobGlzdCkgPT4gdGhpcy5zZXRPcHRpb25zKGxpc3QudG9BcnJheSgpKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRPcHRpb25zRnJvbVF1ZXJ5TGlzdCQocXVlcnlMaXN0JDogT2JzZXJ2YWJsZTxUeXBlZFF1ZXJ5TGlzdDxUPiB8IG51bGwgfCB1bmRlZmluZWQ+KSB7XG4gICAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KHRoaXMuc2V0T3B0aW9uc0Zyb21RdWVyeUxpc3QkKTtcblxuICAgIHF1ZXJ5TGlzdCRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hRdWVyeUxpc3RDaGFuZ2VzKCksXG4gICAgICAgIHRhcCgobGlzdCkgPT4gdGhpcy5zZXRPcHRpb25zKGxpc3Q/LnRvQXJyYXkoKSB8fCBbXSkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0QWxsb3dNdWx0aXBsZShhbGxvd011bHRpcGxlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fYWxsb3dNdWx0aXBsZSQubmV4dChhbGxvd011bHRpcGxlKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0RmlsdGVyKGZpbHRlcjogc3RyaW5nIHwgbnVsbCkge1xuICAgIGNvbnN0IHNhbml0aXplZEZpbHRlciA9IGZpbHRlcj8udHJpbSgpIHx8ICcnO1xuXG4gICAgdGhpcy5fZmlsdGVyJC5uZXh0KHNhbml0aXplZEZpbHRlcik7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb24kLm5leHQoW10pO1xuICAgIHRoaXMuX29wdGlvbnMkLm5leHQoW10pO1xuICAgIHRoaXMuX3ZhbHVlQmluZGluZyQubmV4dChudWxsKTtcbiAgICB0aGlzLl9rZXlCaW5kaW5nJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rpc2FibGVkQmluZGluZyQubmV4dChudWxsKTtcbiAgICB0aGlzLl9sYWJlbEJpbmRpbmckLm5leHQobnVsbCk7XG4gICAgdGhpcy5fYWxsb3dNdWx0aXBsZSQubmV4dChmYWxzZSk7XG4gIH1cblxuICBnZXRPcHRpb25CeVZhbHVlJCh2YWx1ZTogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zQW5kU2VsZWN0aW9uJC5waXBlKG1hcCgoKSA9PiB0aGlzLmdldE9wdGlvbkJ5VmFsdWUodmFsdWUpKSk7XG4gIH1cblxuICBnZXRPcHRpb25CeUxhYmVsJChsYWJlbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnNBbmRTZWxlY3Rpb24kLnBpcGUobWFwKCgpID0+IHRoaXMuZ2V0T3B0aW9uQnlMYWJlbChsYWJlbCkpKTtcbiAgfVxuXG4gIGdldE9wdGlvbkJ5S2V5JChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zQW5kU2VsZWN0aW9uJC5waXBlKG1hcCgoKSA9PiB0aGlzLmdldE9wdGlvbkJ5S2V5KGtleSkpKTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQkKG9wdGlvbjogVCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb24kLnBpcGUobWFwKCgpID0+IHRoaXMuaXNTZWxlY3RlZChvcHRpb24pKSk7XG4gIH1cblxuICBpc0Rpc2FibGVkJChvcHRpb246IFQpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9uc0FuZFNlbGVjdGlvbiQucGlwZShtYXAoKCkgPT4gdGhpcy5pc0Rpc2FibGVkKG9wdGlvbikpKTtcbiAgfVxuXG4gIGdldExhYmVsJChvcHRpb246IFQpIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbEJpbmRpbmckLnBpcGUobWFwKChsYWJlbEJpbmRpbmcpID0+IHRoaXMuZXhlY0ZuT3JHZXRPcHRpb25Qcm9wZXJ0eShvcHRpb24sIGxhYmVsQmluZGluZykpKTtcbiAgfVxuXG4gIGdldFZhbHVlJChvcHRpb246IFQpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZUJpbmRpbmckLnBpcGUobWFwKCh2YWx1ZUJpbmRpbmcpID0+IHRoaXMuZXhlY0ZuT3JHZXRPcHRpb25Qcm9wZXJ0eShvcHRpb24sIHZhbHVlQmluZGluZykpKTtcbiAgfVxuXG4gIGdldEtleSQob3B0aW9uOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMua2V5QmluZGluZyQucGlwZShtYXAoKGtleUJpbmRpbmcpID0+IHRoaXMuZXhlY0ZuT3JHZXRPcHRpb25Qcm9wZXJ0eShvcHRpb24sIGtleUJpbmRpbmcpKSk7XG4gIH1cblxuICBnZXRPcHRpb25CeVZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9uKHZhbHVlLCB0aGlzLnZhbHVlQmluZGluZyk7XG4gIH1cblxuICBnZXRPcHRpb25CeUxhYmVsKGxhYmVsOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRPcHRpb24obGFiZWwsIHRoaXMubGFiZWxCaW5kaW5nKTtcbiAgfVxuXG4gIGdldE9wdGlvbkJ5S2V5KGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9uKGtleSwgdGhpcy5rZXlCaW5kaW5nKTtcbiAgfVxuXG4gIGdldE9wdGlvbihcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICBwcm9wZXJ0eVBhdGg6IFNlbGVjdGlvbk1vZGVsQmluZGluZzxUPiB8IG51bGwgPSBudWxsLFxuICAgIG9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zLCAuLi50aGlzLnNlbGVjdGlvbl0sXG4gICkge1xuICAgIGlmICghcHJvcGVydHlQYXRoKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbiA9PT0gdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBvcHRpb25zLmZpbmQoKG9wdGlvbikgPT4ge1xuICAgICAgaWYgKCFpc09iamVjdChvcHRpb24pKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHJldHVybiB0aGlzLmV4ZWNGbk9yR2V0T3B0aW9uUHJvcGVydHkob3B0aW9uLCBwcm9wZXJ0eVBhdGgpID09PSB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldE9wdGlvbkJ5SW5kZXgoaW5kZXg6IG51bWJlciwgb3B0aW9ucyA9IHRoaXMuZ2V0RmlsdGVyZWRPcHRpb25zKCkpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIG9wdGlvbnNbaW5kZXhdIHx8IG51bGw7XG4gIH1cblxuICBnZXRPcHRpb25CeU9mZnNldChcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGNvbmZpZzogeyBsb29wPzogYm9vbGVhbjsgY2xhbXA/OiBib29sZWFuOyBza2lwRGlzYWJsZWQ/OiBib29sZWFuOyBvcHRpb25zPzogVFtdIH0gPSB7IGNsYW1wOiB0cnVlIH0sXG4gICk6IFQgfCBudWxsIHtcbiAgICBjb25zdCB7IGxvb3AsIGNsYW1wLCBza2lwRGlzYWJsZWQsIG9wdGlvbnMgPSB0aGlzLmdldEZpbHRlcmVkT3B0aW9ucygpIH0gPSBjb25maWc7XG5cbiAgICBjb25zdCBuZXdJbmRleCA9IGluZGV4ICsgb2Zmc2V0O1xuICAgIGNvbnN0IHJlbWFpbmluZ09mZnNldCA9IG5ld0luZGV4ICogLTE7XG5cbiAgICBsZXQgb3B0aW9uUmVzdWx0OiBUIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAobmV3SW5kZXggPCAwKSB7XG4gICAgICBpZiAobG9vcCkge1xuICAgICAgICBvcHRpb25SZXN1bHQgPSB0aGlzLmdldE9wdGlvbkJ5T2Zmc2V0KHJlbWFpbmluZ09mZnNldCwgb3B0aW9ucy5sZW5ndGggLSAxLCBjb25maWcpO1xuICAgICAgfSBlbHNlIGlmIChjbGFtcCkge1xuICAgICAgICBvcHRpb25SZXN1bHQgPSB0aGlzLmdldEZpcnN0T3B0aW9uKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25SZXN1bHQgPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmV3SW5kZXggPj0gb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGlmIChsb29wKSB7XG4gICAgICAgIG9wdGlvblJlc3VsdCA9IHRoaXMuZ2V0T3B0aW9uQnlPZmZzZXQocmVtYWluaW5nT2Zmc2V0LCAwLCBjb25maWcpO1xuICAgICAgfSBlbHNlIGlmIChjbGFtcCkge1xuICAgICAgICBvcHRpb25SZXN1bHQgPSB0aGlzLmdldExhc3RPcHRpb24oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvblJlc3VsdCA9IG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvblJlc3VsdCA9IHRoaXMuZ2V0T3B0aW9uQnlJbmRleChuZXdJbmRleCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvblJlc3VsdCAmJiBza2lwRGlzYWJsZWQgJiYgdGhpcy5pc0Rpc2FibGVkKG9wdGlvblJlc3VsdCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldE9wdGlvbkJ5T2Zmc2V0KG9mZnNldCwgbmV3SW5kZXgsIGNvbmZpZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvblJlc3VsdDtcbiAgfVxuXG4gIGdldEZpcnN0T3B0aW9uKG9wdGlvbnMgPSB0aGlzLmdldEZpbHRlcmVkT3B0aW9ucygpKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbkJ5SW5kZXgoMCwgb3B0aW9ucyk7XG4gIH1cblxuICBnZXRMYXN0T3B0aW9uKG9wdGlvbnMgPSB0aGlzLmdldEZpbHRlcmVkT3B0aW9ucygpKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbkJ5SW5kZXgob3B0aW9ucy5sZW5ndGggLSAxLCBvcHRpb25zKTtcbiAgfVxuXG4gIGdldE9wdGlvbkluZGV4KG9wdGlvbjogVCwgb3B0aW9ucyA9IHRoaXMuZ2V0RmlsdGVyZWRPcHRpb25zKCkpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEtleShvcHRpb24pO1xuICAgIGNvbnN0IGluZGV4ID0gb3B0aW9ucy5maW5kSW5kZXgoKG8pID0+IHRoaXMuZ2V0S2V5KG8pID09PSBrZXkpO1xuXG4gICAgcmV0dXJuIGluZGV4ID09PSAtMSA/IG51bGwgOiBpbmRleDtcbiAgfVxuXG4gIGdldE5vbk11bHRpcGxlU2VsZWN0ZWRPcHRpb24oKTogVCB8IG51bGwge1xuICAgIGlmICh0aGlzLmFsbG93TXVsdGlwbGUpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uWzBdIHx8IG51bGw7XG4gIH1cblxuICBnZXROb25NdWx0aXBsZVNlbGVjdGVkT3B0aW9uSW5kZXgoKSB7XG4gICAgaWYgKHRoaXMuYWxsb3dNdWx0aXBsZSkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBvcHQgPSB0aGlzLmdldE5vbk11bHRpcGxlU2VsZWN0ZWRPcHRpb24oKTtcblxuICAgIGlmICghb3B0KSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbkluZGV4KG9wdCk7XG4gIH1cblxuICBnZXROb25NdWx0aXBsZU9wdGlvbkJ5T2Zmc2V0RnJvbVNlbGVjdGVkKFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIGNvbmZpZzogeyBsb29wPzogYm9vbGVhbjsgY2xhbXA/OiBib29sZWFuIH0gPSB7IGNsYW1wOiB0cnVlIH0sXG4gICkge1xuICAgIGlmICh0aGlzLmFsbG93TXVsdGlwbGUpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldE5vbk11bHRpcGxlU2VsZWN0ZWRPcHRpb25JbmRleCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBudWxsKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiB0aGlzLmdldE9wdGlvbkJ5T2Zmc2V0KGluZGV4LCBvZmZzZXQsIGNvbmZpZyk7XG4gIH1cblxuICBnZXRMYWJlbChvcHRpb246IFQpIHtcbiAgICByZXR1cm4gdGhpcy5leGVjRm5PckdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgdGhpcy5sYWJlbEJpbmRpbmcpO1xuICB9XG5cbiAgZ2V0VmFsdWUob3B0aW9uOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMuZXhlY0ZuT3JHZXRPcHRpb25Qcm9wZXJ0eShvcHRpb24sIHRoaXMudmFsdWVCaW5kaW5nKTtcbiAgfVxuXG4gIGdldEtleShvcHRpb246IFQpIHtcbiAgICByZXR1cm4gdGhpcy5leGVjRm5PckdldE9wdGlvblByb3BlcnR5KG9wdGlvbiwgdGhpcy5rZXlCaW5kaW5nKTtcbiAgfVxuXG4gIGdldERpc2FibGVkKG9wdGlvbjogVCkge1xuICAgIHJldHVybiB0aGlzLmV4ZWNGbk9yR2V0T3B0aW9uUHJvcGVydHkob3B0aW9uLCB0aGlzLmRpc2FibGVkQmluZGluZyk7XG4gIH1cblxuICBleGVjRm5PckdldE9wdGlvblByb3BlcnR5KG9wdGlvbjogVCwgZm5PclByb3BlcnR5UGF0aDogU2VsZWN0aW9uTW9kZWxCaW5kaW5nPFQ+IHwgbnVsbCkge1xuICAgIGlmICghZm5PclByb3BlcnR5UGF0aCB8fCAhaXNPYmplY3Qob3B0aW9uKSkgcmV0dXJuIG9wdGlvbjtcblxuICAgIGlmICh0eXBlb2YgZm5PclByb3BlcnR5UGF0aCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGZuT3JQcm9wZXJ0eVBhdGgob3B0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0T2JqZWN0UHJvcGVydHkob3B0aW9uLCBmbk9yUHJvcGVydHlQYXRoKTtcbiAgfVxuXG4gIGV4ZWNGbk9yR2V0T3B0aW9uUHJvcGVydHlOdWxsYWJsZShvcHRpb246IFQsIGZuT3JQcm9wZXJ0eVBhdGg6IFNlbGVjdGlvbk1vZGVsQmluZGluZzxUPiB8IG51bGwpIHtcbiAgICBpZiAoIWZuT3JQcm9wZXJ0eVBhdGggfHwgIWlzT2JqZWN0KG9wdGlvbikpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhlY0ZuT3JHZXRPcHRpb25Qcm9wZXJ0eShvcHRpb24sIGZuT3JQcm9wZXJ0eVBhdGgpO1xuICB9XG5cbiAgZ2V0T3B0aW9uUHJvcGVydHkob3B0aW9uOiBULCBwcm9wZXJ0eVBhdGg6IHN0cmluZyB8IG51bGwpIHtcbiAgICBpZiAoIXByb3BlcnR5UGF0aCB8fCAhaXNPYmplY3Qob3B0aW9uKSkgcmV0dXJuIG9wdGlvbjtcblxuICAgIHJldHVybiBnZXRPYmplY3RQcm9wZXJ0eShvcHRpb24sIHByb3BlcnR5UGF0aCk7XG4gIH1cblxuICBpc1NlbGVjdGVkKG9wdGlvbjogVCkge1xuICAgIGNvbnN0IG9wdGlvbktleSA9IHRoaXMuZXhlY0ZuT3JHZXRPcHRpb25Qcm9wZXJ0eShvcHRpb24sIHRoaXMua2V5QmluZGluZyk7XG5cbiAgICByZXR1cm4gdGhpcy5nZXRPcHRpb24ob3B0aW9uS2V5LCB0aGlzLmtleUJpbmRpbmcsIHRoaXMuc2VsZWN0aW9uKSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaXNEaXNhYmxlZChvcHRpb246IFQpIHtcbiAgICByZXR1cm4gISF0aGlzLmV4ZWNGbk9yR2V0T3B0aW9uUHJvcGVydHlOdWxsYWJsZShvcHRpb24sIHRoaXMuZGlzYWJsZWRCaW5kaW5nKTtcbiAgfVxuXG4gIGdldEZpbHRlcmVkT3B0aW9ucyhmaWx0ZXIgPSB0aGlzLmZpbHRlciwgb3B0aW9ucyA9IHRoaXMub3B0aW9ucykge1xuICAgIGlmICghZmlsdGVyKSByZXR1cm4gb3B0aW9ucztcblxuICAgIGNvbnN0IHNwbGl0RmlsdGVyID0gZmlsdGVyLnNwbGl0KCcgJykuZmlsdGVyKChmKSA9PiBmKTtcblxuICAgIHJldHVybiBvcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IHRoaXMuZ2V0TGFiZWwob3B0aW9uKTtcblxuICAgICAgaWYgKCFsYWJlbCB8fCB0eXBlb2YgbGFiZWwgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGNvbnN0IHNwbGl0TGFiZWwgPSBsYWJlbC5zcGxpdCgnICcpLmZpbHRlcigobCkgPT4gbCk7XG5cbiAgICAgIHJldHVybiBzcGxpdEZpbHRlci5ldmVyeSgoZikgPT4gc3BsaXRMYWJlbC5zb21lKChsKSA9PiBsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKSkpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkU2VsZWN0ZWRPcHRpb24ob3B0aW9uOiBUKSB7XG4gICAgaWYgKHRoaXMuYWxsb3dNdWx0aXBsZSkge1xuICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZChvcHRpb24pKSByZXR1cm47XG5cbiAgICAgIHRoaXMuX3NlbGVjdGlvbiQubmV4dChbLi4udGhpcy5zZWxlY3Rpb24sIG9wdGlvbl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb24kLm5leHQoW29wdGlvbl0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVNlbGVjdGVkT3B0aW9uKG9wdGlvbjogVCkge1xuICAgIGNvbnN0IG9wdGlvbktleSA9IHRoaXMuZXhlY0ZuT3JHZXRPcHRpb25Qcm9wZXJ0eShvcHRpb24sIHRoaXMua2V5QmluZGluZyk7XG5cbiAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZChvcHRpb24pKSByZXR1cm47XG5cbiAgICB0aGlzLl9zZWxlY3Rpb24kLm5leHQoXG4gICAgICB0aGlzLnNlbGVjdGlvbi5maWx0ZXIoKHNlbGVjdGVkT3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZXhlY0ZuT3JHZXRPcHRpb25Qcm9wZXJ0eShzZWxlY3RlZE9wdGlvbiwgdGhpcy5rZXlCaW5kaW5nKTtcblxuICAgICAgICByZXR1cm4ga2V5ICE9PSBvcHRpb25LZXk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgY2xlYXJTZWxlY3RlZE9wdGlvbnMoKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uJC5uZXh0KFtdKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdGVkT3B0aW9uKG9wdGlvbjogVCkge1xuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSkge1xuICAgICAgdGhpcy5yZW1vdmVTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFNlbGVjdGVkT3B0aW9uKG9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLy8gRklYTUU6IFRvZ2dsZSBzaG91bGQgcmVzcGVjdCBkaXNhYmxlZCBiaW5kaW5nIGlmIGl0IGV4aXN0c1xuICB0b2dnbGVBbGxTZWxlY3RlZE9wdGlvbnMoKSB7XG4gICAgY29uc3QgZmlsdGVyZWRPcHRpb25zID0gdGhpcy5nZXRGaWx0ZXJlZE9wdGlvbnMoKTtcbiAgICBjb25zdCB1bnNlbGVjdGVkT3B0aW9ucyA9IGZpbHRlcmVkT3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gIXRoaXMuaXNTZWxlY3RlZChvcHRpb24pKTtcblxuICAgIGlmICh1bnNlbGVjdGVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHVuc2VsZWN0ZWRPcHRpb25zLmZpbHRlcigobykgPT4gIXRoaXMuc2VsZWN0aW9uLnNvbWUoKHMpID0+IHRoaXMuZ2V0S2V5KHMpID09PSB0aGlzLmdldEtleShvKSkpO1xuXG4gICAgICB0aGlzLl9zZWxlY3Rpb24kLm5leHQoWy4uLnRoaXMuc2VsZWN0aW9uLCAuLi5zZWxlY3Rpb25dKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uZmlsdGVyKChzKSA9PiAhZmlsdGVyZWRPcHRpb25zLnNvbWUoKG8pID0+IHRoaXMuZ2V0S2V5KG8pID09PSB0aGlzLmdldEtleShzKSkpO1xuXG4gICAgICB0aGlzLl9zZWxlY3Rpb24kLm5leHQoc2VsZWN0aW9uKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|