igniteui-angular 14.2.7 → 14.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/core/utils.mjs +3 -2
- package/esm2020/lib/directives/for-of/for_of.directive.mjs +4 -2
- package/esm2020/lib/directives/mask/mask-parsing.service.mjs +7 -3
- package/esm2020/lib/directives/mask/mask.directive.mjs +12 -10
- package/esm2020/lib/grids/filtering/base/grid-filtering-row.component.mjs +3 -3
- package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.mjs +3 -2
- package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +3 -3
- package/esm2020/lib/simple-combo/simple-combo.component.mjs +3 -3
- package/fesm2015/igniteui-angular.mjs +31 -20
- package/fesm2015/igniteui-angular.mjs.map +1 -1
- package/fesm2020/igniteui-angular.mjs +30 -20
- package/fesm2020/igniteui-angular.mjs.map +1 -1
- package/lib/directives/mask/mask-parsing.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -243,7 +243,8 @@ export class PlatformUtil {
|
|
|
243
243
|
style.flexBasis = '';
|
|
244
244
|
}
|
|
245
245
|
range.selectNodeContents(node);
|
|
246
|
-
const
|
|
246
|
+
const scale = node.getBoundingClientRect().width / node.offsetWidth;
|
|
247
|
+
const width = range.getBoundingClientRect().width / scale;
|
|
247
248
|
if (!this.isFirefox) {
|
|
248
249
|
// we need that hack - otherwise content won't be measured correctly in IE/Edge
|
|
249
250
|
node.style.overflow = overflow;
|
|
@@ -694,4 +695,4 @@ export const formatDate = (value, format, locale, timezone) => {
|
|
|
694
695
|
return _formatDate(value, format, locale, timezone);
|
|
695
696
|
};
|
|
696
697
|
export const formatCurrency = new CurrencyPipe(undefined).transform;
|
|
697
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY29yZS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsSUFBSSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFDSCxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFDeEYsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFDNUYsY0FBYyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUM3RixZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQzFGLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUNyRixZQUFZLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFDbkYsWUFBWSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFDbEYsY0FBYyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFB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Q1gsVUFBVTtJQUNWLFdBQVc7SUFDWCxhQUFhO0lBQ2IsY0FBYztJQUNkLFNBQVM7SUFDVCxVQUFVO0lBQ1YsU0FBUztJQUNULFVBQVU7SUFDVixTQUFTO0lBQ1QsVUFBVTtJQUNWLFNBQVM7SUFDVCxVQUFVO0lBQ1YsYUFBYTtJQUNiLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLFVBQVU7SUFDVixXQUFXO0lBQ1gsYUFBYTtJQUNiLGNBQWM7SUFDZCxTQUFTO0lBQ1QsVUFBVTtJQUNWLFNBQVM7SUFDVCxVQUFVO0lBQ1YsU0FBUztJQUNULFVBQVU7SUFDVixTQUFTO0lBQ1QsVUFBVTtJQUNWLGFBQWE7SUFDYixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsY0FBYztJQUNkLGdCQUFnQjtJQUNoQixpQkFBaUI7Q0FDcEIsQ0FBQztBQUdGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQTZCLEVBQUUsTUFBYyxFQUFFLE1BQWMsRUFBRSxRQUFpQixFQUFVLEVBQUU7SUFDbkgsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtRQUN2RCxPQUFPLEVBQUUsQ0FBQztLQUNiO0lBQ0QsT0FBTyxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDdXJyZW5jeVBpcGUsIGZvcm1hdERhdGUgYXMgX2Zvcm1hdERhdGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1lcmdlV2l0aCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIGJsaW5rLCBmYWRlSW4sIGZhZGVPdXQsIGZsaXBCb3R0b20sIGZsaXBIb3JCY2ssIGZsaXBIb3JGd2QsIGZsaXBMZWZ0LCBmbGlwUmlnaHQsIGZsaXBUb3AsXG4gICAgZmxpcFZlckJjaywgZmxpcFZlckZ3ZCwgZ3Jvd1ZlckluLCBncm93VmVyT3V0LCBoZWFydGJlYXQsIHB1bHNhdGVCY2ssIHB1bHNhdGVGd2QsIHJvdGF0ZUluQmwsXG4gICAgcm90YXRlSW5Cb3R0b20sIHJvdGF0ZUluQnIsIHJvdGF0ZUluQ2VudGVyLCByb3RhdGVJbkRpYWdvbmFsMSwgcm90YXRlSW5EaWFnb25hbDIsIHJvdGF0ZUluSG9yLFxuICAgIHJvdGF0ZUluTGVmdCwgcm90YXRlSW5SaWdodCwgcm90YXRlSW5UbCwgcm90YXRlSW5Ub3AsIHJvdGF0ZUluVHIsIHJvdGF0ZUluVmVyLCByb3RhdGVPdXRCbCxcbiAgICByb3RhdGVPdXRCb3R0b20sIHJvdGF0ZU91dEJyLCByb3RhdGVPdXRDZW50ZXIsIHJvdGF0ZU91dERpYWdvbmFsMSwgcm90YXRlT3V0RGlhZ29uYWwyLFxuICAgIHJvdGF0ZU91dEhvciwgcm90YXRlT3V0TGVmdCwgcm90YXRlT3V0UmlnaHQsIHJvdGF0ZU91dFRsLCByb3RhdGVPdXRUb3AsIHJvdGF0ZU91dFRyLFxuICAgIHJvdGF0ZU91dFZlciwgc2NhbGVJbkJsLCBzY2FsZUluQm90dG9tLCBzY2FsZUluQnIsIHNjYWxlSW5DZW50ZXIsIHNjYWxlSW5Ib3JDZW50ZXIsXG4gICAgc2NhbGVJbkhvckxlZnQsIHNjYWxlSW5Ib3JSaWdodCwgc2NhbGVJbkxlZnQsIHNjYWxlSW5SaWdodCwgc2NhbGVJblRsLCBzY2FsZUluVG9wLCBzY2FsZUluVHIsXG4gICAgc2NhbGVJblZlckJvdHRvbSwgc2NhbGVJblZlckNlbnRlciwgc2NhbGVJblZlclRvcCwgc2NhbGVPdXRCbCwgc2NhbGVPdXRCb3R0b20sIHNjYWxlT3V0QnIsXG4gICAgc2NhbGVPdXRDZW50ZXIsIHNjYWxlT3V0SG9yQ2VudGVyLCBzY2FsZU91dEhvckxlZnQsIHNjYWxlT3V0SG9yUmlnaHQsIHNjYWxlT3V0TGVmdCxcbiAgICBzY2FsZU91dFJpZ2h0LCBzY2FsZU91dFRsLCBzY2FsZU91dFRvcCwgc2NhbGVPdXRUciwgc2NhbGVPdXRWZXJCb3R0b20sIHNjYWxlT3V0VmVyQ2VudGVyLFxuICAgIHNjYWxlT3V0VmVyVG9wLCBzaGFrZUJsLCBzaGFrZUJvdHRvbSwgc2hha2VCciwgc2hha2VDZW50ZXIsIHNoYWtlSG9yLCBzaGFrZUxlZnQsIHNoYWtlUmlnaHQsXG4gICAgc2hha2VUbCwgc2hha2VUb3AsIHNoYWtlVHIsIHNoYWtlVmVyLCBzbGlkZUluQmwsIHNsaWRlSW5Cb3R0b20sIHNsaWRlSW5Cciwgc2xpZGVJbkxlZnQsXG4gICAgc2xpZGVJblJpZ2h0LCBzbGlkZUluVGwsIHNsaWRlSW5Ub3AsIHNsaWRlSW5Uciwgc2xpZGVPdXRCbCwgc2xpZGVPdXRCb3R0b20sIHNsaWRlT3V0QnIsXG4gICAgc2xpZGVPdXRMZWZ0LCBzbGlkZU91dFJpZ2h0LCBzbGlkZU91dFRsLCBzbGlkZU91dFRvcCwgc2xpZGVPdXRUciwgc3dpbmdJbkJvdHRvbUJjayxcbiAgICBzd2luZ0luQm90dG9tRndkLCBzd2luZ0luTGVmdEJjaywgc3dpbmdJbkxlZnRGd2QsIHN3aW5nSW5SaWdodEJjaywgc3dpbmdJblJpZ2h0RndkLFxuICAgIHN3aW5nSW5Ub3BCY2ssIHN3aW5nSW5Ub3BGd2QsIHN3aW5nT3V0Qm90dG9tQmNrLCBzd2luZ091dEJvdHRvbUZ3ZCwgc3dpbmdPdXRMZWZ0QmNrLFxuICAgIHN3aW5nT3V0TGVmdHRGd2QsIHN3aW5nT3V0UmlnaHRCY2ssIHN3aW5nT3V0UmlnaHRGd2QsIHN3aW5nT3V0VG9wQmNrLCBzd2luZ091dFRvcEZ3ZFxufSBmcm9tICcuLi9hbmltYXRpb25zL21haW4nO1xuaW1wb3J0IHsgc2V0SW1tZWRpYXRlIH0gZnJvbSAnLi9zZXRJbW1lZGlhdGUnO1xuaW1wb3J0IHsgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3Qgc2hvd01lc3NhZ2UgPSAobWVzc2FnZTogc3RyaW5nLCBpc01lc3NhZ2VTaG93bjogYm9vbGVhbik6IGJvb2xlYW4gPT4ge1xuICAgIGlmICghaXNNZXNzYWdlU2hvd24gJiYgaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IG1rZW51bSA9IDxUIGV4dGVuZHMgeyBbaW5kZXg6IHN0cmluZ106IFUgfSwgVSBleHRlbmRzIHN0cmluZz4oeDogVCkgPT4geDtcblxuLyoqXG4gKlxuICogQGhpZGRlbiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFJlc2l6ZU9ic2VydmVyID0gKCkgPT4gd2luZG93LlJlc2l6ZU9ic2VydmVyO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IGNsb25lQXJyYXkgPSAoYXJyYXk6IGFueVtdLCBkZWVwPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IGFyciA9IFtdO1xuICAgIGlmICghYXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG4gICAgbGV0IGkgPSBhcnJheS5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgICBhcnJbaV0gPSBkZWVwID8gY2xvbmVWYWx1ZShhcnJheVtpXSkgOiBhcnJheVtpXTtcbiAgICB9XG4gICAgcmV0dXJuIGFycjtcbn07XG5cbi8qKlxuICogRG9lc24ndCBjbG9uZSBsZWFmIGl0ZW1zXG4gKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgY2xvbmVIaWVyYXJjaGljYWxBcnJheSA9IChhcnJheTogYW55W10sIGNoaWxkRGF0YUtleTogYW55KTogYW55W10gPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcbiAgICBpZiAoIWFycmF5KSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGFycmF5KSB7XG4gICAgICAgIGNvbnN0IGNsb25lZEl0ZW0gPSBjbG9uZVZhbHVlKGl0ZW0pO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtW2NoaWxkRGF0YUtleV0pKSB7XG4gICAgICAgICAgICBjbG9uZWRJdGVtW2NoaWxkRGF0YUtleV0gPSBjbG9uZUhpZXJhcmNoaWNhbEFycmF5KGNsb25lZEl0ZW1bY2hpbGREYXRhS2V5XSwgY2hpbGREYXRhS2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucHVzaChjbG9uZWRJdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCBwcm90b3R5cGUgZnJvbSBwcm92aWRlZCBzb3VyY2UgYW5kIGNvcGllc1xuICogYWxsIHByb3BlcnRpZXMgZGVzY3JpcHRvcnMgZnJvbSBwcm92aWRlZCBzb3VyY2VcbiAqIEBwYXJhbSBvYmogU291cmNlIHRvIGNvcHkgcHJvdG90eXBlIGFuZCBkZXNjcmlwdG9ycyBmcm9tXG4gKiBAcmV0dXJucyBOZXcgb2JqZWN0IHdpdGggY2xvbmVkIHByb3RvdHlwZSBhbmQgcHJvcGVydHkgZGVzY3JpcHRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvcHlEZXNjcmlwdG9ycyA9IChvYmopID0+IHtcbiAgICBpZiAob2JqKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuY3JlYXRlKFxuICAgICAgICAgICAgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaiksXG4gICAgICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvYmopXG4gICAgICAgICAgICApO1xuICAgIH1cbn1cblxuXG4vKipcbiAqIERlZXAgY2xvbmVzIGFsbCBmaXJzdCBsZXZlbCBrZXlzIG9mIE9iajIgYW5kIG1lcmdlcyB0aGVtIHRvIE9iajFcbiAqXG4gKiBAcGFyYW0gb2JqMSBPYmplY3QgdG8gbWVyZ2UgaW50b1xuICogQHBhcmFtIG9iajIgT2JqZWN0IHRvIG1lcmdlIGZyb21cbiAqIEByZXR1cm5zIE9iajEgd2l0aCBtZXJnZWQgY2xvbmVkIGtleXMgZnJvbSBPYmoyXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZU9iamVjdHMgPSAob2JqMTogYW55LCBvYmoyOiBhbnkpOiBhbnkgPT4gbWVyZ2VXaXRoKG9iajEsIG9iajIsIChvYmpWYWx1ZSwgc3JjVmFsdWUpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzcmNWYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIG9ialZhbHVlID0gc3JjVmFsdWU7XG4gICAgfVxufSk7XG5cbi8qKlxuICogQ3JlYXRlcyBkZWVwIGNsb25lIG9mIHByb3ZpZGVkIHZhbHVlLlxuICogU3VwcG9ydHMgcHJpbWl0aXZlIHZhbHVlcywgZGF0ZXMgYW5kIG9iamVjdHMuXG4gKiBJZiBwYXNzZWQgdmFsdWUgaXMgYXJyYXkgcmV0dXJucyBzaGFsbG93IGNvcHkgb2YgdGhlIGFycmF5LlxuICpcbiAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSB0byBjbG9uZVxuICogQHJldHVybnMgRGVlcCBjb3B5IG9mIHByb3ZpZGVkIHZhbHVlXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBjbG9uZVZhbHVlID0gKHZhbHVlOiBhbnkpOiBhbnkgPT4ge1xuICAgIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZS5nZXRUaW1lKCkpO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIFsuLi52YWx1ZV07XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTWFwIHx8IHZhbHVlIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHZhbHVlKSkge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBjbG9uZVZhbHVlKHZhbHVlW2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbn07XG5cbi8qKlxuICogUGFyc2UgcHJvdmlkZWQgaW5wdXQgdG8gRGF0ZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgaW5wdXQgdG8gcGFyc2VcbiAqIEByZXR1cm5zIERhdGUgaWYgcGFyc2Ugc3VjY2VlZCBvciBudWxsXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZURhdGUgPSAodmFsdWU6IGFueSk6IERhdGUgfCBudWxsID0+IHtcbiAgICAvLyBpZiB2YWx1ZSBpcyBJbnZhbGlkIERhdGUgcmV0dXJuIG51bGxcbiAgICBpZiAoaXNEYXRlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHZhbHVlLmdldFRpbWUoKSkgPyB2YWx1ZSA6IG51bGw7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZSA/IG5ldyBEYXRlKHZhbHVlKSA6IG51bGw7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gYXJyYXkgd2l0aCB1bmlxdWUgZGF0ZXMgb25seS5cbiAqXG4gKiBAcGFyYW0gY29sdW1uVmFsdWVzIGNvbGxlY3Rpb24gb2YgZGF0ZSB2YWx1ZXMgKG1pZ2h0IGJlIG51bWJlcnMgb3IgSVNPIDg2MDEgc3RyaW5ncylcbiAqIEByZXR1cm5zIGNvbGxlY3Rpb24gb2YgdW5pcXVlIGRhdGVzLlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgdW5pcXVlRGF0ZXMgPSAoY29sdW1uVmFsdWVzOiBhbnlbXSkgPT4gY29sdW1uVmFsdWVzLnJlZHVjZSgoYSwgYykgPT4ge1xuICAgIGlmICghYS5jYWNoZVtjLmxhYmVsXSkge1xuICAgICAgICBhLnJlc3VsdC5wdXNoKGMpO1xuICAgIH1cbiAgICBhLmNhY2hlW2MubGFiZWxdID0gdHJ1ZTtcbiAgICByZXR1cm4gYTtcbn0sIHsgcmVzdWx0OiBbXSwgY2FjaGU6IHt9IH0pLnJlc3VsdDtcblxuLyoqXG4gKiBDaGVja3MgaWYgcHJvdmlkZWQgdmFyaWFibGUgaXMgT2JqZWN0XG4gKlxuICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB0cnVlIGlmIHByb3ZpZGVkIHZhcmlhYmxlIGlzIE9iamVjdFxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgaXNPYmplY3QgPSAodmFsdWU6IGFueSk6IGJvb2xlYW4gPT4gISEodmFsdWUgJiYgdmFsdWUudG9TdHJpbmcoKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBwcm92aWRlZCB2YXJpYWJsZSBpcyBEYXRlXG4gKlxuICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB0cnVlIGlmIHByb3ZpZGVkIHZhcmlhYmxlIGlzIERhdGVcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzRGF0ZSA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRGF0ZSA9PiB2YWx1ZSBpbnN0YW5jZW9mIERhdGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSB0d28gcGFzc2VkIGFyZ3VtZW50cyBhcmUgZXF1YWxcbiAqIEN1cnJlbnRseSBzdXBwb3J0cyBkYXRlIG9iamVjdHNcbiAqXG4gKiBAcGFyYW0gb2JqMVxuICogQHBhcmFtIG9iajJcbiAqIEByZXR1cm5zOiBgYm9vbGVhbmBcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzRXF1YWwgPSAob2JqMSwgb2JqMik6IGJvb2xlYW4gPT4ge1xuICAgIGlmIChpc0RhdGUob2JqMSkgJiYgaXNEYXRlKG9iajIpKSB7XG4gICAgICAgIHJldHVybiBvYmoxLmdldFRpbWUoKSA9PT0gb2JqMi5nZXRUaW1lKCk7XG4gICAgfVxuICAgIHJldHVybiBvYmoxID09PSBvYmoyO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgcHJvdmlkZWQgdmFyaWFibGUgaXMgdGhlIHZhbHVlIE5hTlxuICpcbiAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBjaGVja1xuICogQHJldHVybnMgdHJ1ZSBpZiBwcm92aWRlZCB2YXJpYWJsZSBpcyBOYU5cbiAqIEBoaWRkZW5cbiAqL1xuIGV4cG9ydCBjb25zdCBpc05hTnZhbHVlID0gKHZhbHVlOiBhbnkpOiBib29sZWFuID0+IGlzTmFOKHZhbHVlKSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZyc7XG5cbi8qKlxuICogVXRpbGl0eSBzZXJ2aWNlIHRha2luZyBjYXJlIG9mIHZhcmlvdXMgdXRpbGl0eSBmdW5jdGlvbnMgc3VjaCBhc1xuICogZGV0ZWN0aW5nIGJyb3dzZXIgZmVhdHVyZXMsIGdlbmVyYWwgY3Jvc3MgYnJvd3NlciBET00gbWFuaXB1bGF0aW9uLCBldGMuXG4gKlxuICogQGhpZGRlbiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybVV0aWwge1xuICAgIHB1YmxpYyBpc0Jyb3dzZXI6IGJvb2xlYW4gPSBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xuICAgIHB1YmxpYyBpc0lPUyA9IHRoaXMuaXNCcm93c2VyICYmIC9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmICEoJ01TU3RyZWFtJyBpbiB3aW5kb3cpO1xuICAgIHB1YmxpYyBpc0ZpcmVmb3ggPSB0aGlzLmlzQnJvd3NlciAmJiAvRmlyZWZveFtcXC9cXHNdKFxcZCtcXC5cXGQrKS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICBwdWJsaWMgaXNFZGdlID0gdGhpcy5pc0Jyb3dzZXIgJiYgL0VkZ2VbXFwvXFxzXShcXGQrXFwuXFxkKykvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgcHVibGljIGlzQ2hyb21pdW0gPSB0aGlzLmlzQnJvd3NlciAmJiAoL0Nocm9tfGU/aXVtL2cudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSB8fFxuICAgICAgICAvR29vZ2xlIEluYy9nLnRlc3QobmF2aWdhdG9yLnZlbmRvcikpICYmICEvRWRnZS9nLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbiAgICBwdWJsaWMgS0VZTUFQID0gbWtlbnVtKHtcbiAgICAgICAgRU5URVI6ICdFbnRlcicsXG4gICAgICAgIFNQQUNFOiAnICcsXG4gICAgICAgIEVTQ0FQRTogJ0VzY2FwZScsXG4gICAgICAgIEFSUk9XX0RPV046ICdBcnJvd0Rvd24nLFxuICAgICAgICBBUlJPV19VUDogJ0Fycm93VXAnLFxuICAgICAgICBBUlJPV19MRUZUOiAnQXJyb3dMZWZ0JyxcbiAgICAgICAgQVJST1dfUklHSFQ6ICdBcnJvd1JpZ2h0JyxcbiAgICAgICAgRU5EOiAnRW5kJyxcbiAgICAgICAgSE9NRTogJ0hvbWUnLFxuICAgICAgICBQQUdFX0RPV046ICdQYWdlRG93bicsXG4gICAgICAgIFBBR0VfVVA6ICdQYWdlVXAnLFxuICAgICAgICBGMjogJ0YyJyxcbiAgICAgICAgVEFCOiAnVGFiJyxcbiAgICAgICAgU0VNSUNPTE9OOiAnOycsXG4gICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L2tleS9LZXlfVmFsdWVzI2VkaXRpbmdfa2V5c1xuICAgICAgICBERUxFVEU6ICdEZWxldGUnLFxuICAgICAgICBCQUNLU1BBQ0U6ICdCYWNrc3BhY2UnLFxuICAgICAgICBDT05UUk9MOiAnQ29udHJvbCcsXG4gICAgICAgIFg6ICd4JyxcbiAgICAgICAgWTogJ3knLFxuICAgICAgICBaOiAneidcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55KSB7IH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogUmV0dXJucyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIG5vZGUgY29udGVudCwgdXNpbmcgUmFuZ2VcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgKiBsZXQgY29sdW1uID0gdGhpcy5ncmlkLmNvbHVtbkxpc3QuZmlsdGVyKGMgPT4gYy5maWVsZCA9PT0gJ0lEJylbMF07XG4gICAgICpcbiAgICAgKiBsZXQgc2l6ZSA9IGdldE5vZGVTaXplVmlhUmFuZ2UocmFuZ2UsIGNvbHVtbi5jZWxsc1swXS5uYXRpdmVFbGVtZW50KTtcbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogVGhlIGxhc3QgcGFyYW1ldGVyIGlzIHVzZWZ1bCB3aGVuIHRoZSBzaXplIG9mIHRoZSBlbGVtZW50IHRvIG1lYXN1cmUgaXMgbW9kaWZpZWQgYnkgYVxuICAgICAqIHBhcmVudCBlbGVtZW50IHRoYXQgaGFzIGV4cGxpY2l0IHNpemUuIEluIHN1Y2ggY2FzZXMgdGhlIGNhbGN1bGF0ZWQgc2l6ZSBpcyBuZXZlciBsb3dlclxuICAgICAqIGFuZCB0aGUgZnVuY3Rpb24gbWF5IGluc3RlYWQgcmVtb3ZlIHRoZSBwYXJlbnQgc2l6ZSB3aGlsZSBtZWFzdXJpbmcgdG8gZ2V0IHRoZSBjb3JyZWN0IHZhbHVlLlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXROb2RlU2l6ZVZpYVJhbmdlKHJhbmdlOiBSYW5nZSwgbm9kZTogSFRNTEVsZW1lbnQsIHNpemVIb2xkaW5nTm9kZT86IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGxldCBvdmVyZmxvdyA9IG51bGw7XG4gICAgICAgIGxldCBub2RlU3R5bGVzO1xuXG4gICAgICAgIGlmICghdGhpcy5pc0ZpcmVmb3gpIHtcbiAgICAgICAgICAgIG92ZXJmbG93ID0gbm9kZS5zdHlsZS5vdmVyZmxvdztcbiAgICAgICAgICAgIC8vIHdlIG5lZWQgdGhhdCBoYWNrIC0gb3RoZXJ3aXNlIGNvbnRlbnQgd29uJ3QgYmUgbWVhc3VyZWQgY29ycmVjdGx5IGluIElFL0VkZ2VcbiAgICAgICAgICAgIG5vZGUuc3R5bGUub3ZlcmZsb3cgPSAndmlzaWJsZSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2l6ZUhvbGRpbmdOb2RlKSB7XG4gICAgICAgICAgICBjb25zdCBzdHlsZSA9IHNpemVIb2xkaW5nTm9kZS5zdHlsZTtcbiAgICAgICAgICAgIG5vZGVTdHlsZXMgPSBbc3R5bGUud2lkdGgsIHN0eWxlLm1pbldpZHRoLCBzdHlsZS5mbGV4QmFzaXNdO1xuICAgICAgICAgICAgc3R5bGUud2lkdGggPSAnJztcbiAgICAgICAgICAgIHN0eWxlLm1pbldpZHRoID0gJyc7XG4gICAgICAgICAgICBzdHlsZS5mbGV4QmFzaXMgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhub2RlKTtcbiAgICAgICAgY29uc3Qgd2lkdGggPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcblxuICAgICAgICBpZiAoIXRoaXMuaXNGaXJlZm94KSB7XG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRoYXQgaGFjayAtIG90aGVyd2lzZSBjb250ZW50IHdvbid0IGJlIG1lYXN1cmVkIGNvcnJlY3RseSBpbiBJRS9FZGdlXG4gICAgICAgICAgICBub2RlLnN0eWxlLm92ZXJmbG93ID0gb3ZlcmZsb3c7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2l6ZUhvbGRpbmdOb2RlKSB7XG4gICAgICAgICAgICBzaXplSG9sZGluZ05vZGUuc3R5bGUud2lkdGggPSBub2RlU3R5bGVzWzBdO1xuICAgICAgICAgICAgc2l6ZUhvbGRpbmdOb2RlLnN0eWxlLm1pbldpZHRoID0gbm9kZVN0eWxlc1sxXTtcbiAgICAgICAgICAgIHNpemVIb2xkaW5nTm9kZS5zdHlsZS5mbGV4QmFzaXMgPSBub2RlU3R5bGVzWzJdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHdpZHRoO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IGtleWJvYXJkIGV2ZW50IGlzIGFuIGFjdGl2YXRpb24ga2V5IChFbnRlci9TcGFjZSBiYXIpXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgUGxhdGZvcm1VdGlsXG4gICAgICovXG4gICAgcHVibGljIGlzQWN0aXZhdGlvbktleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQua2V5ID09PSB0aGlzLktFWU1BUC5FTlRFUiB8fCBldmVudC5rZXkgPT09IHRoaXMuS0VZTUFQLlNQQUNFO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBrZXlib2FyZCBldmVudCBpcyBhIGNvbWJpbmF0aW9uIHRoYXQgY2xvc2VzIHRoZSBmaWx0ZXJpbmcgVUkgb2YgdGhlIGdyaWQuIChFc2NhcGUvQ3RybCtTaGlmdCtMKVxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIEBwYXJhbSBldmVudFxuICAgICAqIEBtZW1iZXJvZiBQbGF0Zm9ybVV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNGaWx0ZXJpbmdLZXlDb21ibyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQua2V5ID09PSB0aGlzLktFWU1BUC5FU0NBUEUgfHwgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdsJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNMZWZ0Q2xpY2soZXZlbnQ6IFBvaW50ZXJFdmVudCB8IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LmJ1dHRvbiA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc05hdmlnYXRpb25LZXkoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuS0VZTUFQLkhPTUUsIHRoaXMuS0VZTUFQLkVORCwgdGhpcy5LRVlNQVAuU1BBQ0UsXG4gICAgICAgICAgICB0aGlzLktFWU1BUC5BUlJPV19ET1dOLCB0aGlzLktFWU1BUC5BUlJPV19MRUZULCB0aGlzLktFWU1BUC5BUlJPV19SSUdIVCwgdGhpcy5LRVlNQVAuQVJST1dfVVBcbiAgICAgICAgXS5pbmNsdWRlcyhrZXkpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBmbGF0dGVuID0gKGFycjogYW55W10pID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gW107XG5cbiAgICBhcnIuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGVsKTtcbiAgICAgICAgaWYgKGVsLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmlzQXJyYXkoZWwuY2hpbGRyZW4pID8gZWwuY2hpbGRyZW4gOiBlbC5jaGlsZHJlbi50b0FycmF5KCk7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGZsYXR0ZW4oY2hpbGRyZW4pKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbmNlbGFibGVFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGNhbmNlbCB0aGUgZXZlbnQuXG4gICAgICovXG4gICAgY2FuY2VsOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyByZWZlcmVuY2UgdG8gdGhlIG93bmVyIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBvd25lcj86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyBleHRlbmRzIENhbmNlbGFibGVFdmVudEFyZ3Mge1xuICAgIC8qKiBCcm93c2VyIGV2ZW50ICovXG4gICAgZXZlbnQ/OiBFdmVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIHsgfVxuXG5leHBvcnQgaW50ZXJmYWNlIElCYXNlQ2FuY2VsYWJsZUV2ZW50QXJncyBleHRlbmRzIENhbmNlbGFibGVFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIHsgfVxuXG5leHBvcnQgY29uc3QgSE9SSVpPTlRBTF9OQVZfS0VZUyA9IG5ldyBTZXQoWydhcnJvd2xlZnQnLCAnbGVmdCcsICdhcnJvd3JpZ2h0JywgJ3JpZ2h0JywgJ2hvbWUnLCAnZW5kJ10pO1xuXG5leHBvcnQgY29uc3QgTkFWSUdBVElPTl9LRVlTID0gbmV3IFNldChbXG4gICAgJ2Rvd24nLFxuICAgICd1cCcsXG4gICAgJ2xlZnQnLFxuICAgICdyaWdodCcsXG4gICAgJ2Fycm93ZG93bicsXG4gICAgJ2Fycm93dXAnLFxuICAgICdhcnJvd2xlZnQnLFxuICAgICdhcnJvd3JpZ2h0JyxcbiAgICAnaG9tZScsXG4gICAgJ2VuZCcsXG4gICAgJ3NwYWNlJyxcbiAgICAnc3BhY2ViYXInLFxuICAgICcgJ1xuXSk7XG5leHBvcnQgY29uc3QgQUNDT1JESU9OX05BVklHQVRJT05fS0VZUyA9IG5ldyBTZXQoJ3VwIGRvd24gYXJyb3d1cCBhcnJvd2Rvd24gaG9tZSBlbmQnLnNwbGl0KCcgJykpO1xuZXhwb3J0IGNvbnN0IFJPV19FWFBBTkRfS0VZUyA9IG5ldyBTZXQoJ3JpZ2h0IGRvd24gYXJyb3dyaWdodCBhcnJvd2Rvd24nLnNwbGl0KCcgJykpO1xuZXhwb3J0IGNvbnN0IFJPV19DT0xMQVBTRV9LRVlTID0gbmV3IFNldCgnbGVmdCB1cCBhcnJvd2xlZnQgYXJyb3d1cCcuc3BsaXQoJyAnKSk7XG5leHBvcnQgY29uc3QgUk9XX0FERF9LRVlTID0gbmV3IFNldChbJysnLCAnYWRkJywgJ+KJoCcsICfCsScsICc9J10pO1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9LRVlTID0gbmV3IFNldChbLi4uQXJyYXkuZnJvbShOQVZJR0FUSU9OX0tFWVMpLFxuLi4uQXJyYXkuZnJvbShST1dfQUREX0tFWVMpLCAnZW50ZXInLCAnZjInLCAnZXNjYXBlJywgJ2VzYycsICdwYWdlZG93bicsICdwYWdldXAnXSk7XG5leHBvcnQgY29uc3QgSEVBREVSX0tFWVMgPSBuZXcgU2V0KFsuLi5BcnJheS5mcm9tKE5BVklHQVRJT05fS0VZUyksICdlc2NhcGUnLCAnZXNjJywgJ2wnLFxuICAgIC8qKiBUaGlzIHN5bWJvbCBjb3JyZXNwb25kcyB0byB0aGUgQWx0ICsgTCBjb21iaW5hdGlvbiB1bmRlciBNQUMuICovXG4gICAgJ8KsJ10pO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICpcbiAqIENyZWF0ZXMgYSBuZXcgUmVzaXplT2JzZXJ2ZXIgb24gYHRhcmdldGAgYW5kIHJldHVybnMgaXQgYXMgYW4gT2JzZXJ2YWJsZS5cbiAqIFJ1biB0aGUgcmVzaXplT2JzZXJ2YWJsZSBvdXRzaWRlIGFuZ3VsYXIgem9uZSwgYmVjYXVzZSBpdCBwYXRjaGVzIHRoZSBNdXRhdGlvbk9ic2VydmVyIHdoaWNoIGNhdXNlcyBhbiBpbmZpbml0ZSBsb29wLlxuICogUmVsYXRlZCBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMzE3MTJcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc2l6ZU9ic2VydmFibGUgPSAodGFyZ2V0OiBIVE1MRWxlbWVudCk6IE9ic2VydmFibGU8UmVzaXplT2JzZXJ2ZXJFbnRyeVtdPiA9PiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyAoZ2V0UmVzaXplT2JzZXJ2ZXIoKSkoKGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSkgPT4ge1xuICAgICAgICBvYnNlcnZlci5uZXh0KGVudHJpZXMpO1xuICAgIH0pO1xuICAgIGluc3RhbmNlLm9ic2VydmUodGFyZ2V0KTtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9ICgpID0+IGluc3RhbmNlLmRpc2Nvbm5lY3QoKTtcbiAgICByZXR1cm4gdW5zdWJzY3JpYmU7XG59KTtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBDb21wYXJlcyB0d28gbWFwcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBhcmVNYXBzID0gKG1hcDE6IE1hcDxhbnksIGFueT4sIG1hcDI6IE1hcDxhbnksIGFueT4pOiBib29sZWFuID0+IHtcbiAgICBpZiAoIW1hcDIpIHtcbiAgICAgICAgcmV0dXJuICFtYXAxID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cbiAgICBpZiAobWFwMS5zaXplICE9PSBtYXAyLnNpemUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgbWF0Y2ggPSB0cnVlO1xuICAgIGNvbnN0IGtleXMgPSBBcnJheS5mcm9tKG1hcDIua2V5cygpKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGlmIChtYXAxLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICBtYXRjaCA9IG1hcDEuZ2V0KGtleSkgPT09IG1hcDIuZ2V0KGtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXRjaCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRjaDtcbn07XG5cbi8qKlxuICpcbiAqIEdpdmVuIGEgcHJvcGVydHkgYWNjZXNzIHBhdGggaW4gdGhlIGZvcm1hdCBgeC55LnpgIHJlc29sdmVzIGFuZCByZXR1cm5zXG4gKiB0aGUgdmFsdWUgb2YgdGhlIGB6YCBwcm9wZXJ0eSBpbiB0aGUgcGFzc2VkIG9iamVjdC5cbiAqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVOZXN0ZWRQYXRoID0gKG9iajogYW55LCBwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBwYXJ0cyA9IHBhdGg/LnNwbGl0KCcuJykgPz8gW107XG4gICAgbGV0IGN1cnJlbnQgPSBvYmpbcGFydHMuc2hpZnQoKV07XG5cbiAgICBwYXJ0cy5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnRbcHJvcF07XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjdXJyZW50O1xufTtcblxuLyoqXG4gKlxuICogR2l2ZW4gYSBwcm9wZXJ0eSBhY2Nlc3MgcGF0aCBpbiB0aGUgZm9ybWF0IGB4LnkuemAgYW5kIGEgdmFsdWVcbiAqIHRoaXMgZnVuY3Rpb25zIGJ1aWxkcyBhbmQgcmV0dXJucyBhbiBvYmplY3QgZm9sbG93aW5nIHRoZSBhY2Nlc3MgcGF0aC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc29sZS5sb2coJ3gueS56LicsIDQyKTtcbiAqID4+IHsgeDogeyB5OiB7IHo6IDQyIH0gfSB9XG4gKiBgYGBcbiAqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHJldmVyc2VNYXBwZXIgPSAocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG4gICAgY29uc3Qgb2JqID0ge307XG4gICAgY29uc3QgcGFydHMgPSBwYXRoPy5zcGxpdCgnLicpID8/IFtdO1xuXG4gICAgbGV0IF9wcm9wID0gcGFydHMuc2hpZnQoKTtcbiAgICBsZXQgbWFwcGluZzogYW55O1xuXG4gICAgLy8gSW5pdGlhbCBiaW5kaW5nIGZvciBmaXJzdCBsZXZlbCBiaW5kaW5nc1xuICAgIG9ialtfcHJvcF0gPSB2YWx1ZTtcbiAgICBtYXBwaW5nID0gb2JqO1xuXG4gICAgcGFydHMuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgLy8gU3RhcnQgYnVpbGRpbmcgdGhlIGhpZXJhcmNoeVxuICAgICAgICBtYXBwaW5nW19wcm9wXSA9IHt9O1xuICAgICAgICAvLyBHbyBkb3duIGEgbGV2ZWxcbiAgICAgICAgbWFwcGluZyA9IG1hcHBpbmdbX3Byb3BdO1xuICAgICAgICAvLyBCaW5kIHRoZSB2YWx1ZSBhbmQgbW92ZSB0aGUga2V5XG4gICAgICAgIG1hcHBpbmdbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgX3Byb3AgPSBwcm9wO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iajtcbn07XG5cbmV4cG9ydCBjb25zdCB5aWVsZGluZ0xvb3AgPSAoY291bnQ6IG51bWJlciwgY2h1bmtTaXplOiBudW1iZXIsIGNhbGxiYWNrOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZCwgZG9uZTogKCkgPT4gdm9pZCkgPT4ge1xuICAgIGxldCBpID0gMDtcbiAgICBjb25zdCBjaHVuayA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgZW5kID0gTWF0aC5taW4oaSArIGNodW5rU2l6ZSwgY291bnQpO1xuICAgICAgICBmb3IgKDsgaSA8IGVuZDsgKytpKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA8IGNvdW50KSB7XG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUoY2h1bmspO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjaHVuaygpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQ29uc3RydWN0b3IgPSAocmVmOiBhbnkpID0+IHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicgJiYgQm9vbGVhbihyZWYucHJvdG90eXBlKSAmJiBCb29sZWFuKHJlZi5wcm90b3R5cGUuY29uc3RydWN0b3IpO1xuXG5leHBvcnQgY29uc3QgcmV2ZXJzZUFuaW1hdGlvblJlc29sdmVyID0gKGFuaW1hdGlvbjogQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGEpOiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSA9PlxuICAgIG9wcG9zaXRlQW5pbWF0aW9uLmdldChhbmltYXRpb24pID8/IGFuaW1hdGlvbjtcblxuZXhwb3J0IGNvbnN0IGlzSG9yaXpvbnRhbEFuaW1hdGlvbiA9IChhbmltYXRpb246IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhKTogYm9vbGVhbiA9PiBob3Jpem9udGFsQW5pbWF0aW9ucy5pbmNsdWRlcyhhbmltYXRpb24pO1xuXG5leHBvcnQgY29uc3QgaXNWZXJ0aWNhbEFuaW1hdGlvbiA9IChhbmltYXRpb246IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhKTogYm9vbGVhbiA9PiB2ZXJ0aWNhbEFuaW1hdGlvbnMuaW5jbHVkZXMoYW5pbWF0aW9uKTtcblxuY29uc3Qgb3Bwb3NpdGVBbmltYXRpb246IE1hcDxBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSwgQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGE+ID0gbmV3IE1hcChbXG4gICAgW2ZhZGVJbiwgZmFkZUluXSxcbiAgICBbZmFkZU91dCwgZmFkZU91dF0sXG4gICAgW2ZsaXBUb3AsIGZsaXBCb3R0b21dLFxuICAgIFtmbGlwQm90dG9tLCBmbGlwVG9wXSxcbiAgICBbZmxpcFJpZ2h0LCBmbGlwTGVmdF0sXG4gICAgW2ZsaXBMZWZ0LCBmbGlwUmlnaHRdLFxuICAgIFtmbGlwSG9yRndkLCBmbGlwSG9yQmNrXSxcbiAgICBbZmxpcEhvckJjaywgZmxpcEhvckZ3ZF0sXG4gICAgW2ZsaXBWZXJGd2QsIGZsaXBWZXJCY2tdLFxuICAgIFtmbGlwVmVyQmNrLCBmbGlwVmVyRndkXSxcbiAgICBbZ3Jvd1ZlckluLCBncm93VmVySW5dLFxuICAgIFtncm93VmVyT3V0LCBncm93VmVyT3V0XSxcbiAgICBbaGVhcnRiZWF0LCBoZWFydGJlYXRdLFxuICAgIFtwdWxzYXRlRndkLCBwdWxzYXRlQmNrXSxcbiAgICBbcHVsc2F0ZUJjaywgcHVsc2F0ZUZ3ZF0sXG4gICAgW2JsaW5rLCBibGlua10sXG4gICAgW3NoYWtlSG9yLCBzaGFrZUhvcl0sXG4gICAgW3NoYWtlVmVyLCBzaGFrZVZlcl0sXG4gICAgW3NoYWtlVG9wLCBzaGFrZVRvcF0sXG4gICAgW3NoYWtlQm90dG9tLCBzaGFrZUJvdHRvbV0sXG4gICAgW3NoYWtlUmlnaHQsIHNoYWtlUmlnaHRdLFxuICAgIFtzaGFrZUxlZnQsIHNoYWtlTGVmdF0sXG4gICAgW3NoYWtlQ2VudGVyLCBzaGFrZUNlbnRlcl0sXG4gICAgW3NoYWtlVHIsIHNoYWtlVHJdLFxuICAgIFtzaGFrZUJyLCBzaGFrZUJyXSxcbiAgICBbc2hha2VCbCwgc2hha2VCbF0sXG4gICAgW3NoYWtlVGwsIHNoYWtlVGxdLFxuICAgIFtyb3RhdGVJbkNlbnRlciwgcm90YXRlSW5DZW50ZXJdLFxuICAgIFtyb3RhdGVPdXRDZW50ZXIsIHJvdGF0ZU91dENlbnRlcl0sXG4gICAgW3JvdGF0ZUluVG9wLCByb3RhdGVJbkJvdHRvbV0sXG4gICAgW3JvdGF0ZU91dFRvcCwgcm90YXRlT3V0Qm90dG9tXSxcbiAgICBbcm90YXRlSW5SaWdodCwgcm90YXRlSW5MZWZ0XSxcbiAgICBbcm90YXRlT3V0UmlnaHQsIHJvdGF0ZU91dExlZnRdLFxuICAgIFtyb3RhdGVJbkxlZnQsIHJvdGF0ZUluUmlnaHRdLFxuICAgIFtyb3RhdGVPdXRMZWZ0LCByb3RhdGVPdXRSaWdodF0sXG4gICAgW3JvdGF0ZUluQm90dG9tLCByb3RhdGVJblRvcF0sXG4gICAgW3JvdGF0ZU91dEJvdHRvbSwgcm90YXRlT3V0VG9wXSxcbiAgICBbcm90YXRlSW5Uciwgcm90YXRlSW5CbF0sXG4gICAgW3JvdGF0ZU91dFRyLCByb3RhdGVPdXRCbF0sXG4gICAgW3JvdGF0ZUluQnIsIHJvdGF0ZUluVGxdLFxuICAgIFtyb3RhdGVPdXRCciwgcm90YXRlT3V0VGxdLFxuICAgIFtyb3RhdGVJbkJsLCByb3RhdGVJblRyXSxcbiAgICBbcm90YXRlT3V0QmwsIHJvdGF0ZU91dFRyXSxcbiAgICBbcm90YXRlSW5UbCwgcm90YXRlSW5Ccl0sXG4gICAgW3JvdGF0ZU91dFRsLCByb3RhdGVPdXRCcl0sXG4gICAgW3JvdGF0ZUluRGlhZ29uYWwxLCByb3RhdGVJbkRpYWdvbmFsMV0sXG4gICAgW3JvdGF0ZU91dERpYWdvbmFsMSwgcm90YXRlT3V0RGlhZ29uYWwxXSxcbiAgICBbcm90YXRlSW5EaWFnb25hbDIsIHJvdGF0ZUluRGlhZ29uYWwyXSxcbiAgICBbcm90YXRlT3V0RGlhZ29uYWwyLCByb3RhdGVPdXREaWFnb25hbDJdLFxuICAgIFtyb3RhdGVJbkhvciwgcm90YXRlSW5Ib3JdLFxuICAgIFtyb3RhdGVPdXRIb3IsIHJvdGF0ZU91dEhvcl0sXG4gICAgW3JvdGF0ZUluVmVyLCByb3RhdGVJblZlcl0sXG4gICAgW3JvdGF0ZU91dFZlciwgcm90YXRlT3V0VmVyXSxcbiAgICBbc2NhbGVJblRvcCwgc2NhbGVJbkJvdHRvbV0sXG4gICAgW3NjYWxlT3V0VG9wLCBzY2FsZU91dEJvdHRvbV0sXG4gICAgW3NjYWxlSW5SaWdodCwgc2NhbGVJbkxlZnRdLFxuICAgIFtzY2FsZU91dFJpZ2h0LCBzY2FsZU91dExlZnRdLFxuICAgIFtzY2FsZUluQm90dG9tLCBzY2FsZUluVG9wXSxcbiAgICBbc2NhbGVPdXRCb3R0b20sIHNjYWxlT3V0VG9wXSxcbiAgICBbc2NhbGVJbkxlZnQsIHNjYWxlSW5SaWdodF0sXG4gICAgW3NjYWxlT3V0TGVmdCwgc2NhbGVPdXRSaWdodF0sXG4gICAgW3NjYWxlSW5DZW50ZXIsIHNjYWxlSW5DZW50ZXJdLFxuICAgIFtzY2FsZU91dENlbnRlciwgc2NhbGVPdXRDZW50ZXJdLFxuICAgIFtzY2FsZUluVHIsIHNjYWxlSW5CbF0sXG4gICAgW3NjYWxlT3V0VHIsIHNjYWxlT3V0QmxdLFxuICAgIFtzY2FsZUluQnIsIHNjYWxlSW5UbF0sXG4gICAgW3NjYWxlT3V0QnIsIHNjYWxlT3V0VGxdLFxuICAgIFtzY2FsZUluQmwsIHNjYWxlSW5Ucl0sXG4gICAgW3NjYWxlT3V0QmwsIHNjYWxlT3V0VHJdLFxuICAgIFtzY2FsZUluVGwsIHNjYWxlSW5Ccl0sXG4gICAgW3NjYWxlT3V0VGwsIHNjYWxlT3V0QnJdLFxuICAgIFtzY2FsZUluVmVyVG9wLCBzY2FsZUluVmVyQm90dG9tXSxcbiAgICBbc2NhbGVPdXRWZXJUb3AsIHNjYWxlT3V0VmVyQm90dG9tXSxcbiAgICBbc2NhbGVJblZlckJvdHRvbSwgc2NhbGVJblZlclRvcF0sXG4gICAgW3NjYWxlT3V0VmVyQm90dG9tLCBzY2FsZU91dFZlclRvcF0sXG4gICAgW3NjYWxlSW5WZXJDZW50ZXIsIHNjYWxlSW5WZXJDZW50ZXJdLFxuICAgIFtzY2FsZU91dFZlckNlbnRlciwgc2NhbGVPdXRWZXJDZW50ZXJdLFxuICAgIFtzY2FsZUluSG9yQ2VudGVyLCBzY2FsZUluSG9yQ2VudGVyXSxcbiAgICBbc2NhbGVPdXRIb3JDZW50ZXIsIHNjYWxlT3V0SG9yQ2VudGVyXSxcbiAgICBbc2NhbGVJbkhvckxlZnQsIHNjYWxlSW5Ib3JSaWdodF0sXG4gICAgW3NjYWxlT3V0SG9yTGVmdCwgc2NhbGVPdXRIb3JSaWdodF0sXG4gICAgW3NjYWxlSW5Ib3JSaWdodCwgc2NhbGVJbkhvckxlZnRdLFxuICAgIFtzY2FsZU91dEhvclJpZ2h0LCBzY2FsZU91dEhvckxlZnRdLFxuICAgIFtzbGlkZUluVG9wLCBzbGlkZUluQm90dG9tXSxcbiAgICBbc2xpZGVPdXRUb3AsIHNsaWRlT3V0Qm90dG9tXSxcbiAgICBbc2xpZGVJblJpZ2h0LCBzbGlkZUluTGVmdF0sXG4gICAgW3NsaWRlT3V0UmlnaHQsIHNsaWRlT3V0TGVmdF0sXG4gICAgW3NsaWRlSW5Cb3R0b20sIHNsaWRlSW5Ub3BdLFxuICAgIFtzbGlkZU91dEJvdHRvbSwgc2xpZGVPdXRUb3BdLFxuICAgIFtzbGlkZUluTGVmdCwgc2xpZGVJblJpZ2h0XSxcbiAgICBbc2xpZGVPdXRMZWZ0LCBzbGlkZU91dFJpZ2h0XSxcbiAgICBbc2xpZGVJblRyLCBzbGlkZUluQmxdLFxuICAgIFtzbGlkZU91dFRyLCBzbGlkZU91dEJsXSxcbiAgICBbc2xpZGVJbkJyLCBzbGlkZUluVGxdLFxuICAgIFtzbGlkZU91dEJyLCBzbGlkZU91dFRsXSxcbiAgICBbc2xpZGVJbkJsLCBzbGlkZUluVHJdLFxuICAgIFtzbGlkZU91dEJsLCBzbGlkZU91dFRyXSxcbiAgICBbc2xpZGVJblRsLCBzbGlkZUluQnJdLFxuICAgIFtzbGlkZU91dFRsLCBzbGlkZU91dEJyXSxcbiAgICBbc3dpbmdJblRvcEZ3ZCwgc3dpbmdJbkJvdHRvbUZ3ZF0sXG4gICAgW3N3aW5nT3V0VG9wRndkLCBzd2luZ091dEJvdHRvbUZ3ZF0sXG4gICAgW3N3aW5nSW5SaWdodEZ3ZCwgc3dpbmdJbkxlZnRGd2RdLFxuICAgIFtzd2luZ091dFJpZ2h0RndkLCBzd2luZ091dExlZnR0RndkXSxcbiAgICBbc3dpbmdJbkxlZnRGd2QsIHN3aW5nSW5SaWdodEZ3ZF0sXG4gICAgW3N3aW5nT3V0TGVmdHRGd2QsIHN3aW5nT3V0UmlnaHRGd2RdLFxuICAgIFtzd2luZ0luQm90dG9tRndkLCBzd2luZ0luVG9wRndkXSxcbiAgICBbc3dpbmdPdXRCb3R0b21Gd2QsIHN3aW5nT3V0VG9wRndkXSxcbiAgICBbc3dpbmdJblRvcEJjaywgc3dpbmdJbkJvdHRvbUJja10sXG4gICAgW3N3aW5nT3V0VG9wQmNrLCBzd2luZ091dEJvdHRvbUJja10sXG4gICAgW3N3aW5nSW5SaWdodEJjaywgc3dpbmdJbkxlZnRCY2tdLFxuICAgIFtzd2luZ091dFJpZ2h0QmNrLCBzd2luZ091dExlZnRCY2tdLFxuICAgIFtzd2luZ0luQm90dG9tQmNrLCBzd2luZ0luVG9wQmNrXSxcbiAgICBbc3dpbmdPdXRCb3R0b21CY2ssIHN3aW5nT3V0VG9wQmNrXSxcbiAgICBbc3dpbmdJbkxlZnRCY2ssIHN3aW5nSW5SaWdodEJja10sXG4gICAgW3N3aW5nT3V0TGVmdEJjaywgc3dpbmdPdXRSaWdodEJja10sXG5dKTtcblxuY29uc3QgaG9yaXpvbnRhbEFuaW1hdGlvbnM6IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhW10gPSBbXG4gICAgZmxpcFJpZ2h0LFxuICAgIGZsaXBMZWZ0LFxuICAgIGZsaXBWZXJGd2QsXG4gICAgZmxpcFZlckJjayxcbiAgICByb3RhdGVJblJpZ2h0LFxuICAgIHJvdGF0ZU91dFJpZ2h0LFxuICAgIHJvdGF0ZUluTGVmdCxcbiAgICByb3RhdGVPdXRMZWZ0LFxuICAgIHJvdGF0ZUluVHIsXG4gICAgcm90YXRlT3V0VHIsXG4gICAgcm90YXRlSW5CcixcbiAgICByb3RhdGVPdXRCcixcbiAgICByb3RhdGVJbkJsLFxuICAgIHJvdGF0ZU91dEJsLFxuICAgIHJvdGF0ZUluVGwsXG4gICAgcm90YXRlT3V0VGwsXG4gICAgc2NhbGVJblJpZ2h0LFxuICAgIHNjYWxlT3V0UmlnaHQsXG4gICAgc2NhbGVJbkxlZnQsXG4gICAgc2NhbGVPdXRMZWZ0LFxuICAgIHNjYWxlSW5UcixcbiAgICBzY2FsZU91dFRyLFxuICAgIHNjYWxlSW5CcixcbiAgICBzY2FsZU91dEJyLFxuICAgIHNjYWxlSW5CbCxcbiAgICBzY2FsZU91dEJsLFxuICAgIHNjYWxlSW5UbCxcbiAgICBzY2FsZU91dFRsLFxuICAgIHNjYWxlSW5Ib3JMZWZ0LFxuICAgIHNjYWxlT3V0SG9yTGVmdCxcbiAgICBzY2FsZUluSG9yUmlnaHQsXG4gICAgc2NhbGVPdXRIb3JSaWdodCxcbiAgICBzbGlkZUluUmlnaHQsXG4gICAgc2xpZGVPdXRSaWdodCxcbiAgICBzbGlkZUluTGVmdCxcbiAgICBzbGlkZU91dExlZnQsXG4gICAgc2xpZGVJblRyLFxuICAgIHNsaWRlT3V0VHIsXG4gICAgc2xpZGVJbkJyLFxuICAgIHNsaWRlT3V0QnIsXG4gICAgc2xpZGVJbkJsLFxuICAgIHNsaWRlT3V0QmwsXG4gICAgc2xpZGVJblRsLFxuICAgIHNsaWRlT3V0VGwsXG4gICAgc3dpbmdJblJpZ2h0RndkLFxuICAgIHN3aW5nT3V0UmlnaHRGd2QsXG4gICAgc3dpbmdJbkxlZnRGd2QsXG4gICAgc3dpbmdPdXRMZWZ0dEZ3ZCxcbiAgICBzd2luZ0luUmlnaHRCY2ssXG4gICAgc3dpbmdPdXRSaWdodEJjayxcbiAgICBzd2luZ0luTGVmdEJjayxcbiAgICBzd2luZ091dExlZnRCY2ssXG5dO1xuY29uc3QgdmVydGljYWxBbmltYXRpb25zOiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YVtdID0gW1xuICAgIGZsaXBUb3AsXG4gICAgZmxpcEJvdHRvbSxcbiAgICBmbGlwSG9yRndkLFxuICAgIGZsaXBIb3JCY2ssXG4gICAgZ3Jvd1ZlckluLFxuICAgIGdyb3dWZXJPdXQsXG4gICAgcm90YXRlSW5Ub3AsXG4gICAgcm90YXRlT3V0VG9wLFxuICAgIHJvdGF0ZUluQm90dG9tLFxuICAgIHJvdGF0ZU91dEJvdHRvbSxcbiAgICByb3RhdGVJblRyLFxuICAgIHJvdGF0ZU91dFRyLFxuICAgIHJvdGF0ZUluQnIsXG4gICAgcm90YXRlT3V0QnIsXG4gICAgcm90YXRlSW5CbCxcbiAgICByb3RhdGVPdXRCbCxcbiAgICByb3RhdGVJblRsLFxuICAgIHJvdGF0ZU91dFRsLFxuICAgIHNjYWxlSW5Ub3AsXG4gICAgc2NhbGVPdXRUb3AsXG4gICAgc2NhbGVJbkJvdHRvbSxcbiAgICBzY2FsZU91dEJvdHRvbSxcbiAgICBzY2FsZUluVHIsXG4gICAgc2NhbGVPdXRUcixcbiAgICBzY2FsZUluQnIsXG4gICAgc2NhbGVPdXRCcixcbiAgICBzY2FsZUluQmwsXG4gICAgc2NhbGVPdXRCbCxcbiAgICBzY2FsZUluVGwsXG4gICAgc2NhbGVPdXRUbCxcbiAgICBzY2FsZUluVmVyVG9wLFxuICAgIHNjYWxlT3V0VmVyVG9wLFxuICAgIHNjYWxlSW5WZXJCb3R0b20sXG4gICAgc2NhbGVPdXRWZXJCb3R0b20sXG4gICAgc2xpZGVJblRvcCxcbiAgICBzbGlkZU91dFRvcCxcbiAgICBzbGlkZUluQm90dG9tLFxuICAgIHNsaWRlT3V0Qm90dG9tLFxuICAgIHNsaWRlSW5UcixcbiAgICBzbGlkZU91dFRyLFxuICAgIHNsaWRlSW5CcixcbiAgICBzbGlkZU91dEJyLFxuICAgIHNsaWRlSW5CbCxcbiAgICBzbGlkZU91dEJsLFxuICAgIHNsaWRlSW5UbCxcbiAgICBzbGlkZU91dFRsLFxuICAgIHN3aW5nSW5Ub3BGd2QsXG4gICAgc3dpbmdPdXRUb3BGd2QsXG4gICAgc3dpbmdJbkJvdHRvbUZ3ZCxcbiAgICBzd2luZ091dEJvdHRvbUZ3ZCxcbiAgICBzd2luZ0luVG9wQmNrLFxuICAgIHN3aW5nT3V0VG9wQmNrLFxuICAgIHN3aW5nSW5Cb3R0b21CY2ssXG4gICAgc3dpbmdPdXRCb3R0b21CY2ssXG5dO1xuXG5cbi8qKlxuICogU2ltaWxhciB0byBBbmd1bGFyJ3MgZm9ybWF0RGF0ZS4gSG93ZXZlciBpdCB3aWxsIG5vdCB0aHJvdyBvbiBgdW5kZWZpbmVkIHwgbnVsbCB8ICcnYCBpbnN0ZWFkXG4gKiBjb2FsZXNjaW5nIHRvIGFuIGVtcHR5IHN0cmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IGZvcm1hdERhdGUgPSAodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IERhdGUsIGZvcm1hdDogc3RyaW5nLCBsb2NhbGU6IHN0cmluZywgdGltZXpvbmU/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBfZm9ybWF0RGF0ZSh2YWx1ZSwgZm9ybWF0LCBsb2NhbGUsIHRpbWV6b25lKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9IG5ldyBDdXJyZW5jeVBpcGUodW5kZWZpbmVkKS50cmFuc2Zvcm07XG4iXX0=
|
|
698
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY29yZS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsSUFBSSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFDSCxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFDeEYsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFDNUYsY0FBYyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUM3RixZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQzFGLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUNyRixZQUFZLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFDbkYsWUFBWSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFDbEYsY0FBYyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFB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LGVBQWU7SUFDZixVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsVUFBVTtJQUNWLFdBQVc7SUFDWCxVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsYUFBYTtJQUNiLGNBQWM7SUFDZCxTQUFTO0lBQ1QsVUFBVTtJQUNWLFNBQVM7SUFDVCxVQUFVO0lBQ1YsU0FBUztJQUNULFVBQVU7SUFDVixTQUFTO0lBQ1QsVUFBVTtJQUNWLGFBQWE7SUFDYixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1YsV0FBVztJQUNYLGFBQWE7SUFDYixjQUFjO0lBQ2QsU0FBUztJQUNULFVBQVU7SUFDVixTQUFTO0lBQ1QsVUFBVTtJQUNWLFNBQVM7SUFDVCxVQUFVO0lBQ1YsU0FBUztJQUNULFVBQVU7SUFDVixhQUFhO0lBQ2IsY0FBYztJQUNkLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsYUFBYTtJQUNiLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsaUJBQWlCO0NBQ3BCLENBQUM7QUFHRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUE2QixFQUFFLE1BQWMsRUFBRSxNQUFjLEVBQUUsUUFBaUIsRUFBVSxFQUFFO0lBQ25ILElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7UUFDdkQsT0FBTyxFQUFFLENBQUM7S0FDYjtJQUNELE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ3VycmVuY3lQaXBlLCBmb3JtYXREYXRlIGFzIF9mb3JtYXREYXRlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZVdpdGggfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBibGluaywgZmFkZUluLCBmYWRlT3V0LCBmbGlwQm90dG9tLCBmbGlwSG9yQmNrLCBmbGlwSG9yRndkLCBmbGlwTGVmdCwgZmxpcFJpZ2h0LCBmbGlwVG9wLFxuICAgIGZsaXBWZXJCY2ssIGZsaXBWZXJGd2QsIGdyb3dWZXJJbiwgZ3Jvd1Zlck91dCwgaGVhcnRiZWF0LCBwdWxzYXRlQmNrLCBwdWxzYXRlRndkLCByb3RhdGVJbkJsLFxuICAgIHJvdGF0ZUluQm90dG9tLCByb3RhdGVJbkJyLCByb3RhdGVJbkNlbnRlciwgcm90YXRlSW5EaWFnb25hbDEsIHJvdGF0ZUluRGlhZ29uYWwyLCByb3RhdGVJbkhvcixcbiAgICByb3RhdGVJbkxlZnQsIHJvdGF0ZUluUmlnaHQsIHJvdGF0ZUluVGwsIHJvdGF0ZUluVG9wLCByb3RhdGVJblRyLCByb3RhdGVJblZlciwgcm90YXRlT3V0QmwsXG4gICAgcm90YXRlT3V0Qm90dG9tLCByb3RhdGVPdXRCciwgcm90YXRlT3V0Q2VudGVyLCByb3RhdGVPdXREaWFnb25hbDEsIHJvdGF0ZU91dERpYWdvbmFsMixcbiAgICByb3RhdGVPdXRIb3IsIHJvdGF0ZU91dExlZnQsIHJvdGF0ZU91dFJpZ2h0LCByb3RhdGVPdXRUbCwgcm90YXRlT3V0VG9wLCByb3RhdGVPdXRUcixcbiAgICByb3RhdGVPdXRWZXIsIHNjYWxlSW5CbCwgc2NhbGVJbkJvdHRvbSwgc2NhbGVJbkJyLCBzY2FsZUluQ2VudGVyLCBzY2FsZUluSG9yQ2VudGVyLFxuICAgIHNjYWxlSW5Ib3JMZWZ0LCBzY2FsZUluSG9yUmlnaHQsIHNjYWxlSW5MZWZ0LCBzY2FsZUluUmlnaHQsIHNjYWxlSW5UbCwgc2NhbGVJblRvcCwgc2NhbGVJblRyLFxuICAgIHNjYWxlSW5WZXJCb3R0b20sIHNjYWxlSW5WZXJDZW50ZXIsIHNjYWxlSW5WZXJUb3AsIHNjYWxlT3V0QmwsIHNjYWxlT3V0Qm90dG9tLCBzY2FsZU91dEJyLFxuICAgIHNjYWxlT3V0Q2VudGVyLCBzY2FsZU91dEhvckNlbnRlciwgc2NhbGVPdXRIb3JMZWZ0LCBzY2FsZU91dEhvclJpZ2h0LCBzY2FsZU91dExlZnQsXG4gICAgc2NhbGVPdXRSaWdodCwgc2NhbGVPdXRUbCwgc2NhbGVPdXRUb3AsIHNjYWxlT3V0VHIsIHNjYWxlT3V0VmVyQm90dG9tLCBzY2FsZU91dFZlckNlbnRlcixcbiAgICBzY2FsZU91dFZlclRvcCwgc2hha2VCbCwgc2hha2VCb3R0b20sIHNoYWtlQnIsIHNoYWtlQ2VudGVyLCBzaGFrZUhvciwgc2hha2VMZWZ0LCBzaGFrZVJpZ2h0LFxuICAgIHNoYWtlVGwsIHNoYWtlVG9wLCBzaGFrZVRyLCBzaGFrZVZlciwgc2xpZGVJbkJsLCBzbGlkZUluQm90dG9tLCBzbGlkZUluQnIsIHNsaWRlSW5MZWZ0LFxuICAgIHNsaWRlSW5SaWdodCwgc2xpZGVJblRsLCBzbGlkZUluVG9wLCBzbGlkZUluVHIsIHNsaWRlT3V0QmwsIHNsaWRlT3V0Qm90dG9tLCBzbGlkZU91dEJyLFxuICAgIHNsaWRlT3V0TGVmdCwgc2xpZGVPdXRSaWdodCwgc2xpZGVPdXRUbCwgc2xpZGVPdXRUb3AsIHNsaWRlT3V0VHIsIHN3aW5nSW5Cb3R0b21CY2ssXG4gICAgc3dpbmdJbkJvdHRvbUZ3ZCwgc3dpbmdJbkxlZnRCY2ssIHN3aW5nSW5MZWZ0RndkLCBzd2luZ0luUmlnaHRCY2ssIHN3aW5nSW5SaWdodEZ3ZCxcbiAgICBzd2luZ0luVG9wQmNrLCBzd2luZ0luVG9wRndkLCBzd2luZ091dEJvdHRvbUJjaywgc3dpbmdPdXRCb3R0b21Gd2QsIHN3aW5nT3V0TGVmdEJjayxcbiAgICBzd2luZ091dExlZnR0RndkLCBzd2luZ091dFJpZ2h0QmNrLCBzd2luZ091dFJpZ2h0RndkLCBzd2luZ091dFRvcEJjaywgc3dpbmdPdXRUb3BGd2Rcbn0gZnJvbSAnLi4vYW5pbWF0aW9ucy9tYWluJztcbmltcG9ydCB7IHNldEltbWVkaWF0ZSB9IGZyb20gJy4vc2V0SW1tZWRpYXRlJztcbmltcG9ydCB7IGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IHNob3dNZXNzYWdlID0gKG1lc3NhZ2U6IHN0cmluZywgaXNNZXNzYWdlU2hvd246IGJvb2xlYW4pOiBib29sZWFuID0+IHtcbiAgICBpZiAoIWlzTWVzc2FnZVNob3duICYmIGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBta2VudW0gPSA8VCBleHRlbmRzIHsgW2luZGV4OiBzdHJpbmddOiBVIH0sIFUgZXh0ZW5kcyBzdHJpbmc+KHg6IFQpID0+IHg7XG5cbi8qKlxuICpcbiAqIEBoaWRkZW4gQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRSZXNpemVPYnNlcnZlciA9ICgpID0+IHdpbmRvdy5SZXNpemVPYnNlcnZlcjtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBjbG9uZUFycmF5ID0gKGFycmF5OiBhbnlbXSwgZGVlcD86IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCBhcnIgPSBbXTtcbiAgICBpZiAoIWFycmF5KSB7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICAgIGxldCBpID0gYXJyYXkubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgYXJyW2ldID0gZGVlcCA/IGNsb25lVmFsdWUoYXJyYXlbaV0pIDogYXJyYXlbaV07XG4gICAgfVxuICAgIHJldHVybiBhcnI7XG59O1xuXG4vKipcbiAqIERvZXNuJ3QgY2xvbmUgbGVhZiBpdGVtc1xuICpcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IGNsb25lSGllcmFyY2hpY2FsQXJyYXkgPSAoYXJyYXk6IGFueVtdLCBjaGlsZERhdGFLZXk6IGFueSk6IGFueVtdID0+IHtcbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG4gICAgaWYgKCFhcnJheSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnJheSkge1xuICAgICAgICBjb25zdCBjbG9uZWRJdGVtID0gY2xvbmVWYWx1ZShpdGVtKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbVtjaGlsZERhdGFLZXldKSkge1xuICAgICAgICAgICAgY2xvbmVkSXRlbVtjaGlsZERhdGFLZXldID0gY2xvbmVIaWVyYXJjaGljYWxBcnJheShjbG9uZWRJdGVtW2NoaWxkRGF0YUtleV0sIGNoaWxkRGF0YUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LnB1c2goY2xvbmVkSXRlbSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHdpdGggcHJvdG90eXBlIGZyb20gcHJvdmlkZWQgc291cmNlIGFuZCBjb3BpZXNcbiAqIGFsbCBwcm9wZXJ0aWVzIGRlc2NyaXB0b3JzIGZyb20gcHJvdmlkZWQgc291cmNlXG4gKiBAcGFyYW0gb2JqIFNvdXJjZSB0byBjb3B5IHByb3RvdHlwZSBhbmQgZGVzY3JpcHRvcnMgZnJvbVxuICogQHJldHVybnMgTmV3IG9iamVjdCB3aXRoIGNsb25lZCBwcm90b3R5cGUgYW5kIHByb3BlcnR5IGRlc2NyaXB0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBjb3B5RGVzY3JpcHRvcnMgPSAob2JqKSA9PiB7XG4gICAgaWYgKG9iaikge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmNyZWF0ZShcbiAgICAgICAgICAgIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopLFxuICAgICAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKVxuICAgICAgICAgICAgKTtcbiAgICB9XG59XG5cblxuLyoqXG4gKiBEZWVwIGNsb25lcyBhbGwgZmlyc3QgbGV2ZWwga2V5cyBvZiBPYmoyIGFuZCBtZXJnZXMgdGhlbSB0byBPYmoxXG4gKlxuICogQHBhcmFtIG9iajEgT2JqZWN0IHRvIG1lcmdlIGludG9cbiAqIEBwYXJhbSBvYmoyIE9iamVjdCB0byBtZXJnZSBmcm9tXG4gKiBAcmV0dXJucyBPYmoxIHdpdGggbWVyZ2VkIGNsb25lZCBrZXlzIGZyb20gT2JqMlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgbWVyZ2VPYmplY3RzID0gKG9iajE6IGFueSwgb2JqMjogYW55KTogYW55ID0+IG1lcmdlV2l0aChvYmoxLCBvYmoyLCAob2JqVmFsdWUsIHNyY1ZhbHVlKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc3JjVmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBvYmpWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgIH1cbn0pO1xuXG4vKipcbiAqIENyZWF0ZXMgZGVlcCBjbG9uZSBvZiBwcm92aWRlZCB2YWx1ZS5cbiAqIFN1cHBvcnRzIHByaW1pdGl2ZSB2YWx1ZXMsIGRhdGVzIGFuZCBvYmplY3RzLlxuICogSWYgcGFzc2VkIHZhbHVlIGlzIGFycmF5IHJldHVybnMgc2hhbGxvdyBjb3B5IG9mIHRoZSBhcnJheS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gY2xvbmVcbiAqIEByZXR1cm5zIERlZXAgY29weSBvZiBwcm92aWRlZCB2YWx1ZVxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgY2xvbmVWYWx1ZSA9ICh2YWx1ZTogYW55KTogYW55ID0+IHtcbiAgICBpZiAoaXNEYXRlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUuZ2V0VGltZSgpKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBbLi4udmFsdWVdO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCB8fCB2YWx1ZSBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gY2xvbmVWYWx1ZSh2YWx1ZVtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59O1xuXG4vKipcbiAqIFBhcnNlIHByb3ZpZGVkIGlucHV0IHRvIERhdGUuXG4gKlxuICogQHBhcmFtIHZhbHVlIGlucHV0IHRvIHBhcnNlXG4gKiBAcmV0dXJucyBEYXRlIGlmIHBhcnNlIHN1Y2NlZWQgb3IgbnVsbFxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgcGFyc2VEYXRlID0gKHZhbHVlOiBhbnkpOiBEYXRlIHwgbnVsbCA9PiB7XG4gICAgLy8gaWYgdmFsdWUgaXMgSW52YWxpZCBEYXRlIHJldHVybiBudWxsXG4gICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTih2YWx1ZS5nZXRUaW1lKCkpID8gdmFsdWUgOiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkgOiBudWxsO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFuIGFycmF5IHdpdGggdW5pcXVlIGRhdGVzIG9ubHkuXG4gKlxuICogQHBhcmFtIGNvbHVtblZhbHVlcyBjb2xsZWN0aW9uIG9mIGRhdGUgdmFsdWVzIChtaWdodCBiZSBudW1iZXJzIG9yIElTTyA4NjAxIHN0cmluZ3MpXG4gKiBAcmV0dXJucyBjb2xsZWN0aW9uIG9mIHVuaXF1ZSBkYXRlcy5cbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IHVuaXF1ZURhdGVzID0gKGNvbHVtblZhbHVlczogYW55W10pID0+IGNvbHVtblZhbHVlcy5yZWR1Y2UoKGEsIGMpID0+IHtcbiAgICBpZiAoIWEuY2FjaGVbYy5sYWJlbF0pIHtcbiAgICAgICAgYS5yZXN1bHQucHVzaChjKTtcbiAgICB9XG4gICAgYS5jYWNoZVtjLmxhYmVsXSA9IHRydWU7XG4gICAgcmV0dXJuIGE7XG59LCB7IHJlc3VsdDogW10sIGNhY2hlOiB7fSB9KS5yZXN1bHQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHByb3ZpZGVkIHZhcmlhYmxlIGlzIE9iamVjdFxuICpcbiAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBjaGVja1xuICogQHJldHVybnMgdHJ1ZSBpZiBwcm92aWRlZCB2YXJpYWJsZSBpcyBPYmplY3RcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzT2JqZWN0ID0gKHZhbHVlOiBhbnkpOiBib29sZWFuID0+ICEhKHZhbHVlICYmIHZhbHVlLnRvU3RyaW5nKCkgPT09ICdbb2JqZWN0IE9iamVjdF0nKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgcHJvdmlkZWQgdmFyaWFibGUgaXMgRGF0ZVxuICpcbiAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBjaGVja1xuICogQHJldHVybnMgdHJ1ZSBpZiBwcm92aWRlZCB2YXJpYWJsZSBpcyBEYXRlXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RhdGUgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIERhdGUgPT4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlO1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgdHdvIHBhc3NlZCBhcmd1bWVudHMgYXJlIGVxdWFsXG4gKiBDdXJyZW50bHkgc3VwcG9ydHMgZGF0ZSBvYmplY3RzXG4gKlxuICogQHBhcmFtIG9iajFcbiAqIEBwYXJhbSBvYmoyXG4gKiBAcmV0dXJuczogYGJvb2xlYW5gXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0VxdWFsID0gKG9iajEsIG9iajIpOiBib29sZWFuID0+IHtcbiAgICBpZiAoaXNEYXRlKG9iajEpICYmIGlzRGF0ZShvYmoyKSkge1xuICAgICAgICByZXR1cm4gb2JqMS5nZXRUaW1lKCkgPT09IG9iajIuZ2V0VGltZSgpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqMSA9PT0gb2JqMjtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIHByb3ZpZGVkIHZhcmlhYmxlIGlzIHRoZSB2YWx1ZSBOYU5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHRydWUgaWYgcHJvdmlkZWQgdmFyaWFibGUgaXMgTmFOXG4gKiBAaGlkZGVuXG4gKi9cbiBleHBvcnQgY29uc3QgaXNOYU52YWx1ZSA9ICh2YWx1ZTogYW55KTogYm9vbGVhbiA9PiBpc05hTih2YWx1ZSkgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnO1xuXG4vKipcbiAqIFV0aWxpdHkgc2VydmljZSB0YWtpbmcgY2FyZSBvZiB2YXJpb3VzIHV0aWxpdHkgZnVuY3Rpb25zIHN1Y2ggYXNcbiAqIGRldGVjdGluZyBicm93c2VyIGZlYXR1cmVzLCBnZW5lcmFsIGNyb3NzIGJyb3dzZXIgRE9NIG1hbmlwdWxhdGlvbiwgZXRjLlxuICpcbiAqIEBoaWRkZW4gQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1VdGlsIHtcbiAgICBwdWJsaWMgaXNCcm93c2VyOiBib29sZWFuID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcbiAgICBwdWJsaWMgaXNJT1MgPSB0aGlzLmlzQnJvd3NlciAmJiAvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiAhKCdNU1N0cmVhbScgaW4gd2luZG93KTtcbiAgICBwdWJsaWMgaXNGaXJlZm94ID0gdGhpcy5pc0Jyb3dzZXIgJiYgL0ZpcmVmb3hbXFwvXFxzXShcXGQrXFwuXFxkKykvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgcHVibGljIGlzRWRnZSA9IHRoaXMuaXNCcm93c2VyICYmIC9FZGdlW1xcL1xcc10oXFxkK1xcLlxcZCspLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgIHB1YmxpYyBpc0Nocm9taXVtID0gdGhpcy5pc0Jyb3dzZXIgJiYgKC9DaHJvbXxlP2l1bS9nLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgfHxcbiAgICAgICAgL0dvb2dsZSBJbmMvZy50ZXN0KG5hdmlnYXRvci52ZW5kb3IpKSAmJiAhL0VkZ2UvZy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG4gICAgcHVibGljIEtFWU1BUCA9IG1rZW51bSh7XG4gICAgICAgIEVOVEVSOiAnRW50ZXInLFxuICAgICAgICBTUEFDRTogJyAnLFxuICAgICAgICBFU0NBUEU6ICdFc2NhcGUnLFxuICAgICAgICBBUlJPV19ET1dOOiAnQXJyb3dEb3duJyxcbiAgICAgICAgQVJST1dfVVA6ICdBcnJvd1VwJyxcbiAgICAgICAgQVJST1dfTEVGVDogJ0Fycm93TGVmdCcsXG4gICAgICAgIEFSUk9XX1JJR0hUOiAnQXJyb3dSaWdodCcsXG4gICAgICAgIEVORDogJ0VuZCcsXG4gICAgICAgIEhPTUU6ICdIb21lJyxcbiAgICAgICAgUEFHRV9ET1dOOiAnUGFnZURvd24nLFxuICAgICAgICBQQUdFX1VQOiAnUGFnZVVwJyxcbiAgICAgICAgRjI6ICdGMicsXG4gICAgICAgIFRBQjogJ1RhYicsXG4gICAgICAgIFNFTUlDT0xPTjogJzsnLFxuICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9rZXkvS2V5X1ZhbHVlcyNlZGl0aW5nX2tleXNcbiAgICAgICAgREVMRVRFOiAnRGVsZXRlJyxcbiAgICAgICAgQkFDS1NQQUNFOiAnQmFja3NwYWNlJyxcbiAgICAgICAgQ09OVFJPTDogJ0NvbnRyb2wnLFxuICAgICAgICBYOiAneCcsXG4gICAgICAgIFk6ICd5JyxcbiAgICAgICAgWjogJ3onXG4gICAgfSk7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSkgeyB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIFJldHVybnMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBub2RlIGNvbnRlbnQsIHVzaW5nIFJhbmdlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICogbGV0IGNvbHVtbiA9IHRoaXMuZ3JpZC5jb2x1bW5MaXN0LmZpbHRlcihjID0+IGMuZmllbGQgPT09ICdJRCcpWzBdO1xuICAgICAqXG4gICAgICogbGV0IHNpemUgPSBnZXROb2RlU2l6ZVZpYVJhbmdlKHJhbmdlLCBjb2x1bW4uY2VsbHNbMF0ubmF0aXZlRWxlbWVudCk7XG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFRoZSBsYXN0IHBhcmFtZXRlciBpcyB1c2VmdWwgd2hlbiB0aGUgc2l6ZSBvZiB0aGUgZWxlbWVudCB0byBtZWFzdXJlIGlzIG1vZGlmaWVkIGJ5IGFcbiAgICAgKiBwYXJlbnQgZWxlbWVudCB0aGF0IGhhcyBleHBsaWNpdCBzaXplLiBJbiBzdWNoIGNhc2VzIHRoZSBjYWxjdWxhdGVkIHNpemUgaXMgbmV2ZXIgbG93ZXJcbiAgICAgKiBhbmQgdGhlIGZ1bmN0aW9uIG1heSBpbnN0ZWFkIHJlbW92ZSB0aGUgcGFyZW50IHNpemUgd2hpbGUgbWVhc3VyaW5nIHRvIGdldCB0aGUgY29ycmVjdCB2YWx1ZS5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Tm9kZVNpemVWaWFSYW5nZShyYW5nZTogUmFuZ2UsIG5vZGU6IEhUTUxFbGVtZW50LCBzaXplSG9sZGluZ05vZGU/OiBIVE1MRWxlbWVudCkge1xuICAgICAgICBsZXQgb3ZlcmZsb3cgPSBudWxsO1xuICAgICAgICBsZXQgbm9kZVN0eWxlcztcblxuICAgICAgICBpZiAoIXRoaXMuaXNGaXJlZm94KSB7XG4gICAgICAgICAgICBvdmVyZmxvdyA9IG5vZGUuc3R5bGUub3ZlcmZsb3c7XG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRoYXQgaGFjayAtIG90aGVyd2lzZSBjb250ZW50IHdvbid0IGJlIG1lYXN1cmVkIGNvcnJlY3RseSBpbiBJRS9FZGdlXG4gICAgICAgICAgICBub2RlLnN0eWxlLm92ZXJmbG93ID0gJ3Zpc2libGUnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpemVIb2xkaW5nTm9kZSkge1xuICAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBzaXplSG9sZGluZ05vZGUuc3R5bGU7XG4gICAgICAgICAgICBub2RlU3R5bGVzID0gW3N0eWxlLndpZHRoLCBzdHlsZS5taW5XaWR0aCwgc3R5bGUuZmxleEJhc2lzXTtcbiAgICAgICAgICAgIHN0eWxlLndpZHRoID0gJyc7XG4gICAgICAgICAgICBzdHlsZS5taW5XaWR0aCA9ICcnO1xuICAgICAgICAgICAgc3R5bGUuZmxleEJhc2lzID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMobm9kZSk7XG4gICAgICAgIGNvbnN0IHNjYWxlID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAvIG5vZGUub2Zmc2V0V2lkdGg7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggLyBzY2FsZTtcblxuICAgICAgICBpZiAoIXRoaXMuaXNGaXJlZm94KSB7XG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRoYXQgaGFjayAtIG90aGVyd2lzZSBjb250ZW50IHdvbid0IGJlIG1lYXN1cmVkIGNvcnJlY3RseSBpbiBJRS9FZGdlXG4gICAgICAgICAgICBub2RlLnN0eWxlLm92ZXJmbG93ID0gb3ZlcmZsb3c7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2l6ZUhvbGRpbmdOb2RlKSB7XG4gICAgICAgICAgICBzaXplSG9sZGluZ05vZGUuc3R5bGUud2lkdGggPSBub2RlU3R5bGVzWzBdO1xuICAgICAgICAgICAgc2l6ZUhvbGRpbmdOb2RlLnN0eWxlLm1pbldpZHRoID0gbm9kZVN0eWxlc1sxXTtcbiAgICAgICAgICAgIHNpemVIb2xkaW5nTm9kZS5zdHlsZS5mbGV4QmFzaXMgPSBub2RlU3R5bGVzWzJdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHdpZHRoO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IGtleWJvYXJkIGV2ZW50IGlzIGFuIGFjdGl2YXRpb24ga2V5IChFbnRlci9TcGFjZSBiYXIpXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgUGxhdGZvcm1VdGlsXG4gICAgICovXG4gICAgcHVibGljIGlzQWN0aXZhdGlvbktleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQua2V5ID09PSB0aGlzLktFWU1BUC5FTlRFUiB8fCBldmVudC5rZXkgPT09IHRoaXMuS0VZTUFQLlNQQUNFO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBrZXlib2FyZCBldmVudCBpcyBhIGNvbWJpbmF0aW9uIHRoYXQgY2xvc2VzIHRoZSBmaWx0ZXJpbmcgVUkgb2YgdGhlIGdyaWQuIChFc2NhcGUvQ3RybCtTaGlmdCtMKVxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIEBwYXJhbSBldmVudFxuICAgICAqIEBtZW1iZXJvZiBQbGF0Zm9ybVV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNGaWx0ZXJpbmdLZXlDb21ibyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQua2V5ID09PSB0aGlzLktFWU1BUC5FU0NBUEUgfHwgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdsJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNMZWZ0Q2xpY2soZXZlbnQ6IFBvaW50ZXJFdmVudCB8IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LmJ1dHRvbiA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc05hdmlnYXRpb25LZXkoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuS0VZTUFQLkhPTUUsIHRoaXMuS0VZTUFQLkVORCwgdGhpcy5LRVlNQVAuU1BBQ0UsXG4gICAgICAgICAgICB0aGlzLktFWU1BUC5BUlJPV19ET1dOLCB0aGlzLktFWU1BUC5BUlJPV19MRUZULCB0aGlzLktFWU1BUC5BUlJPV19SSUdIVCwgdGhpcy5LRVlNQVAuQVJST1dfVVBcbiAgICAgICAgXS5pbmNsdWRlcyhrZXkpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBmbGF0dGVuID0gKGFycjogYW55W10pID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gW107XG5cbiAgICBhcnIuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGVsKTtcbiAgICAgICAgaWYgKGVsLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmlzQXJyYXkoZWwuY2hpbGRyZW4pID8gZWwuY2hpbGRyZW4gOiBlbC5jaGlsZHJlbi50b0FycmF5KCk7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGZsYXR0ZW4oY2hpbGRyZW4pKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbmNlbGFibGVFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGNhbmNlbCB0aGUgZXZlbnQuXG4gICAgICovXG4gICAgY2FuY2VsOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyByZWZlcmVuY2UgdG8gdGhlIG93bmVyIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBvd25lcj86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyBleHRlbmRzIENhbmNlbGFibGVFdmVudEFyZ3Mge1xuICAgIC8qKiBCcm93c2VyIGV2ZW50ICovXG4gICAgZXZlbnQ/OiBFdmVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIHsgfVxuXG5leHBvcnQgaW50ZXJmYWNlIElCYXNlQ2FuY2VsYWJsZUV2ZW50QXJncyBleHRlbmRzIENhbmNlbGFibGVFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIHsgfVxuXG5leHBvcnQgY29uc3QgSE9SSVpPTlRBTF9OQVZfS0VZUyA9IG5ldyBTZXQoWydhcnJvd2xlZnQnLCAnbGVmdCcsICdhcnJvd3JpZ2h0JywgJ3JpZ2h0JywgJ2hvbWUnLCAnZW5kJ10pO1xuXG5leHBvcnQgY29uc3QgTkFWSUdBVElPTl9LRVlTID0gbmV3IFNldChbXG4gICAgJ2Rvd24nLFxuICAgICd1cCcsXG4gICAgJ2xlZnQnLFxuICAgICdyaWdodCcsXG4gICAgJ2Fycm93ZG93bicsXG4gICAgJ2Fycm93dXAnLFxuICAgICdhcnJvd2xlZnQnLFxuICAgICdhcnJvd3JpZ2h0JyxcbiAgICAnaG9tZScsXG4gICAgJ2VuZCcsXG4gICAgJ3NwYWNlJyxcbiAgICAnc3BhY2ViYXInLFxuICAgICcgJ1xuXSk7XG5leHBvcnQgY29uc3QgQUNDT1JESU9OX05BVklHQVRJT05fS0VZUyA9IG5ldyBTZXQoJ3VwIGRvd24gYXJyb3d1cCBhcnJvd2Rvd24gaG9tZSBlbmQnLnNwbGl0KCcgJykpO1xuZXhwb3J0IGNvbnN0IFJPV19FWFBBTkRfS0VZUyA9IG5ldyBTZXQoJ3JpZ2h0IGRvd24gYXJyb3dyaWdodCBhcnJvd2Rvd24nLnNwbGl0KCcgJykpO1xuZXhwb3J0IGNvbnN0IFJPV19DT0xMQVBTRV9LRVlTID0gbmV3IFNldCgnbGVmdCB1cCBhcnJvd2xlZnQgYXJyb3d1cCcuc3BsaXQoJyAnKSk7XG5leHBvcnQgY29uc3QgUk9XX0FERF9LRVlTID0gbmV3IFNldChbJysnLCAnYWRkJywgJ+KJoCcsICfCsScsICc9J10pO1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9LRVlTID0gbmV3IFNldChbLi4uQXJyYXkuZnJvbShOQVZJR0FUSU9OX0tFWVMpLFxuLi4uQXJyYXkuZnJvbShST1dfQUREX0tFWVMpLCAnZW50ZXInLCAnZjInLCAnZXNjYXBlJywgJ2VzYycsICdwYWdlZG93bicsICdwYWdldXAnXSk7XG5leHBvcnQgY29uc3QgSEVBREVSX0tFWVMgPSBuZXcgU2V0KFsuLi5BcnJheS5mcm9tKE5BVklHQVRJT05fS0VZUyksICdlc2NhcGUnLCAnZXNjJywgJ2wnLFxuICAgIC8qKiBUaGlzIHN5bWJvbCBjb3JyZXNwb25kcyB0byB0aGUgQWx0ICsgTCBjb21iaW5hdGlvbiB1bmRlciBNQUMuICovXG4gICAgJ8KsJ10pO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICpcbiAqIENyZWF0ZXMgYSBuZXcgUmVzaXplT2JzZXJ2ZXIgb24gYHRhcmdldGAgYW5kIHJldHVybnMgaXQgYXMgYW4gT2JzZXJ2YWJsZS5cbiAqIFJ1biB0aGUgcmVzaXplT2JzZXJ2YWJsZSBvdXRzaWRlIGFuZ3VsYXIgem9uZSwgYmVjYXVzZSBpdCBwYXRjaGVzIHRoZSBNdXRhdGlvbk9ic2VydmVyIHdoaWNoIGNhdXNlcyBhbiBpbmZpbml0ZSBsb29wLlxuICogUmVsYXRlZCBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMzE3MTJcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc2l6ZU9ic2VydmFibGUgPSAodGFyZ2V0OiBIVE1MRWxlbWVudCk6IE9ic2VydmFibGU8UmVzaXplT2JzZXJ2ZXJFbnRyeVtdPiA9PiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyAoZ2V0UmVzaXplT2JzZXJ2ZXIoKSkoKGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSkgPT4ge1xuICAgICAgICBvYnNlcnZlci5uZXh0KGVudHJpZXMpO1xuICAgIH0pO1xuICAgIGluc3RhbmNlLm9ic2VydmUodGFyZ2V0KTtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9ICgpID0+IGluc3RhbmNlLmRpc2Nvbm5lY3QoKTtcbiAgICByZXR1cm4gdW5zdWJzY3JpYmU7XG59KTtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBDb21wYXJlcyB0d28gbWFwcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBhcmVNYXBzID0gKG1hcDE6IE1hcDxhbnksIGFueT4sIG1hcDI6IE1hcDxhbnksIGFueT4pOiBib29sZWFuID0+IHtcbiAgICBpZiAoIW1hcDIpIHtcbiAgICAgICAgcmV0dXJuICFtYXAxID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cbiAgICBpZiAobWFwMS5zaXplICE9PSBtYXAyLnNpemUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgbWF0Y2ggPSB0cnVlO1xuICAgIGNvbnN0IGtleXMgPSBBcnJheS5mcm9tKG1hcDIua2V5cygpKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGlmIChtYXAxLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICBtYXRjaCA9IG1hcDEuZ2V0KGtleSkgPT09IG1hcDIuZ2V0KGtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXRjaCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRjaDtcbn07XG5cbi8qKlxuICpcbiAqIEdpdmVuIGEgcHJvcGVydHkgYWNjZXNzIHBhdGggaW4gdGhlIGZvcm1hdCBgeC55LnpgIHJlc29sdmVzIGFuZCByZXR1cm5zXG4gKiB0aGUgdmFsdWUgb2YgdGhlIGB6YCBwcm9wZXJ0eSBpbiB0aGUgcGFzc2VkIG9iamVjdC5cbiAqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVOZXN0ZWRQYXRoID0gKG9iajogYW55LCBwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBwYXJ0cyA9IHBhdGg/LnNwbGl0KCcuJykgPz8gW107XG4gICAgbGV0IGN1cnJlbnQgPSBvYmpbcGFydHMuc2hpZnQoKV07XG5cbiAgICBwYXJ0cy5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnRbcHJvcF07XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjdXJyZW50O1xufTtcblxuLyoqXG4gKlxuICogR2l2ZW4gYSBwcm9wZXJ0eSBhY2Nlc3MgcGF0aCBpbiB0aGUgZm9ybWF0IGB4LnkuemAgYW5kIGEgdmFsdWVcbiAqIHRoaXMgZnVuY3Rpb25zIGJ1aWxkcyBhbmQgcmV0dXJucyBhbiBvYmplY3QgZm9sbG93aW5nIHRoZSBhY2Nlc3MgcGF0aC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc29sZS5sb2coJ3gueS56LicsIDQyKTtcbiAqID4+IHsgeDogeyB5OiB7IHo6IDQyIH0gfSB9XG4gKiBgYGBcbiAqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHJldmVyc2VNYXBwZXIgPSAocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG4gICAgY29uc3Qgb2JqID0ge307XG4gICAgY29uc3QgcGFydHMgPSBwYXRoPy5zcGxpdCgnLicpID8/IFtdO1xuXG4gICAgbGV0IF9wcm9wID0gcGFydHMuc2hpZnQoKTtcbiAgICBsZXQgbWFwcGluZzogYW55O1xuXG4gICAgLy8gSW5pdGlhbCBiaW5kaW5nIGZvciBmaXJzdCBsZXZlbCBiaW5kaW5nc1xuICAgIG9ialtfcHJvcF0gPSB2YWx1ZTtcbiAgICBtYXBwaW5nID0gb2JqO1xuXG4gICAgcGFydHMuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgLy8gU3RhcnQgYnVpbGRpbmcgdGhlIGhpZXJhcmNoeVxuICAgICAgICBtYXBwaW5nW19wcm9wXSA9IHt9O1xuICAgICAgICAvLyBHbyBkb3duIGEgbGV2ZWxcbiAgICAgICAgbWFwcGluZyA9IG1hcHBpbmdbX3Byb3BdO1xuICAgICAgICAvLyBCaW5kIHRoZSB2YWx1ZSBhbmQgbW92ZSB0aGUga2V5XG4gICAgICAgIG1hcHBpbmdbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgX3Byb3AgPSBwcm9wO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iajtcbn07XG5cbmV4cG9ydCBjb25zdCB5aWVsZGluZ0xvb3AgPSAoY291bnQ6IG51bWJlciwgY2h1bmtTaXplOiBudW1iZXIsIGNhbGxiYWNrOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZCwgZG9uZTogKCkgPT4gdm9pZCkgPT4ge1xuICAgIGxldCBpID0gMDtcbiAgICBjb25zdCBjaHVuayA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgZW5kID0gTWF0aC5taW4oaSArIGNodW5rU2l6ZSwgY291bnQpO1xuICAgICAgICBmb3IgKDsgaSA8IGVuZDsgKytpKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA8IGNvdW50KSB7XG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUoY2h1bmspO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjaHVuaygpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQ29uc3RydWN0b3IgPSAocmVmOiBhbnkpID0+IHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicgJiYgQm9vbGVhbihyZWYucHJvdG90eXBlKSAmJiBCb29sZWFuKHJlZi5wcm90b3R5cGUuY29uc3RydWN0b3IpO1xuXG5leHBvcnQgY29uc3QgcmV2ZXJzZUFuaW1hdGlvblJlc29sdmVyID0gKGFuaW1hdGlvbjogQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGEpOiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSA9PlxuICAgIG9wcG9zaXRlQW5pbWF0aW9uLmdldChhbmltYXRpb24pID8/IGFuaW1hdGlvbjtcblxuZXhwb3J0IGNvbnN0IGlzSG9yaXpvbnRhbEFuaW1hdGlvbiA9IChhbmltYXRpb246IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhKTogYm9vbGVhbiA9PiBob3Jpem9udGFsQW5pbWF0aW9ucy5pbmNsdWRlcyhhbmltYXRpb24pO1xuXG5leHBvcnQgY29uc3QgaXNWZXJ0aWNhbEFuaW1hdGlvbiA9IChhbmltYXRpb246IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhKTogYm9vbGVhbiA9PiB2ZXJ0aWNhbEFuaW1hdGlvbnMuaW5jbHVkZXMoYW5pbWF0aW9uKTtcblxuY29uc3Qgb3Bwb3NpdGVBbmltYXRpb246IE1hcDxBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSwgQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGE+ID0gbmV3IE1hcChbXG4gICAgW2ZhZGVJbiwgZmFkZUluXSxcbiAgICBbZmFkZU91dCwgZmFkZU91dF0sXG4gICAgW2ZsaXBUb3AsIGZsaXBCb3R0b21dLFxuICAgIFtmbGlwQm90dG9tLCBmbGlwVG9wXSxcbiAgICBbZmxpcFJpZ2h0LCBmbGlwTGVmdF0sXG4gICAgW2ZsaXBMZWZ0LCBmbGlwUmlnaHRdLFxuICAgIFtmbGlwSG9yRndkLCBmbGlwSG9yQmNrXSxcbiAgICBbZmxpcEhvckJjaywgZmxpcEhvckZ3ZF0sXG4gICAgW2ZsaXBWZXJGd2QsIGZsaXBWZXJCY2tdLFxuICAgIFtmbGlwVmVyQmNrLCBmbGlwVmVyRndkXSxcbiAgICBbZ3Jvd1ZlckluLCBncm93VmVySW5dLFxuICAgIFtncm93VmVyT3V0LCBncm93VmVyT3V0XSxcbiAgICBbaGVhcnRiZWF0LCBoZWFydGJlYXRdLFxuICAgIFtwdWxzYXRlRndkLCBwdWxzYXRlQmNrXSxcbiAgICBbcHVsc2F0ZUJjaywgcHVsc2F0ZUZ3ZF0sXG4gICAgW2JsaW5rLCBibGlua10sXG4gICAgW3NoYWtlSG9yLCBzaGFrZUhvcl0sXG4gICAgW3NoYWtlVmVyLCBzaGFrZVZlcl0sXG4gICAgW3NoYWtlVG9wLCBzaGFrZVRvcF0sXG4gICAgW3NoYWtlQm90dG9tLCBzaGFrZUJvdHRvbV0sXG4gICAgW3NoYWtlUmlnaHQsIHNoYWtlUmlnaHRdLFxuICAgIFtzaGFrZUxlZnQsIHNoYWtlTGVmdF0sXG4gICAgW3NoYWtlQ2VudGVyLCBzaGFrZUNlbnRlcl0sXG4gICAgW3NoYWtlVHIsIHNoYWtlVHJdLFxuICAgIFtzaGFrZUJyLCBzaGFrZUJyXSxcbiAgICBbc2hha2VCbCwgc2hha2VCbF0sXG4gICAgW3NoYWtlVGwsIHNoYWtlVGxdLFxuICAgIFtyb3RhdGVJbkNlbnRlciwgcm90YXRlSW5DZW50ZXJdLFxuICAgIFtyb3RhdGVPdXRDZW50ZXIsIHJvdGF0ZU91dENlbnRlcl0sXG4gICAgW3JvdGF0ZUluVG9wLCByb3RhdGVJbkJvdHRvbV0sXG4gICAgW3JvdGF0ZU91dFRvcCwgcm90YXRlT3V0Qm90dG9tXSxcbiAgICBbcm90YXRlSW5SaWdodCwgcm90YXRlSW5MZWZ0XSxcbiAgICBbcm90YXRlT3V0UmlnaHQsIHJvdGF0ZU91dExlZnRdLFxuICAgIFtyb3RhdGVJbkxlZnQsIHJvdGF0ZUluUmlnaHRdLFxuICAgIFtyb3RhdGVPdXRMZWZ0LCByb3RhdGVPdXRSaWdodF0sXG4gICAgW3JvdGF0ZUluQm90dG9tLCByb3RhdGVJblRvcF0sXG4gICAgW3JvdGF0ZU91dEJvdHRvbSwgcm90YXRlT3V0VG9wXSxcbiAgICBbcm90YXRlSW5Uciwgcm90YXRlSW5CbF0sXG4gICAgW3JvdGF0ZU91dFRyLCByb3RhdGVPdXRCbF0sXG4gICAgW3JvdGF0ZUluQnIsIHJvdGF0ZUluVGxdLFxuICAgIFtyb3RhdGVPdXRCciwgcm90YXRlT3V0VGxdLFxuICAgIFtyb3RhdGVJbkJsLCByb3RhdGVJblRyXSxcbiAgICBbcm90YXRlT3V0QmwsIHJvdGF0ZU91dFRyXSxcbiAgICBbcm90YXRlSW5UbCwgcm90YXRlSW5Ccl0sXG4gICAgW3JvdGF0ZU91dFRsLCByb3RhdGVPdXRCcl0sXG4gICAgW3JvdGF0ZUluRGlhZ29uYWwxLCByb3RhdGVJbkRpYWdvbmFsMV0sXG4gICAgW3JvdGF0ZU91dERpYWdvbmFsMSwgcm90YXRlT3V0RGlhZ29uYWwxXSxcbiAgICBbcm90YXRlSW5EaWFnb25hbDIsIHJvdGF0ZUluRGlhZ29uYWwyXSxcbiAgICBbcm90YXRlT3V0RGlhZ29uYWwyLCByb3RhdGVPdXREaWFnb25hbDJdLFxuICAgIFtyb3RhdGVJbkhvciwgcm90YXRlSW5Ib3JdLFxuICAgIFtyb3RhdGVPdXRIb3IsIHJvdGF0ZU91dEhvcl0sXG4gICAgW3JvdGF0ZUluVmVyLCByb3RhdGVJblZlcl0sXG4gICAgW3JvdGF0ZU91dFZlciwgcm90YXRlT3V0VmVyXSxcbiAgICBbc2NhbGVJblRvcCwgc2NhbGVJbkJvdHRvbV0sXG4gICAgW3NjYWxlT3V0VG9wLCBzY2FsZU91dEJvdHRvbV0sXG4gICAgW3NjYWxlSW5SaWdodCwgc2NhbGVJbkxlZnRdLFxuICAgIFtzY2FsZU91dFJpZ2h0LCBzY2FsZU91dExlZnRdLFxuICAgIFtzY2FsZUluQm90dG9tLCBzY2FsZUluVG9wXSxcbiAgICBbc2NhbGVPdXRCb3R0b20sIHNjYWxlT3V0VG9wXSxcbiAgICBbc2NhbGVJbkxlZnQsIHNjYWxlSW5SaWdodF0sXG4gICAgW3NjYWxlT3V0TGVmdCwgc2NhbGVPdXRSaWdodF0sXG4gICAgW3NjYWxlSW5DZW50ZXIsIHNjYWxlSW5DZW50ZXJdLFxuICAgIFtzY2FsZU91dENlbnRlciwgc2NhbGVPdXRDZW50ZXJdLFxuICAgIFtzY2FsZUluVHIsIHNjYWxlSW5CbF0sXG4gICAgW3NjYWxlT3V0VHIsIHNjYWxlT3V0QmxdLFxuICAgIFtzY2FsZUluQnIsIHNjYWxlSW5UbF0sXG4gICAgW3NjYWxlT3V0QnIsIHNjYWxlT3V0VGxdLFxuICAgIFtzY2FsZUluQmwsIHNjYWxlSW5Ucl0sXG4gICAgW3NjYWxlT3V0QmwsIHNjYWxlT3V0VHJdLFxuICAgIFtzY2FsZUluVGwsIHNjYWxlSW5Ccl0sXG4gICAgW3NjYWxlT3V0VGwsIHNjYWxlT3V0QnJdLFxuICAgIFtzY2FsZUluVmVyVG9wLCBzY2FsZUluVmVyQm90dG9tXSxcbiAgICBbc2NhbGVPdXRWZXJUb3AsIHNjYWxlT3V0VmVyQm90dG9tXSxcbiAgICBbc2NhbGVJblZlckJvdHRvbSwgc2NhbGVJblZlclRvcF0sXG4gICAgW3NjYWxlT3V0VmVyQm90dG9tLCBzY2FsZU91dFZlclRvcF0sXG4gICAgW3NjYWxlSW5WZXJDZW50ZXIsIHNjYWxlSW5WZXJDZW50ZXJdLFxuICAgIFtzY2FsZU91dFZlckNlbnRlciwgc2NhbGVPdXRWZXJDZW50ZXJdLFxuICAgIFtzY2FsZUluSG9yQ2VudGVyLCBzY2FsZUluSG9yQ2VudGVyXSxcbiAgICBbc2NhbGVPdXRIb3JDZW50ZXIsIHNjYWxlT3V0SG9yQ2VudGVyXSxcbiAgICBbc2NhbGVJbkhvckxlZnQsIHNjYWxlSW5Ib3JSaWdodF0sXG4gICAgW3NjYWxlT3V0SG9yTGVmdCwgc2NhbGVPdXRIb3JSaWdodF0sXG4gICAgW3NjYWxlSW5Ib3JSaWdodCwgc2NhbGVJbkhvckxlZnRdLFxuICAgIFtzY2FsZU91dEhvclJpZ2h0LCBzY2FsZU91dEhvckxlZnRdLFxuICAgIFtzbGlkZUluVG9wLCBzbGlkZUluQm90dG9tXSxcbiAgICBbc2xpZGVPdXRUb3AsIHNsaWRlT3V0Qm90dG9tXSxcbiAgICBbc2xpZGVJblJpZ2h0LCBzbGlkZUluTGVmdF0sXG4gICAgW3NsaWRlT3V0UmlnaHQsIHNsaWRlT3V0TGVmdF0sXG4gICAgW3NsaWRlSW5Cb3R0b20sIHNsaWRlSW5Ub3BdLFxuICAgIFtzbGlkZU91dEJvdHRvbSwgc2xpZGVPdXRUb3BdLFxuICAgIFtzbGlkZUluTGVmdCwgc2xpZGVJblJpZ2h0XSxcbiAgICBbc2xpZGVPdXRMZWZ0LCBzbGlkZU91dFJpZ2h0XSxcbiAgICBbc2xpZGVJblRyLCBzbGlkZUluQmxdLFxuICAgIFtzbGlkZU91dFRyLCBzbGlkZU91dEJsXSxcbiAgICBbc2xpZGVJbkJyLCBzbGlkZUluVGxdLFxuICAgIFtzbGlkZU91dEJyLCBzbGlkZU91dFRsXSxcbiAgICBbc2xpZGVJbkJsLCBzbGlkZUluVHJdLFxuICAgIFtzbGlkZU91dEJsLCBzbGlkZU91dFRyXSxcbiAgICBbc2xpZGVJblRsLCBzbGlkZUluQnJdLFxuICAgIFtzbGlkZU91dFRsLCBzbGlkZU91dEJyXSxcbiAgICBbc3dpbmdJblRvcEZ3ZCwgc3dpbmdJbkJvdHRvbUZ3ZF0sXG4gICAgW3N3aW5nT3V0VG9wRndkLCBzd2luZ091dEJvdHRvbUZ3ZF0sXG4gICAgW3N3aW5nSW5SaWdodEZ3ZCwgc3dpbmdJbkxlZnRGd2RdLFxuICAgIFtzd2luZ091dFJpZ2h0RndkLCBzd2luZ091dExlZnR0RndkXSxcbiAgICBbc3dpbmdJbkxlZnRGd2QsIHN3aW5nSW5SaWdodEZ3ZF0sXG4gICAgW3N3aW5nT3V0TGVmdHRGd2QsIHN3aW5nT3V0UmlnaHRGd2RdLFxuICAgIFtzd2luZ0luQm90dG9tRndkLCBzd2luZ0luVG9wRndkXSxcbiAgICBbc3dpbmdPdXRCb3R0b21Gd2QsIHN3aW5nT3V0VG9wRndkXSxcbiAgICBbc3dpbmdJblRvcEJjaywgc3dpbmdJbkJvdHRvbUJja10sXG4gICAgW3N3aW5nT3V0VG9wQmNrLCBzd2luZ091dEJvdHRvbUJja10sXG4gICAgW3N3aW5nSW5SaWdodEJjaywgc3dpbmdJbkxlZnRCY2tdLFxuICAgIFtzd2luZ091dFJpZ2h0QmNrLCBzd2luZ091dExlZnRCY2tdLFxuICAgIFtzd2luZ0luQm90dG9tQmNrLCBzd2luZ0luVG9wQmNrXSxcbiAgICBbc3dpbmdPdXRCb3R0b21CY2ssIHN3aW5nT3V0VG9wQmNrXSxcbiAgICBbc3dpbmdJbkxlZnRCY2ssIHN3aW5nSW5SaWdodEJja10sXG4gICAgW3N3aW5nT3V0TGVmdEJjaywgc3dpbmdPdXRSaWdodEJja10sXG5dKTtcblxuY29uc3QgaG9yaXpvbnRhbEFuaW1hdGlvbnM6IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhW10gPSBbXG4gICAgZmxpcFJpZ2h0LFxuICAgIGZsaXBMZWZ0LFxuICAgIGZsaXBWZXJGd2QsXG4gICAgZmxpcFZlckJjayxcbiAgICByb3RhdGVJblJpZ2h0LFxuICAgIHJvdGF0ZU91dFJpZ2h0LFxuICAgIHJvdGF0ZUluTGVmdCxcbiAgICByb3RhdGVPdXRMZWZ0LFxuICAgIHJvdGF0ZUluVHIsXG4gICAgcm90YXRlT3V0VHIsXG4gICAgcm90YXRlSW5CcixcbiAgICByb3RhdGVPdXRCcixcbiAgICByb3RhdGVJbkJsLFxuICAgIHJvdGF0ZU91dEJsLFxuICAgIHJvdGF0ZUluVGwsXG4gICAgcm90YXRlT3V0VGwsXG4gICAgc2NhbGVJblJpZ2h0LFxuICAgIHNjYWxlT3V0UmlnaHQsXG4gICAgc2NhbGVJbkxlZnQsXG4gICAgc2NhbGVPdXRMZWZ0LFxuICAgIHNjYWxlSW5UcixcbiAgICBzY2FsZU91dFRyLFxuICAgIHNjYWxlSW5CcixcbiAgICBzY2FsZU91dEJyLFxuICAgIHNjYWxlSW5CbCxcbiAgICBzY2FsZU91dEJsLFxuICAgIHNjYWxlSW5UbCxcbiAgICBzY2FsZU91dFRsLFxuICAgIHNjYWxlSW5Ib3JMZWZ0LFxuICAgIHNjYWxlT3V0SG9yTGVmdCxcbiAgICBzY2FsZUluSG9yUmlnaHQsXG4gICAgc2NhbGVPdXRIb3JSaWdodCxcbiAgICBzbGlkZUluUmlnaHQsXG4gICAgc2xpZGVPdXRSaWdodCxcbiAgICBzbGlkZUluTGVmdCxcbiAgICBzbGlkZU91dExlZnQsXG4gICAgc2xpZGVJblRyLFxuICAgIHNsaWRlT3V0VHIsXG4gICAgc2xpZGVJbkJyLFxuICAgIHNsaWRlT3V0QnIsXG4gICAgc2xpZGVJbkJsLFxuICAgIHNsaWRlT3V0QmwsXG4gICAgc2xpZGVJblRsLFxuICAgIHNsaWRlT3V0VGwsXG4gICAgc3dpbmdJblJpZ2h0RndkLFxuICAgIHN3aW5nT3V0UmlnaHRGd2QsXG4gICAgc3dpbmdJbkxlZnRGd2QsXG4gICAgc3dpbmdPdXRMZWZ0dEZ3ZCxcbiAgICBzd2luZ0luUmlnaHRCY2ssXG4gICAgc3dpbmdPdXRSaWdodEJjayxcbiAgICBzd2luZ0luTGVmdEJjayxcbiAgICBzd2luZ091dExlZnRCY2ssXG5dO1xuY29uc3QgdmVydGljYWxBbmltYXRpb25zOiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YVtdID0gW1xuICAgIGZsaXBUb3AsXG4gICAgZmxpcEJvdHRvbSxcbiAgICBmbGlwSG9yRndkLFxuICAgIGZsaXBIb3JCY2ssXG4gICAgZ3Jvd1ZlckluLFxuICAgIGdyb3dWZXJPdXQsXG4gICAgcm90YXRlSW5Ub3AsXG4gICAgcm90YXRlT3V0VG9wLFxuICAgIHJvdGF0ZUluQm90dG9tLFxuICAgIHJvdGF0ZU91dEJvdHRvbSxcbiAgICByb3RhdGVJblRyLFxuICAgIHJvdGF0ZU91dFRyLFxuICAgIHJvdGF0ZUluQnIsXG4gICAgcm90YXRlT3V0QnIsXG4gICAgcm90YXRlSW5CbCxcbiAgICByb3RhdGVPdXRCbCxcbiAgICByb3RhdGVJblRsLFxuICAgIHJvdGF0ZU91dFRsLFxuICAgIHNjYWxlSW5Ub3AsXG4gICAgc2NhbGVPdXRUb3AsXG4gICAgc2NhbGVJbkJvdHRvbSxcbiAgICBzY2FsZU91dEJvdHRvbSxcbiAgICBzY2FsZUluVHIsXG4gICAgc2NhbGVPdXRUcixcbiAgICBzY2FsZUluQnIsXG4gICAgc2NhbGVPdXRCcixcbiAgICBzY2FsZUluQmwsXG4gICAgc2NhbGVPdXRCbCxcbiAgICBzY2FsZUluVGwsXG4gICAgc2NhbGVPdXRUbCxcbiAgICBzY2FsZUluVmVyVG9wLFxuICAgIHNjYWxlT3V0VmVyVG9wLFxuICAgIHNjYWxlSW5WZXJCb3R0b20sXG4gICAgc2NhbGVPdXRWZXJCb3R0b20sXG4gICAgc2xpZGVJblRvcCxcbiAgICBzbGlkZU91dFRvcCxcbiAgICBzbGlkZUluQm90dG9tLFxuICAgIHNsaWRlT3V0Qm90dG9tLFxuICAgIHNsaWRlSW5UcixcbiAgICBzbGlkZU91dFRyLFxuICAgIHNsaWRlSW5CcixcbiAgICBzbGlkZU91dEJyLFxuICAgIHNsaWRlSW5CbCxcbiAgICBzbGlkZU91dEJsLFxuICAgIHNsaWRlSW5UbCxcbiAgICBzbGlkZU91dFRsLFxuICAgIHN3aW5nSW5Ub3BGd2QsXG4gICAgc3dpbmdPdXRUb3BGd2QsXG4gICAgc3dpbmdJbkJvdHRvbUZ3ZCxcbiAgICBzd2luZ091dEJvdHRvbUZ3ZCxcbiAgICBzd2luZ0luVG9wQmNrLFxuICAgIHN3aW5nT3V0VG9wQmNrLFxuICAgIHN3aW5nSW5Cb3R0b21CY2ssXG4gICAgc3dpbmdPdXRCb3R0b21CY2ssXG5dO1xuXG5cbi8qKlxuICogU2ltaWxhciB0byBBbmd1bGFyJ3MgZm9ybWF0RGF0ZS4gSG93ZXZlciBpdCB3aWxsIG5vdCB0aHJvdyBvbiBgdW5kZWZpbmVkIHwgbnVsbCB8ICcnYCBpbnN0ZWFkXG4gKiBjb2FsZXNjaW5nIHRvIGFuIGVtcHR5IHN0cmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IGZvcm1hdERhdGUgPSAodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IERhdGUsIGZvcm1hdDogc3RyaW5nLCBsb2NhbGU6IHN0cmluZywgdGltZXpvbmU/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBfZm9ybWF0RGF0ZSh2YWx1ZSwgZm9ybWF0LCBsb2NhbGUsIHRpbWV6b25lKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9IG5ldyBDdXJyZW5jeVBpcGUodW5kZWZpbmVkKS50cmFuc2Zvcm07XG4iXX0=
|