@ngx-formly/core 5.10.24 → 5.10.28

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.
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { isObservable } from 'rxjs';
6
6
  import { AbstractControl } from '@angular/forms';
7
+ import { TemplateRef } from '@angular/core';
7
8
  /**
8
9
  * @param {?} formId
9
10
  * @param {?} field
@@ -216,6 +217,7 @@ export function isPromise(obj) {
216
217
  export function clone(value) {
217
218
  if (!isObject(value)
218
219
  || isObservable(value)
220
+ || (value instanceof TemplateRef)
219
221
  || /* instanceof SafeHtmlImpl */ value.changingThisBreaksApplicationSecurity
220
222
  || ['RegExp', 'FileList', 'File', 'Blob'].indexOf(value.constructor.name) !== -1) {
221
223
  return value;
@@ -349,4 +351,4 @@ export function reduceFormUpdateValidityCalls(form, action) {
349
351
  updateValidityArgs.called && updateValidity({ emitEvent: updateValidityArgs.emitEvent });
350
352
  form._updateTreeValidity = updateValidity;
351
353
  }
352
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LWZvcm1seS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQUdqRCxNQUFNLFVBQVUsVUFBVSxDQUFDLE1BQWMsRUFBRSxLQUF3QixFQUFFLEtBQW9CO0lBQ3ZGLElBQUksS0FBSyxDQUFDLEVBQUU7UUFBRSxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUM7O1FBQzFCLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSTtJQUNyQixJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxRQUFRO1FBQUUsSUFBSSxHQUFHLFVBQVUsQ0FBQztJQUMvQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwRCxDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBNkI7SUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7UUFDZCxPQUFPLEVBQUUsQ0FBQztLQUNYO0lBRUQseUdBQXlHO0lBQ3pHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUU7O1lBQ25ELElBQUksR0FBYSxFQUFFO1FBQ3ZCLElBQUksT0FBTyxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRTs7a0JBQzNCLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRztnQkFDWCxD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LENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN6RixJQUFJLENBQUMsbUJBQW1CLEdBQUcsY0FBYyxDQUFDO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJy4vY29yZSc7XG5pbXBvcnQgeyBpc09ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybWx5LmZpZWxkLmNvbmZpZyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZElkKGZvcm1JZDogc3RyaW5nLCBmaWVsZDogRm9ybWx5RmllbGRDb25maWcsIGluZGV4OiBzdHJpbmd8bnVtYmVyKSB7XG4gIGlmIChmaWVsZC5pZCkgcmV0dXJuIGZpZWxkLmlkO1xuICBsZXQgdHlwZSA9IGZpZWxkLnR5cGU7XG4gIGlmICghdHlwZSAmJiBmaWVsZC50ZW1wbGF0ZSkgdHlwZSA9ICd0ZW1wbGF0ZSc7XG4gIHJldHVybiBbZm9ybUlkLCB0eXBlLCBmaWVsZC5rZXksIGluZGV4XS5qb2luKCdfJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRLZXlQYXRoKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlKTogc3RyaW5nW10ge1xuICBpZiAoIWZpZWxkLmtleSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8qIFdlIHN0b3JlIHRoZSBrZXlQYXRoIGluIHRoZSBmaWVsZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBmcmVxdWVudGx5LiAqL1xuICBpZiAoIWZpZWxkLl9rZXlQYXRoIHx8IGZpZWxkLl9rZXlQYXRoLmtleSAhPT0gZmllbGQua2V5KSB7XG4gICAgbGV0IHBhdGg6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHR5cGVvZiBmaWVsZC5rZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBrZXkgPSBmaWVsZC5rZXkuaW5kZXhPZignWycpID09PSAtMVxuICAgICAgICA/IGZpZWxkLmtleVxuICAgICAgICA6IGZpZWxkLmtleS5yZXBsYWNlKC9cXFsoXFx3KylcXF0vZywgJy4kMScpO1xuICAgICAgcGF0aCA9IGtleS5pbmRleE9mKCcuJykgIT09IC0xID8ga2V5LnNwbGl0KCcuJykgOiBba2V5XTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQua2V5KSkge1xuICAgICAgcGF0aCA9IGZpZWxkLmtleS5zbGljZSgwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aCA9IFtgJHtmaWVsZC5rZXl9YF07XG4gICAgfVxuXG4gICAgZmllbGQuX2tleVBhdGggPSB7IGtleTogZmllbGQua2V5LCBwYXRoIH07XG4gIH1cblxuICByZXR1cm4gZmllbGQuX2tleVBhdGgucGF0aC5zbGljZSgwKTtcbn1cblxuZXhwb3J0IGNvbnN0IEZPUk1MWV9WQUxJREFUT1JTID0gWydyZXF1aXJlZCcsICdwYXR0ZXJuJywgJ21pbkxlbmd0aCcsICdtYXhMZW5ndGgnLCAnbWluJywgJ21heCddO1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduRmllbGRWYWx1ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSwgdmFsdWU6IGFueSkge1xuICBsZXQgcGF0aHMgPSBnZXRLZXlQYXRoKGZpZWxkKTtcbiAgaWYgKHBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCByb290ID0gZmllbGQ7XG4gIHdoaWxlIChyb290LnBhcmVudCkge1xuICAgIHJvb3QgPSByb290LnBhcmVudDtcbiAgICBwYXRocyA9IFsuLi5nZXRLZXlQYXRoKHJvb3QpLCAuLi5wYXRoc107XG4gIH1cblxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBmaWVsZC5yZXNldE9uSGlkZSkge1xuICAgIGNvbnN0IGsgPSBwYXRocy5wb3AoKTtcbiAgICBjb25zdCBtID0gcGF0aHMucmVkdWNlKChtb2RlbCwgcGF0aCkgPT4gbW9kZWxbcGF0aF0gfHwge30sIHJvb3QubW9kZWwpO1xuICAgIGRlbGV0ZSBtW2tdO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGFzc2lnbk1vZGVsVmFsdWUocm9vdC5tb2RlbCwgcGF0aHMsIHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbk1vZGVsVmFsdWUobW9kZWw6IGFueSwgcGF0aHM6IHN0cmluZ1tdLCB2YWx1ZTogYW55KSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgKHBhdGhzLmxlbmd0aCAtIDEpOyBpKyspIHtcbiAgICBjb25zdCBwYXRoID0gcGF0aHNbaV07XG4gICAgaWYgKCFtb2RlbFtwYXRoXSB8fCAhaXNPYmplY3QobW9kZWxbcGF0aF0pKSB7XG4gICAgICBtb2RlbFtwYXRoXSA9IC9eXFxkKyQvLnRlc3QocGF0aHNbaSArIDFdKSA/IFtdIDoge307XG4gICAgfVxuXG4gICAgbW9kZWwgPSBtb2RlbFtwYXRoXTtcbiAgfVxuXG4gIG1vZGVsW3BhdGhzW3BhdGhzLmxlbmd0aCAtIDFdXSA9IGNsb25lKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpZWxkSW5pdGlhbFZhbHVlKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykge1xuICBsZXQgdmFsdWUgPSBmaWVsZC5vcHRpb25zWydfaW5pdGlhbE1vZGVsJ107XG4gIGxldCBwYXRocyA9IGdldEtleVBhdGgoZmllbGQpO1xuICB3aGlsZSAoZmllbGQucGFyZW50KSB7XG4gICAgZmllbGQgPSBmaWVsZC5wYXJlbnQ7XG4gICAgcGF0aHMgPSBbLi4uZ2V0S2V5UGF0aChmaWVsZCksIC4uLnBhdGhzXTtcbiAgfVxuXG4gIGZvciAoY29uc3QgcGF0aCBvZiBwYXRocykge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHZhbHVlID0gdmFsdWVbcGF0aF07XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZFZhbHVlKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyk6IGFueSB7XG4gIGxldCBtb2RlbCA9IGZpZWxkLnBhcmVudC5tb2RlbDtcbiAgZm9yIChjb25zdCBwYXRoIG9mIGdldEtleVBhdGgoZmllbGQpKSB7XG4gICAgaWYgKCFtb2RlbCkge1xuICAgICAgcmV0dXJuIG1vZGVsO1xuICAgIH1cbiAgICBtb2RlbCA9IG1vZGVsW3BhdGhdO1xuICB9XG5cbiAgcmV0dXJuIG1vZGVsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV2ZXJzZURlZXBNZXJnZShkZXN0OiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gIGFyZ3MuZm9yRWFjaChzcmMgPT4ge1xuICAgIGZvciAobGV0IHNyY0FyZyBpbiBzcmMpIHtcbiAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZChkZXN0W3NyY0FyZ10pIHx8IGlzQmxhbmtTdHJpbmcoZGVzdFtzcmNBcmddKSkge1xuICAgICAgICBkZXN0W3NyY0FyZ10gPSBjbG9uZShzcmNbc3JjQXJnXSk7XG4gICAgICB9IGVsc2UgaWYgKG9iakFuZFNhbWVUeXBlKGRlc3Rbc3JjQXJnXSwgc3JjW3NyY0FyZ10pKSB7XG4gICAgICAgIHJldmVyc2VEZWVwTWVyZ2UoZGVzdFtzcmNBcmddLCBzcmNbc3JjQXJnXSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGRlc3Q7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bGxPclVuZGVmaW5lZCh2YWx1ZTogYW55KSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWU6IGFueSkge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQmxhbmtTdHJpbmcodmFsdWU6IGFueSkge1xuICByZXR1cm4gdmFsdWUgPT09ICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZTogYW55KSB7XG4gIHJldHVybiB0eXBlb2YodmFsdWUpID09PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqQW5kU2FtZVR5cGUob2JqMTogYW55LCBvYmoyOiBhbnkpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KG9iajEpICYmIGlzT2JqZWN0KG9iajIpXG4gICAgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iajEpID09PSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqMilcbiAgICAmJiAhKEFycmF5LmlzQXJyYXkob2JqMSkgfHwgQXJyYXkuaXNBcnJheShvYmoyKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdCh4OiBhbnkpIHtcbiAgcmV0dXJuIHggIT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2Uob2JqOiBhbnkpOiBvYmogaXMgUHJvbWlzZTxhbnk+IHtcbiAgcmV0dXJuICEhb2JqICYmIHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lKHZhbHVlOiBhbnkpOiBhbnkge1xuICBpZiAoXG4gICAgIWlzT2JqZWN0KHZhbHVlKVxuICAgIHx8IGlzT2JzZXJ2YWJsZSh2YWx1ZSlcbiAgICB8fCAvKiBpbnN0YW5jZW9mIFNhZmVIdG1sSW1wbCAqLyB2YWx1ZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5XG4gICAgfHwgWydSZWdFeHAnLCAnRmlsZUxpc3QnLCAnRmlsZScsICdCbG9iJ10uaW5kZXhPZih2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lKSAhPT0gLTFcbiAgKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgcmV0dXJuIG5ldyBTZXQodmFsdWUpO1xuICB9XG5cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgcmV0dXJuIG5ldyBNYXAodmFsdWUpO1xuICB9XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvYmxvYi9tYXN0ZXIvbW9tZW50LmpzI0wyNTJcbiAgaWYgKHZhbHVlLl9pc0FNb21lbnRPYmplY3QgJiYgaXNGdW5jdGlvbih2YWx1ZS5jbG9uZSkpIHtcbiAgICByZXR1cm4gdmFsdWUuY2xvbmUoKTtcbiAgfVxuXG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFic3RyYWN0Q29udHJvbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZS5nZXRUaW1lKCkpO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnNsaWNlKDApLm1hcCh2ID0+IGNsb25lKHYpKTtcbiAgfVxuXG4gIC8vIGJlc3Qgd2F5IHRvIGNsb25lIGEganMgb2JqZWN0IG1heWJlXG4gIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQxNDc0OTg2L2hvdy10by1jbG9uZS1hLWphdmFzY3JpcHQtZXM2LWNsYXNzLWluc3RhbmNlXG4gIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTtcbiAgbGV0IGMgPSBPYmplY3QuY3JlYXRlKHByb3RvKTtcbiAgYyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZihjLCBwcm90byk7XG4gIC8vIG5lZWQgdG8gbWFrZSBhIGRlZXAgY29weSBzbyB3ZSBkb250IHVzZSBPYmplY3QuYXNzaWduXG4gIC8vIGFsc28gT2JqZWN0LmFzc2lnbiB3b250IGNvcHkgcHJvcGVydHkgZGVzY3JpcHRvciBleGFjdGx5XG4gIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZSkucmVkdWNlKChuZXdWYWwsIHByb3ApID0+IHtcbiAgICBjb25zdCBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUsIHByb3ApO1xuICAgIGlmIChwcm9wRGVzYy5nZXQpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdWYWwsIHByb3AsIHByb3BEZXNjKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VmFsW3Byb3BdID0gY2xvbmUodmFsdWVbcHJvcF0pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdWYWw7XG4gIH0sIGMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lSGlkZGVuUHJvcChmaWVsZDogYW55LCBwcm9wOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogYW55KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmaWVsZCwgcHJvcCwgeyBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgZmllbGRbcHJvcF0gPSBkZWZhdWx0VmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUHJvcGVydHk8VCA9IGFueT4oXG4gIG86IGFueSxcbiAgcHJvcDogc3RyaW5nLFxuICBzZXRGbjogKGNoYW5nZToge2N1cnJlbnRWYWx1ZTogVCwgcHJldmlvdXNWYWx1ZT86IFQsIGZpcnN0Q2hhbmdlOiBib29sZWFufSkgPT4gdm9pZCxcbikge1xuICBpZiAoIW8uX29ic2VydmVycykge1xuICAgIGRlZmluZUhpZGRlblByb3AobywgJ19vYnNlcnZlcnMnLCB7fSk7XG4gIH1cblxuICBpZiAoIW8uX29ic2VydmVyc1twcm9wXSkge1xuICAgIG8uX29ic2VydmVyc1twcm9wXSA9IFtdO1xuICB9XG5cbiAgbGV0IGZuczogdHlwZW9mIHNldEZuW10gPSBvLl9vYnNlcnZlcnNbcHJvcF07XG4gIGlmIChmbnMuaW5kZXhPZihzZXRGbikgPT09IC0xKSB7XG4gICAgZm5zLnB1c2goc2V0Rm4pO1xuICAgIHNldEZuKHsgY3VycmVudFZhbHVlOiBvW3Byb3BdLCBmaXJzdENoYW5nZTogdHJ1ZSB9KTtcbiAgICBpZiAoZm5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgZGVmaW5lSGlkZGVuUHJvcChvLCBgX19fJCR7cHJvcH1gLCBvW3Byb3BdKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBwcm9wLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiAoKSA9PiBvW2BfX18kJHtwcm9wfWBdLFxuICAgICAgICBzZXQ6IGN1cnJlbnRWYWx1ZSA9PiB7XG4gICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gb1tgX19fJCR7cHJvcH1gXSkge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IG9bYF9fXyQke3Byb3B9YF07XG4gICAgICAgICAgICBvW2BfX18kJHtwcm9wfWBdID0gY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgZm5zLmZvckVhY2goY2hhbmdlRm4gPT4gY2hhbmdlRm4oeyBwcmV2aW91c1ZhbHVlLCBjdXJyZW50VmFsdWUsIGZpcnN0Q2hhbmdlOiBmYWxzZSB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICgpID0+IGZucy5zcGxpY2UoZm5zLmluZGV4T2Yoc2V0Rm4pLCAxKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZHVjZUZvcm1VcGRhdGVWYWxpZGl0eUNhbGxzKGZvcm06IGFueSwgYWN0aW9uOiBGdW5jdGlvbikge1xuICBjb25zdCB1cGRhdGVWYWxpZGl0eSA9IGZvcm0uX3VwZGF0ZVRyZWVWYWxpZGl0eS5iaW5kKGZvcm0pO1xuXG4gIGxldCB1cGRhdGVWYWxpZGl0eUFyZ3MgPSB7IGNhbGxlZDogZmFsc2UsIGVtaXRFdmVudDogZmFsc2UgfTtcbiAgZm9ybS5fdXBkYXRlVHJlZVZhbGlkaXR5ID0gKHsgZW1pdEV2ZW50IH0gPSB7IGVtaXRFdmVudDogdHJ1ZSB9KSA9PiB1cGRhdGVWYWxpZGl0eUFyZ3MgPSB7IGNhbGxlZDogdHJ1ZSwgZW1pdEV2ZW50OiBlbWl0RXZlbnQgfHwgdXBkYXRlVmFsaWRpdHlBcmdzLmVtaXRFdmVudCB9O1xuICBhY3Rpb24oKTtcblxuICB1cGRhdGVWYWxpZGl0eUFyZ3MuY2FsbGVkICYmIHVwZGF0ZVZhbGlkaXR5KHsgZW1pdEV2ZW50OiB1cGRhdGVWYWxpZGl0eUFyZ3MuZW1pdEV2ZW50IH0pO1xuICBmb3JtLl91cGRhdGVUcmVlVmFsaWRpdHkgPSB1cGRhdGVWYWxpZGl0eTtcbn1cbiJdfQ==
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LWZvcm1seS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBRTVDLE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBYyxFQUFFLEtBQXdCLEVBQUUsS0FBb0I7SUFDdkYsSUFBSSxLQUFLLENBQUMsRUFBRTtRQUFFLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQzs7UUFDMUIsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJO0lBQ3JCLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVE7UUFBRSxJQUFJLEdBQUcsVUFBVSxDQUFDO0lBQy9DLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BELENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUE2QjtJQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUNkLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFFRCx5R0FBeUc7SUFDekcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRTs7WUFDbkQsSUFBSSxHQUFhLEVBQUU7UUFDdkIsSUFBSSxPQUFPLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFOztrQkFDM0IsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FB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QUFNLEVBQUUsQ0FBQztJQUVULGtCQUFrQixDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN6RixJQUFJLENBQUMsbUJBQW1CLEdBQUcsY0FBYyxDQUFDO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJy4vY29yZSc7XG5pbXBvcnQgeyBpc09ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybWx5LmZpZWxkLmNvbmZpZyc7XG5pbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmllbGRJZChmb3JtSWQ6IHN0cmluZywgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLCBpbmRleDogc3RyaW5nfG51bWJlcikge1xuICBpZiAoZmllbGQuaWQpIHJldHVybiBmaWVsZC5pZDtcbiAgbGV0IHR5cGUgPSBmaWVsZC50eXBlO1xuICBpZiAoIXR5cGUgJiYgZmllbGQudGVtcGxhdGUpIHR5cGUgPSAndGVtcGxhdGUnO1xuICByZXR1cm4gW2Zvcm1JZCwgdHlwZSwgZmllbGQua2V5LCBpbmRleF0uam9pbignXycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5UGF0aChmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSk6IHN0cmluZ1tdIHtcbiAgaWYgKCFmaWVsZC5rZXkpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKiBXZSBzdG9yZSB0aGUga2V5UGF0aCBpbiB0aGUgZmllbGQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgZnJlcXVlbnRseS4gKi9cbiAgaWYgKCFmaWVsZC5fa2V5UGF0aCB8fCBmaWVsZC5fa2V5UGF0aC5rZXkgIT09IGZpZWxkLmtleSkge1xuICAgIGxldCBwYXRoOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICh0eXBlb2YgZmllbGQua2V5ID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3Qga2V5ID0gZmllbGQua2V5LmluZGV4T2YoJ1snKSA9PT0gLTFcbiAgICAgICAgPyBmaWVsZC5rZXlcbiAgICAgICAgOiBmaWVsZC5rZXkucmVwbGFjZSgvXFxbKFxcdyspXFxdL2csICcuJDEnKTtcbiAgICAgIHBhdGggPSBrZXkuaW5kZXhPZignLicpICE9PSAtMSA/IGtleS5zcGxpdCgnLicpIDogW2tleV07XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLmtleSkpIHtcbiAgICAgIHBhdGggPSBmaWVsZC5rZXkuc2xpY2UoMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGggPSBbYCR7ZmllbGQua2V5fWBdO1xuICAgIH1cblxuICAgIGZpZWxkLl9rZXlQYXRoID0geyBrZXk6IGZpZWxkLmtleSwgcGF0aCB9O1xuICB9XG5cbiAgcmV0dXJuIGZpZWxkLl9rZXlQYXRoLnBhdGguc2xpY2UoMCk7XG59XG5cbmV4cG9ydCBjb25zdCBGT1JNTFlfVkFMSURBVE9SUyA9IFsncmVxdWlyZWQnLCAncGF0dGVybicsICdtaW5MZW5ndGgnLCAnbWF4TGVuZ3RoJywgJ21pbicsICdtYXgnXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbkZpZWxkVmFsdWUoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUsIHZhbHVlOiBhbnkpIHtcbiAgbGV0IHBhdGhzID0gZ2V0S2V5UGF0aChmaWVsZCk7XG4gIGlmIChwYXRocy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgcm9vdCA9IGZpZWxkO1xuICB3aGlsZSAocm9vdC5wYXJlbnQpIHtcbiAgICByb290ID0gcm9vdC5wYXJlbnQ7XG4gICAgcGF0aHMgPSBbLi4uZ2V0S2V5UGF0aChyb290KSwgLi4ucGF0aHNdO1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgZmllbGQucmVzZXRPbkhpZGUpIHtcbiAgICBjb25zdCBrID0gcGF0aHMucG9wKCk7XG4gICAgY29uc3QgbSA9IHBhdGhzLnJlZHVjZSgobW9kZWwsIHBhdGgpID0+IG1vZGVsW3BhdGhdIHx8IHt9LCByb290Lm1vZGVsKTtcbiAgICBkZWxldGUgbVtrXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBhc3NpZ25Nb2RlbFZhbHVlKHJvb3QubW9kZWwsIHBhdGhzLCB2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25Nb2RlbFZhbHVlKG1vZGVsOiBhbnksIHBhdGhzOiBzdHJpbmdbXSwgdmFsdWU6IGFueSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IChwYXRocy5sZW5ndGggLSAxKTsgaSsrKSB7XG4gICAgY29uc3QgcGF0aCA9IHBhdGhzW2ldO1xuICAgIGlmICghbW9kZWxbcGF0aF0gfHwgIWlzT2JqZWN0KG1vZGVsW3BhdGhdKSkge1xuICAgICAgbW9kZWxbcGF0aF0gPSAvXlxcZCskLy50ZXN0KHBhdGhzW2kgKyAxXSkgPyBbXSA6IHt9O1xuICAgIH1cblxuICAgIG1vZGVsID0gbW9kZWxbcGF0aF07XG4gIH1cblxuICBtb2RlbFtwYXRoc1twYXRocy5sZW5ndGggLSAxXV0gPSBjbG9uZSh2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZEluaXRpYWxWYWx1ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWcpIHtcbiAgbGV0IHZhbHVlID0gZmllbGQub3B0aW9uc1snX2luaXRpYWxNb2RlbCddO1xuICBsZXQgcGF0aHMgPSBnZXRLZXlQYXRoKGZpZWxkKTtcbiAgd2hpbGUgKGZpZWxkLnBhcmVudCkge1xuICAgIGZpZWxkID0gZmllbGQucGFyZW50O1xuICAgIHBhdGhzID0gWy4uLmdldEtleVBhdGgoZmllbGQpLCAuLi5wYXRoc107XG4gIH1cblxuICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB2YWx1ZSA9IHZhbHVlW3BhdGhdO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmllbGRWYWx1ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWcpOiBhbnkge1xuICBsZXQgbW9kZWwgPSBmaWVsZC5wYXJlbnQubW9kZWw7XG4gIGZvciAoY29uc3QgcGF0aCBvZiBnZXRLZXlQYXRoKGZpZWxkKSkge1xuICAgIGlmICghbW9kZWwpIHtcbiAgICAgIHJldHVybiBtb2RlbDtcbiAgICB9XG4gICAgbW9kZWwgPSBtb2RlbFtwYXRoXTtcbiAgfVxuXG4gIHJldHVybiBtb2RlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJldmVyc2VEZWVwTWVyZ2UoZGVzdDogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xuICBhcmdzLmZvckVhY2goc3JjID0+IHtcbiAgICBmb3IgKGxldCBzcmNBcmcgaW4gc3JjKSB7XG4gICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoZGVzdFtzcmNBcmddKSB8fCBpc0JsYW5rU3RyaW5nKGRlc3Rbc3JjQXJnXSkpIHtcbiAgICAgICAgZGVzdFtzcmNBcmddID0gY2xvbmUoc3JjW3NyY0FyZ10pO1xuICAgICAgfSBlbHNlIGlmIChvYmpBbmRTYW1lVHlwZShkZXN0W3NyY0FyZ10sIHNyY1tzcmNBcmddKSkge1xuICAgICAgICByZXZlcnNlRGVlcE1lcmdlKGRlc3Rbc3JjQXJnXSwgc3JjW3NyY0FyZ10pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBkZXN0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQodmFsdWU6IGFueSkge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0JsYW5rU3RyaW5nKHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuIHZhbHVlID09PSAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWU6IGFueSkge1xuICByZXR1cm4gdHlwZW9mKHZhbHVlKSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9iakFuZFNhbWVUeXBlKG9iajE6IGFueSwgb2JqMjogYW55KSB7XG4gIHJldHVybiBpc09iamVjdChvYmoxKSAmJiBpc09iamVjdChvYmoyKVxuICAgICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmoxKSA9PT0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iajIpXG4gICAgJiYgIShBcnJheS5pc0FycmF5KG9iajEpIHx8IEFycmF5LmlzQXJyYXkob2JqMikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QoeDogYW55KSB7XG4gIHJldHVybiB4ICE9IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcm9taXNlKG9iajogYW55KTogb2JqIGlzIFByb21pc2U8YW55PiB7XG4gIHJldHVybiAhIW9iaiAmJiB0eXBlb2Ygb2JqLnRoZW4gPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZSh2YWx1ZTogYW55KTogYW55IHtcbiAgaWYgKFxuICAgICFpc09iamVjdCh2YWx1ZSlcbiAgICB8fCBpc09ic2VydmFibGUodmFsdWUpXG4gICAgfHwgKHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpXG4gICAgfHwgLyogaW5zdGFuY2VvZiBTYWZlSHRtbEltcGwgKi8gdmFsdWUuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eVxuICAgIHx8IFsnUmVnRXhwJywgJ0ZpbGVMaXN0JywgJ0ZpbGUnLCAnQmxvYiddLmluZGV4T2YodmFsdWUuY29uc3RydWN0b3IubmFtZSkgIT09IC0xXG4gICkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFNldCkge1xuICAgIHJldHVybiBuZXcgU2V0KHZhbHVlKTtcbiAgfVxuXG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkge1xuICAgIHJldHVybiBuZXcgTWFwKHZhbHVlKTtcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2Jsb2IvbWFzdGVyL21vbWVudC5qcyNMMjUyXG4gIGlmICh2YWx1ZS5faXNBTW9tZW50T2JqZWN0ICYmIGlzRnVuY3Rpb24odmFsdWUuY2xvbmUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLmNsb25lKCk7XG4gIH1cblxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUuZ2V0VGltZSgpKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgwKS5tYXAodiA9PiBjbG9uZSh2KSk7XG4gIH1cblxuICAvLyBiZXN0IHdheSB0byBjbG9uZSBhIGpzIG9iamVjdCBtYXliZVxuICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80MTQ3NDk4Ni9ob3ctdG8tY2xvbmUtYS1qYXZhc2NyaXB0LWVzNi1jbGFzcy1pbnN0YW5jZVxuICBjb25zdCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XG4gIGxldCBjID0gT2JqZWN0LmNyZWF0ZShwcm90byk7XG4gIGMgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YoYywgcHJvdG8pO1xuICAvLyBuZWVkIHRvIG1ha2UgYSBkZWVwIGNvcHkgc28gd2UgZG9udCB1c2UgT2JqZWN0LmFzc2lnblxuICAvLyBhbHNvIE9iamVjdC5hc3NpZ24gd29udCBjb3B5IHByb3BlcnR5IGRlc2NyaXB0b3IgZXhhY3RseVxuICByZXR1cm4gT2JqZWN0LmtleXModmFsdWUpLnJlZHVjZSgobmV3VmFsLCBwcm9wKSA9PiB7XG4gICAgY29uc3QgcHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHZhbHVlLCBwcm9wKTtcbiAgICBpZiAocHJvcERlc2MuZ2V0KSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3VmFsLCBwcm9wLCBwcm9wRGVzYyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbFtwcm9wXSA9IGNsb25lKHZhbHVlW3Byb3BdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3VmFsO1xuICB9LCBjKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUhpZGRlblByb3AoZmllbGQ6IGFueSwgcHJvcDogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IGFueSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZmllbGQsIHByb3AsIHsgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gIGZpZWxkW3Byb3BdID0gZGVmYXVsdFZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcFByb3BlcnR5PFQgPSBhbnk+KFxuICBvOiBhbnksXG4gIHByb3A6IHN0cmluZyxcbiAgc2V0Rm46IChjaGFuZ2U6IHtjdXJyZW50VmFsdWU6IFQsIHByZXZpb3VzVmFsdWU/OiBULCBmaXJzdENoYW5nZTogYm9vbGVhbn0pID0+IHZvaWQsXG4pIHtcbiAgaWYgKCFvLl9vYnNlcnZlcnMpIHtcbiAgICBkZWZpbmVIaWRkZW5Qcm9wKG8sICdfb2JzZXJ2ZXJzJywge30pO1xuICB9XG5cbiAgaWYgKCFvLl9vYnNlcnZlcnNbcHJvcF0pIHtcbiAgICBvLl9vYnNlcnZlcnNbcHJvcF0gPSBbXTtcbiAgfVxuXG4gIGxldCBmbnM6IHR5cGVvZiBzZXRGbltdID0gby5fb2JzZXJ2ZXJzW3Byb3BdO1xuICBpZiAoZm5zLmluZGV4T2Yoc2V0Rm4pID09PSAtMSkge1xuICAgIGZucy5wdXNoKHNldEZuKTtcbiAgICBzZXRGbih7IGN1cnJlbnRWYWx1ZTogb1twcm9wXSwgZmlyc3RDaGFuZ2U6IHRydWUgfSk7XG4gICAgaWYgKGZucy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGRlZmluZUhpZGRlblByb3AobywgYF9fXyQke3Byb3B9YCwgb1twcm9wXSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgcHJvcCwge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldDogKCkgPT4gb1tgX19fJCR7cHJvcH1gXSxcbiAgICAgICAgc2V0OiBjdXJyZW50VmFsdWUgPT4ge1xuICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUgIT09IG9bYF9fXyQke3Byb3B9YF0pIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBvW2BfX18kJHtwcm9wfWBdO1xuICAgICAgICAgICAgb1tgX19fJCR7cHJvcH1gXSA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGZucy5mb3JFYWNoKGNoYW5nZUZuID0+IGNoYW5nZUZuKHsgcHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlLCBmaXJzdENoYW5nZTogZmFsc2UgfSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoKSA9PiBmbnMuc3BsaWNlKGZucy5pbmRleE9mKHNldEZuKSwgMSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VGb3JtVXBkYXRlVmFsaWRpdHlDYWxscyhmb3JtOiBhbnksIGFjdGlvbjogRnVuY3Rpb24pIHtcbiAgY29uc3QgdXBkYXRlVmFsaWRpdHkgPSBmb3JtLl91cGRhdGVUcmVlVmFsaWRpdHkuYmluZChmb3JtKTtcblxuICBsZXQgdXBkYXRlVmFsaWRpdHlBcmdzID0geyBjYWxsZWQ6IGZhbHNlLCBlbWl0RXZlbnQ6IGZhbHNlIH07XG4gIGZvcm0uX3VwZGF0ZVRyZWVWYWxpZGl0eSA9ICh7IGVtaXRFdmVudCB9ID0geyBlbWl0RXZlbnQ6IHRydWUgfSkgPT4gdXBkYXRlVmFsaWRpdHlBcmdzID0geyBjYWxsZWQ6IHRydWUsIGVtaXRFdmVudDogZW1pdEV2ZW50IHx8IHVwZGF0ZVZhbGlkaXR5QXJncy5lbWl0RXZlbnQgfTtcbiAgYWN0aW9uKCk7XG5cbiAgdXBkYXRlVmFsaWRpdHlBcmdzLmNhbGxlZCAmJiB1cGRhdGVWYWxpZGl0eSh7IGVtaXRFdmVudDogdXBkYXRlVmFsaWRpdHlBcmdzLmVtaXRFdmVudCB9KTtcbiAgZm9ybS5fdXBkYXRlVHJlZVZhbGlkaXR5ID0gdXBkYXRlVmFsaWRpdHk7XG59XG4iXX0=
@@ -170,7 +170,7 @@ var FormlyJsonschema = /** @class */ (function () {
170
170
  * @param {?} v
171
171
  * @return {?}
172
172
  */
173
- function (v) { return isEmpty(v) ? null : Number(v); })];
173
+ function (v) { return isEmpty(v) ? (v === '' ? null : v) : Number(v); })];
174
174
  if (schema.hasOwnProperty('minimum')) {
175
175
  field.templateOptions.min = schema.minimum;
176
176
  }
@@ -564,12 +564,13 @@ var FormlyJsonschema = /** @class */ (function () {
564
564
  * @param {?} m
565
565
  * @param {?} fs
566
566
  * @param {?} f
567
+ * @param {?=} forceUpdate
567
568
  * @return {?}
568
569
  */
569
- function (m, fs, f) {
570
+ function (m, fs, f, forceUpdate) {
570
571
  /** @type {?} */
571
572
  var control = f.parent.parent.fieldGroup[0].formControl;
572
- if (control.value === -1) {
573
+ if ((control.value === -1) || forceUpdate) {
573
574
  /** @type {?} */
574
575
  var value = f.parent.fieldGroup
575
576
  .map((/**
@@ -873,4 +874,4 @@ var FormlyJsonschema = /** @class */ (function () {
873
874
  return FormlyJsonschema;
874
875
  }());
875
876
  export { FormlyJsonschema };
876
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWpzb24tc2NoZW1hLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LWZvcm1seS9jb3JlL2pzb24tc2NoZW1hLyIsInNvdXJjZXMiOlsiZm9ybWx5LWpzb24tc2NoZW1hLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBbUIsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUNMLGlCQUFpQixJQUFJLGdCQUFnQixFQUNyQyxxQkFBcUIsSUFBSSxvQkFBb0IsRUFDN0MsTUFBTSxJQUFJLEtBQUssR0FDaEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBRXJDLDZDQU9DOzs7Ozs7OztJQURDLHNDQUFvRjs7Ozs7OztBQUl0RixTQUFTLGFBQWEsQ0FBQyxDQUFTO0lBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDaEIsT0FBTyxDQUFDLENBQUM7S0FDVjs7UUFFRyxDQUFDLEdBQUcsQ0FBQzs7UUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQUMsQ0FBQyxFQUFFLENBQUM7S0FBRTtJQUVyRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7Ozs7O0FBRUQsU0FBUyxPQUFPLENBQUMsQ0FBTTtJQUNyQixPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDO0FBQ25ELENBQUM7Ozs7O0FBRUQsU0FBUyxRQUFRLENBQUMsQ0FBTTtJQUN0QixPQUFPLENBQUMsSUFBSSxJ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LENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDakQ7aUJBQU0sSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO2dCQUMzQixFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JCO1NBQ0Y7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7O2dCQXRmRixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzs7MkJBN0RsQztDQW9qQkMsQUF2ZkQsSUF1ZkM7U0F0ZlksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEpTT05TY2hlbWE3LCBKU09OU2NoZW1hN1R5cGVOYW1lIH0gZnJvbSAnanNvbi1zY2hlbWEnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICDJtXJldmVyc2VEZWVwTWVyZ2UgYXMgcmV2ZXJzZURlZXBNZXJnZSxcbiAgybVnZXRGaWVsZEluaXRpYWxWYWx1ZSBhcyBnZXRGaWVsZEluaXRpYWxWYWx1ZSxcbiAgybVjbG9uZSBhcyBjbG9uZSxcbn0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWx5SnNvbnNjaGVtYU9wdGlvbnMge1xuICAvKipcbiAgICogYWxsb3dzIHRvIGludGVyY2VwdCB0aGUgbWFwcGluZywgdGFraW5nIHRoZSBhbHJlYWR5IG1hcHBlZFxuICAgKiBmb3JtbHkgZmllbGQgYW5kIHRoZSBvcmlnaW5hbCBKU09OU2NoZW1hIHNvdXJjZSBmcm9tIHdoaWNoIGl0XG4gICAqIHdhcyBtYXBwZWQuXG4gICAqL1xuICBtYXA/OiAobWFwcGVkRmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLCBtYXBTb3VyY2U6IEpTT05TY2hlbWE3KSA9PiBGb3JtbHlGaWVsZENvbmZpZztcbn1cblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI3ODY1Mjg1XG5mdW5jdGlvbiBkZWNpbWFsUGxhY2VzKGE6IG51bWJlcikge1xuICBpZiAoIWlzRmluaXRlKGEpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBsZXQgZSA9IDEsIHAgPSAwO1xuICB3aGlsZSAoTWF0aC5yb3VuZChhICogZSkgLyBlICE9PSBhKSB7IGUgKj0gMTA7IHArKzsgfVxuXG4gIHJldHVybiBwO1xufVxuXG5mdW5jdGlvbiBpc0VtcHR5KHY6IGFueSkge1xuICByZXR1cm4gdiA9PT0gJycgfHwgdiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHY6IGFueSkge1xuICByZXR1cm4gdiAhPSBudWxsICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2KTtcbn1cblxuZnVuY3Rpb24gaXNDb25zdChzY2hlbWE6IEpTT05TY2hlbWE3KSB7XG4gIHJldHVybiBzY2hlbWEuaGFzT3duUHJvcGVydHkoJ2NvbnN0JykgfHwgKHNjaGVtYS5lbnVtICYmIHNjaGVtYS5lbnVtLmxlbmd0aCA9PT0gMSk7XG59XG5cbmZ1bmN0aW9uIHRvdGFsTWF0Y2hlZEZpZWxkcyhmaWVsZDogRm9ybWx5RmllbGRDb25maWcpOiBudW1iZXIge1xuICBpZiAoIWZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICByZXR1cm4gZmllbGQua2V5ICYmIGdldEZpZWxkSW5pdGlhbFZhbHVlKGZpZWxkKSAhPT0gdW5kZWZpbmVkID8gMSA6IDA7XG4gIH1cblxuICByZXR1cm4gZmllbGQuZmllbGRHcm91cC5yZWR1Y2UoKHMsIGYpID0+IHRvdGFsTWF0Y2hlZEZpZWxkcyhmKSArIHMsIDApO1xufVxuXG5pbnRlcmZhY2UgSU9wdGlvbnMgZXh0ZW5kcyBGb3JtbHlKc29uc2NoZW1hT3B0aW9ucyB7XG4gIHNjaGVtYTogSlNPTlNjaGVtYTc7XG4gIHJlc2V0T25IaWRlPzogYm9vbGVhbjtcbiAgc2hhcmVGb3JtQ29udHJvbD86IGJvb2xlYW47XG4gIGlnbm9yZURlZmF1bHQ/OiBib29sZWFuO1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIGtleT86IEZvcm1seUZpZWxkQ29uZmlnWydrZXknXTtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlKc29uc2NoZW1hIHtcbiAgdG9GaWVsZENvbmZpZyhzY2hlbWE6IEpTT05TY2hlbWE3LCBvcHRpb25zPzogRm9ybWx5SnNvbnNjaGVtYU9wdGlvbnMpOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RvRmllbGRDb25maWcoc2NoZW1hLCB7IHNjaGVtYSwgLi4uKG9wdGlvbnMgfHwge30pIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdG9GaWVsZENvbmZpZyhzY2hlbWE6IEpTT05TY2hlbWE3LCB7IGtleSwgLi4ub3B0aW9ucyB9OiBJT3B0aW9ucyk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgICBzY2hlbWEgPSB0aGlzLnJlc29sdmVTY2hlbWEoc2NoZW1hLCBvcHRpb25zKTtcblxuICAgIGxldCBmaWVsZDogRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgICB0eXBlOiB0aGlzLmd1ZXNzVHlwZShzY2hlbWEpLFxuICAgICAgZGVmYXVsdFZhbHVlOiBzY2hlbWEuZGVmYXVsdCxcbiAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICBsYWJlbDogc2NoZW1hLnRpdGxlLFxuICAgICAgICByZWFkb25seTogc2NoZW1hLnJlYWRPbmx5LFxuICAgICAgICBkZXNjcmlwdGlvbjogc2NoZW1hLmRlc2NyaXB0aW9uLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKGtleSAhPSBudWxsKSB7XG4gICAgICBmaWVsZC5rZXkgPSBrZXk7XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLmlnbm9yZURlZmF1bHQgJiYgKHNjaGVtYS5yZWFkT25seSB8fCBvcHRpb25zLnJlYWRPbmx5KSkge1xuICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIG9wdGlvbnMgPSB7IC4uLm9wdGlvbnMsIHJlYWRPbmx5OiB0cnVlIH07XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucmVzZXRPbkhpZGUpIHtcbiAgICAgIGZpZWxkWydyZXNldE9uSGlkZSddID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zaGFyZUZvcm1Db250cm9sID09PSBmYWxzZSkge1xuICAgICAgZmllbGRbJ3NoYXJlRm9ybUNvbnRyb2wnXSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmlnbm9yZURlZmF1bHQpIHtcbiAgICAgIGRlbGV0ZSBmaWVsZC5kZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICdudWxsJzoge1xuICAgICAgICB0aGlzLmFkZFZhbGlkYXRvcihmaWVsZCwgJ251bGwnLCAoeyB2YWx1ZSB9KSA9PiB2YWx1ZSA9PT0gbnVsbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ2ludGVnZXInOiB7XG4gICAgICAgIGZpZWxkLnBhcnNlcnMgPSBbdiA9PiBpc0VtcHR5KHYpID8gbnVsbCA6IE51bWJlcih2KV07XG4gICAgICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21pbmltdW0nKSkge1xuICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5taW4gPSBzY2hlbWEubWluaW11bTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21heGltdW0nKSkge1xuICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5tYXggPSBzY2hlbWEubWF4aW11bTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ2V4Y2x1c2l2ZU1pbmltdW0nKSkge1xuICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5leGNsdXNpdmVNaW5pbXVtID0gc2NoZW1hLmV4Y2x1c2l2ZU1pbmltdW07XG4gICAgICAgICAgdGhpcy5hZGRWYWxpZGF0b3IoZmllbGQsICdleGNsdXNpdmVNaW5pbXVtJywgKHsgdmFsdWUgfSkgPT4gaXNFbXB0eSh2YWx1ZSkgfHwgKHZhbHVlID4gc2NoZW1hLmV4Y2x1c2l2ZU1pbmltdW0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ2V4Y2x1c2l2ZU1heGltdW0nKSkge1xuICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5leGNsdXNpdmVNYXhpbXVtID0gc2NoZW1hLmV4Y2x1c2l2ZU1heGltdW07XG4gICAgICAgICAgdGhpcy5hZGRWYWxpZGF0b3IoZmllbGQsICdleGNsdXNpdmVNYXhpbXVtJywgKHsgdmFsdWUgfSkgPT4gaXNFbXB0eSh2YWx1ZSkgfHwgKHZhbHVlIDwgc2NoZW1hLmV4Y2x1c2l2ZU1heGltdW0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ211bHRpcGxlT2YnKSkge1xuICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5zdGVwID0gc2NoZW1hLm11bHRpcGxlT2Y7XG4gICAgICAgICAgdGhpcy5hZGRWYWxpZGF0b3IoZmllbGQsICdtdWx0aXBsZU9mJywgKHsgdmFsdWUgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRW1wdHkodmFsdWUpIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgdmFsdWUgPT09IDAgfHwgc2NoZW1hLm11bHRpcGxlT2YgPD0gMCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Fqdi12YWxpZGF0b3IvYWp2L2lzc3Vlcy82NTIjaXNzdWUtMjgzNjEwODU5XG4gICAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gTWF0aC5wb3coMTAsIGRlY2ltYWxQbGFjZXMoc2NoZW1hLm11bHRpcGxlT2YpKTtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogbXVsdGlwbGllcikgJSBNYXRoLnJvdW5kKHNjaGVtYS5tdWx0aXBsZU9mICogbXVsdGlwbGllcikgPT09IDA7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdzdHJpbmcnOiB7XG4gICAgICAgIGNvbnN0IHNjaGVtYVR5cGUgPSBzY2hlbWEudHlwZSBhcyBKU09OU2NoZW1hN1R5cGVOYW1lO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWFUeXBlKSAmJiAoc2NoZW1hVHlwZS5pbmRleE9mKCdudWxsJykgIT09IC0xKSkge1xuICAgICAgICAgIGZpZWxkLnBhcnNlcnMgPSBbdiA9PiBpc0VtcHR5KHYpID8gbnVsbCA6IHZdO1xuICAgICAgICB9XG5cbiAgICAgICAgWydtaW5MZW5ndGgnLCAnbWF4TGVuZ3RoJywgJ3BhdHRlcm4nXS5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9uc1twcm9wXSA9IHNjaGVtYVtwcm9wXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ29iamVjdCc6IHtcbiAgICAgICAgZmllbGQuZmllbGRHcm91cCA9IFtdO1xuXG4gICAgICAgIGNvbnN0IFtwcm9wRGVwcywgc2NoZW1hRGVwc10gPSB0aGlzLnJlc29sdmVEZXBlbmRlbmNpZXMoc2NoZW1hKTtcbiAgICAgICAgT2JqZWN0LmtleXMoc2NoZW1hLnByb3BlcnRpZXMgfHwge30pLmZvckVhY2gocHJvcGVydHkgPT4ge1xuICAgICAgICAgIGNvbnN0IGYgPSB0aGlzLl90b0ZpZWxkQ29uZmlnKDxKU09OU2NoZW1hNz4gc2NoZW1hLnByb3BlcnRpZXNbcHJvcGVydHldLCB7IC4uLm9wdGlvbnMsIGtleTogcHJvcGVydHkgfSk7XG4gICAgICAgICAgZmllbGQuZmllbGRHcm91cC5wdXNoKGYpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIChBcnJheS5pc0FycmF5KHNjaGVtYS5yZXF1aXJlZCkgJiYgc2NoZW1hLnJlcXVpcmVkLmluZGV4T2YocHJvcGVydHkpICE9PSAtMSlcbiAgICAgICAgICAgIHx8IHByb3BEZXBzW3Byb3BlcnR5XVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZi5leHByZXNzaW9uUHJvcGVydGllcyA9IHtcbiAgICAgICAgICAgICAgLi4uKGYuZXhwcmVzc2lvblByb3BlcnRpZXMgfHwge30pLFxuICAgICAgICAgICAgICAndGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkJzogKG0sIHMsIGYpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcGFyZW50ID0gZi5wYXJlbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBmLmZpZWxkR3JvdXAgJiYgZi5rZXkgIT0gbnVsbCA/IHBhcmVudC5tb2RlbCA6IGYubW9kZWw7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHBhcmVudC5rZXkgPT0gbnVsbCAmJiBwYXJlbnQucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVpcmVkID0gcGFyZW50ICYmIHBhcmVudC50ZW1wbGF0ZU9wdGlvbnMgPyBwYXJlbnQudGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKCFtb2RlbCAmJiAhcmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEucmVxdWlyZWQpICYmIHNjaGVtYS5yZXF1aXJlZC5pbmRleE9mKHByb3BlcnR5KSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wRGVwc1twcm9wZXJ0eV0gJiYgKG0gJiYgcHJvcERlcHNbcHJvcGVydHldLnNvbWUoayA9PiAhaXNFbXB0eShtW2tdKSkpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc2NoZW1hRGVwc1twcm9wZXJ0eV0pIHtcbiAgICAgICAgICAgIGNvbnN0IGdldENvbnN0VmFsdWUgPSAoczogSlNPTlNjaGVtYTcpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHMuaGFzT3duUHJvcGVydHkoJ2NvbnN0JykgPyBzLmNvbnN0IDogcy5lbnVtWzBdO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3Qgb25lT2ZTY2hlbWEgPSBzY2hlbWFEZXBzW3Byb3BlcnR5XS5vbmVPZjtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgb25lT2ZTY2hlbWFcbiAgICAgICAgICAgICAgJiYgb25lT2ZTY2hlbWEuZXZlcnkobyA9PiBvLnByb3BlcnRpZXMgJiYgby5wcm9wZXJ0aWVzW3Byb3BlcnR5XSAmJiBpc0NvbnN0KG8ucHJvcGVydGllc1twcm9wZXJ0eV0pKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIG9uZU9mU2NoZW1hLmZvckVhY2gob25lT2ZTY2hlbWFJdGVtID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IFtwcm9wZXJ0eV06IGNvbnN0U2NoZW1hLCAuLi5wcm9wZXJ0aWVzIH0gPSBvbmVPZlNjaGVtYUl0ZW0ucHJvcGVydGllcztcbiAgICAgICAgICAgICAgICBmaWVsZC5maWVsZEdyb3VwLnB1c2goe1xuICAgICAgICAgICAgICAgICAgLi4udGhpcy5fdG9GaWVsZENvbmZpZyh7IC4uLm9uZU9mU2NoZW1hSXRlbSwgcHJvcGVydGllcyB9LCB7IC4uLm9wdGlvbnMsIHJlc2V0T25IaWRlOiB0cnVlIH0pLFxuICAgICAgICAgICAgICAgICAgaGlkZUV4cHJlc3Npb246IG0gPT4gIW0gfHwgZ2V0Q29uc3RWYWx1ZShjb25zdFNjaGVtYSkgIT09IG1bcHJvcGVydHldLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpZWxkLmZpZWxkR3JvdXAucHVzaCh7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5fdG9GaWVsZENvbmZpZyhzY2hlbWFEZXBzW3Byb3BlcnR5XSwgb3B0aW9ucyksXG4gICAgICAgICAgICAgICAgaGlkZUV4cHJlc3Npb246IG0gPT4gIW0gfHwgaXNFbXB0eShtW3Byb3BlcnR5XSksXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoc2NoZW1hLm9uZU9mKSB7XG4gICAgICAgICAgZmllbGQuZmllbGRHcm91cC5wdXNoKHRoaXMucmVzb2x2ZU11bHRpU2NoZW1hKFxuICAgICAgICAgICAgJ29uZU9mJyxcbiAgICAgICAgICAgIDxKU09OU2NoZW1hN1tdPiBzY2hlbWEub25lT2YsXG4gICAgICAgICAgICB7IC4uLm9wdGlvbnMsIHNoYXJlRm9ybUNvbnRyb2w6IGZhbHNlIH0sXG4gICAgICAgICAgKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2NoZW1hLmFueU9mKSB7XG4gICAgICAgICAgZmllbGQuZmllbGRHcm91cC5wdXNoKHRoaXMucmVzb2x2ZU11bHRpU2NoZW1hKFxuICAgICAgICAgICAgJ2FueU9mJyxcbiAgICAgICAgICAgIDxKU09OU2NoZW1hN1tdPiBzY2hlbWEuYW55T2YsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICkpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21pbkl0ZW1zJykpIHtcbiAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMubWluSXRlbXMgPSBzY2hlbWEubWluSXRlbXM7XG4gICAgICAgICAgdGhpcy5hZGRWYWxpZGF0b3IoZmllbGQsICdtaW5JdGVtcycsICh7IHZhbHVlIH0pID0+IGlzRW1wdHkodmFsdWUpIHx8ICh2YWx1ZS5sZW5ndGggPj0gc2NoZW1hLm1pbkl0ZW1zKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnbWF4SXRlbXMnKSkge1xuICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5tYXhJdGVtcyA9IHNjaGVtYS5tYXhJdGVtcztcbiAgICAgICAgICB0aGlzLmFkZFZhbGlkYXRvcihmaWVsZCwgJ21heEl0ZW1zJywgKHsgdmFsdWUgfSkgPT4gaXNFbXB0eSh2YWx1ZSkgfHwgKHZhbHVlLmxlbmd0aCA8PSBzY2hlbWEubWF4SXRlbXMpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCd1bmlxdWVJdGVtcycpKSB7XG4gICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zLnVuaXF1ZUl0ZW1zID0gc2NoZW1hLnVuaXF1ZUl0ZW1zO1xuICAgICAgICAgIHRoaXMuYWRkVmFsaWRhdG9yKGZpZWxkLCAndW5pcXVlSXRlbXMnLCAoeyB2YWx1ZSB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNFbXB0eSh2YWx1ZSkgfHwgIXNjaGVtYS51bmlxdWVJdGVtcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdW5pcXVlSXRlbXMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgICBuZXcgU2V0KHZhbHVlLm1hcCgodjogYW55KSA9PiBKU09OLnN0cmluZ2lmeSh2KSkpLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuIHVuaXF1ZUl0ZW1zLmxlbmd0aCA9PT0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVzb2x2ZSBpdGVtcyBzY2hlbWEgbmVlZGVkIGZvciBpc0VudW0gY2hlY2tcbiAgICAgICAgaWYgKHNjaGVtYS5pdGVtcyAmJiAhQXJyYXkuaXNBcnJheShzY2hlbWEuaXRlbXMpKSB7XG4gICAgICAgICAgc2NoZW1hLml0ZW1zID0gdGhpcy5yZXNvbHZlU2NoZW1hKDxKU09OU2NoZW1hNz4gc2NoZW1hLml0ZW1zLCBvcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRPRE86IHJlbW92ZSBpc0VudW0gY2hlY2sgb25jZSBhZGRpbmcgYW4gb3B0aW9uIHRvIHNraXAgZXh0ZW5zaW9uXG4gICAgICAgIGlmICghdGhpcy5pc0VudW0oc2NoZW1hKSkge1xuICAgICAgICAgIGNvbnN0IF90aGlzID0gdGhpcztcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZmllbGQsICdmaWVsZEFycmF5Jywge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGlmIChzY2hlbWEuaXRlbXMgJiYgIUFycmF5LmlzQXJyYXkoc2NoZW1hLml0ZW1zKSkge1xuICAgICAgICAgICAgICAgIC8vIFdoZW4gaXRlbXMgaXMgYSBzaW5nbGUgc2NoZW1hLCB0aGUgYWRkaXRpb25hbEl0ZW1zIGtleXdvcmQgaXMgbWVhbmluZ2xlc3MsIGFuZCBpdCBzaG91bGQgbm90IGJlIHVzZWQuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLl90b0ZpZWxkQ29uZmlnKDxKU09OU2NoZW1hNz4gc2NoZW1hLml0ZW1zLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuZmllbGRHcm91cCA/IHRoaXMuZmllbGRHcm91cC5sZW5ndGggOiAwO1xuICAgICAgICAgICAgICBpZiAoc2NoZW1hLml0ZW1zICYmIHNjaGVtYS5pdGVtc1tsZW5ndGhdKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZiA9IF90aGlzLl90b0ZpZWxkQ29uZmlnKDxKU09OU2NoZW1hNz4gc2NoZW1hLml0ZW1zW2xlbmd0aF0sIHsgLi4ub3B0aW9uc30pO1xuICAgICAgICAgICAgICAgIGYudGVtcGxhdGVPcHRpb25zLnJlbW92YWJsZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGY7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gc2NoZW1hLmFkZGl0aW9uYWxJdGVtc1xuICAgICAgICAgICAgICAgID8gX3RoaXMuX3RvRmllbGRDb25maWcoPEpTT05TY2hlbWE3PiBzY2hlbWEuYWRkaXRpb25hbEl0ZW1zLCBvcHRpb25zKVxuICAgICAgICAgICAgICAgIDoge307XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ2NvbnN0JykpIHtcbiAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5jb25zdCA9IHNjaGVtYS5jb25zdDtcbiAgICAgIHRoaXMuYWRkVmFsaWRhdG9yKGZpZWxkLCAnY29uc3QnLCAoeyB2YWx1ZSB9KSA9PiB2YWx1ZSA9PT0gc2NoZW1hLmNvbnN0KTtcbiAgICAgIGlmICghZmllbGQudHlwZSkge1xuICAgICAgICBmaWVsZC5kZWZhdWx0VmFsdWUgPSBzY2hlbWEuY29uc3Q7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNFbnVtKHNjaGVtYSkpIHtcbiAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5tdWx0aXBsZSA9IGZpZWxkLnR5cGUgPT09ICdhcnJheSc7XG4gICAgICBmaWVsZC50eXBlID0gJ2VudW0nO1xuICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zLm9wdGlvbnMgPSB0aGlzLnRvRW51bU9wdGlvbnMoc2NoZW1hKTtcbiAgICB9XG5cbiAgICAvLyBtYXAgaW4gcG9zc2libGUgZm9ybWx5Q29uZmlnIG9wdGlvbnMgZnJvbSB0aGUgd2lkZ2V0IHByb3BlcnR5XG4gICAgaWYgKHNjaGVtYVsnd2lkZ2V0J10gJiYgc2NoZW1hWyd3aWRnZXQnXS5mb3JtbHlDb25maWcpIHtcbiAgICAgIGZpZWxkID0gdGhpcy5tZXJnZUZpZWxkcyhmaWVsZCwgc2NoZW1hWyd3aWRnZXQnXS5mb3JtbHlDb25maWcpO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZXJlIGlzIGEgbWFwIGZ1bmN0aW9uIHBhc3NlZCBpbiwgdXNlIGl0IHRvIGFsbG93IHRoZSB1c2VyIHRvXG4gICAgLy8gZnVydGhlciBjdXN0b21pemUgaG93IGZpZWxkcyBhcmUgYmVpbmcgbWFwcGVkXG4gICAgcmV0dXJuIG9wdGlvbnMubWFwID8gb3B0aW9ucy5tYXAoZmllbGQsIHNjaGVtYSkgOiBmaWVsZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVNjaGVtYShzY2hlbWE6IEpTT05TY2hlbWE3LCBvcHRpb25zOiBJT3B0aW9ucykge1xuICAgIGlmIChzY2hlbWEgJiYgc2NoZW1hLiRyZWYpIHtcbiAgICAgIHNjaGVtYSA9IHRoaXMucmVzb2x2ZURlZmluaXRpb24oc2NoZW1hLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hICYmIHNjaGVtYS5hbGxPZikge1xuICAgICAgc2NoZW1hID0gdGhpcy5yZXNvbHZlQWxsT2Yoc2NoZW1hLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlQWxsT2YoeyBhbGxPZiwgLi4uYmFzZVNjaGVtYSB9OiBKU09OU2NoZW1hNywgb3B0aW9uczogSU9wdGlvbnMpIHtcbiAgICBpZiAoIWFsbE9mLmxlbmd0aCkge1xuICAgICAgdGhyb3cgRXJyb3IoYGFsbE9mIGFycmF5IGNhbiBub3QgYmUgZW1wdHkgJHthbGxPZn0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbE9mLnJlZHVjZSgoYmFzZTogSlNPTlNjaGVtYTcsIHNjaGVtYTogSlNPTlNjaGVtYTcpID0+IHtcbiAgICAgIHNjaGVtYSA9IHRoaXMucmVzb2x2ZVNjaGVtYShzY2hlbWEsIG9wdGlvbnMpO1xuICAgICAgaWYgKGJhc2UucmVxdWlyZWQgJiYgc2NoZW1hLnJlcXVpcmVkKSB7XG4gICAgICAgIGJhc2UucmVxdWlyZWQgPSBbLi4uYmFzZS5yZXF1aXJlZCwgLi4uc2NoZW1hLnJlcXVpcmVkXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNjaGVtYS51bmlxdWVJdGVtcykge1xuICAgICAgICBiYXNlLnVuaXF1ZUl0ZW1zID0gc2NoZW1hLnVuaXF1ZUl0ZW1zO1xuICAgICAgfVxuXG4gICAgICAvLyByZXNvbHZlIHRvIG1pbiB2YWx1ZVxuICAgICAgWydtYXhMZW5ndGgnLCAnbWF4aW11bScsICdleGNsdXNpdmVNYXhpbXVtJywgJ21heEl0ZW1zJywgJ21heFByb3BlcnRpZXMnXVxuICAgICAgICAuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgICBpZiAoIWlzRW1wdHkoYmFzZVtwcm9wXSkgJiYgIWlzRW1wdHkoc2NoZW1hW3Byb3BdKSkge1xuICAgICAgICAgICAgYmFzZVtwcm9wXSA9IGJhc2VbcHJvcF0gPCBzY2hlbWFbcHJvcF0gPyBiYXNlW3Byb3BdIDogc2NoZW1hW3Byb3BdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIC8vIHJlc29sdmUgdG8gbWF4IHZhbHVlXG4gICAgICBbJ21pbkxlbmd0aCcsICdtaW5pbXVtJywgJ2V4Y2x1c2l2ZU1pbmltdW0nLCAnbWluSXRlbXMnLCAnbWluUHJvcGVydGllcyddXG4gICAgICAgIC5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICAgIGlmICghaXNFbXB0eShiYXNlW3Byb3BdKSAmJiAhaXNFbXB0eShzY2hlbWFbcHJvcF0pKSB7XG4gICAgICAgICAgICBiYXNlW3Byb3BdID0gYmFzZVtwcm9wXSA+IHNjaGVtYVtwcm9wXSA/IGJhc2VbcHJvcF0gOiBzY2hlbWFbcHJvcF07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJldmVyc2VEZWVwTWVyZ2UoYmFzZSwgc2NoZW1hKTtcbiAgICB9LCBiYXNlU2NoZW1hKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU11bHRpU2NoZW1hKFxuICAgIG1vZGU6ICdvbmVPZicgfCAnYW55T2YnLFxuICAgIHNjaGVtYXM6IEpTT05TY2hlbWE3W10sXG4gICAgb3B0aW9uczogSU9wdGlvbnMsXG4gICk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ211bHRpc2NoZW1hJyxcbiAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdlbnVtJyxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IC0xLFxuICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgbXVsdGlwbGU6IG1vZGUgPT09ICdhbnlPZicsXG4gICAgICAgICAgICBvcHRpb25zOiBzY2hlbWFzXG4gICAgICAgICAgICAgIC5tYXAoKHMsIGkpID0+ICh7IGxhYmVsOiBzLnRpdGxlLCB2YWx1ZTogaSwgZGlzYWJsZWQ6IHMucmVhZE9ubHkgfSkpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICAgIG9uSW5pdDogZiA9PiBmLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICB0YXAoKCkgPT4gKGYub3B0aW9ucyBhcyBhbnkpLl9jaGVja0ZpZWxkKGYucGFyZW50KSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmaWVsZEdyb3VwOiBzY2hlbWFzLm1hcCgocywgaSkgPT4gKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX3RvRmllbGRDb25maWcocywgeyAuLi5vcHRpb25zLCByZXNldE9uSGlkZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgIGhpZGVFeHByZXNzaW9uOiAobSwgZnMsIGYpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IGYucGFyZW50LnBhcmVudC5maWVsZEdyb3VwWzBdLmZvcm1Db250cm9sO1xuICAgICAgICAgICAgICBpZiAoY29udHJvbC52YWx1ZSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBmLnBhcmVudC5maWVsZEdyb3VwXG4gICAgICAgICAgICAgICAgICAubWFwKChmLCBpKSA9PiBbZiwgaV0gYXMgW0Zvcm1seUZpZWxkQ29uZmlnLCBudW1iZXJdKVxuICAgICAgICAgICAgICAgICAgLmZpbHRlcigoW2YsIGldKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRWYWxpZChmLCBzY2hlbWFzW2ldLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAuc29ydCgoW2YxXSwgW2YyXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVkRmllbGRzMSA9IHRvdGFsTWF0Y2hlZEZpZWxkcyhmMSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoZWRGaWVsZHMyID0gdG90YWxNYXRjaGVkRmllbGRzKGYyKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoZWRGaWVsZHMxID09PSBtYXRjaGVkRmllbGRzMikge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChmMS50ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQgPT09IGYyLnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYxLnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCA/IDEgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGVkRmllbGRzMiA+IG1hdGNoZWRGaWVsZHMxID8gMSA6IC0xO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIC5tYXAoKFssIGldKSA9PiBpKVxuICAgICAgICAgICAgICAgICAgO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1vZGUgPT09ICdhbnlPZicpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmluZWRWYWx1ZSA9IHZhbHVlLmZpbHRlcihpID0+IHRvdGFsTWF0Y2hlZEZpZWxkcyhmLnBhcmVudC5maWVsZEdyb3VwW2ldKSk7XG4gICAgICAgICAgICAgICAgICB2YWx1ZSA9IGRlZmluZWRWYWx1ZS5sZW5ndGggPiAwID8gZGVmaW5lZFZhbHVlIDogW3ZhbHVlWzBdIHx8IDBdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUubGVuZ3RoID4gMCA/IHZhbHVlIDogWzBdO1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUobW9kZSA9PT0gJ2FueU9mJyA/IHZhbHVlIDogdmFsdWVbMF0pO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoY29udHJvbC52YWx1ZSlcbiAgICAgICAgICAgICAgICA/IGNvbnRyb2wudmFsdWUuaW5kZXhPZihpKSA9PT0gLTFcbiAgICAgICAgICAgICAgICA6IGNvbnRyb2wudmFsdWUgIT09IGk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZURlZmluaXRpb24oc2NoZW1hOiBKU09OU2NoZW1hNywgb3B0aW9uczogSU9wdGlvbnMpOiBKU09OU2NoZW1hNyB7XG4gICAgY29uc3QgW3VyaSwgcG9pbnRlcl0gPSBzY2hlbWEuJHJlZi5zcGxpdCgnIy8nKTtcbiAgICBpZiAodXJpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgUmVtb3RlIHNjaGVtYXMgZm9yICR7c2NoZW1hLiRyZWZ9IG5vdCBzdXBwb3J0ZWQgeWV0LmApO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb24gPSAhcG9pbnRlciA/IG51bGwgOiBwb2ludGVyLnNwbGl0KCcvJykucmVkdWNlKFxuICAgICAgKGRlZiwgcGF0aCkgPT4gZGVmICYmIGRlZi5oYXNPd25Qcm9wZXJ0eShwYXRoKSA/IGRlZltwYXRoXSA6IG51bGwsXG4gICAgICBvcHRpb25zLnNjaGVtYSxcbiAgICApO1xuXG4gICAgaWYgKCFkZWZpbml0aW9uKSB7XG4gICAgICB0aHJvdyBFcnJvcihgQ2Fubm90IGZpbmQgYSBkZWZpbml0aW9uIGZvciAke3NjaGVtYS4kcmVmfS5gKTtcbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvbi4kcmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvbHZlRGVmaW5pdGlvbihkZWZpbml0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGVmaW5pdGlvbixcbiAgICAgIC4uLlsndGl0bGUnLCAnZGVzY3JpcHRpb24nLCAnZGVmYXVsdCcsICd3aWRnZXQnXS5yZWR1Y2UoKGFubm90YXRpb24sIHApID0+IHtcbiAgICAgICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eShwKSkge1xuICAgICAgICAgIGFubm90YXRpb25bcF0gPSBzY2hlbWFbcF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYW5ub3RhdGlvbjtcbiAgICAgIH0sIHt9KSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlRGVwZW5kZW5jaWVzKHNjaGVtYTogSlNPTlNjaGVtYTcpIHtcbiAgICBjb25zdCBkZXBzID0ge307XG4gICAgY29uc3Qgc2NoZW1hRGVwcyA9IHt9O1xuXG4gICAgT2JqZWN0LmtleXMoc2NoZW1hLmRlcGVuZGVuY2llcyB8fCB7fSkuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgIGNvbnN0IGRlcGVuZGVuY3kgPSBzY2hlbWEuZGVwZW5kZW5jaWVzW3Byb3BdIGFzIEpTT05TY2hlbWE3O1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVwZW5kZW5jeSkpIHtcbiAgICAgICAgLy8gUHJvcGVydHkgZGVwZW5kZW5jaWVzXG4gICAgICAgIGRlcGVuZGVuY3kuZm9yRWFjaChkZXAgPT4ge1xuICAgICAgICAgIGlmICghZGVwc1tkZXBdKSB7XG4gICAgICAgICAgICBkZXBzW2RlcF0gPSBbcHJvcF07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlcHNbZGVwXS5wdXNoKHByb3ApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBzY2hlbWEgZGVwZW5kZW5jaWVzXG4gICAgICAgIHNjaGVtYURlcHNbcHJvcF0gPSBkZXBlbmRlbmN5O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIFtkZXBzLCBzY2hlbWFEZXBzXTtcbiAgfVxuXG4gIHByaXZhdGUgZ3Vlc3NUeXBlKHNjaGVtYTogSlNPTlNjaGVtYTcpIHtcbiAgICBjb25zdCB0eXBlID0gc2NoZW1hID8gc2NoZW1hLnR5cGUgYXMgSlNPTlNjaGVtYTdUeXBlTmFtZSA6IG51bGw7XG4gICAgaWYgKCF0eXBlICYmIHNjaGVtYSAmJiBzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgcmV0dXJuICdvYmplY3QnO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHR5cGUpKSB7XG4gICAgICBpZiAodHlwZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVbMF07XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlLmxlbmd0aCA9PT0gMiAmJiB0eXBlLmluZGV4T2YoJ251bGwnKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVbdHlwZVswXSA9PT0gJ251bGwnID8gMSA6IDBdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRWYWxpZGF0b3IoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLCBuYW1lOiBzdHJpbmcsIHZhbGlkYXRvcjogKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gYm9vbGVhbikge1xuICAgIGZpZWxkLnZhbGlkYXRvcnMgPSBmaWVsZC52YWxpZGF0b3JzIHx8IHt9O1xuICAgIGZpZWxkLnZhbGlkYXRvcnNbbmFtZV0gPSB2YWxpZGF0b3I7XG4gIH1cblxuICBwcml2YXRlIGlzRW51bShzY2hlbWE6IEpTT05TY2hlbWE3KSB7XG4gICAgcmV0dXJuIHNjaGVtYS5lbnVtXG4gICAgICB8fCAoc2NoZW1hLmFueU9mICYmIHNjaGVtYS5hbnlPZi5ldmVyeShpc0NvbnN0KSlcbiAgICAgIHx8IChzY2hlbWEub25lT2YgJiYgc2NoZW1hLm9uZU9mLmV2ZXJ5KGlzQ29uc3QpKVxuICAgICAgfHwgc2NoZW1hLnVuaXF1ZUl0ZW1zICYmIHNjaGVtYS5pdGVtcyAmJiAhQXJyYXkuaXNBcnJheShzY2hlbWEuaXRlbXMpICYmIHRoaXMuaXNFbnVtKDxKU09OU2NoZW1hNz4gc2NoZW1hLml0ZW1zKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9FbnVtT3B0aW9ucyhzY2hlbWE6IEpTT05TY2hlbWE3KSB7XG4gICAgaWYgKHNjaGVtYS5lbnVtKSB7XG4gICAgICByZXR1cm4gc2NoZW1hLmVudW0ubWFwKHZhbHVlID0+ICh7IHZhbHVlLCBsYWJlbDogdmFsdWUgfSkpO1xuICAgIH1cblxuICAgIGNvbnN0IHRvRW51bSA9IChzOiBKU09OU2NoZW1hNykgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBzLmhhc093blByb3BlcnR5KCdjb25zdCcpID8gcy5jb25zdCA6IHMuZW51bVswXTtcbiAgICAgIGNvbnN0IG9wdGlvbjogYW55ID0geyB2YWx1ZTogdmFsdWUsIGxhYmVsOiBzLnRpdGxlIHx8IHZhbHVlIH07XG4gICAgICBpZiAocy5yZWFkT25seSkge1xuICAgICAgICBvcHRpb24uZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH07XG5cbiAgICBpZiAoc2NoZW1hLmFueU9mKSB7XG4gICAgICByZXR1cm4gc2NoZW1hLmFueU9mLm1hcCh0b0VudW0pO1xuICAgIH1cblxuICAgIGlmIChzY2hlbWEub25lT2YpIHtcbiAgICAgIHJldHVybiBzY2hlbWEub25lT2YubWFwKHRvRW51bSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudG9FbnVtT3B0aW9ucyg8SlNPTlNjaGVtYTc+IHNjaGVtYS5pdGVtcyk7XG4gIH1cblxuICBwcml2YXRlIGlzRmllbGRWYWxpZChmaWVsZDogRm9ybWx5RmllbGRDb25maWcsIHNjaGVtYTogSlNPTlNjaGVtYTcsIG9wdGlvbnM6IElPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgY29uc3QgeyBmb3JtIH0gPSAoZmllbGQub3B0aW9ucyBhcyBhbnkpLl9idWlsZEZpZWxkKHtcbiAgICAgIGZvcm06IG5ldyBGb3JtR3JvdXAoe30pLFxuICAgICAgZmllbGRHcm91cDogW3RoaXMuX3RvRmllbGRDb25maWcoc2NoZW1hLCB7IC4uLm9wdGlvbnMsIHJlc2V0T25IaWRlOiB0cnVlLCBpZ25vcmVEZWZhdWx0OiB0cnVlLCBtYXA6IG51bGwgfSldLFxuICAgICAgbW9kZWw6IGZpZWxkLm1vZGVsID8gY2xvbmUoZmllbGQubW9kZWwpIDogKGZpZWxkLmZpZWxkQXJyYXkgPyBbXSA6IHt9KSxcbiAgICB9KTtcblxuICAgIHJldHVybiBmb3JtLnZhbGlkO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZUZpZWxkcyhmMTogRm9ybWx5RmllbGRDb25maWcsIGYyOiBGb3JtbHlGaWVsZENvbmZpZykge1xuICAgIGZvciAobGV0IHByb3AgaW4gZjIpIHtcbiAgICAgIGlmIChpc09iamVjdChmMVtwcm9wXSkgJiYgaXNPYmplY3QoZjJbcHJvcF0pKSB7XG4gICAgICAgIGYxW3Byb3BdID0gdGhpcy5tZXJnZUZpZWxkcyhmMVtwcm9wXSwgZjJbcHJvcF0pO1xuICAgICAgfSBlbHNlIGlmIChmMltwcm9wXSAhPSBudWxsKSB7XG4gICAgICAgIGYxW3Byb3BdID0gZjJbcHJvcF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGYxO1xuICB9XG59XG4iXX0=
877
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWpzb24tc2NoZW1hLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LWZvcm1seS9jb3JlL2pzb24tc2NoZW1hLyIsInNvdXJjZXMiOlsiZm9ybWx5LWpzb24tc2NoZW1hLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBbUIsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUNMLGlCQUFpQixJQUFJLGdCQUFnQixFQUNyQyxxQkFBcUIsSUFBSSxvQkFBb0IsRUFDN0MsTUFBTSxJQUFJLEtBQUssR0FDaEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBRXJDLDZDQU9DOzs7Ozs7OztJQURDLHNDQUFvRjs7Ozs7OztBQUl0RixTQUFTLGFBQWEsQ0FBQyxDQUFTO0lBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDaEIsT0FBTyxDQUFDLENBQUM7S0FDVjs7UUFFRyxDQUFDLEdBQUcsQ0FBQzs7UUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQUMsQ0FBQyxFQUFFLENBQUM7S0FBRTtJQUVyRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7Ozs7O0FBRUQsU0FBUyxPQUFPLENBQUMsQ0FBTTtJQUNyQixPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDO0FBQ25ELENBQUM7Ozs7O0FBRUQsU0FBUyxRQUFRLENBQUMsQ0FBTTtJQUN0QixPQUFPLENBQUMsSUFBSSxJ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LENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7Z0JBQzVDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNqRDtpQkFBTSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUU7Z0JBQzNCLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckI7U0FDRjtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7Z0JBdGZGLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzsyQkE3RGxDO0NBb2pCQyxBQXZmRCxJQXVmQztTQXRmWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgSlNPTlNjaGVtYTcsIEpTT05TY2hlbWE3VHlwZU5hbWUgfSBmcm9tICdqc29uLXNjaGVtYSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIMm1cmV2ZXJzZURlZXBNZXJnZSBhcyByZXZlcnNlRGVlcE1lcmdlLFxuICDJtWdldEZpZWxkSW5pdGlhbFZhbHVlIGFzIGdldEZpZWxkSW5pdGlhbFZhbHVlLFxuICDJtWNsb25lIGFzIGNsb25lLFxufSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtbHlKc29uc2NoZW1hT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBhbGxvd3MgdG8gaW50ZXJjZXB0IHRoZSBtYXBwaW5nLCB0YWtpbmcgdGhlIGFscmVhZHkgbWFwcGVkXG4gICAqIGZvcm1seSBmaWVsZCBhbmQgdGhlIG9yaWdpbmFsIEpTT05TY2hlbWEgc291cmNlIGZyb20gd2hpY2ggaXRcbiAgICogd2FzIG1hcHBlZC5cbiAgICovXG4gIG1hcD86IChtYXBwZWRGaWVsZDogRm9ybWx5RmllbGRDb25maWcsIG1hcFNvdXJjZTogSlNPTlNjaGVtYTcpID0+IEZvcm1seUZpZWxkQ29uZmlnO1xufVxuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjc4NjUyODVcbmZ1bmN0aW9uIGRlY2ltYWxQbGFjZXMoYTogbnVtYmVyKSB7XG4gIGlmICghaXNGaW5pdGUoYSkpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGxldCBlID0gMSwgcCA9IDA7XG4gIHdoaWxlIChNYXRoLnJvdW5kKGEgKiBlKSAvIGUgIT09IGEpIHsgZSAqPSAxMDsgcCsrOyB9XG5cbiAgcmV0dXJuIHA7XG59XG5cbmZ1bmN0aW9uIGlzRW1wdHkodjogYW55KSB7XG4gIHJldHVybiB2ID09PSAnJyB8fCB2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3QodjogYW55KSB7XG4gIHJldHVybiB2ICE9IG51bGwgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHYpO1xufVxuXG5mdW5jdGlvbiBpc0NvbnN0KHNjaGVtYTogSlNPTlNjaGVtYTcpIHtcbiAgcmV0dXJuIHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnY29uc3QnKSB8fCAoc2NoZW1hLmVudW0gJiYgc2NoZW1hLmVudW0ubGVuZ3RoID09PSAxKTtcbn1cblxuZnVuY3Rpb24gdG90YWxNYXRjaGVkRmllbGRzKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyk6IG51bWJlciB7XG4gIGlmICghZmllbGQuZmllbGRHcm91cCkge1xuICAgIHJldHVybiBmaWVsZC5rZXkgJiYgZ2V0RmllbGRJbml0aWFsVmFsdWUoZmllbGQpICE9PSB1bmRlZmluZWQgPyAxIDogMDtcbiAgfVxuXG4gIHJldHVybiBmaWVsZC5maWVsZEdyb3VwLnJlZHVjZSgocywgZikgPT4gdG90YWxNYXRjaGVkRmllbGRzKGYpICsgcywgMCk7XG59XG5cbmludGVyZmFjZSBJT3B0aW9ucyBleHRlbmRzIEZvcm1seUpzb25zY2hlbWFPcHRpb25zIHtcbiAgc2NoZW1hOiBKU09OU2NoZW1hNztcbiAgcmVzZXRPbkhpZGU/OiBib29sZWFuO1xuICBzaGFyZUZvcm1Db250cm9sPzogYm9vbGVhbjtcbiAgaWdub3JlRGVmYXVsdD86IGJvb2xlYW47XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAga2V5PzogRm9ybWx5RmllbGRDb25maWdbJ2tleSddO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEZvcm1seUpzb25zY2hlbWEge1xuICB0b0ZpZWxkQ29uZmlnKHNjaGVtYTogSlNPTlNjaGVtYTcsIG9wdGlvbnM/OiBGb3JtbHlKc29uc2NoZW1hT3B0aW9ucyk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5fdG9GaWVsZENvbmZpZyhzY2hlbWEsIHsgc2NoZW1hLCAuLi4ob3B0aW9ucyB8fCB7fSkgfSk7XG4gIH1cblxuICBwcml2YXRlIF90b0ZpZWxkQ29uZmlnKHNjaGVtYTogSlNPTlNjaGVtYTcsIHsga2V5LCAuLi5vcHRpb25zIH06IElPcHRpb25zKTogRm9ybWx5RmllbGRDb25maWcge1xuICAgIHNjaGVtYSA9IHRoaXMucmVzb2x2ZVNjaGVtYShzY2hlbWEsIG9wdGlvbnMpO1xuXG4gICAgbGV0IGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgIHR5cGU6IHRoaXMuZ3Vlc3NUeXBlKHNjaGVtYSksXG4gICAgICBkZWZhdWx0VmFsdWU6IHNjaGVtYS5kZWZhdWx0LFxuICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgIGxhYmVsOiBzY2hlbWEudGl0bGUsXG4gICAgICAgIHJlYWRvbmx5OiBzY2hlbWEucmVhZE9ubHksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBzY2hlbWEuZGVzY3JpcHRpb24sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAoa2V5ICE9IG51bGwpIHtcbiAgICAgIGZpZWxkLmtleSA9IGtleTtcbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuaWdub3JlRGVmYXVsdCAmJiAoc2NoZW1hLnJlYWRPbmx5IHx8IG9wdGlvbnMucmVhZE9ubHkpKSB7XG4gICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgb3B0aW9ucyA9IHsgLi4ub3B0aW9ucywgcmVhZE9ubHk6IHRydWUgfTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5yZXNldE9uSGlkZSkge1xuICAgICAgZmllbGRbJ3Jlc2V0T25IaWRlJ10gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNoYXJlRm9ybUNvbnRyb2wgPT09IGZhbHNlKSB7XG4gICAgICBmaWVsZFsnc2hhcmVGb3JtQ29udHJvbCddID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaWdub3JlRGVmYXVsdCkge1xuICAgICAgZGVsZXRlIGZpZWxkLmRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgJ251bGwnOiB7XG4gICAgICAgIHRoaXMuYWRkVmFsaWRhdG9yKGZpZWxkLCAnbnVsbCcsICh7IHZhbHVlIH0pID0+IHZhbHVlID09PSBudWxsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnaW50ZWdlcic6IHtcbiAgICAgICAgZmllbGQucGFyc2VycyA9IFt2ID0+IGlzRW1wdHkodikgPyAodiA9PT0gJycgPyBudWxsIDogdikgOiBOdW1iZXIodildO1xuICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtaW5pbXVtJykpIHtcbiAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMubWluID0gc2NoZW1hLm1pbmltdW07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtYXhpbXVtJykpIHtcbiAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMubWF4ID0gc2NoZW1hLm1heGltdW07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdleGNsdXNpdmVNaW5pbXVtJykpIHtcbiAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuZXhjbHVzaXZlTWluaW11bSA9IHNjaGVtYS5leGNsdXNpdmVNaW5pbXVtO1xuICAgICAgICAgIHRoaXMuYWRkVmFsaWRhdG9yKGZpZWxkLCAnZXhjbHVzaXZlTWluaW11bScsICh7IHZhbHVlIH0pID0+IGlzRW1wdHkodmFsdWUpIHx8ICh2YWx1ZSA+IHNjaGVtYS5leGNsdXNpdmVNaW5pbXVtKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdleGNsdXNpdmVNYXhpbXVtJykpIHtcbiAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuZXhjbHVzaXZlTWF4aW11bSA9IHNjaGVtYS5leGNsdXNpdmVNYXhpbXVtO1xuICAgICAgICAgIHRoaXMuYWRkVmFsaWRhdG9yKGZpZWxkLCAnZXhjbHVzaXZlTWF4aW11bScsICh7IHZhbHVlIH0pID0+IGlzRW1wdHkodmFsdWUpIHx8ICh2YWx1ZSA8IHNjaGVtYS5leGNsdXNpdmVNYXhpbXVtKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtdWx0aXBsZU9mJykpIHtcbiAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuc3RlcCA9IHNjaGVtYS5tdWx0aXBsZU9mO1xuICAgICAgICAgIHRoaXMuYWRkVmFsaWRhdG9yKGZpZWxkLCAnbXVsdGlwbGVPZicsICh7IHZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgIGlmIChpc0VtcHR5KHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInIHx8IHZhbHVlID09PSAwIHx8IHNjaGVtYS5tdWx0aXBsZU9mIDw9IDApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hanYtdmFsaWRhdG9yL2Fqdi9pc3N1ZXMvNjUyI2lzc3VlLTI4MzYxMDg1OVxuICAgICAgICAgICAgY29uc3QgbXVsdGlwbGllciA9IE1hdGgucG93KDEwLCBkZWNpbWFsUGxhY2VzKHNjaGVtYS5tdWx0aXBsZU9mKSk7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIG11bHRpcGxpZXIpICUgTWF0aC5yb3VuZChzY2hlbWEubXVsdGlwbGVPZiAqIG11bHRpcGxpZXIpID09PSAwO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnc3RyaW5nJzoge1xuICAgICAgICBjb25zdCBzY2hlbWFUeXBlID0gc2NoZW1hLnR5cGUgYXMgSlNPTlNjaGVtYTdUeXBlTmFtZTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hVHlwZSkgJiYgKHNjaGVtYVR5cGUuaW5kZXhPZignbnVsbCcpICE9PSAtMSkpIHtcbiAgICAgICAgICBmaWVsZC5wYXJzZXJzID0gW3YgPT4gaXNFbXB0eSh2KSA/IG51bGwgOiB2XTtcbiAgICAgICAgfVxuXG4gICAgICAgIFsnbWluTGVuZ3RoJywgJ21heExlbmd0aCcsICdwYXR0ZXJuJ10uZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnNbcHJvcF0gPSBzY2hlbWFbcHJvcF07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICAgIGZpZWxkLmZpZWxkR3JvdXAgPSBbXTtcblxuICAgICAgICBjb25zdCBbcHJvcERlcHMsIHNjaGVtYURlcHNdID0gdGhpcy5yZXNvbHZlRGVwZW5kZW5jaWVzKHNjaGVtYSk7XG4gICAgICAgIE9iamVjdC5rZXlzKHNjaGVtYS5wcm9wZXJ0aWVzIHx8IHt9KS5mb3JFYWNoKHByb3BlcnR5ID0+IHtcbiAgICAgICAgICBjb25zdCBmID0gdGhpcy5fdG9GaWVsZENvbmZpZyg8SlNPTlNjaGVtYTc+IHNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BlcnR5XSwgeyAuLi5vcHRpb25zLCBrZXk6IHByb3BlcnR5IH0pO1xuICAgICAgICAgIGZpZWxkLmZpZWxkR3JvdXAucHVzaChmKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoQXJyYXkuaXNBcnJheShzY2hlbWEucmVxdWlyZWQpICYmIHNjaGVtYS5yZXF1aXJlZC5pbmRleE9mKHByb3BlcnR5KSAhPT0gLTEpXG4gICAgICAgICAgICB8fCBwcm9wRGVwc1twcm9wZXJ0eV1cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGYuZXhwcmVzc2lvblByb3BlcnRpZXMgPSB7XG4gICAgICAgICAgICAgIC4uLihmLmV4cHJlc3Npb25Qcm9wZXJ0aWVzIHx8IHt9KSxcbiAgICAgICAgICAgICAgJ3RlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZCc6IChtLCBzLCBmKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IGYucGFyZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gZi5maWVsZEdyb3VwICYmIGYua2V5ICE9IG51bGwgPyBwYXJlbnQubW9kZWwgOiBmLm1vZGVsO1xuICAgICAgICAgICAgICAgIHdoaWxlIChwYXJlbnQua2V5ID09IG51bGwgJiYgcGFyZW50LnBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlZCA9IHBhcmVudCAmJiBwYXJlbnQudGVtcGxhdGVPcHRpb25zID8gcGFyZW50LnRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZCA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICghbW9kZWwgJiYgIXJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKSAmJiBzY2hlbWEucmVxdWlyZWQuaW5kZXhPZihwcm9wZXJ0eSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcERlcHNbcHJvcGVydHldICYmIChtICYmIHByb3BEZXBzW3Byb3BlcnR5XS5zb21lKGsgPT4gIWlzRW1wdHkobVtrXSkpKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNjaGVtYURlcHNbcHJvcGVydHldKSB7XG4gICAgICAgICAgICBjb25zdCBnZXRDb25zdFZhbHVlID0gKHM6IEpTT05TY2hlbWE3KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBzLmhhc093blByb3BlcnR5KCdjb25zdCcpID8gcy5jb25zdCA6IHMuZW51bVswXTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IG9uZU9mU2NoZW1hID0gc2NoZW1hRGVwc1twcm9wZXJ0eV0ub25lT2Y7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG9uZU9mU2NoZW1hXG4gICAgICAgICAgICAgICYmIG9uZU9mU2NoZW1hLmV2ZXJ5KG8gPT4gby5wcm9wZXJ0aWVzICYmIG8ucHJvcGVydGllc1twcm9wZXJ0eV0gJiYgaXNDb25zdChvLnByb3BlcnRpZXNbcHJvcGVydHldKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBvbmVPZlNjaGVtYS5mb3JFYWNoKG9uZU9mU2NoZW1hSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBbcHJvcGVydHldOiBjb25zdFNjaGVtYSwgLi4ucHJvcGVydGllcyB9ID0gb25lT2ZTY2hlbWFJdGVtLnByb3BlcnRpZXM7XG4gICAgICAgICAgICAgICAgZmllbGQuZmllbGRHcm91cC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX3RvRmllbGRDb25maWcoeyAuLi5vbmVPZlNjaGVtYUl0ZW0sIHByb3BlcnRpZXMgfSwgeyAuLi5vcHRpb25zLCByZXNldE9uSGlkZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgICAgICAgIGhpZGVFeHByZXNzaW9uOiBtID0+ICFtIHx8IGdldENvbnN0VmFsdWUoY29uc3RTY2hlbWEpICE9PSBtW3Byb3BlcnR5XSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZC5maWVsZEdyb3VwLnB1c2goe1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX3RvRmllbGRDb25maWcoc2NoZW1hRGVwc1twcm9wZXJ0eV0sIG9wdGlvbnMpLFxuICAgICAgICAgICAgICAgIGhpZGVFeHByZXNzaW9uOiBtID0+ICFtIHx8IGlzRW1wdHkobVtwcm9wZXJ0eV0pLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHNjaGVtYS5vbmVPZikge1xuICAgICAgICAgIGZpZWxkLmZpZWxkR3JvdXAucHVzaCh0aGlzLnJlc29sdmVNdWx0aVNjaGVtYShcbiAgICAgICAgICAgICdvbmVPZicsXG4gICAgICAgICAgICA8SlNPTlNjaGVtYTdbXT4gc2NoZW1hLm9uZU9mLFxuICAgICAgICAgICAgeyAuLi5vcHRpb25zLCBzaGFyZUZvcm1Db250cm9sOiBmYWxzZSB9LFxuICAgICAgICAgICkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNjaGVtYS5hbnlPZikge1xuICAgICAgICAgIGZpZWxkLmZpZWxkR3JvdXAucHVzaCh0aGlzLnJlc29sdmVNdWx0aVNjaGVtYShcbiAgICAgICAgICAgICdhbnlPZicsXG4gICAgICAgICAgICA8SlNPTlNjaGVtYTdbXT4gc2NoZW1hLmFueU9mLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdtaW5JdGVtcycpKSB7XG4gICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zLm1pbkl0ZW1zID0gc2NoZW1hLm1pbkl0ZW1zO1xuICAgICAgICAgIHRoaXMuYWRkVmFsaWRhdG9yKGZpZWxkLCAnbWluSXRlbXMnLCAoeyB2YWx1ZSB9KSA9PiBpc0VtcHR5KHZhbHVlKSB8fCAodmFsdWUubGVuZ3RoID49IHNjaGVtYS5taW5JdGVtcykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ21heEl0ZW1zJykpIHtcbiAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMubWF4SXRlbXMgPSBzY2hlbWEubWF4SXRlbXM7XG4gICAgICAgICAgdGhpcy5hZGRWYWxpZGF0b3IoZmllbGQsICdtYXhJdGVtcycsICh7IHZhbHVlIH0pID0+IGlzRW1wdHkodmFsdWUpIHx8ICh2YWx1ZS5sZW5ndGggPD0gc2NoZW1hLm1heEl0ZW1zKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgndW5pcXVlSXRlbXMnKSkge1xuICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy51bmlxdWVJdGVtcyA9IHNjaGVtYS51bmlxdWVJdGVtcztcbiAgICAgICAgICB0aGlzLmFkZFZhbGlkYXRvcihmaWVsZCwgJ3VuaXF1ZUl0ZW1zJywgKHsgdmFsdWUgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRW1wdHkodmFsdWUpIHx8ICFzY2hlbWEudW5pcXVlSXRlbXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHVuaXF1ZUl0ZW1zID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgbmV3IFNldCh2YWx1ZS5tYXAoKHY6IGFueSkgPT4gSlNPTi5zdHJpbmdpZnkodikpKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiB1bmlxdWVJdGVtcy5sZW5ndGggPT09IHZhbHVlLmxlbmd0aDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlc29sdmUgaXRlbXMgc2NoZW1hIG5lZWRlZCBmb3IgaXNFbnVtIGNoZWNrXG4gICAgICAgIGlmIChzY2hlbWEuaXRlbXMgJiYgIUFycmF5LmlzQXJyYXkoc2NoZW1hLml0ZW1zKSkge1xuICAgICAgICAgIHNjaGVtYS5pdGVtcyA9IHRoaXMucmVzb2x2ZVNjaGVtYSg8SlNPTlNjaGVtYTc+IHNjaGVtYS5pdGVtcywgb3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUT0RPOiByZW1vdmUgaXNFbnVtIGNoZWNrIG9uY2UgYWRkaW5nIGFuIG9wdGlvbiB0byBza2lwIGV4dGVuc2lvblxuICAgICAgICBpZiAoIXRoaXMuaXNFbnVtKHNjaGVtYSkpIHtcbiAgICAgICAgICBjb25zdCBfdGhpcyA9IHRoaXM7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZpZWxkLCAnZmllbGRBcnJheScsIHtcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBpZiAoc2NoZW1hLml0ZW1zICYmICFBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykpIHtcbiAgICAgICAgICAgICAgICAvLyBXaGVuIGl0ZW1zIGlzIGEgc2luZ2xlIHNjaGVtYSwgdGhlIGFkZGl0aW9uYWxJdGVtcyBrZXl3b3JkIGlzIG1lYW5pbmdsZXNzLCBhbmQgaXQgc2hvdWxkIG5vdCBiZSB1c2VkLlxuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5fdG9GaWVsZENvbmZpZyg8SlNPTlNjaGVtYTc+IHNjaGVtYS5pdGVtcywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSB0aGlzLmZpZWxkR3JvdXAgPyB0aGlzLmZpZWxkR3JvdXAubGVuZ3RoIDogMDtcbiAgICAgICAgICAgICAgaWYgKHNjaGVtYS5pdGVtcyAmJiBzY2hlbWEuaXRlbXNbbGVuZ3RoXSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGYgPSBfdGhpcy5fdG9GaWVsZENvbmZpZyg8SlNPTlNjaGVtYTc+IHNjaGVtYS5pdGVtc1tsZW5ndGhdLCB7IC4uLm9wdGlvbnN9KTtcbiAgICAgICAgICAgICAgICBmLnRlbXBsYXRlT3B0aW9ucy5yZW1vdmFibGUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHNjaGVtYS5hZGRpdGlvbmFsSXRlbXNcbiAgICAgICAgICAgICAgICA/IF90aGlzLl90b0ZpZWxkQ29uZmlnKDxKU09OU2NoZW1hNz4gc2NoZW1hLmFkZGl0aW9uYWxJdGVtcywgb3B0aW9ucylcbiAgICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdjb25zdCcpKSB7XG4gICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuY29uc3QgPSBzY2hlbWEuY29uc3Q7XG4gICAgICB0aGlzLmFkZFZhbGlkYXRvcihmaWVsZCwgJ2NvbnN0JywgKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IHNjaGVtYS5jb25zdCk7XG4gICAgICBpZiAoIWZpZWxkLnR5cGUpIHtcbiAgICAgICAgZmllbGQuZGVmYXVsdFZhbHVlID0gc2NoZW1hLmNvbnN0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRW51bShzY2hlbWEpKSB7XG4gICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMubXVsdGlwbGUgPSBmaWVsZC50eXBlID09PSAnYXJyYXknO1xuICAgICAgZmllbGQudHlwZSA9ICdlbnVtJztcbiAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5vcHRpb25zID0gdGhpcy50b0VudW1PcHRpb25zKHNjaGVtYSk7XG4gICAgfVxuXG4gICAgLy8gbWFwIGluIHBvc3NpYmxlIGZvcm1seUNvbmZpZyBvcHRpb25zIGZyb20gdGhlIHdpZGdldCBwcm9wZXJ0eVxuICAgIGlmIChzY2hlbWFbJ3dpZGdldCddICYmIHNjaGVtYVsnd2lkZ2V0J10uZm9ybWx5Q29uZmlnKSB7XG4gICAgICBmaWVsZCA9IHRoaXMubWVyZ2VGaWVsZHMoZmllbGQsIHNjaGVtYVsnd2lkZ2V0J10uZm9ybWx5Q29uZmlnKTtcbiAgICB9XG5cbiAgICAvLyBpZiB0aGVyZSBpcyBhIG1hcCBmdW5jdGlvbiBwYXNzZWQgaW4sIHVzZSBpdCB0byBhbGxvdyB0aGUgdXNlciB0b1xuICAgIC8vIGZ1cnRoZXIgY3VzdG9taXplIGhvdyBmaWVsZHMgYXJlIGJlaW5nIG1hcHBlZFxuICAgIHJldHVybiBvcHRpb25zLm1hcCA/IG9wdGlvbnMubWFwKGZpZWxkLCBzY2hlbWEpIDogZmllbGQ7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVTY2hlbWEoc2NoZW1hOiBKU09OU2NoZW1hNywgb3B0aW9uczogSU9wdGlvbnMpIHtcbiAgICBpZiAoc2NoZW1hICYmIHNjaGVtYS4kcmVmKSB7XG4gICAgICBzY2hlbWEgPSB0aGlzLnJlc29sdmVEZWZpbml0aW9uKHNjaGVtYSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYSAmJiBzY2hlbWEuYWxsT2YpIHtcbiAgICAgIHNjaGVtYSA9IHRoaXMucmVzb2x2ZUFsbE9mKHNjaGVtYSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVtYTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUFsbE9mKHsgYWxsT2YsIC4uLmJhc2VTY2hlbWEgfTogSlNPTlNjaGVtYTcsIG9wdGlvbnM6IElPcHRpb25zKSB7XG4gICAgaWYgKCFhbGxPZi5sZW5ndGgpIHtcbiAgICAgIHRocm93IEVycm9yKGBhbGxPZiBhcnJheSBjYW4gbm90IGJlIGVtcHR5ICR7YWxsT2Z9LmApO1xuICAgIH1cblxuICAgIHJldHVybiBhbGxPZi5yZWR1Y2UoKGJhc2U6IEpTT05TY2hlbWE3LCBzY2hlbWE6IEpTT05TY2hlbWE3KSA9PiB7XG4gICAgICBzY2hlbWEgPSB0aGlzLnJlc29sdmVTY2hlbWEoc2NoZW1hLCBvcHRpb25zKTtcbiAgICAgIGlmIChiYXNlLnJlcXVpcmVkICYmIHNjaGVtYS5yZXF1aXJlZCkge1xuICAgICAgICBiYXNlLnJlcXVpcmVkID0gWy4uLmJhc2UucmVxdWlyZWQsIC4uLnNjaGVtYS5yZXF1aXJlZF07XG4gICAgICB9XG5cbiAgICAgIGlmIChzY2hlbWEudW5pcXVlSXRlbXMpIHtcbiAgICAgICAgYmFzZS51bmlxdWVJdGVtcyA9IHNjaGVtYS51bmlxdWVJdGVtcztcbiAgICAgIH1cblxuICAgICAgLy8gcmVzb2x2ZSB0byBtaW4gdmFsdWVcbiAgICAgIFsnbWF4TGVuZ3RoJywgJ21heGltdW0nLCAnZXhjbHVzaXZlTWF4aW11bScsICdtYXhJdGVtcycsICdtYXhQcm9wZXJ0aWVzJ11cbiAgICAgICAgLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgICAgaWYgKCFpc0VtcHR5KGJhc2VbcHJvcF0pICYmICFpc0VtcHR5KHNjaGVtYVtwcm9wXSkpIHtcbiAgICAgICAgICAgIGJhc2VbcHJvcF0gPSBiYXNlW3Byb3BdIDwgc2NoZW1hW3Byb3BdID8gYmFzZVtwcm9wXSA6IHNjaGVtYVtwcm9wXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAvLyByZXNvbHZlIHRvIG1heCB2YWx1ZVxuICAgICAgWydtaW5MZW5ndGgnLCAnbWluaW11bScsICdleGNsdXNpdmVNaW5pbXVtJywgJ21pbkl0ZW1zJywgJ21pblByb3BlcnRpZXMnXVxuICAgICAgICAuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgICBpZiAoIWlzRW1wdHkoYmFzZVtwcm9wXSkgJiYgIWlzRW1wdHkoc2NoZW1hW3Byb3BdKSkge1xuICAgICAgICAgICAgYmFzZVtwcm9wXSA9IGJhc2VbcHJvcF0gPiBzY2hlbWFbcHJvcF0gPyBiYXNlW3Byb3BdIDogc2NoZW1hW3Byb3BdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIHJldHVybiByZXZlcnNlRGVlcE1lcmdlKGJhc2UsIHNjaGVtYSk7XG4gICAgfSwgYmFzZVNjaGVtYSk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVNdWx0aVNjaGVtYShcbiAgICBtb2RlOiAnb25lT2YnIHwgJ2FueU9mJyxcbiAgICBzY2hlbWFzOiBKU09OU2NoZW1hN1tdLFxuICAgIG9wdGlvbnM6IElPcHRpb25zLFxuICApOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdtdWx0aXNjaGVtYScsXG4gICAgICBmaWVsZEdyb3VwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnZW51bScsXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiAtMSxcbiAgICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAgIG11bHRpcGxlOiBtb2RlID09PSAnYW55T2YnLFxuICAgICAgICAgICAgb3B0aW9uczogc2NoZW1hc1xuICAgICAgICAgICAgICAubWFwKChzLCBpKSA9PiAoeyBsYWJlbDogcy50aXRsZSwgdmFsdWU6IGksIGRpc2FibGVkOiBzLnJlYWRPbmx5IH0pKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhvb2tzOiB7XG4gICAgICAgICAgICBvbkluaXQ6IGYgPT4gZi5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgdGFwKCgpID0+IChmLm9wdGlvbnMgYXMgYW55KS5fY2hlY2tGaWVsZChmLnBhcmVudCkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZmllbGRHcm91cDogc2NoZW1hcy5tYXAoKHMsIGkpID0+ICh7XG4gICAgICAgICAgICAuLi50aGlzLl90b0ZpZWxkQ29uZmlnKHMsIHsgLi4ub3B0aW9ucywgcmVzZXRPbkhpZGU6IHRydWUgfSksXG4gICAgICAgICAgICBoaWRlRXhwcmVzc2lvbjogKG0sIGZzLCBmLCBmb3JjZVVwZGF0ZT86IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IGYucGFyZW50LnBhcmVudC5maWVsZEdyb3VwWzBdLmZvcm1Db250cm9sO1xuICAgICAgICAgICAgICBpZiAoKGNvbnRyb2wudmFsdWUgPT09IC0xKSB8fCBmb3JjZVVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGYucGFyZW50LmZpZWxkR3JvdXBcbiAgICAgICAgICAgICAgICAgIC5tYXAoKGYsIGkpID0+IFtmLCBpXSBhcyBbRm9ybWx5RmllbGRDb25maWcsIG51bWJlcl0pXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKChbZiwgaV0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNGaWVsZFZhbGlkKGYsIHNjaGVtYXNbaV0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIC5zb3J0KChbZjFdLCBbZjJdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoZWRGaWVsZHMxID0gdG90YWxNYXRjaGVkRmllbGRzKGYxKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlZEZpZWxkczIgPSB0b3RhbE1hdGNoZWRGaWVsZHMoZjIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hlZEZpZWxkczEgPT09IG1hdGNoZWRGaWVsZHMyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGYxLnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCA9PT0gZjIudGVtcGxhdGVPcHRpb25zLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZjEudGVtcGxhdGVPcHRpb25zLmRpc2FibGVkID8gMSA6IC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWRGaWVsZHMyID4gbWF0Y2hlZEZpZWxkczEgPyAxIDogLTE7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgLm1hcCgoWywgaV0pID0+IGkpXG4gICAgICAgICAgICAgICAgICA7XG5cbiAgICAgICAgICAgICAgICBpZiAobW9kZSA9PT0gJ2FueU9mJykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZGVmaW5lZFZhbHVlID0gdmFsdWUuZmlsdGVyKGkgPT4gdG90YWxNYXRjaGVkRmllbGRzKGYucGFyZW50LmZpZWxkR3JvdXBbaV0pKTtcbiAgICAgICAgICAgICAgICAgIHZhbHVlID0gZGVmaW5lZFZhbHVlLmxlbmd0aCA+IDAgPyBkZWZpbmVkVmFsdWUgOiBbdmFsdWVbMF0gfHwgMF07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5sZW5ndGggPiAwID8gdmFsdWUgOiBbMF07XG4gICAgICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShtb2RlID09PSAnYW55T2YnID8gdmFsdWUgOiB2YWx1ZVswXSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShjb250cm9sLnZhbHVlKVxuICAgICAgICAgICAgICAgID8gY29udHJvbC52YWx1ZS5pbmRleE9mKGkpID09PSAtMVxuICAgICAgICAgICAgICAgIDogY29udHJvbC52YWx1ZSAhPT0gaTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlRGVmaW5pdGlvbihzY2hlbWE6IEpTT05TY2hlbWE3LCBvcHRpb25zOiBJT3B0aW9ucyk6IEpTT05TY2hlbWE3IHtcbiAgICBjb25zdCBbdXJpLCBwb2ludGVyXSA9IHNjaGVtYS4kcmVmLnNwbGl0KCcjLycpO1xuICAgIGlmICh1cmkpIHtcbiAgICAgIHRocm93IEVycm9yKGBSZW1vdGUgc2NoZW1hcyBmb3IgJHtzY2hlbWEuJHJlZn0gbm90IHN1cHBvcnRlZCB5ZXQuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmaW5pdGlvbiA9ICFwb2ludGVyID8gbnVsbCA6IHBvaW50ZXIuc3BsaXQoJy8nKS5yZWR1Y2UoXG4gICAgICAoZGVmLCBwYXRoKSA9PiBkZWYgJiYgZGVmLmhhc093blByb3BlcnR5KHBhdGgpID8gZGVmW3BhdGhdIDogbnVsbCxcbiAgICAgIG9wdGlvbnMuc2NoZW1hLFxuICAgICk7XG5cbiAgICBpZiAoIWRlZmluaXRpb24pIHtcbiAgICAgIHRocm93IEVycm9yKGBDYW5ub3QgZmluZCBhIGRlZmluaXRpb24gZm9yICR7c2NoZW1hLiRyZWZ9LmApO1xuICAgIH1cblxuICAgIGlmIChkZWZpbml0aW9uLiRyZWYpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlc29sdmVEZWZpbml0aW9uKGRlZmluaXRpb24sIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5kZWZpbml0aW9uLFxuICAgICAgLi4uWyd0aXRsZScsICdkZXNjcmlwdGlvbicsICdkZWZhdWx0JywgJ3dpZGdldCddLnJlZHVjZSgoYW5ub3RhdGlvbiwgcCkgPT4ge1xuICAgICAgICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KHApKSB7XG4gICAgICAgICAgYW5ub3RhdGlvbltwXSA9IHNjaGVtYVtwXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbm5vdGF0aW9uO1xuICAgICAgfSwge30pLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVEZXBlbmRlbmNpZXMoc2NoZW1hOiBKU09OU2NoZW1hNykge1xuICAgIGNvbnN0IGRlcHMgPSB7fTtcbiAgICBjb25zdCBzY2hlbWFEZXBzID0ge307XG5cbiAgICBPYmplY3Qua2V5cyhzY2hlbWEuZGVwZW5kZW5jaWVzIHx8IHt9KS5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgY29uc3QgZGVwZW5kZW5jeSA9IHNjaGVtYS5kZXBlbmRlbmNpZXNbcHJvcF0gYXMgSlNPTlNjaGVtYTc7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXBlbmRlbmN5KSkge1xuICAgICAgICAvLyBQcm9wZXJ0eSBkZXBlbmRlbmNpZXNcbiAgICAgICAgZGVwZW5kZW5jeS5mb3JFYWNoKGRlcCA9PiB7XG4gICAgICAgICAgaWYgKCFkZXBzW2RlcF0pIHtcbiAgICAgICAgICAgIGRlcHNbZGVwXSA9IFtwcm9wXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVwc1tkZXBdLnB1c2gocHJvcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHNjaGVtYSBkZXBlbmRlbmNpZXNcbiAgICAgICAgc2NoZW1hRGVwc1twcm9wXSA9IGRlcGVuZGVuY3k7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gW2RlcHMsIHNjaGVtYURlcHNdO1xuICB9XG5cbiAgcHJpdmF0ZSBndWVzc1R5cGUoc2NoZW1hOiBKU09OU2NoZW1hNykge1xuICAgIGNvbnN0IHR5cGUgPSBzY2hlbWEgPyBzY2hlbWEudHlwZSBhcyBKU09OU2NoZW1hN1R5cGVOYW1lIDogbnVsbDtcbiAgICBpZiAoIXR5cGUgJiYgc2NoZW1hICYmIHNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICByZXR1cm4gJ29iamVjdCc7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICAgIGlmICh0eXBlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gdHlwZVswXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUubGVuZ3RoID09PSAyICYmIHR5cGUuaW5kZXhPZignbnVsbCcpICE9PSAtMSkge1xuICAgICAgICByZXR1cm4gdHlwZVt0eXBlWzBdID09PSAnbnVsbCcgPyAxIDogMF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBwcml2YXRlIGFkZFZhbGlkYXRvcihmaWVsZDogRm9ybWx5RmllbGRDb25maWcsIG5hbWU6IHN0cmluZywgdmFsaWRhdG9yOiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiBib29sZWFuKSB7XG4gICAgZmllbGQudmFsaWRhdG9ycyA9IGZpZWxkLnZhbGlkYXRvcnMgfHwge307XG4gICAgZmllbGQudmFsaWRhdG9yc1tuYW1lXSA9IHZhbGlkYXRvcjtcbiAgfVxuXG4gIHByaXZhdGUgaXNFbnVtKHNjaGVtYTogSlNPTlNjaGVtYTcpIHtcbiAgICByZXR1cm4gc2NoZW1hLmVudW1cbiAgICAgIHx8IChzY2hlbWEuYW55T2YgJiYgc2NoZW1hLmFueU9mLmV2ZXJ5KGlzQ29uc3QpKVxuICAgICAgfHwgKHNjaGVtYS5vbmVPZiAmJiBzY2hlbWEub25lT2YuZXZlcnkoaXNDb25zdCkpXG4gICAgICB8fCBzY2hlbWEudW5pcXVlSXRlbXMgJiYgc2NoZW1hLml0ZW1zICYmICFBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykgJiYgdGhpcy5pc0VudW0oPEpTT05TY2hlbWE3PiBzY2hlbWEuaXRlbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b0VudW1PcHRpb25zKHNjaGVtYTogSlNPTlNjaGVtYTcpIHtcbiAgICBpZiAoc2NoZW1hLmVudW0pIHtcbiAgICAgIHJldHVybiBzY2hlbWEuZW51bS5tYXAodmFsdWUgPT4gKHsgdmFsdWUsIGxhYmVsOiB2YWx1ZSB9KSk7XG4gICAgfVxuXG4gICAgY29uc3QgdG9FbnVtID0gKHM6IEpTT05TY2hlbWE3KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHMuaGFzT3duUHJvcGVydHkoJ2NvbnN0JykgPyBzLmNvbnN0IDogcy5lbnVtWzBdO1xuICAgICAgY29uc3Qgb3B0aW9uOiBhbnkgPSB7IHZhbHVlOiB2YWx1ZSwgbGFiZWw6IHMudGl0bGUgfHwgdmFsdWUgfTtcbiAgICAgIGlmIChzLnJlYWRPbmx5KSB7XG4gICAgICAgIG9wdGlvbi5kaXNhYmxlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcHRpb247XG4gICAgfTtcblxuICAgIGlmIChzY2hlbWEuYW55T2YpIHtcbiAgICAgIHJldHVybiBzY2hlbWEuYW55T2YubWFwKHRvRW51bSk7XG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS5vbmVPZikge1xuICAgICAgcmV0dXJuIHNjaGVtYS5vbmVPZi5tYXAodG9FbnVtKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50b0VudW1PcHRpb25zKDxKU09OU2NoZW1hNz4gc2NoZW1hLml0ZW1zKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNGaWVsZFZhbGlkKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZywgc2NoZW1hOiBKU09OU2NoZW1hNywgb3B0aW9uczogSU9wdGlvbnMpOiBib29sZWFuIHtcbiAgICBjb25zdCB7IGZvcm0gfSA9IChmaWVsZC5vcHRpb25zIGFzIGFueSkuX2J1aWxkRmllbGQoe1xuICAgICAgZm9ybTogbmV3IEZvcm1Hcm91cCh7fSksXG4gICAgICBmaWVsZEdyb3VwOiBbdGhpcy5fdG9GaWVsZENvbmZpZyhzY2hlbWEsIHsgLi4ub3B0aW9ucywgcmVzZXRPbkhpZGU6IHRydWUsIGlnbm9yZURlZmF1bHQ6IHRydWUsIG1hcDogbnVsbCB9KV0sXG4gICAgICBtb2RlbDogZmllbGQubW9kZWwgPyBjbG9uZShmaWVsZC5tb2RlbCkgOiAoZmllbGQuZmllbGRBcnJheSA/IFtdIDoge30pLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZvcm0udmFsaWQ7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlRmllbGRzKGYxOiBGb3JtbHlGaWVsZENvbmZpZywgZjI6IEZvcm1seUZpZWxkQ29uZmlnKSB7XG4gICAgZm9yIChsZXQgcHJvcCBpbiBmMikge1xuICAgICAgaWYgKGlzT2JqZWN0KGYxW3Byb3BdKSAmJiBpc09iamVjdChmMltwcm9wXSkpIHtcbiAgICAgICAgZjFbcHJvcF0gPSB0aGlzLm1lcmdlRmllbGRzKGYxW3Byb3BdLCBmMltwcm9wXSk7XG4gICAgICB9IGVsc2UgaWYgKGYyW3Byb3BdICE9IG51bGwpIHtcbiAgICAgICAgZjFbcHJvcF0gPSBmMltwcm9wXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZjE7XG4gIH1cbn1cbiJdfQ==