vcomply-workflow-engine 7.4.2 → 7.4.3

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.
@@ -731,9 +731,12 @@ export class FrequencyService {
731
731
  pattern =
732
732
  `4~${selectedDay}~${this.getMonth(frequency.repeatOptions?.repeatOn)}~1`;
733
733
  break;
734
- case 'ongoing':
734
+ case 'biannual':
735
+ pattern = `9~${selectedDay}~${this.getMonth(frequency.repeatOptions?.repeatOn)}~0`;
736
+ break;
737
+ case 'on_going':
735
738
  const type = ['week', 'month', 'quarter', 'semester', 'year'];
736
- const index = type.indexOf(frequency.onGoing?.startOf);
739
+ const index = type.indexOf(frequency.onGoing?.startOf) ?? 0;
737
740
  pattern = `10~${frequency.onGoing?.reminders}~${index}~0`;
738
741
  break;
739
742
  case 'random':
@@ -846,4 +849,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
846
849
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.GrcService }, { type: i4.Configurations, decorators: [{
847
850
  type: Optional
848
851
  }] }]; } });
849
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFHLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQUlwRSxNQUFNLE9BQU8sZ0JBQWdCO0lBcUUzQixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3hCLFVBQXNCLEVBQ2xCLE1BQXVCO1FBSDNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXZFekIsZUFBVSxHQUFrQjtZQUNqQyxTQUFTO1lBQ1QsVUFBVTtZQUNWLE9BQU87WUFDUCxPQUFPO1lBQ1AsS0FBSztZQUNMLE1BQU07WUFDTixNQUFNO1lBQ04sUUFBUTtZQUNSLFdBQVc7WUFDWCxTQUFTO1lBQ1QsVUFBVTtZQUNWLFVBQVU7U0FDWCxDQUFDO1FBRUssWUFBTyxHQUFrQjtZQUM5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LEVBQUUsVUFBVSxFQUFFLFVBQVU7U0FDbkUsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUUxQyxPQUFPLEdBQUcsR0FBRyxJQUFJLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0ksWUFBWSxDQUFDLGFBQXFCO1FBQ3ZDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxhQUFhLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDaEYsQ0FBQzsrR0FoM0JZLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBMEVJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgIHJldHJ5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb25zJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC9tb21lbnQnO1xyXG5pbXBvcnQgeyBERUZBVUxUX1RJTUUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGltZS5jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBGcmVxdWVuY3lPYmplY3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ZyZXF1ZW5jeS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXBpLmNvbnN0YW50cyc7XHJcbmltcG9ydCB7IEdyY1NlcnZpY2UgfSBmcm9tICcuLi8uLi93b3JrZmxvdy9zaGFyZWQvc2VydmljZXMvZ3JjLnNlcnZpY2UnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBNT05USF9OQU1FUyB9IGZyb20gJy4vZnJlcXVlbmN5LmNvbnN0YW50JztcclxuaW1wb3J0IHsgUEFHSU5BVElPTl9MSU1JVCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb21tb24uY29uc3RhbnRzJztcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZyZXF1ZW5jeVNlcnZpY2Uge1xyXG4gIHB1YmxpYyBtb250aEFycmF5OiBBcnJheTxzdHJpbmc+ID0gW1xyXG4gICAgJ0phbnVhcnknLFxyXG4gICAgJ0ZlYnJ1YXJ5JyxcclxuICAgICdNYXJjaCcsXHJcbiAgICAnQXByaWwnLFxyXG4gICAgJ01heScsXHJcbiAgICAnSnVuZScsXHJcbiAgICAnSnVseScsXHJcbiAgICAnQXVndXN0JyxcclxuICAgICdTZXB0ZW1iZXInLFxyXG4gICAgJ09jdG9iZXInLFxyXG4gICAgJ05vdmVtYmVyJyxcclxuICAgICdEZWNlbWJlcicsXHJcbiAgXTtcclxuXHJcbiAgcHVibGljIGRheU5hbWU6IEFycmF5PHN0cmluZz4gPSBbXHJcbiAgICAnTW9uZGF5JyxcclxuICAgICdUdWVzZGF5JyxcclxuICAgICdXZWRuZXNkYXknLFxyXG4gICAgJ1RodXJzZGF5JyxcclxuICAgICdGcmlkYXknLFxyXG4gICAgJ1NhdHVyZGF5JyxcclxuICAgICdTdW5kYXknLFxyXG4gIF07IC8vIGZ1bGwgZGF5IG5hbWVcclxuXHJcbiAgcHVibGljIHF1YXJ0ZXJseU1vbnRoOiBBcnJheTxzdHJpbmc+ID0gW1xyXG4gICAgJ0phbnVhcnksIEFwcmlsLCBKdWx5LCBPY3RvYmVyJyxcclxuICAgICdGZWJydWFyeSwgTWF5LCBBdWd1c3QsIE5vdmVtYmVyJyxcclxuICAgICdNYXJjaCwgSnVuZSwgU2VwdGVtYmVyLCBEZWNlbWJlcicsXHJcbiAgXTtcclxuXHJcbiAgcHVibGljIGRhdGVDb25maWcgPSB7XHJcbiAgICBmb3JtYXQ6ICdERCBNTSBZWVlZJyxcclxuICAgIHNob3dHb1RvQ3VycmVudDogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGZyZXF1ZW5jeUluZm8gPSB7XHJcbiAgICBwbGFjZWhvbGRlcjogJycsXHJcbiAgICBwYXR0ZXJuOiAnJyxcclxuICAgIGNhc2U6ICcnLFxyXG4gICAgZmFpbGVkQWZ0ZXI6IDAsXHJcbiAgICB3aW5kb3c6IDAsXHJcbiAgICB0aW1lSW4xMmhyOiAnJyxcclxuICAgIHRpbWVJbjI0SHI6ICcnLFxyXG4gICAgbGlmZWN5Y2xlRGV0YWlsczogJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgc3RhcnRGcm9tOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcclxuICAgIHJlcG9ydElkOiAwLFxyXG4gICAgZmFpbGVkX3RpbWVfdXRjOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcclxuICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXHJcbiAgICBkYXRlT2ZNb2RpZmllZDogMCxcclxuICAgIHN0YXJ0RGF0ZTogJycsXHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGZyZXF1ZW5jeURldGFpbHM6IG9iamVjdCA9IHtcclxuICAgIHBhdHRlcm46ICcnLFxyXG4gICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcclxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxyXG4gICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXHJcbiAgICBzZWxlY3RlZFJlcG9ydDogMCxcclxuICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICB3aW5kb3c6IDAsXHJcbiAgICBmYWlsZWQ6IDAsXHJcbiAgICB0aW1lOiBERUZBVUxUX1RJTUUsXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBlbnYhOiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgZ3JjU2VydmljZTogR3JjU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXHJcbiAgKSB7XHJcbiAgICBpZiAoY29uZmlnKSB7XHJcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRpbWVGcm9tMTJoVG8yNGgodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCB0aW1lX2FyciA9IHZhbHVlLnNwbGl0KCcgJyk7XHJcbiAgICAgIGNvbnN0IG1lcmlkaWFuID0gdGltZV9hcnJbMV07XHJcbiAgICAgIGNvbnN0IGhyX21pbiA9IHRpbWVfYXJyWzBdLnNwbGl0KCc6JykubWFwKE51bWJlcik7XHJcbiAgICAgIGxldCBociA9IGhyX21pblswXTtcclxuICAgICAgY29uc3QgbWluID0gaHJfbWluWzFdID8/IDA7XHJcbiAgICAgIGNvbnN0IHNlYyA9IGhyX21pblsyXSA/PyAwO1xyXG5cclxuICAgICAgaWYgKG1lcmlkaWFuPy50b0xvd2VyQ2FzZSgpID09ICdwbScpIHtcclxuICAgICAgICBpZiAoaHIgPCAxMikge1xyXG4gICAgICAgICAgaHIgPSBociArIDEyO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaHIgPT0gMTIpIHtcclxuICAgICAgICAgIGhyID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgU3RyaW5nKGhyKS5wYWRTdGFydCgyLCAnMCcpICtcclxuICAgICAgICAnOicgK1xyXG4gICAgICAgIFN0cmluZyhtaW4pLnBhZFN0YXJ0KDIsICcwJykgK1xyXG4gICAgICAgICc6JyArXHJcbiAgICAgICAgU3RyaW5nKHNlYykucGFkU3RhcnQoMiwgJzAnKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGltZUluMTIodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBsZXQgaHI7XHJcbiAgICAgIGxldCBtaW47XHJcbiAgICAgIGxldCBtZXJpZGlhbjtcclxuICAgICAgaWYgKHZhbHVlLnNwbGl0KCc6JylbMF0gPj0gMTIpIHtcclxuICAgICAgICBociA9IHZhbHVlLnNwbGl0KCc6JylbMF0gPT09ICcxMicgPyAxMiA6IHZhbHVlLnNwbGl0KCc6JylbMF0gLSAxMjtcclxuICAgICAgICBtaW4gPSB2YWx1ZS5zcGxpdCgnOicpWzFdO1xyXG4gICAgICAgIGlmIChtaW4ubGVuZ3RoIDwgMikge1xyXG4gICAgICAgICAgbWluID0gJzAnICsgbWluO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtZXJpZGlhbiA9ICdwbSc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaHIgPSB2YWx1ZS5zcGxpdCgnOicpWzBdID09ICcwMCcgPyAxMiA6IHZhbHVlLnNwbGl0KCc6JylbMF07XHJcbiAgICAgICAgbWluID0gdmFsdWUuc3BsaXQoJzonKVsxXTtcclxuICAgICAgICBpZiAobWluLmxlbmd0aCA8IDIpIHtcclxuICAgICAgICAgIG1pbiA9ICcwJyArIG1pbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWVyaWRpYW4gPSAnYW0nO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBociArICc6JyArIG1pbiArICcgJyArIG1lcmlkaWFuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZnJhbWV3b3JrU3RhcnREYXRlKHJvdzogYW55KSB7XHJcbiAgICBsZXQgY2FsY3VsYXRlZERheTogbnVtYmVyID0gMDtcclxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSAqIDEwMDApLmdldERheSgpO1xyXG4gICAgY29uc3QgZ2V0RGF0ZSA9IG5ldyBEYXRlKHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSAqIDEwMDApLmdldERhdGUoKTtcclxuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKS5nZXREYXkoKTtcclxuICAgIGNvbnN0IHN0YXJ0TW9udGggPSBuZXcgRGF0ZShwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgKiAxMDAwKS5nZXRNb250aCgpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgcGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpIDwgRGF0ZS5ub3coKSAvIDEwMDAgJiZcclxuICAgICAgKHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSB3ZWVrJyB8fFxyXG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSAyIHdlZWtzJyB8fFxyXG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSAzIHdlZWtzJylcclxuICAgICkge1xyXG4gICAgICBsZXQgZGF5c1RvQmVBZGRlZCA9IDA7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNzsgaSsrKSB7XHJcbiAgICAgICAgaWYgKChjdXJyZW50RGF0ZSArIGkpICUgNyA9PT0gc3RhcnREYXRlKSB7XHJcbiAgICAgICAgICBkYXlzVG9CZUFkZGVkID0gaTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0aW1lc3RhbXBUb0JlQWRkZWQgPSBkYXlzVG9CZUFkZGVkICogMjQgKiA2MCAqIDYwICogMTAwMDtcclxuICAgICAgY2FsY3VsYXRlZERheSA9IG5ldyBEYXRlKFxyXG4gICAgICAgIG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgdGltZXN0YW1wVG9CZUFkZGVkXHJcbiAgICAgICkuZ2V0VGltZSgpO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgcGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpIDwgRGF0ZS5ub3coKSAvIDEwMDAgJiZcclxuICAgICAgIShcclxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgd2VlaycgfHxcclxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgMiB3ZWVrcycgfHxcclxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgMyB3ZWVrcydcclxuICAgICAgKSAmJlxyXG4gICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlICE9PSAnZXZlcnkgZGF5J1xyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IG1vbWVudFVuaXggPSBtb21lbnQoXHJcbiAgICAgICAgZ2V0RGF0ZSArXHJcbiAgICAgICAgICAnLScgK1xyXG4gICAgICAgICAgKG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICAgICAgICctJyArXHJcbiAgICAgICAgICBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgK1xyXG4gICAgICAgICAgJyAwMDowMCcsXHJcbiAgICAgICAgJ0RELU1NLVlZWVkgSEg6bW0nXHJcbiAgICAgICkudW5peCgpO1xyXG4gICAgICBjYWxjdWxhdGVkRGF5ID0gbW9tZW50VW5peCAqIDEwMDA7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgZGF5JyAmJlxyXG4gICAgICBwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgPCBEYXRlLm5vdygpIC8gMTAwMFxyXG4gICAgKSB7XHJcbiAgICAgIGNhbGN1bGF0ZWREYXkgPSBEYXRlLm5vdygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2FsY3VsYXRlZERheSA9IHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSAqIDEwMDA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2FsY3VsYXRlZERheSAvIDEwMDA7XHJcbiAgfVxyXG5cclxuICBmcmFtZXdvcmtGcmVxdWVuY3koZnJlcXVlbmN5OiBhbnksIHN0YXJ0X2RhdGU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoc3RhcnRfZGF0ZSAqIDEwMDApO1xyXG4gICAgICBjb25zdCBmaXJzdEhhbGZNb250aCA9IFsnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnXTtcclxuICAgICAgY29uc3Qgc2Vjb25kSGFsZk1vbnRoID0gWyc3JywgJzgnLCAnOScsICcxMCcsICcxMScsICcxMiddO1xyXG4gICAgICBjb25zdCBnZXREYXlEYXRhID0gc3RhcnREYXRlLmdldERheSgpID09PSAwID8gNyA6IHN0YXJ0RGF0ZS5nZXREYXkoKTtcclxuICAgICAgY29uc3QgbW9udGggPSBzdGFydERhdGUuZ2V0TW9udGgoKTtcclxuICAgICAgbGV0IHF1YXJ0ZXJQYXR0ZXJuID0gJ34xLDQsNywxMH4wJztcclxuICAgICAgc3dpdGNoIChtb250aCkge1xyXG4gICAgICAgIGNhc2UgMDpcclxuICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgY2FzZSA2OlxyXG4gICAgICAgIGNhc2UgOTpcclxuICAgICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34xLDQsNywxMH4wJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTpcclxuICAgICAgICBjYXNlIDQ6XHJcbiAgICAgICAgY2FzZSA3OlxyXG4gICAgICAgIGNhc2UgMTA6XHJcbiAgICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+Miw1LDgsMTF+MCc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgY2FzZSA1OlxyXG4gICAgICAgIGNhc2UgODpcclxuICAgICAgICBjYXNlIDExOlxyXG4gICAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjMsNiw5LDEyfjAnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgLy8gXTtcclxuICAgICAgbGV0IGZyZXF1ZW5jeV9wYXR0ZXJuO1xyXG5cclxuICAgICAgZnJlcXVlbmN5ID0gZnJlcXVlbmN5LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGxldCBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMDtcclxuICAgICAgLy8gQCA9PiBkYXkgKDEgdG8gNylcclxuICAgICAgLy8gIyA9PiBtb250aCAoMSB0byAxMilcclxuICAgICAgLy8gPyA9PiBtb250aCAlIDIgPT0gMCA/IFwiMiw0LDYsOCwxMCwxMlwiIDogXCIxLDMsNSw3LDksMTFcIlxyXG5cclxuICAgICAgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IHdlZWsnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMn4nICsgZ2V0RGF5RGF0YSArICd+MH4xJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnb25lIHRpbWUnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxyXG4gICAgICAgICAgJzB+JyArXHJcbiAgICAgICAgICBzdGFydERhdGUuZ2V0RnVsbFllYXIoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIHN0YXJ0RGF0ZS5nZXREYXRlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgZGF5Jykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjEnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBhbHRlcm5hdGUgZGF5Jykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjInO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAxMCBkYXlzJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjEwJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMiB3ZWVrcycpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcyficgKyBnZXREYXlEYXRhICsgJ34wfjInO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBmb3J0bmlnaHQnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4nICsgZ2V0RGF5RGF0YSArICd+MH4xNCc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDMgd2Vla3MnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMn4nICsgZ2V0RGF5RGF0YSArICd+MH4zJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgbW9udGgnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxyXG4gICAgICAgICAgJzN+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnfjEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyfjAnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSA0NSBkYXlzJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjQ1JztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgYWx0ZXJuYXRlIG1vbnRoJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cclxuICAgICAgICAgICczficgK1xyXG4gICAgICAgICAgc3RhcnREYXRlLmdldERhdGUoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICUgMiA9PSAwXHJcbiAgICAgICAgICAgID8gJzIsNCw2LDgsMTAsMTInXHJcbiAgICAgICAgICAgIDogJzEsMyw1LDcsOSwxMScpICtcclxuICAgICAgICAgICd+MCc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IHF1YXJ0ZXInKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnN34nICsgc3RhcnREYXRlLmdldERhdGUoKSArIHF1YXJ0ZXJQYXR0ZXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDEyMCBkYXlzJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjEyMCc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnaGFsZiB5ZWFybHknKSB7XHJcbiAgICAgICAgY29uc3QgaW5kZXgxID0gZmlyc3RIYWxmTW9udGguaW5kZXhPZihcclxuICAgICAgICAgIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKClcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGluZGV4MiA9IHNlY29uZEhhbGZNb250aC5pbmRleE9mKFxyXG4gICAgICAgICAgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgcGF0dGVybiA9XHJcbiAgICAgICAgICBpbmRleDEgPiAtMVxyXG4gICAgICAgICAgICA/ICd+JyArXHJcbiAgICAgICAgICAgICAgZmlyc3RIYWxmTW9udGhbaW5kZXgxXSArXHJcbiAgICAgICAgICAgICAgJywnICtcclxuICAgICAgICAgICAgICBzZWNvbmRIYWxmTW9udGhbaW5kZXgxXSArXHJcbiAgICAgICAgICAgICAgJ34wJ1xyXG4gICAgICAgICAgICA6ICd+JyArXHJcbiAgICAgICAgICAgICAgZmlyc3RIYWxmTW9udGhbaW5kZXgyXSArXHJcbiAgICAgICAgICAgICAgJywnICtcclxuICAgICAgICAgICAgICBzZWNvbmRIYWxmTW9udGhbaW5kZXgyXSArXHJcbiAgICAgICAgICAgICAgJ34wJztcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICczficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgcGF0dGVybjtcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAneWVhcmx5Jykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cclxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjEnO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDIgeWVhcnMnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxyXG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+Mic7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMyB5ZWFycycpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XHJcbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ34zJztcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSA0IHllYXJzJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cclxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjQnO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDUgeWVhcnMnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxyXG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+NSc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMTAgeWVhcnMnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxyXG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+MTAnO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ3RvIGJlIGRlY2lkZWQgbGF0ZXInKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHRoaXMuZWRpdERhdGEuZnJlcXVlbmN5X2RldGFpbHMgPSBmcmVxdWVuY3lfcGF0dGVybjtcclxuXHJcbiAgICAgIHJldHVybiB7IGZyZXF1ZW5jeV9wYXR0ZXJuLCBjb250aW51b3VzX2ZhaWxlZF9kYXlzIH07XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgIHJldHVybiB7IGZyZXF1ZW5jeV9wYXR0ZXJuOiAnJywgY29udGludW91c19mYWlsZWRfZGF5czogMCB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvcnRIYW5kX2ZyZXFDYWwoZnJlcXVlbmN5OiBhbnksIGRheTogYW55LCBtb250aDogYW55LCB5ZWFyPzogYW55KSB7XHJcbiAgICBjb25zdCBtb250aE5hbWVzID0gTU9OVEhfTkFNRVM7XHJcbiAgICBsZXQgZnJlcXVlbmN5X2RldGFpbHM7XHJcbiAgICBsZXQgY29udGludW91c19mYWlsZWRfZGF5cyA9IDA7XHJcbiAgICBjb25zdCBkYXRlX3ZhbHVlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICBkYXRlX3ZhbHVlLnNldE1vbnRoKFxyXG4gICAgICB0eXBlb2YgbW9udGggIT09ICdudW1iZXInXHJcbiAgICAgICAgPyBtb250aE5hbWVzLmZpbHRlcigoeCkgPT4geC5tb250aCA9PT0gbW9udGg/LnN1YnN0cmluZygwLCAzKSlbMF1cclxuICAgICAgICAgICAgPy52YWx1ZSAtIDFcclxuICAgICAgICA6IG1vbnRoXHJcbiAgICApO1xyXG4gICAgaWYgKCF5ZWFyKSB7XHJcbiAgICAgIGRhdGVfdmFsdWUuc2V0RnVsbFllYXIoMjAgKyBtb250aC5zcGxpdChcIidcIilbMV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGF0ZV92YWx1ZS5zZXRGdWxsWWVhcih5ZWFyKTtcclxuICAgIH1cclxuICAgIGRhdGVfdmFsdWUuc2V0RGF0ZShkYXkpO1xyXG4gICAgbGV0IHF1YXJ0ZXJQYXR0ZXJuID0gJ34xLDQsNywxMH4wJztcclxuICAgIGNvbnN0IGZpcnN0SGFsZk1vbnRoID0gWycxJywgJzInLCAnMycsICc0JywgJzUnLCAnNiddO1xyXG4gICAgY29uc3Qgc2Vjb25kSGFsZk1vbnRoID0gWyc3JywgJzgnLCAnOScsICcxMCcsICcxMScsICcxMiddO1xyXG4gICAgZnJlcXVlbmN5ID0gZnJlcXVlbmN5LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgc3dpdGNoIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkpIHtcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICBjYXNlIDM6XHJcbiAgICAgIGNhc2UgNjpcclxuICAgICAgY2FzZSA5OlxyXG4gICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34xLDQsNywxMH4wJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICBjYXNlIDQ6XHJcbiAgICAgIGNhc2UgNzpcclxuICAgICAgY2FzZSAxMDpcclxuICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+Miw1LDgsMTF+MCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgY2FzZSA1OlxyXG4gICAgICBjYXNlIDg6XHJcbiAgICAgIGNhc2UgMTE6XHJcbiAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjMsNiw5LDEyfjAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZ2V0RGF5ID0gZGF0ZV92YWx1ZS5nZXREYXkoKSA9PT0gMCA/IDcgOiBkYXRlX3ZhbHVlLmdldERheSgpO1xyXG4gICAgc3dpdGNoIChmcmVxdWVuY3kpIHtcclxuICAgICAgY2FzZSAnZXZlcnkgd2Vlayc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMn4nICsgZ2V0RGF5ICsgJ34wfjEnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnb25lIHRpbWUnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cclxuICAgICAgICAgICcwficgK1xyXG4gICAgICAgICAgJycgK1xyXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXRGdWxsWWVhcigpICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSBkYXknOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjEnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgYWx0ZXJuYXRlIGRheSc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMX4wfjB+Mic7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSAxMCBkYXlzJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH4xMCc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSAyIHdlZWtzJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcyficgKyBnZXREYXkgKyAnfjB+Mic7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSBmb3J0bmlnaHQnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+JyArIGdldERheSArICd+MH4xNCc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSAzIHdlZWtzJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcyficgKyBnZXREYXkgKyAnfjB+Myc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSBtb250aCc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxyXG4gICAgICAgICAgJzN+JyArIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICsgJ34xLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMn4wJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IDQ1IGRheXMnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjQ1JztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IGFsdGVybmF0ZSBtb250aCc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxyXG4gICAgICAgICAgJzN+JyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSAlIDIgPT09IDBcclxuICAgICAgICAgICAgPyAnMiw0LDYsOCwxMCwxMidcclxuICAgICAgICAgICAgOiAnMSwzLDUsNyw5LDExJykgK1xyXG4gICAgICAgICAgJ34wJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IHF1YXJ0ZXInOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzd+JyArIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICsgcXVhcnRlclBhdHRlcm47XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IDEyMCBkYXlzJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH4xMjAnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnaGFsZiB5ZWFybHknOlxyXG4gICAgICAgIGNvbnN0IGluZGV4MSA9IGZpcnN0SGFsZk1vbnRoLmluZGV4T2YoXHJcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgaW5kZXgyID0gc2Vjb25kSGFsZk1vbnRoLmluZGV4T2YoXHJcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgcGF0dGVybiA9XHJcbiAgICAgICAgICBpbmRleDEgPiAtMVxyXG4gICAgICAgICAgICA/ICd+JyArXHJcbiAgICAgICAgICAgICAgZmlyc3RIYWxmTW9udGhbaW5kZXgxXSArXHJcbiAgICAgICAgICAgICAgJywnICtcclxuICAgICAgICAgICAgICBzZWNvbmRIYWxmTW9udGhbaW5kZXgxXSArXHJcbiAgICAgICAgICAgICAgJ34wJ1xyXG4gICAgICAgICAgICA6ICd+JyArXHJcbiAgICAgICAgICAgICAgZmlyc3RIYWxmTW9udGhbaW5kZXgyXSArXHJcbiAgICAgICAgICAgICAgJywnICtcclxuICAgICAgICAgICAgICBzZWNvbmRIYWxmTW9udGhbaW5kZXgyXSArXHJcbiAgICAgICAgICAgICAgJ34wJztcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICczficgKyBkYXRlX3ZhbHVlLmdldERhdGUoKSArIHBhdHRlcm47XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2FubnVhbCc6XHJcbiAgICAgIGNhc2UgJ3llYXJseSc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxyXG4gICAgICAgICAgJzR+JyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICAgICAgICd+MSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IDIgeWVhcnMnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cclxuICAgICAgICAgICc0ficgK1xyXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICAgICAnfjInO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSAzIHllYXJzJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XHJcbiAgICAgICAgICAnNH4nICtcclxuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAgICAgJ34zJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgNCB5ZWFycyc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxyXG4gICAgICAgICAgJzR+JyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICAgICAgICd+NCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IDUgeWVhcnMnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cclxuICAgICAgICAgICc0ficgK1xyXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICAgICAnfjUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSAxMCB5ZWFycyc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxyXG4gICAgICAgICAgJzR+JyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICAgICAgICd+MTAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvbmdvaW5nJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxMH4wfjB+MCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3RvIGJlIGRlY2lkZWQgbGF0ZXInOlxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzV+MH4wfjAnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcGF0dGVybjogZnJlcXVlbmN5X2RldGFpbHMsXHJcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0T25Db21wbGV0aW9uT2ZSZXNwb25zaWJpbGl0eSgpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXHJcbiAgICAgICd0b2tlbicsXHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcclxuICAgICk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52LmNvbXBsaWFuY2VHZXQgKyAncmVwb3J0cy9vbkNvbXBsZXRpb25PZlJlcG9ydHMnLCB7XHJcbiAgICAgICAgaGVhZGVycyxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlVGltZVpvbmUoZGF0ZTogYW55KSB7XHJcbiAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGludkRhdGUgPSBuZXcgRGF0ZShcclxuICAgICAgZGF0ZS50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7XHJcbiAgICAgICAgdGltZVpvbmU6IHRoaXMuYXV0aFNlcnZpY2U/LnVzZXJEZXRhaWxzPy50aW1lem9uZSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICByZXR1cm4gaW52RGF0ZTtcclxuICB9XHJcblxyXG4gIGdldFJlc3BvbnNpYmlsaXR5TGlzdChwYXlsb2FkOiBhbnkpIHtcclxuICAgIGNvbnN0IGxpbWl0ID0gUEFHSU5BVElPTl9MSU1JVDtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXHJcbiAgICAgICd0b2tlbicsXHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCksXHJcbiAgICApXHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQ8YW55PihcclxuICAgICAgICBgJHt0aGlzLmVudi5jb21wbGlhbmNlR2V0fXNhaWxzUmVzcG9uc2liaWxpdGllc0xpc3QmcGFnZT0ke3BheWxvYWQ/LnBhZ2VOb30mbGltaXQ9JHtsaW1pdH0ke3BheWxvYWQ/LnNlYXJjaFRlcm0gPyBgJnNlYXJjaFRlcm09JHtwYXlsb2FkPy5zZWFyY2hUZXJtfWAgOiAnJ30mYml6Q3ljbGVSZXF1aXJlZD0wJmluY2x1ZGU9YXNzaWduZWVzJmdyb3VwPWFsbGAsXHJcbiAgICAgICAgeyBoZWFkZXJzIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShyZXRyeSgxKSk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXNwb25zaWJpbGl0aWVzQ291bnQocGF5bG9hZDogYW55KSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxyXG4gICAgICAndG9rZW4nLFxyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KFxyXG4gICAgICAgIHRoaXMuZW52LnJlc3BvbnNpYmlsaXR5UG9zdCArICdtYW5hZ2VfcmVzcG9uc2liaWxpdGllc19yZXBvcnRzX2NvdW50JyxcclxuICAgICAgICBwYXlsb2FkLFxyXG4gICAgICAgIHsgaGVhZGVycyB9XHJcbiAgICAgIClcclxuICAgICAgLnBpcGUocmV0cnkoMSkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsUmVzcG9uc2liaWxpdGllcyhwYWdlTm86IG51bWJlciwgcGF5bG9hZDogYW55KSB7XHJcbiAgICBjb25zdCBidXNpbmVzc0N5Y2xlID0gdGhpcy5ncmNTZXJ2aWNlLmdldEJ1c2luZXNzQ3ljbGUoKTtcclxuICAgIGNvbnN0IGZvcm1hdHRlZEN5Y2xlID0gYnVzaW5lc3NDeWNsZS5zZWxlY3RlZF9jeWNsZVxyXG4gICAgICA/IGRheWpzKGJ1c2luZXNzQ3ljbGUuc2VsZWN0ZWRfY3ljbGUuc3BsaXQoJy0nKVswXSkuZm9ybWF0KCdZWVlZLU1NLUREJykgKyBcclxuICAgICAgICAnOicgKyBcclxuICAgICAgICBkYXlqcyhidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlLnNwbGl0KCctJylbMV0pLmZvcm1hdCgnWVlZWS1NTS1ERCcpXHJcbiAgICAgIDogJyc7XHJcbiAgICBcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxyXG4gICAgICAuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpXHJcbiAgICAgIC5zZXQoJ2Jpel9jeWNsZScsIGZvcm1hdHRlZEN5Y2xlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihcclxuICAgICAgdGhpcy5lbnYuY29tcGxpYW5jZUdldCArIEFQSS5yZXNwb25zaWJpbGl0eUxpc3QgKyBgJnBhZ2U9JHtwYWdlTm99JmxpbWl0PSR7UEFHSU5BVElPTl9MSU1JVH0ke3BheWxvYWQ/LnNlYXJjaFRlcm0gPyBgJnNlYXJjaFRlcm09JHtwYXlsb2FkPy5zZWFyY2hUZXJtfWAgOiAnJ31gICxcclxuICAgICAgeyBoZWFkZXJzIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXREYXRlKCkge1xyXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgZGF5ID0gU3RyaW5nKGN1cnJlbnREYXRlPy5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCBtb250aCA9IFN0cmluZyhjdXJyZW50RGF0ZT8uZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCB5ZWFyID0gY3VycmVudERhdGU/LmdldEZ1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gYCR7ZGF5fS0ke21vbnRofS0ke3llYXJ9YDtcclxuICAgIHJldHVybiBmb3JtYXR0ZWREYXRlO1xyXG4gIH1cclxuICBcclxuICAvKipcclxuICAgKiBDb252ZXJ0cyBhIGZyZXF1ZW5jeSBjb25maWd1cmF0aW9uIG9iamVjdCBpbnRvIGEgc3RhbmRhcmRpemVkIEZyZXF1ZW5jeU9iamVjdCBmb3JtYXQuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGZyZXF1ZW5jeSAtIFRoZSBpbnB1dCBmcmVxdWVuY3kgY29uZmlndXJhdGlvbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XHJcbiAgICogLSBjYXNlOiBUaGUgdHlwZSBvZiBmcmVxdWVuY3kgKCdvbmVfdGltZScgfCAnZGFpbHknIHwgJ3dlZWtseScgfCAnbW9udGhseScgfCAncXVhcnRlcmx5JyB8ICdzZW1lc3RlcicgfCAneWVhcmx5JyB8ICdyYW5kb20nIHwgJ29uZ29pbmcnIHwgJ29uX2NvbXBsZXRpb25fb2YnIHwgJ2JpYW5udWFsbHknKVxyXG4gICAqIC0gd2luZG93OiBOdW1iZXIgb2YgZGF5cyBiZWZvcmUgdGhlIHRhc2sgY2FuIGJlIHN0YXJ0ZWRcclxuICAgKiAtIGZhaWxlZEFmdGVyOiBOdW1iZXIgb2YgZGF5cyBhZnRlciB3aGljaCB0aGUgdGFzayBpcyBjb25zaWRlcmVkIGZhaWxlZFxyXG4gICAqIC0gY29udGludW91c19mYWlsZWRfZGF5czogTnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggdGhlIHRhc2sgaXMgYXV0by1kZWFjdGl2YXRlZFxyXG4gICAqIC0gZGF5OiBUaGUgZGF5IG9mIG9jY3VycmVuY2VcclxuICAgKiAtIHRpbWVJbjI0SHI6IFRpbWUgaW4gMjQtaG91ciBmb3JtYXRcclxuICAgKiAtIGV2ZXJ5OiBGcmVxdWVuY3kgaW50ZXJ2YWxcclxuICAgKiAtIHNlbGVjdGVkRGF5OiBBcnJheSBvZiBzZWxlY3RlZCBkYXlzIGZvciB3ZWVrbHkgZnJlcXVlbmN5ICgxLTcgcmVwcmVzZW50aW5nIE1vbmRheS1TdW5kYXkpXHJcbiAgICogLSBzZWxlY3RlZE1vbnRoOiBBcnJheSBvZiBzZWxlY3RlZCBtb250aHMgKDAtMTEgcmVwcmVzZW50aW5nIEphbnVhcnktRGVjZW1iZXIpXHJcbiAgICogLSBzdGFydEZyb206IFVuaXggdGltZXN0YW1wIGZvciB0aGUgc3RhcnQgZGF0ZVxyXG4gICAqIC0gbGlmZWN5Y2xlRGV0YWlsczogU3RyaW5nIGluIGZvcm1hdCBcIllZWVktTU0tRER+fk5cIiB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXNcclxuICAgKiAtIHJhbmRvbVR5cGVTZWxlY3RlZDogSW5kZXggZm9yIHJhbmRvbSBmcmVxdWVuY3kgdHlwZSAoMDogd2Vla2x5LCAxOiBtb250aGx5LCAyOiBxdWFydGVybHksIDM6IHllYXJseSlcclxuICAgKiAtIHJhbmRvbUluc3RhbmNlczogTnVtYmVyIG9mIHJhbmRvbSBvY2N1cnJlbmNlc1xyXG4gICAqIC0gc2VsZWN0ZWRUeXBlOiBOdW1iZXIgb2YgcmVtaW5kZXJzIGZvciBvbmdvaW5nIGZyZXF1ZW5jeVxyXG4gICAqIC0gc2VsZWN0ZWRPbmdvaW5nVHlwZTogSW5kZXggZm9yIG9uZ29pbmcgZnJlcXVlbmN5IHR5cGUgKDE6IHdlZWssIDI6IG1vbnRoLCAzOiBxdWFydGVyLCA0OiBzZW1lc3RlciwgNTogeWVhcilcclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBBIEZyZXF1ZW5jeU9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxyXG4gICAqIC0gdHlwZTogRnJlcXVlbmN5IHR5cGVcclxuICAgKiAtIHN0YXJ0QmVmb3JlOiBEYXlzIGJlZm9yZSB0YXNrIGNhbiBzdGFydFxyXG4gICAqIC0gZW5kQWZ0ZXI6IERheXMgYWZ0ZXIgd2hpY2ggdGFzayBmYWlsc1xyXG4gICAqIC0gYXV0b0RlYWN0aXZhdGU6IERheXMgYWZ0ZXIgd2hpY2ggdGFzayBpcyBkZWFjdGl2YXRlZFxyXG4gICAqIC0gZGF5OiBEYXkgb2Ygb2NjdXJyZW5jZVxyXG4gICAqIC0gdGltZTogVGltZSBpbiAyNC1ob3VyIGZvcm1hdFxyXG4gICAqIC0gcmVwZWF0T3B0aW9uczoge1xyXG4gICAqICAgICBldmVyeTogbnVtYmVyLFxyXG4gICAqICAgICByZXBlYXRPbjogc3RyaW5nIChiaW5hcnkgcmVwcmVzZW50YXRpb24gb2Ygc2VsZWN0ZWQgZGF5cy9tb250aHMpLFxyXG4gICAqICAgICBsaWZlY3ljbGU6IHtcclxuICAgKiAgICAgICBzdGFydEZyb206IHN0cmluZyAoWVlZWS1NTS1ERCksXHJcbiAgICogICAgICAgZW5kQnk/OiBzdHJpbmcgKFlZWVktTU0tREQpLFxyXG4gICAqICAgICAgIGVuZEFmdGVyPzogbnVtYmVyXHJcbiAgICogICAgIH1cclxuICAgKiAgIH1cclxuICAgKiAtIHJhbmRvbT86IHsgdHlwZTogc3RyaW5nLCBvY2N1cnJlbmNlOiBudW1iZXIgfVxyXG4gICAqIC0gb25Db21wbGV0ZToge31cclxuICAgKiAtIG9uR29pbmc6IHsgcmVtaW5kZXJzOiBudW1iZXIsIHN0YXJ0T2Y6ICd3ZWVrJyB8ICdtb250aCcgfCAncXVhcnRlcicgfCAnc2VtZXN0ZXInIHwgJ3llYXInIH1cclxuICAgKiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGBgYHR5cGVzY3JpcHRcclxuICAgKiBjb25zdCBmcmVxdWVuY3kgPSB7XHJcbiAgICogICBjYXNlOiAnd2Vla2x5JyxcclxuICAgKiAgIHdpbmRvdzogMixcclxuICAgKiAgIGZhaWxlZEFmdGVyOiAxLFxyXG4gICAqICAgY29udGludW91c19mYWlsZWRfZGF5czogMyxcclxuICAgKiAgIGRheTogMSxcclxuICAgKiAgIHRpbWVJbjI0SHI6ICcwOTowMDowMCcsXHJcbiAgICogICBldmVyeTogMSxcclxuICAgKiAgIHNlbGVjdGVkRGF5OiBbMSwgMywgNV0sIC8vIE1vbmRheSwgV2VkbmVzZGF5LCBGcmlkYXlcclxuICAgKiAgIHN0YXJ0RnJvbTogMTY3ODkwMDAwMCxcclxuICAgKiAgIGxpZmVjeWNsZURldGFpbHM6ICcyMDI0LTEyLTMxfn4xMCdcclxuICAgKiB9O1xyXG4gICAqIGNvbnN0IHJlc3VsdCA9IHNldEZyZXF1ZW5jeU9iamVjdChmcmVxdWVuY3kpO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHNldEZyZXF1ZW5jeU9iamVjdChmcmVxdWVuY3k6IGFueSk6IEZyZXF1ZW5jeU9iamVjdCB8IG51bGwge1xyXG4gICAgY29uc29sZS5sb2coZnJlcXVlbmN5LCBcImZyZXF1ZW5jeVwiKTtcclxuICAgIGNvbnN0IHJlcGVhdE9wdGlvbnMgPSB0aGlzLnJlcGVhdE9wdGlvbnMoZnJlcXVlbmN5KTtcclxuICAgIGNvbnN0IGxpZmVjeWNsZURldGFpbHMgPSBmcmVxdWVuY3kubGlmZWN5Y2xlRGV0YWlscy5zcGxpdCgnfn4nKTtcclxuICAgIGNvbnN0IGZyZXF1ZW5jeU9iamVjdDogRnJlcXVlbmN5T2JqZWN0ID0ge1xyXG4gICAgICB0eXBlOiBmcmVxdWVuY3kuY2FzZSxcclxuICAgICAgc3RhcnRCZWZvcmU6IGZyZXF1ZW5jeS53aW5kb3csXHJcbiAgICAgIGVuZEFmdGVyOiBmcmVxdWVuY3kuZmFpbGVkQWZ0ZXIsXHJcbiAgICAgIGF1dG9EZWFjdGl2YXRlOiBmcmVxdWVuY3kuY29udGludW91c19mYWlsZWRfZGF5cyxcclxuICAgICAgZGF5OiBmcmVxdWVuY3kuZGF5LCBcclxuICAgICAgdGltZTogZnJlcXVlbmN5LnRpbWVJbjI0SHIsXHJcbiAgICAgIHJlcGVhdE9wdGlvbnM6IHtcclxuICAgICAgICBldmVyeTogZnJlcXVlbmN5LmV2ZXJ5LFxyXG4gICAgICAgIHJlcGVhdE9uOiByZXBlYXRPcHRpb25zLFxyXG4gICAgICAgIGxpZmVjeWNsZToge1xyXG4gICAgICAgICAgc3RhcnRGcm9tOiBtb21lbnQoZnJlcXVlbmN5LnN0YXJ0RnJvbSAqIDEwMDApLmZvcm1hdCgnWVlZWS1NTS1ERCcpLFxyXG4gICAgICAgICAgZW5kQnk6bGlmZWN5Y2xlRGV0YWlsc1swXSAhPT0gJzAwMDAtMDAtMDAnID8gbW9tZW50KGxpZmVjeWNsZURldGFpbHNbMF0gLCAnREQtTU1NTS1ZWVlZJykuZm9ybWF0KCdZWVlZLU1NLUREJykgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBlbmRBZnRlcjogXHJcbiAgICAgICAgICAgICAgICBmcmVxdWVuY3kuY2FzZSA9PT0gJ29uZV90aW1lJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gMVxyXG4gICAgICAgICAgICAgICAgICAgIDogbGlmZWN5Y2xlRGV0YWlsc1sxXSAhPT0gJzAnXHJcbiAgICAgICAgICAgICAgICAgICAgPyBwYXJzZUludChsaWZlY3ljbGVEZXRhaWxzWzFdKVxyXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgcmFuZG9tOiB0aGlzLmdldFJhbmRvbUZyZXF1ZW5jeShmcmVxdWVuY3kpLFxyXG4gICAgICBvbkNvbXBsZXRlOiBmcmVxdWVuY3kuY2FzZSA9PT0gJ29uX2NvbXBsZXRlJyA/IGZyZXF1ZW5jeS5vbkNvbXBsZXRpb24gOiB7fSxcclxuICAgICAgb25Hb2luZzogdGhpcy5nZXRPbmdvaW5nKGZyZXF1ZW5jeSksXHJcbiAgICB9ICBcclxuICAgIHJldHVybiBmcmVxdWVuY3lPYmplY3Q7XHJcbiAgfSBcclxuXHJcbiAgcmVwZWF0T3B0aW9ucyhmcmVxdWVuY3k6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zb2xlLmxvZyhmcmVxdWVuY3ksICdyZXBlYXRPcHRpb25zIGZyZXF1ZW5jeScpO1xyXG4gICBpZihmcmVxdWVuY3k/LnNlbGVjdGVkRGF5Py5sZW5ndGggPiAwKSB7XHJcbiAgICBjb25zdCB3ZWVrRGF5cyA9IFtdO1xyXG4gICAgIGZvcihsZXQgaSA9IDA7IGkgPCA3OyBpICsrKSB7XHJcbiAgICAgIGlmKGZyZXF1ZW5jeS5zZWxlY3RlZERheS5pbmNsdWRlcyhpICsgMSkpIHtcclxuICAgICAgICB3ZWVrRGF5cy5wdXNoKDEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHdlZWtEYXlzLnB1c2goMCk7XHJcbiAgICAgIH1cclxuICAgICB9XHJcbiAgICAgcmV0dXJuIHdlZWtEYXlzLmpvaW4oJycpO1xyXG4gICB9IGVsc2UgaWYoZnJlcXVlbmN5Py5zZWxlY3RlZE1vbnRoPy5sZW5ndGggPiAwKSB7XHJcbiAgICBjb25zdCBtb250aHMgPSBbIF07XHJcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgMTI7IGkgKyspIHtcclxuICAgICAgaWYoZnJlcXVlbmN5Py5zZWxlY3RlZE1vbnRoPy5pbmNsdWRlcyhpKSkge1xyXG4gICAgICAgIG1vbnRocy5wdXNoKDEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1vbnRocy5wdXNoKDApO1xyXG4gICAgICB9XHJcbiAgIH1cclxuICAgcmV0dXJuIG1vbnRocy5qb2luKCcnKTtcclxuICAgfSBlbHNlIHtcclxuICAgIHJldHVybiAnJztcclxuICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0T25nb2luZyhmcmVxdWVuY3k6IGFueSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcmVtaW5kZXJzOiBmcmVxdWVuY3k/LnNlbGVjdGVkVHlwZSxcclxuICAgICAgc3RhcnRPZjogZnJlcXVlbmN5Py5zZWxlY3RlZFR5cGUgPyAgWyd3ZWVrJywnbW9udGgnICwncXVhcnRlcicgLCdzZW1lc3RlcicgLCd5ZWFyJ11bZnJlcXVlbmN5Py5zZWxlY3RlZE9uZ29pbmdUeXBlIC0gMV0gOiAnJ1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRSYW5kb21GcmVxdWVuY3koZnJlcXVlbmN5OiBhbnkpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgdHlwZTogWyd3ZWVrbHknLCAnbW9udGhseScsICdxdWFydGVybHknLCAneWVhcmx5J11bZnJlcXVlbmN5Py5yYW5kb21UeXBlU2VsZWN0ZWRdLFxyXG4gICAgIG9jY3VycmVuY2U6IGZyZXF1ZW5jeT8ucmFuZG9tSW5zdGFuY2VzXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVGcmVxdWVuY3lQYXR0ZXJuKGZyZXF1ZW5jeTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhmcmVxdWVuY3ksICdmcmVxdWVuY3knKTtcclxuICAgIGxldCBwYXR0ZXJuID0gJyc7XHJcbiAgICBsZXQgc2VsZWN0ZWREYXkgPSBmcmVxdWVuY3kuZGF5XHJcbiAgICBzd2l0Y2ggKGZyZXF1ZW5jeS50eXBlKSB7XHJcblxyXG4gICAgICBjYXNlICdvbmVfdGltZSc6XHJcbiAgICAgICAgbGV0IGRhdGVfdmFsdWUgPSBmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20/LnNwbGl0KCctJyk7XHJcblxyXG4gICAgICAgIHBhdHRlcm4gPVxyXG4gICAgICAgICAgJzB+JyArXHJcbiAgICAgICAgICAnJyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlWzBdICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICAoZGF0ZV92YWx1ZVsxXSkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIGRhdGVfdmFsdWVbMl07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2RhaWx5JzpcclxuICAgICAgICBwYXR0ZXJuID0gYDF+MH4wfiR7ZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LmV2ZXJ5fWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3dlZWtseSc6XHJcbiAgICAgICAgcGF0dGVybiA9IGAyfiR7dGhpcy5nZXREYXkoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+MH4ke2ZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5ldmVyeX1gO1xyXG4gICAgICAgIGJyZWFrOyAgIFxyXG4gICAgICBjYXNlICdtb250aGx5JzpcclxuICAgICAgICBwYXR0ZXJuID1cclxuICAgICAgICAgIGAzfiR7c2VsZWN0ZWREYXl9fiR7dGhpcy5nZXRNb250aChmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ucmVwZWF0T24pfX4wYDtcclxuICAgICAgICBicmVhaztcclxuICAgICBcclxuICAgICAgY2FzZSAncXVhcnRlcmx5JzpcclxuICAgICAgICBwYXR0ZXJuID0gYDd+JHtzZWxlY3RlZERheX1+JHt0aGlzLmdldE1vbnRoKGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5yZXBlYXRPbil9fjBgO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgIFxyXG4gICAgIGNhc2UgJ3NlbWVzdGVyJzpcclxuICAgICAgcGF0dGVybiA9IGA5fiR7c2VsZWN0ZWREYXl9fiR7dGhpcy5nZXRNb250aChmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ucmVwZWF0T24pfX4wYDtcclxuICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3llYXJseSc6XHJcbiAgICAgICAgcGF0dGVybiA9XHJcbiAgICAgICAgICBgNH4ke3NlbGVjdGVkRGF5fX4ke3RoaXMuZ2V0TW9udGgoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+MWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ29uZ29pbmcnOlxyXG4gICAgICAgIGNvbnN0IHR5cGUgPSBbJ3dlZWsnLCAnbW9udGgnLCAncXVhcnRlcicsICdzZW1lc3RlcicsICd5ZWFyJ107XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0eXBlLmluZGV4T2YoZnJlcXVlbmN5Lm9uR29pbmc/LnN0YXJ0T2YpO1xyXG4gICAgICAgIHBhdHRlcm4gPSBgMTB+JHtmcmVxdWVuY3kub25Hb2luZz8ucmVtaW5kZXJzfX4ke2luZGV4fX4wYDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmFuZG9tJzogXHJcbiAgICAgICAgbGV0IHJhbmRvbVR5cGUgPSBbJ3dlZWtseScsICdtb250aGx5JywgJ3F1YXJ0ZXJseScsICd5ZWFybHknXTtcclxuICAgICAgICBsZXQgcmFuZG9tSW5kZXggPSByYW5kb21UeXBlLmluZGV4T2YoZnJlcXVlbmN5LnJhbmRvbS50eXBlKTtcclxuICAgICAgICBwYXR0ZXJuID0gYDh+JHtyYW5kb21JbmRleCArIDF9fiR7dGhpcy5nZXRNb250aChmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ucmVwZWF0T24pfX4ke2ZyZXF1ZW5jeS5yYW5kb20ub2NjdXJyZW5jZX1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvbl9jb21wbGV0ZSc6XHJcbiAgICAgICAgcGF0dGVybiA9IGA2fjB+MH4ke2ZyZXF1ZW5jeS5vbkNvbXBsZXRlPy5kdWVBZnRlcn1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHBhdHRlcm4gPSBgNX4ke2ZyZXF1ZW5jeS5yYW5kb20ub2NjdXJyZW5jZX1+MH4wYDtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXR0ZXJuO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF5KHJlcGVhdE9wdGlvbnM6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF5ID0gcmVwZWF0T3B0aW9ucy5zcGxpdCgnJykubWFwKE51bWJlcik7XHJcbiAgICBjb25zdCBkYXlOYW1lID0gW107XHJcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgNzsgaSArKykge1xyXG4gICAgICBpZihkYXlbaV0gPT09IDEpIHtcclxuICAgICAgICBkYXlOYW1lLnB1c2goaSArIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF5TmFtZS5qb2luKCcsJyk7XHJcbiAgfVxyXG5cclxuICBnZXRNb250aChyZXBlYXRPcHRpb25zOiBzdHJpbmcpIHtcclxuICAgICAgY29uc3QgbW9udGggPSByZXBlYXRPcHRpb25zLnNwbGl0KCcnKS5tYXAoTnVtYmVyKTtcclxuICAgICAgY29uc3QgbW9udGhOYW1lID0gW107XHJcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCAxMjsgaSArKykge1xyXG4gICAgICAgIGlmKG1vbnRoW2ldID09PSAxKSB7XHJcbiAgICAgICAgICBtb250aE5hbWUucHVzaChpICsgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBtb250aE5hbWUuam9pbignLCcpO1xyXG4gIH1cclxuICAgIFxyXG4gICAgZ2V0TGlmZWN5Y2xlUGF0dGVybiAoZnJlcXVlbmN5OiBhbnkpIHtcclxuICAgICAgbGV0IHBhdHRlcm4gPSBcIjAwMDAtMDAtMDB+fjBcIjtcclxuICAgICAgaWYoIWZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRCeSAmJiAhZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LmVuZEFmdGVyKSB7XHJcbiAgICAgICAgcmV0dXJuICB7XHJcbiAgICAgICAgICBzdGFydEZyb206IG5ldyBEYXRlKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20pLmdldFRpbWUoKSAvIDEwMDAsXHJcbiAgICAgICAgICAgcGF0dGVyblxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRCeSkge1xyXG4gICAgICAgIHJldHVybiAge1xyXG4gICAgICAgICAgc3RhcnRGcm9tOiBuZXcgRGF0ZShmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uc3RhcnRGcm9tKS5nZXRUaW1lKCkgLyAxMDAwLFxyXG4gICAgICAgICAgIHBhdHRlcm46IHRoaXMuZm9ybWF0RGF0ZVN0cmluZyhmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQnkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LmVuZEFmdGVyKSB7XHJcbiAgICAgICAgcmV0dXJuICB7XHJcbiAgICAgICAgICBzdGFydEZyb206IG5ldyBEYXRlKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20pLmdldFRpbWUoKSAvIDEwMDAsXHJcbiAgICAgICAgICAgcGF0dGVybjogXCIwMDAwLTAwLTAwfn5cIiArIGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRBZnRlclxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHN0YXJ0RnJvbTogbmV3IERhdGUoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LnN0YXJ0RnJvbSkuZ2V0VGltZSgpIC8gMTAwMCxcclxuICAgICAgICBwYXR0ZXJuOiBcIjAwMDAtMDAtMDB+fjBcIlxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAqIENvbnZlcnRzIGEgZGF0ZSBzdHJpbmcgaW4gXCJZWVlZLU1NLUREXCIgZm9ybWF0IHRvIFwiREQtTW9udGgtWVlZWX5+MFwiLlxyXG4gKiBcclxuICogQHBhcmFtIHtzdHJpbmd9IGRhdGVTdHJpbmcgLSBUaGUgaW5wdXQgZGF0ZSBzdHJpbmcgaW4gXCJZWVlZLU1NLUREXCIgZm9ybWF0LlxyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gXCJERC1Nb250aC1ZWVlZfn4wXCIgZm9ybWF0LlxyXG4gKiBcclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBmb3JtYXREYXRlU3RyaW5nKFwiMjAyNS0wMy0yN1wiKTsgLy8gUmV0dXJucyBcIjI3LU1hcmNoLTIwMjV+fjBcIlxyXG4gKiBgYGBcclxuICovXHJcbiBmb3JtYXREYXRlU3RyaW5nKGRhdGVTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGVTdHJpbmcpO1xyXG4gIFxyXG4gIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgXHJcbiAgY29uc3QgbW9udGhOYW1lcyA9IFtcclxuICAgICAgXCJKYW51YXJ5XCIsIFwiRmVicnVhcnlcIiwgXCJNYXJjaFwiLCBcIkFwcmlsXCIsIFwiTWF5XCIsIFwiSnVuZVwiLFxyXG4gICAgICBcIkp1bHlcIiwgXCJBdWd1c3RcIiwgXCJTZXB0ZW1iZXJcIiwgXCJPY3RvYmVyXCIsIFwiTm92ZW1iZXJcIiwgXCJEZWNlbWJlclwiXHJcbiAgXTtcclxuICBjb25zdCBtb250aCA9IG1vbnRoTmFtZXNbZGF0ZS5nZXRNb250aCgpXTtcclxuXHJcbiAgcmV0dXJuIGAke2RheX0tJHttb250aH0tJHt5ZWFyfX5+MGA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXRyaWV2ZXMgdGhlIG5hbWUgb2YgYSBtb250aCBiYXNlZCBvbiBpdHMgbnVtZXJpY2FsIHZhbHVlLlxyXG4gKiBcclxuICogQHBhcmFtIHtudW1iZXJ9IG1vbnRoIC0gVGhlIG1vbnRoIG51bWJlciAoMS0xMikgd2hlcmU6XHJcbiAqICAgMSA9IEphbnVhcnlcclxuICogICAyID0gRmVicnVhcnlcclxuICogICAuLi5cclxuICogICAxMiA9IERlY2VtYmVyXHJcbiAqIFxyXG4gKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBUaGUgbmFtZSBvZiB0aGUgbW9udGggKGUuZy4sIFwiSkFOXCIsIFwiRkVCXCIsIGV0Yy4pIG9yIHVuZGVmaW5lZCBpZiB0aGUgbW9udGggbnVtYmVyIGlzIGludmFsaWRcclxuICogXHJcbiAqIEBleGFtcGxlXHJcbiAqIGdldE1vbnRoTmFtZSgxKSAgLy8gUmV0dXJuczogXCJKYW5cIlxyXG4gKiBnZXRNb250aE5hbWUoMTIpIC8vIFJldHVybnM6IFwiRGVjXCJcclxuICogZ2V0TW9udGhOYW1lKDEzKSAvLyBSZXR1cm5zOiB1bmRlZmluZWRcclxuICovXHJcbnB1YmxpYyBnZXRNb250aE5hbWUoc2VsZWN0ZWRNb250aDogbnVtYmVyKSB7ICBcclxuICByZXR1cm4gTU9OVEhfTkFNRVMuZmluZCgobW9udGg6IGFueSkgPT4gbW9udGgudmFsdWUgPT09IHNlbGVjdGVkTW9udGgpPy5tb250aDtcclxufVxyXG5cclxufVxyXG4iXX0=
852
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFHLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQUlwRSxNQUFNLE9BQU8sZ0JBQWdCO0lBcUUzQixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3hCLFVBQXNCLEVBQ2xCLE1BQXVCO1FBSDNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXZFekIsZUFBVSxHQUFrQjtZQUNqQyxTQUFTO1lBQ1QsVUFBVTtZQUNWLE9BQU87WUFDUCxPQUFPO1lBQ1AsS0FBSztZQUNMLE1BQU07WUFDTixNQUFNO1lBQ04sUUFBUTtZQUNSLFdBQVc7WUFDWCxTQUFTO1lBQ1QsVUFBVTtZQUNWLFVBQVU7U0FDWCxDQUFDO1FBRUssWUFBTyxHQUFrQjtZQUM5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RSxDQUFDO1FBRWhDLE1BQU0sVUFBVSxHQUFHO1lBQ2YsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNO1lBQ3RELE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVTtTQUNuRSxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRTFDLE9BQU8sR0FBRyxHQUFHLElBQUksS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSSxZQUFZLENBQUMsYUFBcUI7UUFDdkMsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLGFBQWEsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNoRixDQUFDOytHQW4zQlksZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FGZixNQUFNOzs0RkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkEwRUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyAgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbnMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XHJcbmltcG9ydCB7IERFRkFVTFRfVElNRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy90aW1lLmNvbnN0YW50cyc7XHJcbmltcG9ydCB7IEZyZXF1ZW5jeU9iamVjdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZnJlcXVlbmN5LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEFQSSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hcGkuY29uc3RhbnRzJztcclxuaW1wb3J0IHsgR3JjU2VydmljZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93L3NoYXJlZC9zZXJ2aWNlcy9ncmMuc2VydmljZSc7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB7IE1PTlRIX05BTUVTIH0gZnJvbSAnLi9mcmVxdWVuY3kuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBQQUdJTkFUSU9OX0xJTUlUIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbW1vbi5jb25zdGFudHMnO1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRnJlcXVlbmN5U2VydmljZSB7XHJcbiAgcHVibGljIG1vbnRoQXJyYXk6IEFycmF5PHN0cmluZz4gPSBbXHJcbiAgICAnSmFudWFyeScsXHJcbiAgICAnRmVicnVhcnknLFxyXG4gICAgJ01hcmNoJyxcclxuICAgICdBcHJpbCcsXHJcbiAgICAnTWF5JyxcclxuICAgICdKdW5lJyxcclxuICAgICdKdWx5JyxcclxuICAgICdBdWd1c3QnLFxyXG4gICAgJ1NlcHRlbWJlcicsXHJcbiAgICAnT2N0b2JlcicsXHJcbiAgICAnTm92ZW1iZXInLFxyXG4gICAgJ0RlY2VtYmVyJyxcclxuICBdO1xyXG5cclxuICBwdWJsaWMgZGF5TmFtZTogQXJyYXk8c3RyaW5nPiA9IFtcclxuICAgICdNb25kYXknLFxyXG4gICAgJ1R1ZXNkYXknLFxyXG4gICAgJ1dlZG5lc2RheScsXHJcbiAgICAnVGh1cnNkYXknLFxyXG4gICAgJ0ZyaWRheScsXHJcbiAgICAnU2F0dXJkYXknLFxyXG4gICAgJ1N1bmRheScsXHJcbiAgXTsgLy8gZnVsbCBkYXkgbmFtZVxyXG5cclxuICBwdWJsaWMgcXVhcnRlcmx5TW9udGg6IEFycmF5PHN0cmluZz4gPSBbXHJcbiAgICAnSmFudWFyeSwgQXByaWwsIEp1bHksIE9jdG9iZXInLFxyXG4gICAgJ0ZlYnJ1YXJ5LCBNYXksIEF1Z3VzdCwgTm92ZW1iZXInLFxyXG4gICAgJ01hcmNoLCBKdW5lLCBTZXB0ZW1iZXIsIERlY2VtYmVyJyxcclxuICBdO1xyXG5cclxuICBwdWJsaWMgZGF0ZUNvbmZpZyA9IHtcclxuICAgIGZvcm1hdDogJ0REIE1NIFlZWVknLFxyXG4gICAgc2hvd0dvVG9DdXJyZW50OiBmYWxzZSxcclxuICB9O1xyXG5cclxuICBwdWJsaWMgZnJlcXVlbmN5SW5mbyA9IHtcclxuICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgIHBhdHRlcm46ICcnLFxyXG4gICAgY2FzZTogJycsXHJcbiAgICBmYWlsZWRBZnRlcjogMCxcclxuICAgIHdpbmRvdzogMCxcclxuICAgIHRpbWVJbjEyaHI6ICcnLFxyXG4gICAgdGltZUluMjRIcjogJycsXHJcbiAgICBsaWZlY3ljbGVEZXRhaWxzOiAnMDAwMC0wMC0wMH5+MCcsXHJcbiAgICBzdGFydEZyb206IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxyXG4gICAgcmVwb3J0SWQ6IDAsXHJcbiAgICBmYWlsZWRfdGltZV91dGM6IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxyXG4gICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcclxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxyXG4gICAgc3RhcnREYXRlOiAnJyxcclxuICB9O1xyXG5cclxuICBwdWJsaWMgZnJlcXVlbmN5RGV0YWlsczogb2JqZWN0ID0ge1xyXG4gICAgcGF0dGVybjogJycsXHJcbiAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxyXG4gICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXHJcbiAgICBkZWFjdGl2YXRpb25WYWx1ZTogMCxcclxuICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxyXG4gICAgbGlmZWN5Y2xlOiAnMDAwMC0wMC0wMH5+MCcsXHJcbiAgICBzdGFydERhdGU6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgIHdpbmRvdzogMCxcclxuICAgIGZhaWxlZDogMCxcclxuICAgIHRpbWU6IERFRkFVTFRfVElNRSxcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGVudiE6IGFueTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBncmNTZXJ2aWNlOiBHcmNTZXJ2aWNlLFxyXG4gICAgQE9wdGlvbmFsKCkgY29uZmlnPzogQ29uZmlndXJhdGlvbnNcclxuICApIHtcclxuICAgIGlmIChjb25maWcpIHtcclxuICAgICAgdGhpcy5lbnYgPSBjb25maWcuZW52Q29uZmlnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGltZUZyb20xMmhUbzI0aCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IHRpbWVfYXJyID0gdmFsdWUuc3BsaXQoJyAnKTtcclxuICAgICAgY29uc3QgbWVyaWRpYW4gPSB0aW1lX2FyclsxXTtcclxuICAgICAgY29uc3QgaHJfbWluID0gdGltZV9hcnJbMF0uc3BsaXQoJzonKS5tYXAoTnVtYmVyKTtcclxuICAgICAgbGV0IGhyID0gaHJfbWluWzBdO1xyXG4gICAgICBjb25zdCBtaW4gPSBocl9taW5bMV0gPz8gMDtcclxuICAgICAgY29uc3Qgc2VjID0gaHJfbWluWzJdID8/IDA7XHJcblxyXG4gICAgICBpZiAobWVyaWRpYW4/LnRvTG93ZXJDYXNlKCkgPT0gJ3BtJykge1xyXG4gICAgICAgIGlmIChociA8IDEyKSB7XHJcbiAgICAgICAgICBociA9IGhyICsgMTI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChociA9PSAxMikge1xyXG4gICAgICAgICAgaHIgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICBTdHJpbmcoaHIpLnBhZFN0YXJ0KDIsICcwJykgK1xyXG4gICAgICAgICc6JyArXHJcbiAgICAgICAgU3RyaW5nKG1pbikucGFkU3RhcnQoMiwgJzAnKSArXHJcbiAgICAgICAgJzonICtcclxuICAgICAgICBTdHJpbmcoc2VjKS5wYWRTdGFydCgyLCAnMCcpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0aW1lSW4xMih2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGxldCBocjtcclxuICAgICAgbGV0IG1pbjtcclxuICAgICAgbGV0IG1lcmlkaWFuO1xyXG4gICAgICBpZiAodmFsdWUuc3BsaXQoJzonKVswXSA+PSAxMikge1xyXG4gICAgICAgIGhyID0gdmFsdWUuc3BsaXQoJzonKVswXSA9PT0gJzEyJyA/IDEyIDogdmFsdWUuc3BsaXQoJzonKVswXSAtIDEyO1xyXG4gICAgICAgIG1pbiA9IHZhbHVlLnNwbGl0KCc6JylbMV07XHJcbiAgICAgICAgaWYgKG1pbi5sZW5ndGggPCAyKSB7XHJcbiAgICAgICAgICBtaW4gPSAnMCcgKyBtaW47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1lcmlkaWFuID0gJ3BtJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBociA9IHZhbHVlLnNwbGl0KCc6JylbMF0gPT0gJzAwJyA/IDEyIDogdmFsdWUuc3BsaXQoJzonKVswXTtcclxuICAgICAgICBtaW4gPSB2YWx1ZS5zcGxpdCgnOicpWzFdO1xyXG4gICAgICAgIGlmIChtaW4ubGVuZ3RoIDwgMikge1xyXG4gICAgICAgICAgbWluID0gJzAnICsgbWluO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtZXJpZGlhbiA9ICdhbSc7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGhyICsgJzonICsgbWluICsgJyAnICsgbWVyaWRpYW47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmcmFtZXdvcmtTdGFydERhdGUocm93OiBhbnkpIHtcclxuICAgIGxldCBjYWxjdWxhdGVkRGF5OiBudW1iZXIgPSAwO1xyXG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUocGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpICogMTAwMCkuZ2V0RGF5KCk7XHJcbiAgICBjb25zdCBnZXREYXRlID0gbmV3IERhdGUocGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpICogMTAwMCkuZ2V0RGF0ZSgpO1xyXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpLmdldERheSgpO1xyXG4gICAgY29uc3Qgc3RhcnRNb250aCA9IG5ldyBEYXRlKHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSAqIDEwMDApLmdldE1vbnRoKCk7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICBwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgPCBEYXRlLm5vdygpIC8gMTAwMCAmJlxyXG4gICAgICAocm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IHdlZWsnIHx8XHJcbiAgICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IDIgd2Vla3MnIHx8XHJcbiAgICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IDMgd2Vla3MnKVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBkYXlzVG9CZUFkZGVkID0gMDtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIHtcclxuICAgICAgICBpZiAoKGN1cnJlbnREYXRlICsgaSkgJSA3ID09PSBzdGFydERhdGUpIHtcclxuICAgICAgICAgIGRheXNUb0JlQWRkZWQgPSBpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHRpbWVzdGFtcFRvQmVBZGRlZCA9IGRheXNUb0JlQWRkZWQgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xyXG4gICAgICBjYWxjdWxhdGVkRGF5ID0gbmV3IERhdGUoXHJcbiAgICAgICAgbmV3IERhdGUoKS5nZXRUaW1lKCkgKyB0aW1lc3RhbXBUb0JlQWRkZWRcclxuICAgICAgKS5nZXRUaW1lKCk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgPCBEYXRlLm5vdygpIC8gMTAwMCAmJlxyXG4gICAgICAhKFxyXG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSB3ZWVrJyB8fFxyXG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSAyIHdlZWtzJyB8fFxyXG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSAzIHdlZWtzJ1xyXG4gICAgICApICYmXHJcbiAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgIT09ICdldmVyeSBkYXknXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgbW9tZW50VW5peCA9IG1vbWVudChcclxuICAgICAgICBnZXREYXRlICtcclxuICAgICAgICAgICctJyArXHJcbiAgICAgICAgICAobmV3IERhdGUoKS5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAgICAgJy0nICtcclxuICAgICAgICAgIG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSArXHJcbiAgICAgICAgICAnIDAwOjAwJyxcclxuICAgICAgICAnREQtTU0tWVlZWSBISDptbSdcclxuICAgICAgKS51bml4KCk7XHJcbiAgICAgIGNhbGN1bGF0ZWREYXkgPSBtb21lbnRVbml4ICogMTAwMDtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSBkYXknICYmXHJcbiAgICAgIHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSA8IERhdGUubm93KCkgLyAxMDAwXHJcbiAgICApIHtcclxuICAgICAgY2FsY3VsYXRlZERheSA9IERhdGUubm93KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjYWxjdWxhdGVkRGF5ID0gcGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpICogMTAwMDtcclxuICAgIH1cclxuICAgIHJldHVybiBjYWxjdWxhdGVkRGF5IC8gMTAwMDtcclxuICB9XHJcblxyXG4gIGZyYW1ld29ya0ZyZXF1ZW5jeShmcmVxdWVuY3k6IGFueSwgc3RhcnRfZGF0ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgRGF0ZShzdGFydF9kYXRlICogMTAwMCk7XHJcbiAgICAgIGNvbnN0IGZpcnN0SGFsZk1vbnRoID0gWycxJywgJzInLCAnMycsICc0JywgJzUnLCAnNiddO1xyXG4gICAgICBjb25zdCBzZWNvbmRIYWxmTW9udGggPSBbJzcnLCAnOCcsICc5JywgJzEwJywgJzExJywgJzEyJ107XHJcbiAgICAgIGNvbnN0IGdldERheURhdGEgPSBzdGFydERhdGUuZ2V0RGF5KCkgPT09IDAgPyA3IDogc3RhcnREYXRlLmdldERheSgpO1xyXG4gICAgICBjb25zdCBtb250aCA9IHN0YXJ0RGF0ZS5nZXRNb250aCgpO1xyXG4gICAgICBsZXQgcXVhcnRlclBhdHRlcm4gPSAnfjEsNCw3LDEwfjAnO1xyXG4gICAgICBzd2l0Y2ggKG1vbnRoKSB7XHJcbiAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgIGNhc2UgMzpcclxuICAgICAgICBjYXNlIDY6XHJcbiAgICAgICAgY2FzZSA5OlxyXG4gICAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjEsNCw3LDEwfjAnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgIGNhc2UgNDpcclxuICAgICAgICBjYXNlIDc6XHJcbiAgICAgICAgY2FzZSAxMDpcclxuICAgICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34yLDUsOCwxMX4wJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjpcclxuICAgICAgICBjYXNlIDU6XHJcbiAgICAgICAgY2FzZSA4OlxyXG4gICAgICAgIGNhc2UgMTE6XHJcbiAgICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+Myw2LDksMTJ+MCc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICAvLyBdO1xyXG4gICAgICBsZXQgZnJlcXVlbmN5X3BhdHRlcm47XHJcblxyXG4gICAgICBmcmVxdWVuY3kgPSBmcmVxdWVuY3kudG9Mb3dlckNhc2UoKTtcclxuICAgICAgbGV0IGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAwO1xyXG4gICAgICAvLyBAID0+IGRheSAoMSB0byA3KVxyXG4gICAgICAvLyAjID0+IG1vbnRoICgxIHRvIDEyKVxyXG4gICAgICAvLyA/ID0+IG1vbnRoICUgMiA9PSAwID8gXCIyLDQsNiw4LDEwLDEyXCIgOiBcIjEsMyw1LDcsOSwxMVwiXHJcblxyXG4gICAgICBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgd2VlaycpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcyficgKyBnZXREYXlEYXRhICsgJ34wfjEnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdvbmUgdGltZScpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XHJcbiAgICAgICAgICAnMH4nICtcclxuICAgICAgICAgIHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgc3RhcnREYXRlLmdldERhdGUoKTtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBkYXknKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4wfjB+MSc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IGFsdGVybmF0ZSBkYXknKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4wfjB+Mic7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDEwIGRheXMnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4wfjB+MTAnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAyIHdlZWtzJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzJ+JyArIGdldERheURhdGEgKyAnfjB+Mic7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IGZvcnRuaWdodCcpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcxficgKyBnZXREYXlEYXRhICsgJ34wfjE0JztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMyB3ZWVrcycpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcyficgKyBnZXREYXlEYXRhICsgJ34wfjMnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBtb250aCcpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XHJcbiAgICAgICAgICAnM34nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+MSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJ+MCc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDQ1IGRheXMnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4wfjB+NDUnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBhbHRlcm5hdGUgbW9udGgnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxyXG4gICAgICAgICAgJzN+JyArXHJcbiAgICAgICAgICBzdGFydERhdGUuZ2V0RGF0ZSgpICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICAoKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgJSAyID09IDBcclxuICAgICAgICAgICAgPyAnMiw0LDYsOCwxMCwxMidcclxuICAgICAgICAgICAgOiAnMSwzLDUsNyw5LDExJykgK1xyXG4gICAgICAgICAgJ34wJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgcXVhcnRlcicpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICc3ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgcXVhcnRlclBhdHRlcm47XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMTIwIGRheXMnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4wfjB+MTIwJztcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdoYWxmIHllYXJseScpIHtcclxuICAgICAgICBjb25zdCBpbmRleDEgPSBmaXJzdEhhbGZNb250aC5pbmRleE9mKFxyXG4gICAgICAgICAgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgaW5kZXgyID0gc2Vjb25kSGFsZk1vbnRoLmluZGV4T2YoXHJcbiAgICAgICAgICAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBwYXR0ZXJuID1cclxuICAgICAgICAgIGluZGV4MSA+IC0xXHJcbiAgICAgICAgICAgID8gJ34nICtcclxuICAgICAgICAgICAgICBmaXJzdEhhbGZNb250aFtpbmRleDFdICtcclxuICAgICAgICAgICAgICAnLCcgK1xyXG4gICAgICAgICAgICAgIHNlY29uZEhhbGZNb250aFtpbmRleDFdICtcclxuICAgICAgICAgICAgICAnfjAnXHJcbiAgICAgICAgICAgIDogJ34nICtcclxuICAgICAgICAgICAgICBmaXJzdEhhbGZNb250aFtpbmRleDJdICtcclxuICAgICAgICAgICAgICAnLCcgK1xyXG4gICAgICAgICAgICAgIHNlY29uZEhhbGZNb250aFtpbmRleDJdICtcclxuICAgICAgICAgICAgICAnfjAnO1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzN+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyBwYXR0ZXJuO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICd5ZWFybHknKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxyXG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+MSc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMiB5ZWFycycpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XHJcbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ34yJztcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAzIHllYXJzJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cclxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjMnO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDQgeWVhcnMnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxyXG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+NCc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgNSB5ZWFycycpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XHJcbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ341JztcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAxMCB5ZWFycycpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XHJcbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ34xMCc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAndG8gYmUgZGVjaWRlZCBsYXRlcicpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJyc7XHJcbiAgICAgIH1cclxuICAgICAgLy8gdGhpcy5lZGl0RGF0YS5mcmVxdWVuY3lfZGV0YWlscyA9IGZyZXF1ZW5jeV9wYXR0ZXJuO1xyXG5cclxuICAgICAgcmV0dXJuIHsgZnJlcXVlbmN5X3BhdHRlcm4sIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgfTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgcmV0dXJuIHsgZnJlcXVlbmN5X3BhdHRlcm46ICcnLCBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG9ydEhhbmRfZnJlcUNhbChmcmVxdWVuY3k6IGFueSwgZGF5OiBhbnksIG1vbnRoOiBhbnksIHllYXI/OiBhbnkpIHtcclxuICAgIGNvbnN0IG1vbnRoTmFtZXMgPSBNT05USF9OQU1FUztcclxuICAgIGxldCBmcmVxdWVuY3lfZGV0YWlscztcclxuICAgIGxldCBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMDtcclxuICAgIGNvbnN0IGRhdGVfdmFsdWUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgIGRhdGVfdmFsdWUuc2V0TW9udGgoXHJcbiAgICAgIHR5cGVvZiBtb250aCAhPT0gJ251bWJlcidcclxuICAgICAgICA/IG1vbnRoTmFtZXMuZmlsdGVyKCh4KSA9PiB4Lm1vbnRoID09PSBtb250aD8uc3Vic3RyaW5nKDAsIDMpKVswXVxyXG4gICAgICAgICAgICA/LnZhbHVlIC0gMVxyXG4gICAgICAgIDogbW9udGhcclxuICAgICk7XHJcbiAgICBpZiAoIXllYXIpIHtcclxuICAgICAgZGF0ZV92YWx1ZS5zZXRGdWxsWWVhcigyMCArIG1vbnRoLnNwbGl0KFwiJ1wiKVsxXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldEZ1bGxZZWFyKHllYXIpO1xyXG4gICAgfVxyXG4gICAgZGF0ZV92YWx1ZS5zZXREYXRlKGRheSk7XHJcbiAgICBsZXQgcXVhcnRlclBhdHRlcm4gPSAnfjEsNCw3LDEwfjAnO1xyXG4gICAgY29uc3QgZmlyc3RIYWxmTW9udGggPSBbJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2J107XHJcbiAgICBjb25zdCBzZWNvbmRIYWxmTW9udGggPSBbJzcnLCAnOCcsICc5JywgJzEwJywgJzExJywgJzEyJ107XHJcbiAgICBmcmVxdWVuY3kgPSBmcmVxdWVuY3kudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICBzd2l0Y2ggKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSkge1xyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgIGNhc2UgMzpcclxuICAgICAgY2FzZSA2OlxyXG4gICAgICBjYXNlIDk6XHJcbiAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjEsNCw3LDEwfjAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDE6XHJcbiAgICAgIGNhc2UgNDpcclxuICAgICAgY2FzZSA3OlxyXG4gICAgICBjYXNlIDEwOlxyXG4gICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34yLDUsOCwxMX4wJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAyOlxyXG4gICAgICBjYXNlIDU6XHJcbiAgICAgIGNhc2UgODpcclxuICAgICAgY2FzZSAxMTpcclxuICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+Myw2LDksMTJ+MCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBjb25zdCBnZXREYXkgPSBkYXRlX3ZhbHVlLmdldERheSgpID09PSAwID8gNyA6IGRhdGVfdmFsdWUuZ2V0RGF5KCk7XHJcbiAgICBzd2l0Y2ggKGZyZXF1ZW5jeSkge1xyXG4gICAgICBjYXNlICdldmVyeSB3ZWVrJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcyficgKyBnZXREYXkgKyAnfjB+MSc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvbmUgdGltZSc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxyXG4gICAgICAgICAgJzB+JyArXHJcbiAgICAgICAgICAnJyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldEZ1bGxZZWFyKCkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IGRheSc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMX4wfjB+MSc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSBhbHRlcm5hdGUgZGF5JzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH4yJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IDEwIGRheXMnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjEwJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IDIgd2Vla3MnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzJ+JyArIGdldERheSArICd+MH4yJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IGZvcnRuaWdodCc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMX4nICsgZ2V0RGF5ICsgJ34wfjE0JztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IDMgd2Vla3MnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzJ+JyArIGdldERheSArICd+MH4zJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IG1vbnRoJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XHJcbiAgICAgICAgICAnM34nICsgZGF0ZV92YWx1ZS5nZXREYXRlKCkgKyAnfjEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyfjAnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgNDUgZGF5cyc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMX4wfjB+NDUnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgYWx0ZXJuYXRlIG1vbnRoJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XHJcbiAgICAgICAgICAnM34nICtcclxuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICAoKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICUgMiA9PT0gMFxyXG4gICAgICAgICAgICA/ICcyLDQsNiw4LDEwLDEyJ1xyXG4gICAgICAgICAgICA6ICcxLDMsNSw3LDksMTEnKSArXHJcbiAgICAgICAgICAnfjAnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgcXVhcnRlcic6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnN34nICsgZGF0ZV92YWx1ZS5nZXREYXRlKCkgKyBxdWFydGVyUGF0dGVybjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgMTIwIGRheXMnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjEyMCc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdoYWxmIHllYXJseSc6XHJcbiAgICAgICAgY29uc3QgaW5kZXgxID0gZmlyc3RIYWxmTW9udGguaW5kZXhPZihcclxuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBpbmRleDIgPSBzZWNvbmRIYWxmTW9udGguaW5kZXhPZihcclxuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBwYXR0ZXJuID1cclxuICAgICAgICAgIGluZGV4MSA+IC0xXHJcbiAgICAgICAgICAgID8gJ34nICtcclxuICAgICAgICAgICAgICBmaXJzdEhhbGZNb250aFtpbmRleDFdICtcclxuICAgICAgICAgICAgICAnLCcgK1xyXG4gICAgICAgICAgICAgIHNlY29uZEhhbGZNb250aFtpbmRleDFdICtcclxuICAgICAgICAgICAgICAnfjAnXHJcbiAgICAgICAgICAgIDogJ34nICtcclxuICAgICAgICAgICAgICBmaXJzdEhhbGZNb250aFtpbmRleDJdICtcclxuICAgICAgICAgICAgICAnLCcgK1xyXG4gICAgICAgICAgICAgIHNlY29uZEhhbGZNb250aFtpbmRleDJdICtcclxuICAgICAgICAgICAgICAnfjAnO1xyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzN+JyArIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICsgcGF0dGVybjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYW5udWFsJzpcclxuICAgICAgY2FzZSAneWVhcmx5JzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XHJcbiAgICAgICAgICAnNH4nICtcclxuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAgICAgJ34xJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgMiB5ZWFycyc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxyXG4gICAgICAgICAgJzR+JyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICAgICAgICd+Mic7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IDMgeWVhcnMnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cclxuICAgICAgICAgICc0ficgK1xyXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICAgICAnfjMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSA0IHllYXJzJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XHJcbiAgICAgICAgICAnNH4nICtcclxuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAgICAgJ340JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgNSB5ZWFycyc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxyXG4gICAgICAgICAgJzR+JyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICAgICAgICd+NSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IDEwIHllYXJzJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XHJcbiAgICAgICAgICAnNH4nICtcclxuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAgICAgJ34xMCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ29uZ29pbmcnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzEwfjB+MH4wJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndG8gYmUgZGVjaWRlZCBsYXRlcic6XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnNX4wfjB+MCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwYXR0ZXJuOiBmcmVxdWVuY3lfZGV0YWlscyxcclxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogY29udGludW91c19mYWlsZWRfZGF5cyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBnZXRPbkNvbXBsZXRpb25PZlJlc3BvbnNpYmlsaXR5KCkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcclxuICAgICAgJ3Rva2VuJyxcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxyXG4gICAgKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnYuY29tcGxpYW5jZUdldCArICdyZXBvcnRzL29uQ29tcGxldGlvbk9mUmVwb3J0cycsIHtcclxuICAgICAgICBoZWFkZXJzLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VUaW1lWm9uZShkYXRlOiBhbnkpIHtcclxuICAgIGlmICh0eXBlb2YgZGF0ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW52RGF0ZSA9IG5ldyBEYXRlKFxyXG4gICAgICBkYXRlLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcclxuICAgICAgICB0aW1lWm9uZTogdGhpcy5hdXRoU2VydmljZT8udXNlckRldGFpbHM/LnRpbWV6b25lLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHJldHVybiBpbnZEYXRlO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVzcG9uc2liaWxpdHlMaXN0KHBheWxvYWQ6IGFueSkge1xyXG4gICAgY29uc3QgbGltaXQgPSBQQUdJTkFUSU9OX0xJTUlUO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcclxuICAgICAgJ3Rva2VuJyxcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSxcclxuICAgIClcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldDxhbnk+KFxyXG4gICAgICAgIGAke3RoaXMuZW52LmNvbXBsaWFuY2VHZXR9c2FpbHNSZXNwb25zaWJpbGl0aWVzTGlzdCZwYWdlPSR7cGF5bG9hZD8ucGFnZU5vfSZsaW1pdD0ke2xpbWl0fSR7cGF5bG9hZD8uc2VhcmNoVGVybSA/IGAmc2VhcmNoVGVybT0ke3BheWxvYWQ/LnNlYXJjaFRlcm19YCA6ICcnfSZiaXpDeWNsZVJlcXVpcmVkPTAmaW5jbHVkZT1hc3NpZ25lZXMmZ3JvdXA9YWxsYCxcclxuICAgICAgICB7IGhlYWRlcnMgfVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcclxuICB9XHJcblxyXG4gIGdldFJlc3BvbnNpYmlsaXRpZXNDb3VudChwYXlsb2FkOiBhbnkpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXHJcbiAgICAgICd0b2tlbicsXHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcclxuICAgICk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4oXHJcbiAgICAgICAgdGhpcy5lbnYucmVzcG9uc2liaWxpdHlQb3N0ICsgJ21hbmFnZV9yZXNwb25zaWJpbGl0aWVzX3JlcG9ydHNfY291bnQnLFxyXG4gICAgICAgIHBheWxvYWQsXHJcbiAgICAgICAgeyBoZWFkZXJzIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShyZXRyeSgxKSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxSZXNwb25zaWJpbGl0aWVzKHBhZ2VObzogbnVtYmVyLCBwYXlsb2FkOiBhbnkpIHtcclxuICAgIGNvbnN0IGJ1c2luZXNzQ3ljbGUgPSB0aGlzLmdyY1NlcnZpY2UuZ2V0QnVzaW5lc3NDeWNsZSgpO1xyXG4gICAgY29uc3QgZm9ybWF0dGVkQ3ljbGUgPSBidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlXHJcbiAgICAgID8gZGF5anMoYnVzaW5lc3NDeWNsZS5zZWxlY3RlZF9jeWNsZS5zcGxpdCgnLScpWzBdKS5mb3JtYXQoJ1lZWVktTU0tREQnKSArIFxyXG4gICAgICAgICc6JyArIFxyXG4gICAgICAgIGRheWpzKGJ1c2luZXNzQ3ljbGUuc2VsZWN0ZWRfY3ljbGUuc3BsaXQoJy0nKVsxXSkuZm9ybWF0KCdZWVlZLU1NLUREJylcclxuICAgICAgOiAnJztcclxuICAgIFxyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpXHJcbiAgICAgIC5zZXQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSlcclxuICAgICAgLnNldCgnYml6X2N5Y2xlJywgZm9ybWF0dGVkQ3ljbGUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KFxyXG4gICAgICB0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgQVBJLnJlc3BvbnNpYmlsaXR5TGlzdCArIGAmcGFnZT0ke3BhZ2VOb30mbGltaXQ9JHtQQUdJTkFUSU9OX0xJTUlUfSR7cGF5bG9hZD8uc2VhcmNoVGVybSA/IGAmc2VhcmNoVGVybT0ke3BheWxvYWQ/LnNlYXJjaFRlcm19YCA6ICcnfWAgLFxyXG4gICAgICB7IGhlYWRlcnMgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdERhdGUoKSB7XHJcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBjb25zdCBkYXkgPSBTdHJpbmcoY3VycmVudERhdGU/LmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKGN1cnJlbnREYXRlPy5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgIGNvbnN0IHllYXIgPSBjdXJyZW50RGF0ZT8uZ2V0RnVsbFllYXIoKTtcclxuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBgJHtkYXl9LSR7bW9udGh9LSR7eWVhcn1gO1xyXG4gICAgcmV0dXJuIGZvcm1hdHRlZERhdGU7XHJcbiAgfVxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIGEgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gb2JqZWN0IGludG8gYSBzdGFuZGFyZGl6ZWQgRnJlcXVlbmN5T2JqZWN0IGZvcm1hdC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gZnJlcXVlbmN5IC0gVGhlIGlucHV0IGZyZXF1ZW5jeSBjb25maWd1cmF0aW9uIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcclxuICAgKiAtIGNhc2U6IFRoZSB0eXBlIG9mIGZyZXF1ZW5jeSAoJ29uZV90aW1lJyB8ICdkYWlseScgfCAnd2Vla2x5JyB8ICdtb250aGx5JyB8ICdxdWFydGVybHknIHwgJ3NlbWVzdGVyJyB8ICd5ZWFybHknIHwgJ3JhbmRvbScgfCAnb25nb2luZycgfCAnb25fY29tcGxldGlvbl9vZicgfCAnYmlhbm51YWxseScpXHJcbiAgICogLSB3aW5kb3c6IE51bWJlciBvZiBkYXlzIGJlZm9yZSB0aGUgdGFzayBjYW4gYmUgc3RhcnRlZFxyXG4gICAqIC0gZmFpbGVkQWZ0ZXI6IE51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIHRoZSB0YXNrIGlzIGNvbnNpZGVyZWQgZmFpbGVkXHJcbiAgICogLSBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBOdW1iZXIgb2YgZGF5cyBhZnRlciB3aGljaCB0aGUgdGFzayBpcyBhdXRvLWRlYWN0aXZhdGVkXHJcbiAgICogLSBkYXk6IFRoZSBkYXkgb2Ygb2NjdXJyZW5jZVxyXG4gICAqIC0gdGltZUluMjRIcjogVGltZSBpbiAyNC1ob3VyIGZvcm1hdFxyXG4gICAqIC0gZXZlcnk6IEZyZXF1ZW5jeSBpbnRlcnZhbFxyXG4gICAqIC0gc2VsZWN0ZWREYXk6IEFycmF5IG9mIHNlbGVjdGVkIGRheXMgZm9yIHdlZWtseSBmcmVxdWVuY3kgKDEtNyByZXByZXNlbnRpbmcgTW9uZGF5LVN1bmRheSlcclxuICAgKiAtIHNlbGVjdGVkTW9udGg6IEFycmF5IG9mIHNlbGVjdGVkIG1vbnRocyAoMC0xMSByZXByZXNlbnRpbmcgSmFudWFyeS1EZWNlbWJlcilcclxuICAgKiAtIHN0YXJ0RnJvbTogVW5peCB0aW1lc3RhbXAgZm9yIHRoZSBzdGFydCBkYXRlXHJcbiAgICogLSBsaWZlY3ljbGVEZXRhaWxzOiBTdHJpbmcgaW4gZm9ybWF0IFwiWVlZWS1NTS1ERH5+TlwiIHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZiBvY2N1cnJlbmNlc1xyXG4gICAqIC0gcmFuZG9tVHlwZVNlbGVjdGVkOiBJbmRleCBmb3IgcmFuZG9tIGZyZXF1ZW5jeSB0eXBlICgwOiB3ZWVrbHksIDE6IG1vbnRobHksIDI6IHF1YXJ0ZXJseSwgMzogeWVhcmx5KVxyXG4gICAqIC0gcmFuZG9tSW5zdGFuY2VzOiBOdW1iZXIgb2YgcmFuZG9tIG9jY3VycmVuY2VzXHJcbiAgICogLSBzZWxlY3RlZFR5cGU6IE51bWJlciBvZiByZW1pbmRlcnMgZm9yIG9uZ29pbmcgZnJlcXVlbmN5XHJcbiAgICogLSBzZWxlY3RlZE9uZ29pbmdUeXBlOiBJbmRleCBmb3Igb25nb2luZyBmcmVxdWVuY3kgdHlwZSAoMTogd2VlaywgMjogbW9udGgsIDM6IHF1YXJ0ZXIsIDQ6IHNlbWVzdGVyLCA1OiB5ZWFyKVxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIEEgRnJlcXVlbmN5T2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6XHJcbiAgICogLSB0eXBlOiBGcmVxdWVuY3kgdHlwZVxyXG4gICAqIC0gc3RhcnRCZWZvcmU6IERheXMgYmVmb3JlIHRhc2sgY2FuIHN0YXJ0XHJcbiAgICogLSBlbmRBZnRlcjogRGF5cyBhZnRlciB3aGljaCB0YXNrIGZhaWxzXHJcbiAgICogLSBhdXRvRGVhY3RpdmF0ZTogRGF5cyBhZnRlciB3aGljaCB0YXNrIGlzIGRlYWN0aXZhdGVkXHJcbiAgICogLSBkYXk6IERheSBvZiBvY2N1cnJlbmNlXHJcbiAgICogLSB0aW1lOiBUaW1lIGluIDI0LWhvdXIgZm9ybWF0XHJcbiAgICogLSByZXBlYXRPcHRpb25zOiB7XHJcbiAgICogICAgIGV2ZXJ5OiBudW1iZXIsXHJcbiAgICogICAgIHJlcGVhdE9uOiBzdHJpbmcgKGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBzZWxlY3RlZCBkYXlzL21vbnRocyksXHJcbiAgICogICAgIGxpZmVjeWNsZToge1xyXG4gICAqICAgICAgIHN0YXJ0RnJvbTogc3RyaW5nIChZWVlZLU1NLUREKSxcclxuICAgKiAgICAgICBlbmRCeT86IHN0cmluZyAoWVlZWS1NTS1ERCksXHJcbiAgICogICAgICAgZW5kQWZ0ZXI/OiBudW1iZXJcclxuICAgKiAgICAgfVxyXG4gICAqICAgfVxyXG4gICAqIC0gcmFuZG9tPzogeyB0eXBlOiBzdHJpbmcsIG9jY3VycmVuY2U6IG51bWJlciB9XHJcbiAgICogLSBvbkNvbXBsZXRlOiB7fVxyXG4gICAqIC0gb25Hb2luZzogeyByZW1pbmRlcnM6IG51bWJlciwgc3RhcnRPZjogJ3dlZWsnIHwgJ21vbnRoJyB8ICdxdWFydGVyJyB8ICdzZW1lc3RlcicgfCAneWVhcicgfVxyXG4gICAqIFxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAqIGNvbnN0IGZyZXF1ZW5jeSA9IHtcclxuICAgKiAgIGNhc2U6ICd3ZWVrbHknLFxyXG4gICAqICAgd2luZG93OiAyLFxyXG4gICAqICAgZmFpbGVkQWZ0ZXI6IDEsXHJcbiAgICogICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAzLFxyXG4gICAqICAgZGF5OiAxLFxyXG4gICAqICAgdGltZUluMjRIcjogJzA5OjAwOjAwJyxcclxuICAgKiAgIGV2ZXJ5OiAxLFxyXG4gICAqICAgc2VsZWN0ZWREYXk6IFsxLCAzLCA1XSwgLy8gTW9uZGF5LCBXZWRuZXNkYXksIEZyaWRheVxyXG4gICAqICAgc3RhcnRGcm9tOiAxNjc4OTAwMDAwLFxyXG4gICAqICAgbGlmZWN5Y2xlRGV0YWlsczogJzIwMjQtMTItMzF+fjEwJ1xyXG4gICAqIH07XHJcbiAgICogY29uc3QgcmVzdWx0ID0gc2V0RnJlcXVlbmN5T2JqZWN0KGZyZXF1ZW5jeSk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgc2V0RnJlcXVlbmN5T2JqZWN0KGZyZXF1ZW5jeTogYW55KTogRnJlcXVlbmN5T2JqZWN0IHwgbnVsbCB7XHJcbiAgICBjb25zb2xlLmxvZyhmcmVxdWVuY3ksIFwiZnJlcXVlbmN5XCIpO1xyXG4gICAgY29uc3QgcmVwZWF0T3B0aW9ucyA9IHRoaXMucmVwZWF0T3B0aW9ucyhmcmVxdWVuY3kpO1xyXG4gICAgY29uc3QgbGlmZWN5Y2xlRGV0YWlscyA9IGZyZXF1ZW5jeS5saWZlY3ljbGVEZXRhaWxzLnNwbGl0KCd+ficpO1xyXG4gICAgY29uc3QgZnJlcXVlbmN5T2JqZWN0OiBGcmVxdWVuY3lPYmplY3QgPSB7XHJcbiAgICAgIHR5cGU6IGZyZXF1ZW5jeS5jYXNlLFxyXG4gICAgICBzdGFydEJlZm9yZTogZnJlcXVlbmN5LndpbmRvdyxcclxuICAgICAgZW5kQWZ0ZXI6IGZyZXF1ZW5jeS5mYWlsZWRBZnRlcixcclxuICAgICAgYXV0b0RlYWN0aXZhdGU6IGZyZXF1ZW5jeS5jb250aW51b3VzX2ZhaWxlZF9kYXlzLFxyXG4gICAgICBkYXk6IGZyZXF1ZW5jeS5kYXksIFxyXG4gICAgICB0aW1lOiBmcmVxdWVuY3kudGltZUluMjRIcixcclxuICAgICAgcmVwZWF0T3B0aW9uczoge1xyXG4gICAgICAgIGV2ZXJ5OiBmcmVxdWVuY3kuZXZlcnksXHJcbiAgICAgICAgcmVwZWF0T246IHJlcGVhdE9wdGlvbnMsXHJcbiAgICAgICAgbGlmZWN5Y2xlOiB7XHJcbiAgICAgICAgICBzdGFydEZyb206IG1vbWVudChmcmVxdWVuY3kuc3RhcnRGcm9tICogMTAwMCkuZm9ybWF0KCdZWVlZLU1NLUREJyksXHJcbiAgICAgICAgICBlbmRCeTpsaWZlY3ljbGVEZXRhaWxzWzBdICE9PSAnMDAwMC0wMC0wMCcgPyBtb21lbnQobGlmZWN5Y2xlRGV0YWlsc1swXSAsICdERC1NTU1NLVlZWVknKS5mb3JtYXQoJ1lZWVktTU0tREQnKSA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGVuZEFmdGVyOiBcclxuICAgICAgICAgICAgICAgIGZyZXF1ZW5jeS5jYXNlID09PSAnb25lX3RpbWUnXHJcbiAgICAgICAgICAgICAgICAgICAgPyAxXHJcbiAgICAgICAgICAgICAgICAgICAgOiBsaWZlY3ljbGVEZXRhaWxzWzFdICE9PSAnMCdcclxuICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KGxpZmVjeWNsZURldGFpbHNbMV0pXHJcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICByYW5kb206IHRoaXMuZ2V0UmFuZG9tRnJlcXVlbmN5KGZyZXF1ZW5jeSksXHJcbiAgICAgIG9uQ29tcGxldGU6IGZyZXF1ZW5jeS5jYXNlID09PSAnb25fY29tcGxldGUnID8gZnJlcXVlbmN5Lm9uQ29tcGxldGlvbiA6IHt9LFxyXG4gICAgICBvbkdvaW5nOiB0aGlzLmdldE9uZ29pbmcoZnJlcXVlbmN5KSxcclxuICAgIH0gIFxyXG4gICAgcmV0dXJuIGZyZXF1ZW5jeU9iamVjdDtcclxuICB9IFxyXG5cclxuICByZXBlYXRPcHRpb25zKGZyZXF1ZW5jeTogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnNvbGUubG9nKGZyZXF1ZW5jeSwgJ3JlcGVhdE9wdGlvbnMgZnJlcXVlbmN5Jyk7XHJcbiAgIGlmKGZyZXF1ZW5jeT8uc2VsZWN0ZWREYXk/Lmxlbmd0aCA+IDApIHtcclxuICAgIGNvbnN0IHdlZWtEYXlzID0gW107XHJcbiAgICAgZm9yKGxldCBpID0gMDsgaSA8IDc7IGkgKyspIHtcclxuICAgICAgaWYoZnJlcXVlbmN5LnNlbGVjdGVkRGF5LmluY2x1ZGVzKGkgKyAxKSkge1xyXG4gICAgICAgIHdlZWtEYXlzLnB1c2goMSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd2Vla0RheXMucHVzaCgwKTtcclxuICAgICAgfVxyXG4gICAgIH1cclxuICAgICByZXR1cm4gd2Vla0RheXMuam9pbignJyk7XHJcbiAgIH0gZWxzZSBpZihmcmVxdWVuY3k/LnNlbGVjdGVkTW9udGg/Lmxlbmd0aCA+IDApIHtcclxuICAgIGNvbnN0IG1vbnRocyA9IFsgXTtcclxuICAgIGZvcihsZXQgaSA9IDA7IGkgPCAxMjsgaSArKykge1xyXG4gICAgICBpZihmcmVxdWVuY3k/LnNlbGVjdGVkTW9udGg/LmluY2x1ZGVzKGkpKSB7XHJcbiAgICAgICAgbW9udGhzLnB1c2goMSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbW9udGhzLnB1c2goMCk7XHJcbiAgICAgIH1cclxuICAgfVxyXG4gICByZXR1cm4gbW9udGhzLmpvaW4oJycpO1xyXG4gICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuICcnO1xyXG4gICB9XHJcbiAgfVxyXG5cclxuICBnZXRPbmdvaW5nKGZyZXF1ZW5jeTogYW55KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICByZW1pbmRlcnM6IGZyZXF1ZW5jeT8uc2VsZWN0ZWRUeXBlLFxyXG4gICAgICBzdGFydE9mOiBmcmVxdWVuY3k/LnNlbGVjdGVkVHlwZSA/ICBbJ3dlZWsnLCdtb250aCcgLCdxdWFydGVyJyAsJ3NlbWVzdGVyJyAsJ3llYXInXVtmcmVxdWVuY3k/LnNlbGVjdGVkT25nb2luZ1R5cGUgLSAxXSA6ICcnXHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFJhbmRvbUZyZXF1ZW5jeShmcmVxdWVuY3k6IGFueSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICB0eXBlOiBbJ3dlZWtseScsICdtb250aGx5JywgJ3F1YXJ0ZXJseScsICd5ZWFybHknXVtmcmVxdWVuY3k/LnJhbmRvbVR5cGVTZWxlY3RlZF0sXHJcbiAgICAgb2NjdXJyZW5jZTogZnJlcXVlbmN5Py5yYW5kb21JbnN0YW5jZXNcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZUZyZXF1ZW5jeVBhdHRlcm4oZnJlcXVlbmN5OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKGZyZXF1ZW5jeSwgJ2ZyZXF1ZW5jeScpO1xyXG4gICAgbGV0IHBhdHRlcm4gPSAnJztcclxuICAgIGxldCBzZWxlY3RlZERheSA9IGZyZXF1ZW5jeS5kYXlcclxuICAgIHN3aXRjaCAoZnJlcXVlbmN5LnR5cGUpIHtcclxuXHJcbiAgICAgIGNhc2UgJ29uZV90aW1lJzpcclxuICAgICAgICBsZXQgZGF0ZV92YWx1ZSA9IGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LnN0YXJ0RnJvbT8uc3BsaXQoJy0nKTtcclxuXHJcbiAgICAgICAgcGF0dGVybiA9XHJcbiAgICAgICAgICAnMH4nICtcclxuICAgICAgICAgICcnICtcclxuICAgICAgICAgIGRhdGVfdmFsdWVbMF0gK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIChkYXRlX3ZhbHVlWzFdKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgZGF0ZV92YWx1ZVsyXTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZGFpbHknOlxyXG4gICAgICAgIHBhdHRlcm4gPSBgMX4wfjB+JHtmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8uZXZlcnl9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnd2Vla2x5JzpcclxuICAgICAgICBwYXR0ZXJuID0gYDJ+JHt0aGlzLmdldERheShmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ucmVwZWF0T24pfX4wfiR7ZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LmV2ZXJ5fWA7XHJcbiAgICAgICAgYnJlYWs7ICAgXHJcbiAgICAgIGNhc2UgJ21vbnRobHknOlxyXG4gICAgICAgIHBhdHRlcm4gPVxyXG4gICAgICAgICAgYDN+JHtzZWxlY3RlZERheX1+JHt0aGlzLmdldE1vbnRoKGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5yZXBlYXRPbil9fjBgO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBcclxuICAgICAgY2FzZSAncXVhcnRlcmx5JzpcclxuICAgICAgICBwYXR0ZXJuID0gYDd+JHtzZWxlY3RlZERheX1+JHt0aGlzLmdldE1vbnRoKGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5yZXBlYXRPbil9fjBgO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgIFxyXG4gICAgIGNhc2UgJ3NlbWVzdGVyJzpcclxuICAgICAgcGF0dGVybiA9IGA5fiR7c2VsZWN0ZWREYXl9fiR7dGhpcy5nZXRNb250aChmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ucmVwZWF0T24pfX4wYDtcclxuICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3llYXJseSc6XHJcbiAgICAgICAgcGF0dGVybiA9XHJcbiAgICAgICAgICBgNH4ke3NlbGVjdGVkRGF5fX4ke3RoaXMuZ2V0TW9udGgoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+MWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2JpYW5udWFsJzpcclxuICAgICAgICBwYXR0ZXJuID0gYDl+JHtzZWxlY3RlZERheX1+JHt0aGlzLmdldE1vbnRoKGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5yZXBlYXRPbil9fjBgO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvbl9nb2luZyc6XHJcbiAgICAgICAgY29uc3QgdHlwZSA9IFsnd2VlaycsICdtb250aCcsICdxdWFydGVyJywgJ3NlbWVzdGVyJywgJ3llYXInXTtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHR5cGUuaW5kZXhPZihmcmVxdWVuY3kub25Hb2luZz8uc3RhcnRPZikgPz8gMDtcclxuICAgICAgICBwYXR0ZXJuID0gYDEwfiR7ZnJlcXVlbmN5Lm9uR29pbmc/LnJlbWluZGVyc31+JHtpbmRleH1+MGA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3JhbmRvbSc6IFxyXG4gICAgICAgIGxldCByYW5kb21UeXBlID0gWyd3ZWVrbHknLCAnbW9udGhseScsICdxdWFydGVybHknLCAneWVhcmx5J107XHJcbiAgICAgICAgbGV0IHJhbmRvbUluZGV4ID0gcmFuZG9tVHlwZS5pbmRleE9mKGZyZXF1ZW5jeS5yYW5kb20udHlwZSk7XHJcbiAgICAgICAgcGF0dGVybiA9IGA4fiR7cmFuZG9tSW5kZXggKyAxfX4ke3RoaXMuZ2V0TW9udGgoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+JHtmcmVxdWVuY3kucmFuZG9tLm9jY3VycmVuY2V9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnb25fY29tcGxldGUnOlxyXG4gICAgICAgIHBhdHRlcm4gPSBgNn4wfjB+JHtmcmVxdWVuY3kub25Db21wbGV0ZT8uZHVlQWZ0ZXJ9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBwYXR0ZXJuID0gYDV+JHtmcmVxdWVuY3kucmFuZG9tLm9jY3VycmVuY2V9fjB+MGA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGF0dGVybjtcclxuICB9XHJcblxyXG4gIGdldERheShyZXBlYXRPcHRpb25zOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRheSA9IHJlcGVhdE9wdGlvbnMuc3BsaXQoJycpLm1hcChOdW1iZXIpO1xyXG4gICAgY29uc3QgZGF5TmFtZSA9IFtdO1xyXG4gICAgZm9yKGxldCBpID0gMDsgaSA8IDc7IGkgKyspIHtcclxuICAgICAgaWYoZGF5W2ldID09PSAxKSB7XHJcbiAgICAgICAgZGF5TmFtZS5wdXNoKGkgKyAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRheU5hbWUuam9pbignLCcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TW9udGgocmVwZWF0T3B0aW9uczogc3RyaW5nKSB7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gcmVwZWF0T3B0aW9ucy5zcGxpdCgnJykubWFwKE51bWJlcik7XHJcbiAgICAgIGNvbnN0IG1vbnRoTmFtZSA9IFtdO1xyXG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwgMTI7IGkgKyspIHtcclxuICAgICAgICBpZihtb250aFtpXSA9PT0gMSkge1xyXG4gICAgICAgICAgbW9udGhOYW1lLnB1c2goaSArIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbW9udGhOYW1lLmpvaW4oJywnKTtcclxuICB9XHJcbiAgICBcclxuICAgIGdldExpZmVjeWNsZVBhdHRlcm4gKGZyZXF1ZW5jeTogYW55KSB7XHJcbiAgICAgIGxldCBwYXR0ZXJuID0gXCIwMDAwLTAwLTAwfn4wXCI7XHJcbiAgICAgIGlmKCFmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQnkgJiYgIWZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRBZnRlcikge1xyXG4gICAgICAgIHJldHVybiAge1xyXG4gICAgICAgICAgc3RhcnRGcm9tOiBuZXcgRGF0ZShmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uc3RhcnRGcm9tKS5nZXRUaW1lKCkgLyAxMDAwLFxyXG4gICAgICAgICAgIHBhdHRlcm5cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZihmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQnkpIHtcclxuICAgICAgICByZXR1cm4gIHtcclxuICAgICAgICAgIHN0YXJ0RnJvbTogbmV3IERhdGUoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LnN0YXJ0RnJvbSkuZ2V0VGltZSgpIC8gMTAwMCxcclxuICAgICAgICAgICBwYXR0ZXJuOiB0aGlzLmZvcm1hdERhdGVTdHJpbmcoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LmVuZEJ5KVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRBZnRlcikge1xyXG4gICAgICAgIHJldHVybiAge1xyXG4gICAgICAgICAgc3RhcnRGcm9tOiBuZXcgRGF0ZShmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uc3RhcnRGcm9tKS5nZXRUaW1lKCkgLyAxMDAwLFxyXG4gICAgICAgICAgIHBhdHRlcm46IFwiMDAwMC0wMC0wMH5+XCIgKyBmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQWZ0ZXJcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBzdGFydEZyb206IG5ldyBEYXRlKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20pLmdldFRpbWUoKSAvIDEwMDAsXHJcbiAgICAgICAgcGF0dGVybjogXCIwMDAwLTAwLTAwfn4wXCJcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gKiBDb252ZXJ0cyBhIGRhdGUgc3RyaW5nIGluIFwiWVlZWS1NTS1ERFwiIGZvcm1hdCB0byBcIkRELU1vbnRoLVlZWVl+fjBcIi5cclxuICogXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRlU3RyaW5nIC0gVGhlIGlucHV0IGRhdGUgc3RyaW5nIGluIFwiWVlZWS1NTS1ERFwiIGZvcm1hdC5cclxuICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nIGluIFwiREQtTW9udGgtWVlZWX5+MFwiIGZvcm1hdC5cclxuICogXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogZm9ybWF0RGF0ZVN0cmluZyhcIjIwMjUtMDMtMjdcIik7IC8vIFJldHVybnMgXCIyNy1NYXJjaC0yMDI1fn4wXCJcclxuICogYGBgXHJcbiAqL1xyXG4gZm9ybWF0RGF0ZVN0cmluZyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlU3RyaW5nKTtcclxuICBcclxuICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKTtcclxuICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gIFxyXG4gIGNvbnN0IG1vbnRoTmFtZXMgPSBbXHJcbiAgICAgIFwiSmFudWFyeVwiLCBcIkZlYnJ1YXJ5XCIsIFwiTWFyY2hcIiwgXCJBcHJpbFwiLCBcIk1heVwiLCBcIkp1bmVcIixcclxuICAgICAgXCJKdWx5XCIsIFwiQXVndXN0XCIsIFwiU2VwdGVtYmVyXCIsIFwiT2N0b2JlclwiLCBcIk5vdmVtYmVyXCIsIFwiRGVjZW1iZXJcIlxyXG4gIF07XHJcbiAgY29uc3QgbW9udGggPSBtb250aE5hbWVzW2RhdGUuZ2V0TW9udGgoKV07XHJcblxyXG4gIHJldHVybiBgJHtkYXl9LSR7bW9udGh9LSR7eWVhcn1+fjBgO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0cmlldmVzIHRoZSBuYW1lIG9mIGEgbW9udGggYmFzZWQgb24gaXRzIG51bWVyaWNhbCB2YWx1ZS5cclxuICogXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBtb250aCAtIFRoZSBtb250aCBudW1iZXIgKDEtMTIpIHdoZXJlOlxyXG4gKiAgIDEgPSBKYW51YXJ5XHJcbiAqICAgMiA9IEZlYnJ1YXJ5XHJcbiAqICAgLi4uXHJcbiAqICAgMTIgPSBEZWNlbWJlclxyXG4gKiBcclxuICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIG5hbWUgb2YgdGhlIG1vbnRoIChlLmcuLCBcIkpBTlwiLCBcIkZFQlwiLCBldGMuKSBvciB1bmRlZmluZWQgaWYgdGhlIG1vbnRoIG51bWJlciBpcyBpbnZhbGlkXHJcbiAqIFxyXG4gKiBAZXhhbXBsZVxyXG4gKiBnZXRNb250aE5hbWUoMSkgIC8vIFJldHVybnM6IFwiSmFuXCJcclxuICogZ2V0TW9udGhOYW1lKDEyKSAvLyBSZXR1cm5zOiBcIkRlY1wiXHJcbiAqIGdldE1vbnRoTmFtZSgxMykgLy8gUmV0dXJuczogdW5kZWZpbmVkXHJcbiAqL1xyXG5wdWJsaWMgZ2V0TW9udGhOYW1lKHNlbGVjdGVkTW9udGg6IG51bWJlcikgeyAgXHJcbiAgcmV0dXJuIE1PTlRIX05BTUVTLmZpbmQoKG1vbnRoOiBhbnkpID0+IG1vbnRoLnZhbHVlID09PSBzZWxlY3RlZE1vbnRoKT8ubW9udGg7XHJcbn1cclxuXHJcbn1cclxuIl19
@@ -17,7 +17,7 @@ export class AvatarV2Component {
17
17
  this.popoverSliceCount = 3;
18
18
  this.showPopover = false;
19
19
  this.env = config?.envConfig;
20
- this.imagePath = this.env?.s3Url + this.env?.s3Bucket + '/profile_pic/thumb/';
20
+ this.imagePath = this.env.fileHostUrl + '/';
21
21
  }
22
22
  ngOnInit() {
23
23
  this.getSliceCount();
@@ -50,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
50
50
  }], type: [{
51
51
  type: Input
52
52
  }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3VpLWtpdC9hdmF0YXItdjIvYXZhdGFyLXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3VpLWtpdC9hdmF0YXItdjIvYXZhdGFyLXYyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQVMxRCxNQUFNLE9BQU8saUJBQWlCO0lBUTdCLFlBQTRCLE1BQXVCO1FBUDFDLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsU0FBSSxHQUFxQyxjQUFjLENBQUM7UUFDakUsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUV2QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQUM5QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUc1QixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sRUFBRSxTQUFTLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQztJQUMvRSxDQUFDO0lBRUEsUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBR0QsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxlQUFlLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2hFLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDekI7YUFBTTtZQUNMLElBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzthQUN6QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQzthQUMxQjtTQUNGO0lBQ0gsQ0FBQzsrR0EvQlUsaUJBQWlCO21HQUFqQixpQkFBaUIsNkhDYjlCLHNsRUE0Q2MsK2hCRG5DRixZQUFZLG9UQUFFLGFBQWEsc1JBQUUsYUFBYTs7NEZBSXpDLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUM7OzBCQVlyQyxRQUFROzRDQVBoQixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9wdGlvbmFsLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJy4uL3BvcG92ZXIvcG9wb3Zlci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb25zJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYXZhdGFyLXYyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFBvcG92ZXJNb2R1bGUsIFRvb2x0aXBNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdmF0YXItdjIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2F2YXRhci12Mi5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdmF0YXJWMkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiBASW5wdXQoKSBhdmF0YXJMaXN0OiBhbnlbXSA9IFtdO1xyXG4gQElucHV0KCkgdHlwZTogJ1NJTkdMRV9BVkFUQVInIHwgJ01VTFRJX0FWQVRBUicgPSAnTVVMVElfQVZBVEFSJztcclxuIGltYWdlUGF0aDogc3RyaW5nID0gJyc7XHJcbiBlbnY6IGFueTtcclxuIHNsaWNlQ291bnQ6IG51bWJlciA9IDM7XHJcbiBwb3BvdmVyU2xpY2VDb3VudDogbnVtYmVyID0gMztcclxuIHNob3dQb3BvdmVyOiBib29sZWFuID0gZmFsc2U7XHJcbiBjb25zdHJ1Y3RvciggICAgQE9wdGlvbmFsKCkgY29uZmlnPzogQ29uZmlndXJhdGlvbnNcclxuKSB7XHJcbiAgdGhpcy5lbnYgPSBjb25maWc/LmVudkNvbmZpZztcclxuICB0aGlzLmltYWdlUGF0aCA9IHRoaXMuZW52Py5zM1VybCArIHRoaXMuZW52Py5zM0J1Y2tldCArICcvcHJvZmlsZV9waWMvdGh1bWIvJztcclxuIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgIHRoaXMuZ2V0U2xpY2VDb3VudCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFNsaWNlQ291bnQoKSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnU0lOR0xFX0FWQVRBUicgJiYgdGhpcy5hdmF0YXJMaXN0Py5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRoaXMuc2xpY2VDb3VudCA9IDA7XHJcbiAgICAgIHRoaXMucG9wb3ZlclNsaWNlQ291bnQgPSAwO1xyXG4gICAgICB0aGlzLnNob3dQb3BvdmVyID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmKHRoaXMuYXZhdGFyTGlzdD8ubGVuZ3RoID4gMykge1xyXG4gICAgICAgIHRoaXMuc2hvd1BvcG92ZXIgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd1BvcG92ZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInZ4LWF2YXRhci1ncm91cCBcIj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlYWNoQXZhdGFyIG9mIGF2YXRhckxpc3QgfCBzbGljZTowOnNsaWNlQ291bnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtYXZhdGFyIG1kXCI+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJlYWNoQXZhdGFyPy5pbWFnZVBhdGg7IGVsc2UgYXZhdGFyXCIgW3NyY109XCJpbWFnZVBhdGggKyBlYWNoQXZhdGFyPy5pbWFnZVBhdGhcIlxyXG4gICAgICAgICAgICAgICAgW2FsdF09XCJlYWNoQXZhdGFyPy5zaG9ydE5hbWVcIiBbYXBwVG9vbHRpcF09XCJlYWVhY2hBdmF0YXI/Lm5hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgLz5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhdmF0YXI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFlYWNoQXZhdGFyPy5hdmF0YXJcIiBbYXBwVG9vbHRpcF09XCJlYWNoQXZhdGFyPy5uYW1lXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJibHVlXCI+e3sgZWFjaEF2YXRhcj8uc2hvcnROYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1BvcG92ZXIgXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwidXNlcnMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiIGNsYXNzPVwidngtYXZhdGFyIG1kIG11bHRpLXVzZXJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXJcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB1c2VyLWljb25zIHZ4LWZzLTEyXCI+JiN4ZWEzNTs8L2k+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnQgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIj57eyBhdmF0YXJMaXN0Py5sZW5ndGggLVxyXG4gICAgICAgICAgICAgICAgcG9wb3ZlclNsaWNlQ291bnRcclxuICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbjwvZGl2PlxyXG5cclxuPGFwcC1wb3BvdmVyICN1c2Vycz5cclxuICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgdXNlciBvZiBhdmF0YXJMaXN0IHwgc2xpY2U6IHBvcG92ZXJTbGljZUNvdW50XCIgYXBwVG9vbHRpcD1cInt7IHVzZXI/Lm5hbWUgfX1cIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdXNlcj8uYXZhdGFyXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/LnNob3J0TmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInVzZXI/LmF2YXRhclwiIFtzcmNdPVwidXNlcj8uYXZhdGFyXCIgYWx0PVwiXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3sgdXNlcj8ubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuPC9hcHAtcG9wb3Zlcj4iXX0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3VpLWtpdC9hdmF0YXItdjIvYXZhdGFyLXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3VpLWtpdC9hdmF0YXItdjIvYXZhdGFyLXYyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQVMxRCxNQUFNLE9BQU8saUJBQWlCO0lBUTdCLFlBQTRCLE1BQXVCO1FBUDFDLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsU0FBSSxHQUFxQyxjQUFjLENBQUM7UUFDakUsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUV2QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQUM5QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUc1QixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sRUFBRSxTQUFTLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7SUFDN0MsQ0FBQztJQUVBLFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUdELGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssZUFBZSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNoRSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQ3pCO2FBQU07WUFDTCxJQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDekI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7YUFDMUI7U0FDRjtJQUNILENBQUM7K0dBL0JVLGlCQUFpQjttR0FBakIsaUJBQWlCLDZIQ2I5QixzbEVBNENjLCtoQkRuQ0YsWUFBWSxvVEFBRSxhQUFhLHNSQUFFLGFBQWE7OzRGQUl6QyxpQkFBaUI7a0JBUDdCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDOzswQkFZckMsUUFBUTs0Q0FQaEIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPcHRpb25hbCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgfSBmcm9tICcuLi9wb3BvdmVyL3BvcG92ZXIubW9kdWxlJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9ucyc7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICcuLi90b29sdGlwL3Rvb2x0aXAubW9kdWxlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWF2YXRhci12MicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBQb3BvdmVyTW9kdWxlLCBUb29sdGlwTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXZhdGFyLXYyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdmF0YXItdjIuY29tcG9uZW50Lmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXZhdGFyVjJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gQElucHV0KCkgYXZhdGFyTGlzdDogYW55W10gPSBbXTtcclxuIEBJbnB1dCgpIHR5cGU6ICdTSU5HTEVfQVZBVEFSJyB8ICdNVUxUSV9BVkFUQVInID0gJ01VTFRJX0FWQVRBUic7XHJcbiBpbWFnZVBhdGg6IHN0cmluZyA9ICcnO1xyXG4gZW52OiBhbnk7XHJcbiBzbGljZUNvdW50OiBudW1iZXIgPSAzO1xyXG4gcG9wb3ZlclNsaWNlQ291bnQ6IG51bWJlciA9IDM7XHJcbiBzaG93UG9wb3ZlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gY29uc3RydWN0b3IoICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXHJcbikge1xyXG4gIHRoaXMuZW52ID0gY29uZmlnPy5lbnZDb25maWc7XHJcbiAgdGhpcy5pbWFnZVBhdGggPSB0aGlzLmVudi5maWxlSG9zdFVybCArICcvJztcclxuIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgIHRoaXMuZ2V0U2xpY2VDb3VudCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFNsaWNlQ291bnQoKSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnU0lOR0xFX0FWQVRBUicgJiYgdGhpcy5hdmF0YXJMaXN0Py5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRoaXMuc2xpY2VDb3VudCA9IDA7XHJcbiAgICAgIHRoaXMucG9wb3ZlclNsaWNlQ291bnQgPSAwO1xyXG4gICAgICB0aGlzLnNob3dQb3BvdmVyID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmKHRoaXMuYXZhdGFyTGlzdD8ubGVuZ3RoID4gMykge1xyXG4gICAgICAgIHRoaXMuc2hvd1BvcG92ZXIgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd1BvcG92ZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInZ4LWF2YXRhci1ncm91cCBcIj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlYWNoQXZhdGFyIG9mIGF2YXRhckxpc3QgfCBzbGljZTowOnNsaWNlQ291bnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtYXZhdGFyIG1kXCI+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJlYWNoQXZhdGFyPy5pbWFnZVBhdGg7IGVsc2UgYXZhdGFyXCIgW3NyY109XCJpbWFnZVBhdGggKyBlYWNoQXZhdGFyPy5pbWFnZVBhdGhcIlxyXG4gICAgICAgICAgICAgICAgW2FsdF09XCJlYWNoQXZhdGFyPy5zaG9ydE5hbWVcIiBbYXBwVG9vbHRpcF09XCJlYWVhY2hBdmF0YXI/Lm5hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgLz5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhdmF0YXI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFlYWNoQXZhdGFyPy5hdmF0YXJcIiBbYXBwVG9vbHRpcF09XCJlYWNoQXZhdGFyPy5uYW1lXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJibHVlXCI+e3sgZWFjaEF2YXRhcj8uc2hvcnROYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1BvcG92ZXIgXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwidXNlcnMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiIGNsYXNzPVwidngtYXZhdGFyIG1kIG11bHRpLXVzZXJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXJcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB1c2VyLWljb25zIHZ4LWZzLTEyXCI+JiN4ZWEzNTs8L2k+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnQgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIj57eyBhdmF0YXJMaXN0Py5sZW5ndGggLVxyXG4gICAgICAgICAgICAgICAgcG9wb3ZlclNsaWNlQ291bnRcclxuICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbjwvZGl2PlxyXG5cclxuPGFwcC1wb3BvdmVyICN1c2Vycz5cclxuICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgdXNlciBvZiBhdmF0YXJMaXN0IHwgc2xpY2U6IHBvcG92ZXJTbGljZUNvdW50XCIgYXBwVG9vbHRpcD1cInt7IHVzZXI/Lm5hbWUgfX1cIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdXNlcj8uYXZhdGFyXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/LnNob3J0TmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInVzZXI/LmF2YXRhclwiIFtzcmNdPVwidXNlcj8uYXZhdGFyXCIgYWx0PVwiXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3sgdXNlcj8ubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuPC9hcHAtcG9wb3Zlcj4iXX0=