ctt-babylon 0.24.77 → 0.24.80

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.
@@ -90,7 +90,8 @@ export class BabylonSlidersDirective {
90
90
  return $wrapper.length > 0 ? $wrapper : $(nativeEl);
91
91
  };
92
92
  // Preguntamos cada 100ms si el contenedor correcto ya tiene elementos hijos
93
- timer(1000, 100)
93
+ // En Arima se rompe -> timer(1000, 100)
94
+ timer(0, 100)
94
95
  .pipe(map(() => getSliderContainer().children().length > 0), filter((hasChildren) => hasChildren === true), take(1), // Se auto-destruye al cumplirse
95
96
  timeout({ first: 5000, with: () => of(false) }))
96
97
  .subscribe((success) => {
@@ -457,4 +458,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
457
458
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { sliders: [{
458
459
  type: Input
459
460
  }] } });
460
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1zbGlkZXJzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2JhYnlsb24tc2xpZGVycy9iYWJ5bG9uLXNsaWRlcnMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFFSCxTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFFTCxXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBRUgsRUFBRSxFQUNGLFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxFQUNULEdBQUcsRUFDSCxPQUFPLEVBQ1AsS0FBSyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFRcEMsTUFBTSxPQUFPLHVCQUF1QjtJQW1CaEMsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFOakIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUkxQyxnQkFBVyxHQUE0QixJQUFJLENBQUM7SUFFZixDQUFDO0lBRXRDLGVBQWU7UUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxjQUFjO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJ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V0FBVztpQkFDeEIsQ0FBQyxDQUFDO2FBQ047WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUNQLFlBQVksRUFBRSxDQUFDO29CQUNmLGNBQWMsRUFBRSxDQUFDO29CQUNqQixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsYUFBYSxFQUFFLElBQUk7b0JBQ25CLE1BQU0sRUFBRSxLQUFLO29CQUNiLFFBQVEsRUFBRSxJQUFJO29CQUNkLFVBQVUsRUFBRSxLQUFLO2lCQUNwQixDQUFDLENBQUM7YUFDTjtTQUNKO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNwQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDOUI7U0FDSjtJQUNMLENBQUM7K0dBM2tCUSx1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsV0FBVztvQkFDckIsVUFBVSxFQUFFLElBQUk7aUJBQ25COytFQUVZLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgY2F0Y2hFcnJvcixcbiAgICBkZWZlcixcbiAgICBmaWx0ZXIsXG4gICAgZm9ya0pvaW4sXG4gICAgbWFwLFxuICAgIE9ic2VydmFibGUsXG4gICAgb2YsXG4gICAgc3dpdGNoTWFwLFxuICAgIHRha2UsXG4gICAgdGFrZVdoaWxlLFxuICAgIHRhcCxcbiAgICB0aW1lb3V0LFxuICAgIHRpbWVyLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5kZWNsYXJlIGNvbnN0ICQ6IGFueTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbc2xpZGVyc10nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEJhYnlsb25TbGlkZXJzRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBzbGlkZXJzITpcbiAgICAgICAgfCAnY3Nfc2xpZGVyX2NvbnRhaW5lcidcbiAgICAgICAgfCAnY3NfZ2FsbGVyeV9zbGlkZXJfbmF2J1xuICAgICAgICB8ICdjc19nYWxsZXJ5X3NsaWRlcl9uYXZfMidcbiAgICAgICAgfCAnY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWInXG4gICAgICAgIHwgJ2NzX2dhbGxlcnlfc2xpZGVyX3RodW1iXzInXG4gICAgICAgIHwgJ2NzX3NsaWRlcl9jb250YWluZXIyJ1xuICAgICAgICB8ICdjc19zbGlkZXJfY29udGFpbmVyMydcbiAgICAgICAgfCAnY3Nfc2xpZGVyX2NvbnRhaW5lcjQnXG4gICAgICAgIHwgJ2NzX3NsaWRlcl9jb250YWluZXI1JztcblxuICAgIHByaXZhdGUgcmVzaXplVGltZW91dCE6IE5vZGVKUy5UaW1lb3V0O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgICBwcml2YXRlIHJlc2l6ZUZuITogKCkgPT4gdm9pZDtcblxuICAgIHByaXZhdGUgZG9tT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuZW5zdXJlSlF1ZXJ5QW5kU2xpY2skKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUluaXRpYWxpemVTbGlkZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3YWl0Rm9ySlF1ZXJ5JCgpIHtcbiAgICAgICAgcmV0dXJuIHRpbWVyKDAsIDQwKS5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+ICh3aW5kb3cgYXMgYW55KS5qUXVlcnkgfHwgKHdpbmRvdyBhcyBhbnkpLiQpLFxuICAgICAgICAgICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHRpbWVvdXQoeyBmaXJzdDogNTAwMCB9KSxcbiAgICAgICAgICAgIC8vIGV4cG9uZSAkIC8galF1ZXJ5IGdsb2JhbCBwb3Igc2kgZWwgYnVuZGxlIG5vIGxvIGhpem9cbiAgICAgICAgICAgIG1hcCgoanEpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB3ID0gd2luZG93IGFzIGFueTtcbiAgICAgICAgICAgICAgICBpZiAoIXcuJCkgdy4kID0ganE7XG4gICAgICAgICAgICAgICAgaWYgKCF3LmpRdWVyeSkgdy5qUXVlcnkgPSBqcTtcbiAgICAgICAgICAgICAgICByZXR1cm4ganE7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbiAgICBwcml2YXRlIHdhaXRGb3JTbGljayQoKSB7XG4gICAgICAgIHJldHVybiB0aW1lcigwLCA0MCkucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdyA9IHdpbmRvdyBhcyBhbnk7XG4gICAgICAgICAgICAgICAgY29uc3QganEgPSB3LmpRdWVyeSB8fCB3LiQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGpxICYmIGpxLmZuICYmIGpxLmZuLnNsaWNrO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgdGltZW91dCh7IGZpcnN0OiAxMDAwMCB9KSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB2b2lkIDApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIENhcmdhIGpRdWVyeSArIHNsaWNrIGVuIG9yZGVuIHkgZXNwZXJhIGEgcXVlIGVzdMOpbiBsaXN0b3MgKi9cbiAgICBwcml2YXRlIGVuc3VyZUpRdWVyeUFuZFNsaWNrJCgpIHtcbiAgICAgICAgcmV0dXJuIGRlZmVyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHcgPSB3aW5kb3cgYXMgYW55O1xuICAgICAgICAgICAgY29uc3QgaGFzSlEgPSAhISh3LmpRdWVyeSB8fCB3LiQpO1xuICAgICAgICAgICAgY29uc3QgaGFzU2xpY2sgPSAhISh3LmpRdWVyeT8uZm4/LnNsaWNrIHx8IHcuJD8uZm4/LnNsaWNrKTtcblxuICAgICAgICAgICAgaWYgKGhhc0pRICYmIGhhc1NsaWNrKSByZXR1cm4gb2Yodm9pZCAwKTtcblxuICAgICAgICAgICAgLy8gQWdyZWdhbW9zIGZvcmtKb2luIHBhcmEgZGVzY2FyZ2FyIHNjcmlwdCBkZSBzbGljayB5IENTUyBlbiBwYXJhbGVsb1xuICAgICAgICAgICAgcmV0dXJuIFV0aWxzLmxvYWRTY3JpcHQkKCdhc3NldHMvYmFieWxvbi9qcy9qcXVlcnkubWluLmpzJykucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy53YWl0Rm9ySlF1ZXJ5JCgpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgZm9ya0pvaW4oW1xuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubG9hZFNjcmlwdCQoJ2Fzc2V0cy9iYWJ5bG9uL3NsaWNrL3NsaWNrLm1pbi5qcycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubG9hZFN0eWxlJCgnYXNzZXRzL2JhYnlsb24vc2xpY2svc2xpY2suY3NzJyksIC8vIDwtLSDCoUNSVUNJQUwhXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy53YWl0Rm9yU2xpY2skKCkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY2FyZ2FuZG8galF1ZXJ5L3NsaWNrJywgZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih2b2lkIDApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlc2l6ZVRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lb3V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnJlc2l6ZUZuKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplRm4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g8J+bkSBQb3Igc2kgZWwgY29tcG9uZW50ZSBzZSBkZXN0cnV5ZSBhbnRlcyBkZSBxdWUgbGxlZ2FyYW4gbG9zIGRhdG9zXG4gICAgICAgICAgICBpZiAodGhpcy5kb21PYnNlcnZlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9tT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkRGVwZW5kZW5jaWVzQW5kSW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIFV0aWxzLmxvYWRTY3JpcHQkKCdhc3NldHMvYmFieWxvbi9qcy9qcXVlcnkubWluLmpzJylcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndhaXRGb3JTbGlja0F2YWlsYWJpbGl0eSgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmtKb2luKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTY3JpcHQkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3NldHMvYmFieWxvbi9zbGljay9zbGljay5taW4uanMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubG9hZFN0eWxlJChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNzZXRzL2JhYnlsb24vc2xpY2svc2xpY2suY3NzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlSW5pdGlhbGl6ZVNsaWRlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZXhlY3V0ZUluaXRpYWxpemVTbGlkZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG5hdGl2ZUVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIC8vIPCfkqEgTEEgQ0xBVkU6IEZ1bmNpw7NuIHBhcmEgZGV0ZWN0YXIgZWwgY29udGVuZWRvciByZWFsIGRlIGxhcyBpbcOhZ2VuZXNcbiAgICAgICAgY29uc3QgZ2V0U2xpZGVyQ29udGFpbmVyID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgJHdyYXBwZXIgPSAkKG5hdGl2ZUVsKS5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcbiAgICAgICAgICAgIC8vIFNpIGVuY3VlbnRyYSBlbCB3cmFwcGVyLCBsbyBkZXZ1ZWx2ZS4gU2kgbm8sIGRldnVlbHZlIGVsIGVsZW1lbnRvIHByaW5jaXBhbC5cbiAgICAgICAgICAgIHJldHVybiAkd3JhcHBlci5sZW5ndGggPiAwID8gJHdyYXBwZXIgOiAkKG5hdGl2ZUVsKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBQcmVndW50YW1vcyBjYWRhIDEwMG1zIHNpIGVsIGNvbnRlbmVkb3IgY29ycmVjdG8geWEgdGllbmUgZWxlbWVudG9zIGhpam9zXG4gICAgICAgIHRpbWVyKDEwMDAsIDEwMClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiBnZXRTbGlkZXJDb250YWluZXIoKS5jaGlsZHJlbigpLmxlbmd0aCA+IDApLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoaGFzQ2hpbGRyZW4pID0+IGhhc0NoaWxkcmVuID09PSB0cnVlKSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpLCAvLyBTZSBhdXRvLWRlc3RydXllIGFsIGN1bXBsaXJzZVxuICAgICAgICAgICAgICAgIHRpbWVvdXQoeyBmaXJzdDogNTAwMCwgd2l0aDogKCkgPT4gb2YoZmFsc2UpIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTGxhbWFtb3MgYSB0dSBtw6l0b2RvIG9yaWdpbmFsIHF1ZSB5YSB0aWVuZSBlbCBzd2l0Y2ggcGFyYSBjYWRhIHRpcG8gZGUgc2xpZGVyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVNsaWRlcigpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEluaWNpYW1vcyBlbCBsaXN0ZW5lciBkZWwgcmVzaXplICh1c2FuZG8gZWwgbcOpdG9kbyBzZXBhcmFkbyBxdWUgdGUgcGFzw6kpXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5yZXNpemVGbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBIZSBzYWNhZG8gdHUgbMOzZ2ljYSBkZWwgcmVzaXplIGEgdW4gbcOpdG9kbyBwcm9waW8gcGFyYSBxdWUgcXVlZGUgbcOhcyBvcmRlbmFkbzpcbiAgICBwcml2YXRlIHNldHVwUmVzaXplTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICAgIGxldCBsYXN0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgaWYgKCF0aGlzLnJlc2l6ZUZuKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUZuID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMobmV3V2lkdGggLSBsYXN0V2lkdGgpID4gNTApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RXaWR0aCA9IG5ld1dpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgJHNsaWRlciA9ICQodGhpcy5lbC5uYXRpdmVFbGVtZW50KS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuY3Nfc2xpZGVyX3dyYXBwZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2xpZGVyLnNsaWNrKCd1bnNsaWNrJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVTbGlkZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplRm4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3YWl0Rm9yU2xpY2tBdmFpbGFiaWxpdHkoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aW1lcigwLCAxMDApLnBpcGUoXG4gICAgICAgICAgICAvLyBQb2xsaW5nIGNhZGEgNzBtc1xuICAgICAgICAgICAgdGFrZVdoaWxlKFxuICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgJCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICQuZm4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiAkLmZuLnNsaWNrICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gb2YodW5kZWZpbmVkKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVTbGlkZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlkZXIgPSAkKHRoaXMuZWwubmF0aXZlRWxlbWVudCkgYXMgYW55O1xuXG4gICAgICAgIGlmICghJHNsaWRlci5sZW5ndGgpIHJldHVybjtcblxuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuICAgICAgICBpZiAoJHNsaWNrQWN0aXZlLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICAkc2xpY2tBY3RpdmUuc2xpY2soJ3Vuc2xpY2snKTsgLy8gRGVzdHJ1eWUgZWwgc2xpZGVyIGFjdHVhbFxuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLnNsaWRlcnMpIHtcbiAgICAgICAgICAgIGNhc2UgJ2NzX3NsaWRlcl9jb250YWluZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyKCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3NfZ2FsbGVyeV9zbGlkZXJfbmF2JzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlck5hdigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX2dhbGxlcnlfc2xpZGVyX25hdl8yJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlck5hdl8yKCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWInOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyVGh1bWIoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jU2xpZGVycyhcbiAgICAgICAgICAgICAgICAgICAgJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYicsXG4gICAgICAgICAgICAgICAgICAgICcuY3NfZ2FsbGVyeV9zbGlkZXJfbmF2J1xuICAgICAgICAgICAgICAgICk7IC8vIFNpbmNyb25pemEgbG9zIHNsaWRlcnMgcG9yIHRlbWEgZGUgcmVuZGFyaXphZG8gZW4gZWwgRE9NXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19nYWxsZXJ5X3NsaWRlcl90aHVtYl8yJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlclRodW1iXzIoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jU2xpZGVycyhcbiAgICAgICAgICAgICAgICAgICAgJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYl8yJyxcbiAgICAgICAgICAgICAgICAgICAgJy5jc19nYWxsZXJ5X3NsaWRlcl9uYXZfMidcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3Nfc2xpZGVyX2NvbnRhaW5lcjInOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyMigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX3NsaWRlcl9jb250YWluZXIzJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlcjMoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19zbGlkZXJfY29udGFpbmVyNCc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXI0KCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3Nfc2xpZGVyX2NvbnRhaW5lcjUnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyNSgkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlcigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWNrQWN0aXZlID0gJHNsaWRlci5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcblxuICAgICAgICBpZiAoJHNsaWNrQWN0aXZlLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfbGVmdF9hcnJvdycpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfcmlnaHRfYXJyb3cnKTtcblxuICAgICAgICAoJHNsaWNrQWN0aXZlIGFzIGFueSkuc2xpY2soe1xuICAgICAgICAgICAgYXV0b3BsYXk6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1hdXRvcGxheScsIDEpLFxuICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAgICAgICAgICRzbGlkZXIsXG4gICAgICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXknLFxuICAgICAgICAgICAgICAgIDMwMDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXNwZWVkJywgNjAwKSxcbiAgICAgICAgICAgIGluZmluaXRlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtbG9vcCcsIDApID09PSAwLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiB0aGlzLmdldFNsaWRlc1BlclZpZXcoJHNsaWRlciksXG4gICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWNlbnRlcicsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMTApID09PSAxLFxuICAgICAgICAgICAgZG90czogdHJ1ZSxcbiAgICAgICAgICAgIGFwcGVuZERvdHM6ICRzbGlkZXIucGFyZW50KCkuZmluZCgnLmNzX3BhZ2luYXRpb24nKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXIyKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuXG4gICAgICAgIGlmICgkc2xpY2tBY3RpdmUuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19sZWZ0X2Fycm93Jyk7XG4gICAgICAgIGNvbnN0IG5leHRBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19yaWdodF9hcnJvdycpO1xuXG4gICAgICAgICgkc2xpY2tBY3RpdmUgYXMgYW55KS5zbGljayh7XG4gICAgICAgICAgICBhdXRvcGxheTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWF1dG9wbGF5JywgMSksXG4gICAgICAgICAgICBhdXRvcGxheVNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoXG4gICAgICAgICAgICAgICAgJHNsaWRlcixcbiAgICAgICAgICAgICAgICAnZGF0YS1hdXRvcGxheScsXG4gICAgICAgICAgICAgICAgMzAwMFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtc3BlZWQnLCA2MDApLFxuICAgICAgICAgICAgaW5maW5pdGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1sb29wJywgMCkgPT09IDAsXG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IHRoaXMuZ2V0U2xpZGVzUGVyVmlldygkc2xpZGVyKSxcbiAgICAgICAgICAgIHN3aXBlVG9TbGlkZTogdHJ1ZSxcbiAgICAgICAgICAgIHByZXZBcnJvdzogcHJldkFycm93LFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0QXJyb3csXG4gICAgICAgICAgICBjZW50ZXJNb2RlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtY2VudGVyJywgMTApID09PSAxLFxuICAgICAgICAgICAgdmFyaWFibGVXaWR0aDpcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtdmFyaWFibGUtd2lkdGgnLCAxMCkgPT09IDEsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyMygkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWNrQWN0aXZlID0gJHNsaWRlci5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcblxuICAgICAgICBpZiAoJHNsaWNrQWN0aXZlLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuc2libGluZ3MoJy5jc19zbGlkZXJfYXJyb3dzJylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfbGVmdF9hcnJvdycpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuc2libGluZ3MoJy5jc19zbGlkZXJfYXJyb3dzJylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfcmlnaHRfYXJyb3cnKTtcblxuICAgICAgICAoJHNsaWNrQWN0aXZlIGFzIGFueSkuc2xpY2soe1xuICAgICAgICAgICAgYXV0b3BsYXk6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1hdXRvcGxheScsIDApLFxuICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAgICAgICAgICRzbGlkZXIsXG4gICAgICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXknLFxuICAgICAgICAgICAgICAgIDMwMDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXNwZWVkJywgNjAwKSxcbiAgICAgICAgICAgIGluZmluaXRlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtbG9vcCcsIDApID09PSAwLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiB0aGlzLmdldFNsaWRlc1BlclZpZXcoJHNsaWRlciksXG4gICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWNlbnRlcicsIDApID09PSAxLFxuICAgICAgICAgICAgdmFyaWFibGVXaWR0aDpcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtdmFyaWFibGUtd2lkdGgnLCAwKSA9PT0gMSxcbiAgICAgICAgICAgIGRvdHM6IGZhbHNlLFxuICAgICAgICAgICAgYXBwZW5kRG90czogJHNsaWRlci5wYXJlbnQoKS5maW5kKCcuY3NfcGFnaW5hdGlvbl9zZXJ2aWNlcycpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlck5hdigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgJHNsaWRlci5zbGljayh7XG4gICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAzLFxuICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgICAgIGFzTmF2Rm9yOiAkKCcuY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWJfbWluaScpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/ICcuY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWJfbWluaSdcbiAgICAgICAgICAgICAgICAgICAgOiAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iJyxcbiAgICAgICAgICAgICAgICBmb2N1c09uU2VsZWN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIGFycm93czogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmVydGljYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VudGVyTW9kZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZW50ZXJQYWRkaW5nOiAnMHB4JyxcbiAgICAgICAgICAgICAgICBzcGVlZDogMTAwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCAxMDAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlck5hdl8yKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoJHNsaWRlci5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgJHNsaWRlci5zbGljayh7XG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IDMsXG4gICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgIGFzTmF2Rm9yOiAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iXzInLFxuICAgICAgICAgICAgZm9jdXNPblNlbGVjdDogdHJ1ZSxcbiAgICAgICAgICAgIGFycm93czogZmFsc2UsXG4gICAgICAgICAgICBjZW50ZXJNb2RlOiB0cnVlLFxuICAgICAgICAgICAgY2VudGVyUGFkZGluZzogJzBweCcsXG4gICAgICAgICAgICBzcGVlZDogMTAwMCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXJUaHVtYigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXJcbiAgICAgICAgICAgIC5jbG9zZXN0KCcuY3NfZ2FsbGVyeV9ob3Zlcl9zaG93X25hdicpXG4gICAgICAgICAgICAuZmluZCgnLmNzX2xlZnRfYXJyb3dfZ2FsbGVyeScpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuY2xvc2VzdCgnLmNzX2dhbGxlcnlfaG92ZXJfc2hvd19uYXYnKVxuICAgICAgICAgICAgLmZpbmQoJy5jc19yaWdodF9hcnJvd19nYWxsZXJ5Jyk7XG5cbiAgICAgICAgJHNsaWRlci5zbGljayh7XG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IDEsXG4gICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgIHByZXZBcnJvdzogcHJldkFycm93LFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0QXJyb3csXG4gICAgICAgICAgICBhc05hdkZvcjogJy5jc19nYWxsZXJ5X3NsaWRlcl9uYXYuc2xpY2stc2xpZGVyJyxcbiAgICAgICAgICAgIGluZmluaXRlOiB0cnVlLFxuICAgICAgICAgICAgc3BlZWQ6IDYwMCxcbiAgICAgICAgICAgIGF1dG9wbGF5OiBmYWxzZSxcbiAgICAgICAgICAgIGZhZGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyVGh1bWJfMigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXJcbiAgICAgICAgICAgIC5jbG9zZXN0KCcuY3NfZ2FsbGVyeV9ob3Zlcl9zaG93X25hdicpXG4gICAgICAgICAgICAuZmluZCgnLmNzX2xlZnRfYXJyb3dfZ2FsbGVyeV8yIC5jc19zd2lwZXJfYnV0dG9uX3ByZXYnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLmNsb3Nlc3QoJy5jc19nYWxsZXJ5X2hvdmVyX3Nob3dfbmF2JylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfcmlnaHRfYXJyb3dfZ2FsbGVyeV8yIC5jc19zd2lwZXJfYnV0dG9uX25leHQnKTtcblxuICAgICAgICAkc2xpZGVyLnNsaWNrKHtcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMSxcbiAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGFzTmF2Rm9yOiAnLmNzX2dhbGxlcnlfc2xpZGVyX25hdl8yLnNsaWNrLXNsaWRlcicsXG4gICAgICAgICAgICBpbmZpbml0ZTogZmFsc2UsXG4gICAgICAgICAgICBzcGVlZDogNjAwLFxuICAgICAgICAgICAgYXV0b3BsYXk6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlcjQoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlja0FjdGl2ZSA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG5cbiAgICAgICAgaWYgKCRzbGlja0FjdGl2ZS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX2xlZnRfYXJyb3cnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX3JpZ2h0X2Fycm93Jyk7XG5cbiAgICAgICAgY29uc3Qgc2xpZGVzVG9TaG93ID0gdGhpcy5nZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXIpO1xuXG4gICAgICAgICgkc2xpY2tBY3RpdmUgYXMgYW55KS5zbGljayh7XG4gICAgICAgICAgICBhdXRvcGxheTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWF1dG9wbGF5JywgMSksXG4gICAgICAgICAgICBhdXRvcGxheVNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoXG4gICAgICAgICAgICAgICAgJHNsaWRlcixcbiAgICAgICAgICAgICAgICAnZGF0YS1hdXRvcGxheScsXG4gICAgICAgICAgICAgICAgMzAwMFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtc3BlZWQnLCA2MDApLFxuICAgICAgICAgICAgaW5maW5pdGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1sb29wJywgMCkgPT09IDAsXG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IHNsaWRlc1RvU2hvdyxcbiAgICAgICAgICAgIHN3aXBlVG9TbGlkZTogdHJ1ZSxcbiAgICAgICAgICAgIHByZXZBcnJvdzogcHJldkFycm93LFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0QXJyb3csXG4gICAgICAgICAgICBjZW50ZXJNb2RlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtY2VudGVyJywgMTApID09PSAxLFxuICAgICAgICAgICAgdmFyaWFibGVXaWR0aDpcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtdmFyaWFibGUtd2lkdGgnLCAxMCkgPT09IDEsXG4gICAgICAgICAgICBkb3RzOiB0cnVlLFxuICAgICAgICAgICAgYXBwZW5kRG90czogJHNsaWRlci5wYXJlbnQoKS5maW5kKCcuY3NfcGFnaW5hdGlvbicpLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50b2dnbGVTbGlkZXJBcnJvd3MoJHNsaWRlciwgc2xpZGVzVG9TaG93KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlcjUoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlja0FjdGl2ZSA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG5cbiAgICAgICAgaWYgKCRzbGlja0FjdGl2ZS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX2xlZnRfYXJyb3cnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX3JpZ2h0X2Fycm93Jyk7XG5cbiAgICAgICAgKCRzbGlja0FjdGl2ZSBhcyBhbnkpLnNsaWNrKHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtYXV0b3BsYXknLCAxKSxcbiAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZyhcbiAgICAgICAgICAgICAgICAkc2xpZGVyLFxuICAgICAgICAgICAgICAgICdkYXRhLWF1dG9wbGF5JyxcbiAgICAgICAgICAgICAgICAzMDAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1zcGVlZCcsIDYwMCksXG4gICAgICAgICAgICBpbmZpbml0ZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWxvb3AnLCAwKSA9PT0gMCxcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogdGhpcy5nZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXIpLFxuICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiB0cnVlLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGNlbnRlck1vZGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1jZW50ZXInLCAxMCkgPT09IDEsXG4gICAgICAgICAgICB2YXJpYWJsZVdpZHRoOlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS12YXJpYWJsZS13aWR0aCcsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIGRvdHM6IHRydWUsXG4gICAgICAgICAgICBhcHBlbmREb3RzOiAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfcGFnaW5hdGlvbicpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNsaWRlclNldHRpbmcoXG4gICAgICAgICRzbGlkZXI6IGFueSxcbiAgICAgICAgc2V0dGluZ05hbWU6IHN0cmluZyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBhbnlcbiAgICApOiBhbnkge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoJHNsaWRlci5hdHRyKHNldHRpbmdOYW1lKSwgMTApIHx8IGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNsaWRlc1BlclZpZXcoJHNsaWRlcjogYW55KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNsaWRlc1BlclZpZXdUeXBlID0gJHNsaWRlci5hdHRyKCdkYXRhLXNsaWRlcy1wZXItdmlldycpO1xuICAgICAgICAgICAgY29uc3QgeHNTbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEteHMtc2xpZGVzJyksIDEwKSB8fCAxO1xuICAgICAgICAgICAgY29uc3Qgc21TbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtc20tc2xpZGVzJyksIDEwKSB8fCAyO1xuICAgICAgICAgICAgY29uc3QgbWRTbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtbWQtc2xpZGVzJyksIDEwKSB8fCAyO1xuICAgICAgICAgICAgY29uc3QgbWxnU2xpZGVzID1cbiAgICAgICAgICAgICAgICBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtbWxnLXNsaWRlcycpLCAxMCkgfHwgMztcbiAgICAgICAgICAgIGNvbnN0IGxnU2xpZGVzID0gcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLWxnLXNsaWRlcycpLCAxMCkgfHwgMztcbiAgICAgICAgICAgIGNvbnN0IHhsU2xpZGVzID1cbiAgICAgICAgICAgICAgICBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEteGwtc2xpZGVzJyksIDEwKSB8fCBsZ1NsaWRlcztcblxuICAgICAgICAgICAgaWYgKHNsaWRlc1BlclZpZXdUeXBlID09PSAncmVzcG9uc2l2ZScpIHtcbiAgICAgICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA1NzYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhzU2xpZGVzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPCA3NjgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNtU2xpZGVzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPCAxMDI0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtZFNsaWRlcztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTI4MCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWxnU2xpZGVzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPCAxNDAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsZ1NsaWRlcztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geGxTbGlkZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoc2xpZGVzUGVyVmlld1R5cGUsIDEwKSB8fCAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtc2xpZGVzLXBlci12aWV3JyksIDEwKSB8fCAzO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9nZ2xlU2xpZGVyQXJyb3dzKCRzbGlkZXI6IGFueSwgc2xpZGVzVG9TaG93OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWRlcyA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlJyk7XG4gICAgICAgIGNvbnN0IHRvdGFsU2xpZGVzID0gJHNsaWRlcy5sZW5ndGg7XG5cbiAgICAgICAgY29uc3QgJHNsaWRlckNvbnRhaW5lciA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpO1xuICAgICAgICBjb25zdCBzaG91bGRIaWRlID0gdG90YWxTbGlkZXMgPD0gc2xpZGVzVG9TaG93O1xuXG4gICAgICAgICRzbGlkZXJDb250YWluZXIudG9nZ2xlQ2xhc3MoJ2hpZGUtYXJyb3dzJywgc2hvdWxkSGlkZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jU2xpZGVycyhtYWluU2VsZWN0b3I6IHN0cmluZywgbmF2U2VsZWN0b3I6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCAkbWFpbiA9ICQobWFpblNlbGVjdG9yKTtcbiAgICAgICAgY29uc3QgJG5hdiA9ICQobmF2U2VsZWN0b3IpO1xuXG4gICAgICAgIGlmICgkbWFpbi5sZW5ndGggJiYgJG5hdi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICghJG1haW4uaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgICAgICAkbWFpbi5zbGljayh7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICAgICAgICAgIGFycm93czogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZmFkZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYXNOYXZGb3I6IG5hdlNlbGVjdG9yLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoISRuYXYuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgICAgICAkbmF2LnNsaWNrKHtcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAzLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgICAgICAgICAgYXNOYXZGb3I6IG1haW5TZWxlY3RvcixcbiAgICAgICAgICAgICAgICAgICAgZm9jdXNPblNlbGVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYXJyb3dzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNlbnRlck1vZGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZVRvTmV4dFNsaWRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgY29uc3QgJHNsaWRlciA9ICQodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIGlmICgkc2xpZGVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICRzbGlkZXIuc2xpY2soJ3NsaWNrTmV4dCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
461
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1zbGlkZXJzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2JhYnlsb24tc2xpZGVycy9iYWJ5bG9uLXNsaWRlcnMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFFSCxTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFFTCxXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBRUgsRUFBRSxFQUNGLFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxFQUNULEdBQUcsRUFDSCxPQUFPLEVBQ1AsS0FBSyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFRcEMsTUFBTSxPQUFPLHVCQUF1QjtJQW1CaEMsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFOakIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUkxQyxnQkFBVyxHQUE0QixJQUFJLENBQUM7SUFFZixDQUFDO0lBRXRDLGVBQWU7UUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxjQUFjO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJ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Q1YsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCLENBQUMsQ0FBQzthQUNOO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRTtnQkFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQztvQkFDUCxZQUFZLEVBQUUsQ0FBQztvQkFDZixjQUFjLEVBQUUsQ0FBQztvQkFDakIsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLGFBQWEsRUFBRSxJQUFJO29CQUNuQixNQUFNLEVBQUUsS0FBSztvQkFDYixRQUFRLEVBQUUsSUFBSTtvQkFDZCxVQUFVLEVBQUUsS0FBSztpQkFDcEIsQ0FBQyxDQUFDO2FBQ047U0FDSjtJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDcEMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzlCO1NBQ0o7SUFDTCxDQUFDOytHQTVrQlEsdUJBQXVCO21HQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjsrRUFFWSxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBQTEFURk9STV9JRCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGNhdGNoRXJyb3IsXG4gICAgZGVmZXIsXG4gICAgZmlsdGVyLFxuICAgIGZvcmtKb2luLFxuICAgIG1hcCxcbiAgICBPYnNlcnZhYmxlLFxuICAgIG9mLFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlLFxuICAgIHRha2VXaGlsZSxcbiAgICB0YXAsXG4gICAgdGltZW91dCxcbiAgICB0aW1lcixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuZGVjbGFyZSBjb25zdCAkOiBhbnk7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3NsaWRlcnNdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBCYWJ5bG9uU2xpZGVyc0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgc2xpZGVycyE6XG4gICAgICAgIHwgJ2NzX3NsaWRlcl9jb250YWluZXInXG4gICAgICAgIHwgJ2NzX2dhbGxlcnlfc2xpZGVyX25hdidcbiAgICAgICAgfCAnY3NfZ2FsbGVyeV9zbGlkZXJfbmF2XzInXG4gICAgICAgIHwgJ2NzX2dhbGxlcnlfc2xpZGVyX3RodW1iJ1xuICAgICAgICB8ICdjc19nYWxsZXJ5X3NsaWRlcl90aHVtYl8yJ1xuICAgICAgICB8ICdjc19zbGlkZXJfY29udGFpbmVyMidcbiAgICAgICAgfCAnY3Nfc2xpZGVyX2NvbnRhaW5lcjMnXG4gICAgICAgIHwgJ2NzX3NsaWRlcl9jb250YWluZXI0J1xuICAgICAgICB8ICdjc19zbGlkZXJfY29udGFpbmVyNSc7XG5cbiAgICBwcml2YXRlIHJlc2l6ZVRpbWVvdXQhOiBOb2RlSlMuVGltZW91dDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gICAgcHJpdmF0ZSByZXNpemVGbiE6ICgpID0+IHZvaWQ7XG5cbiAgICBwcml2YXRlIGRvbU9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgICAgICB0aGlzLmVuc3VyZUpRdWVyeUFuZFNsaWNrJCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVJbml0aWFsaXplU2xpZGVyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgd2FpdEZvckpRdWVyeSQoKSB7XG4gICAgICAgIHJldHVybiB0aW1lcigwLCA0MCkucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiAod2luZG93IGFzIGFueSkualF1ZXJ5IHx8ICh3aW5kb3cgYXMgYW55KS4kKSxcbiAgICAgICAgICAgIGZpbHRlcihCb29sZWFuKSxcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICB0aW1lb3V0KHsgZmlyc3Q6IDUwMDAgfSksXG4gICAgICAgICAgICAvLyBleHBvbmUgJCAvIGpRdWVyeSBnbG9iYWwgcG9yIHNpIGVsIGJ1bmRsZSBubyBsbyBoaXpvXG4gICAgICAgICAgICBtYXAoKGpxKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdyA9IHdpbmRvdyBhcyBhbnk7XG4gICAgICAgICAgICAgICAgaWYgKCF3LiQpIHcuJCA9IGpxO1xuICAgICAgICAgICAgICAgIGlmICghdy5qUXVlcnkpIHcualF1ZXJ5ID0ganE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGpxO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcHJpdmF0ZSB3YWl0Rm9yU2xpY2skKCkge1xuICAgICAgICByZXR1cm4gdGltZXIoMCwgNDApLnBpcGUoXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHcgPSB3aW5kb3cgYXMgYW55O1xuICAgICAgICAgICAgICAgIGNvbnN0IGpxID0gdy5qUXVlcnkgfHwgdy4kO1xuICAgICAgICAgICAgICAgIHJldHVybiBqcSAmJiBqcS5mbiAmJiBqcS5mbi5zbGljaztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHRpbWVvdXQoeyBmaXJzdDogMTAwMDAgfSksXG4gICAgICAgICAgICBtYXAoKCkgPT4gdm9pZCAwKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBDYXJnYSBqUXVlcnkgKyBzbGljayBlbiBvcmRlbiB5IGVzcGVyYSBhIHF1ZSBlc3TDqW4gbGlzdG9zICovXG4gICAgcHJpdmF0ZSBlbnN1cmVKUXVlcnlBbmRTbGljayQoKSB7XG4gICAgICAgIHJldHVybiBkZWZlcigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3ID0gd2luZG93IGFzIGFueTtcbiAgICAgICAgICAgIGNvbnN0IGhhc0pRID0gISEody5qUXVlcnkgfHwgdy4kKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1NsaWNrID0gISEody5qUXVlcnk/LmZuPy5zbGljayB8fCB3LiQ/LmZuPy5zbGljayk7XG5cbiAgICAgICAgICAgIGlmIChoYXNKUSAmJiBoYXNTbGljaykgcmV0dXJuIG9mKHZvaWQgMCk7XG5cbiAgICAgICAgICAgIC8vIEFncmVnYW1vcyBmb3JrSm9pbiBwYXJhIGRlc2NhcmdhciBzY3JpcHQgZGUgc2xpY2sgeSBDU1MgZW4gcGFyYWxlbG9cbiAgICAgICAgICAgIHJldHVybiBVdGlscy5sb2FkU2NyaXB0JCgnYXNzZXRzL2JhYnlsb24vanMvanF1ZXJ5Lm1pbi5qcycpLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMud2FpdEZvckpRdWVyeSQoKSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgIGZvcmtKb2luKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTY3JpcHQkKCdhc3NldHMvYmFieWxvbi9zbGljay9zbGljay5taW4uanMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTdHlsZSQoJ2Fzc2V0cy9iYWJ5bG9uL3NsaWNrL3NsaWNrLmNzcycpLCAvLyA8LS0gwqFDUlVDSUFMIVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMud2FpdEZvclNsaWNrJCgpKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNhcmdhbmRvIGpRdWVyeS9zbGljaycsIGUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Yodm9pZCAwKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5yZXNpemVUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplVGltZW91dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5yZXNpemVGbikge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUZuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIPCfm5EgUG9yIHNpIGVsIGNvbXBvbmVudGUgc2UgZGVzdHJ1eWUgYW50ZXMgZGUgcXVlIGxsZWdhcmFuIGxvcyBkYXRvc1xuICAgICAgICAgICAgaWYgKHRoaXMuZG9tT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRvbU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZERlcGVuZGVuY2llc0FuZEluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBVdGlscy5sb2FkU2NyaXB0JCgnYXNzZXRzL2JhYnlsb24vanMvanF1ZXJ5Lm1pbi5qcycpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53YWl0Rm9yU2xpY2tBdmFpbGFiaWxpdHkoKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JrSm9pbihbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5sb2FkU2NyaXB0JChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNzZXRzL2JhYnlsb24vc2xpY2svc2xpY2subWluLmpzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTdHlsZSQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fzc2V0cy9iYWJ5bG9uL3NsaWNrL3NsaWNrLmNzcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUluaXRpYWxpemVTbGlkZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGV4ZWN1dGVJbml0aWFsaXplU2xpZGVyKCk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgICAgICBjb25zdCBuYXRpdmVFbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcblxuICAgICAgICAvLyDwn5KhIExBIENMQVZFOiBGdW5jacOzbiBwYXJhIGRldGVjdGFyIGVsIGNvbnRlbmVkb3IgcmVhbCBkZSBsYXMgaW3DoWdlbmVzXG4gICAgICAgIGNvbnN0IGdldFNsaWRlckNvbnRhaW5lciA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0ICR3cmFwcGVyID0gJChuYXRpdmVFbCkuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG4gICAgICAgICAgICAvLyBTaSBlbmN1ZW50cmEgZWwgd3JhcHBlciwgbG8gZGV2dWVsdmUuIFNpIG5vLCBkZXZ1ZWx2ZSBlbCBlbGVtZW50byBwcmluY2lwYWwuXG4gICAgICAgICAgICByZXR1cm4gJHdyYXBwZXIubGVuZ3RoID4gMCA/ICR3cmFwcGVyIDogJChuYXRpdmVFbCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gUHJlZ3VudGFtb3MgY2FkYSAxMDBtcyBzaSBlbCBjb250ZW5lZG9yIGNvcnJlY3RvIHlhIHRpZW5lIGVsZW1lbnRvcyBoaWpvc1xuICAgICAgICAvLyBFbiBBcmltYSBzZSByb21wZSAtPiB0aW1lcigxMDAwLCAxMDApIFxuICAgICAgICB0aW1lcigwLCAxMDApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4gZ2V0U2xpZGVyQ29udGFpbmVyKCkuY2hpbGRyZW4oKS5sZW5ndGggPiAwKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGhhc0NoaWxkcmVuKSA9PiBoYXNDaGlsZHJlbiA9PT0gdHJ1ZSksXG4gICAgICAgICAgICAgICAgdGFrZSgxKSwgLy8gU2UgYXV0by1kZXN0cnV5ZSBhbCBjdW1wbGlyc2VcbiAgICAgICAgICAgICAgICB0aW1lb3V0KHsgZmlyc3Q6IDUwMDAsIHdpdGg6ICgpID0+IG9mKGZhbHNlKSB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIExsYW1hbW9zIGEgdHUgbcOpdG9kbyBvcmlnaW5hbCBxdWUgeWEgdGllbmUgZWwgc3dpdGNoIHBhcmEgY2FkYSB0aXBvIGRlIHNsaWRlclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVTbGlkZXIoKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBJbmljaWFtb3MgZWwgbGlzdGVuZXIgZGVsIHJlc2l6ZSAodXNhbmRvIGVsIG3DqXRvZG8gc2VwYXJhZG8gcXVlIHRlIHBhc8OpKVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmVzaXplRm4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSGUgc2FjYWRvIHR1IGzDs2dpY2EgZGVsIHJlc2l6ZSBhIHVuIG3DqXRvZG8gcHJvcGlvIHBhcmEgcXVlIHF1ZWRlIG3DoXMgb3JkZW5hZG86XG4gICAgcHJpdmF0ZSBzZXR1cFJlc2l6ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgICAgICBsZXQgbGFzdFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIGlmICghdGhpcy5yZXNpemVGbikge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVGbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lb3V0KTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKG5ld1dpZHRoIC0gbGFzdFdpZHRoKSA+IDUwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0V2lkdGggPSBuZXdXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0ICRzbGlkZXIgPSAkKHRoaXMuZWwubmF0aXZlRWxlbWVudCkuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLmNzX3NsaWRlcl93cmFwcGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2xpZGVyLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNsaWRlci5zbGljaygndW5zbGljaycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplU2xpZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUZuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgd2FpdEZvclNsaWNrQXZhaWxhYmlsaXR5KCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGltZXIoMCwgMTAwKS5waXBlKFxuICAgICAgICAgICAgLy8gUG9sbGluZyBjYWRhIDcwbXNcbiAgICAgICAgICAgIHRha2VXaGlsZShcbiAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mICQgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAkLmZuICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgJC5mbi5zbGljayAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IG9mKHVuZGVmaW5lZCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplU2xpZGVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpZGVyID0gJCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpIGFzIGFueTtcblxuICAgICAgICBpZiAoISRzbGlkZXIubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgJHNsaWNrQWN0aXZlID0gJHNsaWRlci5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcbiAgICAgICAgaWYgKCRzbGlja0FjdGl2ZS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgJHNsaWNrQWN0aXZlLnNsaWNrKCd1bnNsaWNrJyk7IC8vIERlc3RydXllIGVsIHNsaWRlciBhY3R1YWxcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodGhpcy5zbGlkZXJzKSB7XG4gICAgICAgICAgICBjYXNlICdjc19zbGlkZXJfY29udGFpbmVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlcigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX2dhbGxlcnlfc2xpZGVyX25hdic6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXJOYXYoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19nYWxsZXJ5X3NsaWRlcl9uYXZfMic6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXJOYXZfMigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX2dhbGxlcnlfc2xpZGVyX3RodW1iJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlclRodW1iKCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3luY1NsaWRlcnMoXG4gICAgICAgICAgICAgICAgICAgICcuY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWInLFxuICAgICAgICAgICAgICAgICAgICAnLmNzX2dhbGxlcnlfc2xpZGVyX25hdidcbiAgICAgICAgICAgICAgICApOyAvLyBTaW5jcm9uaXphIGxvcyBzbGlkZXJzIHBvciB0ZW1hIGRlIHJlbmRhcml6YWRvIGVuIGVsIERPTVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWJfMic6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXJUaHVtYl8yKCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3luY1NsaWRlcnMoXG4gICAgICAgICAgICAgICAgICAgICcuY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWJfMicsXG4gICAgICAgICAgICAgICAgICAgICcuY3NfZ2FsbGVyeV9zbGlkZXJfbmF2XzInXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX3NsaWRlcl9jb250YWluZXIyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlcjIoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19zbGlkZXJfY29udGFpbmVyMyc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXIzKCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3Nfc2xpZGVyX2NvbnRhaW5lcjQnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyNCgkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX3NsaWRlcl9jb250YWluZXI1JzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlcjUoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXIoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlja0FjdGl2ZSA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG5cbiAgICAgICAgaWYgKCRzbGlja0FjdGl2ZS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX2xlZnRfYXJyb3cnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX3JpZ2h0X2Fycm93Jyk7XG5cbiAgICAgICAgKCRzbGlja0FjdGl2ZSBhcyBhbnkpLnNsaWNrKHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtYXV0b3BsYXknLCAxKSxcbiAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZyhcbiAgICAgICAgICAgICAgICAkc2xpZGVyLFxuICAgICAgICAgICAgICAgICdkYXRhLWF1dG9wbGF5JyxcbiAgICAgICAgICAgICAgICAzMDAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1zcGVlZCcsIDYwMCksXG4gICAgICAgICAgICBpbmZpbml0ZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWxvb3AnLCAwKSA9PT0gMCxcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogdGhpcy5nZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXIpLFxuICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiB0cnVlLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGNlbnRlck1vZGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1jZW50ZXInLCAxMCkgPT09IDEsXG4gICAgICAgICAgICB2YXJpYWJsZVdpZHRoOlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS12YXJpYWJsZS13aWR0aCcsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIGRvdHM6IHRydWUsXG4gICAgICAgICAgICBhcHBlbmREb3RzOiAkc2xpZGVyLnBhcmVudCgpLmZpbmQoJy5jc19wYWdpbmF0aW9uJyksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyMigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWNrQWN0aXZlID0gJHNsaWRlci5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcblxuICAgICAgICBpZiAoJHNsaWNrQWN0aXZlLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfbGVmdF9hcnJvdycpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfcmlnaHRfYXJyb3cnKTtcblxuICAgICAgICAoJHNsaWNrQWN0aXZlIGFzIGFueSkuc2xpY2soe1xuICAgICAgICAgICAgYXV0b3BsYXk6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1hdXRvcGxheScsIDEpLFxuICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAgICAgICAgICRzbGlkZXIsXG4gICAgICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXknLFxuICAgICAgICAgICAgICAgIDMwMDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXNwZWVkJywgNjAwKSxcbiAgICAgICAgICAgIGluZmluaXRlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtbG9vcCcsIDApID09PSAwLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiB0aGlzLmdldFNsaWRlc1BlclZpZXcoJHNsaWRlciksXG4gICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWNlbnRlcicsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMTApID09PSAxLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlcjMoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlja0FjdGl2ZSA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG5cbiAgICAgICAgaWYgKCRzbGlja0FjdGl2ZS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLnNpYmxpbmdzKCcuY3Nfc2xpZGVyX2Fycm93cycpXG4gICAgICAgICAgICAuZmluZCgnLmNzX2xlZnRfYXJyb3cnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLnNpYmxpbmdzKCcuY3Nfc2xpZGVyX2Fycm93cycpXG4gICAgICAgICAgICAuZmluZCgnLmNzX3JpZ2h0X2Fycm93Jyk7XG5cbiAgICAgICAgKCRzbGlja0FjdGl2ZSBhcyBhbnkpLnNsaWNrKHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtYXV0b3BsYXknLCAwKSxcbiAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZyhcbiAgICAgICAgICAgICAgICAkc2xpZGVyLFxuICAgICAgICAgICAgICAgICdkYXRhLWF1dG9wbGF5JyxcbiAgICAgICAgICAgICAgICAzMDAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1zcGVlZCcsIDYwMCksXG4gICAgICAgICAgICBpbmZpbml0ZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWxvb3AnLCAwKSA9PT0gMCxcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogdGhpcy5nZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXIpLFxuICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiB0cnVlLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGNlbnRlck1vZGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1jZW50ZXInLCAwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMCkgPT09IDEsXG4gICAgICAgICAgICBkb3RzOiBmYWxzZSxcbiAgICAgICAgICAgIGFwcGVuZERvdHM6ICRzbGlkZXIucGFyZW50KCkuZmluZCgnLmNzX3BhZ2luYXRpb25fc2VydmljZXMnKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXJOYXYoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICgkc2xpZGVyLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICRzbGlkZXIuc2xpY2soe1xuICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMyxcbiAgICAgICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgICAgICBhc05hdkZvcjogJCgnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iX21pbmknKS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iX21pbmknXG4gICAgICAgICAgICAgICAgICAgIDogJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYicsXG4gICAgICAgICAgICAgICAgZm9jdXNPblNlbGVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhcnJvd3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZlcnRpY2FsOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbnRlck1vZGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VudGVyUGFkZGluZzogJzBweCcsXG4gICAgICAgICAgICAgICAgc3BlZWQ6IDEwMDAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXJOYXZfMigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgICRzbGlkZXIuc2xpY2soe1xuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAzLFxuICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICBhc05hdkZvcjogJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYl8yJyxcbiAgICAgICAgICAgIGZvY3VzT25TZWxlY3Q6IHRydWUsXG4gICAgICAgICAgICBhcnJvd3M6IGZhbHNlLFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdHJ1ZSxcbiAgICAgICAgICAgIGNlbnRlclBhZGRpbmc6ICcwcHgnLFxuICAgICAgICAgICAgc3BlZWQ6IDEwMDAsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyVGh1bWIoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICgkc2xpZGVyLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuY2xvc2VzdCgnLmNzX2dhbGxlcnlfaG92ZXJfc2hvd19uYXYnKVxuICAgICAgICAgICAgLmZpbmQoJy5jc19sZWZ0X2Fycm93X2dhbGxlcnknKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLmNsb3Nlc3QoJy5jc19nYWxsZXJ5X2hvdmVyX3Nob3dfbmF2JylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfcmlnaHRfYXJyb3dfZ2FsbGVyeScpO1xuXG4gICAgICAgICRzbGlkZXIuc2xpY2soe1xuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAxLFxuICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgYXNOYXZGb3I6ICcuY3NfZ2FsbGVyeV9zbGlkZXJfbmF2LnNsaWNrLXNsaWRlcicsXG4gICAgICAgICAgICBpbmZpbml0ZTogdHJ1ZSxcbiAgICAgICAgICAgIHNwZWVkOiA2MDAsXG4gICAgICAgICAgICBhdXRvcGxheTogZmFsc2UsXG4gICAgICAgICAgICBmYWRlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlclRodW1iXzIoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICgkc2xpZGVyLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuY2xvc2VzdCgnLmNzX2dhbGxlcnlfaG92ZXJfc2hvd19uYXYnKVxuICAgICAgICAgICAgLmZpbmQoJy5jc19sZWZ0X2Fycm93X2dhbGxlcnlfMiAuY3Nfc3dpcGVyX2J1dHRvbl9wcmV2Jyk7XG4gICAgICAgIGNvbnN0IG5leHRBcnJvdyA9ICRzbGlkZXJcbiAgICAgICAgICAgIC5jbG9zZXN0KCcuY3NfZ2FsbGVyeV9ob3Zlcl9zaG93X25hdicpXG4gICAgICAgICAgICAuZmluZCgnLmNzX3JpZ2h0X2Fycm93X2dhbGxlcnlfMiAuY3Nfc3dpcGVyX2J1dHRvbl9uZXh0Jyk7XG5cbiAgICAgICAgJHNsaWRlci5zbGljayh7XG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IDEsXG4gICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgIHByZXZBcnJvdzogcHJldkFycm93LFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0QXJyb3csXG4gICAgICAgICAgICBhc05hdkZvcjogJy5jc19nYWxsZXJ5X3NsaWRlcl9uYXZfMi5zbGljay1zbGlkZXInLFxuICAgICAgICAgICAgaW5maW5pdGU6IGZhbHNlLFxuICAgICAgICAgICAgc3BlZWQ6IDYwMCxcbiAgICAgICAgICAgIGF1dG9wbGF5OiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXI0KCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuXG4gICAgICAgIGlmICgkc2xpY2tBY3RpdmUuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19sZWZ0X2Fycm93Jyk7XG4gICAgICAgIGNvbnN0IG5leHRBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19yaWdodF9hcnJvdycpO1xuXG4gICAgICAgIGNvbnN0IHNsaWRlc1RvU2hvdyA9IHRoaXMuZ2V0U2xpZGVzUGVyVmlldygkc2xpZGVyKTtcblxuICAgICAgICAoJHNsaWNrQWN0aXZlIGFzIGFueSkuc2xpY2soe1xuICAgICAgICAgICAgYXV0b3BsYXk6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1hdXRvcGxheScsIDEpLFxuICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAgICAgICAgICRzbGlkZXIsXG4gICAgICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXknLFxuICAgICAgICAgICAgICAgIDMwMDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXNwZWVkJywgNjAwKSxcbiAgICAgICAgICAgIGluZmluaXRlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtbG9vcCcsIDApID09PSAwLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiBzbGlkZXNUb1Nob3csXG4gICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWNlbnRlcicsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMTApID09PSAxLFxuICAgICAgICAgICAgZG90czogdHJ1ZSxcbiAgICAgICAgICAgIGFwcGVuZERvdHM6ICRzbGlkZXIucGFyZW50KCkuZmluZCgnLmNzX3BhZ2luYXRpb24nKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudG9nZ2xlU2xpZGVyQXJyb3dzKCRzbGlkZXIsIHNsaWRlc1RvU2hvdyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXI1KCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuXG4gICAgICAgIGlmICgkc2xpY2tBY3RpdmUuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19sZWZ0X2Fycm93Jyk7XG4gICAgICAgIGNvbnN0IG5leHRBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19yaWdodF9hcnJvdycpO1xuXG4gICAgICAgICgkc2xpY2tBY3RpdmUgYXMgYW55KS5zbGljayh7XG4gICAgICAgICAgICBhdXRvcGxheTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWF1dG9wbGF5JywgMSksXG4gICAgICAgICAgICBhdXRvcGxheVNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoXG4gICAgICAgICAgICAgICAgJHNsaWRlcixcbiAgICAgICAgICAgICAgICAnZGF0YS1hdXRvcGxheScsXG4gICAgICAgICAgICAgICAgMzAwMFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtc3BlZWQnLCA2MDApLFxuICAgICAgICAgICAgaW5maW5pdGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1sb29wJywgMCkgPT09IDAsXG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IHRoaXMuZ2V0U2xpZGVzUGVyVmlldygkc2xpZGVyKSxcbiAgICAgICAgICAgIHN3aXBlVG9TbGlkZTogdHJ1ZSxcbiAgICAgICAgICAgIHByZXZBcnJvdzogcHJldkFycm93LFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0QXJyb3csXG4gICAgICAgICAgICBjZW50ZXJNb2RlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtY2VudGVyJywgMTApID09PSAxLFxuICAgICAgICAgICAgdmFyaWFibGVXaWR0aDpcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtdmFyaWFibGUtd2lkdGgnLCAxMCkgPT09IDEsXG4gICAgICAgICAgICBkb3RzOiB0cnVlLFxuICAgICAgICAgICAgYXBwZW5kRG90czogJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX3BhZ2luYXRpb24nKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAkc2xpZGVyOiBhbnksXG4gICAgICAgIHNldHRpbmdOYW1lOiBzdHJpbmcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogYW55XG4gICAgKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KCRzbGlkZXIuYXR0cihzZXR0aW5nTmFtZSksIDEwKSB8fCBkZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXI6IGFueSk6IG51bWJlciB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBjb25zdCBzbGlkZXNQZXJWaWV3VHlwZSA9ICRzbGlkZXIuYXR0cignZGF0YS1zbGlkZXMtcGVyLXZpZXcnKTtcbiAgICAgICAgICAgIGNvbnN0IHhzU2xpZGVzID0gcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLXhzLXNsaWRlcycpLCAxMCkgfHwgMTtcbiAgICAgICAgICAgIGNvbnN0IHNtU2xpZGVzID0gcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLXNtLXNsaWRlcycpLCAxMCkgfHwgMjtcbiAgICAgICAgICAgIGNvbnN0IG1kU2xpZGVzID0gcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLW1kLXNsaWRlcycpLCAxMCkgfHwgMjtcbiAgICAgICAgICAgIGNvbnN0IG1sZ1NsaWRlcyA9XG4gICAgICAgICAgICAgICAgcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLW1sZy1zbGlkZXMnKSwgMTApIHx8IDM7XG4gICAgICAgICAgICBjb25zdCBsZ1NsaWRlcyA9IHBhcnNlSW50KCRzbGlkZXIuYXR0cignZGF0YS1sZy1zbGlkZXMnKSwgMTApIHx8IDM7XG4gICAgICAgICAgICBjb25zdCB4bFNsaWRlcyA9XG4gICAgICAgICAgICAgICAgcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLXhsLXNsaWRlcycpLCAxMCkgfHwgbGdTbGlkZXM7XG5cbiAgICAgICAgICAgIGlmIChzbGlkZXNQZXJWaWV3VHlwZSA9PT0gJ3Jlc3BvbnNpdmUnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNTc2KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB4c1NsaWRlcztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzbVNsaWRlcztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTAyNCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWRTbGlkZXM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEyODApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1sZ1NsaWRlcztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTQwMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGdTbGlkZXM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhsU2xpZGVzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHNsaWRlc1BlclZpZXdUeXBlLCAxMCkgfHwgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLXNsaWRlcy1wZXItdmlldycpLCAxMCkgfHwgMztcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZVNsaWRlckFycm93cygkc2xpZGVyOiBhbnksIHNsaWRlc1RvU2hvdzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlkZXMgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZScpO1xuICAgICAgICBjb25zdCB0b3RhbFNsaWRlcyA9ICRzbGlkZXMubGVuZ3RoO1xuXG4gICAgICAgIGNvbnN0ICRzbGlkZXJDb250YWluZXIgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKTtcbiAgICAgICAgY29uc3Qgc2hvdWxkSGlkZSA9IHRvdGFsU2xpZGVzIDw9IHNsaWRlc1RvU2hvdztcblxuICAgICAgICAkc2xpZGVyQ29udGFpbmVyLnRvZ2dsZUNsYXNzKCdoaWRlLWFycm93cycsIHNob3VsZEhpZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3luY1NsaWRlcnMobWFpblNlbGVjdG9yOiBzdHJpbmcsIG5hdlNlbGVjdG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJG1haW4gPSAkKG1haW5TZWxlY3Rvcik7XG4gICAgICAgIGNvbnN0ICRuYXYgPSAkKG5hdlNlbGVjdG9yKTtcblxuICAgICAgICBpZiAoJG1haW4ubGVuZ3RoICYmICRuYXYubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoISRtYWluLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICAgICAgJG1haW4uc2xpY2soe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Nob3c6IDEsXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgICAgICAgICBhcnJvd3M6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGZhZGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGFzTmF2Rm9yOiBuYXZTZWxlY3RvcixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCEkbmF2Lmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICAgICAgJG5hdi5zbGljayh7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMyxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICAgICAgICAgIGFzTmF2Rm9yOiBtYWluU2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzT25TZWxlY3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGFycm93czogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjZW50ZXJNb2RlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVUb05leHRTbGlkZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGNvbnN0ICRzbGlkZXIgPSAkKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoJHNsaWRlci5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAkc2xpZGVyLnNsaWNrKCdzbGlja05leHQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==