@skyux/core 9.12.1 → 9.13.1

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.
@@ -130,7 +130,9 @@ export class SkyAffixer {
130
130
  }
131
131
  }
132
132
  #getOffsetParentRect() {
133
- if (this.#affixedElement.offsetParent) {
133
+ // Firefox sets the offsetParent to document.body if the element uses fixed positioning.
134
+ if (this.#config.position === 'absolute' &&
135
+ this.#affixedElement.offsetParent) {
134
136
  return getOuterRect(this.#affixedElement.offsetParent);
135
137
  }
136
138
  else {
@@ -421,4 +423,4 @@ export class SkyAffixer {
421
423
  });
422
424
  }
423
425
  }
424
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXhlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9hZmZpeC9hZmZpeGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBT2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLGdDQUFnQyxFQUNoQyxvQ0FBb0MsR0FDckMsTUFBTSxhQUFhLENBQUM7QUFrQnJCLE1BQU0sb0JBQW9CLEdBQTBCO0lBQ2xELGNBQWMsRUFBRSxzQkFBc0IsQ0FBQyxjQUFjO0lBQ3JELGFBQWEsRUFBRSxLQUFLO0lBQ3BCLG1CQUFtQixFQUFFLFFBQVE7SUFDN0IsUUFBUSxFQUFFLEtBQUs7SUFDZixTQUFTLEVBQUUsT0FBTztDQUNuQixDQUFDO0FBRUYsTUFBTSxPQUFPLFVBQVU7SUFDckI7O09BRUc7SUFDSCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFpQztRQUMzQyxNQUFN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R0FBMkc7UUFDM0csSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FDL0QsQ0FBQyxhQUFhLEVBQUUsRUFBRTtnQkFDaEIsYUFBYSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUN4RSxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FDL0QsQ0FBQyxhQUFhLEVBQUUsRUFBRTtnQkFDaEIsYUFBYSxFQUFFLG1CQUFtQixDQUNoQyxRQUFRLEVBQ1IsSUFBSSxDQUFDLHFCQUFxQixDQUMzQixDQUFDO1lBQ0osQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpZXdwb3J0UnVsZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBOZ1pvbmUsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5QWZmaXhBdXRvRml0Q29udGV4dCB9IGZyb20gJy4vYWZmaXgtYXV0by1maXQtY29udGV4dCc7XG5pbXBvcnQgeyBTa3lBZmZpeENvbmZpZyB9IGZyb20gJy4vYWZmaXgtY29uZmlnJztcbmltcG9ydCB7IFNreUFmZml4T2Zmc2V0IH0gZnJvbSAnLi9hZmZpeC1vZmZzZXQnO1xuaW1wb3J0IHsgU2t5QWZmaXhPZmZzZXRDaGFuZ2UgfSBmcm9tICcuL2FmZml4LW9mZnNldC1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5QWZmaXhQbGFjZW1lbnQgfSBmcm9tICcuL2FmZml4LXBsYWNlbWVudCc7XG5pbXBvcnQgeyBTa3lBZmZpeFBsYWNlbWVudENoYW5nZSB9IGZyb20gJy4vYWZmaXgtcGxhY2VtZW50LWNoYW5nZSc7XG5pbXBvcnQgeyBBZmZpeFJlY3QgfSBmcm9tICcuL2FmZml4LXJlY3QnO1xuaW1wb3J0IHsgZ2V0SW52ZXJzZVBsYWNlbWVudCwgZ2V0TmV4dFBsYWNlbWVudCB9IGZyb20gJy4vYWZmaXgtdXRpbHMnO1xuaW1wb3J0IHtcbiAgZ2V0RWxlbWVudE9mZnNldCxcbiAgZ2V0T3V0ZXJSZWN0LFxuICBnZXRPdmVyZmxvd1BhcmVudHMsXG4gIGdldFZpc2libGVSZWN0Rm9yRWxlbWVudCxcbiAgaXNPZmZzZXRGdWxseVZpc2libGVXaXRoaW5QYXJlbnQsXG4gIGlzT2Zmc2V0UGFydGlhbGx5VmlzaWJsZVdpdGhpblBhcmVudCxcbn0gZnJvbSAnLi9kb20tdXRpbHMnO1xuXG4vKipcbiAqIE1ha2Ugc3BlY2lmaWMgcHJvcGVydGllcyByZXF1aXJlZCwgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvXG4gKiBkbyBudWxsIGNoZWNrcyB0aHJvdWdob3V0IHRoaXMgZmlsZS5cbiAqL1xudHlwZSBBZmZpeENvbmZpZ09yRGVmYXVsdHMgPSBTa3lBZmZpeENvbmZpZyAmXG4gIFJlcXVpcmVkPFxuICAgIFBpY2s8XG4gICAgICBTa3lBZmZpeENvbmZpZyxcbiAgICAgIHwgJ2F1dG9GaXRDb250ZXh0J1xuICAgICAgfCAnZW5hYmxlQXV0b0ZpdCdcbiAgICAgIHwgJ2hvcml6b250YWxBbGlnbm1lbnQnXG4gICAgICB8ICdpc1N0aWNreSdcbiAgICAgIHwgJ3BsYWNlbWVudCdcbiAgICA+XG4gID47XG5cbmNvbnN0IERFRkFVTFRfQUZGSVhfQ09ORklHOiBBZmZpeENvbmZpZ09yRGVmYXVsdHMgPSB7XG4gIGF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0Lk92ZXJmbG93UGFyZW50LFxuICBlbmFibGVBdXRvRml0OiBmYWxzZSxcbiAgaG9yaXpvbnRhbEFsaWdubWVudDogJ2NlbnRlcicsXG4gIGlzU3RpY2t5OiBmYWxzZSxcbiAgcGxhY2VtZW50OiAnYWJvdmUnLFxufTtcblxuZXhwb3J0IGNsYXNzIFNreUFmZml4ZXIge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYWZmaXhlZCBlbGVtZW50J3Mgb2Zmc2V0IGNoYW5nZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IG9mZnNldENoYW5nZSgpOiBPYnNlcnZhYmxlPFNreUFmZml4T2Zmc2V0Q2hhbmdlPiB7XG4gICAgcmV0dXJuIHRoaXMuI29mZnNldENoYW5nZU9icztcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBiYXNlIGVsZW1lbnQncyBuZWFyZXN0IG92ZXJmbG93IHBhcmVudCBpcyBzY3JvbGxpbmcuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBuZWVkXG4gICAqIHRvIHBlcmZvcm0gYW4gYWRkaXRpb25hbCBhY3Rpb24gZHVyaW5nIHRoZSBzY3JvbGwgZXZlbnQgYnV0IGRvbid0IHdhbnQgdG8gZ2VuZXJhdGUgYW5vdGhlclxuICAgKiBldmVudCBsaXN0ZW5lci5cbiAgICovXG4gIHB1YmxpYyBnZXQgb3ZlcmZsb3dTY3JvbGwoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuI292ZXJmbG93U2Nyb2xsT2JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHBsYWNlbWVudCB2YWx1ZSBjaGFuZ2VzLiBBIGBudWxsYCB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCBhIHN1aXRhYmxlXG4gICAqIHBsYWNlbWVudCBjb3VsZCBub3QgYmUgZm91bmQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBsYWNlbWVudENoYW5nZSgpOiBPYnNlcnZhYmxlPFNreUFmZml4UGxhY2VtZW50Q2hhbmdlPiB7XG4gICAgcmV0dXJuIHRoaXMuI3BsYWNlbWVudENoYW5nZU9icztcbiAgfVxuXG4gIGdldCAjY29uZmlnKCk6IEFmZml4Q29uZmlnT3JEZWZhdWx0cyB7XG4gICAgcmV0dXJuIHRoaXMuI19jb25maWc7XG4gIH1cblxuICBzZXQgI2NvbmZpZyh2YWx1ZTogU2t5QWZmaXhDb25maWcgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBtZXJnZWQ6IEFmZml4Q29uZmlnT3JEZWZhdWx0cyA9IHtcbiAgICAgIC4uLkRFRkFVTFRfQUZGSVhfQ09ORklHLFxuICAgICAgLi4udmFsdWUsXG4gICAgfTtcblxuICAgIC8vIE1ha2Ugc3VyZSBub25lIG9mIHRoZSB2YWx1ZXMgYXJlIHVuZGVmaW5lZC5cbiAgICBsZXQga2V5OiBrZXlvZiB0eXBlb2YgbWVyZ2VkO1xuICAgIGZvciAoa2V5IGluIG1lcmdlZCkge1xuICAgICAgaWYgKG1lcmdlZFtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgKG1lcmdlZCBhcyBhbnkpW2tleV0gPSBERUZBVUxUX0FGRklYX0NPTkZJR1trZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuI19jb25maWcgPSBtZXJnZWQ7XG4gIH1cblxuICAjYWZmaXhlZEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gICNiYXNlRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRPZmZzZXQ6IFNreUFmZml4T2Zmc2V0IHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50UGxhY2VtZW50OiBTa3lBZmZpeFBsYWNlbWVudCB8IHVuZGVmaW5lZDtcblxuICAjbGF5b3V0Vmlld3BvcnQ6IEhUTUxFbGVtZW50O1xuXG4gICNvZmZzZXRDaGFuZ2U6IFN1YmplY3Q8U2t5QWZmaXhPZmZzZXRDaGFuZ2U+O1xuXG4gICNvZmZzZXRDaGFuZ2VPYnM6IE9ic2VydmFibGU8U2t5QWZmaXhPZmZzZXRDaGFuZ2U+O1xuXG4gICNvdmVyZmxvd1BhcmVudHM6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICAjb3ZlcmZsb3dTY3JvbGw6IFN1YmplY3Q8dm9pZD47XG5cbiAgI292ZXJmbG93U2Nyb2xsT2JzOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gICNwbGFjZW1lbnRDaGFuZ2U6IFN1YmplY3Q8U2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2U+O1xuXG4gICNwbGFjZW1lbnRDaGFuZ2VPYnM6IE9ic2VydmFibGU8U2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2U+O1xuXG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gICNzY3JvbGxDaGFuZ2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICN2aWV3cG9ydExpc3RlbmVyczogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICN2aWV3cG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyO1xuXG4gICN6b25lOiBOZ1pvbmU7XG5cbiAgI19jb25maWc6IEFmZml4Q29uZmlnT3JEZWZhdWx0cyA9IERFRkFVTFRfQUZGSVhfQ09ORklHO1xuXG4gICNzY3JvbGxDaGFuZ2VMaXN0ZW5lcjogKCkgPT4gdm9pZCA9ICgpID0+IHRoaXMuI3Njcm9sbENoYW5nZS5uZXh0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYWZmaXhlZEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgdmlld3BvcnRSdWxlcjogVmlld3BvcnRSdWxlcixcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgbGF5b3V0Vmlld3BvcnQ6IEhUTUxFbGVtZW50XG4gICkge1xuICAgIHRoaXMuI2FmZml4ZWRFbGVtZW50ID0gYWZmaXhlZEVsZW1lbnQ7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgICB0aGlzLiNsYXlvdXRWaWV3cG9ydCA9IGxheW91dFZpZXdwb3J0O1xuICAgIHRoaXMuI3ZpZXdwb3J0UnVsZXIgPSB2aWV3cG9ydFJ1bGVyO1xuICAgIHRoaXMuI3pvbmUgPSB6b25lO1xuXG4gICAgdGhpcy4jb2Zmc2V0Q2hhbmdlID0gbmV3IFN1YmplY3Q8U2t5QWZmaXhPZmZzZXRDaGFuZ2U+KCk7XG4gICAgdGhpcy4jb3ZlcmZsb3dTY3JvbGwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHRoaXMuI3BsYWNlbWVudENoYW5nZSA9IG5ldyBTdWJqZWN0PFNreUFmZml4UGxhY2VtZW50Q2hhbmdlPigpO1xuXG4gICAgdGhpcy4jb2Zmc2V0Q2hhbmdlT2JzID0gdGhpcy4jb2Zmc2V0Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuI292ZXJmbG93U2Nyb2xsT2JzID0gdGhpcy4jb3ZlcmZsb3dTY3JvbGwuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy4jcGxhY2VtZW50Q2hhbmdlT2JzID0gdGhpcy4jcGxhY2VtZW50Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFmZml4ZXMgYW4gZWxlbWVudCB0byBhIGJhc2UgZWxlbWVudC5cbiAgICogQHBhcmFtIGJhc2VFbGVtZW50IFRoZSBiYXNlIGVsZW1lbnQuXG4gICAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgdGhlIGFmZml4IGFjdGlvbi5cbiAgICovXG4gIHB1YmxpYyBhZmZpeFRvKGJhc2VFbGVtZW50OiBIVE1MRWxlbWVudCwgY29uZmlnPzogU2t5QWZmaXhDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLiNyZXNldCgpO1xuXG4gICAgdGhpcy4jY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuI2Jhc2VFbGVtZW50ID0gYmFzZUVsZW1lbnQ7XG4gICAgdGhpcy4jb3ZlcmZsb3dQYXJlbnRzID0gZ2V0T3ZlcmZsb3dQYXJlbnRzKGJhc2VFbGVtZW50KTtcblxuICAgIHRoaXMuI2FmZml4KCk7XG5cbiAgICBpZiAodGhpcy4jY29uZmlnLmlzU3RpY2t5KSB7XG4gICAgICB0aGlzLiNhZGRWaWV3cG9ydExpc3RlbmVycygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRDb25maWcoKTogU2t5QWZmaXhDb25maWcge1xuICAgIHJldHVybiB0aGlzLiNjb25maWc7XG4gIH1cblxuICAvKipcbiAgICogUmUtcnVucyB0aGUgYWZmaXggY2FsY3VsYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZmZpeCgpOiB2b2lkIHtcbiAgICAvLyBSZXNldCBjdXJyZW50IHBsYWNlbWVudCB0byBwcmVmZXJyZWQgcGxhY2VtZW50LlxuICAgIHRoaXMuI2N1cnJlbnRQbGFjZW1lbnQgPSB0aGlzLiNjb25maWcucGxhY2VtZW50O1xuICAgIHRoaXMuI2FmZml4KCk7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgdGhlIGFmZml4ZXIuXG4gICAqL1xuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNyZXNldCgpO1xuICAgIHRoaXMuI3BsYWNlbWVudENoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI29mZnNldENoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI292ZXJmbG93U2Nyb2xsLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jc2Nyb2xsQ2hhbmdlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAjYWZmaXgoKTogdm9pZCB7XG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy4jZ2V0T2Zmc2V0KCk7XG5cbiAgICBjb25zdCBvZmZzZXRQYXJlbnRSZWN0ID0gdGhpcy4jZ2V0T2Zmc2V0UGFyZW50UmVjdCgpO1xuICAgIG9mZnNldC50b3AgPSBvZmZzZXQudG9wIC0gb2Zmc2V0UGFyZW50UmVjdC50b3A7XG4gICAgb2Zmc2V0LmxlZnQgPSBvZmZzZXQubGVmdCAtIG9mZnNldFBhcmVudFJlY3QubGVmdDtcbiAgICBvZmZzZXQuYm90dG9tID0gb2Zmc2V0LmJvdHRvbSAtIG9mZnNldFBhcmVudFJlY3QudG9wO1xuICAgIG9mZnNldC5yaWdodCA9IG9mZnNldC5yaWdodCAtIG9mZnNldFBhcmVudFJlY3QubGVmdDtcblxuICAgIGlmICh0aGlzLiNpc05ld09mZnNldChvZmZzZXQpKSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5zZXRTdHlsZSh0aGlzLiNhZmZpeGVkRWxlbWVudCwgJ3RvcCcsIGAke29mZnNldC50b3B9cHhgKTtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKHRoaXMuI2FmZml4ZWRFbGVtZW50LCAnbGVmdCcsIGAke29mZnNldC5sZWZ0fXB4YCk7XG5cbiAgICAgIHRoaXMuI29mZnNldENoYW5nZS5uZXh0KHsgb2Zmc2V0IH0pO1xuICAgIH1cbiAgfVxuXG4gICNnZXRPZmZzZXRQYXJlbnRSZWN0KCk6IEFmZml4UmVjdCB7XG4gICAgaWYgKHRoaXMuI2FmZml4ZWRFbGVtZW50Lm9mZnNldFBhcmVudCkge1xuICAgICAgcmV0dXJuIGdldE91dGVyUmVjdCh0aGlzLiNhZmZpeGVkRWxlbWVudC5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXlvdXRSZWN0ID0gZ2V0T3V0ZXJSZWN0KHRoaXMuI2xheW91dFZpZXdwb3J0KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRvcDogbGF5b3V0UmVjdC50b3AsXG4gICAgICAgIGxlZnQ6IGxheW91dFJlY3QubGVmdCxcbiAgICAgICAgaGVpZ2h0OiBsYXlvdXRSZWN0LmhlaWdodCxcbiAgICAgICAgd2lkdGg6IGxheW91dFJlY3Qud2lkdGgsXG4gICAgICAgIGJvdHRvbTogbGF5b3V0UmVjdC50b3AgLSBsYXlvdXRSZWN0LmhlaWdodCxcbiAgICAgICAgcmlnaHQ6IGxheW91dFJlY3QubGVmdCAtIGxheW91dFJlY3Qud2lkdGgsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gICNnZXRPZmZzZXQoKTogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+IHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLiNnZXRBdXRvRml0Q29udGV4dFBhcmVudCgpO1xuXG4gICAgY29uc3QgbWF4QXR0ZW1wdHMgPSA0O1xuICAgIGxldCBhdHRlbXB0cyA9IDA7XG5cbiAgICBsZXQgaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSA9IGZhbHNlO1xuICAgIGxldCBvZmZzZXQ6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PjtcbiAgICBsZXQgcGxhY2VtZW50ID0gdGhpcy4jY29uZmlnLnBsYWNlbWVudDtcblxuICAgIGRvIHtcbiAgICAgIG9mZnNldCA9IHRoaXMuI2dldFByZWZlcnJlZE9mZnNldChwbGFjZW1lbnQpO1xuICAgICAgaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSA9IGlzT2Zmc2V0RnVsbHlWaXNpYmxlV2l0aGluUGFyZW50KFxuICAgICAgICB0aGlzLiN2aWV3cG9ydFJ1bGVyLFxuICAgICAgICBwYXJlbnQsXG4gICAgICAgIG9mZnNldCxcbiAgICAgICAgdGhpcy4jY29uZmlnLmF1dG9GaXRPdmVyZmxvd09mZnNldFxuICAgICAgKTtcblxuICAgICAgaWYgKCF0aGlzLiNjb25maWcuZW5hYmxlQXV0b0ZpdCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlKSB7XG4gICAgICAgIHBsYWNlbWVudCA9XG4gICAgICAgICAgYXR0ZW1wdHMgJSAyID09PSAwXG4gICAgICAgICAgICA/IGdldEludmVyc2VQbGFjZW1lbnQocGxhY2VtZW50KVxuICAgICAgICAgICAgOiBnZXROZXh0UGxhY2VtZW50KHBsYWNlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIGF0dGVtcHRzKys7XG4gICAgfSB3aGlsZSAoIWlzQWZmaXhlZEVsZW1lbnRGdWxseVZpc2libGUgJiYgYXR0ZW1wdHMgPCBtYXhBdHRlbXB0cyk7XG5cbiAgICBpZiAoaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSkge1xuICAgICAgaWYgKHRoaXMuI2lzQmFzZUVsZW1lbnRWaXNpYmxlKCkpIHtcbiAgICAgICAgdGhpcy4jbm90aWZ5UGxhY2VtZW50Q2hhbmdlKHBsYWNlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNub3RpZnlQbGFjZW1lbnRDaGFuZ2UobnVsbCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuI2NvbmZpZy5lbmFibGVBdXRvRml0KSB7XG4gICAgICB0aGlzLiNub3RpZnlQbGFjZW1lbnRDaGFuZ2UobnVsbCk7XG4gICAgfVxuXG4gICAgLy8gTm8gc3VpdGFibGUgcGxhY2VtZW50IHdhcyBmb3VuZCwgc28gcmV2ZXJ0IHRvIHByZWZlcnJlZCBwbGFjZW1lbnQuXG4gICAgcmV0dXJuIHRoaXMuI2dldFByZWZlcnJlZE9mZnNldCh0aGlzLiNjb25maWcucGxhY2VtZW50KTtcbiAgfVxuXG4gICNnZXRQcmVmZXJyZWRPZmZzZXQocGxhY2VtZW50OiBTa3lBZmZpeFBsYWNlbWVudCk6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PiB7XG4gICAgaWYgKCF0aGlzLiNiYXNlRWxlbWVudCkge1xuICAgICAgcmV0dXJuIHsgdG9wOiAwLCBsZWZ0OiAwLCBib3R0b206IDAsIHJpZ2h0OiAwIH07XG4gICAgfVxuXG4gICAgY29uc3QgYWZmaXhlZFJlY3QgPSBnZXRPdXRlclJlY3QodGhpcy4jYWZmaXhlZEVsZW1lbnQpO1xuICAgIGNvbnN0IGJhc2VSZWN0ID0gdGhpcy4jYmFzZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBob3Jpem9udGFsQWxpZ25tZW50ID0gdGhpcy4jY29uZmlnLmhvcml6b250YWxBbGlnbm1lbnQ7XG4gICAgY29uc3QgdmVydGljYWxBbGlnbm1lbnQgPSB0aGlzLiNjb25maWcudmVydGljYWxBbGlnbm1lbnQ7XG4gICAgY29uc3QgZW5hYmxlQXV0b0ZpdCA9IHRoaXMuI2NvbmZpZy5lbmFibGVBdXRvRml0O1xuXG4gICAgbGV0IHRvcDogbnVtYmVyO1xuICAgIGxldCBsZWZ0OiBudW1iZXI7XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSAnYWJvdmUnIHx8IHBsYWNlbWVudCA9PT0gJ2JlbG93Jykge1xuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gJ2Fib3ZlJykge1xuICAgICAgICB0b3AgPSBiYXNlUmVjdC50b3AgLSBhZmZpeGVkUmVjdC5oZWlnaHQ7XG5cbiAgICAgICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWdubWVudCkge1xuICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICB0b3AgPSB0b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdtaWRkbGUnOlxuICAgICAgICAgICAgdG9wID0gdG9wICsgYWZmaXhlZFJlY3QuaGVpZ2h0IC8gMjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b3AgPSBiYXNlUmVjdC5ib3R0b207XG5cbiAgICAgICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWdubWVudCkge1xuICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICAgICAgICB0b3AgPSB0b3AgLSBhZmZpeGVkUmVjdC5oZWlnaHQgLyAyO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgIHRvcCA9IHRvcCAtIGFmZml4ZWRSZWN0LmhlaWdodDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoaG9yaXpvbnRhbEFsaWdubWVudCkge1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICBsZWZ0ID0gYmFzZVJlY3QubGVmdDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGxlZnQgPSBiYXNlUmVjdC5sZWZ0ICsgYmFzZVJlY3Qud2lkdGggLyAyIC0gYWZmaXhlZFJlY3Qud2lkdGggLyAyO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICBsZWZ0ID0gYmFzZVJlY3QucmlnaHQgLSBhZmZpeGVkUmVjdC53aWR0aDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIGxlZnQgPSBiYXNlUmVjdC5sZWZ0IC0gYWZmaXhlZFJlY3Qud2lkdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZWZ0ID0gYmFzZVJlY3QucmlnaHQ7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAodmVydGljYWxBbGlnbm1lbnQpIHtcbiAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICB0b3AgPSBiYXNlUmVjdC50b3A7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnbWlkZGxlJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0b3AgPSBiYXNlUmVjdC50b3AgKyBiYXNlUmVjdC5oZWlnaHQgLyAyIC0gYWZmaXhlZFJlY3QuaGVpZ2h0IC8gMjtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgIHRvcCA9IGJhc2VSZWN0LmJvdHRvbSAtIGFmZml4ZWRSZWN0LmhlaWdodDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBvZmZzZXQ6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PiA9IHsgdG9wLCBsZWZ0LCBib3R0b206IDAsIHJpZ2h0OiAwIH07XG5cbiAgICBpZiAoZW5hYmxlQXV0b0ZpdCkge1xuICAgICAgY29uc3QgYWRqdXN0bWVudHMgPSB0aGlzLiNhZGp1c3RPZmZzZXRUb092ZXJmbG93UGFyZW50KFxuICAgICAgICB7IHRvcCwgbGVmdCB9LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHRoaXMuI2Jhc2VFbGVtZW50XG4gICAgICApO1xuICAgICAgb2Zmc2V0LnRvcCA9IGFkanVzdG1lbnRzLnRvcDtcbiAgICAgIG9mZnNldC5sZWZ0ID0gYWRqdXN0bWVudHMubGVmdDtcbiAgICB9XG5cbiAgICBvZmZzZXQuYm90dG9tID0gb2Zmc2V0LnRvcCArIGFmZml4ZWRSZWN0LmhlaWdodDtcbiAgICBvZmZzZXQucmlnaHQgPSBvZmZzZXQubGVmdCArIGFmZml4ZWRSZWN0LndpZHRoO1xuXG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTbGlnaHRseSBhZGp1c3QgdGhlIG9mZnNldCB0byBmaXQgd2l0aGluIHRoZSBzY3JvbGwgcGFyZW50J3MgYm91bmRhcmllcyBpZlxuICAgKiB0aGUgYWZmaXhlZCBlbGVtZW50IHdvdWxkIG90aGVyd2lzZSBiZSBjbGlwcGVkLlxuICAgKi9cbiAgI2FkanVzdE9mZnNldFRvT3ZlcmZsb3dQYXJlbnQoXG4gICAgb2Zmc2V0OiB7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXIgfSxcbiAgICBwbGFjZW1lbnQ6IFNreUFmZml4UGxhY2VtZW50LFxuICAgIGJhc2VFbGVtZW50OiBIVE1MRWxlbWVudFxuICApOiB7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXIgfSB7XG4gICAgY29uc3QgYWZmaXhlZFJlY3QgPSBnZXRPdXRlclJlY3QodGhpcy4jYWZmaXhlZEVsZW1lbnQpO1xuICAgIGNvbnN0IGJhc2VSZWN0ID0gYmFzZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLiNnZXRBdXRvRml0Q29udGV4dFBhcmVudCgpO1xuICAgIGxldCBwYXJlbnRPZmZzZXQ6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PjtcbiAgICBpZiAodGhpcy4jY29uZmlnLmF1dG9GaXRDb250ZXh0ID09PSBTa3lBZmZpeEF1dG9GaXRDb250ZXh0Lk92ZXJmbG93UGFyZW50KSB7XG4gICAgICBpZiAodGhpcy4jY29uZmlnLmF1dG9GaXRPdmVyZmxvd09mZnNldCkge1xuICAgICAgICAvLyBXaGVuIHRoZSBjb25maWcgY29udGFpbnMgYSBzcGVjaWZpYyBvZmZzZXQuXG4gICAgICAgIHBhcmVudE9mZnNldCA9IGdldEVsZW1lbnRPZmZzZXQoXG4gICAgICAgICAgcGFyZW50LFxuICAgICAgICAgIHRoaXMuI2NvbmZpZy5hdXRvRml0T3ZlcmZsb3dPZmZzZXRcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGlzT2Zmc2V0RnVsbHlWaXNpYmxlV2l0aGluUGFyZW50KHRoaXMuI3ZpZXdwb3J0UnVsZXIsIHBhcmVudCwgYmFzZVJlY3QpXG4gICAgICApIHtcbiAgICAgICAgLy8gV2hlbiB0aGUgYmFzZSBlbGVtZW50IGlzIGZ1bGx5IHZpc2libGUgd2l0aGluIHRoZSBwYXJlbnQsIGFpbSBmb3IgdGhlIHZpc2libGUgcG9ydGlvbiBvZiB0aGUgcGFyZW50IGVsZW1lbnQuXG4gICAgICAgIHBhcmVudE9mZnNldCA9IGdldFZpc2libGVSZWN0Rm9yRWxlbWVudCh0aGlzLiN2aWV3cG9ydFJ1bGVyLCBwYXJlbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQW55d2hlcmUgaW4gdGhlIHBhcmVudCBlbGVtZW50LlxuICAgICAgICBwYXJlbnRPZmZzZXQgPSBnZXRPdXRlclJlY3QocGFyZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgdmlld3BvcnRSZWN0ID0gdGhpcy4jdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFJlY3QoKTtcbiAgICAgIHBhcmVudE9mZnNldCA9IHtcbiAgICAgICAgdG9wOiAtdmlld3BvcnRSZWN0LnRvcCxcbiAgICAgICAgbGVmdDogLXZpZXdwb3J0UmVjdC5sZWZ0LFxuICAgICAgICBib3R0b206IC12aWV3cG9ydFJlY3QuYm90dG9tLFxuICAgICAgICByaWdodDogLXZpZXdwb3J0UmVjdC5yaWdodCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQSBwaXhlbCB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIGxlZXdheSBiZXR3ZWVuIHRoZSBlZGdlIG9mIHRoZSBvdmVyZmxvdyBwYXJlbnQgYW5kIHRoZSBlZGdlXG4gICAgLy8gb2YgdGhlIGJhc2UgZWxlbWVudCBiZWZvcmUgaXQgZGlzYXBwZWFycyBmcm9tIHZpZXcuXG4gICAgLy8gSWYgdGhlIHZpc2libGUgcG9ydGlvbiBvZiB0aGUgYmFzZSBlbGVtZW50IGlzIGxlc3MgdGhhbiB0aGlzIHBpeGVsIHZhbHVlLCB0aGUgYXV0by1maXRcbiAgICAvLyBmdW5jdGlvbmFsaXR5IGF0dGVtcHRzIHRvIGZpbmQgYW5vdGhlciBwbGFjZW1lbnQuXG4gICAgY29uc3QgZGVmYXVsdFBpeGVsVG9sZXJhbmNlID0gNDA7XG4gICAgbGV0IHBpeGVsVG9sZXJhbmNlOiBudW1iZXI7XG5cbiAgICBjb25zdCBvcmlnaW5hbE9mZnNldFRvcCA9IG9mZnNldC50b3A7XG4gICAgY29uc3Qgb3JpZ2luYWxPZmZzZXRMZWZ0ID0gb2Zmc2V0LmxlZnQ7XG5cbiAgICBzd2l0Y2ggKHBsYWNlbWVudCkge1xuICAgICAgY2FzZSAnYWJvdmUnOlxuICAgICAgY2FzZSAnYmVsb3cnOlxuICAgICAgICAvLyBLZWVwIHRoZSBhZmZpeGVkIGVsZW1lbnQgd2l0aGluIHRoZSBvdmVyZmxvdyBwYXJlbnQuXG4gICAgICAgIGlmIChvZmZzZXQubGVmdCA8IHBhcmVudE9mZnNldC5sZWZ0KSB7XG4gICAgICAgICAgb2Zmc2V0LmxlZnQgPSBwYXJlbnRPZmZzZXQubGVmdDtcbiAgICAgICAgfSBlbHNlIGlmIChvZmZzZXQubGVmdCArIGFmZml4ZWRSZWN0LndpZHRoID4gcGFyZW50T2Zmc2V0LnJpZ2h0KSB7XG4gICAgICAgICAgb2Zmc2V0LmxlZnQgPSBwYXJlbnRPZmZzZXQucmlnaHQgLSBhZmZpeGVkUmVjdC53aWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVzZSBhIHNtYWxsZXIgcGl4ZWwgdG9sZXJhbmNlIGlmIHRoZSBiYXNlIGVsZW1lbnQgd2lkdGggaXMgbGVzcyB0aGFuIHRoZSBkZWZhdWx0LlxuICAgICAgICBwaXhlbFRvbGVyYW5jZSA9IE1hdGgubWluKGRlZmF1bHRQaXhlbFRvbGVyYW5jZSwgYmFzZVJlY3Qud2lkdGgpO1xuXG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgYWZmaXhlZCBlbGVtZW50IG5ldmVyIGRldGFjaGVzIGZyb20gdGhlIGJhc2UgZWxlbWVudC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIG9mZnNldC5sZWZ0ICsgcGl4ZWxUb2xlcmFuY2UgPiBiYXNlUmVjdC5yaWdodCB8fFxuICAgICAgICAgIG9mZnNldC5sZWZ0ICsgYWZmaXhlZFJlY3Qud2lkdGggLSBwaXhlbFRvbGVyYW5jZSA8IGJhc2VSZWN0LmxlZnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgb2Zmc2V0LmxlZnQgPSBvcmlnaW5hbE9mZnNldExlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIC8vIEtlZXAgdGhlIGFmZml4ZWQgZWxlbWVudCB3aXRoaW4gdGhlIG92ZXJmbG93IHBhcmVudC5cbiAgICAgICAgaWYgKG9mZnNldC50b3AgPCBwYXJlbnRPZmZzZXQudG9wKSB7XG4gICAgICAgICAgb2Zmc2V0LnRvcCA9IHBhcmVudE9mZnNldC50b3A7XG4gICAgICAgIH0gZWxzZSBpZiAob2Zmc2V0LnRvcCArIGFmZml4ZWRSZWN0LmhlaWdodCA+IHBhcmVudE9mZnNldC5ib3R0b20pIHtcbiAgICAgICAgICBvZmZzZXQudG9wID0gcGFyZW50T2Zmc2V0LmJvdHRvbSAtIGFmZml4ZWRSZWN0LmhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVzZSBhIHNtYWxsZXIgcGl4ZWwgdG9sZXJhbmNlIGlmIHRoZSBiYXNlIGVsZW1lbnQgaGVpZ2h0IGlzIGxlc3MgdGhhbiB0aGUgZGVmYXVsdC5cbiAgICAgICAgcGl4ZWxUb2xlcmFuY2UgPSBNYXRoLm1pbihkZWZhdWx0UGl4ZWxUb2xlcmFuY2UsIGJhc2VSZWN0LmhlaWdodCk7XG5cbiAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBhZmZpeGVkIGVsZW1lbnQgbmV2ZXIgZGV0YWNoZXMgZnJvbSB0aGUgYmFzZSBlbGVtZW50LlxuICAgICAgICBpZiAoXG4gICAgICAgICAgb2Zmc2V0LnRvcCArIHBpeGVsVG9sZXJhbmNlID4gYmFzZVJlY3QuYm90dG9tIHx8XG4gICAgICAgICAgb2Zmc2V0LnRvcCArIGFmZml4ZWRSZWN0LmhlaWdodCAtIHBpeGVsVG9sZXJhbmNlIDwgYmFzZVJlY3QudG9wXG4gICAgICAgICkge1xuICAgICAgICAgIG9mZnNldC50b3AgPSBvcmlnaW5hbE9mZnNldFRvcDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBvZmZzZXQ7XG4gIH1cblxuICAjZ2V0SW1tZWRpYXRlT3ZlcmZsb3dQYXJlbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLiNvdmVyZmxvd1BhcmVudHNbMF07XG4gIH1cblxuICAjZ2V0QXV0b0ZpdENvbnRleHRQYXJlbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gdGhpcy4jb3ZlcmZsb3dQYXJlbnRzW3RoaXMuI292ZXJmbG93UGFyZW50cy5sZW5ndGggLSAxXTtcblxuICAgIHJldHVybiB0aGlzLiNjb25maWcuYXV0b0ZpdENvbnRleHQgPT09IFNreUFmZml4QXV0b0ZpdENvbnRleHQuT3ZlcmZsb3dQYXJlbnRcbiAgICAgID8gdGhpcy4jZ2V0SW1tZWRpYXRlT3ZlcmZsb3dQYXJlbnQoKVxuICAgICAgOiBib2R5RWxlbWVudDtcbiAgfVxuXG4gICNub3RpZnlQbGFjZW1lbnRDaGFuZ2UocGxhY2VtZW50OiBTa3lBZmZpeFBsYWNlbWVudCB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jY3VycmVudFBsYWNlbWVudCAhPT0gcGxhY2VtZW50KSB7XG4gICAgICB0aGlzLiNjdXJyZW50UGxhY2VtZW50ID0gcGxhY2VtZW50ID8/IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuI3BsYWNlbWVudENoYW5nZS5uZXh0KHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3Jlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuI3JlbW92ZVZpZXdwb3J0TGlzdGVuZXJzKCk7XG5cbiAgICB0aGlzLiNvdmVyZmxvd1BhcmVudHMgPSBbXTtcblxuICAgIHRoaXMuI2NvbmZpZyA9XG4gICAgICB0aGlzLiNiYXNlRWxlbWVudCA9XG4gICAgICB0aGlzLiNjdXJyZW50UGxhY2VtZW50ID1cbiAgICAgIHRoaXMuI2N1cnJlbnRPZmZzZXQgPVxuICAgICAgICB1bmRlZmluZWQ7XG4gIH1cblxuICAjaXNOZXdPZmZzZXQob2Zmc2V0OiBTa3lBZmZpeE9mZnNldCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLiNjdXJyZW50T2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuI2N1cnJlbnRPZmZzZXQgPSBvZmZzZXQ7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLiNjdXJyZW50T2Zmc2V0LnRvcCA9PT0gb2Zmc2V0LnRvcCAmJlxuICAgICAgdGhpcy4jY3VycmVudE9mZnNldC5sZWZ0ID09PSBvZmZzZXQubGVmdFxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuI2N1cnJlbnRPZmZzZXQgPSBvZmZzZXQ7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gICNpc0Jhc2VFbGVtZW50VmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAvLyBDYW4ndCBnZXQgaGVyZSBpZiB0aGUgYmFzZSBlbGVtZW50IGlzIHVuZGVmaW5lZC5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIXRoaXMuI2Jhc2VFbGVtZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVJlY3QgPSB0aGlzLiNiYXNlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIHJldHVybiBpc09mZnNldFBhcnRpYWxseVZpc2libGVXaXRoaW5QYXJlbnQoXG4gICAgICB0aGlzLiN2aWV3cG9ydFJ1bGVyLFxuICAgICAgdGhpcy4jZ2V0SW1tZWRpYXRlT3ZlcmZsb3dQYXJlbnQoKSxcbiAgICAgIHtcbiAgICAgICAgdG9wOiBiYXNlUmVjdC50b3AsXG4gICAgICAgIGxlZnQ6IGJhc2VSZWN0LmxlZnQsXG4gICAgICAgIHJpZ2h0OiBiYXNlUmVjdC5yaWdodCxcbiAgICAgICAgYm90dG9tOiBiYXNlUmVjdC5ib3R0b20sXG4gICAgICB9LFxuICAgICAgdGhpcy4jY29uZmlnLmF1dG9GaXRPdmVyZmxvd09mZnNldFxuICAgICk7XG4gIH1cblxuICAjYWRkVmlld3BvcnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy4jdmlld3BvcnRMaXN0ZW5lcnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvLyBSZXNpemUgYW5kIG9yaWVudGF0aW9uIGNoYW5nZXMuXG4gICAgdGhpcy4jdmlld3BvcnRMaXN0ZW5lcnMuYWRkKFxuICAgICAgdGhpcy4jdmlld3BvcnRSdWxlci5jaGFuZ2UoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNhZmZpeCgpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy4jdmlld3BvcnRMaXN0ZW5lcnMuYWRkKFxuICAgICAgdGhpcy4jc2Nyb2xsQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2FmZml4KCk7XG4gICAgICAgIHRoaXMuI292ZXJmbG93U2Nyb2xsLm5leHQoKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIExpc3RlbiBmb3Igc2Nyb2xsIGV2ZW50cyBvbiB0aGUgd2luZG93LCB2aXN1YWwgdmlld3BvcnQsIGFuZCBhbnkgb3ZlcmZsb3cgcGFyZW50cy5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2Jsb2cvdmlzdWFsLXZpZXdwb3J0LWFwaS8jZXZlbnRzLW9ubHktZmlyZS13aGVuLXRoZS12aXN1YWwtdmlld3BvcnQtY2hhbmdlc1xuICAgIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgW3dpbmRvdywgd2luZG93LnZpc3VhbFZpZXdwb3J0LCAuLi50aGlzLiNvdmVyZmxvd1BhcmVudHNdLmZvckVhY2goXG4gICAgICAgIChwYXJlbnRFbGVtZW50KSA9PiB7XG4gICAgICAgICAgcGFyZW50RWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy4jc2Nyb2xsQ2hhbmdlTGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgI3JlbW92ZVZpZXdwb3J0TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuI3ZpZXdwb3J0TGlzdGVuZXJzPy51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBbd2luZG93LCB3aW5kb3cudmlzdWFsVmlld3BvcnQsIC4uLnRoaXMuI292ZXJmbG93UGFyZW50c10uZm9yRWFjaChcbiAgICAgICAgKHBhcmVudEVsZW1lbnQpID0+IHtcbiAgICAgICAgICBwYXJlbnRFbGVtZW50Py5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgJ3Njcm9sbCcsXG4gICAgICAgICAgICB0aGlzLiNzY3JvbGxDaGFuZ2VMaXN0ZW5lclxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
426
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXhlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9hZmZpeC9hZmZpeGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBT2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLGdDQUFnQyxFQUNoQyxvQ0FBb0MsR0FDckMsTUFBTSxhQUFhLENBQUM7QUFrQnJCLE1BQU0sb0JBQW9CLEdBQTBCO0lBQ2xELGNBQWMsRUFBRSxzQkFBc0IsQ0FBQyxjQUFjO0lBQ3JELGFBQWEsRUFBRSxLQUFLO0lBQ3BCLG1CQUFtQixFQUFFLFFBQVE7SUFDN0IsUUFBUSxFQUFFLEtBQUs7SUFDZixTQUFTLEVBQUUsT0FBTztDQUNuQixDQUFDO0FBRUYsTUFBTSxPQUFPLFVBQVU7SUFDckI7O09BRUc7SUFDSCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFpQztRQUMzQyxNQUFN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QUFFLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLHFGQUFxRjtRQUNyRiwyR0FBMkc7UUFDM0csSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FDL0QsQ0FBQyxhQUFhLEVBQUUsRUFBRTtnQkFDaEIsYUFBYSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUN4RSxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FDL0QsQ0FBQyxhQUFhLEVBQUUsRUFBRTtnQkFDaEIsYUFBYSxFQUFFLG1CQUFtQixDQUNoQyxRQUFRLEVBQ1IsSUFBSSxDQUFDLHFCQUFxQixDQUMzQixDQUFDO1lBQ0osQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpZXdwb3J0UnVsZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBOZ1pvbmUsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5QWZmaXhBdXRvRml0Q29udGV4dCB9IGZyb20gJy4vYWZmaXgtYXV0by1maXQtY29udGV4dCc7XG5pbXBvcnQgeyBTa3lBZmZpeENvbmZpZyB9IGZyb20gJy4vYWZmaXgtY29uZmlnJztcbmltcG9ydCB7IFNreUFmZml4T2Zmc2V0IH0gZnJvbSAnLi9hZmZpeC1vZmZzZXQnO1xuaW1wb3J0IHsgU2t5QWZmaXhPZmZzZXRDaGFuZ2UgfSBmcm9tICcuL2FmZml4LW9mZnNldC1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5QWZmaXhQbGFjZW1lbnQgfSBmcm9tICcuL2FmZml4LXBsYWNlbWVudCc7XG5pbXBvcnQgeyBTa3lBZmZpeFBsYWNlbWVudENoYW5nZSB9IGZyb20gJy4vYWZmaXgtcGxhY2VtZW50LWNoYW5nZSc7XG5pbXBvcnQgeyBBZmZpeFJlY3QgfSBmcm9tICcuL2FmZml4LXJlY3QnO1xuaW1wb3J0IHsgZ2V0SW52ZXJzZVBsYWNlbWVudCwgZ2V0TmV4dFBsYWNlbWVudCB9IGZyb20gJy4vYWZmaXgtdXRpbHMnO1xuaW1wb3J0IHtcbiAgZ2V0RWxlbWVudE9mZnNldCxcbiAgZ2V0T3V0ZXJSZWN0LFxuICBnZXRPdmVyZmxvd1BhcmVudHMsXG4gIGdldFZpc2libGVSZWN0Rm9yRWxlbWVudCxcbiAgaXNPZmZzZXRGdWxseVZpc2libGVXaXRoaW5QYXJlbnQsXG4gIGlzT2Zmc2V0UGFydGlhbGx5VmlzaWJsZVdpdGhpblBhcmVudCxcbn0gZnJvbSAnLi9kb20tdXRpbHMnO1xuXG4vKipcbiAqIE1ha2Ugc3BlY2lmaWMgcHJvcGVydGllcyByZXF1aXJlZCwgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvXG4gKiBkbyBudWxsIGNoZWNrcyB0aHJvdWdob3V0IHRoaXMgZmlsZS5cbiAqL1xudHlwZSBBZmZpeENvbmZpZ09yRGVmYXVsdHMgPSBTa3lBZmZpeENvbmZpZyAmXG4gIFJlcXVpcmVkPFxuICAgIFBpY2s8XG4gICAgICBTa3lBZmZpeENvbmZpZyxcbiAgICAgIHwgJ2F1dG9GaXRDb250ZXh0J1xuICAgICAgfCAnZW5hYmxlQXV0b0ZpdCdcbiAgICAgIHwgJ2hvcml6b250YWxBbGlnbm1lbnQnXG4gICAgICB8ICdpc1N0aWNreSdcbiAgICAgIHwgJ3BsYWNlbWVudCdcbiAgICA+XG4gID47XG5cbmNvbnN0IERFRkFVTFRfQUZGSVhfQ09ORklHOiBBZmZpeENvbmZpZ09yRGVmYXVsdHMgPSB7XG4gIGF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0Lk92ZXJmbG93UGFyZW50LFxuICBlbmFibGVBdXRvRml0OiBmYWxzZSxcbiAgaG9yaXpvbnRhbEFsaWdubWVudDogJ2NlbnRlcicsXG4gIGlzU3RpY2t5OiBmYWxzZSxcbiAgcGxhY2VtZW50OiAnYWJvdmUnLFxufTtcblxuZXhwb3J0IGNsYXNzIFNreUFmZml4ZXIge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYWZmaXhlZCBlbGVtZW50J3Mgb2Zmc2V0IGNoYW5nZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IG9mZnNldENoYW5nZSgpOiBPYnNlcnZhYmxlPFNreUFmZml4T2Zmc2V0Q2hhbmdlPiB7XG4gICAgcmV0dXJuIHRoaXMuI29mZnNldENoYW5nZU9icztcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBiYXNlIGVsZW1lbnQncyBuZWFyZXN0IG92ZXJmbG93IHBhcmVudCBpcyBzY3JvbGxpbmcuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBuZWVkXG4gICAqIHRvIHBlcmZvcm0gYW4gYWRkaXRpb25hbCBhY3Rpb24gZHVyaW5nIHRoZSBzY3JvbGwgZXZlbnQgYnV0IGRvbid0IHdhbnQgdG8gZ2VuZXJhdGUgYW5vdGhlclxuICAgKiBldmVudCBsaXN0ZW5lci5cbiAgICovXG4gIHB1YmxpYyBnZXQgb3ZlcmZsb3dTY3JvbGwoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuI292ZXJmbG93U2Nyb2xsT2JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHBsYWNlbWVudCB2YWx1ZSBjaGFuZ2VzLiBBIGBudWxsYCB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCBhIHN1aXRhYmxlXG4gICAqIHBsYWNlbWVudCBjb3VsZCBub3QgYmUgZm91bmQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBsYWNlbWVudENoYW5nZSgpOiBPYnNlcnZhYmxlPFNreUFmZml4UGxhY2VtZW50Q2hhbmdlPiB7XG4gICAgcmV0dXJuIHRoaXMuI3BsYWNlbWVudENoYW5nZU9icztcbiAgfVxuXG4gIGdldCAjY29uZmlnKCk6IEFmZml4Q29uZmlnT3JEZWZhdWx0cyB7XG4gICAgcmV0dXJuIHRoaXMuI19jb25maWc7XG4gIH1cblxuICBzZXQgI2NvbmZpZyh2YWx1ZTogU2t5QWZmaXhDb25maWcgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBtZXJnZWQ6IEFmZml4Q29uZmlnT3JEZWZhdWx0cyA9IHtcbiAgICAgIC4uLkRFRkFVTFRfQUZGSVhfQ09ORklHLFxuICAgICAgLi4udmFsdWUsXG4gICAgfTtcblxuICAgIC8vIE1ha2Ugc3VyZSBub25lIG9mIHRoZSB2YWx1ZXMgYXJlIHVuZGVmaW5lZC5cbiAgICBsZXQga2V5OiBrZXlvZiB0eXBlb2YgbWVyZ2VkO1xuICAgIGZvciAoa2V5IGluIG1lcmdlZCkge1xuICAgICAgaWYgKG1lcmdlZFtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgKG1lcmdlZCBhcyBhbnkpW2tleV0gPSBERUZBVUxUX0FGRklYX0NPTkZJR1trZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuI19jb25maWcgPSBtZXJnZWQ7XG4gIH1cblxuICAjYWZmaXhlZEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gICNiYXNlRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRPZmZzZXQ6IFNreUFmZml4T2Zmc2V0IHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50UGxhY2VtZW50OiBTa3lBZmZpeFBsYWNlbWVudCB8IHVuZGVmaW5lZDtcblxuICAjbGF5b3V0Vmlld3BvcnQ6IEhUTUxFbGVtZW50O1xuXG4gICNvZmZzZXRDaGFuZ2U6IFN1YmplY3Q8U2t5QWZmaXhPZmZzZXRDaGFuZ2U+O1xuXG4gICNvZmZzZXRDaGFuZ2VPYnM6IE9ic2VydmFibGU8U2t5QWZmaXhPZmZzZXRDaGFuZ2U+O1xuXG4gICNvdmVyZmxvd1BhcmVudHM6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICAjb3ZlcmZsb3dTY3JvbGw6IFN1YmplY3Q8dm9pZD47XG5cbiAgI292ZXJmbG93U2Nyb2xsT2JzOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gICNwbGFjZW1lbnRDaGFuZ2U6IFN1YmplY3Q8U2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2U+O1xuXG4gICNwbGFjZW1lbnRDaGFuZ2VPYnM6IE9ic2VydmFibGU8U2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2U+O1xuXG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gICNzY3JvbGxDaGFuZ2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICN2aWV3cG9ydExpc3RlbmVyczogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICN2aWV3cG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyO1xuXG4gICN6b25lOiBOZ1pvbmU7XG5cbiAgI19jb25maWc6IEFmZml4Q29uZmlnT3JEZWZhdWx0cyA9IERFRkFVTFRfQUZGSVhfQ09ORklHO1xuXG4gICNzY3JvbGxDaGFuZ2VMaXN0ZW5lcjogKCkgPT4gdm9pZCA9ICgpID0+IHRoaXMuI3Njcm9sbENoYW5nZS5uZXh0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYWZmaXhlZEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgdmlld3BvcnRSdWxlcjogVmlld3BvcnRSdWxlcixcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgbGF5b3V0Vmlld3BvcnQ6IEhUTUxFbGVtZW50XG4gICkge1xuICAgIHRoaXMuI2FmZml4ZWRFbGVtZW50ID0gYWZmaXhlZEVsZW1lbnQ7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgICB0aGlzLiNsYXlvdXRWaWV3cG9ydCA9IGxheW91dFZpZXdwb3J0O1xuICAgIHRoaXMuI3ZpZXdwb3J0UnVsZXIgPSB2aWV3cG9ydFJ1bGVyO1xuICAgIHRoaXMuI3pvbmUgPSB6b25lO1xuXG4gICAgdGhpcy4jb2Zmc2V0Q2hhbmdlID0gbmV3IFN1YmplY3Q8U2t5QWZmaXhPZmZzZXRDaGFuZ2U+KCk7XG4gICAgdGhpcy4jb3ZlcmZsb3dTY3JvbGwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHRoaXMuI3BsYWNlbWVudENoYW5nZSA9IG5ldyBTdWJqZWN0PFNreUFmZml4UGxhY2VtZW50Q2hhbmdlPigpO1xuXG4gICAgdGhpcy4jb2Zmc2V0Q2hhbmdlT2JzID0gdGhpcy4jb2Zmc2V0Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuI292ZXJmbG93U2Nyb2xsT2JzID0gdGhpcy4jb3ZlcmZsb3dTY3JvbGwuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy4jcGxhY2VtZW50Q2hhbmdlT2JzID0gdGhpcy4jcGxhY2VtZW50Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFmZml4ZXMgYW4gZWxlbWVudCB0byBhIGJhc2UgZWxlbWVudC5cbiAgICogQHBhcmFtIGJhc2VFbGVtZW50IFRoZSBiYXNlIGVsZW1lbnQuXG4gICAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgdGhlIGFmZml4IGFjdGlvbi5cbiAgICovXG4gIHB1YmxpYyBhZmZpeFRvKGJhc2VFbGVtZW50OiBIVE1MRWxlbWVudCwgY29uZmlnPzogU2t5QWZmaXhDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLiNyZXNldCgpO1xuXG4gICAgdGhpcy4jY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuI2Jhc2VFbGVtZW50ID0gYmFzZUVsZW1lbnQ7XG4gICAgdGhpcy4jb3ZlcmZsb3dQYXJlbnRzID0gZ2V0T3ZlcmZsb3dQYXJlbnRzKGJhc2VFbGVtZW50KTtcblxuICAgIHRoaXMuI2FmZml4KCk7XG5cbiAgICBpZiAodGhpcy4jY29uZmlnLmlzU3RpY2t5KSB7XG4gICAgICB0aGlzLiNhZGRWaWV3cG9ydExpc3RlbmVycygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRDb25maWcoKTogU2t5QWZmaXhDb25maWcge1xuICAgIHJldHVybiB0aGlzLiNjb25maWc7XG4gIH1cblxuICAvKipcbiAgICogUmUtcnVucyB0aGUgYWZmaXggY2FsY3VsYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZmZpeCgpOiB2b2lkIHtcbiAgICAvLyBSZXNldCBjdXJyZW50IHBsYWNlbWVudCB0byBwcmVmZXJyZWQgcGxhY2VtZW50LlxuICAgIHRoaXMuI2N1cnJlbnRQbGFjZW1lbnQgPSB0aGlzLiNjb25maWcucGxhY2VtZW50O1xuICAgIHRoaXMuI2FmZml4KCk7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgdGhlIGFmZml4ZXIuXG4gICAqL1xuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNyZXNldCgpO1xuICAgIHRoaXMuI3BsYWNlbWVudENoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI29mZnNldENoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI292ZXJmbG93U2Nyb2xsLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jc2Nyb2xsQ2hhbmdlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAjYWZmaXgoKTogdm9pZCB7XG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy4jZ2V0T2Zmc2V0KCk7XG5cbiAgICBjb25zdCBvZmZzZXRQYXJlbnRSZWN0ID0gdGhpcy4jZ2V0T2Zmc2V0UGFyZW50UmVjdCgpO1xuICAgIG9mZnNldC50b3AgPSBvZmZzZXQudG9wIC0gb2Zmc2V0UGFyZW50UmVjdC50b3A7XG4gICAgb2Zmc2V0LmxlZnQgPSBvZmZzZXQubGVmdCAtIG9mZnNldFBhcmVudFJlY3QubGVmdDtcbiAgICBvZmZzZXQuYm90dG9tID0gb2Zmc2V0LmJvdHRvbSAtIG9mZnNldFBhcmVudFJlY3QudG9wO1xuICAgIG9mZnNldC5yaWdodCA9IG9mZnNldC5yaWdodCAtIG9mZnNldFBhcmVudFJlY3QubGVmdDtcblxuICAgIGlmICh0aGlzLiNpc05ld09mZnNldChvZmZzZXQpKSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5zZXRTdHlsZSh0aGlzLiNhZmZpeGVkRWxlbWVudCwgJ3RvcCcsIGAke29mZnNldC50b3B9cHhgKTtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKHRoaXMuI2FmZml4ZWRFbGVtZW50LCAnbGVmdCcsIGAke29mZnNldC5sZWZ0fXB4YCk7XG5cbiAgICAgIHRoaXMuI29mZnNldENoYW5nZS5uZXh0KHsgb2Zmc2V0IH0pO1xuICAgIH1cbiAgfVxuXG4gICNnZXRPZmZzZXRQYXJlbnRSZWN0KCk6IEFmZml4UmVjdCB7XG4gICAgLy8gRmlyZWZveCBzZXRzIHRoZSBvZmZzZXRQYXJlbnQgdG8gZG9jdW1lbnQuYm9keSBpZiB0aGUgZWxlbWVudCB1c2VzIGZpeGVkIHBvc2l0aW9uaW5nLlxuICAgIGlmIChcbiAgICAgIHRoaXMuI2NvbmZpZy5wb3NpdGlvbiA9PT0gJ2Fic29sdXRlJyAmJlxuICAgICAgdGhpcy4jYWZmaXhlZEVsZW1lbnQub2Zmc2V0UGFyZW50XG4gICAgKSB7XG4gICAgICByZXR1cm4gZ2V0T3V0ZXJSZWN0KHRoaXMuI2FmZml4ZWRFbGVtZW50Lm9mZnNldFBhcmVudCBhcyBIVE1MRWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxheW91dFJlY3QgPSBnZXRPdXRlclJlY3QodGhpcy4jbGF5b3V0Vmlld3BvcnQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG9wOiBsYXlvdXRSZWN0LnRvcCxcbiAgICAgICAgbGVmdDogbGF5b3V0UmVjdC5sZWZ0LFxuICAgICAgICBoZWlnaHQ6IGxheW91dFJlY3QuaGVpZ2h0LFxuICAgICAgICB3aWR0aDogbGF5b3V0UmVjdC53aWR0aCxcbiAgICAgICAgYm90dG9tOiBsYXlvdXRSZWN0LnRvcCAtIGxheW91dFJlY3QuaGVpZ2h0LFxuICAgICAgICByaWdodDogbGF5b3V0UmVjdC5sZWZ0IC0gbGF5b3V0UmVjdC53aWR0aCxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgI2dldE9mZnNldCgpOiBSZXF1aXJlZDxTa3lBZmZpeE9mZnNldD4ge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuI2dldEF1dG9GaXRDb250ZXh0UGFyZW50KCk7XG5cbiAgICBjb25zdCBtYXhBdHRlbXB0cyA9IDQ7XG4gICAgbGV0IGF0dGVtcHRzID0gMDtcblxuICAgIGxldCBpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlID0gZmFsc2U7XG4gICAgbGV0IG9mZnNldDogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+O1xuICAgIGxldCBwbGFjZW1lbnQgPSB0aGlzLiNjb25maWcucGxhY2VtZW50O1xuXG4gICAgZG8ge1xuICAgICAgb2Zmc2V0ID0gdGhpcy4jZ2V0UHJlZmVycmVkT2Zmc2V0KHBsYWNlbWVudCk7XG4gICAgICBpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlID0gaXNPZmZzZXRGdWxseVZpc2libGVXaXRoaW5QYXJlbnQoXG4gICAgICAgIHRoaXMuI3ZpZXdwb3J0UnVsZXIsXG4gICAgICAgIHBhcmVudCxcbiAgICAgICAgb2Zmc2V0LFxuICAgICAgICB0aGlzLiNjb25maWcuYXV0b0ZpdE92ZXJmbG93T2Zmc2V0XG4gICAgICApO1xuXG4gICAgICBpZiAoIXRoaXMuI2NvbmZpZy5lbmFibGVBdXRvRml0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzQWZmaXhlZEVsZW1lbnRGdWxseVZpc2libGUpIHtcbiAgICAgICAgcGxhY2VtZW50ID1cbiAgICAgICAgICBhdHRlbXB0cyAlIDIgPT09IDBcbiAgICAgICAgICAgID8gZ2V0SW52ZXJzZVBsYWNlbWVudChwbGFjZW1lbnQpXG4gICAgICAgICAgICA6IGdldE5leHRQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgICAgIH1cblxuICAgICAgYXR0ZW1wdHMrKztcbiAgICB9IHdoaWxlICghaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSAmJiBhdHRlbXB0cyA8IG1heEF0dGVtcHRzKTtcblxuICAgIGlmIChpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlKSB7XG4gICAgICBpZiAodGhpcy4jaXNCYXNlRWxlbWVudFZpc2libGUoKSkge1xuICAgICAgICB0aGlzLiNub3RpZnlQbGFjZW1lbnRDaGFuZ2UocGxhY2VtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI25vdGlmeVBsYWNlbWVudENoYW5nZShudWxsKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy4jY29uZmlnLmVuYWJsZUF1dG9GaXQpIHtcbiAgICAgIHRoaXMuI25vdGlmeVBsYWNlbWVudENoYW5nZShudWxsKTtcbiAgICB9XG5cbiAgICAvLyBObyBzdWl0YWJsZSBwbGFjZW1lbnQgd2FzIGZvdW5kLCBzbyByZXZlcnQgdG8gcHJlZmVycmVkIHBsYWNlbWVudC5cbiAgICByZXR1cm4gdGhpcy4jZ2V0UHJlZmVycmVkT2Zmc2V0KHRoaXMuI2NvbmZpZy5wbGFjZW1lbnQpO1xuICB9XG5cbiAgI2dldFByZWZlcnJlZE9mZnNldChwbGFjZW1lbnQ6IFNreUFmZml4UGxhY2VtZW50KTogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+IHtcbiAgICBpZiAoIXRoaXMuI2Jhc2VFbGVtZW50KSB7XG4gICAgICByZXR1cm4geyB0b3A6IDAsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBhZmZpeGVkUmVjdCA9IGdldE91dGVyUmVjdCh0aGlzLiNhZmZpeGVkRWxlbWVudCk7XG4gICAgY29uc3QgYmFzZVJlY3QgPSB0aGlzLiNiYXNlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IGhvcml6b250YWxBbGlnbm1lbnQgPSB0aGlzLiNjb25maWcuaG9yaXpvbnRhbEFsaWdubWVudDtcbiAgICBjb25zdCB2ZXJ0aWNhbEFsaWdubWVudCA9IHRoaXMuI2NvbmZpZy52ZXJ0aWNhbEFsaWdubWVudDtcbiAgICBjb25zdCBlbmFibGVBdXRvRml0ID0gdGhpcy4jY29uZmlnLmVuYWJsZUF1dG9GaXQ7XG5cbiAgICBsZXQgdG9wOiBudW1iZXI7XG4gICAgbGV0IGxlZnQ6IG51bWJlcjtcblxuICAgIGlmIChwbGFjZW1lbnQgPT09ICdhYm92ZScgfHwgcGxhY2VtZW50ID09PSAnYmVsb3cnKSB7XG4gICAgICBpZiAocGxhY2VtZW50ID09PSAnYWJvdmUnKSB7XG4gICAgICAgIHRvcCA9IGJhc2VSZWN0LnRvcCAtIGFmZml4ZWRSZWN0LmhlaWdodDtcblxuICAgICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgIHRvcCA9IHRvcCArIGFmZml4ZWRSZWN0LmhlaWdodDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICAgICAgICB0b3AgPSB0b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQgLyAyO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvcCA9IGJhc2VSZWN0LmJvdHRvbTtcblxuICAgICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbWlkZGxlJzpcbiAgICAgICAgICAgIHRvcCA9IHRvcCAtIGFmZml4ZWRSZWN0LmhlaWdodCAvIDI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgdG9wID0gdG9wIC0gYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChob3Jpem9udGFsQWxpZ25tZW50KSB7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIGxlZnQgPSBiYXNlUmVjdC5sZWZ0O1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgbGVmdCA9IGJhc2VSZWN0LmxlZnQgKyBiYXNlUmVjdC53aWR0aCAvIDIgLSBhZmZpeGVkUmVjdC53aWR0aCAvIDI7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgIGxlZnQgPSBiYXNlUmVjdC5yaWdodCAtIGFmZml4ZWRSZWN0LndpZHRoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocGxhY2VtZW50ID09PSAnbGVmdCcpIHtcbiAgICAgICAgbGVmdCA9IGJhc2VSZWN0LmxlZnQgLSBhZmZpeGVkUmVjdC53aWR0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxlZnQgPSBiYXNlUmVjdC5yaWdodDtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWdubWVudCkge1xuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgIHRvcCA9IGJhc2VSZWN0LnRvcDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdtaWRkbGUnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRvcCA9IGJhc2VSZWN0LnRvcCArIGJhc2VSZWN0LmhlaWdodCAvIDIgLSBhZmZpeGVkUmVjdC5oZWlnaHQgLyAyO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgdG9wID0gYmFzZVJlY3QuYm90dG9tIC0gYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9mZnNldDogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+ID0geyB0b3AsIGxlZnQsIGJvdHRvbTogMCwgcmlnaHQ6IDAgfTtcblxuICAgIGlmIChlbmFibGVBdXRvRml0KSB7XG4gICAgICBjb25zdCBhZGp1c3RtZW50cyA9IHRoaXMuI2FkanVzdE9mZnNldFRvT3ZlcmZsb3dQYXJlbnQoXG4gICAgICAgIHsgdG9wLCBsZWZ0IH0sXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgdGhpcy4jYmFzZUVsZW1lbnRcbiAgICAgICk7XG4gICAgICBvZmZzZXQudG9wID0gYWRqdXN0bWVudHMudG9wO1xuICAgICAgb2Zmc2V0LmxlZnQgPSBhZGp1c3RtZW50cy5sZWZ0O1xuICAgIH1cblxuICAgIG9mZnNldC5ib3R0b20gPSBvZmZzZXQudG9wICsgYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgIG9mZnNldC5yaWdodCA9IG9mZnNldC5sZWZ0ICsgYWZmaXhlZFJlY3Qud2lkdGg7XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNsaWdodGx5IGFkanVzdCB0aGUgb2Zmc2V0IHRvIGZpdCB3aXRoaW4gdGhlIHNjcm9sbCBwYXJlbnQncyBib3VuZGFyaWVzIGlmXG4gICAqIHRoZSBhZmZpeGVkIGVsZW1lbnQgd291bGQgb3RoZXJ3aXNlIGJlIGNsaXBwZWQuXG4gICAqL1xuICAjYWRqdXN0T2Zmc2V0VG9PdmVyZmxvd1BhcmVudChcbiAgICBvZmZzZXQ6IHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9LFxuICAgIHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQsXG4gICAgYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50XG4gICk6IHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9IHtcbiAgICBjb25zdCBhZmZpeGVkUmVjdCA9IGdldE91dGVyUmVjdCh0aGlzLiNhZmZpeGVkRWxlbWVudCk7XG4gICAgY29uc3QgYmFzZVJlY3QgPSBiYXNlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuI2dldEF1dG9GaXRDb250ZXh0UGFyZW50KCk7XG4gICAgbGV0IHBhcmVudE9mZnNldDogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+O1xuICAgIGlmICh0aGlzLiNjb25maWcuYXV0b0ZpdENvbnRleHQgPT09IFNreUFmZml4QXV0b0ZpdENvbnRleHQuT3ZlcmZsb3dQYXJlbnQpIHtcbiAgICAgIGlmICh0aGlzLiNjb25maWcuYXV0b0ZpdE92ZXJmbG93T2Zmc2V0KSB7XG4gICAgICAgIC8vIFdoZW4gdGhlIGNvbmZpZyBjb250YWlucyBhIHNwZWNpZmljIG9mZnNldC5cbiAgICAgICAgcGFyZW50T2Zmc2V0ID0gZ2V0RWxlbWVudE9mZnNldChcbiAgICAgICAgICBwYXJlbnQsXG4gICAgICAgICAgdGhpcy4jY29uZmlnLmF1dG9GaXRPdmVyZmxvd09mZnNldFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgaXNPZmZzZXRGdWxseVZpc2libGVXaXRoaW5QYXJlbnQodGhpcy4jdmlld3BvcnRSdWxlciwgcGFyZW50LCBiYXNlUmVjdClcbiAgICAgICkge1xuICAgICAgICAvLyBXaGVuIHRoZSBiYXNlIGVsZW1lbnQgaXMgZnVsbHkgdmlzaWJsZSB3aXRoaW4gdGhlIHBhcmVudCwgYWltIGZvciB0aGUgdmlzaWJsZSBwb3J0aW9uIG9mIHRoZSBwYXJlbnQgZWxlbWVudC5cbiAgICAgICAgcGFyZW50T2Zmc2V0ID0gZ2V0VmlzaWJsZVJlY3RGb3JFbGVtZW50KHRoaXMuI3ZpZXdwb3J0UnVsZXIsIHBhcmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBbnl3aGVyZSBpbiB0aGUgcGFyZW50IGVsZW1lbnQuXG4gICAgICAgIHBhcmVudE9mZnNldCA9IGdldE91dGVyUmVjdChwYXJlbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2aWV3cG9ydFJlY3QgPSB0aGlzLiN2aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0UmVjdCgpO1xuICAgICAgcGFyZW50T2Zmc2V0ID0ge1xuICAgICAgICB0b3A6IC12aWV3cG9ydFJlY3QudG9wLFxuICAgICAgICBsZWZ0OiAtdmlld3BvcnRSZWN0LmxlZnQsXG4gICAgICAgIGJvdHRvbTogLXZpZXdwb3J0UmVjdC5ib3R0b20sXG4gICAgICAgIHJpZ2h0OiAtdmlld3BvcnRSZWN0LnJpZ2h0LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBBIHBpeGVsIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgbGVld2F5IGJldHdlZW4gdGhlIGVkZ2Ugb2YgdGhlIG92ZXJmbG93IHBhcmVudCBhbmQgdGhlIGVkZ2VcbiAgICAvLyBvZiB0aGUgYmFzZSBlbGVtZW50IGJlZm9yZSBpdCBkaXNhcHBlYXJzIGZyb20gdmlldy5cbiAgICAvLyBJZiB0aGUgdmlzaWJsZSBwb3J0aW9uIG9mIHRoZSBiYXNlIGVsZW1lbnQgaXMgbGVzcyB0aGFuIHRoaXMgcGl4ZWwgdmFsdWUsIHRoZSBhdXRvLWZpdFxuICAgIC8vIGZ1bmN0aW9uYWxpdHkgYXR0ZW1wdHMgdG8gZmluZCBhbm90aGVyIHBsYWNlbWVudC5cbiAgICBjb25zdCBkZWZhdWx0UGl4ZWxUb2xlcmFuY2UgPSA0MDtcbiAgICBsZXQgcGl4ZWxUb2xlcmFuY2U6IG51bWJlcjtcblxuICAgIGNvbnN0IG9yaWdpbmFsT2Zmc2V0VG9wID0gb2Zmc2V0LnRvcDtcbiAgICBjb25zdCBvcmlnaW5hbE9mZnNldExlZnQgPSBvZmZzZXQubGVmdDtcblxuICAgIHN3aXRjaCAocGxhY2VtZW50KSB7XG4gICAgICBjYXNlICdhYm92ZSc6XG4gICAgICBjYXNlICdiZWxvdyc6XG4gICAgICAgIC8vIEtlZXAgdGhlIGFmZml4ZWQgZWxlbWVudCB3aXRoaW4gdGhlIG92ZXJmbG93IHBhcmVudC5cbiAgICAgICAgaWYgKG9mZnNldC5sZWZ0IDwgcGFyZW50T2Zmc2V0LmxlZnQpIHtcbiAgICAgICAgICBvZmZzZXQubGVmdCA9IHBhcmVudE9mZnNldC5sZWZ0O1xuICAgICAgICB9IGVsc2UgaWYgKG9mZnNldC5sZWZ0ICsgYWZmaXhlZFJlY3Qud2lkdGggPiBwYXJlbnRPZmZzZXQucmlnaHQpIHtcbiAgICAgICAgICBvZmZzZXQubGVmdCA9IHBhcmVudE9mZnNldC5yaWdodCAtIGFmZml4ZWRSZWN0LndpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlIGEgc21hbGxlciBwaXhlbCB0b2xlcmFuY2UgaWYgdGhlIGJhc2UgZWxlbWVudCB3aWR0aCBpcyBsZXNzIHRoYW4gdGhlIGRlZmF1bHQuXG4gICAgICAgIHBpeGVsVG9sZXJhbmNlID0gTWF0aC5taW4oZGVmYXVsdFBpeGVsVG9sZXJhbmNlLCBiYXNlUmVjdC53aWR0aCk7XG5cbiAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBhZmZpeGVkIGVsZW1lbnQgbmV2ZXIgZGV0YWNoZXMgZnJvbSB0aGUgYmFzZSBlbGVtZW50LlxuICAgICAgICBpZiAoXG4gICAgICAgICAgb2Zmc2V0LmxlZnQgKyBwaXhlbFRvbGVyYW5jZSA+IGJhc2VSZWN0LnJpZ2h0IHx8XG4gICAgICAgICAgb2Zmc2V0LmxlZnQgKyBhZmZpeGVkUmVjdC53aWR0aCAtIHBpeGVsVG9sZXJhbmNlIDwgYmFzZVJlY3QubGVmdFxuICAgICAgICApIHtcbiAgICAgICAgICBvZmZzZXQubGVmdCA9IG9yaWdpbmFsT2Zmc2V0TGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgLy8gS2VlcCB0aGUgYWZmaXhlZCBlbGVtZW50IHdpdGhpbiB0aGUgb3ZlcmZsb3cgcGFyZW50LlxuICAgICAgICBpZiAob2Zmc2V0LnRvcCA8IHBhcmVudE9mZnNldC50b3ApIHtcbiAgICAgICAgICBvZmZzZXQudG9wID0gcGFyZW50T2Zmc2V0LnRvcDtcbiAgICAgICAgfSBlbHNlIGlmIChvZmZzZXQudG9wICsgYWZmaXhlZFJlY3QuaGVpZ2h0ID4gcGFyZW50T2Zmc2V0LmJvdHRvbSkge1xuICAgICAgICAgIG9mZnNldC50b3AgPSBwYXJlbnRPZmZzZXQuYm90dG9tIC0gYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlIGEgc21hbGxlciBwaXhlbCB0b2xlcmFuY2UgaWYgdGhlIGJhc2UgZWxlbWVudCBoZWlnaHQgaXMgbGVzcyB0aGFuIHRoZSBkZWZhdWx0LlxuICAgICAgICBwaXhlbFRvbGVyYW5jZSA9IE1hdGgubWluKGRlZmF1bHRQaXhlbFRvbGVyYW5jZSwgYmFzZVJlY3QuaGVpZ2h0KTtcblxuICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGFmZml4ZWQgZWxlbWVudCBuZXZlciBkZXRhY2hlcyBmcm9tIHRoZSBiYXNlIGVsZW1lbnQuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBvZmZzZXQudG9wICsgcGl4ZWxUb2xlcmFuY2UgPiBiYXNlUmVjdC5ib3R0b20gfHxcbiAgICAgICAgICBvZmZzZXQudG9wICsgYWZmaXhlZFJlY3QuaGVpZ2h0IC0gcGl4ZWxUb2xlcmFuY2UgPCBiYXNlUmVjdC50b3BcbiAgICAgICAgKSB7XG4gICAgICAgICAgb2Zmc2V0LnRvcCA9IG9yaWdpbmFsT2Zmc2V0VG9wO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfVxuXG4gICNnZXRJbW1lZGlhdGVPdmVyZmxvd1BhcmVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuI292ZXJmbG93UGFyZW50c1swXTtcbiAgfVxuXG4gICNnZXRBdXRvRml0Q29udGV4dFBhcmVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgYm9keUVsZW1lbnQgPSB0aGlzLiNvdmVyZmxvd1BhcmVudHNbdGhpcy4jb3ZlcmZsb3dQYXJlbnRzLmxlbmd0aCAtIDFdO1xuXG4gICAgcmV0dXJuIHRoaXMuI2NvbmZpZy5hdXRvRml0Q29udGV4dCA9PT0gU2t5QWZmaXhBdXRvRml0Q29udGV4dC5PdmVyZmxvd1BhcmVudFxuICAgICAgPyB0aGlzLiNnZXRJbW1lZGlhdGVPdmVyZmxvd1BhcmVudCgpXG4gICAgICA6IGJvZHlFbGVtZW50O1xuICB9XG5cbiAgI25vdGlmeVBsYWNlbWVudENoYW5nZShwbGFjZW1lbnQ6IFNreUFmZml4UGxhY2VtZW50IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNjdXJyZW50UGxhY2VtZW50ICE9PSBwbGFjZW1lbnQpIHtcbiAgICAgIHRoaXMuI2N1cnJlbnRQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPz8gdW5kZWZpbmVkO1xuICAgICAgdGhpcy4jcGxhY2VtZW50Q2hhbmdlLm5leHQoe1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy4jcmVtb3ZlVmlld3BvcnRMaXN0ZW5lcnMoKTtcblxuICAgIHRoaXMuI292ZXJmbG93UGFyZW50cyA9IFtdO1xuXG4gICAgdGhpcy4jY29uZmlnID1cbiAgICAgIHRoaXMuI2Jhc2VFbGVtZW50ID1cbiAgICAgIHRoaXMuI2N1cnJlbnRQbGFjZW1lbnQgPVxuICAgICAgdGhpcy4jY3VycmVudE9mZnNldCA9XG4gICAgICAgIHVuZGVmaW5lZDtcbiAgfVxuXG4gICNpc05ld09mZnNldChvZmZzZXQ6IFNreUFmZml4T2Zmc2V0KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuI2N1cnJlbnRPZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy4jY3VycmVudE9mZnNldCA9IG9mZnNldDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuI2N1cnJlbnRPZmZzZXQudG9wID09PSBvZmZzZXQudG9wICYmXG4gICAgICB0aGlzLiNjdXJyZW50T2Zmc2V0LmxlZnQgPT09IG9mZnNldC5sZWZ0XG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy4jY3VycmVudE9mZnNldCA9IG9mZnNldDtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgI2lzQmFzZUVsZW1lbnRWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIC8vIENhbid0IGdldCBoZXJlIGlmIHRoZSBiYXNlIGVsZW1lbnQgaXMgdW5kZWZpbmVkLlxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghdGhpcy4jYmFzZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlUmVjdCA9IHRoaXMuI2Jhc2VFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgcmV0dXJuIGlzT2Zmc2V0UGFydGlhbGx5VmlzaWJsZVdpdGhpblBhcmVudChcbiAgICAgIHRoaXMuI3ZpZXdwb3J0UnVsZXIsXG4gICAgICB0aGlzLiNnZXRJbW1lZGlhdGVPdmVyZmxvd1BhcmVudCgpLFxuICAgICAge1xuICAgICAgICB0b3A6IGJhc2VSZWN0LnRvcCxcbiAgICAgICAgbGVmdDogYmFzZVJlY3QubGVmdCxcbiAgICAgICAgcmlnaHQ6IGJhc2VSZWN0LnJpZ2h0LFxuICAgICAgICBib3R0b206IGJhc2VSZWN0LmJvdHRvbSxcbiAgICAgIH0sXG4gICAgICB0aGlzLiNjb25maWcuYXV0b0ZpdE92ZXJmbG93T2Zmc2V0XG4gICAgKTtcbiAgfVxuXG4gICNhZGRWaWV3cG9ydExpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLiN2aWV3cG9ydExpc3RlbmVycyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8vIFJlc2l6ZSBhbmQgb3JpZW50YXRpb24gY2hhbmdlcy5cbiAgICB0aGlzLiN2aWV3cG9ydExpc3RlbmVycy5hZGQoXG4gICAgICB0aGlzLiN2aWV3cG9ydFJ1bGVyLmNoYW5nZSgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2FmZml4KCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLiN2aWV3cG9ydExpc3RlbmVycy5hZGQoXG4gICAgICB0aGlzLiNzY3JvbGxDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jYWZmaXgoKTtcbiAgICAgICAgdGhpcy4jb3ZlcmZsb3dTY3JvbGwubmV4dCgpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gTGlzdGVuIGZvciBzY3JvbGwgZXZlbnRzIG9uIHRoZSB3aW5kb3csIHZpc3VhbCB2aWV3cG9ydCwgYW5kIGFueSBvdmVyZmxvdyBwYXJlbnRzLlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vYmxvZy92aXN1YWwtdmlld3BvcnQtYXBpLyNldmVudHMtb25seS1maXJlLXdoZW4tdGhlLXZpc3VhbC12aWV3cG9ydC1jaGFuZ2VzXG4gICAgdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBbd2luZG93LCB3aW5kb3cudmlzdWFsVmlld3BvcnQsIC4uLnRoaXMuI292ZXJmbG93UGFyZW50c10uZm9yRWFjaChcbiAgICAgICAgKHBhcmVudEVsZW1lbnQpID0+IHtcbiAgICAgICAgICBwYXJlbnRFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLiNzY3JvbGxDaGFuZ2VMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICAjcmVtb3ZlVmlld3BvcnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy4jdmlld3BvcnRMaXN0ZW5lcnM/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIFt3aW5kb3csIHdpbmRvdy52aXN1YWxWaWV3cG9ydCwgLi4udGhpcy4jb3ZlcmZsb3dQYXJlbnRzXS5mb3JFYWNoKFxuICAgICAgICAocGFyZW50RWxlbWVudCkgPT4ge1xuICAgICAgICAgIHBhcmVudEVsZW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAnc2Nyb2xsJyxcbiAgICAgICAgICAgIHRoaXMuI3Njcm9sbENoYW5nZUxpc3RlbmVyXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,82 +1,107 @@
1
- import { Injectable, NgZone, inject, } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import { finalize } from 'rxjs/operators';
1
+ import { ApplicationRef, Injectable, NgZone, inject, } from '@angular/core';
2
+ import { Observable, Subject, animationFrames, distinctUntilChanged, filter, map, shareReplay, take, takeUntil, throttle, } from 'rxjs';
4
3
  import { SkyAppWindowRef } from '../window/window-ref';
5
4
  import * as i0 from "@angular/core";
5
+ const errorTest = /ResizeObserver loop completed with undelivered notifications/i;
6
+ let errorLogRegistered = false;
7
+ let originalOnError = undefined;
8
+ const errorHandler = (event) => {
9
+ if (errorTest.test(event.message)) {
10
+ event.stopImmediatePropagation();
11
+ event.stopPropagation();
12
+ event.preventDefault();
13
+ return false;
14
+ }
15
+ return undefined;
16
+ };
17
+ const onError = (event) => {
18
+ const message = typeof event === 'string' ? event : event.message;
19
+ // This is necessary to prevent the test runner from failing on errors, but challenging to reliably test.
20
+ /* istanbul ignore next */
21
+ if (errorTest.test(message)) {
22
+ if (event instanceof ErrorEvent) {
23
+ event.stopImmediatePropagation();
24
+ event.stopPropagation();
25
+ event.preventDefault();
26
+ }
27
+ return false;
28
+ }
29
+ return originalOnError?.call(window, event);
30
+ };
6
31
  /**
7
32
  * Service to create rxjs observables for changes to the content box dimensions of elements.
8
33
  */
9
34
  export class SkyResizeObserverService {
10
- #next = new Map();
11
- #resizeObserver = new ResizeObserver((entries) => {
12
- entries.forEach((entry) => this.#callback(entry));
13
- });
14
- #tracking = [];
35
+ #ngUnsubscribe = new Subject();
36
+ #resizeObserver = new ResizeObserver((entries) => this.#resizeSubject.next(entries));
37
+ #resizeSubject = new Subject();
38
+ #tracking = new Map();
15
39
  #window = inject(SkyAppWindowRef);
16
40
  #zone = inject(NgZone);
41
+ constructor() {
42
+ this.#expectWindowError();
43
+ // Because the resize observer is a native browser API, it does not shut down
44
+ // synchronously when the service is destroyed. Leave the error handling
45
+ // accommodation in place until the application is destroyed. This also works
46
+ // for the test runner.
47
+ inject(ApplicationRef).onDestroy(() => this.#resetWindowError());
48
+ }
17
49
  ngOnDestroy() {
18
- this.#next.forEach((value) => this.#window.nativeWindow.cancelAnimationFrame(value));
19
- this.#tracking.forEach((value) => {
20
- value.subject.complete();
21
- this.#resizeObserver.unobserve(value.element);
22
- });
50
+ this.#ngUnsubscribe.next();
51
+ this.#ngUnsubscribe.complete();
23
52
  this.#resizeObserver.disconnect();
24
53
  }
25
54
  /**
26
55
  * Create rxjs observable to get size changes for an element ref.
27
56
  */
28
57
  observe(element) {
29
- return this.#observeAndTrack(element).subjectObservable;
58
+ const checkTracking = this.#tracking.has(element.nativeElement);
59
+ if (!checkTracking) {
60
+ this.#tracking.set(element.nativeElement, new Observable((observer) => {
61
+ const subscription = this.#resizeSubject.subscribe(observer);
62
+ this.#resizeObserver?.observe(element.nativeElement);
63
+ return () => {
64
+ this.#resizeObserver?.unobserve(element.nativeElement);
65
+ subscription.unsubscribe();
66
+ this.#tracking.delete(element.nativeElement);
67
+ };
68
+ }).pipe(filter(Boolean), filter((entries) => entries.some((entry) => entry.target === element.nativeElement)), map((entries) => entries.find((entry) => entry.target === element.nativeElement)),
69
+ // Ignore subpixel changes.
70
+ distinctUntilChanged((a, b) => Math.round(a.contentRect.width) ===
71
+ Math.round(b.contentRect.width) &&
72
+ Math.round(a.contentRect.height) ===
73
+ Math.round(b.contentRect.height)),
74
+ // Emit the last value for late subscribers. Track references so it
75
+ // un-observes when all subscribers are gone.
76
+ shareReplay({ bufferSize: 1, refCount: true }),
77
+ // Only emit prior to an animation frame to prevent layout thrashing.
78
+ throttle(() => animationFrames().pipe(take(1)), {
79
+ leading: false,
80
+ trailing: true,
81
+ }), takeUntil(this.#ngUnsubscribe)));
82
+ }
83
+ return this.#tracking.get(element.nativeElement);
30
84
  }
31
- #observeAndTrack(element) {
32
- const checkTracking = this.#tracking.findIndex((value) => {
33
- return !value.subject.closed && value.element === element.nativeElement;
34
- });
35
- if (checkTracking === -1) {
36
- this.#resizeObserver.observe(element.nativeElement);
85
+ #expectWindowError() {
86
+ if (!errorLogRegistered) {
87
+ errorLogRegistered = true;
88
+ // ResizeObserver throws an error when it is disconnected while it is
89
+ // still observing an element. When an element is no longer observed, this
90
+ // is not a concern.
91
+ this.#zone.runOutsideAngular(() => this.#window.nativeWindow.addEventListener('error', errorHandler));
92
+ }
93
+ if (this.#window.nativeWindow.onerror !== onError) {
94
+ originalOnError = this.#window.nativeWindow.onerror;
95
+ this.#window.nativeWindow.onerror = onError;
37
96
  }
38
- const subject = new Subject();
39
- const subjectObservable = subject.pipe(finalize(() => {
40
- // Are there any other tracking entries still watching this element?
41
- const checkTracking = this.#tracking.findIndex((value) => {
42
- return (value.subject !== subject &&
43
- !value.subject.closed &&
44
- value.element === element.nativeElement);
45
- });
46
- if (checkTracking === -1) {
47
- this.#resizeObserver.unobserve(element.nativeElement);
48
- const deleteTracking = this.#tracking.findIndex((value) => value.subject === subject);
49
- if (deleteTracking > -1) {
50
- this.#tracking.splice(deleteTracking, 1);
51
- }
52
- }
53
- }));
54
- const tracking = {
55
- element: element.nativeElement,
56
- subject,
57
- subjectObservable,
58
- };
59
- this.#tracking.push(tracking);
60
- return tracking;
61
97
  }
62
- #callback(entry) {
63
- this.#tracking
64
- .filter((value) => !value.subject.closed)
65
- .forEach((value) => {
66
- /* istanbul ignore else */
67
- if (value.element === entry.target) {
68
- // Execute the callback within NgZone because Angular does not "monkey patch"
69
- // ResizeObserver like it does for other features in the DOM.
70
- if (this.#next.has(value.subject)) {
71
- this.#window.nativeWindow.cancelAnimationFrame(this.#next.get(value.subject));
72
- }
73
- this.#next.set(value.subject, this.#window.nativeWindow.requestAnimationFrame(() => {
74
- this.#zone.run(() => {
75
- value.subject.next(entry);
76
- });
77
- }));
78
- }
79
- });
98
+ #resetWindowError() {
99
+ this.#window.nativeWindow.removeEventListener('error', errorHandler);
100
+ if (originalOnError) {
101
+ this.#window.nativeWindow.onerror = originalOnError;
102
+ originalOnError = undefined;
103
+ }
104
+ errorLogRegistered = false;
80
105
  }
81
106
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SkyResizeObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
82
107
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SkyResizeObserverService, providedIn: 'root' }); }
@@ -86,5 +111,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
86
111
  args: [{
87
112
  providedIn: 'root',
88
113
  }]
89
- }] });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvcmVzaXplLW9ic2VydmVyL3Jlc2l6ZS1vYnNlcnZlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxVQUFVLEVBQ1YsTUFBTSxFQUVOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBUXZEOztHQUVHO0FBSUgsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQXdDLENBQUM7SUFDeEQsZUFBZSxHQUFHLElBQUksY0FBYyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDL0MsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0gsU0FBUyxHQUE2QixFQUFFLENBQUM7SUFDekMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWhCLFdBQVc7UUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FDdEQsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsT0FB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QVksQ0FBQyxvQkFBb0IsQ0FDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUM5QixDQUFDO2lCQUNIO2dCQUNELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNaLEtBQUssQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUF1QixDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtvQkFDL0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO3dCQUNsQixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDNUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQzthQUNIO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQTlGVSx3QkFBd0I7a0hBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzsyRkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lBcHBXaW5kb3dSZWYgfSBmcm9tICcuLi93aW5kb3cvd2luZG93LXJlZic7XG5cbnR5cGUgUmVzaXplT2JzZXJ2ZXJUcmFja2luZyA9IHtcbiAgZWxlbWVudDogRWxlbWVudDtcbiAgc3ViamVjdDogU3ViamVjdDxSZXNpemVPYnNlcnZlckVudHJ5PjtcbiAgc3ViamVjdE9ic2VydmFibGU6IE9ic2VydmFibGU8UmVzaXplT2JzZXJ2ZXJFbnRyeT47XG59O1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gY3JlYXRlIHJ4anMgb2JzZXJ2YWJsZXMgZm9yIGNoYW5nZXMgdG8gdGhlIGNvbnRlbnQgYm94IGRpbWVuc2lvbnMgb2YgZWxlbWVudHMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAjbmV4dCA9IG5ldyBNYXA8U3ViamVjdDxSZXNpemVPYnNlcnZlckVudHJ5PiwgbnVtYmVyPigpO1xuICAjcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB0aGlzLiNjYWxsYmFjayhlbnRyeSkpO1xuICB9KTtcbiAgI3RyYWNraW5nOiBSZXNpemVPYnNlcnZlclRyYWNraW5nW10gPSBbXTtcbiAgI3dpbmRvdyA9IGluamVjdChTa3lBcHBXaW5kb3dSZWYpO1xuICAjem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZXh0LmZvckVhY2goKHZhbHVlKSA9PlxuICAgICAgdGhpcy4jd2luZG93Lm5hdGl2ZVdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh2YWx1ZSlcbiAgICApO1xuICAgIHRoaXMuI3RyYWNraW5nLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICB2YWx1ZS5zdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLiNyZXNpemVPYnNlcnZlci51bm9ic2VydmUodmFsdWUuZWxlbWVudCk7XG4gICAgfSk7XG4gICAgdGhpcy4jcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSByeGpzIG9ic2VydmFibGUgdG8gZ2V0IHNpemUgY2hhbmdlcyBmb3IgYW4gZWxlbWVudCByZWYuXG4gICAqL1xuICBwdWJsaWMgb2JzZXJ2ZShlbGVtZW50OiBFbGVtZW50UmVmKTogT2JzZXJ2YWJsZTxSZXNpemVPYnNlcnZlckVudHJ5PiB7XG4gICAgcmV0dXJuIHRoaXMuI29ic2VydmVBbmRUcmFjayhlbGVtZW50KS5zdWJqZWN0T2JzZXJ2YWJsZTtcbiAgfVxuXG4gICNvYnNlcnZlQW5kVHJhY2soZWxlbWVudDogRWxlbWVudFJlZik6IFJlc2l6ZU9ic2VydmVyVHJhY2tpbmcge1xuICAgIGNvbnN0IGNoZWNrVHJhY2tpbmcgPSB0aGlzLiN0cmFja2luZy5maW5kSW5kZXgoKHZhbHVlKSA9PiB7XG4gICAgICByZXR1cm4gIXZhbHVlLnN1YmplY3QuY2xvc2VkICYmIHZhbHVlLmVsZW1lbnQgPT09IGVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB9KTtcblxuICAgIGlmIChjaGVja1RyYWNraW5nID09PSAtMSkge1xuICAgICAgdGhpcy4jcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgU3ViamVjdDxSZXNpemVPYnNlcnZlckVudHJ5PigpO1xuICAgIGNvbnN0IHN1YmplY3RPYnNlcnZhYmxlID0gc3ViamVjdC5waXBlKFxuICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAvLyBBcmUgdGhlcmUgYW55IG90aGVyIHRyYWNraW5nIGVudHJpZXMgc3RpbGwgd2F0Y2hpbmcgdGhpcyBlbGVtZW50P1xuICAgICAgICBjb25zdCBjaGVja1RyYWNraW5nID0gdGhpcy4jdHJhY2tpbmcuZmluZEluZGV4KCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB2YWx1ZS5zdWJqZWN0ICE9PSBzdWJqZWN0ICYmXG4gICAgICAgICAgICAhdmFsdWUuc3ViamVjdC5jbG9zZWQgJiZcbiAgICAgICAgICAgIHZhbHVlLmVsZW1lbnQgPT09IGVsZW1lbnQubmF0aXZlRWxlbWVudFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjaGVja1RyYWNraW5nID09PSAtMSkge1xuICAgICAgICAgIHRoaXMuI3Jlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShlbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgIGNvbnN0IGRlbGV0ZVRyYWNraW5nID0gdGhpcy4jdHJhY2tpbmcuZmluZEluZGV4KFxuICAgICAgICAgICAgKHZhbHVlKSA9PiB2YWx1ZS5zdWJqZWN0ID09PSBzdWJqZWN0XG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoZGVsZXRlVHJhY2tpbmcgPiAtMSkge1xuICAgICAgICAgICAgdGhpcy4jdHJhY2tpbmcuc3BsaWNlKGRlbGV0ZVRyYWNraW5nLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IHRyYWNraW5nID0ge1xuICAgICAgZWxlbWVudDogZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgc3ViamVjdCxcbiAgICAgIHN1YmplY3RPYnNlcnZhYmxlLFxuICAgIH07XG5cbiAgICB0aGlzLiN0cmFja2luZy5wdXNoKHRyYWNraW5nKTtcblxuICAgIHJldHVybiB0cmFja2luZztcbiAgfVxuXG4gICNjYWxsYmFjayhlbnRyeTogUmVzaXplT2JzZXJ2ZXJFbnRyeSk6IHZvaWQge1xuICAgIHRoaXMuI3RyYWNraW5nXG4gICAgICAuZmlsdGVyKCh2YWx1ZSkgPT4gIXZhbHVlLnN1YmplY3QuY2xvc2VkKVxuICAgICAgLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICh2YWx1ZS5lbGVtZW50ID09PSBlbnRyeS50YXJnZXQpIHtcbiAgICAgICAgICAvLyBFeGVjdXRlIHRoZSBjYWxsYmFjayB3aXRoaW4gTmdab25lIGJlY2F1c2UgQW5ndWxhciBkb2VzIG5vdCBcIm1vbmtleSBwYXRjaFwiXG4gICAgICAgICAgLy8gUmVzaXplT2JzZXJ2ZXIgbGlrZSBpdCBkb2VzIGZvciBvdGhlciBmZWF0dXJlcyBpbiB0aGUgRE9NLlxuICAgICAgICAgIGlmICh0aGlzLiNuZXh0Lmhhcyh2YWx1ZS5zdWJqZWN0KSkge1xuICAgICAgICAgICAgdGhpcy4jd2luZG93Lm5hdGl2ZVdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShcbiAgICAgICAgICAgICAgdGhpcy4jbmV4dC5nZXQodmFsdWUuc3ViamVjdClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuI25leHQuc2V0KFxuICAgICAgICAgICAgdmFsdWUuc3ViamVjdCxcbiAgICAgICAgICAgICh0aGlzLiN3aW5kb3cubmF0aXZlV2luZG93IGFzIFdpbmRvdykucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy4jem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhbHVlLnN1YmplY3QubmV4dChlbnRyeSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIl19
114
+ }], ctorParameters: function () { return []; } });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvcmVzaXplLW9ic2VydmVyL3Jlc2l6ZS1vYnNlcnZlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBRWQsVUFBVSxFQUNWLE1BQU0sRUFFTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILFdBQVcsRUFDWCxJQUFJLEVBQ0osU0FBUyxFQUNULFFBQVEsR0FDVCxNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFdkQsTUFBTSxTQUFTLEdBQ2IsK0RBQStELENBQUM7QUFDbEUsSUFBSSxrQkFBa0IsR0FBRyxLQUFLLENBQUM7QUFDL0IsSUFBSSxlQUFlLEdBRUgsU0FBUyxDQUFDO0FBRTFCLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBaUIsRUFBdUIsRUFBRTtJQUM5RCxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ2pDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBMEIsRUFBdUIsRUFBRTtJQUNsRSxNQUFNLE9BQU8sR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxD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Q2hDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FDbEUsQ0FBQztTQUNIO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLEtBQUssT0FBTyxFQUFFO1lBQ2pELGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7WUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUM3QztJQUNILENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDckUsSUFBSSxlQUFlLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQztZQUNwRCxlQUFlLEdBQUcsU0FBUyxDQUFDO1NBQzdCO1FBQ0Qsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7OEdBdEdVLHdCQUF3QjtrSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzJGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGFuaW1hdGlvbkZyYW1lcyxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxuICB0aHJvdHRsZSxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreUFwcFdpbmRvd1JlZiB9IGZyb20gJy4uL3dpbmRvdy93aW5kb3ctcmVmJztcblxuY29uc3QgZXJyb3JUZXN0ID1cbiAgL1Jlc2l6ZU9ic2VydmVyIGxvb3AgY29tcGxldGVkIHdpdGggdW5kZWxpdmVyZWQgbm90aWZpY2F0aW9ucy9pO1xubGV0IGVycm9yTG9nUmVnaXN0ZXJlZCA9IGZhbHNlO1xubGV0IG9yaWdpbmFsT25FcnJvcjpcbiAgfCAoKGV2ZW50OiBzdHJpbmcgfCBFdmVudCkgPT4gYm9vbGVhbiB8IHVuZGVmaW5lZClcbiAgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbmNvbnN0IGVycm9ySGFuZGxlciA9IChldmVudDogRXJyb3JFdmVudCk6IGJvb2xlYW4gfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoZXJyb3JUZXN0LnRlc3QoZXZlbnQubWVzc2FnZSkpIHtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuY29uc3Qgb25FcnJvciA9IChldmVudDogc3RyaW5nIHwgRXJyb3JFdmVudCk6IGJvb2xlYW4gfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBtZXNzYWdlID0gdHlwZW9mIGV2ZW50ID09PSAnc3RyaW5nJyA/IGV2ZW50IDogZXZlbnQubWVzc2FnZTtcbiAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgdG8gcHJldmVudCB0aGUgdGVzdCBydW5uZXIgZnJvbSBmYWlsaW5nIG9uIGVycm9ycywgYnV0IGNoYWxsZW5naW5nIHRvIHJlbGlhYmx5IHRlc3QuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmIChlcnJvclRlc3QudGVzdChtZXNzYWdlKSkge1xuICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIG9yaWdpbmFsT25FcnJvcj8uY2FsbCh3aW5kb3csIGV2ZW50KTtcbn07XG5cbi8qKlxuICogU2VydmljZSB0byBjcmVhdGUgcnhqcyBvYnNlcnZhYmxlcyBmb3IgY2hhbmdlcyB0byB0aGUgY29udGVudCBib3ggZGltZW5zaW9ucyBvZiBlbGVtZW50cy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreVJlc2l6ZU9ic2VydmVyU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5ICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcmVhZG9ubHkgI3Jlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PlxuICAgIHRoaXMuI3Jlc2l6ZVN1YmplY3QubmV4dChlbnRyaWVzKVxuICApO1xuICByZWFkb25seSAjcmVzaXplU3ViamVjdCA9IG5ldyBTdWJqZWN0PFJlc2l6ZU9ic2VydmVyRW50cnlbXT4oKTtcbiAgcmVhZG9ubHkgI3RyYWNraW5nID0gbmV3IE1hcDxFbGVtZW50LCBPYnNlcnZhYmxlPFJlc2l6ZU9ic2VydmVyRW50cnk+PigpO1xuICByZWFkb25seSAjd2luZG93ID0gaW5qZWN0KFNreUFwcFdpbmRvd1JlZik7XG4gIHJlYWRvbmx5ICN6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy4jZXhwZWN0V2luZG93RXJyb3IoKTtcbiAgICAvLyBCZWNhdXNlIHRoZSByZXNpemUgb2JzZXJ2ZXIgaXMgYSBuYXRpdmUgYnJvd3NlciBBUEksIGl0IGRvZXMgbm90IHNodXQgZG93blxuICAgIC8vIHN5bmNocm9ub3VzbHkgd2hlbiB0aGUgc2VydmljZSBpcyBkZXN0cm95ZWQuIExlYXZlIHRoZSBlcnJvciBoYW5kbGluZ1xuICAgIC8vIGFjY29tbW9kYXRpb24gaW4gcGxhY2UgdW50aWwgdGhlIGFwcGxpY2F0aW9uIGlzIGRlc3Ryb3llZC4gVGhpcyBhbHNvIHdvcmtzXG4gICAgLy8gZm9yIHRoZSB0ZXN0IHJ1bm5lci5cbiAgICBpbmplY3QoQXBwbGljYXRpb25SZWYpLm9uRGVzdHJveSgoKSA9PiB0aGlzLiNyZXNldFdpbmRvd0Vycm9yKCkpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiNyZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHJ4anMgb2JzZXJ2YWJsZSB0byBnZXQgc2l6ZSBjaGFuZ2VzIGZvciBhbiBlbGVtZW50IHJlZi5cbiAgICovXG4gIHB1YmxpYyBvYnNlcnZlKGVsZW1lbnQ6IEVsZW1lbnRSZWYpOiBPYnNlcnZhYmxlPFJlc2l6ZU9ic2VydmVyRW50cnk+IHtcbiAgICBjb25zdCBjaGVja1RyYWNraW5nID0gdGhpcy4jdHJhY2tpbmcuaGFzKGVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG5cbiAgICBpZiAoIWNoZWNrVHJhY2tpbmcpIHtcbiAgICAgIHRoaXMuI3RyYWNraW5nLnNldChcbiAgICAgICAgZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICBuZXcgT2JzZXJ2YWJsZTxSZXNpemVPYnNlcnZlckVudHJ5W10+KChvYnNlcnZlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMuI3Jlc2l6ZVN1YmplY3Quc3Vic2NyaWJlKG9ic2VydmVyKTtcbiAgICAgICAgICB0aGlzLiNyZXNpemVPYnNlcnZlcj8ub2JzZXJ2ZShlbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiNyZXNpemVPYnNlcnZlcj8udW5vYnNlcnZlKGVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuI3RyYWNraW5nLmRlbGV0ZShlbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgIH07XG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICAgIGZpbHRlcigoZW50cmllcykgPT5cbiAgICAgICAgICAgIGVudHJpZXMuc29tZSgoZW50cnkpID0+IGVudHJ5LnRhcmdldCA9PT0gZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICksXG4gICAgICAgICAgbWFwKFxuICAgICAgICAgICAgKGVudHJpZXMpID0+XG4gICAgICAgICAgICAgIGVudHJpZXMuZmluZChcbiAgICAgICAgICAgICAgICAoZW50cnkpID0+IGVudHJ5LnRhcmdldCA9PT0gZWxlbWVudC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAgICkgYXMgUmVzaXplT2JzZXJ2ZXJFbnRyeVxuICAgICAgICAgICksXG4gICAgICAgICAgLy8gSWdub3JlIHN1YnBpeGVsIGNoYW5nZXMuXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICAgICAgTWF0aC5yb3VuZChhLmNvbnRlbnRSZWN0LndpZHRoKSA9PT1cbiAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKGIuY29udGVudFJlY3Qud2lkdGgpICYmXG4gICAgICAgICAgICAgIE1hdGgucm91bmQoYS5jb250ZW50UmVjdC5oZWlnaHQpID09PVxuICAgICAgICAgICAgICAgIE1hdGgucm91bmQoYi5jb250ZW50UmVjdC5oZWlnaHQpXG4gICAgICAgICAgKSxcbiAgICAgICAgICAvLyBFbWl0IHRoZSBsYXN0IHZhbHVlIGZvciBsYXRlIHN1YnNjcmliZXJzLiBUcmFjayByZWZlcmVuY2VzIHNvIGl0XG4gICAgICAgICAgLy8gdW4tb2JzZXJ2ZXMgd2hlbiBhbGwgc3Vic2NyaWJlcnMgYXJlIGdvbmUuXG4gICAgICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICAgICAgICAvLyBPbmx5IGVtaXQgcHJpb3IgdG8gYW4gYW5pbWF0aW9uIGZyYW1lIHRvIHByZXZlbnQgbGF5b3V0IHRocmFzaGluZy5cbiAgICAgICAgICB0aHJvdHRsZSgoKSA9PiBhbmltYXRpb25GcmFtZXMoKS5waXBlKHRha2UoMSkpLCB7XG4gICAgICAgICAgICBsZWFkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIHRyYWlsaW5nOiB0cnVlLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiN0cmFja2luZy5nZXQoXG4gICAgICBlbGVtZW50Lm5hdGl2ZUVsZW1lbnRcbiAgICApIGFzIE9ic2VydmFibGU8UmVzaXplT2JzZXJ2ZXJFbnRyeT47XG4gIH1cblxuICAjZXhwZWN0V2luZG93RXJyb3IoKTogdm9pZCB7XG4gICAgaWYgKCFlcnJvckxvZ1JlZ2lzdGVyZWQpIHtcbiAgICAgIGVycm9yTG9nUmVnaXN0ZXJlZCA9IHRydWU7XG4gICAgICAvLyBSZXNpemVPYnNlcnZlciB0aHJvd3MgYW4gZXJyb3Igd2hlbiBpdCBpcyBkaXNjb25uZWN0ZWQgd2hpbGUgaXQgaXNcbiAgICAgIC8vIHN0aWxsIG9ic2VydmluZyBhbiBlbGVtZW50LiBXaGVuIGFuIGVsZW1lbnQgaXMgbm8gbG9uZ2VyIG9ic2VydmVkLCB0aGlzXG4gICAgICAvLyBpcyBub3QgYSBjb25jZXJuLlxuICAgICAgdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICB0aGlzLiN3aW5kb3cubmF0aXZlV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JIYW5kbGVyKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuI3dpbmRvdy5uYXRpdmVXaW5kb3cub25lcnJvciAhPT0gb25FcnJvcikge1xuICAgICAgb3JpZ2luYWxPbkVycm9yID0gdGhpcy4jd2luZG93Lm5hdGl2ZVdpbmRvdy5vbmVycm9yO1xuICAgICAgdGhpcy4jd2luZG93Lm5hdGl2ZVdpbmRvdy5vbmVycm9yID0gb25FcnJvcjtcbiAgICB9XG4gIH1cblxuICAjcmVzZXRXaW5kb3dFcnJvcigpOiB2b2lkIHtcbiAgICB0aGlzLiN3aW5kb3cubmF0aXZlV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JIYW5kbGVyKTtcbiAgICBpZiAob3JpZ2luYWxPbkVycm9yKSB7XG4gICAgICB0aGlzLiN3aW5kb3cubmF0aXZlV2luZG93Lm9uZXJyb3IgPSBvcmlnaW5hbE9uRXJyb3I7XG4gICAgICBvcmlnaW5hbE9uRXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVycm9yTG9nUmVnaXN0ZXJlZCA9IGZhbHNlO1xuICB9XG59XG4iXX0=
@@ -15,5 +15,5 @@ export class Version {
15
15
  /**
16
16
  * Represents the version of @skyux/core.
17
17
  */
18
- export const VERSION = new Version('9.12.1');
18
+ export const VERSION = new Version('9.13.1');
19
19
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3QztBQUN4QyxtRkFBbUY7QUFFbkY7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLE9BQU87SUFLbEIsWUFBNEIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGFrZW4gZnJvbSBBbmd1bGFyJ3MgdmVyc2lvbi50cyBmaWxlLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvMTYuMi54L3BhY2thZ2VzL2NvcmUvc3JjL3ZlcnNpb24udHNcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSB2ZXJzaW9uIG9mIGEgcGFja2FnZS5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgVmVyc2lvbiB7XG4gIHB1YmxpYyByZWFkb25seSBtYWpvcjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbWlub3I6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHBhdGNoOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGZ1bGw6IHN0cmluZykge1xuICAgIHRoaXMubWFqb3IgPSBmdWxsLnNwbGl0KCcuJylbMF07XG4gICAgdGhpcy5taW5vciA9IGZ1bGwuc3BsaXQoJy4nKVsxXTtcbiAgICB0aGlzLnBhdGNoID0gZnVsbC5zcGxpdCgnLicpLnNsaWNlKDIpLmpvaW4oJy4nKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHZlcnNpb24gb2YgQHNreXV4L2NvcmUuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gbmV3IFZlcnNpb24oJzAuMC4wLVBMQUNFSE9MREVSJyk7XG4iXX0=