lodash-walk-object 13.1.25 → 13.1.27

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/app.d.ts CHANGED
@@ -1 +1 @@
1
- export declare function dummy1669184414110(): void;
1
+ export declare function dummy1670189616864(): void;
package/app.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dummy1669184414110 = void 0;
4
- function dummy1669184414110() { }
5
- exports.dummy1669184414110 = dummy1669184414110;
6
- //# sourceMappingURL=/Users/dariusz/projects/npm/lodash-walk-object/tmp-bundle-release/bundle/project/lodash-walk-object/bundle-nocutsrc/app.js.map
3
+ exports.dummy1670189616864 = void 0;
4
+ function dummy1670189616864() { }
5
+ exports.dummy1670189616864 = dummy1670189616864;
6
+ //# sourceMappingURL=app.js.map
@@ -351,4 +351,4 @@ export const walk = {
351
351
  Object: Helpers.Walk.Object,
352
352
  ObjectBy: Helpers.Walk.ObjectBy
353
353
  };
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL2xvZGFzaC13YWxrLW9iamVjdC9wcm9qZWN0cy9sb2Rhc2gtd2Fsay1vYmplY3Qvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3pELGNBQWMsVUFBVSxDQUFDO0FBRXpCLFNBQVMsWUFBWSxDQUFDLEdBQWUsRUFBRSxFQUFVLEVBQUUsV0FBb0I7SUFFckUsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUNqQixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDbEIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3RCLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFBO1FBQzlELENBQUMsQ0FBQyxDQUFDO0tBQ0o7U0FBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFFMUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sUUFBUSxHQUFpQixFQUFFLENBQUM7UUFDbEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDckIsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMs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QyxLQUFLLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRTtnQkFDakMsYUFBYTtnQkFDYixPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUN2QjtTQUVGO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUVGO0FBRUQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHO0lBQ2xCLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU07SUFDM0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUTtDQUNoQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvYnJvd3Nlcic7XG4vLyBsZXQgY291bnRlciA9IDBcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcblxuZnVuY3Rpb24gZmluZENoaWxkcmVuKHZlcjogTW9kZWxzLlZlciwgbHA6IHN0cmluZywgd2Fsa0dldHRlcnM6IGJvb2xlYW4pOiBNb2RlbHMuVmVyW10ge1xuXG4gIGNvbnN0IG9iaiA9IHZlci52XG4gIGlmIChfLmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmoubWFwKCh2LCBpKSA9PiB7XG4gICAgICByZXR1cm4geyB2LCBwOiBgJHtscH1bJHtpfV1gLCBwYXJlbnQ6IHZlciwgaXNHZXR0ZXI6IGZhbHNlIH1cbiAgICB9KTtcbiAgfSBlbHNlIGlmIChfLmlzT2JqZWN0KG9iaikpIHtcblxuICAgIGNvbnN0IGFsbEtleXMgPSAhd2Fsa0dldHRlcnMgPyBbXSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaik7XG4gICAgY29uc3QgY2hpbGRyZW46IE1vZGVscy5WZXJbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgaWYgKF8uaXNPYmplY3Qob2JqKSAmJiBfLmlzRnVuY3Rpb24ob2JqLmhhc093blByb3BlcnR5KSAmJiBvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBfLnB1bGwoYWxsS2V5cywga2V5KVxuICAgICAgICBjaGlsZHJlbi5wdXNoKHsgdjogb2JqW2tleV0sIHA6IGAkeyhscCA9PT0gJycpID8gJycgOiBgJHtscH0uYH0ke2tleX1gLCBwYXJlbnQ6IHZlciwgaXNHZXR0ZXI6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh3YWxrR2V0dGVycykge1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFsbEtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGlmIChfLmlzT2JqZWN0KG9iaikpIHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBhbGxLZXlzW2luZGV4XTtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKHsgdjogb2JqW2tleV0sIHA6IGAkeyhscCA9PT0gJycpID8gJycgOiBgJHtscH0uYH0ke2tleX1gLCBwYXJlbnQ6IHZlciwgaXNHZXR0ZXI6IHRydWUgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG5cblxuZXhwb3J0IHR5cGUgSXRlcmF0b3IgPSAodmFsdWU6IGFueSxcbiAgbG9kYXNoUGF0aDogc3RyaW5nLFxuICAvLyBAdHMtaWdub3JlXG4gIGNoYW5nZVZhbHVlVG86IChuZXdWYWx1ZSkgPT4gdm9pZCxcbiAgb3B0aW9ucz86IE1vZGVscy5BZGRpdGlvbmFsSXRlcmF0b3JPcHRpb25zXG5cbikgPT4gdm9pZFxuZXhwb3J0IGNsYXNzIEhlbHBlcnMge1xuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IFdhbGsoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIHtcbiAgICAgIE9iamVjdChqc29uOiBPYmplY3QsIGl0ZXJhdG9yOiBJdGVyYXRvciwgb3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZT86IE1vZGVscy5TdGFydEl0ZXJhdG9yT3B0aW9ucykge1xuXG4gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnNPcldhbGtHZXR0ZXJzVmFsdWUpKSB7XG4gICAgICAgICAgb3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZSA9IHt9XG4gICAgICAgIH1cblxuICAgICAgICAob3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZSBhcyBNb2RlbHMuSW50ZXJuYWxWYWx1ZXMpLmhhc0l0ZXJhdG9yID0gXy5pc0Z1bmN0aW9uKGl0ZXJhdG9yKVxuXG4gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnNPcldhbGtHZXR0ZXJzVmFsdWUuYnJlYWR0aFdhbGspKSB7XG4gICAgICAgICAgb3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZS5icmVhZHRoV2FsayA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBjaXJjdXJhbFxuICAgICAgICB9ID0gc2VsZi5fd2Fsayhqc29uLCBqc29uLCBpdGVyYXRvciwgdm9pZCAwLCBvcHRpb25zT3JXYWxrR2V0dGVyc1ZhbHVlIGFzIGFueSlcblxuICAgICAgICByZXR1cm4geyBjaXJjczogY2lyY3VyYWwgfVxuICAgICAgfSxcbiAgICAgIE9iamVjdEJ5KHByb3BlcnR5OiBzdHJpbmcsIGluQ29udGV4dDogT2JqZWN0LCBpdGVyYXRvcjogSXRlcmF0b3IsIG9wdGlvbnM/OiBNb2RlbHMuU3RhcnRJdGVyYXRvck9wdGlvbnMpIHtcbiAgICAgICAgaWYgKF8uaXNGdW5jdGlvbihpdGVyYXRvcikpIHtcbiAgICAgICAgICBpdGVyYXRvcihpbkNvbnRleHQsICcnLCBzZWxmLl9jaGFuZ2VWYWx1ZShpbkNvbnRleHQsIHByb3BlcnR5LCB0cnVlKSkgLy8gVE9ETyBBZGQgb3B0b2luc1xuICAgICAgICB9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QganNvbiA9IGluQ29udGV4dFtwcm9wZXJ0eV1cbiAgICAgICAgcmV0dXJuIHNlbGYuV2Fsay5PYmplY3QoanNvbiwgaXRlcmF0b3IsIG9wdGlvbnMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2NoYW5nZVZhbHVlKGpzb246IE9iamVjdCwgbG9kYWhQYXRoOiBzdHJpbmcsIHNpbXBsZUNoYW5nZSA9IGZhbHNlLCBvcHRpb25zPzogTW9kZWxzLkludGVybmFsVmFsdWVzKSB7XG5cbiAgICB2YXIgeyBjb250ZXh0UGF0aCwgcHJvcGVydHkgfSA9IHRoaXMuX3ByZXBhcmVQYXJhbXMobG9kYWhQYXRoKTtcbiAgICB2YXIgY29udGV4dCA9IF8uZ2V0KGpzb24sIGNvbnRleHRQYXRoKTtcblxuICAgIHJldHVybiAobmV3VmFsdWU6IGFueSkgPT4ge1xuICAgICAgaWYgKGNvbnRleHRQYXRoID09PSAnJykge1xuICAgICAgICBzaW1wbGVDaGFuZ2UgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2ltcGxlQ2hhbmdlKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAganNvbltwcm9wZXJ0eV0gPSBuZXdWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBDT05URVhUIFZBTFVFIENIQU5HRSEgIFwiJHtjb250ZXh0UGF0aH1cIiArIFwiJHtwcm9wZXJ0eX1cIiBgLCBuZXdWYWx1ZSlcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2NvbnRleHQnLCBjb250ZXh0KVxuICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgIGNvbnRleHRbcHJvcGVydHldID0gbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgIG9wdGlvbnMuX3ZhbHVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX3ByZXBhcmVQYXJhbXMobG9kYXNoUGF0aDogc3RyaW5nKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2NvbnRleHRQYXRoIGJlZm9yZScsIGxvZGFzaFBhdGgpXG4gICAgY29uc3QgY29udGV4dFBhdGggPSB0aGlzLl9IZWxwZXJzLlBhdGguZ2V0Q29udGV4dFBhdGgobG9kYXNoUGF0aCk7XG4gICAgLy8gY29uc29sZS5sb2coJ2NvbnRleHRQYXRoIGFmdGVyJywgY29udGV4dFBhdGgpXG5cbiAgICBsZXQgcHJvcGVydHkgPSB0aGlzLl9IZWxwZXJzLlBhdGguZ2V0UHJvcGVydHlQYXRoKGxvZGFzaFBhdGgsIGNvbnRleHRQYXRoKTtcbiAgICAvLyBjb25zb2xlLmxvZygncHJvcGVydHkgYWZ0ZXIgcHJvY2VzcycsIHByb3BlcnR5KVxuICAgIGlmIChfLmlzU3RyaW5nKHByb3BlcnR5KSAmJiBwcm9wZXJ0eS50cmltKCkgIT09ICcnICYmICFfLmlzTmFOKE51bWJlcihwcm9wZXJ0eSkpKSB7XG4gICAgICBwcm9wZXJ0eSA9IE51bWJlcihwcm9wZXJ0eSlcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRleHRQYXRoLCBwcm9wZXJ0eVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBfSGVscGVycygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0IFBhdGgoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGdldFByb3BlcnR5UGF0aChsb2RhaFBhdGgsIGNvbnRldFBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiAobG9kYWhQYXRoXG4gICAgICAgICAgICAgIC5yZXBsYWNlKGNvbnRldFBhdGgsICcnKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXlxcLi8sICcnKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbLywgJycpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXF0vLCAnJykpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXRDb250ZXh0UGF0aChwOiBzdHJpbmcpIHtcbiAgICAgICAgICAgIGxldCByZXM6IHN0cmluZztcbiAgICAgICAgICAgIGlmIChwLmVuZHNXaXRoKCddJykpIHtcbiAgICAgICAgICAgICAgcmVzID0gcC5yZXBsYWNlKC9cXFsoXFxcInxcXCcpP1swLTldKyhcXFwifFxcJyk/XFxdJC8sICcnKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzID0gcC5yZXBsYWNlKC9cXC4oW2EtekEtWjAtOV18XFwkfFxcX3xcXEB8XFwtfFxcL3xcXDopKyQvLCAnJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXMgPT09IHAgPyAnJyA6IHJlcztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfc2hvdWRsUmV0dXJuKGluY2x1ZGUgPSBbXSwgZXhjbHVkZSA9IFtdLCBsb2Rhc2hQYXRoOiBzdHJpbmcpIHtcbiAgICBsZXQgcmVzID0gZmFsc2U7XG4gICAgaWYgKGxvZGFzaFBhdGgucmVwbGFjZSgvXlxcWyhcXCd8XFxcIik/WzAtOV0qKFxcJ3xcXFwiKT9cXF0vLCAnJykudHJpbSgpICE9PSAnJykge1xuICAgICAgbG9kYXNoUGF0aCA9IGxvZGFzaFBhdGgucmVwbGFjZSgvXlxcWyhcXCd8XFxcIik/WzAtOV0qKFxcJ3xcXFwiKT9cXF1cXC4vLCAnJylcbiAgICAgIHJlcyA9IChcbiAgICAgICAgKF8uaXNBcnJheShpbmNsdWRlKSAmJiBpbmNsdWRlLmxlbmd0aCA+IDBcbiAgICAgICAgICAmJiAhaW5jbHVkZS5maW5kKHAgPT4gbG9kYXNoUGF0aC5zdGFydHNXaXRoKHApKSlcbiAgICAgICAgfHxcbiAgICAgICAgKF8uaXNBcnJheShleGNsdWRlKSAmJiBleGNsdWRlLmxlbmd0aCA+IDBcbiAgICAgICAgICAmJiAhIWV4Y2x1ZGUuZmluZChwID0+IGxvZGFzaFBhdGguc3RhcnRzV2l0aChwKSkpXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgcHJpdmF0ZSBzdGF0aWMgcHJlcGFyZU9wdGlvbnMob3B0aW9uczogTW9kZWxzLkludGVybmFsVmFsdWVzLCBvYmosIGxvZGFzaFBhdGgpIHtcblxuICAgIGlmIChvcHRpb25zLl9leGl0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy53YWxrR2V0dGVycykpIHtcbiAgICAgIG9wdGlvbnMud2Fsa0dldHRlcnMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY2hlY2tDaXJjdXJhbCkpIHtcbiAgICAgIG9wdGlvbnMuY2hlY2tDaXJjdXJhbCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuaXNHZXR0ZXIpKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBvcHRpb25zLmlzR2V0dGVyID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5fdmFsdWVDaGFuZ2VkKSkge1xuICAgICAgb3B0aW9ucy5fdmFsdWVDaGFuZ2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5fZXhpdCkpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG9wdGlvbnMuX2V4aXQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLmV4aXQpKSB7XG4gICAgICBvcHRpb25zLmV4aXQgPSAoKSA9PiB7XG4gICAgICAgIG9wdGlvbnMuX2V4aXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuX3NraXApKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBvcHRpb25zLl9za2lwID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5za2lwT2JqZWN0KSkge1xuICAgICAgb3B0aW9ucy5za2lwT2JqZWN0ID0gKCkgPT4ge1xuICAgICAgICBvcHRpb25zLl9za2lwID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jaGVja0NpcmN1cmFsKSB7XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLmRiKSkge1xuICAgICAgICBvcHRpb25zLmRiID0ge31cbiAgICAgIH1cblxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5zdGFjaykpIHtcbiAgICAgICAgb3B0aW9ucy5zdGFjayA9IFtdXG4gICAgICB9XG5cbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY2lyY3VyYWwpKSB7XG4gICAgICAgIG9wdGlvbnMuY2lyY3VyYWwgPSBbXVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgZGIsIHN0YWNrIH0gPSBvcHRpb25zO1xuICAgIG9wdGlvbnMuaXNDaXJjdXJhbCA9IGZhbHNlO1xuXG4gICAgaWYgKG9wdGlvbnMuY2hlY2tDaXJjdXJhbCAmJiBfLmlzT2JqZWN0KG9iaikpIHtcbiAgICAgIGxldCBpbmRleFZhbHVlID0gQ0xBU1MuT0JKRUNUKG9iaikuaW5kZXhWYWx1ZVxuICAgICAgaWYgKENMQVNTLk9CSkVDVChvYmopLmlzQ2xhc3NPYmplY3QgJiYgIV8uaXNVbmRlZmluZWQoaW5kZXhWYWx1ZSkpIHtcbiAgICAgICAgbGV0IGNsYXNzTmFtZSA9IENMQVNTLmdldE5hbWVGcm9tT2JqZWN0KG9iaik7XG4gICAgICAgIGxldCBwID0gYCR7Y2xhc3NOYW1lfS5pZF8ke2luZGV4VmFsdWV9YDtcbiAgICAgICAgY29uc3QgaW5EQjogTW9kZWxzLkluREJUeXBlID0gXy5nZXQoZGIsIHApO1xuXG4gICAgICAgIGlmIChpbkRCICYmIENMQVNTLk9CSkVDVChpbkRCLnRhcmdldCkuaXNFcXVhbChvYmopKSB7XG4gICAgICAgICAgY29uc3QgY2lyYzogTW9kZWxzLkNpcmMgPSB7XG4gICAgICAgICAgICBwYXRoVG9PYmo6IGxvZGFzaFBhdGgsXG4gICAgICAgICAgICBjaXJjdXJhbFRhcmdldFBhdGg6IGluREIucGF0aFxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgb3B0aW9ucy5jaXJjdXJhbC5wdXNoKGNpcmMpXG4gICAgICAgICAgb3B0aW9ucy5pc0NpcmN1cmFsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfLnNldChkYiwgcCwge1xuICAgICAgICAgICAgcGF0aDogbG9kYXNoUGF0aCxcbiAgICAgICAgICAgIHRhcmdldDogb2JqXG4gICAgICAgICAgfSBhcyBNb2RlbHMuSW5EQlR5cGUpXG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBpblN0YWNrID0gc3RhY2suZmluZCgoYzogTW9kZWxzLkluREJUeXBlKSA9PiBjLnRhcmdldCA9PSBvYmopO1xuXG4gICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChpblN0YWNrKSkge1xuICAgICAgICAgIGNvbnN0IGNpcmM6IE1vZGVscy5DaXJjID0ge1xuICAgICAgICAgICAgcGF0aFRvT2JqOiBsb2Rhc2hQYXRoLFxuICAgICAgICAgICAgY2lyY3VyYWxUYXJnZXRQYXRoOiBpblN0YWNrLnBhdGhcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG9wdGlvbnMuY2lyY3VyYWwucHVzaChjaXJjKVxuICAgICAgICAgIG9wdGlvbnMuaXNDaXJjdXJhbCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgcGF0aDogbG9kYXNoUGF0aCxcbiAgICAgICAgICAgIHRhcmdldDogb2JqXG4gICAgICAgICAgfSBhcyBNb2RlbHMuSW5EQlR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfd2Fsayhqc29uOiBPYmplY3QsIG9iajogT2JqZWN0LCBpdGVyYXRvcjogSXRlcmF0b3IsIGxvZGFzaFBhdGggPSAnJyxcbiAgICBvcHRpb25zPzogTW9kZWxzLkludGVybmFsVmFsdWVzLCBkZXB0aExldmVsID0gMCkge1xuXG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0ge30gYXMgYW55O1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIW9wdGlvbnMuYnJlYWR0aFdhbGspIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG9wdGlvbnMgPSB0aGlzLnByZXBhcmVPcHRpb25zKG9wdGlvbnMsIG9iaiwgbG9kYXNoUGF0aClcblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKHRoaXMuX3Nob3VkbFJldHVybihvcHRpb25zLmluY2x1ZGUsIG9wdGlvbnMuZXhjbHVkZSwgbG9kYXNoUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAob3B0aW9ucy5oYXNJdGVyYXRvciAmJiBsb2Rhc2hQYXRoICE9PSAnJykge1xuICAgICAgICBpdGVyYXRvcihvYmosIGxvZGFzaFBhdGgsIHRoaXMuX2NoYW5nZVZhbHVlKGpzb24sIGxvZGFzaFBhdGgsIGZhbHNlLCBvcHRpb25zKSwgb3B0aW9ucylcbiAgICAgIH1cblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKG9wdGlvbnMuX3ZhbHVlQ2hhbmdlZCkge1xuICAgICAgICBvYmogPSBfLmdldChqc29uLCBsb2Rhc2hQYXRoKVxuICAgICAgfVxuICAgICAgb3B0aW9ucy5fdmFsdWVDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgIGlmIChvcHRpb25zLmlzQ2lyY3VyYWwpIHtcbiAgICAgICAgb3B0aW9ucy5fc2tpcCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLl9za2lwKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgb3B0aW9ucy5fc2tpcCA9IGZhbHNlO1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG5cblxuXG4gICAgaWYgKG9wdGlvbnMuYnJlYWR0aFdhbGspIHtcblxuICAgICAgbGV0IHF1ZXVlOiBNb2RlbHMuVmVyW10gPSBbeyB2OiBqc29uLCBwOiBsb2Rhc2hQYXRoLCBwYXJlbnQ6IHZvaWQgMCB9XTtcblxuICAgICAgLy8gY29uc3QgcGF0aGVzVG9Ta2lwID0ge307XG4gICAgICB3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuXG4gICAgICAgIGNvbnN0IHZlciA9IHF1ZXVlLnNoaWZ0KCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBwYXRoZXMgdG8gc2tpcGAsIHBhdGhlc1RvU2tpcCk7XG4gICAgICAgIC8vIGlmICghXy5pc1VuZGVmaW5lZChPYmplY3Qua2V5cyhwYXRoZXNUb1NraXApLmZpbmQoa2V5ID0+IHZlci5wLnN0YXJ0c1dpdGgocGF0aGVzVG9Ta2lwW2tleV0pKSkpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNraXA6ICR7dmVyLnB9YClcbiAgICAgICAgLy8gY29udGludWU7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAodGhpcy5fc2hvdWRsUmV0dXJuKG9wdGlvbnMuaW5jbHVkZSwgb3B0aW9ucy5leGNsdWRlLCB2ZXIucCkpIHtcbiAgICAgICAgICAvLyBwYXRoZXNUb1NraXBbdmVyLnBdID0gdHJ1ZTtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2tpcDI6ICR7dmVyLnB9YClcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBub3Qgc2tpcCB2YWx1ZSAke3Zlci5wfWApXG5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBsZXQgeyB2LCBwIH0gPSB2ZXI7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMucHJlcGFyZU9wdGlvbnMob3B0aW9ucywgdiwgcClcblxuICAgICAgICBpZiAob3B0aW9ucy5fZXhpdCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFWElUJylcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5oYXNJdGVyYXRvciAmJiBwICE9PSAnJykge1xuICAgICAgICAgIGl0ZXJhdG9yKHYsIHAsIHRoaXMuX2NoYW5nZVZhbHVlKGpzb24sIHAsIGZhbHNlLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChvcHRpb25zLl92YWx1ZUNoYW5nZWQpIHtcbiAgICAgICAgICB2ZXIudiA9IF8uZ2V0KGpzb24sIHApO1xuICAgICAgICB9XG4gICAgICAgIG9wdGlvbnMuX3ZhbHVlQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmlzQ2lyY3VyYWwpIHtcbiAgICAgICAgICAvLyBwYXRoZXNUb1NraXBbdmVyLnBdID0gdHJ1ZTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLl9za2lwKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG9wdGlvbnMuX3NraXAgPSBmYWxzZTtcbiAgICAgICAgICAvLyBwYXRoZXNUb1NraXBbdmVyLnBdID0gdHJ1ZTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgTE9PSyBGT1IgQ0hJTERSRU4gT0YgJHt2ZXIucH1gKVxuICAgICAgICBpZiAoXy5pc0FycmF5KHYpKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHF1ZXVlID0gcXVldWUuY29uY2F0KGZpbmRDaGlsZHJlbih2ZXIsIHAsIG9wdGlvbnMud2Fsa0dldHRlcnMpKVxuICAgICAgICB9IGVsc2UgaWYgKF8uaXNPYmplY3QodikpIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcXVldWUgPSBxdWV1ZS5jb25jYXQoZmluZENoaWxkcmVuKHZlciwgcCwgb3B0aW9ucy53YWxrR2V0dGVycykpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCB7IHdhbGtHZXR0ZXJzIH0gPSBvcHRpb25zO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgIG9iai5mb3JFYWNoKChvLCBpKSA9PiB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHRoaXMuX3dhbGsoanNvbiwgb2JqW2ldLCBpdGVyYXRvciwgYCR7bG9kYXNoUGF0aH1bJHtpfV1gLCBvcHRpb25zLCBkZXB0aExldmVsICsgMSlcbiAgICAgICAgfSlcblxuICAgICAgfSBlbHNlIGlmIChfLmlzT2JqZWN0KG9iaikpIHtcbiAgICAgICAgY29uc3QgYWxsS2V5cyA9ICF3YWxrR2V0dGVycyA/IFtdIDogT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgaWYgKF8uaXNPYmplY3Qob2JqKSAmJiBvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgXy5wdWxsKGFsbEtleXMsIGtleSlcblxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgb3B0aW9ucy5pc0dldHRlciA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy5fd2Fsayhqc29uLCBvYmpba2V5XSwgaXRlcmF0b3IsIGAkeyhsb2Rhc2hQYXRoID09PSAnJykgPyAnJyA6IGAke2xvZGFzaFBhdGh9LmB9JHtrZXl9YCwgb3B0aW9ucywgZGVwdGhMZXZlbCArIDEpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3YWxrR2V0dGVycykge1xuICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhbGxLZXlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgaWYgKF8uaXNPYmplY3Qob2JqKSkge1xuICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhbGxLZXlzW2luZGV4XTtcblxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIG9wdGlvbnMuaXNHZXR0ZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIHRoaXMuX3dhbGsoanNvbiwgb2JqW2tleV0sIGl0ZXJhdG9yLCBgJHsobG9kYXNoUGF0aCA9PT0gJycpID8gJycgOiBgJHtsb2Rhc2hQYXRofS5gfSR7a2V5fWAsIG9wdGlvbnMsIGRlcHRoTGV2ZWwgKyAxKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAob3B0aW9ucy5fZXhpdCAmJiBqc29uID09PSBvYmopIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBvcHRpb25zLl9leGl0ID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG59XG5cbmV4cG9ydCBjb25zdCB3YWxrID0ge1xuICBPYmplY3Q6IEhlbHBlcnMuV2Fsay5PYmplY3QsXG4gIE9iamVjdEJ5OiBIZWxwZXJzLldhbGsuT2JqZWN0Qnlcbn1cbiJdfQ==
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL2xvZGFzaC13YWxrLW9iamVjdC9wcm9qZWN0cy9sb2Rhc2gtd2Fsay1vYmplY3Qvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3pELGNBQWMsVUFBVSxDQUFDO0FBRXpCLFNBQVMsWUFBWSxDQUFDLEdBQWUsRUFBRSxFQUFVLEVBQUUsV0FBb0I7SUFFckUsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUNqQixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDbEIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3RCLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFBO1FBQzlELENBQUMsQ0FBQyxDQUFDO0tBQ0o7U0FBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFFMUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sUUFBUSxHQUFpQixFQUFFLENBQUM7UUFDbEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDckIsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMs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QyxLQUFLLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRTtnQkFDakMsYUFBYTtnQkFDYixPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUN2QjtTQUVGO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUVGO0FBRUQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHO0lBQ2xCLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU07SUFDM0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUTtDQUNoQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvYnJvd3Nlcic7XG4vLyBsZXQgY291bnRlciA9IDBcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcblxuZnVuY3Rpb24gZmluZENoaWxkcmVuKHZlcjogTW9kZWxzLlZlciwgbHA6IHN0cmluZywgd2Fsa0dldHRlcnM6IGJvb2xlYW4pOiBNb2RlbHMuVmVyW10ge1xuXG4gIGNvbnN0IG9iaiA9IHZlci52XG4gIGlmIChfLmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmoubWFwKCh2LCBpKSA9PiB7XG4gICAgICByZXR1cm4geyB2LCBwOiBgJHtscH1bJHtpfV1gLCBwYXJlbnQ6IHZlciwgaXNHZXR0ZXI6IGZhbHNlIH1cbiAgICB9KTtcbiAgfSBlbHNlIGlmIChfLmlzT2JqZWN0KG9iaikpIHtcblxuICAgIGNvbnN0IGFsbEtleXMgPSAhd2Fsa0dldHRlcnMgPyBbXSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaik7XG4gICAgY29uc3QgY2hpbGRyZW46IE1vZGVscy5WZXJbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgaWYgKF8uaXNPYmplY3Qob2JqKSAmJiBfLmlzRnVuY3Rpb24ob2JqLmhhc093blByb3BlcnR5KSAmJiBvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBfLnB1bGwoYWxsS2V5cywga2V5KVxuICAgICAgICBjaGlsZHJlbi5wdXNoKHsgdjogb2JqW2tleV0sIHA6IGAkeyhscCA9PT0gJycpID8gJycgOiBgJHtscH0uYH0ke2tleX1gLCBwYXJlbnQ6IHZlciwgaXNHZXR0ZXI6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh3YWxrR2V0dGVycykge1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFsbEtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGlmIChfLmlzT2JqZWN0KG9iaikpIHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBhbGxLZXlzW2luZGV4XTtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKHsgdjogb2JqW2tleV0sIHA6IGAkeyhscCA9PT0gJycpID8gJycgOiBgJHtscH0uYH0ke2tleX1gLCBwYXJlbnQ6IHZlciwgaXNHZXR0ZXI6IHRydWUgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG5cblxuZXhwb3J0IHR5cGUgSXRlcmF0b3IgPSAodmFsdWU6IGFueSxcbiAgbG9kYXNoUGF0aDogc3RyaW5nLFxuICAvLyBAdHMtaWdub3JlXG4gIGNoYW5nZVZhbHVlVG86IChuZXdWYWx1ZSkgPT4gdm9pZCxcbiAgb3B0aW9ucz86IE1vZGVscy5BZGRpdGlvbmFsSXRlcmF0b3JPcHRpb25zXG5cbikgPT4gdm9pZFxuZXhwb3J0IGNsYXNzIEhlbHBlcnMge1xuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IFdhbGsoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIHtcbiAgICAgIE9iamVjdChqc29uOiBPYmplY3QsIGl0ZXJhdG9yOiBJdGVyYXRvciwgb3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZT86IE1vZGVscy5TdGFydEl0ZXJhdG9yT3B0aW9ucykge1xuXG4gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnNPcldhbGtHZXR0ZXJzVmFsdWUpKSB7XG4gICAgICAgICAgb3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZSA9IHt9XG4gICAgICAgIH1cblxuICAgICAgICAob3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZSBhcyBNb2RlbHMuSW50ZXJuYWxWYWx1ZXMpLmhhc0l0ZXJhdG9yID0gXy5pc0Z1bmN0aW9uKGl0ZXJhdG9yKVxuXG4gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnNPcldhbGtHZXR0ZXJzVmFsdWUuYnJlYWR0aFdhbGspKSB7XG4gICAgICAgICAgb3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZS5icmVhZHRoV2FsayA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBjaXJjdXJhbFxuICAgICAgICB9ID0gc2VsZi5fd2Fsayhqc29uLCBqc29uLCBpdGVyYXRvciwgdm9pZCAwLCBvcHRpb25zT3JXYWxrR2V0dGVyc1ZhbHVlIGFzIGFueSlcblxuICAgICAgICByZXR1cm4geyBjaXJjczogY2lyY3VyYWwgfVxuICAgICAgfSxcbiAgICAgIE9iamVjdEJ5KHByb3BlcnR5OiBzdHJpbmcsIGluQ29udGV4dDogT2JqZWN0LCBpdGVyYXRvcjogSXRlcmF0b3IsIG9wdGlvbnM/OiBNb2RlbHMuU3RhcnRJdGVyYXRvck9wdGlvbnMpIHtcbiAgICAgICAgaWYgKF8uaXNGdW5jdGlvbihpdGVyYXRvcikpIHtcbiAgICAgICAgICBpdGVyYXRvcihpbkNvbnRleHQsICcnLCBzZWxmLl9jaGFuZ2VWYWx1ZShpbkNvbnRleHQsIHByb3BlcnR5LCB0cnVlKSkgLy8gVE9ETyBBZGQgb3B0b2luc1xuICAgICAgICB9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QganNvbiA9IGluQ29udGV4dFtwcm9wZXJ0eV1cbiAgICAgICAgcmV0dXJuIHNlbGYuV2Fsay5PYmplY3QoanNvbiwgaXRlcmF0b3IsIG9wdGlvbnMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2NoYW5nZVZhbHVlKGpzb246IE9iamVjdCwgbG9kYWhQYXRoOiBzdHJpbmcsIHNpbXBsZUNoYW5nZSA9IGZhbHNlLCBvcHRpb25zPzogTW9kZWxzLkludGVybmFsVmFsdWVzKSB7XG5cbiAgICB2YXIgeyBjb250ZXh0UGF0aCwgcHJvcGVydHkgfSA9IHRoaXMuX3ByZXBhcmVQYXJhbXMobG9kYWhQYXRoKTtcbiAgICB2YXIgY29udGV4dCA9IF8uZ2V0KGpzb24sIGNvbnRleHRQYXRoKTtcblxuICAgIHJldHVybiAobmV3VmFsdWU6IGFueSkgPT4ge1xuICAgICAgaWYgKGNvbnRleHRQYXRoID09PSAnJykge1xuICAgICAgICBzaW1wbGVDaGFuZ2UgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2ltcGxlQ2hhbmdlKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAganNvbltwcm9wZXJ0eV0gPSBuZXdWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBDT05URVhUIFZBTFVFIENIQU5HRSEgIFwiJHtjb250ZXh0UGF0aH1cIiArIFwiJHtwcm9wZXJ0eX1cIiBgLCBuZXdWYWx1ZSlcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2NvbnRleHQnLCBjb250ZXh0KVxuICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgIGNvbnRleHRbcHJvcGVydHldID0gbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgIG9wdGlvbnMuX3ZhbHVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX3ByZXBhcmVQYXJhbXMobG9kYXNoUGF0aDogc3RyaW5nKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2NvbnRleHRQYXRoIGJlZm9yZScsIGxvZGFzaFBhdGgpXG4gICAgY29uc3QgY29udGV4dFBhdGggPSB0aGlzLl9IZWxwZXJzLlBhdGguZ2V0Q29udGV4dFBhdGgobG9kYXNoUGF0aCk7XG4gICAgLy8gY29uc29sZS5sb2coJ2NvbnRleHRQYXRoIGFmdGVyJywgY29udGV4dFBhdGgpXG5cbiAgICBsZXQgcHJvcGVydHkgPSB0aGlzLl9IZWxwZXJzLlBhdGguZ2V0UHJvcGVydHlQYXRoKGxvZGFzaFBhdGgsIGNvbnRleHRQYXRoKTtcbiAgICAvLyBjb25zb2xlLmxvZygncHJvcGVydHkgYWZ0ZXIgcHJvY2VzcycsIHByb3BlcnR5KVxuICAgIGlmIChfLmlzU3RyaW5nKHByb3BlcnR5KSAmJiBwcm9wZXJ0eS50cmltKCkgIT09ICcnICYmICFfLmlzTmFOKE51bWJlcihwcm9wZXJ0eSkpKSB7XG4gICAgICBwcm9wZXJ0eSA9IE51bWJlcihwcm9wZXJ0eSlcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRleHRQYXRoLCBwcm9wZXJ0eVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBfSGVscGVycygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0IFBhdGgoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGdldFByb3BlcnR5UGF0aChsb2RhaFBhdGgsIGNvbnRldFBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiAobG9kYWhQYXRoXG4gICAgICAgICAgICAgIC5yZXBsYWNlKGNvbnRldFBhdGgsICcnKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXlxcLi8sICcnKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbLywgJycpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXF0vLCAnJykpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXRDb250ZXh0UGF0aChwOiBzdHJpbmcpIHtcbiAgICAgICAgICAgIGxldCByZXM6IHN0cmluZztcbiAgICAgICAgICAgIGlmIChwLmVuZHNXaXRoKCddJykpIHtcbiAgICAgICAgICAgICAgcmVzID0gcC5yZXBsYWNlKC9cXFsoXFxcInxcXCcpP1swLTldKyhcXFwifFxcJyk/XFxdJC8sICcnKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzID0gcC5yZXBsYWNlKC9cXC4oW2EtekEtWjAtOV18XFwkfFxcX3xcXEB8XFwtfFxcL3xcXDopKyQvLCAnJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXMgPT09IHAgPyAnJyA6IHJlcztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfc2hvdWRsUmV0dXJuKGluY2x1ZGUgPSBbXSwgZXhjbHVkZSA9IFtdLCBsb2Rhc2hQYXRoOiBzdHJpbmcpIHtcbiAgICBsZXQgcmVzID0gZmFsc2U7XG4gICAgaWYgKGxvZGFzaFBhdGgucmVwbGFjZSgvXlxcWyhcXCd8XFxcIik/WzAtOV0qKFxcJ3xcXFwiKT9cXF0vLCAnJykudHJpbSgpICE9PSAnJykge1xuICAgICAgbG9kYXNoUGF0aCA9IGxvZGFzaFBhdGgucmVwbGFjZSgvXlxcWyhcXCd8XFxcIik/WzAtOV0qKFxcJ3xcXFwiKT9cXF1cXC4vLCAnJylcbiAgICAgIHJlcyA9IChcbiAgICAgICAgKF8uaXNBcnJheShpbmNsdWRlKSAmJiBpbmNsdWRlLmxlbmd0aCA+IDBcbiAgICAgICAgICAmJiAhaW5jbHVkZS5maW5kKHAgPT4gbG9kYXNoUGF0aC5zdGFydHNXaXRoKHApKSlcbiAgICAgICAgfHxcbiAgICAgICAgKF8uaXNBcnJheShleGNsdWRlKSAmJiBleGNsdWRlLmxlbmd0aCA+IDBcbiAgICAgICAgICAmJiAhIWV4Y2x1ZGUuZmluZChwID0+IGxvZGFzaFBhdGguc3RhcnRzV2l0aChwKSkpXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgcHJpdmF0ZSBzdGF0aWMgcHJlcGFyZU9wdGlvbnMob3B0aW9uczogTW9kZWxzLkludGVybmFsVmFsdWVzLCBvYmosIGxvZGFzaFBhdGgpIHtcblxuICAgIGlmIChvcHRpb25zLl9leGl0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy53YWxrR2V0dGVycykpIHtcbiAgICAgIG9wdGlvbnMud2Fsa0dldHRlcnMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY2hlY2tDaXJjdXJhbCkpIHtcbiAgICAgIG9wdGlvbnMuY2hlY2tDaXJjdXJhbCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuaXNHZXR0ZXIpKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBvcHRpb25zLmlzR2V0dGVyID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5fdmFsdWVDaGFuZ2VkKSkge1xuICAgICAgb3B0aW9ucy5fdmFsdWVDaGFuZ2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5fZXhpdCkpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG9wdGlvbnMuX2V4aXQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLmV4aXQpKSB7XG4gICAgICBvcHRpb25zLmV4aXQgPSAoKSA9PiB7XG4gICAgICAgIG9wdGlvbnMuX2V4aXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuX3NraXApKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBvcHRpb25zLl9za2lwID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5za2lwT2JqZWN0KSkge1xuICAgICAgb3B0aW9ucy5za2lwT2JqZWN0ID0gKCkgPT4ge1xuICAgICAgICBvcHRpb25zLl9za2lwID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jaGVja0NpcmN1cmFsKSB7XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLmRiKSkge1xuICAgICAgICBvcHRpb25zLmRiID0ge31cbiAgICAgIH1cblxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5zdGFjaykpIHtcbiAgICAgICAgb3B0aW9ucy5zdGFjayA9IFtdXG4gICAgICB9XG5cbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY2lyY3VyYWwpKSB7XG4gICAgICAgIG9wdGlvbnMuY2lyY3VyYWwgPSBbXVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgZGIsIHN0YWNrIH0gPSBvcHRpb25zO1xuICAgIG9wdGlvbnMuaXNDaXJjdXJhbCA9IGZhbHNlO1xuXG4gICAgaWYgKG9wdGlvbnMuY2hlY2tDaXJjdXJhbCAmJiBfLmlzT2JqZWN0KG9iaikpIHtcbiAgICAgIGxldCBpbmRleFZhbHVlID0gQ0xBU1MuT0JKRUNUKG9iaikuaW5kZXhWYWx1ZVxuICAgICAgaWYgKENMQVNTLk9CSkVDVChvYmopLmlzQ2xhc3NPYmplY3QgJiYgIV8uaXNVbmRlZmluZWQoaW5kZXhWYWx1ZSkpIHtcbiAgICAgICAgbGV0IGNsYXNzTmFtZSA9IENMQVNTLmdldE5hbWVGcm9tT2JqZWN0KG9iaik7XG4gICAgICAgIGxldCBwID0gYCR7Y2xhc3NOYW1lfS5pZF8ke2luZGV4VmFsdWV9YDtcbiAgICAgICAgY29uc3QgaW5EQjogTW9kZWxzLkluREJUeXBlID0gXy5nZXQoZGIsIHApO1xuXG4gICAgICAgIGlmIChpbkRCICYmIENMQVNTLk9CSkVDVChpbkRCLnRhcmdldCkuaXNFcXVhbChvYmopKSB7XG4gICAgICAgICAgY29uc3QgY2lyYzogTW9kZWxzLkNpcmMgPSB7XG4gICAgICAgICAgICBwYXRoVG9PYmo6IGxvZGFzaFBhdGgsXG4gICAgICAgICAgICBjaXJjdXJhbFRhcmdldFBhdGg6IGluREIucGF0aFxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgb3B0aW9ucy5jaXJjdXJhbC5wdXNoKGNpcmMpXG4gICAgICAgICAgb3B0aW9ucy5pc0NpcmN1cmFsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfLnNldChkYiwgcCwge1xuICAgICAgICAgICAgcGF0aDogbG9kYXNoUGF0aCxcbiAgICAgICAgICAgIHRhcmdldDogb2JqXG4gICAgICAgICAgfSBhcyBNb2RlbHMuSW5EQlR5cGUpXG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBpblN0YWNrID0gc3RhY2suZmluZCgoYzogTW9kZWxzLkluREJUeXBlKSA9PiBjLnRhcmdldCA9PSBvYmopO1xuXG4gICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChpblN0YWNrKSkge1xuICAgICAgICAgIGNvbnN0IGNpcmM6IE1vZGVscy5DaXJjID0ge1xuICAgICAgICAgICAgcGF0aFRvT2JqOiBsb2Rhc2hQYXRoLFxuICAgICAgICAgICAgY2lyY3VyYWxUYXJnZXRQYXRoOiBpblN0YWNrLnBhdGhcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG9wdGlvbnMuY2lyY3VyYWwucHVzaChjaXJjKVxuICAgICAgICAgIG9wdGlvbnMuaXNDaXJjdXJhbCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgcGF0aDogbG9kYXNoUGF0aCxcbiAgICAgICAgICAgIHRhcmdldDogb2JqXG4gICAgICAgICAgfSBhcyBNb2RlbHMuSW5EQlR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfd2Fsayhqc29uOiBPYmplY3QsIG9iajogT2JqZWN0LCBpdGVyYXRvcjogSXRlcmF0b3IsIGxvZGFzaFBhdGggPSAnJyxcbiAgICBvcHRpb25zPzogTW9kZWxzLkludGVybmFsVmFsdWVzLCBkZXB0aExldmVsID0gMCkge1xuXG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0ge30gYXMgYW55O1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIW9wdGlvbnMuYnJlYWR0aFdhbGspIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG9wdGlvbnMgPSB0aGlzLnByZXBhcmVPcHRpb25zKG9wdGlvbnMsIG9iaiwgbG9kYXNoUGF0aClcblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKHRoaXMuX3Nob3VkbFJldHVybihvcHRpb25zLmluY2x1ZGUsIG9wdGlvbnMuZXhjbHVkZSwgbG9kYXNoUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAob3B0aW9ucy5oYXNJdGVyYXRvciAmJiBsb2Rhc2hQYXRoICE9PSAnJykge1xuICAgICAgICBpdGVyYXRvcihvYmosIGxvZGFzaFBhdGgsIHRoaXMuX2NoYW5nZVZhbHVlKGpzb24sIGxvZGFzaFBhdGgsIGZhbHNlLCBvcHRpb25zKSwgb3B0aW9ucylcbiAgICAgIH1cblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKG9wdGlvbnMuX3ZhbHVlQ2hhbmdlZCkge1xuICAgICAgICBvYmogPSBfLmdldChqc29uLCBsb2Rhc2hQYXRoKVxuICAgICAgfVxuICAgICAgb3B0aW9ucy5fdmFsdWVDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgIGlmIChvcHRpb25zLmlzQ2lyY3VyYWwpIHtcbiAgICAgICAgb3B0aW9ucy5fc2tpcCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLl9za2lwKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgb3B0aW9ucy5fc2tpcCA9IGZhbHNlO1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG5cblxuXG4gICAgaWYgKG9wdGlvbnMuYnJlYWR0aFdhbGspIHtcblxuICAgICAgbGV0IHF1ZXVlOiBNb2RlbHMuVmVyW10gPSBbeyB2OiBqc29uLCBwOiBsb2Rhc2hQYXRoLCBwYXJlbnQ6IHZvaWQgMCB9XTtcblxuICAgICAgLy8gY29uc3QgcGF0aGVzVG9Ta2lwID0ge307XG4gICAgICB3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuXG4gICAgICAgIGNvbnN0IHZlciA9IHF1ZXVlLnNoaWZ0KCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBwYXRoZXMgdG8gc2tpcGAsIHBhdGhlc1RvU2tpcCk7XG4gICAgICAgIC8vIGlmICghXy5pc1VuZGVmaW5lZChPYmplY3Qua2V5cyhwYXRoZXNUb1NraXApLmZpbmQoa2V5ID0+IHZlci5wLnN0YXJ0c1dpdGgocGF0aGVzVG9Ta2lwW2tleV0pKSkpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNraXA6ICR7dmVyLnB9YClcbiAgICAgICAgLy8gY29udGludWU7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAodGhpcy5fc2hvdWRsUmV0dXJuKG9wdGlvbnMuaW5jbHVkZSwgb3B0aW9ucy5leGNsdWRlLCB2ZXIucCkpIHtcbiAgICAgICAgICAvLyBwYXRoZXNUb1NraXBbdmVyLnBdID0gdHJ1ZTtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2tpcDI6ICR7dmVyLnB9YClcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBub3Qgc2tpcCB2YWx1ZSAke3Zlci5wfWApXG5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBsZXQgeyB2LCBwIH0gPSB2ZXI7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMucHJlcGFyZU9wdGlvbnMob3B0aW9ucywgdiwgcClcblxuICAgICAgICBpZiAob3B0aW9ucy5fZXhpdCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFWElUJylcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5oYXNJdGVyYXRvciAmJiBwICE9PSAnJykge1xuICAgICAgICAgIGl0ZXJhdG9yKHYsIHAsIHRoaXMuX2NoYW5nZVZhbHVlKGpzb24sIHAsIGZhbHNlLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChvcHRpb25zLl92YWx1ZUNoYW5nZWQpIHtcbiAgICAgICAgICB2ZXIudiA9IF8uZ2V0KGpzb24sIHApO1xuICAgICAgICB9XG4gICAgICAgIG9wdGlvbnMuX3ZhbHVlQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmlzQ2lyY3VyYWwpIHtcbiAgICAgICAgICAvLyBwYXRoZXNUb1NraXBbdmVyLnBdID0gdHJ1ZTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLl9za2lwKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG9wdGlvbnMuX3NraXAgPSBmYWxzZTtcbiAgICAgICAgICAvLyBwYXRoZXNUb1NraXBbdmVyLnBdID0gdHJ1ZTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgTE9PSyBGT1IgQ0hJTERSRU4gT0YgJHt2ZXIucH1gKVxuICAgICAgICBpZiAoXy5pc0FycmF5KHYpKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHF1ZXVlID0gcXVldWUuY29uY2F0KGZpbmRDaGlsZHJlbih2ZXIsIHAsIG9wdGlvbnMud2Fsa0dldHRlcnMpKVxuICAgICAgICB9IGVsc2UgaWYgKF8uaXNPYmplY3QodikpIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcXVldWUgPSBxdWV1ZS5jb25jYXQoZmluZENoaWxkcmVuKHZlciwgcCwgb3B0aW9ucy53YWxrR2V0dGVycykpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCB7IHdhbGtHZXR0ZXJzIH0gPSBvcHRpb25zO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgIG9iai5mb3JFYWNoKChvLCBpKSA9PiB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHRoaXMuX3dhbGsoanNvbiwgb2JqW2ldLCBpdGVyYXRvciwgYCR7bG9kYXNoUGF0aH1bJHtpfV1gLCBvcHRpb25zLCBkZXB0aExldmVsICsgMSlcbiAgICAgICAgfSlcblxuICAgICAgfSBlbHNlIGlmIChfLmlzT2JqZWN0KG9iaikpIHtcbiAgICAgICAgY29uc3QgYWxsS2V5cyA9ICF3YWxrR2V0dGVycyA/IFtdIDogT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgaWYgKF8uaXNPYmplY3Qob2JqKSAmJiBvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgXy5wdWxsKGFsbEtleXMsIGtleSlcblxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgb3B0aW9ucy5pc0dldHRlciA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy5fd2Fsayhqc29uLCBvYmpba2V5XSwgaXRlcmF0b3IsIGAkeyhsb2Rhc2hQYXRoID09PSAnJykgPyAnJyA6IGAke2xvZGFzaFBhdGh9LmB9JHtrZXl9YCwgb3B0aW9ucywgZGVwdGhMZXZlbCArIDEpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3YWxrR2V0dGVycykge1xuICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhbGxLZXlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgaWYgKF8uaXNPYmplY3Qob2JqKSkge1xuICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhbGxLZXlzW2luZGV4XTtcblxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIG9wdGlvbnMuaXNHZXR0ZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIHRoaXMuX3dhbGsoanNvbiwgb2JqW2tleV0sIGl0ZXJhdG9yLCBgJHsobG9kYXNoUGF0aCA9PT0gJycpID8gJycgOiBgJHtsb2Rhc2hQYXRofS5gfSR7a2V5fWAsIG9wdGlvbnMsIGRlcHRoTGV2ZWwgKyAxKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAob3B0aW9ucy5fZXhpdCAmJiBqc29uID09PSBvYmopIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBvcHRpb25zLl9leGl0ID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG59XG5cbmV4cG9ydCBjb25zdCB3YWxrID0ge1xuICBPYmplY3Q6IEhlbHBlcnMuV2Fsay5PYmplY3QsXG4gIE9iamVjdEJ5OiBIZWxwZXJzLldhbGsuT2JqZWN0Qnlcbn0iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9sb2Rhc2gtd2Fsay1vYmplY3QvcHJvamVjdHMvbG9kYXNoLXdhbGstb2JqZWN0L3NyYy9saWIvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgbmFtZXNwYWNlIE1vZGVscyB7XG5cbiAgZXhwb3J0IHR5cGUgSW5EQlR5cGUgPSB7IHRhcmdldDogYW55OyBwYXRoOiBzdHJpbmc7IH07XG4gIGV4cG9ydCB0eXBlIENpcmMgPSB7IHBhdGhUb09iajogc3RyaW5nOyBjaXJjdXJhbFRhcmdldFBhdGg6IHN0cmluZzsgfTtcblxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgZXhwb3J0IHR5cGUgVmVyID0geyB2OiBhbnk7IHA6IHN0cmluZzsgcGFyZW50OiBWZXI7IGlzR2V0dGVyPzogYm9vbGVhbjsgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgU3RhcnRJdGVyYXRvck9wdGlvbnMge1xuICAgIHdhbGtHZXR0ZXJzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgaW4gYnJlYWRoVHdhbGtcbiAgICAgKi9cbiAgICBjaGVja0NpcmN1cmFsPzogYm9vbGVhbjtcbiAgICBicmVhZHRoV2Fsaz86IGJvb2xlYW47XG4gICAgaW5jbHVkZT86IHN0cmluZ1tdO1xuICAgIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQWRkaXRpb25hbEl0ZXJhdG9yT3B0aW9ucyBleHRlbmRzIFN0YXJ0SXRlcmF0b3JPcHRpb25zIHtcbiAgICBza2lwT2JqZWN0PzogKCkgPT4gdm9pZDtcbiAgICBpc0dldHRlcj86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQnJlYWR0aCB3YWxrIHdpbGwgc2tpcCBjb250ZW50IG9mIGNpcmN1cmFsIG9iamVjdHNcbiAgICAgKi9cbiAgICBpc0NpcmN1cmFsPzogYm9vbGVhbjtcbiAgICBleGl0PzogKCkgPT4gdm9pZDtcblxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbFZhbHVlcyBleHRlbmRzIEFkZGl0aW9uYWxJdGVyYXRvck9wdGlvbnMge1xuICAgIGRiPzogYW55O1xuICAgIHN0YWNrPzogYW55W107XG4gICAgY2lyY3VyYWw/OiBDaXJjW107XG4gICAgaGFzSXRlcmF0b3I/OiBib29sZWFuO1xuICAgIF92YWx1ZUNoYW5nZWQ6IGJvb2xlYW47XG4gICAgX3NraXA6IGJvb2xlYW47XG4gICAgX2V4aXQ6IGJvb2xlYW47XG4gIH1cbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS9sb2Rhc2gtd2Fsay1vYmplY3QvcHJvamVjdHMvbG9kYXNoLXdhbGstb2JqZWN0L3NyYy9saWIvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgbmFtZXNwYWNlIE1vZGVscyB7XG5cbiAgZXhwb3J0IHR5cGUgSW5EQlR5cGUgPSB7IHRhcmdldDogYW55OyBwYXRoOiBzdHJpbmc7IH07XG4gIGV4cG9ydCB0eXBlIENpcmMgPSB7IHBhdGhUb09iajogc3RyaW5nOyBjaXJjdXJhbFRhcmdldFBhdGg6IHN0cmluZzsgfTtcblxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgZXhwb3J0IHR5cGUgVmVyID0geyB2OiBhbnk7IHA6IHN0cmluZzsgcGFyZW50OiBWZXI7IGlzR2V0dGVyPzogYm9vbGVhbjsgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgU3RhcnRJdGVyYXRvck9wdGlvbnMge1xuICAgIHdhbGtHZXR0ZXJzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgaW4gYnJlYWRoVHdhbGtcbiAgICAgKi9cbiAgICBjaGVja0NpcmN1cmFsPzogYm9vbGVhbjtcbiAgICBicmVhZHRoV2Fsaz86IGJvb2xlYW47XG4gICAgaW5jbHVkZT86IHN0cmluZ1tdO1xuICAgIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQWRkaXRpb25hbEl0ZXJhdG9yT3B0aW9ucyBleHRlbmRzIFN0YXJ0SXRlcmF0b3JPcHRpb25zIHtcbiAgICBza2lwT2JqZWN0PzogKCkgPT4gdm9pZDtcbiAgICBpc0dldHRlcj86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQnJlYWR0aCB3YWxrIHdpbGwgc2tpcCBjb250ZW50IG9mIGNpcmN1cmFsIG9iamVjdHNcbiAgICAgKi9cbiAgICBpc0NpcmN1cmFsPzogYm9vbGVhbjtcbiAgICBleGl0PzogKCkgPT4gdm9pZDtcblxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbFZhbHVlcyBleHRlbmRzIEFkZGl0aW9uYWxJdGVyYXRvck9wdGlvbnMge1xuICAgIGRiPzogYW55O1xuICAgIHN0YWNrPzogYW55W107XG4gICAgY2lyY3VyYWw/OiBDaXJjW107XG4gICAgaGFzSXRlcmF0b3I/OiBib29sZWFuO1xuICAgIF92YWx1ZUNoYW5nZWQ6IGJvb2xlYW47XG4gICAgX3NraXA6IGJvb2xlYW47XG4gICAgX2V4aXQ6IGJvb2xlYW47XG4gIH1cbn0iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"lodash-walk-object.mjs","sources":["../../../tmp-libs-for-bundle/lodash-walk-object/projects/lodash-walk-object/src/lib/index.ts","../../../tmp-libs-for-bundle/lodash-walk-object/projects/lodash-walk-object/src/lodash-walk-object.ts"],"sourcesContent":["import { _ } from 'tnp-core/browser';\nimport { CLASS } from 'typescript-class-helpers/browser';\n// let counter = 0\nimport { Models } from './models';\nexport * from './models';\n\nfunction findChildren(ver: Models.Ver, lp: string, walkGetters: boolean): Models.Ver[] {\n\n const obj = ver.v\n if (_.isArray(obj)) {\n return obj.map((v, i) => {\n return { v, p: `${lp}[${i}]`, parent: ver, isGetter: false }\n });\n } else if (_.isObject(obj)) {\n\n const allKeys = !walkGetters ? [] : Object.getOwnPropertyNames(obj);\n const children: Models.Ver[] = [];\n for (const key in obj) {\n if (_.isObject(obj) && _.isFunction(obj.hasOwnProperty) && obj.hasOwnProperty(key)) {\n _.pull(allKeys, key)\n children.push({ v: obj[key], p: `${(lp === '') ? '' : `${lp}.`}${key}`, parent: ver, isGetter: false })\n }\n }\n if (walkGetters) {\n for (let index = 0; index < allKeys.length; index++) {\n if (_.isObject(obj)) {\n const key = allKeys[index];\n children.push({ v: obj[key], p: `${(lp === '') ? '' : `${lp}.`}${key}`, parent: ver, isGetter: true })\n }\n }\n }\n return children;\n }\n return [];\n}\n\n\n\nexport type Iterator = (value: any,\n lodashPath: string,\n // @ts-ignore\n changeValueTo: (newValue) => void,\n options?: Models.AdditionalIteratorOptions\n\n) => void\nexport class Helpers {\n\n public static get Walk() {\n const self = this;\n return {\n Object(json: Object, iterator: Iterator, optionsOrWalkGettersValue?: Models.StartIteratorOptions) {\n\n if (_.isUndefined(optionsOrWalkGettersValue)) {\n optionsOrWalkGettersValue = {}\n }\n\n (optionsOrWalkGettersValue as Models.InternalValues).hasIterator = _.isFunction(iterator)\n\n if (_.isUndefined(optionsOrWalkGettersValue.breadthWalk)) {\n optionsOrWalkGettersValue.breadthWalk = false;\n }\n\n let {\n circural\n } = self._walk(json, json, iterator, void 0, optionsOrWalkGettersValue as any)\n\n return { circs: circural }\n },\n ObjectBy(property: string, inContext: Object, iterator: Iterator, options?: Models.StartIteratorOptions) {\n if (_.isFunction(iterator)) {\n iterator(inContext, '', self._changeValue(inContext, property, true)) // TODO Add optoins\n }\n // @ts-ignore\n const json = inContext[property]\n return self.Walk.Object(json, iterator, options)\n }\n }\n }\n\n private static _changeValue(json: Object, lodahPath: string, simpleChange = false, options?: Models.InternalValues) {\n\n var { contextPath, property } = this._prepareParams(lodahPath);\n var context = _.get(json, contextPath);\n\n return (newValue: any) => {\n if (contextPath === '') {\n simpleChange = true;\n }\n\n if (simpleChange) {\n // @ts-ignore\n json[property] = newValue;\n } else {\n // console.log(`CONTEXT VALUE CHANGE! \"${contextPath}\" + \"${property}\" `, newValue)\n // console.log('context', context)\n if (context) {\n context[property] = newValue;\n }\n }\n if (options) {\n options._valueChanged = true;\n }\n }\n }\n\n private static _prepareParams(lodashPath: string) {\n // console.log('contextPath before', lodashPath)\n const contextPath = this._Helpers.Path.getContextPath(lodashPath);\n // console.log('contextPath after', contextPath)\n\n let property = this._Helpers.Path.getPropertyPath(lodashPath, contextPath);\n // console.log('property after process', property)\n if (_.isString(property) && property.trim() !== '' && !_.isNaN(Number(property))) {\n property = Number(property)\n }\n return {\n contextPath, property\n }\n }\n\n private static get _Helpers() {\n return {\n get Path() {\n return {\n // @ts-ignore\n getPropertyPath(lodahPath, contetPath) {\n return (lodahPath\n .replace(contetPath, '')\n .replace(/^\\./, '')\n .replace(/\\[/, '')\n .replace(/\\]/, ''))\n },\n getContextPath(p: string) {\n let res: string;\n if (p.endsWith(']')) {\n res = p.replace(/\\[(\\\"|\\')?[0-9]+(\\\"|\\')?\\]$/, '')\n } else {\n res = p.replace(/\\.([a-zA-Z0-9]|\\$|\\_|\\@|\\-|\\/|\\:)+$/, '')\n }\n return res === p ? '' : res;\n }\n }\n }\n }\n }\n\n private static _shoudlReturn(include = [], exclude = [], lodashPath: string) {\n let res = false;\n if (lodashPath.replace(/^\\[(\\'|\\\")?[0-9]*(\\'|\\\")?\\]/, '').trim() !== '') {\n lodashPath = lodashPath.replace(/^\\[(\\'|\\\")?[0-9]*(\\'|\\\")?\\]\\./, '')\n res = (\n (_.isArray(include) && include.length > 0\n && !include.find(p => lodashPath.startsWith(p)))\n ||\n (_.isArray(exclude) && exclude.length > 0\n && !!exclude.find(p => lodashPath.startsWith(p)))\n )\n }\n\n return res;\n }\n\n // @ts-ignore\n private static prepareOptions(options: Models.InternalValues, obj, lodashPath) {\n\n if (options._exit) {\n return;\n }\n\n if (_.isUndefined(options.walkGetters)) {\n options.walkGetters = true;\n }\n\n if (_.isUndefined(options.checkCircural)) {\n options.checkCircural = false;\n }\n\n if (_.isUndefined(options.isGetter)) {\n // @ts-ignore\n options.isGetter = false;\n }\n\n if (_.isUndefined(options._valueChanged)) {\n options._valueChanged = false;\n }\n\n if (_.isUndefined(options._exit)) {\n // @ts-ignore\n options._exit = false;\n }\n\n if (_.isUndefined(options.exit)) {\n options.exit = () => {\n options._exit = true;\n }\n }\n\n if (_.isUndefined(options._skip)) {\n // @ts-ignore\n options._skip = false;\n }\n\n if (_.isUndefined(options.skipObject)) {\n options.skipObject = () => {\n options._skip = true;\n }\n }\n\n if (options.checkCircural) {\n if (_.isUndefined(options.db)) {\n options.db = {}\n }\n\n if (_.isUndefined(options.stack)) {\n options.stack = []\n }\n\n if (_.isUndefined(options.circural)) {\n options.circural = []\n }\n }\n\n const { db, stack } = options;\n options.isCircural = false;\n\n if (options.checkCircural && _.isObject(obj)) {\n let indexValue = CLASS.OBJECT(obj).indexValue\n if (CLASS.OBJECT(obj).isClassObject && !_.isUndefined(indexValue)) {\n let className = CLASS.getNameFromObject(obj);\n let p = `${className}.id_${indexValue}`;\n const inDB: Models.InDBType = _.get(db, p);\n\n if (inDB && CLASS.OBJECT(inDB.target).isEqual(obj)) {\n const circ: Models.Circ = {\n pathToObj: lodashPath,\n circuralTargetPath: inDB.path\n }\n // @ts-ignore\n options.circural.push(circ)\n options.isCircural = true;\n } else {\n _.set(db, p, {\n path: lodashPath,\n target: obj\n } as Models.InDBType)\n }\n\n } else {\n // @ts-ignore\n const inStack = stack.find((c: Models.InDBType) => c.target == obj);\n\n if (!_.isUndefined(inStack)) {\n const circ: Models.Circ = {\n pathToObj: lodashPath,\n circuralTargetPath: inStack.path\n }\n // @ts-ignore\n options.circural.push(circ)\n options.isCircural = true;\n } else {\n // @ts-ignore\n stack.push({\n path: lodashPath,\n target: obj\n } as Models.InDBType);\n }\n\n }\n }\n return options;\n }\n\n private static _walk(json: Object, obj: Object, iterator: Iterator, lodashPath = '',\n options?: Models.InternalValues, depthLevel = 0) {\n\n if (!options) {\n options = {} as any;\n }\n\n // @ts-ignore\n if (!options.breadthWalk) {\n // @ts-ignore\n options = this.prepareOptions(options, obj, lodashPath)\n\n // @ts-ignore\n if (this._shoudlReturn(options.include, options.exclude, lodashPath)) {\n return;\n }\n\n // @ts-ignore\n if (options.hasIterator && lodashPath !== '') {\n iterator(obj, lodashPath, this._changeValue(json, lodashPath, false, options), options)\n }\n\n // @ts-ignore\n if (options._valueChanged) {\n obj = _.get(json, lodashPath)\n }\n options._valueChanged = false;\n\n if (options.isCircural) {\n options._skip = true;\n }\n\n if (options._skip) {\n // @ts-ignore\n options._skip = false;\n return\n }\n }\n\n\n\n if (options.breadthWalk) {\n\n let queue: Models.Ver[] = [{ v: json, p: lodashPath, parent: void 0 }];\n\n // const pathesToSkip = {};\n while (queue.length > 0) {\n\n const ver = queue.shift();\n // console.log(`pathes to skip`, pathesToSkip);\n // if (!_.isUndefined(Object.keys(pathesToSkip).find(key => ver.p.startsWith(pathesToSkip[key])))) {\n // console.log(`skip: ${ver.p}`)\n // continue;\n // }\n // @ts-ignore\n if (this._shoudlReturn(options.include, options.exclude, ver.p)) {\n // pathesToSkip[ver.p] = true;\n // console.log(`skip2: ${ver.p}`)\n continue;\n }\n\n // console.log(`not skip value ${ver.p}`)\n\n // @ts-ignore\n let { v, p } = ver;\n // @ts-ignore\n options = this.prepareOptions(options, v, p)\n\n if (options._exit) {\n console.log('EXIT')\n return options;\n }\n if (options.hasIterator && p !== '') {\n iterator(v, p, this._changeValue(json, p, false, options), options);\n }\n\n // @ts-ignore\n if (options._valueChanged) {\n ver.v = _.get(json, p);\n }\n options._valueChanged = false;\n\n if (options.isCircural) {\n // pathesToSkip[ver.p] = true;\n continue;\n }\n\n if (options._skip) {\n // @ts-ignore\n options._skip = false;\n // pathesToSkip[ver.p] = true;\n continue;\n }\n // console.log(`LOOK FOR CHILDREN OF ${ver.p}`)\n if (_.isArray(v)) {\n // @ts-ignore\n queue = queue.concat(findChildren(ver, p, options.walkGetters))\n } else if (_.isObject(v)) {\n // @ts-ignore\n queue = queue.concat(findChildren(ver, p, options.walkGetters))\n }\n }\n\n } else {\n // @ts-ignore\n const { walkGetters } = options;\n\n if (Array.isArray(obj)) {\n obj.forEach((o, i) => {\n // @ts-ignore\n this._walk(json, obj[i], iterator, `${lodashPath}[${i}]`, options, depthLevel + 1)\n })\n\n } else if (_.isObject(obj)) {\n const allKeys = !walkGetters ? [] : Object.getOwnPropertyNames(obj);\n for (const key in obj) {\n if (_.isObject(obj) && obj.hasOwnProperty(key)) {\n _.pull(allKeys, key)\n\n // @ts-ignore\n options.isGetter = false;\n // @ts-ignore\n this._walk(json, obj[key], iterator, `${(lodashPath === '') ? '' : `${lodashPath}.`}${key}`, options, depthLevel + 1)\n }\n }\n if (walkGetters) {\n for (let index = 0; index < allKeys.length; index++) {\n if (_.isObject(obj)) {\n const key = allKeys[index];\n\n // @ts-ignore\n options.isGetter = true;\n // @ts-ignore\n this._walk(json, obj[key], iterator, `${(lodashPath === '') ? '' : `${lodashPath}.`}${key}`, options, depthLevel + 1)\n }\n }\n }\n }\n\n // @ts-ignore\n if (options._exit && json === obj) {\n // @ts-ignore\n options._exit = false;\n }\n\n }\n\n return options;\n }\n\n}\n\nexport const walk = {\n Object: Helpers.Walk.Object,\n ObjectBy: Helpers.Walk.ObjectBy\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lodash-walk-object.mjs","sources":["../../../tmp-libs-for-bundle/lodash-walk-object/projects/lodash-walk-object/src/lib/index.ts","../../../tmp-libs-for-bundle/lodash-walk-object/projects/lodash-walk-object/src/lodash-walk-object.ts"],"sourcesContent":["import { _ } from 'tnp-core/browser';\nimport { CLASS } from 'typescript-class-helpers/browser';\n// let counter = 0\nimport { Models } from './models';\nexport * from './models';\n\nfunction findChildren(ver: Models.Ver, lp: string, walkGetters: boolean): Models.Ver[] {\n\n const obj = ver.v\n if (_.isArray(obj)) {\n return obj.map((v, i) => {\n return { v, p: `${lp}[${i}]`, parent: ver, isGetter: false }\n });\n } else if (_.isObject(obj)) {\n\n const allKeys = !walkGetters ? [] : Object.getOwnPropertyNames(obj);\n const children: Models.Ver[] = [];\n for (const key in obj) {\n if (_.isObject(obj) && _.isFunction(obj.hasOwnProperty) && obj.hasOwnProperty(key)) {\n _.pull(allKeys, key)\n children.push({ v: obj[key], p: `${(lp === '') ? '' : `${lp}.`}${key}`, parent: ver, isGetter: false })\n }\n }\n if (walkGetters) {\n for (let index = 0; index < allKeys.length; index++) {\n if (_.isObject(obj)) {\n const key = allKeys[index];\n children.push({ v: obj[key], p: `${(lp === '') ? '' : `${lp}.`}${key}`, parent: ver, isGetter: true })\n }\n }\n }\n return children;\n }\n return [];\n}\n\n\n\nexport type Iterator = (value: any,\n lodashPath: string,\n // @ts-ignore\n changeValueTo: (newValue) => void,\n options?: Models.AdditionalIteratorOptions\n\n) => void\nexport class Helpers {\n\n public static get Walk() {\n const self = this;\n return {\n Object(json: Object, iterator: Iterator, optionsOrWalkGettersValue?: Models.StartIteratorOptions) {\n\n if (_.isUndefined(optionsOrWalkGettersValue)) {\n optionsOrWalkGettersValue = {}\n }\n\n (optionsOrWalkGettersValue as Models.InternalValues).hasIterator = _.isFunction(iterator)\n\n if (_.isUndefined(optionsOrWalkGettersValue.breadthWalk)) {\n optionsOrWalkGettersValue.breadthWalk = false;\n }\n\n let {\n circural\n } = self._walk(json, json, iterator, void 0, optionsOrWalkGettersValue as any)\n\n return { circs: circural }\n },\n ObjectBy(property: string, inContext: Object, iterator: Iterator, options?: Models.StartIteratorOptions) {\n if (_.isFunction(iterator)) {\n iterator(inContext, '', self._changeValue(inContext, property, true)) // TODO Add optoins\n }\n // @ts-ignore\n const json = inContext[property]\n return self.Walk.Object(json, iterator, options)\n }\n }\n }\n\n private static _changeValue(json: Object, lodahPath: string, simpleChange = false, options?: Models.InternalValues) {\n\n var { contextPath, property } = this._prepareParams(lodahPath);\n var context = _.get(json, contextPath);\n\n return (newValue: any) => {\n if (contextPath === '') {\n simpleChange = true;\n }\n\n if (simpleChange) {\n // @ts-ignore\n json[property] = newValue;\n } else {\n // console.log(`CONTEXT VALUE CHANGE! \"${contextPath}\" + \"${property}\" `, newValue)\n // console.log('context', context)\n if (context) {\n context[property] = newValue;\n }\n }\n if (options) {\n options._valueChanged = true;\n }\n }\n }\n\n private static _prepareParams(lodashPath: string) {\n // console.log('contextPath before', lodashPath)\n const contextPath = this._Helpers.Path.getContextPath(lodashPath);\n // console.log('contextPath after', contextPath)\n\n let property = this._Helpers.Path.getPropertyPath(lodashPath, contextPath);\n // console.log('property after process', property)\n if (_.isString(property) && property.trim() !== '' && !_.isNaN(Number(property))) {\n property = Number(property)\n }\n return {\n contextPath, property\n }\n }\n\n private static get _Helpers() {\n return {\n get Path() {\n return {\n // @ts-ignore\n getPropertyPath(lodahPath, contetPath) {\n return (lodahPath\n .replace(contetPath, '')\n .replace(/^\\./, '')\n .replace(/\\[/, '')\n .replace(/\\]/, ''))\n },\n getContextPath(p: string) {\n let res: string;\n if (p.endsWith(']')) {\n res = p.replace(/\\[(\\\"|\\')?[0-9]+(\\\"|\\')?\\]$/, '')\n } else {\n res = p.replace(/\\.([a-zA-Z0-9]|\\$|\\_|\\@|\\-|\\/|\\:)+$/, '')\n }\n return res === p ? '' : res;\n }\n }\n }\n }\n }\n\n private static _shoudlReturn(include = [], exclude = [], lodashPath: string) {\n let res = false;\n if (lodashPath.replace(/^\\[(\\'|\\\")?[0-9]*(\\'|\\\")?\\]/, '').trim() !== '') {\n lodashPath = lodashPath.replace(/^\\[(\\'|\\\")?[0-9]*(\\'|\\\")?\\]\\./, '')\n res = (\n (_.isArray(include) && include.length > 0\n && !include.find(p => lodashPath.startsWith(p)))\n ||\n (_.isArray(exclude) && exclude.length > 0\n && !!exclude.find(p => lodashPath.startsWith(p)))\n )\n }\n\n return res;\n }\n\n // @ts-ignore\n private static prepareOptions(options: Models.InternalValues, obj, lodashPath) {\n\n if (options._exit) {\n return;\n }\n\n if (_.isUndefined(options.walkGetters)) {\n options.walkGetters = true;\n }\n\n if (_.isUndefined(options.checkCircural)) {\n options.checkCircural = false;\n }\n\n if (_.isUndefined(options.isGetter)) {\n // @ts-ignore\n options.isGetter = false;\n }\n\n if (_.isUndefined(options._valueChanged)) {\n options._valueChanged = false;\n }\n\n if (_.isUndefined(options._exit)) {\n // @ts-ignore\n options._exit = false;\n }\n\n if (_.isUndefined(options.exit)) {\n options.exit = () => {\n options._exit = true;\n }\n }\n\n if (_.isUndefined(options._skip)) {\n // @ts-ignore\n options._skip = false;\n }\n\n if (_.isUndefined(options.skipObject)) {\n options.skipObject = () => {\n options._skip = true;\n }\n }\n\n if (options.checkCircural) {\n if (_.isUndefined(options.db)) {\n options.db = {}\n }\n\n if (_.isUndefined(options.stack)) {\n options.stack = []\n }\n\n if (_.isUndefined(options.circural)) {\n options.circural = []\n }\n }\n\n const { db, stack } = options;\n options.isCircural = false;\n\n if (options.checkCircural && _.isObject(obj)) {\n let indexValue = CLASS.OBJECT(obj).indexValue\n if (CLASS.OBJECT(obj).isClassObject && !_.isUndefined(indexValue)) {\n let className = CLASS.getNameFromObject(obj);\n let p = `${className}.id_${indexValue}`;\n const inDB: Models.InDBType = _.get(db, p);\n\n if (inDB && CLASS.OBJECT(inDB.target).isEqual(obj)) {\n const circ: Models.Circ = {\n pathToObj: lodashPath,\n circuralTargetPath: inDB.path\n }\n // @ts-ignore\n options.circural.push(circ)\n options.isCircural = true;\n } else {\n _.set(db, p, {\n path: lodashPath,\n target: obj\n } as Models.InDBType)\n }\n\n } else {\n // @ts-ignore\n const inStack = stack.find((c: Models.InDBType) => c.target == obj);\n\n if (!_.isUndefined(inStack)) {\n const circ: Models.Circ = {\n pathToObj: lodashPath,\n circuralTargetPath: inStack.path\n }\n // @ts-ignore\n options.circural.push(circ)\n options.isCircural = true;\n } else {\n // @ts-ignore\n stack.push({\n path: lodashPath,\n target: obj\n } as Models.InDBType);\n }\n\n }\n }\n return options;\n }\n\n private static _walk(json: Object, obj: Object, iterator: Iterator, lodashPath = '',\n options?: Models.InternalValues, depthLevel = 0) {\n\n if (!options) {\n options = {} as any;\n }\n\n // @ts-ignore\n if (!options.breadthWalk) {\n // @ts-ignore\n options = this.prepareOptions(options, obj, lodashPath)\n\n // @ts-ignore\n if (this._shoudlReturn(options.include, options.exclude, lodashPath)) {\n return;\n }\n\n // @ts-ignore\n if (options.hasIterator && lodashPath !== '') {\n iterator(obj, lodashPath, this._changeValue(json, lodashPath, false, options), options)\n }\n\n // @ts-ignore\n if (options._valueChanged) {\n obj = _.get(json, lodashPath)\n }\n options._valueChanged = false;\n\n if (options.isCircural) {\n options._skip = true;\n }\n\n if (options._skip) {\n // @ts-ignore\n options._skip = false;\n return\n }\n }\n\n\n\n if (options.breadthWalk) {\n\n let queue: Models.Ver[] = [{ v: json, p: lodashPath, parent: void 0 }];\n\n // const pathesToSkip = {};\n while (queue.length > 0) {\n\n const ver = queue.shift();\n // console.log(`pathes to skip`, pathesToSkip);\n // if (!_.isUndefined(Object.keys(pathesToSkip).find(key => ver.p.startsWith(pathesToSkip[key])))) {\n // console.log(`skip: ${ver.p}`)\n // continue;\n // }\n // @ts-ignore\n if (this._shoudlReturn(options.include, options.exclude, ver.p)) {\n // pathesToSkip[ver.p] = true;\n // console.log(`skip2: ${ver.p}`)\n continue;\n }\n\n // console.log(`not skip value ${ver.p}`)\n\n // @ts-ignore\n let { v, p } = ver;\n // @ts-ignore\n options = this.prepareOptions(options, v, p)\n\n if (options._exit) {\n console.log('EXIT')\n return options;\n }\n if (options.hasIterator && p !== '') {\n iterator(v, p, this._changeValue(json, p, false, options), options);\n }\n\n // @ts-ignore\n if (options._valueChanged) {\n ver.v = _.get(json, p);\n }\n options._valueChanged = false;\n\n if (options.isCircural) {\n // pathesToSkip[ver.p] = true;\n continue;\n }\n\n if (options._skip) {\n // @ts-ignore\n options._skip = false;\n // pathesToSkip[ver.p] = true;\n continue;\n }\n // console.log(`LOOK FOR CHILDREN OF ${ver.p}`)\n if (_.isArray(v)) {\n // @ts-ignore\n queue = queue.concat(findChildren(ver, p, options.walkGetters))\n } else if (_.isObject(v)) {\n // @ts-ignore\n queue = queue.concat(findChildren(ver, p, options.walkGetters))\n }\n }\n\n } else {\n // @ts-ignore\n const { walkGetters } = options;\n\n if (Array.isArray(obj)) {\n obj.forEach((o, i) => {\n // @ts-ignore\n this._walk(json, obj[i], iterator, `${lodashPath}[${i}]`, options, depthLevel + 1)\n })\n\n } else if (_.isObject(obj)) {\n const allKeys = !walkGetters ? [] : Object.getOwnPropertyNames(obj);\n for (const key in obj) {\n if (_.isObject(obj) && obj.hasOwnProperty(key)) {\n _.pull(allKeys, key)\n\n // @ts-ignore\n options.isGetter = false;\n // @ts-ignore\n this._walk(json, obj[key], iterator, `${(lodashPath === '') ? '' : `${lodashPath}.`}${key}`, options, depthLevel + 1)\n }\n }\n if (walkGetters) {\n for (let index = 0; index < allKeys.length; index++) {\n if (_.isObject(obj)) {\n const key = allKeys[index];\n\n // @ts-ignore\n options.isGetter = true;\n // @ts-ignore\n this._walk(json, obj[key], iterator, `${(lodashPath === '') ? '' : `${lodashPath}.`}${key}`, options, depthLevel + 1)\n }\n }\n }\n }\n\n // @ts-ignore\n if (options._exit && json === obj) {\n // @ts-ignore\n options._exit = false;\n }\n\n }\n\n return options;\n }\n\n}\n\nexport const walk = {\n Object: Helpers.Walk.Object,\n ObjectBy: Helpers.Walk.ObjectBy\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lodash-walk-object.mjs","sources":["../../../tmp-libs-for-bundle/lodash-walk-object/projects/lodash-walk-object/src/lib/index.ts","../../../tmp-libs-for-bundle/lodash-walk-object/projects/lodash-walk-object/src/lodash-walk-object.ts"],"sourcesContent":["import { _ } from 'tnp-core/browser';\nimport { CLASS } from 'typescript-class-helpers/browser';\n// let counter = 0\nimport { Models } from './models';\nexport * from './models';\n\nfunction findChildren(ver: Models.Ver, lp: string, walkGetters: boolean): Models.Ver[] {\n\n const obj = ver.v\n if (_.isArray(obj)) {\n return obj.map((v, i) => {\n return { v, p: `${lp}[${i}]`, parent: ver, isGetter: false }\n });\n } else if (_.isObject(obj)) {\n\n const allKeys = !walkGetters ? [] : Object.getOwnPropertyNames(obj);\n const children: Models.Ver[] = [];\n for (const key in obj) {\n if (_.isObject(obj) && _.isFunction(obj.hasOwnProperty) && obj.hasOwnProperty(key)) {\n _.pull(allKeys, key)\n children.push({ v: obj[key], p: `${(lp === '') ? '' : `${lp}.`}${key}`, parent: ver, isGetter: false })\n }\n }\n if (walkGetters) {\n for (let index = 0; index < allKeys.length; index++) {\n if (_.isObject(obj)) {\n const key = allKeys[index];\n children.push({ v: obj[key], p: `${(lp === '') ? '' : `${lp}.`}${key}`, parent: ver, isGetter: true })\n }\n }\n }\n return children;\n }\n return [];\n}\n\n\n\nexport type Iterator = (value: any,\n lodashPath: string,\n // @ts-ignore\n changeValueTo: (newValue) => void,\n options?: Models.AdditionalIteratorOptions\n\n) => void\nexport class Helpers {\n\n public static get Walk() {\n const self = this;\n return {\n Object(json: Object, iterator: Iterator, optionsOrWalkGettersValue?: Models.StartIteratorOptions) {\n\n if (_.isUndefined(optionsOrWalkGettersValue)) {\n optionsOrWalkGettersValue = {}\n }\n\n (optionsOrWalkGettersValue as Models.InternalValues).hasIterator = _.isFunction(iterator)\n\n if (_.isUndefined(optionsOrWalkGettersValue.breadthWalk)) {\n optionsOrWalkGettersValue.breadthWalk = false;\n }\n\n let {\n circural\n } = self._walk(json, json, iterator, void 0, optionsOrWalkGettersValue as any)\n\n return { circs: circural }\n },\n ObjectBy(property: string, inContext: Object, iterator: Iterator, options?: Models.StartIteratorOptions) {\n if (_.isFunction(iterator)) {\n iterator(inContext, '', self._changeValue(inContext, property, true)) // TODO Add optoins\n }\n // @ts-ignore\n const json = inContext[property]\n return self.Walk.Object(json, iterator, options)\n }\n }\n }\n\n private static _changeValue(json: Object, lodahPath: string, simpleChange = false, options?: Models.InternalValues) {\n\n var { contextPath, property } = this._prepareParams(lodahPath);\n var context = _.get(json, contextPath);\n\n return (newValue: any) => {\n if (contextPath === '') {\n simpleChange = true;\n }\n\n if (simpleChange) {\n // @ts-ignore\n json[property] = newValue;\n } else {\n // console.log(`CONTEXT VALUE CHANGE! \"${contextPath}\" + \"${property}\" `, newValue)\n // console.log('context', context)\n if (context) {\n context[property] = newValue;\n }\n }\n if (options) {\n options._valueChanged = true;\n }\n }\n }\n\n private static _prepareParams(lodashPath: string) {\n // console.log('contextPath before', lodashPath)\n const contextPath = this._Helpers.Path.getContextPath(lodashPath);\n // console.log('contextPath after', contextPath)\n\n let property = this._Helpers.Path.getPropertyPath(lodashPath, contextPath);\n // console.log('property after process', property)\n if (_.isString(property) && property.trim() !== '' && !_.isNaN(Number(property))) {\n property = Number(property)\n }\n return {\n contextPath, property\n }\n }\n\n private static get _Helpers() {\n return {\n get Path() {\n return {\n // @ts-ignore\n getPropertyPath(lodahPath, contetPath) {\n return (lodahPath\n .replace(contetPath, '')\n .replace(/^\\./, '')\n .replace(/\\[/, '')\n .replace(/\\]/, ''))\n },\n getContextPath(p: string) {\n let res: string;\n if (p.endsWith(']')) {\n res = p.replace(/\\[(\\\"|\\')?[0-9]+(\\\"|\\')?\\]$/, '')\n } else {\n res = p.replace(/\\.([a-zA-Z0-9]|\\$|\\_|\\@|\\-|\\/|\\:)+$/, '')\n }\n return res === p ? '' : res;\n }\n }\n }\n }\n }\n\n private static _shoudlReturn(include = [], exclude = [], lodashPath: string) {\n let res = false;\n if (lodashPath.replace(/^\\[(\\'|\\\")?[0-9]*(\\'|\\\")?\\]/, '').trim() !== '') {\n lodashPath = lodashPath.replace(/^\\[(\\'|\\\")?[0-9]*(\\'|\\\")?\\]\\./, '')\n res = (\n (_.isArray(include) && include.length > 0\n && !include.find(p => lodashPath.startsWith(p)))\n ||\n (_.isArray(exclude) && exclude.length > 0\n && !!exclude.find(p => lodashPath.startsWith(p)))\n )\n }\n\n return res;\n }\n\n // @ts-ignore\n private static prepareOptions(options: Models.InternalValues, obj, lodashPath) {\n\n if (options._exit) {\n return;\n }\n\n if (_.isUndefined(options.walkGetters)) {\n options.walkGetters = true;\n }\n\n if (_.isUndefined(options.checkCircural)) {\n options.checkCircural = false;\n }\n\n if (_.isUndefined(options.isGetter)) {\n // @ts-ignore\n options.isGetter = false;\n }\n\n if (_.isUndefined(options._valueChanged)) {\n options._valueChanged = false;\n }\n\n if (_.isUndefined(options._exit)) {\n // @ts-ignore\n options._exit = false;\n }\n\n if (_.isUndefined(options.exit)) {\n options.exit = () => {\n options._exit = true;\n }\n }\n\n if (_.isUndefined(options._skip)) {\n // @ts-ignore\n options._skip = false;\n }\n\n if (_.isUndefined(options.skipObject)) {\n options.skipObject = () => {\n options._skip = true;\n }\n }\n\n if (options.checkCircural) {\n if (_.isUndefined(options.db)) {\n options.db = {}\n }\n\n if (_.isUndefined(options.stack)) {\n options.stack = []\n }\n\n if (_.isUndefined(options.circural)) {\n options.circural = []\n }\n }\n\n const { db, stack } = options;\n options.isCircural = false;\n\n if (options.checkCircural && _.isObject(obj)) {\n let indexValue = CLASS.OBJECT(obj).indexValue\n if (CLASS.OBJECT(obj).isClassObject && !_.isUndefined(indexValue)) {\n let className = CLASS.getNameFromObject(obj);\n let p = `${className}.id_${indexValue}`;\n const inDB: Models.InDBType = _.get(db, p);\n\n if (inDB && CLASS.OBJECT(inDB.target).isEqual(obj)) {\n const circ: Models.Circ = {\n pathToObj: lodashPath,\n circuralTargetPath: inDB.path\n }\n // @ts-ignore\n options.circural.push(circ)\n options.isCircural = true;\n } else {\n _.set(db, p, {\n path: lodashPath,\n target: obj\n } as Models.InDBType)\n }\n\n } else {\n // @ts-ignore\n const inStack = stack.find((c: Models.InDBType) => c.target == obj);\n\n if (!_.isUndefined(inStack)) {\n const circ: Models.Circ = {\n pathToObj: lodashPath,\n circuralTargetPath: inStack.path\n }\n // @ts-ignore\n options.circural.push(circ)\n options.isCircural = true;\n } else {\n // @ts-ignore\n stack.push({\n path: lodashPath,\n target: obj\n } as Models.InDBType);\n }\n\n }\n }\n return options;\n }\n\n private static _walk(json: Object, obj: Object, iterator: Iterator, lodashPath = '',\n options?: Models.InternalValues, depthLevel = 0) {\n\n if (!options) {\n options = {} as any;\n }\n\n // @ts-ignore\n if (!options.breadthWalk) {\n // @ts-ignore\n options = this.prepareOptions(options, obj, lodashPath)\n\n // @ts-ignore\n if (this._shoudlReturn(options.include, options.exclude, lodashPath)) {\n return;\n }\n\n // @ts-ignore\n if (options.hasIterator && lodashPath !== '') {\n iterator(obj, lodashPath, this._changeValue(json, lodashPath, false, options), options)\n }\n\n // @ts-ignore\n if (options._valueChanged) {\n obj = _.get(json, lodashPath)\n }\n options._valueChanged = false;\n\n if (options.isCircural) {\n options._skip = true;\n }\n\n if (options._skip) {\n // @ts-ignore\n options._skip = false;\n return\n }\n }\n\n\n\n if (options.breadthWalk) {\n\n let queue: Models.Ver[] = [{ v: json, p: lodashPath, parent: void 0 }];\n\n // const pathesToSkip = {};\n while (queue.length > 0) {\n\n const ver = queue.shift();\n // console.log(`pathes to skip`, pathesToSkip);\n // if (!_.isUndefined(Object.keys(pathesToSkip).find(key => ver.p.startsWith(pathesToSkip[key])))) {\n // console.log(`skip: ${ver.p}`)\n // continue;\n // }\n // @ts-ignore\n if (this._shoudlReturn(options.include, options.exclude, ver.p)) {\n // pathesToSkip[ver.p] = true;\n // console.log(`skip2: ${ver.p}`)\n continue;\n }\n\n // console.log(`not skip value ${ver.p}`)\n\n // @ts-ignore\n let { v, p } = ver;\n // @ts-ignore\n options = this.prepareOptions(options, v, p)\n\n if (options._exit) {\n console.log('EXIT')\n return options;\n }\n if (options.hasIterator && p !== '') {\n iterator(v, p, this._changeValue(json, p, false, options), options);\n }\n\n // @ts-ignore\n if (options._valueChanged) {\n ver.v = _.get(json, p);\n }\n options._valueChanged = false;\n\n if (options.isCircural) {\n // pathesToSkip[ver.p] = true;\n continue;\n }\n\n if (options._skip) {\n // @ts-ignore\n options._skip = false;\n // pathesToSkip[ver.p] = true;\n continue;\n }\n // console.log(`LOOK FOR CHILDREN OF ${ver.p}`)\n if (_.isArray(v)) {\n // @ts-ignore\n queue = queue.concat(findChildren(ver, p, options.walkGetters))\n } else if (_.isObject(v)) {\n // @ts-ignore\n queue = queue.concat(findChildren(ver, p, options.walkGetters))\n }\n }\n\n } else {\n // @ts-ignore\n const { walkGetters } = options;\n\n if (Array.isArray(obj)) {\n obj.forEach((o, i) => {\n // @ts-ignore\n this._walk(json, obj[i], iterator, `${lodashPath}[${i}]`, options, depthLevel + 1)\n })\n\n } else if (_.isObject(obj)) {\n const allKeys = !walkGetters ? [] : Object.getOwnPropertyNames(obj);\n for (const key in obj) {\n if (_.isObject(obj) && obj.hasOwnProperty(key)) {\n _.pull(allKeys, key)\n\n // @ts-ignore\n options.isGetter = false;\n // @ts-ignore\n this._walk(json, obj[key], iterator, `${(lodashPath === '') ? '' : `${lodashPath}.`}${key}`, options, depthLevel + 1)\n }\n }\n if (walkGetters) {\n for (let index = 0; index < allKeys.length; index++) {\n if (_.isObject(obj)) {\n const key = allKeys[index];\n\n // @ts-ignore\n options.isGetter = true;\n // @ts-ignore\n this._walk(json, obj[key], iterator, `${(lodashPath === '') ? '' : `${lodashPath}.`}${key}`, options, depthLevel + 1)\n }\n }\n }\n }\n\n // @ts-ignore\n if (options._exit && json === obj) {\n // @ts-ignore\n options._exit = false;\n }\n\n }\n\n return options;\n }\n\n}\n\nexport const walk = {\n Object: Helpers.Walk.Object,\n ObjectBy: Helpers.Walk.ObjectBy\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lodash-walk-object.mjs","sources":["../../../tmp-libs-for-bundle/lodash-walk-object/projects/lodash-walk-object/src/lib/index.ts","../../../tmp-libs-for-bundle/lodash-walk-object/projects/lodash-walk-object/src/lodash-walk-object.ts"],"sourcesContent":["import { _ } from 'tnp-core/browser';\nimport { CLASS } from 'typescript-class-helpers/browser';\n// let counter = 0\nimport { Models } from './models';\nexport * from './models';\n\nfunction findChildren(ver: Models.Ver, lp: string, walkGetters: boolean): Models.Ver[] {\n\n const obj = ver.v\n if (_.isArray(obj)) {\n return obj.map((v, i) => {\n return { v, p: `${lp}[${i}]`, parent: ver, isGetter: false }\n });\n } else if (_.isObject(obj)) {\n\n const allKeys = !walkGetters ? [] : Object.getOwnPropertyNames(obj);\n const children: Models.Ver[] = [];\n for (const key in obj) {\n if (_.isObject(obj) && _.isFunction(obj.hasOwnProperty) && obj.hasOwnProperty(key)) {\n _.pull(allKeys, key)\n children.push({ v: obj[key], p: `${(lp === '') ? '' : `${lp}.`}${key}`, parent: ver, isGetter: false })\n }\n }\n if (walkGetters) {\n for (let index = 0; index < allKeys.length; index++) {\n if (_.isObject(obj)) {\n const key = allKeys[index];\n children.push({ v: obj[key], p: `${(lp === '') ? '' : `${lp}.`}${key}`, parent: ver, isGetter: true })\n }\n }\n }\n return children;\n }\n return [];\n}\n\n\n\nexport type Iterator = (value: any,\n lodashPath: string,\n // @ts-ignore\n changeValueTo: (newValue) => void,\n options?: Models.AdditionalIteratorOptions\n\n) => void\nexport class Helpers {\n\n public static get Walk() {\n const self = this;\n return {\n Object(json: Object, iterator: Iterator, optionsOrWalkGettersValue?: Models.StartIteratorOptions) {\n\n if (_.isUndefined(optionsOrWalkGettersValue)) {\n optionsOrWalkGettersValue = {}\n }\n\n (optionsOrWalkGettersValue as Models.InternalValues).hasIterator = _.isFunction(iterator)\n\n if (_.isUndefined(optionsOrWalkGettersValue.breadthWalk)) {\n optionsOrWalkGettersValue.breadthWalk = false;\n }\n\n let {\n circural\n } = self._walk(json, json, iterator, void 0, optionsOrWalkGettersValue as any)\n\n return { circs: circural }\n },\n ObjectBy(property: string, inContext: Object, iterator: Iterator, options?: Models.StartIteratorOptions) {\n if (_.isFunction(iterator)) {\n iterator(inContext, '', self._changeValue(inContext, property, true)) // TODO Add optoins\n }\n // @ts-ignore\n const json = inContext[property]\n return self.Walk.Object(json, iterator, options)\n }\n }\n }\n\n private static _changeValue(json: Object, lodahPath: string, simpleChange = false, options?: Models.InternalValues) {\n\n var { contextPath, property } = this._prepareParams(lodahPath);\n var context = _.get(json, contextPath);\n\n return (newValue: any) => {\n if (contextPath === '') {\n simpleChange = true;\n }\n\n if (simpleChange) {\n // @ts-ignore\n json[property] = newValue;\n } else {\n // console.log(`CONTEXT VALUE CHANGE! \"${contextPath}\" + \"${property}\" `, newValue)\n // console.log('context', context)\n if (context) {\n context[property] = newValue;\n }\n }\n if (options) {\n options._valueChanged = true;\n }\n }\n }\n\n private static _prepareParams(lodashPath: string) {\n // console.log('contextPath before', lodashPath)\n const contextPath = this._Helpers.Path.getContextPath(lodashPath);\n // console.log('contextPath after', contextPath)\n\n let property = this._Helpers.Path.getPropertyPath(lodashPath, contextPath);\n // console.log('property after process', property)\n if (_.isString(property) && property.trim() !== '' && !_.isNaN(Number(property))) {\n property = Number(property)\n }\n return {\n contextPath, property\n }\n }\n\n private static get _Helpers() {\n return {\n get Path() {\n return {\n // @ts-ignore\n getPropertyPath(lodahPath, contetPath) {\n return (lodahPath\n .replace(contetPath, '')\n .replace(/^\\./, '')\n .replace(/\\[/, '')\n .replace(/\\]/, ''))\n },\n getContextPath(p: string) {\n let res: string;\n if (p.endsWith(']')) {\n res = p.replace(/\\[(\\\"|\\')?[0-9]+(\\\"|\\')?\\]$/, '')\n } else {\n res = p.replace(/\\.([a-zA-Z0-9]|\\$|\\_|\\@|\\-|\\/|\\:)+$/, '')\n }\n return res === p ? '' : res;\n }\n }\n }\n }\n }\n\n private static _shoudlReturn(include = [], exclude = [], lodashPath: string) {\n let res = false;\n if (lodashPath.replace(/^\\[(\\'|\\\")?[0-9]*(\\'|\\\")?\\]/, '').trim() !== '') {\n lodashPath = lodashPath.replace(/^\\[(\\'|\\\")?[0-9]*(\\'|\\\")?\\]\\./, '')\n res = (\n (_.isArray(include) && include.length > 0\n && !include.find(p => lodashPath.startsWith(p)))\n ||\n (_.isArray(exclude) && exclude.length > 0\n && !!exclude.find(p => lodashPath.startsWith(p)))\n )\n }\n\n return res;\n }\n\n // @ts-ignore\n private static prepareOptions(options: Models.InternalValues, obj, lodashPath) {\n\n if (options._exit) {\n return;\n }\n\n if (_.isUndefined(options.walkGetters)) {\n options.walkGetters = true;\n }\n\n if (_.isUndefined(options.checkCircural)) {\n options.checkCircural = false;\n }\n\n if (_.isUndefined(options.isGetter)) {\n // @ts-ignore\n options.isGetter = false;\n }\n\n if (_.isUndefined(options._valueChanged)) {\n options._valueChanged = false;\n }\n\n if (_.isUndefined(options._exit)) {\n // @ts-ignore\n options._exit = false;\n }\n\n if (_.isUndefined(options.exit)) {\n options.exit = () => {\n options._exit = true;\n }\n }\n\n if (_.isUndefined(options._skip)) {\n // @ts-ignore\n options._skip = false;\n }\n\n if (_.isUndefined(options.skipObject)) {\n options.skipObject = () => {\n options._skip = true;\n }\n }\n\n if (options.checkCircural) {\n if (_.isUndefined(options.db)) {\n options.db = {}\n }\n\n if (_.isUndefined(options.stack)) {\n options.stack = []\n }\n\n if (_.isUndefined(options.circural)) {\n options.circural = []\n }\n }\n\n const { db, stack } = options;\n options.isCircural = false;\n\n if (options.checkCircural && _.isObject(obj)) {\n let indexValue = CLASS.OBJECT(obj).indexValue\n if (CLASS.OBJECT(obj).isClassObject && !_.isUndefined(indexValue)) {\n let className = CLASS.getNameFromObject(obj);\n let p = `${className}.id_${indexValue}`;\n const inDB: Models.InDBType = _.get(db, p);\n\n if (inDB && CLASS.OBJECT(inDB.target).isEqual(obj)) {\n const circ: Models.Circ = {\n pathToObj: lodashPath,\n circuralTargetPath: inDB.path\n }\n // @ts-ignore\n options.circural.push(circ)\n options.isCircural = true;\n } else {\n _.set(db, p, {\n path: lodashPath,\n target: obj\n } as Models.InDBType)\n }\n\n } else {\n // @ts-ignore\n const inStack = stack.find((c: Models.InDBType) => c.target == obj);\n\n if (!_.isUndefined(inStack)) {\n const circ: Models.Circ = {\n pathToObj: lodashPath,\n circuralTargetPath: inStack.path\n }\n // @ts-ignore\n options.circural.push(circ)\n options.isCircural = true;\n } else {\n // @ts-ignore\n stack.push({\n path: lodashPath,\n target: obj\n } as Models.InDBType);\n }\n\n }\n }\n return options;\n }\n\n private static _walk(json: Object, obj: Object, iterator: Iterator, lodashPath = '',\n options?: Models.InternalValues, depthLevel = 0) {\n\n if (!options) {\n options = {} as any;\n }\n\n // @ts-ignore\n if (!options.breadthWalk) {\n // @ts-ignore\n options = this.prepareOptions(options, obj, lodashPath)\n\n // @ts-ignore\n if (this._shoudlReturn(options.include, options.exclude, lodashPath)) {\n return;\n }\n\n // @ts-ignore\n if (options.hasIterator && lodashPath !== '') {\n iterator(obj, lodashPath, this._changeValue(json, lodashPath, false, options), options)\n }\n\n // @ts-ignore\n if (options._valueChanged) {\n obj = _.get(json, lodashPath)\n }\n options._valueChanged = false;\n\n if (options.isCircural) {\n options._skip = true;\n }\n\n if (options._skip) {\n // @ts-ignore\n options._skip = false;\n return\n }\n }\n\n\n\n if (options.breadthWalk) {\n\n let queue: Models.Ver[] = [{ v: json, p: lodashPath, parent: void 0 }];\n\n // const pathesToSkip = {};\n while (queue.length > 0) {\n\n const ver = queue.shift();\n // console.log(`pathes to skip`, pathesToSkip);\n // if (!_.isUndefined(Object.keys(pathesToSkip).find(key => ver.p.startsWith(pathesToSkip[key])))) {\n // console.log(`skip: ${ver.p}`)\n // continue;\n // }\n // @ts-ignore\n if (this._shoudlReturn(options.include, options.exclude, ver.p)) {\n // pathesToSkip[ver.p] = true;\n // console.log(`skip2: ${ver.p}`)\n continue;\n }\n\n // console.log(`not skip value ${ver.p}`)\n\n // @ts-ignore\n let { v, p } = ver;\n // @ts-ignore\n options = this.prepareOptions(options, v, p)\n\n if (options._exit) {\n console.log('EXIT')\n return options;\n }\n if (options.hasIterator && p !== '') {\n iterator(v, p, this._changeValue(json, p, false, options), options);\n }\n\n // @ts-ignore\n if (options._valueChanged) {\n ver.v = _.get(json, p);\n }\n options._valueChanged = false;\n\n if (options.isCircural) {\n // pathesToSkip[ver.p] = true;\n continue;\n }\n\n if (options._skip) {\n // @ts-ignore\n options._skip = false;\n // pathesToSkip[ver.p] = true;\n continue;\n }\n // console.log(`LOOK FOR CHILDREN OF ${ver.p}`)\n if (_.isArray(v)) {\n // @ts-ignore\n queue = queue.concat(findChildren(ver, p, options.walkGetters))\n } else if (_.isObject(v)) {\n // @ts-ignore\n queue = queue.concat(findChildren(ver, p, options.walkGetters))\n }\n }\n\n } else {\n // @ts-ignore\n const { walkGetters } = options;\n\n if (Array.isArray(obj)) {\n obj.forEach((o, i) => {\n // @ts-ignore\n this._walk(json, obj[i], iterator, `${lodashPath}[${i}]`, options, depthLevel + 1)\n })\n\n } else if (_.isObject(obj)) {\n const allKeys = !walkGetters ? [] : Object.getOwnPropertyNames(obj);\n for (const key in obj) {\n if (_.isObject(obj) && obj.hasOwnProperty(key)) {\n _.pull(allKeys, key)\n\n // @ts-ignore\n options.isGetter = false;\n // @ts-ignore\n this._walk(json, obj[key], iterator, `${(lodashPath === '') ? '' : `${lodashPath}.`}${key}`, options, depthLevel + 1)\n }\n }\n if (walkGetters) {\n for (let index = 0; index < allKeys.length; index++) {\n if (_.isObject(obj)) {\n const key = allKeys[index];\n\n // @ts-ignore\n options.isGetter = true;\n // @ts-ignore\n this._walk(json, obj[key], iterator, `${(lodashPath === '') ? '' : `${lodashPath}.`}${key}`, options, depthLevel + 1)\n }\n }\n }\n }\n\n // @ts-ignore\n if (options._exit && json === obj) {\n // @ts-ignore\n options._exit = false;\n }\n\n }\n\n return options;\n }\n\n}\n\nexport const walk = {\n Object: Helpers.Walk.Object,\n ObjectBy: Helpers.Walk.ObjectBy\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAMA,SAAS,YAAY,CAAC,GAAe,EAAE,EAAU,EAAE,WAAoB,EAAA;AAErE,IAAA,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA;AACjB,IAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAClB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACtB,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA,EAAG,EAAE,CAAI,CAAA,EAAA,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAC9D,SAAC,CAAC,CAAC;AACJ,KAAA;AAAM,SAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAE1B,QAAA,MAAM,OAAO,GAAG,CAAC,WAAW,GAAG,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAiB,EAAE,CAAC;AAClC,QAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;YACrB,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAClF,gBAAA,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AACpB,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAG,EAAA,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,CAAA,CAAA,CAAG,GAAG,GAAG,CAAA,CAAE,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;AACxG,aAAA;AACF,SAAA;AACD,QAAA,IAAI,WAAW,EAAE;AACf,YAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACnD,gBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACnB,oBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3B,oBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAG,EAAA,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,CAAA,CAAA,CAAG,GAAG,GAAG,CAAA,CAAE,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;AACvG,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,QAAQ,CAAC;AACjB,KAAA;AACD,IAAA,OAAO,EAAE,CAAC;AACZ,CAAC;MAWY,OAAO,CAAA;AAEX,IAAA,WAAW,IAAI,GAAA;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;AACL,YAAA,MAAM,CAAC,IAAY,EAAE,QAAkB,EAAE,yBAAuD,EAAA;AAE9F,gBAAA,IAAI,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,EAAE;oBAC5C,yBAAyB,GAAG,EAAE,CAAA;AAC/B,iBAAA;gBAEA,yBAAmD,CAAC,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;gBAEzF,IAAI,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,WAAW,CAAC,EAAE;AACxD,oBAAA,yBAAyB,CAAC,WAAW,GAAG,KAAK,CAAC;AAC/C,iBAAA;AAED,gBAAA,IAAI,EACF,QAAQ,EACT,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,yBAAgC,CAAC,CAAA;AAE9E,gBAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;aAC3B;AACD,YAAA,QAAQ,CAAC,QAAgB,EAAE,SAAiB,EAAE,QAAkB,EAAE,OAAqC,EAAA;AACrG,gBAAA,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC1B,oBAAA,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;AACtE,iBAAA;;AAED,gBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAChC,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;aACjD;SACF,CAAA;KACF;IAEO,OAAO,YAAY,CAAC,IAAY,EAAE,SAAiB,EAAE,YAAY,GAAG,KAAK,EAAE,OAA+B,EAAA;AAEhH,QAAA,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAEvC,OAAO,CAAC,QAAa,KAAI;YACvB,IAAI,WAAW,KAAK,EAAE,EAAE;gBACtB,YAAY,GAAG,IAAI,CAAC;AACrB,aAAA;AAED,YAAA,IAAI,YAAY,EAAE;;AAEhB,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAC3B,aAAA;AAAM,iBAAA;;;AAGL,gBAAA,IAAI,OAAO,EAAE;AACX,oBAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAC9B,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,aAAA;AACH,SAAC,CAAA;KACF;IAEO,OAAO,cAAc,CAAC,UAAkB,EAAA;;AAE9C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;;AAGlE,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;;QAE3E,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE;AAChF,YAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC5B,SAAA;QACD,OAAO;AACL,YAAA,WAAW,EAAE,QAAQ;SACtB,CAAA;KACF;AAEO,IAAA,WAAW,QAAQ,GAAA;QACzB,OAAO;AACL,YAAA,IAAI,IAAI,GAAA;gBACN,OAAO;;oBAEL,eAAe,CAAC,SAAS,EAAE,UAAU,EAAA;AACnC,wBAAA,QAAQ,SAAS;AACd,6BAAA,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACvB,6BAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,6BAAA,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACjB,6BAAA,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAC;qBACtB;AACD,oBAAA,cAAc,CAAC,CAAS,EAAA;AACtB,wBAAA,IAAI,GAAW,CAAC;AAChB,wBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;4BACnB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAA;AACnD,yBAAA;AAAM,6BAAA;4BACL,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAA;AAC3D,yBAAA;wBACD,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;qBAC7B;iBACF,CAAA;aACF;SACF,CAAA;KACF;IAEO,OAAO,aAAa,CAAC,OAAO,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,UAAkB,EAAA;QACzE,IAAI,GAAG,GAAG,KAAK,CAAC;AAChB,QAAA,IAAI,UAAU,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACvE,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAA;AACpE,YAAA,GAAG,IACD,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;AACpC,mBAAA,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;qBAEhD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;AACpC,2BAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CACpD,CAAA;AACF,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACZ;;AAGO,IAAA,OAAO,cAAc,CAAC,OAA8B,EAAE,GAAG,EAAE,UAAU,EAAA;QAE3E,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,OAAO;AACR,SAAA;QAED,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AACtC,YAAA,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5B,SAAA;QAED,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACxC,YAAA,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;AAC/B,SAAA;QAED,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;;AAEnC,YAAA,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC1B,SAAA;QAED,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACxC,YAAA,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;AAC/B,SAAA;QAED,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;AAEhC,YAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,SAAA;QAED,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC/B,YAAA,OAAO,CAAC,IAAI,GAAG,MAAK;AAClB,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACvB,aAAC,CAAA;AACF,SAAA;QAED,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;AAEhC,YAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,SAAA;QAED,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACrC,YAAA,OAAO,CAAC,UAAU,GAAG,MAAK;AACxB,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACvB,aAAC,CAAA;AACF,SAAA;QAED,IAAI,OAAO,CAAC,aAAa,EAAE;YACzB,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AAC7B,gBAAA,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;AAChB,aAAA;YAED,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAChC,gBAAA,OAAO,CAAC,KAAK,GAAG,EAAE,CAAA;AACnB,aAAA;YAED,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACnC,gBAAA,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAA;AACtB,aAAA;AACF,SAAA;AAED,QAAA,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;AAC9B,QAAA,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;QAE3B,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC5C,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAA;AAC7C,YAAA,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;gBACjE,IAAI,SAAS,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC7C,gBAAA,IAAI,CAAC,GAAG,CAAA,EAAG,SAAS,CAAO,IAAA,EAAA,UAAU,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAoB,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAE3C,gBAAA,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAClD,oBAAA,MAAM,IAAI,GAAgB;AACxB,wBAAA,SAAS,EAAE,UAAU;wBACrB,kBAAkB,EAAE,IAAI,CAAC,IAAI;qBAC9B,CAAA;;AAED,oBAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,oBAAA,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,iBAAA;AAAM,qBAAA;AACL,oBAAA,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;AACX,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,MAAM,EAAE,GAAG;AACO,qBAAA,CAAC,CAAA;AACtB,iBAAA;AAEF,aAAA;AAAM,iBAAA;;AAEL,gBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAkB,KAAK,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;AAEpE,gBAAA,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;AAC3B,oBAAA,MAAM,IAAI,GAAgB;AACxB,wBAAA,SAAS,EAAE,UAAU;wBACrB,kBAAkB,EAAE,OAAO,CAAC,IAAI;qBACjC,CAAA;;AAED,oBAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,oBAAA,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,iBAAA;AAAM,qBAAA;;oBAEL,KAAK,CAAC,IAAI,CAAC;AACT,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,MAAM,EAAE,GAAG;AACO,qBAAA,CAAC,CAAC;AACvB,iBAAA;AAEF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;AAEO,IAAA,OAAO,KAAK,CAAC,IAAY,EAAE,GAAW,EAAE,QAAkB,EAAE,UAAU,GAAG,EAAE,EACjF,OAA+B,EAAE,UAAU,GAAG,CAAC,EAAA;QAE/C,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,EAAS,CAAC;AACrB,SAAA;;AAGD,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;;YAExB,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;;AAGvD,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;gBACpE,OAAO;AACR,aAAA;;AAGD,YAAA,IAAI,OAAO,CAAC,WAAW,IAAI,UAAU,KAAK,EAAE,EAAE;gBAC5C,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;AACxF,aAAA;;YAGD,IAAI,OAAO,CAAC,aAAa,EAAE;gBACzB,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;AAC9B,aAAA;AACD,YAAA,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;YAE9B,IAAI,OAAO,CAAC,UAAU,EAAE;AACtB,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,aAAA;YAED,IAAI,OAAO,CAAC,KAAK,EAAE;;AAEjB,gBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;gBACtB,OAAM;AACP,aAAA;AACF,SAAA;QAID,IAAI,OAAO,CAAC,WAAW,EAAE;AAEvB,YAAA,IAAI,KAAK,GAAiB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;;AAGvE,YAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAEvB,gBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;;;;;;;AAO1B,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;;;oBAG/D,SAAS;AACV,iBAAA;;;AAKD,gBAAA,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;;gBAEnB,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;gBAE5C,IAAI,OAAO,CAAC,KAAK,EAAE;AACjB,oBAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACnB,oBAAA,OAAO,OAAO,CAAC;AAChB,iBAAA;AACD,gBAAA,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE,EAAE;oBACnC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AACrE,iBAAA;;gBAGD,IAAI,OAAO,CAAC,aAAa,EAAE;oBACzB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACxB,iBAAA;AACD,gBAAA,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;gBAE9B,IAAI,OAAO,CAAC,UAAU,EAAE;;oBAEtB,SAAS;AACV,iBAAA;gBAED,IAAI,OAAO,CAAC,KAAK,EAAE;;AAEjB,oBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;;oBAEtB,SAAS;AACV,iBAAA;;AAED,gBAAA,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;AAEhB,oBAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;AAChE,iBAAA;AAAM,qBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;;AAExB,oBAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;AAChE,iBAAA;AACF,aAAA;AAEF,SAAA;AAAM,aAAA;;AAEL,YAAA,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;AAEhC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;;oBAEnB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,EAAE,OAAO,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;AACpF,iBAAC,CAAC,CAAA;AAEH,aAAA;AAAM,iBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC1B,gBAAA,MAAM,OAAO,GAAG,CAAC,WAAW,GAAG,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACpE,gBAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AACrB,oBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC9C,wBAAA,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;;AAGpB,wBAAA,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;;AAEzB,wBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAA,EAAG,CAAC,UAAU,KAAK,EAAE,IAAI,EAAE,GAAG,CAAA,EAAG,UAAU,CAAG,CAAA,CAAA,CAAA,EAAG,GAAG,CAAA,CAAE,EAAE,OAAO,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;AACtH,qBAAA;AACF,iBAAA;AACD,gBAAA,IAAI,WAAW,EAAE;AACf,oBAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACnD,wBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACnB,4BAAA,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;;AAG3B,4BAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;;AAExB,4BAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAA,EAAG,CAAC,UAAU,KAAK,EAAE,IAAI,EAAE,GAAG,CAAA,EAAG,UAAU,CAAG,CAAA,CAAA,CAAA,EAAG,GAAG,CAAA,CAAE,EAAE,OAAO,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;AACtH,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;;AAGD,YAAA,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,KAAK,GAAG,EAAE;;AAEjC,gBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,aAAA;AAEF,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KAChB;AAEF,CAAA;AAEY,MAAA,IAAI,GAAG;AAClB,IAAA,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;AAC3B,IAAA,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ;;;AC1ajC;;AAEG;;;;"}
@@ -351,4 +351,4 @@ export const walk = {
351
351
  Object: Helpers.Walk.Object,
352
352
  ObjectBy: Helpers.Walk.ObjectBy
353
353
  };
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL2xvZGFzaC13YWxrLW9iamVjdC9wcm9qZWN0cy9sb2Rhc2gtd2Fsay1vYmplY3Qvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3pELGNBQWMsVUFBVSxDQUFDO0FBRXpCLFNBQVMsWUFBWSxDQUFDLEdBQWUsRUFBRSxFQUFVLEVBQUUsV0FBb0I7SUFFckUsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUNqQixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDbEIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3RCLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFBO1FBQzlELENBQUMsQ0FBQyxDQUFDO0tBQ0o7U0FBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFFMUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sUUFBUSxHQUFpQixFQUFFLENBQUM7UUFDbEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDckIsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMs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QyxLQUFLLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRTtnQkFDakMsYUFBYTtnQkFDYixPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUN2QjtTQUVGO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUVGO0FBRUQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHO0lBQ2xCLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU07SUFDM0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUTtDQUNoQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvYnJvd3Nlcic7XG4vLyBsZXQgY291bnRlciA9IDBcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcblxuZnVuY3Rpb24gZmluZENoaWxkcmVuKHZlcjogTW9kZWxzLlZlciwgbHA6IHN0cmluZywgd2Fsa0dldHRlcnM6IGJvb2xlYW4pOiBNb2RlbHMuVmVyW10ge1xuXG4gIGNvbnN0IG9iaiA9IHZlci52XG4gIGlmIChfLmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmoubWFwKCh2LCBpKSA9PiB7XG4gICAgICByZXR1cm4geyB2LCBwOiBgJHtscH1bJHtpfV1gLCBwYXJlbnQ6IHZlciwgaXNHZXR0ZXI6IGZhbHNlIH1cbiAgICB9KTtcbiAgfSBlbHNlIGlmIChfLmlzT2JqZWN0KG9iaikpIHtcblxuICAgIGNvbnN0IGFsbEtleXMgPSAhd2Fsa0dldHRlcnMgPyBbXSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaik7XG4gICAgY29uc3QgY2hpbGRyZW46IE1vZGVscy5WZXJbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgaWYgKF8uaXNPYmplY3Qob2JqKSAmJiBfLmlzRnVuY3Rpb24ob2JqLmhhc093blByb3BlcnR5KSAmJiBvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBfLnB1bGwoYWxsS2V5cywga2V5KVxuICAgICAgICBjaGlsZHJlbi5wdXNoKHsgdjogb2JqW2tleV0sIHA6IGAkeyhscCA9PT0gJycpID8gJycgOiBgJHtscH0uYH0ke2tleX1gLCBwYXJlbnQ6IHZlciwgaXNHZXR0ZXI6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh3YWxrR2V0dGVycykge1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFsbEtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGlmIChfLmlzT2JqZWN0KG9iaikpIHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBhbGxLZXlzW2luZGV4XTtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKHsgdjogb2JqW2tleV0sIHA6IGAkeyhscCA9PT0gJycpID8gJycgOiBgJHtscH0uYH0ke2tleX1gLCBwYXJlbnQ6IHZlciwgaXNHZXR0ZXI6IHRydWUgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG5cblxuZXhwb3J0IHR5cGUgSXRlcmF0b3IgPSAodmFsdWU6IGFueSxcbiAgbG9kYXNoUGF0aDogc3RyaW5nLFxuICAvLyBAdHMtaWdub3JlXG4gIGNoYW5nZVZhbHVlVG86IChuZXdWYWx1ZSkgPT4gdm9pZCxcbiAgb3B0aW9ucz86IE1vZGVscy5BZGRpdGlvbmFsSXRlcmF0b3JPcHRpb25zXG5cbikgPT4gdm9pZFxuZXhwb3J0IGNsYXNzIEhlbHBlcnMge1xuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IFdhbGsoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIHtcbiAgICAgIE9iamVjdChqc29uOiBPYmplY3QsIGl0ZXJhdG9yOiBJdGVyYXRvciwgb3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZT86IE1vZGVscy5TdGFydEl0ZXJhdG9yT3B0aW9ucykge1xuXG4gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnNPcldhbGtHZXR0ZXJzVmFsdWUpKSB7XG4gICAgICAgICAgb3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZSA9IHt9XG4gICAgICAgIH1cblxuICAgICAgICAob3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZSBhcyBNb2RlbHMuSW50ZXJuYWxWYWx1ZXMpLmhhc0l0ZXJhdG9yID0gXy5pc0Z1bmN0aW9uKGl0ZXJhdG9yKVxuXG4gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnNPcldhbGtHZXR0ZXJzVmFsdWUuYnJlYWR0aFdhbGspKSB7XG4gICAgICAgICAgb3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZS5icmVhZHRoV2FsayA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBjaXJjdXJhbFxuICAgICAgICB9ID0gc2VsZi5fd2Fsayhqc29uLCBqc29uLCBpdGVyYXRvciwgdm9pZCAwLCBvcHRpb25zT3JXYWxrR2V0dGVyc1ZhbHVlIGFzIGFueSlcblxuICAgICAgICByZXR1cm4geyBjaXJjczogY2lyY3VyYWwgfVxuICAgICAgfSxcbiAgICAgIE9iamVjdEJ5KHByb3BlcnR5OiBzdHJpbmcsIGluQ29udGV4dDogT2JqZWN0LCBpdGVyYXRvcjogSXRlcmF0b3IsIG9wdGlvbnM/OiBNb2RlbHMuU3RhcnRJdGVyYXRvck9wdGlvbnMpIHtcbiAgICAgICAgaWYgKF8uaXNGdW5jdGlvbihpdGVyYXRvcikpIHtcbiAgICAgICAgICBpdGVyYXRvcihpbkNvbnRleHQsICcnLCBzZWxmLl9jaGFuZ2VWYWx1ZShpbkNvbnRleHQsIHByb3BlcnR5LCB0cnVlKSkgLy8gVE9ETyBBZGQgb3B0b2luc1xuICAgICAgICB9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QganNvbiA9IGluQ29udGV4dFtwcm9wZXJ0eV1cbiAgICAgICAgcmV0dXJuIHNlbGYuV2Fsay5PYmplY3QoanNvbiwgaXRlcmF0b3IsIG9wdGlvbnMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2NoYW5nZVZhbHVlKGpzb246IE9iamVjdCwgbG9kYWhQYXRoOiBzdHJpbmcsIHNpbXBsZUNoYW5nZSA9IGZhbHNlLCBvcHRpb25zPzogTW9kZWxzLkludGVybmFsVmFsdWVzKSB7XG5cbiAgICB2YXIgeyBjb250ZXh0UGF0aCwgcHJvcGVydHkgfSA9IHRoaXMuX3ByZXBhcmVQYXJhbXMobG9kYWhQYXRoKTtcbiAgICB2YXIgY29udGV4dCA9IF8uZ2V0KGpzb24sIGNvbnRleHRQYXRoKTtcblxuICAgIHJldHVybiAobmV3VmFsdWU6IGFueSkgPT4ge1xuICAgICAgaWYgKGNvbnRleHRQYXRoID09PSAnJykge1xuICAgICAgICBzaW1wbGVDaGFuZ2UgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2ltcGxlQ2hhbmdlKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAganNvbltwcm9wZXJ0eV0gPSBuZXdWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBDT05URVhUIFZBTFVFIENIQU5HRSEgIFwiJHtjb250ZXh0UGF0aH1cIiArIFwiJHtwcm9wZXJ0eX1cIiBgLCBuZXdWYWx1ZSlcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2NvbnRleHQnLCBjb250ZXh0KVxuICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgIGNvbnRleHRbcHJvcGVydHldID0gbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgIG9wdGlvbnMuX3ZhbHVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX3ByZXBhcmVQYXJhbXMobG9kYXNoUGF0aDogc3RyaW5nKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2NvbnRleHRQYXRoIGJlZm9yZScsIGxvZGFzaFBhdGgpXG4gICAgY29uc3QgY29udGV4dFBhdGggPSB0aGlzLl9IZWxwZXJzLlBhdGguZ2V0Q29udGV4dFBhdGgobG9kYXNoUGF0aCk7XG4gICAgLy8gY29uc29sZS5sb2coJ2NvbnRleHRQYXRoIGFmdGVyJywgY29udGV4dFBhdGgpXG5cbiAgICBsZXQgcHJvcGVydHkgPSB0aGlzLl9IZWxwZXJzLlBhdGguZ2V0UHJvcGVydHlQYXRoKGxvZGFzaFBhdGgsIGNvbnRleHRQYXRoKTtcbiAgICAvLyBjb25zb2xlLmxvZygncHJvcGVydHkgYWZ0ZXIgcHJvY2VzcycsIHByb3BlcnR5KVxuICAgIGlmIChfLmlzU3RyaW5nKHByb3BlcnR5KSAmJiBwcm9wZXJ0eS50cmltKCkgIT09ICcnICYmICFfLmlzTmFOKE51bWJlcihwcm9wZXJ0eSkpKSB7XG4gICAgICBwcm9wZXJ0eSA9IE51bWJlcihwcm9wZXJ0eSlcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRleHRQYXRoLCBwcm9wZXJ0eVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBfSGVscGVycygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0IFBhdGgoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGdldFByb3BlcnR5UGF0aChsb2RhaFBhdGgsIGNvbnRldFBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiAobG9kYWhQYXRoXG4gICAgICAgICAgICAgIC5yZXBsYWNlKGNvbnRldFBhdGgsICcnKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXlxcLi8sICcnKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbLywgJycpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXF0vLCAnJykpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXRDb250ZXh0UGF0aChwOiBzdHJpbmcpIHtcbiAgICAgICAgICAgIGxldCByZXM6IHN0cmluZztcbiAgICAgICAgICAgIGlmIChwLmVuZHNXaXRoKCddJykpIHtcbiAgICAgICAgICAgICAgcmVzID0gcC5yZXBsYWNlKC9cXFsoXFxcInxcXCcpP1swLTldKyhcXFwifFxcJyk/XFxdJC8sICcnKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzID0gcC5yZXBsYWNlKC9cXC4oW2EtekEtWjAtOV18XFwkfFxcX3xcXEB8XFwtfFxcL3xcXDopKyQvLCAnJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXMgPT09IHAgPyAnJyA6IHJlcztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfc2hvdWRsUmV0dXJuKGluY2x1ZGUgPSBbXSwgZXhjbHVkZSA9IFtdLCBsb2Rhc2hQYXRoOiBzdHJpbmcpIHtcbiAgICBsZXQgcmVzID0gZmFsc2U7XG4gICAgaWYgKGxvZGFzaFBhdGgucmVwbGFjZSgvXlxcWyhcXCd8XFxcIik/WzAtOV0qKFxcJ3xcXFwiKT9cXF0vLCAnJykudHJpbSgpICE9PSAnJykge1xuICAgICAgbG9kYXNoUGF0aCA9IGxvZGFzaFBhdGgucmVwbGFjZSgvXlxcWyhcXCd8XFxcIik/WzAtOV0qKFxcJ3xcXFwiKT9cXF1cXC4vLCAnJylcbiAgICAgIHJlcyA9IChcbiAgICAgICAgKF8uaXNBcnJheShpbmNsdWRlKSAmJiBpbmNsdWRlLmxlbmd0aCA+IDBcbiAgICAgICAgICAmJiAhaW5jbHVkZS5maW5kKHAgPT4gbG9kYXNoUGF0aC5zdGFydHNXaXRoKHApKSlcbiAgICAgICAgfHxcbiAgICAgICAgKF8uaXNBcnJheShleGNsdWRlKSAmJiBleGNsdWRlLmxlbmd0aCA+IDBcbiAgICAgICAgICAmJiAhIWV4Y2x1ZGUuZmluZChwID0+IGxvZGFzaFBhdGguc3RhcnRzV2l0aChwKSkpXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgcHJpdmF0ZSBzdGF0aWMgcHJlcGFyZU9wdGlvbnMob3B0aW9uczogTW9kZWxzLkludGVybmFsVmFsdWVzLCBvYmosIGxvZGFzaFBhdGgpIHtcblxuICAgIGlmIChvcHRpb25zLl9leGl0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy53YWxrR2V0dGVycykpIHtcbiAgICAgIG9wdGlvbnMud2Fsa0dldHRlcnMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY2hlY2tDaXJjdXJhbCkpIHtcbiAgICAgIG9wdGlvbnMuY2hlY2tDaXJjdXJhbCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuaXNHZXR0ZXIpKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBvcHRpb25zLmlzR2V0dGVyID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5fdmFsdWVDaGFuZ2VkKSkge1xuICAgICAgb3B0aW9ucy5fdmFsdWVDaGFuZ2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5fZXhpdCkpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG9wdGlvbnMuX2V4aXQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLmV4aXQpKSB7XG4gICAgICBvcHRpb25zLmV4aXQgPSAoKSA9PiB7XG4gICAgICAgIG9wdGlvbnMuX2V4aXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuX3NraXApKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBvcHRpb25zLl9za2lwID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5za2lwT2JqZWN0KSkge1xuICAgICAgb3B0aW9ucy5za2lwT2JqZWN0ID0gKCkgPT4ge1xuICAgICAgICBvcHRpb25zLl9za2lwID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jaGVja0NpcmN1cmFsKSB7XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLmRiKSkge1xuICAgICAgICBvcHRpb25zLmRiID0ge31cbiAgICAgIH1cblxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5zdGFjaykpIHtcbiAgICAgICAgb3B0aW9ucy5zdGFjayA9IFtdXG4gICAgICB9XG5cbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY2lyY3VyYWwpKSB7XG4gICAgICAgIG9wdGlvbnMuY2lyY3VyYWwgPSBbXVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgZGIsIHN0YWNrIH0gPSBvcHRpb25zO1xuICAgIG9wdGlvbnMuaXNDaXJjdXJhbCA9IGZhbHNlO1xuXG4gICAgaWYgKG9wdGlvbnMuY2hlY2tDaXJjdXJhbCAmJiBfLmlzT2JqZWN0KG9iaikpIHtcbiAgICAgIGxldCBpbmRleFZhbHVlID0gQ0xBU1MuT0JKRUNUKG9iaikuaW5kZXhWYWx1ZVxuICAgICAgaWYgKENMQVNTLk9CSkVDVChvYmopLmlzQ2xhc3NPYmplY3QgJiYgIV8uaXNVbmRlZmluZWQoaW5kZXhWYWx1ZSkpIHtcbiAgICAgICAgbGV0IGNsYXNzTmFtZSA9IENMQVNTLmdldE5hbWVGcm9tT2JqZWN0KG9iaik7XG4gICAgICAgIGxldCBwID0gYCR7Y2xhc3NOYW1lfS5pZF8ke2luZGV4VmFsdWV9YDtcbiAgICAgICAgY29uc3QgaW5EQjogTW9kZWxzLkluREJUeXBlID0gXy5nZXQoZGIsIHApO1xuXG4gICAgICAgIGlmIChpbkRCICYmIENMQVNTLk9CSkVDVChpbkRCLnRhcmdldCkuaXNFcXVhbChvYmopKSB7XG4gICAgICAgICAgY29uc3QgY2lyYzogTW9kZWxzLkNpcmMgPSB7XG4gICAgICAgICAgICBwYXRoVG9PYmo6IGxvZGFzaFBhdGgsXG4gICAgICAgICAgICBjaXJjdXJhbFRhcmdldFBhdGg6IGluREIucGF0aFxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgb3B0aW9ucy5jaXJjdXJhbC5wdXNoKGNpcmMpXG4gICAgICAgICAgb3B0aW9ucy5pc0NpcmN1cmFsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfLnNldChkYiwgcCwge1xuICAgICAgICAgICAgcGF0aDogbG9kYXNoUGF0aCxcbiAgICAgICAgICAgIHRhcmdldDogb2JqXG4gICAgICAgICAgfSBhcyBNb2RlbHMuSW5EQlR5cGUpXG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBpblN0YWNrID0gc3RhY2suZmluZCgoYzogTW9kZWxzLkluREJUeXBlKSA9PiBjLnRhcmdldCA9PSBvYmopO1xuXG4gICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChpblN0YWNrKSkge1xuICAgICAgICAgIGNvbnN0IGNpcmM6IE1vZGVscy5DaXJjID0ge1xuICAgICAgICAgICAgcGF0aFRvT2JqOiBsb2Rhc2hQYXRoLFxuICAgICAgICAgICAgY2lyY3VyYWxUYXJnZXRQYXRoOiBpblN0YWNrLnBhdGhcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG9wdGlvbnMuY2lyY3VyYWwucHVzaChjaXJjKVxuICAgICAgICAgIG9wdGlvbnMuaXNDaXJjdXJhbCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgcGF0aDogbG9kYXNoUGF0aCxcbiAgICAgICAgICAgIHRhcmdldDogb2JqXG4gICAgICAgICAgfSBhcyBNb2RlbHMuSW5EQlR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfd2Fsayhqc29uOiBPYmplY3QsIG9iajogT2JqZWN0LCBpdGVyYXRvcjogSXRlcmF0b3IsIGxvZGFzaFBhdGggPSAnJyxcbiAgICBvcHRpb25zPzogTW9kZWxzLkludGVybmFsVmFsdWVzLCBkZXB0aExldmVsID0gMCkge1xuXG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0ge30gYXMgYW55O1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIW9wdGlvbnMuYnJlYWR0aFdhbGspIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG9wdGlvbnMgPSB0aGlzLnByZXBhcmVPcHRpb25zKG9wdGlvbnMsIG9iaiwgbG9kYXNoUGF0aClcblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKHRoaXMuX3Nob3VkbFJldHVybihvcHRpb25zLmluY2x1ZGUsIG9wdGlvbnMuZXhjbHVkZSwgbG9kYXNoUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAob3B0aW9ucy5oYXNJdGVyYXRvciAmJiBsb2Rhc2hQYXRoICE9PSAnJykge1xuICAgICAgICBpdGVyYXRvcihvYmosIGxvZGFzaFBhdGgsIHRoaXMuX2NoYW5nZVZhbHVlKGpzb24sIGxvZGFzaFBhdGgsIGZhbHNlLCBvcHRpb25zKSwgb3B0aW9ucylcbiAgICAgIH1cblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKG9wdGlvbnMuX3ZhbHVlQ2hhbmdlZCkge1xuICAgICAgICBvYmogPSBfLmdldChqc29uLCBsb2Rhc2hQYXRoKVxuICAgICAgfVxuICAgICAgb3B0aW9ucy5fdmFsdWVDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgIGlmIChvcHRpb25zLmlzQ2lyY3VyYWwpIHtcbiAgICAgICAgb3B0aW9ucy5fc2tpcCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLl9za2lwKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgb3B0aW9ucy5fc2tpcCA9IGZhbHNlO1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG5cblxuXG4gICAgaWYgKG9wdGlvbnMuYnJlYWR0aFdhbGspIHtcblxuICAgICAgbGV0IHF1ZXVlOiBNb2RlbHMuVmVyW10gPSBbeyB2OiBqc29uLCBwOiBsb2Rhc2hQYXRoLCBwYXJlbnQ6IHZvaWQgMCB9XTtcblxuICAgICAgLy8gY29uc3QgcGF0aGVzVG9Ta2lwID0ge307XG4gICAgICB3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuXG4gICAgICAgIGNvbnN0IHZlciA9IHF1ZXVlLnNoaWZ0KCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBwYXRoZXMgdG8gc2tpcGAsIHBhdGhlc1RvU2tpcCk7XG4gICAgICAgIC8vIGlmICghXy5pc1VuZGVmaW5lZChPYmplY3Qua2V5cyhwYXRoZXNUb1NraXApLmZpbmQoa2V5ID0+IHZlci5wLnN0YXJ0c1dpdGgocGF0aGVzVG9Ta2lwW2tleV0pKSkpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNraXA6ICR7dmVyLnB9YClcbiAgICAgICAgLy8gY29udGludWU7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAodGhpcy5fc2hvdWRsUmV0dXJuKG9wdGlvbnMuaW5jbHVkZSwgb3B0aW9ucy5leGNsdWRlLCB2ZXIucCkpIHtcbiAgICAgICAgICAvLyBwYXRoZXNUb1NraXBbdmVyLnBdID0gdHJ1ZTtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2tpcDI6ICR7dmVyLnB9YClcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBub3Qgc2tpcCB2YWx1ZSAke3Zlci5wfWApXG5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBsZXQgeyB2LCBwIH0gPSB2ZXI7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMucHJlcGFyZU9wdGlvbnMob3B0aW9ucywgdiwgcClcblxuICAgICAgICBpZiAob3B0aW9ucy5fZXhpdCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFWElUJylcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5oYXNJdGVyYXRvciAmJiBwICE9PSAnJykge1xuICAgICAgICAgIGl0ZXJhdG9yKHYsIHAsIHRoaXMuX2NoYW5nZVZhbHVlKGpzb24sIHAsIGZhbHNlLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChvcHRpb25zLl92YWx1ZUNoYW5nZWQpIHtcbiAgICAgICAgICB2ZXIudiA9IF8uZ2V0KGpzb24sIHApO1xuICAgICAgICB9XG4gICAgICAgIG9wdGlvbnMuX3ZhbHVlQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmlzQ2lyY3VyYWwpIHtcbiAgICAgICAgICAvLyBwYXRoZXNUb1NraXBbdmVyLnBdID0gdHJ1ZTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLl9za2lwKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG9wdGlvbnMuX3NraXAgPSBmYWxzZTtcbiAgICAgICAgICAvLyBwYXRoZXNUb1NraXBbdmVyLnBdID0gdHJ1ZTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgTE9PSyBGT1IgQ0hJTERSRU4gT0YgJHt2ZXIucH1gKVxuICAgICAgICBpZiAoXy5pc0FycmF5KHYpKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHF1ZXVlID0gcXVldWUuY29uY2F0KGZpbmRDaGlsZHJlbih2ZXIsIHAsIG9wdGlvbnMud2Fsa0dldHRlcnMpKVxuICAgICAgICB9IGVsc2UgaWYgKF8uaXNPYmplY3QodikpIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcXVldWUgPSBxdWV1ZS5jb25jYXQoZmluZENoaWxkcmVuKHZlciwgcCwgb3B0aW9ucy53YWxrR2V0dGVycykpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCB7IHdhbGtHZXR0ZXJzIH0gPSBvcHRpb25zO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgIG9iai5mb3JFYWNoKChvLCBpKSA9PiB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHRoaXMuX3dhbGsoanNvbiwgb2JqW2ldLCBpdGVyYXRvciwgYCR7bG9kYXNoUGF0aH1bJHtpfV1gLCBvcHRpb25zLCBkZXB0aExldmVsICsgMSlcbiAgICAgICAgfSlcblxuICAgICAgfSBlbHNlIGlmIChfLmlzT2JqZWN0KG9iaikpIHtcbiAgICAgICAgY29uc3QgYWxsS2V5cyA9ICF3YWxrR2V0dGVycyA/IFtdIDogT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgaWYgKF8uaXNPYmplY3Qob2JqKSAmJiBvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgXy5wdWxsKGFsbEtleXMsIGtleSlcblxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgb3B0aW9ucy5pc0dldHRlciA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy5fd2Fsayhqc29uLCBvYmpba2V5XSwgaXRlcmF0b3IsIGAkeyhsb2Rhc2hQYXRoID09PSAnJykgPyAnJyA6IGAke2xvZGFzaFBhdGh9LmB9JHtrZXl9YCwgb3B0aW9ucywgZGVwdGhMZXZlbCArIDEpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3YWxrR2V0dGVycykge1xuICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhbGxLZXlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgaWYgKF8uaXNPYmplY3Qob2JqKSkge1xuICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhbGxLZXlzW2luZGV4XTtcblxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIG9wdGlvbnMuaXNHZXR0ZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIHRoaXMuX3dhbGsoanNvbiwgb2JqW2tleV0sIGl0ZXJhdG9yLCBgJHsobG9kYXNoUGF0aCA9PT0gJycpID8gJycgOiBgJHtsb2Rhc2hQYXRofS5gfSR7a2V5fWAsIG9wdGlvbnMsIGRlcHRoTGV2ZWwgKyAxKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAob3B0aW9ucy5fZXhpdCAmJiBqc29uID09PSBvYmopIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBvcHRpb25zLl9leGl0ID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG59XG5cbmV4cG9ydCBjb25zdCB3YWxrID0ge1xuICBPYmplY3Q6IEhlbHBlcnMuV2Fsay5PYmplY3QsXG4gIE9iamVjdEJ5OiBIZWxwZXJzLldhbGsuT2JqZWN0Qnlcbn1cbiJdfQ==
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL2xvZGFzaC13YWxrLW9iamVjdC9wcm9qZWN0cy9sb2Rhc2gtd2Fsay1vYmplY3Qvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3pELGNBQWMsVUFBVSxDQUFDO0FBRXpCLFNBQVMsWUFBWSxDQUFDLEdBQWUsRUFBRSxFQUFVLEVBQUUsV0FBb0I7SUFFckUsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUNqQixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDbEIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3RCLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFBO1FBQzlELENBQUMsQ0FBQyxDQUFDO0tBQ0o7U0FBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFFMUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sUUFBUSxHQUFpQixFQUFFLENBQUM7UUFDbEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDckIsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMs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QyxLQUFLLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRTtnQkFDakMsYUFBYTtnQkFDYixPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUN2QjtTQUVGO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUVGO0FBRUQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHO0lBQ2xCLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU07SUFDM0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUTtDQUNoQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvYnJvd3Nlcic7XG4vLyBsZXQgY291bnRlciA9IDBcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcblxuZnVuY3Rpb24gZmluZENoaWxkcmVuKHZlcjogTW9kZWxzLlZlciwgbHA6IHN0cmluZywgd2Fsa0dldHRlcnM6IGJvb2xlYW4pOiBNb2RlbHMuVmVyW10ge1xuXG4gIGNvbnN0IG9iaiA9IHZlci52XG4gIGlmIChfLmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmoubWFwKCh2LCBpKSA9PiB7XG4gICAgICByZXR1cm4geyB2LCBwOiBgJHtscH1bJHtpfV1gLCBwYXJlbnQ6IHZlciwgaXNHZXR0ZXI6IGZhbHNlIH1cbiAgICB9KTtcbiAgfSBlbHNlIGlmIChfLmlzT2JqZWN0KG9iaikpIHtcblxuICAgIGNvbnN0IGFsbEtleXMgPSAhd2Fsa0dldHRlcnMgPyBbXSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaik7XG4gICAgY29uc3QgY2hpbGRyZW46IE1vZGVscy5WZXJbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgaWYgKF8uaXNPYmplY3Qob2JqKSAmJiBfLmlzRnVuY3Rpb24ob2JqLmhhc093blByb3BlcnR5KSAmJiBvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBfLnB1bGwoYWxsS2V5cywga2V5KVxuICAgICAgICBjaGlsZHJlbi5wdXNoKHsgdjogb2JqW2tleV0sIHA6IGAkeyhscCA9PT0gJycpID8gJycgOiBgJHtscH0uYH0ke2tleX1gLCBwYXJlbnQ6IHZlciwgaXNHZXR0ZXI6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh3YWxrR2V0dGVycykge1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFsbEtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGlmIChfLmlzT2JqZWN0KG9iaikpIHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBhbGxLZXlzW2luZGV4XTtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKHsgdjogb2JqW2tleV0sIHA6IGAkeyhscCA9PT0gJycpID8gJycgOiBgJHtscH0uYH0ke2tleX1gLCBwYXJlbnQ6IHZlciwgaXNHZXR0ZXI6IHRydWUgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG5cblxuZXhwb3J0IHR5cGUgSXRlcmF0b3IgPSAodmFsdWU6IGFueSxcbiAgbG9kYXNoUGF0aDogc3RyaW5nLFxuICAvLyBAdHMtaWdub3JlXG4gIGNoYW5nZVZhbHVlVG86IChuZXdWYWx1ZSkgPT4gdm9pZCxcbiAgb3B0aW9ucz86IE1vZGVscy5BZGRpdGlvbmFsSXRlcmF0b3JPcHRpb25zXG5cbikgPT4gdm9pZFxuZXhwb3J0IGNsYXNzIEhlbHBlcnMge1xuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IFdhbGsoKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIHtcbiAgICAgIE9iamVjdChqc29uOiBPYmplY3QsIGl0ZXJhdG9yOiBJdGVyYXRvciwgb3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZT86IE1vZGVscy5TdGFydEl0ZXJhdG9yT3B0aW9ucykge1xuXG4gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnNPcldhbGtHZXR0ZXJzVmFsdWUpKSB7XG4gICAgICAgICAgb3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZSA9IHt9XG4gICAgICAgIH1cblxuICAgICAgICAob3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZSBhcyBNb2RlbHMuSW50ZXJuYWxWYWx1ZXMpLmhhc0l0ZXJhdG9yID0gXy5pc0Z1bmN0aW9uKGl0ZXJhdG9yKVxuXG4gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnNPcldhbGtHZXR0ZXJzVmFsdWUuYnJlYWR0aFdhbGspKSB7XG4gICAgICAgICAgb3B0aW9uc09yV2Fsa0dldHRlcnNWYWx1ZS5icmVhZHRoV2FsayA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBjaXJjdXJhbFxuICAgICAgICB9ID0gc2VsZi5fd2Fsayhqc29uLCBqc29uLCBpdGVyYXRvciwgdm9pZCAwLCBvcHRpb25zT3JXYWxrR2V0dGVyc1ZhbHVlIGFzIGFueSlcblxuICAgICAgICByZXR1cm4geyBjaXJjczogY2lyY3VyYWwgfVxuICAgICAgfSxcbiAgICAgIE9iamVjdEJ5KHByb3BlcnR5OiBzdHJpbmcsIGluQ29udGV4dDogT2JqZWN0LCBpdGVyYXRvcjogSXRlcmF0b3IsIG9wdGlvbnM/OiBNb2RlbHMuU3RhcnRJdGVyYXRvck9wdGlvbnMpIHtcbiAgICAgICAgaWYgKF8uaXNGdW5jdGlvbihpdGVyYXRvcikpIHtcbiAgICAgICAgICBpdGVyYXRvcihpbkNvbnRleHQsICcnLCBzZWxmLl9jaGFuZ2VWYWx1ZShpbkNvbnRleHQsIHByb3BlcnR5LCB0cnVlKSkgLy8gVE9ETyBBZGQgb3B0b2luc1xuICAgICAgICB9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QganNvbiA9IGluQ29udGV4dFtwcm9wZXJ0eV1cbiAgICAgICAgcmV0dXJuIHNlbGYuV2Fsay5PYmplY3QoanNvbiwgaXRlcmF0b3IsIG9wdGlvbnMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2NoYW5nZVZhbHVlKGpzb246IE9iamVjdCwgbG9kYWhQYXRoOiBzdHJpbmcsIHNpbXBsZUNoYW5nZSA9IGZhbHNlLCBvcHRpb25zPzogTW9kZWxzLkludGVybmFsVmFsdWVzKSB7XG5cbiAgICB2YXIgeyBjb250ZXh0UGF0aCwgcHJvcGVydHkgfSA9IHRoaXMuX3ByZXBhcmVQYXJhbXMobG9kYWhQYXRoKTtcbiAgICB2YXIgY29udGV4dCA9IF8uZ2V0KGpzb24sIGNvbnRleHRQYXRoKTtcblxuICAgIHJldHVybiAobmV3VmFsdWU6IGFueSkgPT4ge1xuICAgICAgaWYgKGNvbnRleHRQYXRoID09PSAnJykge1xuICAgICAgICBzaW1wbGVDaGFuZ2UgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2ltcGxlQ2hhbmdlKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAganNvbltwcm9wZXJ0eV0gPSBuZXdWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBDT05URVhUIFZBTFVFIENIQU5HRSEgIFwiJHtjb250ZXh0UGF0aH1cIiArIFwiJHtwcm9wZXJ0eX1cIiBgLCBuZXdWYWx1ZSlcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2NvbnRleHQnLCBjb250ZXh0KVxuICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgIGNvbnRleHRbcHJvcGVydHldID0gbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgIG9wdGlvbnMuX3ZhbHVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX3ByZXBhcmVQYXJhbXMobG9kYXNoUGF0aDogc3RyaW5nKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2NvbnRleHRQYXRoIGJlZm9yZScsIGxvZGFzaFBhdGgpXG4gICAgY29uc3QgY29udGV4dFBhdGggPSB0aGlzLl9IZWxwZXJzLlBhdGguZ2V0Q29udGV4dFBhdGgobG9kYXNoUGF0aCk7XG4gICAgLy8gY29uc29sZS5sb2coJ2NvbnRleHRQYXRoIGFmdGVyJywgY29udGV4dFBhdGgpXG5cbiAgICBsZXQgcHJvcGVydHkgPSB0aGlzLl9IZWxwZXJzLlBhdGguZ2V0UHJvcGVydHlQYXRoKGxvZGFzaFBhdGgsIGNvbnRleHRQYXRoKTtcbiAgICAvLyBjb25zb2xlLmxvZygncHJvcGVydHkgYWZ0ZXIgcHJvY2VzcycsIHByb3BlcnR5KVxuICAgIGlmIChfLmlzU3RyaW5nKHByb3BlcnR5KSAmJiBwcm9wZXJ0eS50cmltKCkgIT09ICcnICYmICFfLmlzTmFOKE51bWJlcihwcm9wZXJ0eSkpKSB7XG4gICAgICBwcm9wZXJ0eSA9IE51bWJlcihwcm9wZXJ0eSlcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRleHRQYXRoLCBwcm9wZXJ0eVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBfSGVscGVycygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0IFBhdGgoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGdldFByb3BlcnR5UGF0aChsb2RhaFBhdGgsIGNvbnRldFBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiAobG9kYWhQYXRoXG4gICAgICAgICAgICAgIC5yZXBsYWNlKGNvbnRldFBhdGgsICcnKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXlxcLi8sICcnKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbLywgJycpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXF0vLCAnJykpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXRDb250ZXh0UGF0aChwOiBzdHJpbmcpIHtcbiAgICAgICAgICAgIGxldCByZXM6IHN0cmluZztcbiAgICAgICAgICAgIGlmIChwLmVuZHNXaXRoKCddJykpIHtcbiAgICAgICAgICAgICAgcmVzID0gcC5yZXBsYWNlKC9cXFsoXFxcInxcXCcpP1swLTldKyhcXFwifFxcJyk/XFxdJC8sICcnKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzID0gcC5yZXBsYWNlKC9cXC4oW2EtekEtWjAtOV18XFwkfFxcX3xcXEB8XFwtfFxcL3xcXDopKyQvLCAnJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXMgPT09IHAgPyAnJyA6IHJlcztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfc2hvdWRsUmV0dXJuKGluY2x1ZGUgPSBbXSwgZXhjbHVkZSA9IFtdLCBsb2Rhc2hQYXRoOiBzdHJpbmcpIHtcbiAgICBsZXQgcmVzID0gZmFsc2U7XG4gICAgaWYgKGxvZGFzaFBhdGgucmVwbGFjZSgvXlxcWyhcXCd8XFxcIik/WzAtOV0qKFxcJ3xcXFwiKT9cXF0vLCAnJykudHJpbSgpICE9PSAnJykge1xuICAgICAgbG9kYXNoUGF0aCA9IGxvZGFzaFBhdGgucmVwbGFjZSgvXlxcWyhcXCd8XFxcIik/WzAtOV0qKFxcJ3xcXFwiKT9cXF1cXC4vLCAnJylcbiAgICAgIHJlcyA9IChcbiAgICAgICAgKF8uaXNBcnJheShpbmNsdWRlKSAmJiBpbmNsdWRlLmxlbmd0aCA+IDBcbiAgICAgICAgICAmJiAhaW5jbHVkZS5maW5kKHAgPT4gbG9kYXNoUGF0aC5zdGFydHNXaXRoKHApKSlcbiAgICAgICAgfHxcbiAgICAgICAgKF8uaXNBcnJheShleGNsdWRlKSAmJiBleGNsdWRlLmxlbmd0aCA+IDBcbiAgICAgICAgICAmJiAhIWV4Y2x1ZGUuZmluZChwID0+IGxvZGFzaFBhdGguc3RhcnRzV2l0aChwKSkpXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgcHJpdmF0ZSBzdGF0aWMgcHJlcGFyZU9wdGlvbnMob3B0aW9uczogTW9kZWxzLkludGVybmFsVmFsdWVzLCBvYmosIGxvZGFzaFBhdGgpIHtcblxuICAgIGlmIChvcHRpb25zLl9leGl0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy53YWxrR2V0dGVycykpIHtcbiAgICAgIG9wdGlvbnMud2Fsa0dldHRlcnMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY2hlY2tDaXJjdXJhbCkpIHtcbiAgICAgIG9wdGlvbnMuY2hlY2tDaXJjdXJhbCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuaXNHZXR0ZXIpKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBvcHRpb25zLmlzR2V0dGVyID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5fdmFsdWVDaGFuZ2VkKSkge1xuICAgICAgb3B0aW9ucy5fdmFsdWVDaGFuZ2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5fZXhpdCkpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG9wdGlvbnMuX2V4aXQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLmV4aXQpKSB7XG4gICAgICBvcHRpb25zLmV4aXQgPSAoKSA9PiB7XG4gICAgICAgIG9wdGlvbnMuX2V4aXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuX3NraXApKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBvcHRpb25zLl9za2lwID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5za2lwT2JqZWN0KSkge1xuICAgICAgb3B0aW9ucy5za2lwT2JqZWN0ID0gKCkgPT4ge1xuICAgICAgICBvcHRpb25zLl9za2lwID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jaGVja0NpcmN1cmFsKSB7XG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZChvcHRpb25zLmRiKSkge1xuICAgICAgICBvcHRpb25zLmRiID0ge31cbiAgICAgIH1cblxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQob3B0aW9ucy5zdGFjaykpIHtcbiAgICAgICAgb3B0aW9ucy5zdGFjayA9IFtdXG4gICAgICB9XG5cbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG9wdGlvbnMuY2lyY3VyYWwpKSB7XG4gICAgICAgIG9wdGlvbnMuY2lyY3VyYWwgPSBbXVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgZGIsIHN0YWNrIH0gPSBvcHRpb25zO1xuICAgIG9wdGlvbnMuaXNDaXJjdXJhbCA9IGZhbHNlO1xuXG4gICAgaWYgKG9wdGlvbnMuY2hlY2tDaXJjdXJhbCAmJiBfLmlzT2JqZWN0KG9iaikpIHtcbiAgICAgIGxldCBpbmRleFZhbHVlID0gQ0xBU1MuT0JKRUNUKG9iaikuaW5kZXhWYWx1ZVxuICAgICAgaWYgKENMQVNTLk9CSkVDVChvYmopLmlzQ2xhc3NPYmplY3QgJiYgIV8uaXNVbmRlZmluZWQoaW5kZXhWYWx1ZSkpIHtcbiAgICAgICAgbGV0IGNsYXNzTmFtZSA9IENMQVNTLmdldE5hbWVGcm9tT2JqZWN0KG9iaik7XG4gICAgICAgIGxldCBwID0gYCR7Y2xhc3NOYW1lfS5pZF8ke2luZGV4VmFsdWV9YDtcbiAgICAgICAgY29uc3QgaW5EQjogTW9kZWxzLkluREJUeXBlID0gXy5nZXQoZGIsIHApO1xuXG4gICAgICAgIGlmIChpbkRCICYmIENMQVNTLk9CSkVDVChpbkRCLnRhcmdldCkuaXNFcXVhbChvYmopKSB7XG4gICAgICAgICAgY29uc3QgY2lyYzogTW9kZWxzLkNpcmMgPSB7XG4gICAgICAgICAgICBwYXRoVG9PYmo6IGxvZGFzaFBhdGgsXG4gICAgICAgICAgICBjaXJjdXJhbFRhcmdldFBhdGg6IGluREIucGF0aFxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgb3B0aW9ucy5jaXJjdXJhbC5wdXNoKGNpcmMpXG4gICAgICAgICAgb3B0aW9ucy5pc0NpcmN1cmFsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfLnNldChkYiwgcCwge1xuICAgICAgICAgICAgcGF0aDogbG9kYXNoUGF0aCxcbiAgICAgICAgICAgIHRhcmdldDogb2JqXG4gICAgICAgICAgfSBhcyBNb2RlbHMuSW5EQlR5cGUpXG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBpblN0YWNrID0gc3RhY2suZmluZCgoYzogTW9kZWxzLkluREJUeXBlKSA9PiBjLnRhcmdldCA9PSBvYmopO1xuXG4gICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChpblN0YWNrKSkge1xuICAgICAgICAgIGNvbnN0IGNpcmM6IE1vZGVscy5DaXJjID0ge1xuICAgICAgICAgICAgcGF0aFRvT2JqOiBsb2Rhc2hQYXRoLFxuICAgICAgICAgICAgY2lyY3VyYWxUYXJnZXRQYXRoOiBpblN0YWNrLnBhdGhcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG9wdGlvbnMuY2lyY3VyYWwucHVzaChjaXJjKVxuICAgICAgICAgIG9wdGlvbnMuaXNDaXJjdXJhbCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgcGF0aDogbG9kYXNoUGF0aCxcbiAgICAgICAgICAgIHRhcmdldDogb2JqXG4gICAgICAgICAgfSBhcyBNb2RlbHMuSW5EQlR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfd2Fsayhqc29uOiBPYmplY3QsIG9iajogT2JqZWN0LCBpdGVyYXRvcjogSXRlcmF0b3IsIGxvZGFzaFBhdGggPSAnJyxcbiAgICBvcHRpb25zPzogTW9kZWxzLkludGVybmFsVmFsdWVzLCBkZXB0aExldmVsID0gMCkge1xuXG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0ge30gYXMgYW55O1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIW9wdGlvbnMuYnJlYWR0aFdhbGspIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG9wdGlvbnMgPSB0aGlzLnByZXBhcmVPcHRpb25zKG9wdGlvbnMsIG9iaiwgbG9kYXNoUGF0aClcblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKHRoaXMuX3Nob3VkbFJldHVybihvcHRpb25zLmluY2x1ZGUsIG9wdGlvbnMuZXhjbHVkZSwgbG9kYXNoUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAob3B0aW9ucy5oYXNJdGVyYXRvciAmJiBsb2Rhc2hQYXRoICE9PSAnJykge1xuICAgICAgICBpdGVyYXRvcihvYmosIGxvZGFzaFBhdGgsIHRoaXMuX2NoYW5nZVZhbHVlKGpzb24sIGxvZGFzaFBhdGgsIGZhbHNlLCBvcHRpb25zKSwgb3B0aW9ucylcbiAgICAgIH1cblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKG9wdGlvbnMuX3ZhbHVlQ2hhbmdlZCkge1xuICAgICAgICBvYmogPSBfLmdldChqc29uLCBsb2Rhc2hQYXRoKVxuICAgICAgfVxuICAgICAgb3B0aW9ucy5fdmFsdWVDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgIGlmIChvcHRpb25zLmlzQ2lyY3VyYWwpIHtcbiAgICAgICAgb3B0aW9ucy5fc2tpcCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLl9za2lwKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgb3B0aW9ucy5fc2tpcCA9IGZhbHNlO1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG5cblxuXG4gICAgaWYgKG9wdGlvbnMuYnJlYWR0aFdhbGspIHtcblxuICAgICAgbGV0IHF1ZXVlOiBNb2RlbHMuVmVyW10gPSBbeyB2OiBqc29uLCBwOiBsb2Rhc2hQYXRoLCBwYXJlbnQ6IHZvaWQgMCB9XTtcblxuICAgICAgLy8gY29uc3QgcGF0aGVzVG9Ta2lwID0ge307XG4gICAgICB3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuXG4gICAgICAgIGNvbnN0IHZlciA9IHF1ZXVlLnNoaWZ0KCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBwYXRoZXMgdG8gc2tpcGAsIHBhdGhlc1RvU2tpcCk7XG4gICAgICAgIC8vIGlmICghXy5pc1VuZGVmaW5lZChPYmplY3Qua2V5cyhwYXRoZXNUb1NraXApLmZpbmQoa2V5ID0+IHZlci5wLnN0YXJ0c1dpdGgocGF0aGVzVG9Ta2lwW2tleV0pKSkpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNraXA6ICR7dmVyLnB9YClcbiAgICAgICAgLy8gY29udGludWU7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAodGhpcy5fc2hvdWRsUmV0dXJuKG9wdGlvbnMuaW5jbHVkZSwgb3B0aW9ucy5leGNsdWRlLCB2ZXIucCkpIHtcbiAgICAgICAgICAvLyBwYXRoZXNUb1NraXBbdmVyLnBdID0gdHJ1ZTtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2tpcDI6ICR7dmVyLnB9YClcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBub3Qgc2tpcCB2YWx1ZSAke3Zlci5wfWApXG5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBsZXQgeyB2LCBwIH0gPSB2ZXI7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMucHJlcGFyZU9wdGlvbnMob3B0aW9ucywgdiwgcClcblxuICAgICAgICBpZiAob3B0aW9ucy5fZXhpdCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFWElUJylcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5oYXNJdGVyYXRvciAmJiBwICE9PSAnJykge1xuICAgICAgICAgIGl0ZXJhdG9yKHYsIHAsIHRoaXMuX2NoYW5nZVZhbHVlKGpzb24sIHAsIGZhbHNlLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChvcHRpb25zLl92YWx1ZUNoYW5nZWQpIHtcbiAgICAgICAgICB2ZXIudiA9IF8uZ2V0KGpzb24sIHApO1xuICAgICAgICB9XG4gICAgICAgIG9wdGlvbnMuX3ZhbHVlQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmlzQ2lyY3VyYWwpIHtcbiAgICAgICAgICAvLyBwYXRoZXNUb1NraXBbdmVyLnBdID0gdHJ1ZTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLl9za2lwKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG9wdGlvbnMuX3NraXAgPSBmYWxzZTtcbiAgICAgICAgICAvLyBwYXRoZXNUb1NraXBbdmVyLnBdID0gdHJ1ZTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgTE9PSyBGT1IgQ0hJTERSRU4gT0YgJHt2ZXIucH1gKVxuICAgICAgICBpZiAoXy5pc0FycmF5KHYpKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHF1ZXVlID0gcXVldWUuY29uY2F0KGZpbmRDaGlsZHJlbih2ZXIsIHAsIG9wdGlvbnMud2Fsa0dldHRlcnMpKVxuICAgICAgICB9IGVsc2UgaWYgKF8uaXNPYmplY3QodikpIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcXVldWUgPSBxdWV1ZS5jb25jYXQoZmluZENoaWxkcmVuKHZlciwgcCwgb3B0aW9ucy53YWxrR2V0dGVycykpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCB7IHdhbGtHZXR0ZXJzIH0gPSBvcHRpb25zO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgIG9iai5mb3JFYWNoKChvLCBpKSA9PiB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHRoaXMuX3dhbGsoanNvbiwgb2JqW2ldLCBpdGVyYXRvciwgYCR7bG9kYXNoUGF0aH1bJHtpfV1gLCBvcHRpb25zLCBkZXB0aExldmVsICsgMSlcbiAgICAgICAgfSlcblxuICAgICAgfSBlbHNlIGlmIChfLmlzT2JqZWN0KG9iaikpIHtcbiAgICAgICAgY29uc3QgYWxsS2V5cyA9ICF3YWxrR2V0dGVycyA/IFtdIDogT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgaWYgKF8uaXNPYmplY3Qob2JqKSAmJiBvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgXy5wdWxsKGFsbEtleXMsIGtleSlcblxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgb3B0aW9ucy5pc0dldHRlciA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy5fd2Fsayhqc29uLCBvYmpba2V5XSwgaXRlcmF0b3IsIGAkeyhsb2Rhc2hQYXRoID09PSAnJykgPyAnJyA6IGAke2xvZGFzaFBhdGh9LmB9JHtrZXl9YCwgb3B0aW9ucywgZGVwdGhMZXZlbCArIDEpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3YWxrR2V0dGVycykge1xuICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhbGxLZXlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgaWYgKF8uaXNPYmplY3Qob2JqKSkge1xuICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhbGxLZXlzW2luZGV4XTtcblxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIG9wdGlvbnMuaXNHZXR0ZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIHRoaXMuX3dhbGsoanNvbiwgb2JqW2tleV0sIGl0ZXJhdG9yLCBgJHsobG9kYXNoUGF0aCA9PT0gJycpID8gJycgOiBgJHtsb2Rhc2hQYXRofS5gfSR7a2V5fWAsIG9wdGlvbnMsIGRlcHRoTGV2ZWwgKyAxKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAob3B0aW9ucy5fZXhpdCAmJiBqc29uID09PSBvYmopIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBvcHRpb25zLl9leGl0ID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG59XG5cbmV4cG9ydCBjb25zdCB3YWxrID0ge1xuICBPYmplY3Q6IEhlbHBlcnMuV2Fsay5PYmplY3QsXG4gIE9iamVjdEJ5OiBIZWxwZXJzLldhbGsuT2JqZWN0Qnlcbn0iXX0=