@recursyve/nestjs-data-filter 8.3.3 → 8.3.6

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.
@@ -25,11 +25,20 @@ class DistanceAttributesConfig {
25
25
  if (path || this.config.path) {
26
26
  path = [path, this.config.path].filter(x => x).join(".");
27
27
  }
28
- const name = path ? sequelize_utils_1.SequelizeUtils.getLiteralFullName(this.config.attribute, path) : this.config.attribute;
29
28
  const location = (0, sequelize_1.fn)("ST_GeometryFromText", (0, sequelize_1.literal)(`'POINT(${latitude} ${longitude})'`), (_a = this.config.srid) !== null && _a !== void 0 ? _a : 0);
30
- return [(0, sequelize_1.fn)("ST_Distance_Sphere", (0, sequelize_1.literal)(name), location), (_b = this.config.name) !== null && _b !== void 0 ? _b : this.key];
29
+ return [(0, sequelize_1.fn)("ST_Distance_Sphere", this.getPointAttribute(path), location), (_b = this.config.name) !== null && _b !== void 0 ? _b : this.key];
30
+ }
31
+ getPointAttribute(path) {
32
+ if (this.config.attribute) {
33
+ const att = this.config.attribute;
34
+ return (0, sequelize_1.literal)(path ? sequelize_utils_1.SequelizeUtils.getLiteralFullName(att, path) : att);
35
+ }
36
+ const lat = path ? (0, sequelize_1.literal)(sequelize_utils_1.SequelizeUtils.getLiteralFullName(this.config.latAttribute, path)) : this.config.latAttribute;
37
+ const lng = path ? (0, sequelize_1.literal)(sequelize_utils_1.SequelizeUtils.getLiteralFullName(this.config.lngAttribute, path)) : this.config.lngAttribute;
38
+ const point = (0, sequelize_1.fn)("Point", lng, lat);
39
+ return this.config.srid ? (0, sequelize_1.fn)("ST_SRID", point, this.config.srid) : point;
31
40
  }
32
41
  }
33
42
  exports.DistanceAttributesConfig = DistanceAttributesConfig;
34
43
 
35
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9tb2RlbHMvZGlzdGFuY2UubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQXlEO0FBQ3pELHdEQUFvRDtBQVVwRCxNQUFhLHdCQUF3QjtJQUdqQyxZQUFtQixHQUFXLEVBQVMsTUFBc0I7UUFBMUMsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBRnRELFNBQUksR0FBRyxVQUFVLENBQUM7SUFFdUMsQ0FBQztJQUUxRCxTQUFTLENBQUMsT0FBZSxFQUFFLElBQWE7O1FBQzNDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsR0FBRyxXQUFXLENBQUM7UUFDMUMsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQy9ELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtZQUMxQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDNUQ7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdDQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQzNHLE1BQU0sUUFBUSxHQUFHLElBQUEsY0FBRSxFQUFDLHFCQUFxQixFQUFFLElBQUEsbUJBQU8sRUFBQyxVQUFVLFFBQVEsSUFBSSxTQUFTLElBQUksQ0FBQyxFQUFFLE1BQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLG1DQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2hILE9BQU8sQ0FBQyxJQUFBLGNBQUUsRUFBQyxvQkFBb0IsRUFBRSxJQUFBLG1CQUFPLEVBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksbUNBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdGLENBQUM7Q0FDSjtBQTNCRCw0REEyQkMiLCJmaWxlIjoibGliL21vZGVscy9kaXN0YW5jZS5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1c3RvbUF0dHJpYnV0ZXNDb25maWcgfSBmcm9tIFwiLi9jdXN0b20tYXR0cmlidXRlcy5tb2RlbFwiO1xuaW1wb3J0IHsgZm4sIGxpdGVyYWwsIFByb2plY3Rpb25BbGlhcyB9IGZyb20gXCJzZXF1ZWxpemVcIjtcbmltcG9ydCB7IFNlcXVlbGl6ZVV0aWxzIH0gZnJvbSBcIi4uL3NlcXVlbGl6ZS51dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpc3RhbmNlQ29uZmlnIHtcbiAgICBhdHRyaWJ1dGU6IHN0cmluZztcbiAgICBjb29yZGluYXRlczogKG9wdGlvbj8pID0+IFtudW1iZXIsIG51bWJlcl07XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgc3JpZD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIERpc3RhbmNlQXR0cmlidXRlc0NvbmZpZyBpbXBsZW1lbnRzIEN1c3RvbUF0dHJpYnV0ZXNDb25maWc8RGlzdGFuY2VDb25maWc+IHtcbiAgICBwdWJsaWMgdHlwZSA9IFwiZGlzdGFuY2VcIjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBrZXk6IHN0cmluZywgcHVibGljIGNvbmZpZzogRGlzdGFuY2VDb25maWcpIHt9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKG9wdGlvbnM6IG9iamVjdCwgcGF0aD86IHN0cmluZyk6IHN0cmluZyB8IFByb2plY3Rpb25BbGlhcyB7XG4gICAgICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IHRoaXMuY29uZmlnLmNvb3JkaW5hdGVzKG9wdGlvbnMpO1xuICAgICAgICBpZiAoIWNvb3JkaW5hdGVzIHx8IGNvb3JkaW5hdGVzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW2xhdGl0dWRlLCBsb25naXR1ZGVdID0gY29vcmRpbmF0ZXM7XG4gICAgICAgIGlmICh0eXBlb2YgbGF0aXR1ZGUgIT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIGxvbmdpdHVkZSAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGggfHwgdGhpcy5jb25maWcucGF0aCkge1xuICAgICAgICAgICAgcGF0aCA9IFtwYXRoLCB0aGlzLmNvbmZpZy5wYXRoXS5maWx0ZXIoeCA9PiB4KS5qb2luKFwiLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5hbWUgPSBwYXRoID8gU2VxdWVsaXplVXRpbHMuZ2V0TGl0ZXJhbEZ1bGxOYW1lKHRoaXMuY29uZmlnLmF0dHJpYnV0ZSwgcGF0aCkgOiB0aGlzLmNvbmZpZy5hdHRyaWJ1dGU7XG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gZm4oXCJTVF9HZW9tZXRyeUZyb21UZXh0XCIsIGxpdGVyYWwoYCdQT0lOVCgke2xhdGl0dWRlfSAke2xvbmdpdHVkZX0pJ2ApLCB0aGlzLmNvbmZpZy5zcmlkID8/IDApO1xuICAgICAgICByZXR1cm4gW2ZuKFwiU1RfRGlzdGFuY2VfU3BoZXJlXCIsIGxpdGVyYWwobmFtZSksIGxvY2F0aW9uKSwgdGhpcy5jb25maWcubmFtZSA/PyB0aGlzLmtleV07XG4gICAgfVxufVxuIl19
44
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9tb2RlbHMvZGlzdGFuY2UubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXlEO0FBQ3pELHdEQUFvRDtBQXFCcEQsTUFBYSx3QkFBd0I7SUFHakMsWUFBbUIsR0FBVyxFQUFTLE1BQXNCO1FBQTFDLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUZ0RCxTQUFJLEdBQUcsVUFBVSxDQUFDO0lBRXVDLENBQUM7SUFFMUQsU0FBUyxDQUFDLE9BQWUsRUFBRSxJQUFhOztRQUMzQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEMsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEdBQUcsV0FBVyxDQUFDO1FBQzFDLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUMvRCxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDMUIsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVEO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBQSxjQUFFLEVBQUMscUJBQXFCLEVBQUUsSUFBQSxtQkFBTyxFQUFDLFVBQVUsUUFBUSxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUUsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksbUNBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEgsT0FBTyxDQUFDLElBQUEsY0FBRSxFQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxtQ0FBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQVk7UUFDbEMsSUFBSyxJQUFJLENBQUMsTUFBa0MsQ0FBQyxTQUFTLEVBQUU7WUFDcEQsTUFBTSxHQUFHLEdBQUksSUFBSSxDQUFDLE1BQWtDLENBQUMsU0FBUyxDQUFDO1lBQy9ELE9BQU8sSUFBQSxtQkFBTyxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0NBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzdFO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFBLG1CQUFPLEVBQUMsZ0NBQWMsQ0FBQyxrQkFBa0IsQ0FBRSxJQUFJLENBQUMsTUFBbUMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLE1BQW1DLENBQUMsWUFBWSxDQUFDO1FBQ3JMLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBQSxtQkFBTyxFQUFDLGdDQUFjLENBQUMsa0JBQWtCLENBQUUsSUFBSSxDQUFDLE1BQW1DLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxNQUFtQyxDQUFDLFlBQVksQ0FBQztRQUNyTCxNQUFNLEtBQUssR0FBRyxJQUFBLGNBQUUsRUFBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUEsY0FBRSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzdFLENBQUM7Q0FDSjtBQXRDRCw0REFzQ0MiLCJmaWxlIjoibGliL21vZGVscy9kaXN0YW5jZS5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZuLCBsaXRlcmFsLCBQcm9qZWN0aW9uQWxpYXMgfSBmcm9tIFwic2VxdWVsaXplXCI7XG5pbXBvcnQgeyBTZXF1ZWxpemVVdGlscyB9IGZyb20gXCIuLi9zZXF1ZWxpemUudXRpbHNcIjtcbmltcG9ydCB7IEN1c3RvbUF0dHJpYnV0ZXNDb25maWcgfSBmcm9tIFwiLi9jdXN0b20tYXR0cmlidXRlcy5tb2RlbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VEaXN0YW5jZUNvbmZpZyB7XG4gICAgY29vcmRpbmF0ZXM6IChvcHRpb24/KSA9PiBbbnVtYmVyLCBudW1iZXJdO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBwYXRoPzogc3RyaW5nO1xuICAgIHNyaWQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdGFuY2VDb25maWdXaXRoUG9pbnQge1xuICAgIGF0dHJpYnV0ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpc3RhbmNlQ29uZmlnV2l0aExhdExuZyB7XG4gICAgbGF0QXR0cmlidXRlOiBzdHJpbmc7XG4gICAgbG5nQXR0cmlidXRlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIERpc3RhbmNlQ29uZmlnID0gQmFzZURpc3RhbmNlQ29uZmlnICYgKERpc3RhbmNlQ29uZmlnV2l0aFBvaW50IHwgRGlzdGFuY2VDb25maWdXaXRoTGF0TG5nKTtcblxuZXhwb3J0IGNsYXNzIERpc3RhbmNlQXR0cmlidXRlc0NvbmZpZyBpbXBsZW1lbnRzIEN1c3RvbUF0dHJpYnV0ZXNDb25maWc8RGlzdGFuY2VDb25maWc+IHtcbiAgICBwdWJsaWMgdHlwZSA9IFwiZGlzdGFuY2VcIjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBrZXk6IHN0cmluZywgcHVibGljIGNvbmZpZzogRGlzdGFuY2VDb25maWcpIHt9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKG9wdGlvbnM6IG9iamVjdCwgcGF0aD86IHN0cmluZyk6IHN0cmluZyB8IFByb2plY3Rpb25BbGlhcyB7XG4gICAgICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IHRoaXMuY29uZmlnLmNvb3JkaW5hdGVzKG9wdGlvbnMpO1xuICAgICAgICBpZiAoIWNvb3JkaW5hdGVzIHx8IGNvb3JkaW5hdGVzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW2xhdGl0dWRlLCBsb25naXR1ZGVdID0gY29vcmRpbmF0ZXM7XG4gICAgICAgIGlmICh0eXBlb2YgbGF0aXR1ZGUgIT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIGxvbmdpdHVkZSAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGggfHwgdGhpcy5jb25maWcucGF0aCkge1xuICAgICAgICAgICAgcGF0aCA9IFtwYXRoLCB0aGlzLmNvbmZpZy5wYXRoXS5maWx0ZXIoeCA9PiB4KS5qb2luKFwiLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gZm4oXCJTVF9HZW9tZXRyeUZyb21UZXh0XCIsIGxpdGVyYWwoYCdQT0lOVCgke2xhdGl0dWRlfSAke2xvbmdpdHVkZX0pJ2ApLCB0aGlzLmNvbmZpZy5zcmlkID8/IDApO1xuICAgICAgICByZXR1cm4gW2ZuKFwiU1RfRGlzdGFuY2VfU3BoZXJlXCIsIHRoaXMuZ2V0UG9pbnRBdHRyaWJ1dGUocGF0aCksIGxvY2F0aW9uKSwgdGhpcy5jb25maWcubmFtZSA/PyB0aGlzLmtleV07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQb2ludEF0dHJpYnV0ZShwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCh0aGlzLmNvbmZpZyBhcyBEaXN0YW5jZUNvbmZpZ1dpdGhQb2ludCkuYXR0cmlidXRlKSB7XG4gICAgICAgICAgICBjb25zdCBhdHQgPSAodGhpcy5jb25maWcgYXMgRGlzdGFuY2VDb25maWdXaXRoUG9pbnQpLmF0dHJpYnV0ZTtcbiAgICAgICAgICAgIHJldHVybiBsaXRlcmFsKHBhdGggPyBTZXF1ZWxpemVVdGlscy5nZXRMaXRlcmFsRnVsbE5hbWUoYXR0LCBwYXRoKSA6IGF0dCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXQgPSBwYXRoID8gbGl0ZXJhbChTZXF1ZWxpemVVdGlscy5nZXRMaXRlcmFsRnVsbE5hbWUoKHRoaXMuY29uZmlnIGFzIERpc3RhbmNlQ29uZmlnV2l0aExhdExuZykubGF0QXR0cmlidXRlLCBwYXRoKSkgOiAodGhpcy5jb25maWcgYXMgRGlzdGFuY2VDb25maWdXaXRoTGF0TG5nKS5sYXRBdHRyaWJ1dGU7XG4gICAgICAgIGNvbnN0IGxuZyA9IHBhdGggPyBsaXRlcmFsKFNlcXVlbGl6ZVV0aWxzLmdldExpdGVyYWxGdWxsTmFtZSgodGhpcy5jb25maWcgYXMgRGlzdGFuY2VDb25maWdXaXRoTGF0TG5nKS5sbmdBdHRyaWJ1dGUsIHBhdGgpKSA6ICh0aGlzLmNvbmZpZyBhcyBEaXN0YW5jZUNvbmZpZ1dpdGhMYXRMbmcpLmxuZ0F0dHJpYnV0ZTtcbiAgICAgICAgY29uc3QgcG9pbnQgPSBmbihcIlBvaW50XCIsIGxuZywgbGF0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnNyaWQgPyBmbihcIlNUX1NSSURcIiwgcG9pbnQsIHRoaXMuY29uZmlnLnNyaWQpIDogcG9pbnQ7XG4gICAgfVxufVxuIl19
@@ -16,7 +16,7 @@ export interface FilterQueryModel {
16
16
  page?: FilterPageMode;
17
17
  search?: FilterSearchModel;
18
18
  query?: QueryModel;
19
- order?: OrderModel;
19
+ order?: OrderModel | OrderModel[];
20
20
  data?: object;
21
21
  groupBy?: string;
22
22
  }
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
 
4
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9tb2RlbHMvZmlsdGVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoibGliL21vZGVscy9maWx0ZXIubW9kZWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeU1vZGVsIH0gZnJvbSBcIi4uL2ZpbHRlci9tb2RlbHMvcXVlcnkubW9kZWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJQYWdlTW9kZSB7XG4gICAgbnVtYmVyOiBudW1iZXI7XG4gICAgc2l6ZTogbnVtYmVyO1xuICAgIG9mZnNldD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJTZWFyY2hNb2RlbCB7XG4gICAgdmFsdWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmRlck1vZGVsIHtcbiAgICBjb2x1bW46IHN0cmluZztcbiAgICBkaXJlY3Rpb246IFwiYXNjXCIgfCBcImRlc2NcIiB8IFwiXCI7XG4gICAgbnVsbExhc3Q/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclF1ZXJ5TW9kZWwge1xuICAgIHBhZ2U/OiBGaWx0ZXJQYWdlTW9kZTtcbiAgICBzZWFyY2g/OiBGaWx0ZXJTZWFyY2hNb2RlbDtcbiAgICBxdWVyeT86IFF1ZXJ5TW9kZWw7XG4gICAgb3JkZXI/OiBPcmRlck1vZGVsO1xuICAgIGRhdGE/OiBvYmplY3Q7XG4gICAgZ3JvdXBCeT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJSZXN1bHRNb2RlbDxUPiB7XG4gICAgdmFsdWVzOiBUW107XG4gICAgdG90YWw6IG51bWJlcjtcbiAgICBwYWdlPzoge1xuICAgICAgICBudW1iZXI6IG51bWJlcjtcbiAgICAgICAgc2l6ZTogbnVtYmVyO1xuICAgIH07XG59XG4iXX0=
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9tb2RlbHMvZmlsdGVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoibGliL21vZGVscy9maWx0ZXIubW9kZWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeU1vZGVsIH0gZnJvbSBcIi4uL2ZpbHRlci9tb2RlbHMvcXVlcnkubW9kZWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJQYWdlTW9kZSB7XG4gICAgbnVtYmVyOiBudW1iZXI7XG4gICAgc2l6ZTogbnVtYmVyO1xuICAgIG9mZnNldD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJTZWFyY2hNb2RlbCB7XG4gICAgdmFsdWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmRlck1vZGVsIHtcbiAgICBjb2x1bW46IHN0cmluZztcbiAgICBkaXJlY3Rpb246IFwiYXNjXCIgfCBcImRlc2NcIiB8IFwiXCI7XG4gICAgbnVsbExhc3Q/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclF1ZXJ5TW9kZWwge1xuICAgIHBhZ2U/OiBGaWx0ZXJQYWdlTW9kZTtcbiAgICBzZWFyY2g/OiBGaWx0ZXJTZWFyY2hNb2RlbDtcbiAgICBxdWVyeT86IFF1ZXJ5TW9kZWw7XG4gICAgb3JkZXI/OiBPcmRlck1vZGVsIHwgT3JkZXJNb2RlbFtdO1xuICAgIGRhdGE/OiBvYmplY3Q7XG4gICAgZ3JvdXBCeT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJSZXN1bHRNb2RlbDxUPiB7XG4gICAgdmFsdWVzOiBUW107XG4gICAgdG90YWw6IG51bWJlcjtcbiAgICBwYWdlPzoge1xuICAgICAgICBudW1iZXI6IG51bWJlcjtcbiAgICAgICAgc2l6ZTogbnVtYmVyO1xuICAgIH07XG59XG4iXX0=
@@ -103,7 +103,7 @@ let SequelizeModelScanner = class SequelizeModelScanner {
103
103
  return result;
104
104
  }
105
105
  getOrder(model, orderObj) {
106
- if (!orderObj || !orderObj.column || orderObj.direction === "") {
106
+ if (!(orderObj === null || orderObj === void 0 ? void 0 : orderObj.column) || !orderObj.direction) {
107
107
  return;
108
108
  }
109
109
  const values = orderObj.column.split(".");
@@ -188,4 +188,4 @@ SequelizeModelScanner = __decorate([
188
188
  ], SequelizeModelScanner);
189
189
  exports.SequelizeModelScanner = SequelizeModelScanner;
190
190
 
191
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9zY2FubmVycy9zZXF1ZWxpemUtbW9kZWwuc2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSwyQ0FBNEM7QUFDNUMsNERBQXFEO0FBQ3JELHlDQUFpRjtBQUNqRiwrREFBNEY7QUFLNUYsd0RBQXVEO0FBR3ZELElBQWEscUJBQXFCLEdBQWxDLE1BQWEscUJBQXFCO0lBQ3ZCLFdBQVcsQ0FDZCxLQUFtQixFQUNuQixJQUFlLEVBQ2Ysa0JBQWtDLEVBQ2xDLFVBQWlDLEVBQ2pDLGdCQUFnQixHQUFHLEtBQUs7O1FBRXhCLE1BQU0sT0FBTyxHQUFHLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLElBQUksMENBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLENBQUEsRUFBRTtZQUNsQixPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsTUFBTSxNQUFNLEdBQXFCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLFFBQVEsR0FBcUIsTUFBTSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1lBQ3ZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3JELFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsRUFBRSxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQVk7Z0JBQ2pDLEtBQUssRUFBRSxXQUFXLENBQUMsa0JBQWtCLEVBQUU7Z0JBQ3ZDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUM3QyxPQUFPLEVBQUUsRUFBRTtnQkFDWCxRQUFRLEVBQUUsS0FBSzthQUNsQixDQUFDLENBQUM7WUFFSCxJQUFJLENB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SUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDekIsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFnQyxDQUFDO2dCQUNyRCxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQTJCLENBQUM7YUFDdEQ7U0FDSjtRQUVELFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQW1CLEVBQUUsR0FBVztRQUNwRCxNQUFNLFlBQVksR0FBRyxJQUFBLHNDQUFlLEVBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRELE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDNUQ7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0NBQ0osQ0FBQTtBQTVOWSxxQkFBcUI7SUFEakMsSUFBQSxtQkFBVSxHQUFFO0dBQ0EscUJBQXFCLENBNE5qQztBQTVOWSxzREFBcUIiLCJmaWxlIjoibGliL3NjYW5uZXJzL3NlcXVlbGl6ZS1tb2RlbC5zY2FubmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgVHlwZVV0aWxzIH0gZnJvbSBcIkByZWN1cnN5dmUvbmVzdGpzLWNvbW1vblwiO1xuaW1wb3J0IHsgRmluZEF0dHJpYnV0ZU9wdGlvbnMsIEluY2x1ZGVPcHRpb25zLCBsaXRlcmFsLCBPcmRlciB9IGZyb20gXCJzZXF1ZWxpemVcIjtcbmltcG9ydCB7IEFzc29jaWF0aW9uLCBCYXNlQXNzb2NpYXRpb24sIGdldEFzc29jaWF0aW9ucywgTW9kZWwgfSBmcm9tIFwic2VxdWVsaXplLXR5cGVzY3JpcHRcIjtcbmltcG9ydCB7IE9yZGVyTW9kZWwgfSBmcm9tIFwiLi5cIjtcbmltcG9ydCB7IEluY2x1ZGVNb2RlbCB9IGZyb20gXCIuLlwiO1xuaW1wb3J0IHsgUGF0aE1vZGVsIH0gZnJvbSBcIi4uL21vZGVscy9wYXRoLm1vZGVsXCI7XG5pbXBvcnQgeyBTZWFyY2hBdHRyaWJ1dGVzTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL3NlYXJjaC1hdHRyaWJ1dGVzLm1vZGVsXCI7XG5pbXBvcnQgeyBNLCBTZXF1ZWxpemVVdGlscyB9IGZyb20gXCIuLi9zZXF1ZWxpemUudXRpbHNcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlcXVlbGl6ZU1vZGVsU2Nhbm5lciB7XG4gICAgcHVibGljIGdldEluY2x1ZGVzKFxuICAgICAgICBtb2RlbDogdHlwZW9mIE1vZGVsLFxuICAgICAgICBwYXRoOiBQYXRoTW9kZWwsXG4gICAgICAgIGFkZGl0aW9uYWxJbmNsdWRlczogSW5jbHVkZU1vZGVsW10sXG4gICAgICAgIGF0dHJpYnV0ZXM/OiBGaW5kQXR0cmlidXRlT3B0aW9ucyxcbiAgICAgICAgaWdub3JlQXR0cmlidXRlcyA9IGZhbHNlXG4gICAgKTogSW5jbHVkZU9wdGlvbnNbXSB7XG4gICAgICAgIGNvbnN0IG9iamVjdHMgPSBwYXRoPy5wYXRoPy5zcGxpdChcIi5cIik7XG4gICAgICAgIGlmICghb2JqZWN0cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQ6IEluY2x1ZGVPcHRpb25zW10gPSBbXTtcbiAgICAgICAgbGV0IGluY2x1ZGVzOiBJbmNsdWRlT3B0aW9uc1tdID0gcmVzdWx0O1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGZvciAoY29uc3Qgb2JqIG9mIG9iamVjdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9uID0gdGhpcy5maW5kQXNzb2NpYXRpb24obW9kZWwsIG9iaik7XG4gICAgICAgICAgICBpbmNsdWRlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBhczogYXNzb2NpYXRpb24uZ2V0QXMoKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgbW9kZWw6IGFzc29jaWF0aW9uLmdldEFzc29jaWF0ZWRDbGFzcygpLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IGlnbm9yZUF0dHJpYnV0ZXMgPyBbXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBpbmNsdWRlOiBbXSxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoaSsrIDwgb2JqZWN0cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgbW9kZWwgPSBpbmNsdWRlc1swXS5tb2RlbCBhcyB1bmtub3duIGFzIHR5cGVvZiBNb2RlbDtcbiAgICAgICAgICAgICAgICBpbmNsdWRlcyA9IGluY2x1ZGVzWzBdLmluY2x1ZGUgYXMgSW5jbHVkZU9wdGlvbnNbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBpbmNsdWRlc1swXS5hdHRyaWJ1dGVzID0gaWdub3JlQXR0cmlidXRlcyA/IFtdIDogU2VxdWVsaXplVXRpbHMubWVyZ2VBdHRyaWJ1dGVzKGluY2x1ZGVzWzBdLmF0dHJpYnV0ZXMsIGF0dHJpYnV0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoLndoZXJlKSB7XG4gICAgICAgICAgICBpbmNsdWRlc1swXS53aGVyZSA9IFNlcXVlbGl6ZVV0aWxzLm1lcmdlV2hlcmUoaW5jbHVkZXNbMF0ud2hlcmUsIHBhdGgud2hlcmUpO1xuICAgICAgICAgICAgaW5jbHVkZXNbMF0ucmVxdWlyZWQgPSAhIXBhdGgucmVxdWlyZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgucmVxdWlyZWQpIHtcbiAgICAgICAgICAgIGluY2x1ZGVzWzBdLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGluY2x1ZGVzWzBdLnBhcmFub2lkID0gISFwYXRoLnBhcmFub2lkO1xuICAgICAgICBpbmNsdWRlc1swXS5zZXBhcmF0ZSA9ICEhcGF0aC5zZXBhcmF0ZTtcbiAgICAgICAgaW5jbHVkZXNbMF0ub3JkZXIgPSBwYXRoLm9yZGVyO1xuXG4gICAgICAgIGlmIChUeXBlVXRpbHMuaXNOb3ROdWxsT3JVbmRlZmluZWQocGF0aC5zdWJRdWVyeSkpIHtcbiAgICAgICAgICAgIGluY2x1ZGVzWzBdLnN1YlF1ZXJ5ID0gcGF0aC5zdWJRdWVyeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFkZEluY2x1ZGVzOiBJbmNsdWRlT3B0aW9uc1tdW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpbmNsdWRlIG9mIGFkZGl0aW9uYWxJbmNsdWRlcykge1xuICAgICAgICAgICAgYWRkSW5jbHVkZXMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLmdldEluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlc1swXS5tb2RlbCBhcyB1bmtub3duIGFzIHR5cGVvZiBNb2RlbCxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogaW5jbHVkZS5wYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGluY2x1ZGUub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVyZTogaW5jbHVkZS53aGVyZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBpbmNsdWRlLnJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGU6IGluY2x1ZGUuc2VwYXJhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbm9pZDogaW5jbHVkZS5wYXJhbm9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YlF1ZXJ5OiBpbmNsdWRlLnN1YlF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlLmF0dHJpYnV0ZXMsXG4gICAgICAgICAgICAgICAgICAgIGlnbm9yZUF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5jbHVkZXNbMF0uaW5jbHVkZS5wdXNoKC4uLlNlcXVlbGl6ZVV0aWxzLnJlZHVjZUluY2x1ZGVzKGFkZEluY2x1ZGVzLCBpZ25vcmVBdHRyaWJ1dGVzKSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QXR0cmlidXRlcyhcbiAgICAgICAgbW9kZWw6IHR5cGVvZiBNb2RlbCxcbiAgICAgICAgcGF0aDogUGF0aE1vZGVsLFxuICAgICAgICBhZGRpdGlvbmFsSW5jbHVkZXM6IEluY2x1ZGVNb2RlbFtdLFxuICAgICAgICBhdHRyaWJ1dGVzPzogRmluZEF0dHJpYnV0ZU9wdGlvbnNcbiAgICApOiBTZWFyY2hBdHRyaWJ1dGVzTW9kZWxbXSB7XG4gICAgICAgIGNvbnN0IG9iamVjdHMgPSBwYXRoLnBhdGguc3BsaXQoXCIuXCIpO1xuICAgICAgICBpZiAoIW9iamVjdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQ6IFNlYXJjaEF0dHJpYnV0ZXNNb2RlbFtdID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgb2JqIG9mIG9iamVjdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9uID0gdGhpcy5maW5kQXNzb2NpYXRpb24obW9kZWwsIG9iaik7XG4gICAgICAgICAgICBtb2RlbCA9IGFzc29jaWF0aW9uLmdldEFzc29jaWF0ZWRDbGFzcygpIGFzIHVua25vd24gYXMgdHlwZW9mIE1vZGVsO1xuICAgICAgICB9XG4gICAgICAgIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzID9cbiAgICAgICAgICAgIFNlcXVlbGl6ZVV0aWxzLmdldE1vZGVsU2VhcmNoYWJsZUZpZWxkQXR0cmlidXRlcyhtb2RlbCBhcyB0eXBlb2YgTSwgYXR0cmlidXRlcyBhcyBzdHJpbmdbXSkgOlxuICAgICAgICAgICAgU2VxdWVsaXplVXRpbHMuZ2V0TW9kZWxTZWFyY2hhYmxlQXR0cmlidXRlcyhtb2RlbCBhcyB0eXBlb2YgTSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAgICAgLi4uKGF0dHJpYnV0ZXMgYXMgc3RyaW5nW10pLm1hcChhID0+ICh7XG4gICAgICAgICAgICAgICAgbmFtZTogYSxcbiAgICAgICAgICAgICAgICBrZXk6IFNlcXVlbGl6ZVV0aWxzLmdldEF0dHJpYnV0ZUZ1bGxOYW1lKGEsIHBhdGgucGF0aCksXG4gICAgICAgICAgICAgICAgbGl0ZXJhbEtleTogU2VxdWVsaXplVXRpbHMuZ2V0TGl0ZXJhbEZ1bGxOYW1lKGEsIHBhdGgucGF0aCksXG4gICAgICAgICAgICAgICAgaXNKc29uOiBTZXF1ZWxpemVVdGlscy5pc0NvbHVtbkpzb24obW9kZWwgYXMgdHlwZW9mIE0sIGEpXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGluY2x1ZGUgb2YgYWRkaXRpb25hbEluY2x1ZGVzKSB7XG4gICAgICAgICAgICBpZiAoaW5jbHVkZS5pZ25vcmVJblNlYXJjaCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHQucHVzaChcbiAgICAgICAgICAgICAgICAuLi50aGlzLmdldEF0dHJpYnV0ZXMoXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsIGFzIHR5cGVvZiBNb2RlbCxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogaW5jbHVkZS5wYXRoXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlLnNlYXJjaGFibGVBdHRyaWJ1dGVzID8/IGluY2x1ZGUuYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICkubWFwKGEgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogYS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IFNlcXVlbGl6ZVV0aWxzLmdldEF0dHJpYnV0ZUZ1bGxOYW1lKGEubmFtZSwgW3BhdGgucGF0aCwgaW5jbHVkZS5wYXRoXS5qb2luKFwiLlwiKSksXG4gICAgICAgICAgICAgICAgICAgIGxpdGVyYWxLZXk6IFNlcXVlbGl6ZVV0aWxzLmdldExpdGVyYWxGdWxsTmFtZShhLm5hbWUsIFtwYXRoLnBhdGgsIGluY2x1ZGUucGF0aF0uam9pbihcIi5cIikpLFxuICAgICAgICAgICAgICAgICAgICBpc0pzb246IGEuaXNKc29uXG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0T3JkZXIobW9kZWw6IHR5cGVvZiBNb2RlbCwgb3JkZXJPYmo6IE9yZGVyTW9kZWwpOiBPcmRlciB7XG4gICAgICAgIGlmICghb3JkZXJPYmogfHwgIW9yZGVyT2JqLmNvbHVtbiB8fCBvcmRlck9iai5kaXJlY3Rpb24gPT09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG9yZGVyT2JqLmNvbHVtbi5zcGxpdChcIi5cIik7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHZhbHVlcy5wb3AoKTtcbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9uID0gdGhpcy5maW5kQXNzb2NpYXRpb24obW9kZWwsIHZhbHVlKTtcbiAgICAgICAgICAgIG1vZGVsID0gYXNzb2NpYXRpb24uZ2V0QXNzb2NpYXRlZENsYXNzKCkgYXMgdW5rbm93biBhcyB0eXBlb2YgTW9kZWw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29sID0gU2VxdWVsaXplVXRpbHMuZmluZENvbHVtbkZpZWxkTmFtZShtb2RlbCBhcyB0eXBlb2YgTSwgY29sdW1uKTtcbiAgICAgICAgbGV0IGxpdGVyYWxPcmRlciA9IHZhbHVlcy5sZW5ndGggP1xuICAgICAgICAgICAgU2VxdWVsaXplVXRpbHMuZ2V0TGl0ZXJhbEZ1bGxOYW1lKGNvbCwgdmFsdWVzKSA6XG4gICAgICAgICAgICBgXFxgJHttb2RlbC5uYW1lfVxcYC5cXGAke2NvbH1cXGBgO1xuICAgICAgICBpZiAob3JkZXJPYmoubnVsbExhc3QgJiYgb3JkZXJPYmouZGlyZWN0aW9uID09PSBcImFzY1wiKSB7XG4gICAgICAgICAgICBsaXRlcmFsT3JkZXIgPSBgLSR7bGl0ZXJhbE9yZGVyfWA7XG4gICAgICAgICAgICBvcmRlck9iai5kaXJlY3Rpb24gPSBcImRlc2NcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3JkZXJPYmouZGlyZWN0aW9uID09PSBcImRlc2NcIikge1xuICAgICAgICAgICAgbGl0ZXJhbE9yZGVyICs9IGAgREVTQ2A7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpdGVyYWwobGl0ZXJhbE9yZGVyKSBhcyBPcmRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0R3JvdXAobW9kZWw6IHR5cGVvZiBNb2RlbCwgb3JkZXJPYmo6IE9yZGVyTW9kZWwpOiBzdHJpbmdbXSB7XG4gICAgICAgIGlmICghb3JkZXJPYmogfHwgIW9yZGVyT2JqLmNvbHVtbiB8fCBvcmRlck9iai5kaXJlY3Rpb24gPT09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdyb3VwOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBvcmRlck9iai5jb2x1bW4uc3BsaXQoXCIuXCIpO1xuICAgICAgICBjb25zdCBjb2x1bW4gPSB2YWx1ZXMucG9wKCk7XG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHRoaXMuZmluZEFzc29jaWF0aW9uKG1vZGVsLCB2YWx1ZSk7XG4gICAgICAgICAgICBtb2RlbCA9IGFzc29jaWF0aW9uLmdldEFzc29jaWF0ZWRDbGFzcygpIGFzIHVua25vd24gYXMgdHlwZW9mIE1vZGVsO1xuICAgICAgICAgICAgZ3JvdXAucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFNlcXVlbGl6ZVV0aWxzLmdldE9yZGVyRnVsbE5hbWUoXCJpZFwiLCBncm91cCksXG4gICAgICAgICAgICBTZXF1ZWxpemVVdGlscy5nZXRPcmRlckZ1bGxOYW1lKFNlcXVlbGl6ZVV0aWxzLmZpbmRDb2x1bW5GaWVsZE5hbWUobW9kZWwgYXMgdHlwZW9mIE0sIGNvbHVtbiksIGdyb3VwKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPcmRlckluY2x1ZGVzKG1vZGVsOiB0eXBlb2YgTW9kZWwsIG9yZGVyT2JqOiBPcmRlck1vZGVsKTogSW5jbHVkZU9wdGlvbnNbXSB7XG4gICAgICAgIGlmICghb3JkZXJPYmogfHwgIW9yZGVyT2JqLmNvbHVtbiB8fCBvcmRlck9iai5kaXJlY3Rpb24gPT09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG9yZGVyT2JqLmNvbHVtbi5zcGxpdChcIi5cIik7XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHZhbHVlcy5wb3AoKTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBJbmNsdWRlT3B0aW9uc1tdID0gW107XG4gICAgICAgIGxldCBpbmNsdWRlczogSW5jbHVkZU9wdGlvbnNbXSA9IHJlc3VsdDtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgYXNzb2NpYXRpb24gPSB0aGlzLmZpbmRBc3NvY2lhdGlvbihtb2RlbCwgdmFsdWUpO1xuICAgICAgICAgICAgaW5jbHVkZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgYXM6IGFzc29jaWF0aW9uLmdldEFzKCkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICAgIG1vZGVsOiBhc3NvY2lhdGlvbi5nZXRBc3NvY2lhdGVkQ2xhc3MoKSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgICAgICAgICAgICBpbmNsdWRlOiBbXSxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdGhyb3VnaDogYXNzb2NpYXRpb24uZ2V0QXNzb2NpYXRpb24oKSA9PT0gQXNzb2NpYXRpb24uQmVsb25nc1RvTWFueSA/IHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogW11cbiAgICAgICAgICAgICAgICB9IDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGkrKyA8IHZhbHVlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgbW9kZWwgPSBpbmNsdWRlc1swXS5tb2RlbCBhcyB1bmtub3duIGFzIHR5cGVvZiBNb2RlbDtcbiAgICAgICAgICAgICAgICBpbmNsdWRlcyA9IGluY2x1ZGVzWzBdLmluY2x1ZGUgYXMgSW5jbHVkZU9wdGlvbnNbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGluY2x1ZGVzWzBdLmF0dHJpYnV0ZXMgPSBbY29sdW1uXTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRBc3NvY2lhdGlvbihtb2RlbDogdHlwZW9mIE1vZGVsLCBvYmo6IHN0cmluZyk6IEJhc2VBc3NvY2lhdGlvbjxhbnksIGFueT4ge1xuICAgICAgICBjb25zdCBhc3NvY2lhdGlvbnMgPSBnZXRBc3NvY2lhdGlvbnMobW9kZWwucHJvdG90eXBlKTtcblxuICAgICAgICBjb25zdCBhc3NvY2lhdGlvbiA9IGFzc29jaWF0aW9ucy5maW5kKGEgPT4gYS5nZXRBcygpID09PSBvYmopO1xuICAgICAgICBpZiAoIWFzc29jaWF0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBsb2FkIGFzc29jaWF0aW9uIGZvciAke29ian1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXNzb2NpYXRpb247XG4gICAgfVxufVxuIl19
191
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9zY2FubmVycy9zZXF1ZWxpemUtbW9kZWwuc2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSwyQ0FBNEM7QUFDNUMsNERBQXFEO0FBQ3JELHlDQUFpRjtBQUNqRiwrREFBNEY7QUFLNUYsd0RBQXVEO0FBR3ZELElBQWEscUJBQXFCLEdBQWxDLE1BQWEscUJBQXFCO0lBQ3ZCLFdBQVcsQ0FDZCxLQUFtQixFQUNuQixJQUFlLEVBQ2Ysa0JBQWtDLEVBQ2xDLFVBQWlDLEVBQ2pDLGdCQUFnQixHQUFHLEtBQUs7O1FBRXhCLE1BQU0sT0FBTyxHQUFHLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLElBQUksMENBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLENBQUEsRUFBRTtZQUNsQixPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsTUFBTSxNQUFNLEdBQXFCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLFFBQVEsR0FBcUIsTUFBTSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1lBQ3ZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3JELFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsRUFBRSxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQVk7Z0JBQ2pDLEtBQUssRUFBRSxXQUFXLENBQUMsa0JBQWtCLEVBQUU7Z0JBQ3ZDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUM3QyxPQUFPLEVBQUUsRUFBRTtnQkFDWCxRQUFRLEVBQUUsS0FBSzthQUNsQixDQUFDLENBQUM7WUFFSCxJQUFJLENB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LENBQUM7WUFFSCxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QixLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQWdDLENBQUM7Z0JBQ3JELFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBMkIsQ0FBQzthQUN0RDtTQUNKO1FBRUQsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxlQUFlLENBQUMsS0FBbUIsRUFBRSxHQUFXO1FBQ3BELE1BQU0sWUFBWSxHQUFHLElBQUEsc0NBQWUsRUFBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdEQsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUM1RDtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSixDQUFBO0FBNU5ZLHFCQUFxQjtJQURqQyxJQUFBLG1CQUFVLEdBQUU7R0FDQSxxQkFBcUIsQ0E0TmpDO0FBNU5ZLHNEQUFxQiIsImZpbGUiOiJsaWIvc2Nhbm5lcnMvc2VxdWVsaXplLW1vZGVsLnNjYW5uZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBUeXBlVXRpbHMgfSBmcm9tIFwiQHJlY3Vyc3l2ZS9uZXN0anMtY29tbW9uXCI7XG5pbXBvcnQgeyBGaW5kQXR0cmlidXRlT3B0aW9ucywgSW5jbHVkZU9wdGlvbnMsIGxpdGVyYWwsIE9yZGVyIH0gZnJvbSBcInNlcXVlbGl6ZVwiO1xuaW1wb3J0IHsgQXNzb2NpYXRpb24sIEJhc2VBc3NvY2lhdGlvbiwgZ2V0QXNzb2NpYXRpb25zLCBNb2RlbCB9IGZyb20gXCJzZXF1ZWxpemUtdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgT3JkZXJNb2RlbCB9IGZyb20gXCIuLlwiO1xuaW1wb3J0IHsgSW5jbHVkZU1vZGVsIH0gZnJvbSBcIi4uXCI7XG5pbXBvcnQgeyBQYXRoTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL3BhdGgubW9kZWxcIjtcbmltcG9ydCB7IFNlYXJjaEF0dHJpYnV0ZXNNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvc2VhcmNoLWF0dHJpYnV0ZXMubW9kZWxcIjtcbmltcG9ydCB7IE0sIFNlcXVlbGl6ZVV0aWxzIH0gZnJvbSBcIi4uL3NlcXVlbGl6ZS51dGlsc1wiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2VxdWVsaXplTW9kZWxTY2FubmVyIHtcbiAgICBwdWJsaWMgZ2V0SW5jbHVkZXMoXG4gICAgICAgIG1vZGVsOiB0eXBlb2YgTW9kZWwsXG4gICAgICAgIHBhdGg6IFBhdGhNb2RlbCxcbiAgICAgICAgYWRkaXRpb25hbEluY2x1ZGVzOiBJbmNsdWRlTW9kZWxbXSxcbiAgICAgICAgYXR0cmlidXRlcz86IEZpbmRBdHRyaWJ1dGVPcHRpb25zLFxuICAgICAgICBpZ25vcmVBdHRyaWJ1dGVzID0gZmFsc2VcbiAgICApOiBJbmNsdWRlT3B0aW9uc1tdIHtcbiAgICAgICAgY29uc3Qgb2JqZWN0cyA9IHBhdGg/LnBhdGg/LnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKCFvYmplY3RzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdDogSW5jbHVkZU9wdGlvbnNbXSA9IFtdO1xuICAgICAgICBsZXQgaW5jbHVkZXM6IEluY2x1ZGVPcHRpb25zW10gPSByZXN1bHQ7XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBvYmogb2Ygb2JqZWN0cykge1xuICAgICAgICAgICAgY29uc3QgYXNzb2NpYXRpb24gPSB0aGlzLmZpbmRBc3NvY2lhdGlvbihtb2RlbCwgb2JqKTtcbiAgICAgICAgICAgIGluY2x1ZGVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGFzOiBhc3NvY2lhdGlvbi5nZXRBcygpIGFzIHN0cmluZyxcbiAgICAgICAgICAgICAgICBtb2RlbDogYXNzb2NpYXRpb24uZ2V0QXNzb2NpYXRlZENsYXNzKCksXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogaWdub3JlQXR0cmlidXRlcyA/IFtdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGluY2x1ZGU6IFtdLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChpKysgPCBvYmplY3RzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICBtb2RlbCA9IGluY2x1ZGVzWzBdLm1vZGVsIGFzIHVua25vd24gYXMgdHlwZW9mIE1vZGVsO1xuICAgICAgICAgICAgICAgIGluY2x1ZGVzID0gaW5jbHVkZXNbMF0uaW5jbHVkZSBhcyBJbmNsdWRlT3B0aW9uc1tdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGluY2x1ZGVzWzBdLmF0dHJpYnV0ZXMgPSBpZ25vcmVBdHRyaWJ1dGVzID8gW10gOiBTZXF1ZWxpemVVdGlscy5tZXJnZUF0dHJpYnV0ZXMoaW5jbHVkZXNbMF0uYXR0cmlidXRlcywgYXR0cmlidXRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgud2hlcmUpIHtcbiAgICAgICAgICAgIGluY2x1ZGVzWzBdLndoZXJlID0gU2VxdWVsaXplVXRpbHMubWVyZ2VXaGVyZShpbmNsdWRlc1swXS53aGVyZSwgcGF0aC53aGVyZSk7XG4gICAgICAgICAgICBpbmNsdWRlc1swXS5yZXF1aXJlZCA9ICEhcGF0aC5yZXF1aXJlZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aC5yZXF1aXJlZCkge1xuICAgICAgICAgICAgaW5jbHVkZXNbMF0ucmVxdWlyZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5jbHVkZXNbMF0ucGFyYW5vaWQgPSAhIXBhdGgucGFyYW5vaWQ7XG4gICAgICAgIGluY2x1ZGVzWzBdLnNlcGFyYXRlID0gISFwYXRoLnNlcGFyYXRlO1xuICAgICAgICBpbmNsdWRlc1swXS5vcmRlciA9IHBhdGgub3JkZXI7XG5cbiAgICAgICAgaWYgKFR5cGVVdGlscy5pc05vdE51bGxPclVuZGVmaW5lZChwYXRoLnN1YlF1ZXJ5KSkge1xuICAgICAgICAgICAgaW5jbHVkZXNbMF0uc3ViUXVlcnkgPSBwYXRoLnN1YlF1ZXJ5O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWRkSW5jbHVkZXM6IEluY2x1ZGVPcHRpb25zW11bXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGluY2x1ZGUgb2YgYWRkaXRpb25hbEluY2x1ZGVzKSB7XG4gICAgICAgICAgICBhZGRJbmNsdWRlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0SW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzWzBdLm1vZGVsIGFzIHVua25vd24gYXMgdHlwZW9mIE1vZGVsLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBpbmNsdWRlLnBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaW5jbHVkZS5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlOiBpbmNsdWRlLndoZXJlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGluY2x1ZGUucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZTogaW5jbHVkZS5zZXBhcmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFub2lkOiBpbmNsdWRlLnBhcmFub2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3ViUXVlcnk6IGluY2x1ZGUuc3ViUXVlcnlcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGUuYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICAgICAgaWdub3JlQXR0cmlidXRlc1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpbmNsdWRlc1swXS5pbmNsdWRlLnB1c2goLi4uU2VxdWVsaXplVXRpbHMucmVkdWNlSW5jbHVkZXMoYWRkSW5jbHVkZXMsIGlnbm9yZUF0dHJpYnV0ZXMpKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBdHRyaWJ1dGVzKFxuICAgICAgICBtb2RlbDogdHlwZW9mIE1vZGVsLFxuICAgICAgICBwYXRoOiBQYXRoTW9kZWwsXG4gICAgICAgIGFkZGl0aW9uYWxJbmNsdWRlczogSW5jbHVkZU1vZGVsW10sXG4gICAgICAgIGF0dHJpYnV0ZXM/OiBGaW5kQXR0cmlidXRlT3B0aW9uc1xuICAgICk6IFNlYXJjaEF0dHJpYnV0ZXNNb2RlbFtdIHtcbiAgICAgICAgY29uc3Qgb2JqZWN0cyA9IHBhdGgucGF0aC5zcGxpdChcIi5cIik7XG4gICAgICAgIGlmICghb2JqZWN0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdDogU2VhcmNoQXR0cmlidXRlc01vZGVsW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBvYmogb2Ygb2JqZWN0cykge1xuICAgICAgICAgICAgY29uc3QgYXNzb2NpYXRpb24gPSB0aGlzLmZpbmRBc3NvY2lhdGlvbihtb2RlbCwgb2JqKTtcbiAgICAgICAgICAgIG1vZGVsID0gYXNzb2NpYXRpb24uZ2V0QXNzb2NpYXRlZENsYXNzKCkgYXMgdW5rbm93biBhcyB0eXBlb2YgTW9kZWw7XG4gICAgICAgIH1cbiAgICAgICAgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgP1xuICAgICAgICAgICAgU2VxdWVsaXplVXRpbHMuZ2V0TW9kZWxTZWFyY2hhYmxlRmllbGRBdHRyaWJ1dGVzKG1vZGVsIGFzIHR5cGVvZiBNLCBhdHRyaWJ1dGVzIGFzIHN0cmluZ1tdKSA6XG4gICAgICAgICAgICBTZXF1ZWxpemVVdGlscy5nZXRNb2RlbFNlYXJjaGFibGVBdHRyaWJ1dGVzKG1vZGVsIGFzIHR5cGVvZiBNKTtcbiAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgICAuLi4oYXR0cmlidXRlcyBhcyBzdHJpbmdbXSkubWFwKGEgPT4gKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBhLFxuICAgICAgICAgICAgICAgIGtleTogU2VxdWVsaXplVXRpbHMuZ2V0QXR0cmlidXRlRnVsbE5hbWUoYSwgcGF0aC5wYXRoKSxcbiAgICAgICAgICAgICAgICBsaXRlcmFsS2V5OiBTZXF1ZWxpemVVdGlscy5nZXRMaXRlcmFsRnVsbE5hbWUoYSwgcGF0aC5wYXRoKSxcbiAgICAgICAgICAgICAgICBpc0pzb246IFNlcXVlbGl6ZVV0aWxzLmlzQ29sdW1uSnNvbihtb2RlbCBhcyB0eXBlb2YgTSwgYSlcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuXG4gICAgICAgIGZvciAoY29uc3QgaW5jbHVkZSBvZiBhZGRpdGlvbmFsSW5jbHVkZXMpIHtcbiAgICAgICAgICAgIGlmIChpbmNsdWRlLmlnbm9yZUluU2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0QXR0cmlidXRlcyhcbiAgICAgICAgICAgICAgICAgICAgbW9kZWwgYXMgdHlwZW9mIE1vZGVsLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBpbmNsdWRlLnBhdGhcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGUuc2VhcmNoYWJsZUF0dHJpYnV0ZXMgPz8gaW5jbHVkZS5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgKS5tYXAoYSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBhLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGtleTogU2VxdWVsaXplVXRpbHMuZ2V0QXR0cmlidXRlRnVsbE5hbWUoYS5uYW1lLCBbcGF0aC5wYXRoLCBpbmNsdWRlLnBhdGhdLmpvaW4oXCIuXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbEtleTogU2VxdWVsaXplVXRpbHMuZ2V0TGl0ZXJhbEZ1bGxOYW1lKGEubmFtZSwgW3BhdGgucGF0aCwgaW5jbHVkZS5wYXRoXS5qb2luKFwiLlwiKSksXG4gICAgICAgICAgICAgICAgICAgIGlzSnNvbjogYS5pc0pzb25cbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPcmRlcihtb2RlbDogdHlwZW9mIE1vZGVsLCBvcmRlck9iajogT3JkZXJNb2RlbCk6IE9yZGVyIHtcbiAgICAgICAgaWYgKCFvcmRlck9iaj8uY29sdW1uIHx8ICFvcmRlck9iai5kaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG9yZGVyT2JqLmNvbHVtbi5zcGxpdChcIi5cIik7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHZhbHVlcy5wb3AoKTtcbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9uID0gdGhpcy5maW5kQXNzb2NpYXRpb24obW9kZWwsIHZhbHVlKTtcbiAgICAgICAgICAgIG1vZGVsID0gYXNzb2NpYXRpb24uZ2V0QXNzb2NpYXRlZENsYXNzKCkgYXMgdW5rbm93biBhcyB0eXBlb2YgTW9kZWw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29sID0gU2VxdWVsaXplVXRpbHMuZmluZENvbHVtbkZpZWxkTmFtZShtb2RlbCBhcyB0eXBlb2YgTSwgY29sdW1uKTtcbiAgICAgICAgbGV0IGxpdGVyYWxPcmRlciA9IHZhbHVlcy5sZW5ndGggP1xuICAgICAgICAgICAgU2VxdWVsaXplVXRpbHMuZ2V0TGl0ZXJhbEZ1bGxOYW1lKGNvbCwgdmFsdWVzKSA6XG4gICAgICAgICAgICBgXFxgJHttb2RlbC5uYW1lfVxcYC5cXGAke2NvbH1cXGBgO1xuICAgICAgICBpZiAob3JkZXJPYmoubnVsbExhc3QgJiYgb3JkZXJPYmouZGlyZWN0aW9uID09PSBcImFzY1wiKSB7XG4gICAgICAgICAgICBsaXRlcmFsT3JkZXIgPSBgLSR7bGl0ZXJhbE9yZGVyfWA7XG4gICAgICAgICAgICBvcmRlck9iai5kaXJlY3Rpb24gPSBcImRlc2NcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3JkZXJPYmouZGlyZWN0aW9uID09PSBcImRlc2NcIikge1xuICAgICAgICAgICAgbGl0ZXJhbE9yZGVyICs9IGAgREVTQ2A7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpdGVyYWwobGl0ZXJhbE9yZGVyKSBhcyBPcmRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0R3JvdXAobW9kZWw6IHR5cGVvZiBNb2RlbCwgb3JkZXJPYmo6IE9yZGVyTW9kZWwpOiBzdHJpbmdbXSB7XG4gICAgICAgIGlmICghb3JkZXJPYmogfHwgIW9yZGVyT2JqLmNvbHVtbiB8fCBvcmRlck9iai5kaXJlY3Rpb24gPT09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdyb3VwOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBvcmRlck9iai5jb2x1bW4uc3BsaXQoXCIuXCIpO1xuICAgICAgICBjb25zdCBjb2x1bW4gPSB2YWx1ZXMucG9wKCk7XG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHRoaXMuZmluZEFzc29jaWF0aW9uKG1vZGVsLCB2YWx1ZSk7XG4gICAgICAgICAgICBtb2RlbCA9IGFzc29jaWF0aW9uLmdldEFzc29jaWF0ZWRDbGFzcygpIGFzIHVua25vd24gYXMgdHlwZW9mIE1vZGVsO1xuICAgICAgICAgICAgZ3JvdXAucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFNlcXVlbGl6ZVV0aWxzLmdldE9yZGVyRnVsbE5hbWUoXCJpZFwiLCBncm91cCksXG4gICAgICAgICAgICBTZXF1ZWxpemVVdGlscy5nZXRPcmRlckZ1bGxOYW1lKFNlcXVlbGl6ZVV0aWxzLmZpbmRDb2x1bW5GaWVsZE5hbWUobW9kZWwgYXMgdHlwZW9mIE0sIGNvbHVtbiksIGdyb3VwKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPcmRlckluY2x1ZGVzKG1vZGVsOiB0eXBlb2YgTW9kZWwsIG9yZGVyT2JqOiBPcmRlck1vZGVsKTogSW5jbHVkZU9wdGlvbnNbXSB7XG4gICAgICAgIGlmICghb3JkZXJPYmogfHwgIW9yZGVyT2JqLmNvbHVtbiB8fCBvcmRlck9iai5kaXJlY3Rpb24gPT09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG9yZGVyT2JqLmNvbHVtbi5zcGxpdChcIi5cIik7XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHZhbHVlcy5wb3AoKTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBJbmNsdWRlT3B0aW9uc1tdID0gW107XG4gICAgICAgIGxldCBpbmNsdWRlczogSW5jbHVkZU9wdGlvbnNbXSA9IHJlc3VsdDtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgYXNzb2NpYXRpb24gPSB0aGlzLmZpbmRBc3NvY2lhdGlvbihtb2RlbCwgdmFsdWUpO1xuICAgICAgICAgICAgaW5jbHVkZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgYXM6IGFzc29jaWF0aW9uLmdldEFzKCkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICAgIG1vZGVsOiBhc3NvY2lhdGlvbi5nZXRBc3NvY2lhdGVkQ2xhc3MoKSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgICAgICAgICAgICBpbmNsdWRlOiBbXSxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdGhyb3VnaDogYXNzb2NpYXRpb24uZ2V0QXNzb2NpYXRpb24oKSA9PT0gQXNzb2NpYXRpb24uQmVsb25nc1RvTWFueSA/IHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogW11cbiAgICAgICAgICAgICAgICB9IDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGkrKyA8IHZhbHVlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgbW9kZWwgPSBpbmNsdWRlc1swXS5tb2RlbCBhcyB1bmtub3duIGFzIHR5cGVvZiBNb2RlbDtcbiAgICAgICAgICAgICAgICBpbmNsdWRlcyA9IGluY2x1ZGVzWzBdLmluY2x1ZGUgYXMgSW5jbHVkZU9wdGlvbnNbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGluY2x1ZGVzWzBdLmF0dHJpYnV0ZXMgPSBbY29sdW1uXTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRBc3NvY2lhdGlvbihtb2RlbDogdHlwZW9mIE1vZGVsLCBvYmo6IHN0cmluZyk6IEJhc2VBc3NvY2lhdGlvbjxhbnksIGFueT4ge1xuICAgICAgICBjb25zdCBhc3NvY2lhdGlvbnMgPSBnZXRBc3NvY2lhdGlvbnMobW9kZWwucHJvdG90eXBlKTtcblxuICAgICAgICBjb25zdCBhc3NvY2lhdGlvbiA9IGFzc29jaWF0aW9ucy5maW5kKGEgPT4gYS5nZXRBcygpID09PSBvYmopO1xuICAgICAgICBpZiAoIWFzc29jaWF0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBsb2FkIGFzc29jaWF0aW9uIGZvciAke29ian1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXNzb2NpYXRpb247XG4gICAgfVxufVxuIl19
@@ -50,31 +50,45 @@ class SequelizeUtils {
50
50
  return a;
51
51
  }
52
52
  static mergeAttributes(a, b) {
53
- var _a, _b, _c, _d, _e, _f;
53
+ var _a, _b, _c, _d, _e, _f, _g, _h;
54
54
  if (a instanceof Array && b instanceof Array) {
55
55
  return nestjs_common_1.ArrayUtils.uniqueValues([...a, ...b, "id"], x => x);
56
56
  }
57
- else if (a instanceof Array) {
58
- return nestjs_common_1.ArrayUtils.uniqueValues([...a, "id"], x => x);
59
- }
60
- else if (b instanceof Array) {
61
- return nestjs_common_1.ArrayUtils.uniqueValues([...b, "id"], x => x);
62
- }
63
57
  else if (a || b) {
64
58
  const aAttributes = (a !== null && a !== void 0 ? a : {});
65
59
  const bAttributes = (b !== null && b !== void 0 ? b : {});
60
+ if (aAttributes.include && !b) {
61
+ return a;
62
+ }
63
+ if (bAttributes.include && !a) {
64
+ return b;
65
+ }
66
+ if (a instanceof Array) {
67
+ const bAttr = (b !== null && b !== void 0 ? b : {});
68
+ if ((_a = bAttr.include) === null || _a === void 0 ? void 0 : _a.length) {
69
+ return [...a, ...bAttr.include];
70
+ }
71
+ return b ? [...a] : b;
72
+ }
73
+ if (b instanceof Array) {
74
+ const aAttr = (a !== null && a !== void 0 ? a : {});
75
+ if ((_b = aAttr.include) === null || _b === void 0 ? void 0 : _b.length) {
76
+ return [...b, ...aAttr.include];
77
+ }
78
+ return a ? [...b] : a;
79
+ }
66
80
  const result = {};
67
- if ((_a = aAttributes.include) === null || _a === void 0 ? void 0 : _a.length) {
81
+ if ((_c = aAttributes.include) === null || _c === void 0 ? void 0 : _c.length) {
68
82
  result.include = [...aAttributes.include];
69
83
  }
70
- if ((_b = bAttributes.include) === null || _b === void 0 ? void 0 : _b.length) {
71
- result.include = [...((_c = result.include) !== null && _c !== void 0 ? _c : []), ...bAttributes.include];
84
+ if ((_d = bAttributes.include) === null || _d === void 0 ? void 0 : _d.length) {
85
+ result.include = [...((_e = result.include) !== null && _e !== void 0 ? _e : []), ...bAttributes.include];
72
86
  }
73
- if ((_d = aAttributes.exclude) === null || _d === void 0 ? void 0 : _d.length) {
87
+ if ((_f = aAttributes.exclude) === null || _f === void 0 ? void 0 : _f.length) {
74
88
  result.exclude = [...aAttributes.exclude];
75
89
  }
76
- if ((_e = bAttributes.exclude) === null || _e === void 0 ? void 0 : _e.length) {
77
- result.exclude = [...((_f = result.exclude) !== null && _f !== void 0 ? _f : []), ...bAttributes.exclude];
90
+ if ((_g = bAttributes.exclude) === null || _g === void 0 ? void 0 : _g.length) {
91
+ result.exclude = [...((_h = result.exclude) !== null && _h !== void 0 ? _h : []), ...bAttributes.exclude];
78
92
  }
79
93
  if (result.include) {
80
94
  result.include = nestjs_common_1.ArrayUtils.uniqueValues(result.include, x => x);
@@ -271,4 +285,4 @@ class SequelizeUtils {
271
285
  }
272
286
  exports.SequelizeUtils = SequelizeUtils;
273
287
 
274
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9zZXF1ZWxpemUudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNERBQWlFO0FBQ2pFLHlDQVNtQjtBQUNuQiwrREFBNkM7QUFTN0MsTUFBYSxDQUFFLFNBQVEsNEJBQUs7Q0FBRztBQUEvQixjQUErQjtBQUUvQixNQUFhLGNBQWM7SUFDaEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUE0QixFQUFFLGdCQUFnQixHQUFHLEtBQUs7UUFDL0UsSUFBSSxPQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUNuQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLFFBQVEsRUFBRTtZQUN0QixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDOUQ7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFzQixFQUFFLEVBQUUsSUFBc0IsRUFBRSxFQUFFLGdCQUFnQixHQUFHLEtBQUs7O1FBQ3BHLEtBQUssTUFBTSxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkYsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUMvQixNQUFDLE1BQU0sQ0FBQyxPQUE0QixtQ0FBSSxFQUFFLEVBQzFDLE1BQUMsTUFBTSxDQUFDLE9BQTRCLG1DQUFJLEVBQUUsRUFDMUMsZ0JBQWdCLENBQ25CLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7b0JBQy9ELE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDbEY7Z0JBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxLQUFLLEVBQUU7b0JBQ1AsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7aUJBQ3hCO2dCQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFELElBQUksS0FBSyxFQUFFO29CQUNQLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2lCQUN4QjtnQkFDRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFDcEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7aUJBQzFCO2dCQUNELElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO29CQUNwQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztpQkFDMUI7Z0JBQ0QsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQztnQkFDNUUsSUFBSSx5QkFBUyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSx5QkFBUyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDcEcsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFBLE1BQU0sQ0FBQyxRQUFRLG1DQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUM7aUJBQ3hEO2FBQ0o7aUJBQU07Z0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNsQjtTQUNKO1FBRUQsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRU0sTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUF1QixFQUFFLENBQXVCOztRQUMxRSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTtZQUMxQyxPQUFPLDBCQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5RDthQUFNLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTtZQUMzQixPQUFPLDBCQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN4RDthQUFNLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTtZQUMzQixPQUFPLDBCQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN4RDthQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNmLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxhQUFELENBQUMsY0FBRCxDQUFDLEdBQUksRUFBRSxDQUE2QyxDQUFDO1lBQzFFLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxhQUFELENBQUMsY0FBRCxDQUFDLEdBQUksRUFBRSxDQUE2QyxDQUFDO1lBQzFFLE1BQU0sTUFBTSxHQUErQyxFQUFFLENBQUM7WUFFOUQsSUFBSSxNQUFBLFdBQVcsQ0FBQyxPQUFPLDBDQUFFLE1BQU0sRUFBRTtnQkFDN0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzdDO1lBQ0QsSUFBSSxNQUFBLFdBQVcsQ0FBQyxPQUFPLDBDQUFFLE1BQU0sRUFBRTtnQkFDN0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFBLE1BQU0sQ0FBQyxPQUFPLG1DQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3hFO1lBRUQsSUFBSSxNQUFBLFdBQVcsQ0FBQyxPQUFPLDBDQUFFLE1BQU0sRUFBRTtnQkFDN0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzdDO1lBQ0QsSUFBSSxNQUFBLFdBQVcsQ0FBQyxPQUFPLDBDQUFFLE1BQU0sRUFBRTtnQkFDN0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFBLE1BQU0sQ0FBQyxPQUFPLG1DQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3hFO1lBRUQsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUNoQixNQUFNLENBQUMsT0FBTyxHQUFHLDBCQUFVLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwRTtZQUNELElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsTUFBTSxDQUFDLE9BQU8sR0FBRywwQkFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEU7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BDLE9BQU8sU0FBUyxDQUFDO2FBQ3BCO1lBRUQsT0FBTyxNQUE4QixDQUFDO1NBQ3pDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVNLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxTQUErQjtRQUNsRSxJQUFJLFNBQVMsWUFBWSxLQUFLLEVBQUU7WUFDNUIsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUU7Z0JBQ25DLE9BQU8sU0FBUyxDQUFDO2FBQ3BCO1lBQ0QsT0FBTztnQkFDSCxJQUFJO2dCQUNKLEdBQUcsU0FBUzthQUNmLENBQUM7U0FDTDtRQUVELElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUNuQixPQUFPO2dCQUNILE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQzthQUN2RCxDQUFBO1NBQ0o7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFlLEVBQUUsQ0FBZTtRQUNyRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ1YsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQUQsQ0FBQyxjQUFELENBQUMsR0FBSSxFQUFFLEVBQUUsQ0FBQyxhQUFELENBQUMsY0FBRCxDQUFDLEdBQUksRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBUSxFQUFFLENBQVE7UUFDdkMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNULE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFDRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNULE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFFRCxNQUFNLEdBQUcsR0FBZ0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTtZQUNwQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDbEI7YUFBTTtZQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDZjtRQUNELElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTtZQUNwQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDbEI7YUFBTTtZQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDZjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFlO1FBQzVDLFFBQVEsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNwQixLQUFLLE9BQU87Z0JBQ1IsT0FBTyxJQUFJLENBQUMsS0FBWSxDQUFDO1lBRTdCLEtBQUssV0FBVztnQkFDWixPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRW5DLEtBQUssSUFBSTtnQkFDTCxPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQWMsRUFBRSxDQUFDO1lBRTVDLEtBQUssUUFBUTtnQkFDVCxPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQWMsRUFBRSxDQUFDO1lBRS9DLEtBQUssTUFBTTtnQkFDUCxPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQVksRUFBQyxDQUFDO1lBRXpDLEtBQUssZUFBZTtnQkFDaEIsT0FBTyxFQUFFLENBQUMsY0FBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFZLEVBQUMsQ0FBQztZQUUxQyxLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsY0FBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFZLEVBQUMsQ0FBQztZQUV6QyxLQUFLLGtCQUFrQjtnQkFDbkIsT0FBTyxFQUFFLENBQUMsY0FBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFZLEVBQUMsQ0FBQztZQUUxQyxLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsY0FBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFZLEVBQUUsQ0FBQztZQUUvQyxLQUFLLGFBQWE7Z0JBQ2QsT0FBTyxFQUFFLENBQUMsY0FBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFZLEVBQUUsQ0FBQztZQUVsRCxLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsY0FBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO1lBRTdCLEtBQUssYUFBYTtnQkFDZCxPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFFN0IsS0FBSyxhQUFhO2dCQUNkLE9BQU8sRUFBRSxDQUFDLGNBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBRTNDLEtBQUssaUJBQWlCO2dCQUNsQixPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUU5QyxLQUFLLFVBQVU7Z0JBQ1gsT0FBTyxFQUFFLENBQUMsY0FBRSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFFNUMsS0FBSyxjQUFjO2dCQUNmLE9BQU8sRUFBRSxDQUFDLGNBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBRS9DLEtBQUssV0FBVztnQkFDWixPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUUzQyxLQUFLLGVBQWU7Z0JBQ2hCLE9BQU8sRUFBRSxDQUFDLGNBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBRTlDLEtBQUssVUFBVTtnQkFDWCxPQUFPLEVBQUUsQ0FBQztZQUVkLEtBQUssY0FBYztnQkFDZixPQUFPLEVBQUUsQ0FBQyxjQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLG9CQUFvQixDQUFDLFNBQWlCLEVBQUUsSUFBWTtRQUM5RCxPQUFPLElBQUksSUFBSSxJQUFJLFNBQVMsR0FBRyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsU0FBaUIsRUFBRSxJQUF1QjtRQUN2RSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUMxQixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMxQjtRQUNELE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLFNBQVMsSUFBSSxDQUFDO0lBQ3JELENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBaUIsRUFBRSxJQUFjO1FBQzVELE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFTSxNQUFNLENBQUMsNEJBQTRCLENBQUMsS0FBZTtRQUN0RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFvQyxDQUFDLEdBQUcsQ0FBQyxDQUMxSCxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNOLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDUCxPQUFPLENBQUMsQ0FBQzthQUNaO1lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLGlDQUFpQyxDQUFDLEtBQWUsRUFBRSxNQUFnQjtRQUM3RSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ3ZDLE9BQU8sTUFBTTthQUNSLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNSLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNQLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBRUQsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQU0sSUFBSSxDQUFDLElBQW9DLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUcsQ0FBQyxDQUFDO1lBQ0YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ0osTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1AsT0FBTyxDQUFDLENBQUM7YUFDWjtZQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFBO0lBQ1YsQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFRLEVBQUUsSUFBWTtRQUNwRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTlCLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksRUFBRTtZQUNULElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTtnQkFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7b0JBQ2YsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3RCO2dCQUVELE9BQVEsS0FBSyxDQUFDLElBQUksQ0FBZ0I7cUJBQzdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3FCQUN0RCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUU7b0JBQ3JCLElBQUksT0FBTyxZQUFZLEtBQUssRUFBRTt3QkFDMUIsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7cUJBQy9CO29CQUNELE9BQU8sQ0FBQyxHQUFHLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDN0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ2Q7WUFFRCxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1IsT0FBTyxTQUFTLENBQUM7YUFDcEI7WUFFRCxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3hCO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFlLEVBQUUsSUFBWTs7UUFDM0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDeEQsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO2dCQUNkLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFFRCxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBQSxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssbUNBQUksSUFBSSxDQUFDO0lBQ3BELENBQUM7SUFFTSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQWUsRUFBRSxJQUFZOztRQUNwRCxNQUFNLElBQUksR0FBRyxNQUFBLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLG1DQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQztRQUMzRyxPQUFPLENBQUEsTUFBQyxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsSUFBb0MsMENBQUUsR0FBRyxNQUFLLE1BQU0sQ0FBQztJQUN2RSxDQUFDO0lBRU0sTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFlLEVBQUUsS0FBYTtRQUN4RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbEIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdkMsT0FBTyxjQUFjLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RjtRQUVELE9BQU8sS0FBSyxLQUFLLENBQUMsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQzVDLENBQUM7Q0FDSjtBQXRURCx3Q0FzVEMiLCJmaWxlIjoibGliL3NlcXVlbGl6ZS51dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFycmF5VXRpbHMsIFR5cGVVdGlscyB9IGZyb20gXCJAcmVjdXJzeXZlL25lc3Rqcy1jb21tb25cIjtcbmltcG9ydCB7XG4gICAgQWJzdHJhY3REYXRhVHlwZUNvbnN0cnVjdG9yLFxuICAgIEZpbmRBdHRyaWJ1dGVPcHRpb25zLFxuICAgIEluY2x1ZGVhYmxlLFxuICAgIEluY2x1ZGVPcHRpb25zLFxuICAgIE9wLFxuICAgIE9yZGVyLFxuICAgIE9yZGVySXRlbSxcbiAgICBXaGVyZU9wdGlvbnNcbn0gZnJvbSBcInNlcXVlbGl6ZVwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwic2VxdWVsaXplLXR5cGVzY3JpcHRcIjtcbmltcG9ydCB7IFdoZXJlQXR0cmlidXRlSGFzaFZhbHVlIH0gZnJvbSBcInNlcXVlbGl6ZS90eXBlcy9tb2RlbFwiO1xuaW1wb3J0IHsgUnVsZU1vZGVsIH0gZnJvbSBcIi4vZmlsdGVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VvUG9pbnQge1xuICAgIHR5cGU6IFwicG9pbnRcIixcbiAgICBjb29yZGluYXRlczogbnVtYmVyW107XG59XG5cbmV4cG9ydCBjbGFzcyBNIGV4dGVuZHMgTW9kZWwge31cblxuZXhwb3J0IGNsYXNzIFNlcXVlbGl6ZVV0aWxzIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlZHVjZUluY2x1ZGVzKGluY2x1ZGVzOiBJbmNsdWRlT3B0aW9uc1tdW10sIGlnbm9yZUF0dHJpYnV0ZXMgPSBmYWxzZSk6IEluY2x1ZGVhYmxlW10ge1xuICAgICAgICBsZXQgaW5jbHVkZTogSW5jbHVkZU9wdGlvbnNbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgaW5jbHVkZXMpIHtcbiAgICAgICAgICAgIGluY2x1ZGUgPSB0aGlzLm1lcmdlSW5jbHVkZXMoaW5jbHVkZSwgaSwgaWdub3JlQXR0cmlidXRlcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5jbHVkZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1lcmdlSW5jbHVkZXMoYTogSW5jbHVkZU9wdGlvbnNbXSA9IFtdLCBiOiBJbmNsdWRlT3B0aW9uc1tdID0gW10sIGlnbm9yZUF0dHJpYnV0ZXMgPSBmYWxzZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGJDaGlsZCBvZiBiKSB7XG4gICAgICAgICAgICBjb25zdCBhQ2hpbGQgPSBhLmZpbmQodmFsdWUgPT4gdmFsdWUubW9kZWwgPT09IGJDaGlsZC5tb2RlbCAmJiB2YWx1ZS5hcyA9PT0gYkNoaWxkLmFzKTtcbiAgICAgICAgICAgIGlmIChhQ2hpbGQpIHtcbiAgICAgICAgICAgICAgICBhQ2hpbGQuaW5jbHVkZSA9IHRoaXMubWVyZ2VJbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgKGFDaGlsZC5pbmNsdWRlIGFzIEluY2x1ZGVPcHRpb25zW10pID8/IFtdLFxuICAgICAgICAgICAgICAgICAgICAoYkNoaWxkLmluY2x1ZGUgYXMgSW5jbHVkZU9wdGlvbnNbXSkgPz8gW10sXG4gICAgICAgICAgICAgICAgICAgIGlnbm9yZUF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmICgoYUNoaWxkLmF0dHJpYnV0ZXMgfHwgYkNoaWxkLmF0dHJpYnV0ZXMpICYmICFpZ25vcmVBdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGFDaGlsZC5hdHRyaWJ1dGVzID0gdGhpcy5tZXJnZUF0dHJpYnV0ZXMoYUNoaWxkLmF0dHJpYnV0ZXMsIGJDaGlsZC5hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgd2hlcmUgPSB0aGlzLm1lcmdlV2hlcmUoYUNoaWxkLndoZXJlLCBiQ2hpbGQud2hlcmUpO1xuICAgICAgICAgICAgICAgIGlmICh3aGVyZSkge1xuICAgICAgICAgICAgICAgICAgICBhQ2hpbGQud2hlcmUgPSB3aGVyZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JkZXIgPSB0aGlzLm1lcmdlT3JkZXIoYUNoaWxkLm9yZGVyLCBiQ2hpbGQub3JkZXIpO1xuICAgICAgICAgICAgICAgIGlmIChvcmRlcikge1xuICAgICAgICAgICAgICAgICAgICBhQ2hpbGQub3JkZXIgPSBvcmRlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFDaGlsZC5yZXF1aXJlZCB8fCBiQ2hpbGQucmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFDaGlsZC5zZXBhcmF0ZSB8fCBiQ2hpbGQuc2VwYXJhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLnNlcGFyYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYUNoaWxkLnBhcmFub2lkID0gIShhQ2hpbGQucGFyYW5vaWQgPT09IGZhbHNlIHx8IGJDaGlsZC5wYXJhbm9pZCA9PT0gZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChUeXBlVXRpbHMuaXNOb3ROdWxsT3JVbmRlZmluZWQoYUNoaWxkLnN1YlF1ZXJ5KSB8fCBUeXBlVXRpbHMuaXNOb3ROdWxsT3JVbmRlZmluZWQoYkNoaWxkLnN1YlF1ZXJ5KSkge1xuICAgICAgICAgICAgICAgICAgICBhQ2hpbGQuc3ViUXVlcnkgPSBhQ2hpbGQuc3ViUXVlcnkgPz8gYkNoaWxkLnN1YlF1ZXJ5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYS5wdXNoKGJDaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1lcmdlQXR0cmlidXRlcyhhOiBGaW5kQXR0cmlidXRlT3B0aW9ucywgYjogRmluZEF0dHJpYnV0ZU9wdGlvbnMpOiBGaW5kQXR0cmlidXRlT3B0aW9ucyB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgQXJyYXkgJiYgYiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXlVdGlscy51bmlxdWVWYWx1ZXMoWy4uLmEsIC4uLmIsIFwiaWRcIl0sIHggPT4geCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXlVdGlscy51bmlxdWVWYWx1ZXMoWy4uLmEsIFwiaWRcIl0sIHggPT4geCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXlVdGlscy51bmlxdWVWYWx1ZXMoWy4uLmIsIFwiaWRcIl0sIHggPT4geCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYSB8fCBiKSB7XG4gICAgICAgICAgICBjb25zdCBhQXR0cmlidXRlcyA9IChhID8/IHt9KSBhcyB7IGluY2x1ZGU6IHN0cmluZ1tdOyBleGNsdWRlOiBzdHJpbmdbXSB9O1xuICAgICAgICAgICAgY29uc3QgYkF0dHJpYnV0ZXMgPSAoYiA/PyB7fSkgYXMgeyBpbmNsdWRlOiBzdHJpbmdbXTsgZXhjbHVkZTogc3RyaW5nW10gfTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogeyBpbmNsdWRlPzogc3RyaW5nW107IGV4Y2x1ZGU/OiBzdHJpbmdbXSB9ID0ge307XG5cbiAgICAgICAgICAgIGlmIChhQXR0cmlidXRlcy5pbmNsdWRlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuaW5jbHVkZSA9IFsuLi5hQXR0cmlidXRlcy5pbmNsdWRlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiQXR0cmlidXRlcy5pbmNsdWRlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuaW5jbHVkZSA9IFsuLi4ocmVzdWx0LmluY2x1ZGUgPz8gW10pLCAuLi5iQXR0cmlidXRlcy5pbmNsdWRlXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGFBdHRyaWJ1dGVzLmV4Y2x1ZGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5leGNsdWRlID0gWy4uLmFBdHRyaWJ1dGVzLmV4Y2x1ZGVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJBdHRyaWJ1dGVzLmV4Y2x1ZGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5leGNsdWRlID0gWy4uLihyZXN1bHQuZXhjbHVkZSA/PyBbXSksIC4uLmJBdHRyaWJ1dGVzLmV4Y2x1ZGVdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVzdWx0LmluY2x1ZGUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuaW5jbHVkZSA9IEFycmF5VXRpbHMudW5pcXVlVmFsdWVzKHJlc3VsdC5pbmNsdWRlLCB4ID0+IHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlc3VsdC5leGNsdWRlKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmV4Y2x1ZGUgPSBBcnJheVV0aWxzLnVuaXF1ZVZhbHVlcyhyZXN1bHQuZXhjbHVkZSwgeCA9PiB4KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFyZXN1bHQuaW5jbHVkZSAmJiAhcmVzdWx0LmV4Y2x1ZGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIEZpbmRBdHRyaWJ1dGVPcHRpb25zO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBlbnN1cmVBdHRyaWJ1dGVzVmFsaWRpdHkoYXR0cmlidXRlOiBGaW5kQXR0cmlidXRlT3B0aW9ucyk6IEZpbmRBdHRyaWJ1dGVPcHRpb25zIHtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlLmZpbmQoKHgpID0+IHggPT09IFwiaWRcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBcImlkXCIsXG4gICAgICAgICAgICAgICAgLi4uYXR0cmlidXRlXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGF0dHJpYnV0ZS5leGNsdWRlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGV4Y2x1ZGU6IGF0dHJpYnV0ZS5leGNsdWRlLmZpbHRlcigoeCkgPT4geCAhPT0gXCJpZFwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1lcmdlV2hlcmUoYTogV2hlcmVPcHRpb25zLCBiOiBXaGVyZU9wdGlvbnMpOiBXaGVyZU9wdGlvbnMge1xuICAgICAgICBpZiAoIWEgJiYgIWIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGEgPz8ge30sIGIgPz8ge30pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbWVyZ2VPcmRlcihhOiBPcmRlciwgYjogT3JkZXIpOiBPcmRlciB7XG4gICAgICAgIGlmICghYSAmJiAhYikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGEgJiYgIWIpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYSAmJiBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlczogT3JkZXJJdGVtW10gPSBbXTtcbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgcmVzLnB1c2goLi4uYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaChhKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXMucHVzaCguLi5iKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZW5lcmF0ZVdoZXJlVmFsdWUocnVsZTogUnVsZU1vZGVsKTogV2hlcmVBdHRyaWJ1dGVIYXNoVmFsdWU8YW55PiB7XG4gICAgICAgIHN3aXRjaCAocnVsZS5vcGVyYXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgXCJlcXVhbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBydWxlLnZhbHVlIGFzIGFueTtcblxuICAgICAgICAgICAgY2FzZSBcIm5vdF9lcXVhbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5uZV06IHJ1bGUudmFsdWUgfTtcblxuICAgICAgICAgICAgY2FzZSBcImluXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLmluXTogcnVsZS52YWx1ZSBhcyBhbnlbXSB9O1xuXG4gICAgICAgICAgICBjYXNlIFwibm90X2luXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLm5vdEluXTogcnVsZS52YWx1ZSBhcyBhbnlbXSB9O1xuXG4gICAgICAgICAgICBjYXNlIFwibGVzc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5sdF06IHJ1bGUudmFsdWUgYXMgYW55fTtcblxuICAgICAgICAgICAgY2FzZSBcImxlc3Nfb3JfZXF1YWxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubHRlXTogcnVsZS52YWx1ZSBhcyBhbnl9O1xuXG4gICAgICAgICAgICBjYXNlIFwiZ3JlYXRlclwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5ndF06IHJ1bGUudmFsdWUgYXMgYW55fTtcblxuICAgICAgICAgICAgY2FzZSBcImdyZWF0ZXJfb3JfZXF1YWxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AuZ3RlXTogcnVsZS52YWx1ZSBhcyBhbnl9O1xuXG4gICAgICAgICAgICBjYXNlIFwiYmV0d2VlblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5iZXR3ZWVuXTogcnVsZS52YWx1ZSBhcyBhbnkgfTtcblxuICAgICAgICAgICAgY2FzZSBcIm5vdF9iZXR3ZWVuXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLm5vdEJldHdlZW5dOiBydWxlLnZhbHVlIGFzIGFueSB9O1xuXG4gICAgICAgICAgICBjYXNlIFwiaXNfbnVsbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5lcV06IG51bGwgfTtcblxuICAgICAgICAgICAgY2FzZSBcImlzX25vdF9udWxsXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLm5lXTogbnVsbCB9O1xuXG4gICAgICAgICAgICBjYXNlIFwiYmVnaW5zX3dpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubGlrZV06IGAke3J1bGUudmFsdWV9JWAgfTtcblxuICAgICAgICAgICAgY2FzZSBcIm5vdF9iZWdpbnNfd2l0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5ub3RMaWtlXTogYCR7cnVsZS52YWx1ZX0lYCB9O1xuXG4gICAgICAgICAgICBjYXNlIFwiY29udGFpbnNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubGlrZV06IGAlJHtydWxlLnZhbHVlfSVgIH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJub3RfY29udGFpbnNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3Aubm90TGlrZV06IGAlJHtydWxlLnZhbHVlfSVgIH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJlbmRzX3dpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubGlrZV06IGAlJHtydWxlLnZhbHVlfWAgfTtcblxuICAgICAgICAgICAgY2FzZSBcIm5vdF9lbmRzX3dpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3Aubm90TGlrZV06IGAlJHtydWxlLnZhbHVlfWAgfTtcblxuICAgICAgICAgICAgY2FzZSBcImlzX2VtcHR5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG5cbiAgICAgICAgICAgIGNhc2UgXCJpc19ub3RfZW1wdHlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubmVdOiBcIlwiIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEF0dHJpYnV0ZUZ1bGxOYW1lKGF0dHJpYnV0ZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGAkJHtwYXRofS4ke2F0dHJpYnV0ZX0kYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldExpdGVyYWxGdWxsTmFtZShhdHRyaWJ1dGU6IHN0cmluZywgcGF0aDogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBwYXRoID0gcGF0aC5zcGxpdChcIi5cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGBcXGAke3BhdGguam9pbihcIi0+XCIpfVxcYC5cXGAke2F0dHJpYnV0ZX1cXGBgO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0T3JkZXJGdWxsTmFtZShhdHRyaWJ1dGU6IHN0cmluZywgcGF0aDogc3RyaW5nW10pIHtcbiAgICAgICAgcmV0dXJuIGAke3BhdGguam9pbihcIi0+XCIpfS4ke2F0dHJpYnV0ZX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TW9kZWxTZWFyY2hhYmxlQXR0cmlidXRlcyhtb2RlbDogdHlwZW9mIE0pOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhtb2RlbC5yYXdBdHRyaWJ1dGVzKS5maWx0ZXIoXG4gICAgICAgICAgICBhID0+ICFbXCJEQVRFXCIsIFwiREFURU9OTFlcIiwgXCJWSVJUVUFMXCJdLnNvbWUodCA9PiB0ID09PSAobW9kZWwucmF3QXR0cmlidXRlc1thXS50eXBlIGFzIEFic3RyYWN0RGF0YVR5cGVDb25zdHJ1Y3Rvcikua2V5KVxuICAgICAgICApLm1hcCh4ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBtb2RlbC5yYXdBdHRyaWJ1dGVzW3hdO1xuICAgICAgICAgICAgaWYgKCFhdHRyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYXR0ci5maWVsZCA/IGF0dHIuZmllbGQgOiB4O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldE1vZGVsU2VhcmNoYWJsZUZpZWxkQXR0cmlidXRlcyhtb2RlbDogdHlwZW9mIE0sIGZpZWxkczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBtb2RlbC5yYXdBdHRyaWJ1dGVzO1xuICAgICAgICByZXR1cm4gZmllbGRzXG4gICAgICAgICAgICAuZmlsdGVyKHggPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBhdHRyaWJ1dGVzW3hdO1xuICAgICAgICAgICAgICAgIGlmICghYXR0cikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuICFbXCJEQVRFXCIsIFwiREFURU9OTFlcIiwgXCJWSVJUVUFMXCJdLnNvbWUodCA9PiB0ID09PSAoYXR0ci50eXBlIGFzIEFic3RyYWN0RGF0YVR5cGVDb25zdHJ1Y3Rvcikua2V5KTtcbiAgICAgICAgICAgIH0pLlxuICAgICAgICAgICAgbWFwKHggPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBhdHRyaWJ1dGVzW3hdO1xuICAgICAgICAgICAgICAgIGlmICghYXR0cikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYXR0ci5maWVsZCA/IGF0dHIuZmllbGQgOiB4O1xuICAgICAgICAgICAgfSlcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlZHVjZU1vZGVsRnJvbVBhdGgobW9kZWw6IE0sIHBhdGg6IHN0cmluZykge1xuICAgICAgICBjb25zdCBzdGVwcyA9IHBhdGguc3BsaXQoXCIuXCIpO1xuXG4gICAgICAgIGxldCBzdGVwID0gc3RlcHMuc2hpZnQoKTtcbiAgICAgICAgd2hpbGUgKHN0ZXApIHtcbiAgICAgICAgICAgIGlmIChtb2RlbFtzdGVwXSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzdGVwcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZGVsW3N0ZXBdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAobW9kZWxbc3RlcF0gYXMgQXJyYXk8YW55PilcbiAgICAgICAgICAgICAgICAgICAgLm1hcCh4ID0+IHRoaXMucmVkdWNlTW9kZWxGcm9tUGF0aCh4LCBzdGVwcy5qb2luKFwiLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGFsbCwgY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbLi4uYWxsLCAuLi5jdXJyZW50XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbLi4uYWxsLCBjdXJyZW50XTtcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtb2RlbCA9IG1vZGVsW3N0ZXBdO1xuICAgICAgICAgICAgaWYgKCFtb2RlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0ZXAgPSBzdGVwcy5zaGlmdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1vZGVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmluZENvbHVtbkZpZWxkTmFtZShtb2RlbDogdHlwZW9mIE0sIG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gT2JqZWN0LmtleXMobW9kZWwucmF3QXR0cmlidXRlcykuZmluZCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSBuYW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBtb2RlbC5yYXdBdHRyaWJ1dGVzW2tleV0uZmllbGQgPT09IG5hbWU7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbW9kZWwucmF3QXR0cmlidXRlc1tmaWVsZF0uZmllbGQgPz8gbmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzQ29sdW1uSnNvbihtb2RlbDogdHlwZW9mIE0sIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBhdHRyID0gbW9kZWwucmF3QXR0cmlidXRlc1tuYW1lXSA/PyBPYmplY3QudmFsdWVzKG1vZGVsLnJhd0F0dHJpYnV0ZXMpLmZpbmQoKHgpID0+IHguZmllbGQgPT09IG5hbWUpO1xuICAgICAgICByZXR1cm4gKGF0dHI/LnR5cGUgYXMgQWJzdHJhY3REYXRhVHlwZUNvbnN0cnVjdG9yKT8ua2V5ID09PSBcIkpTT05cIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEdyb3VwTGl0ZXJhbChtb2RlbDogdHlwZW9mIE0sIGdyb3VwOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBpdGVtcyA9IGdyb3VwLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgcmV0dXJuIFNlcXVlbGl6ZVV0aWxzLmdldExpdGVyYWxGdWxsTmFtZShjb2x1bW4sIGl0ZW1zLnNsaWNlKDAsIGl0ZW1zLmxlbmd0aCAtIDEpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBgXFxgJHttb2RlbC5uYW1lfVxcYC5cXGAke2dyb3VwfVxcYGA7XG4gICAgfVxufVxuIl19
288
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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Q0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQzNHLE9BQU8sQ0FBQSxNQUFDLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxJQUFvQywwQ0FBRSxHQUFHLE1BQUssTUFBTSxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQWUsRUFBRSxLQUFhO1FBQ3hELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNsQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2QyxPQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RGO1FBRUQsT0FBTyxLQUFLLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUM7SUFDNUMsQ0FBQztDQUNKO0FBOVVELHdDQThVQyIsImZpbGUiOiJsaWIvc2VxdWVsaXplLnV0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJyYXlVdGlscywgVHlwZVV0aWxzIH0gZnJvbSBcIkByZWN1cnN5dmUvbmVzdGpzLWNvbW1vblwiO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdERhdGFUeXBlQ29uc3RydWN0b3IsXG4gICAgRmluZEF0dHJpYnV0ZU9wdGlvbnMsXG4gICAgSW5jbHVkZWFibGUsXG4gICAgSW5jbHVkZU9wdGlvbnMsXG4gICAgT3AsXG4gICAgT3JkZXIsXG4gICAgT3JkZXJJdGVtLFxuICAgIFdoZXJlT3B0aW9uc1xufSBmcm9tIFwic2VxdWVsaXplXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJzZXF1ZWxpemUtdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgUHJvamVjdGlvbkFsaWFzLCBXaGVyZUF0dHJpYnV0ZUhhc2hWYWx1ZSB9IGZyb20gXCJzZXF1ZWxpemUvdHlwZXMvbW9kZWxcIjtcbmltcG9ydCB7IFJ1bGVNb2RlbCB9IGZyb20gXCIuL2ZpbHRlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlb1BvaW50IHtcbiAgICB0eXBlOiBcInBvaW50XCIsXG4gICAgY29vcmRpbmF0ZXM6IG51bWJlcltdO1xufVxuXG5leHBvcnQgY2xhc3MgTSBleHRlbmRzIE1vZGVsIHt9XG5cbmV4cG9ydCBjbGFzcyBTZXF1ZWxpemVVdGlscyB7XG4gICAgcHVibGljIHN0YXRpYyByZWR1Y2VJbmNsdWRlcyhpbmNsdWRlczogSW5jbHVkZU9wdGlvbnNbXVtdLCBpZ25vcmVBdHRyaWJ1dGVzID0gZmFsc2UpOiBJbmNsdWRlYWJsZVtdIHtcbiAgICAgICAgbGV0IGluY2x1ZGU6IEluY2x1ZGVPcHRpb25zW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIGluY2x1ZGVzKSB7XG4gICAgICAgICAgICBpbmNsdWRlID0gdGhpcy5tZXJnZUluY2x1ZGVzKGluY2x1ZGUsIGksIGlnbm9yZUF0dHJpYnV0ZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluY2x1ZGU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtZXJnZUluY2x1ZGVzKGE6IEluY2x1ZGVPcHRpb25zW10gPSBbXSwgYjogSW5jbHVkZU9wdGlvbnNbXSA9IFtdLCBpZ25vcmVBdHRyaWJ1dGVzID0gZmFsc2UpIHtcbiAgICAgICAgZm9yIChjb25zdCBiQ2hpbGQgb2YgYikge1xuICAgICAgICAgICAgY29uc3QgYUNoaWxkID0gYS5maW5kKHZhbHVlID0+IHZhbHVlLm1vZGVsID09PSBiQ2hpbGQubW9kZWwgJiYgdmFsdWUuYXMgPT09IGJDaGlsZC5hcyk7XG4gICAgICAgICAgICBpZiAoYUNoaWxkKSB7XG4gICAgICAgICAgICAgICAgYUNoaWxkLmluY2x1ZGUgPSB0aGlzLm1lcmdlSW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgIChhQ2hpbGQuaW5jbHVkZSBhcyBJbmNsdWRlT3B0aW9uc1tdKSA/PyBbXSxcbiAgICAgICAgICAgICAgICAgICAgKGJDaGlsZC5pbmNsdWRlIGFzIEluY2x1ZGVPcHRpb25zW10pID8/IFtdLFxuICAgICAgICAgICAgICAgICAgICBpZ25vcmVBdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoKGFDaGlsZC5hdHRyaWJ1dGVzIHx8IGJDaGlsZC5hdHRyaWJ1dGVzKSAmJiAhaWdub3JlQXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgICAgICBhQ2hpbGQuYXR0cmlidXRlcyA9IHRoaXMubWVyZ2VBdHRyaWJ1dGVzKGFDaGlsZC5hdHRyaWJ1dGVzLCBiQ2hpbGQuYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHdoZXJlID0gdGhpcy5tZXJnZVdoZXJlKGFDaGlsZC53aGVyZSwgYkNoaWxkLndoZXJlKTtcbiAgICAgICAgICAgICAgICBpZiAod2hlcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLndoZXJlID0gd2hlcmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG9yZGVyID0gdGhpcy5tZXJnZU9yZGVyKGFDaGlsZC5vcmRlciwgYkNoaWxkLm9yZGVyKTtcbiAgICAgICAgICAgICAgICBpZiAob3JkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLm9yZGVyID0gb3JkZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhQ2hpbGQucmVxdWlyZWQgfHwgYkNoaWxkLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGFDaGlsZC5yZXF1aXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhQ2hpbGQuc2VwYXJhdGUgfHwgYkNoaWxkLnNlcGFyYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFDaGlsZC5zZXBhcmF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFDaGlsZC5wYXJhbm9pZCA9ICEoYUNoaWxkLnBhcmFub2lkID09PSBmYWxzZSB8fCBiQ2hpbGQucGFyYW5vaWQgPT09IGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAoVHlwZVV0aWxzLmlzTm90TnVsbE9yVW5kZWZpbmVkKGFDaGlsZC5zdWJRdWVyeSkgfHwgVHlwZVV0aWxzLmlzTm90TnVsbE9yVW5kZWZpbmVkKGJDaGlsZC5zdWJRdWVyeSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLnN1YlF1ZXJ5ID0gYUNoaWxkLnN1YlF1ZXJ5ID8/IGJDaGlsZC5zdWJRdWVyeTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGEucHVzaChiQ2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtZXJnZUF0dHJpYnV0ZXMoYTogRmluZEF0dHJpYnV0ZU9wdGlvbnMsIGI6IEZpbmRBdHRyaWJ1dGVPcHRpb25zKTogRmluZEF0dHJpYnV0ZU9wdGlvbnMge1xuICAgICAgICB0eXBlIEF0dHIgPSB7IGV4Y2x1ZGU/OiBzdHJpbmdbXTsgaW5jbHVkZT86IChzdHJpbmcgfCBQcm9qZWN0aW9uQWxpYXMpW107IH07XG5cbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBiIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheVV0aWxzLnVuaXF1ZVZhbHVlcyhbLi4uYSwgLi4uYiwgXCJpZFwiXSwgeCA9PiB4KTtcbiAgICAgICAgfSBlbHNlIGlmIChhIHx8IGIpIHtcbiAgICAgICAgICAgIGNvbnN0IGFBdHRyaWJ1dGVzID0gKGEgPz8ge30pIGFzIEF0dHI7XG4gICAgICAgICAgICBjb25zdCBiQXR0cmlidXRlcyA9IChiID8/IHt9KSBhcyBBdHRyO1xuXG4gICAgICAgICAgICBpZiAoYUF0dHJpYnV0ZXMuaW5jbHVkZSAmJiAhYikge1xuICAgICAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYkF0dHJpYnV0ZXMuaW5jbHVkZSAmJiAhYSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYkF0dHIgPSAoYiA/PyB7fSkgYXMgQXR0cjtcbiAgICAgICAgICAgICAgICBpZiAoYkF0dHIuaW5jbHVkZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbLi4uYSwgLi4uYkF0dHIuaW5jbHVkZV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGIgPyBbLi4uYV0gOiBiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYUF0dHIgPSAoYSA/PyB7fSkgYXMgQXR0cjtcbiAgICAgICAgICAgICAgICBpZiAoYUF0dHIuaW5jbHVkZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbLi4uYiwgLi4uYUF0dHIuaW5jbHVkZV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGEgPyBbLi4uYl0gOiBhO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IEF0dHIgPSB7fTtcbiAgICAgICAgICAgIGlmIChhQXR0cmlidXRlcy5pbmNsdWRlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuaW5jbHVkZSA9IFsuLi5hQXR0cmlidXRlcy5pbmNsdWRlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiQXR0cmlidXRlcy5pbmNsdWRlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuaW5jbHVkZSA9IFsuLi4ocmVzdWx0LmluY2x1ZGUgPz8gW10pLCAuLi5iQXR0cmlidXRlcy5pbmNsdWRlXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGFBdHRyaWJ1dGVzLmV4Y2x1ZGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5leGNsdWRlID0gWy4uLmFBdHRyaWJ1dGVzLmV4Y2x1ZGVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJBdHRyaWJ1dGVzLmV4Y2x1ZGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5leGNsdWRlID0gWy4uLihyZXN1bHQuZXhjbHVkZSA/PyBbXSksIC4uLmJBdHRyaWJ1dGVzLmV4Y2x1ZGVdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVzdWx0LmluY2x1ZGUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuaW5jbHVkZSA9IEFycmF5VXRpbHMudW5pcXVlVmFsdWVzKHJlc3VsdC5pbmNsdWRlLCB4ID0+IHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlc3VsdC5leGNsdWRlKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmV4Y2x1ZGUgPSBBcnJheVV0aWxzLnVuaXF1ZVZhbHVlcyhyZXN1bHQuZXhjbHVkZSwgeCA9PiB4KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFyZXN1bHQuaW5jbHVkZSAmJiAhcmVzdWx0LmV4Y2x1ZGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIEZpbmRBdHRyaWJ1dGVPcHRpb25zO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBlbnN1cmVBdHRyaWJ1dGVzVmFsaWRpdHkoYXR0cmlidXRlOiBGaW5kQXR0cmlidXRlT3B0aW9ucyk6IEZpbmRBdHRyaWJ1dGVPcHRpb25zIHtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlLmZpbmQoKHgpID0+IHggPT09IFwiaWRcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBcImlkXCIsXG4gICAgICAgICAgICAgICAgLi4uYXR0cmlidXRlXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGF0dHJpYnV0ZS5leGNsdWRlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGV4Y2x1ZGU6IGF0dHJpYnV0ZS5leGNsdWRlLmZpbHRlcigoeCkgPT4geCAhPT0gXCJpZFwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1lcmdlV2hlcmUoYTogV2hlcmVPcHRpb25zLCBiOiBXaGVyZU9wdGlvbnMpOiBXaGVyZU9wdGlvbnMge1xuICAgICAgICBpZiAoIWEgJiYgIWIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGEgPz8ge30sIGIgPz8ge30pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbWVyZ2VPcmRlcihhOiBPcmRlciwgYjogT3JkZXIpOiBPcmRlciB7XG4gICAgICAgIGlmICghYSAmJiAhYikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGEgJiYgIWIpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYSAmJiBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlczogT3JkZXJJdGVtW10gPSBbXTtcbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgcmVzLnB1c2goLi4uYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaChhKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXMucHVzaCguLi5iKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZW5lcmF0ZVdoZXJlVmFsdWUocnVsZTogUnVsZU1vZGVsKTogV2hlcmVBdHRyaWJ1dGVIYXNoVmFsdWU8YW55PiB7XG4gICAgICAgIHN3aXRjaCAocnVsZS5vcGVyYXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgXCJlcXVhbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBydWxlLnZhbHVlIGFzIGFueTtcblxuICAgICAgICAgICAgY2FzZSBcIm5vdF9lcXVhbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5uZV06IHJ1bGUudmFsdWUgfTtcblxuICAgICAgICAgICAgY2FzZSBcImluXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLmluXTogcnVsZS52YWx1ZSBhcyBhbnlbXSB9O1xuXG4gICAgICAgICAgICBjYXNlIFwibm90X2luXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLm5vdEluXTogcnVsZS52YWx1ZSBhcyBhbnlbXSB9O1xuXG4gICAgICAgICAgICBjYXNlIFwibGVzc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5sdF06IHJ1bGUudmFsdWUgYXMgYW55fTtcblxuICAgICAgICAgICAgY2FzZSBcImxlc3Nfb3JfZXF1YWxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubHRlXTogcnVsZS52YWx1ZSBhcyBhbnl9O1xuXG4gICAgICAgICAgICBjYXNlIFwiZ3JlYXRlclwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5ndF06IHJ1bGUudmFsdWUgYXMgYW55fTtcblxuICAgICAgICAgICAgY2FzZSBcImdyZWF0ZXJfb3JfZXF1YWxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AuZ3RlXTogcnVsZS52YWx1ZSBhcyBhbnl9O1xuXG4gICAgICAgICAgICBjYXNlIFwiYmV0d2VlblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5iZXR3ZWVuXTogcnVsZS52YWx1ZSBhcyBhbnkgfTtcblxuICAgICAgICAgICAgY2FzZSBcIm5vdF9iZXR3ZWVuXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLm5vdEJldHdlZW5dOiBydWxlLnZhbHVlIGFzIGFueSB9O1xuXG4gICAgICAgICAgICBjYXNlIFwiaXNfbnVsbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5lcV06IG51bGwgfTtcblxuICAgICAgICAgICAgY2FzZSBcImlzX25vdF9udWxsXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLm5lXTogbnVsbCB9O1xuXG4gICAgICAgICAgICBjYXNlIFwiYmVnaW5zX3dpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubGlrZV06IGAke3J1bGUudmFsdWV9JWAgfTtcblxuICAgICAgICAgICAgY2FzZSBcIm5vdF9iZWdpbnNfd2l0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5ub3RMaWtlXTogYCR7cnVsZS52YWx1ZX0lYCB9O1xuXG4gICAgICAgICAgICBjYXNlIFwiY29udGFpbnNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubGlrZV06IGAlJHtydWxlLnZhbHVlfSVgIH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJub3RfY29udGFpbnNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3Aubm90TGlrZV06IGAlJHtydWxlLnZhbHVlfSVgIH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJlbmRzX3dpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubGlrZV06IGAlJHtydWxlLnZhbHVlfWAgfTtcblxuICAgICAgICAgICAgY2FzZSBcIm5vdF9lbmRzX3dpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3Aubm90TGlrZV06IGAlJHtydWxlLnZhbHVlfWAgfTtcblxuICAgICAgICAgICAgY2FzZSBcImlzX2VtcHR5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG5cbiAgICAgICAgICAgIGNhc2UgXCJpc19ub3RfZW1wdHlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubmVdOiBcIlwiIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEF0dHJpYnV0ZUZ1bGxOYW1lKGF0dHJpYnV0ZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGAkJHtwYXRofS4ke2F0dHJpYnV0ZX0kYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldExpdGVyYWxGdWxsTmFtZShhdHRyaWJ1dGU6IHN0cmluZywgcGF0aDogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBwYXRoID0gcGF0aC5zcGxpdChcIi5cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGBcXGAke3BhdGguam9pbihcIi0+XCIpfVxcYC5cXGAke2F0dHJpYnV0ZX1cXGBgO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0T3JkZXJGdWxsTmFtZShhdHRyaWJ1dGU6IHN0cmluZywgcGF0aDogc3RyaW5nW10pIHtcbiAgICAgICAgcmV0dXJuIGAke3BhdGguam9pbihcIi0+XCIpfS4ke2F0dHJpYnV0ZX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TW9kZWxTZWFyY2hhYmxlQXR0cmlidXRlcyhtb2RlbDogdHlwZW9mIE0pOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhtb2RlbC5yYXdBdHRyaWJ1dGVzKS5maWx0ZXIoXG4gICAgICAgICAgICBhID0+ICFbXCJEQVRFXCIsIFwiREFURU9OTFlcIiwgXCJWSVJUVUFMXCJdLnNvbWUodCA9PiB0ID09PSAobW9kZWwucmF3QXR0cmlidXRlc1thXS50eXBlIGFzIEFic3RyYWN0RGF0YVR5cGVDb25zdHJ1Y3Rvcikua2V5KVxuICAgICAgICApLm1hcCh4ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBtb2RlbC5yYXdBdHRyaWJ1dGVzW3hdO1xuICAgICAgICAgICAgaWYgKCFhdHRyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYXR0ci5maWVsZCA/IGF0dHIuZmllbGQgOiB4O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldE1vZGVsU2VhcmNoYWJsZUZpZWxkQXR0cmlidXRlcyhtb2RlbDogdHlwZW9mIE0sIGZpZWxkczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBtb2RlbC5yYXdBdHRyaWJ1dGVzO1xuICAgICAgICByZXR1cm4gZmllbGRzXG4gICAgICAgICAgICAuZmlsdGVyKHggPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBhdHRyaWJ1dGVzW3hdO1xuICAgICAgICAgICAgICAgIGlmICghYXR0cikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuICFbXCJEQVRFXCIsIFwiREFURU9OTFlcIiwgXCJWSVJUVUFMXCJdLnNvbWUodCA9PiB0ID09PSAoYXR0ci50eXBlIGFzIEFic3RyYWN0RGF0YVR5cGVDb25zdHJ1Y3Rvcikua2V5KTtcbiAgICAgICAgICAgIH0pLlxuICAgICAgICAgICAgbWFwKHggPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBhdHRyaWJ1dGVzW3hdO1xuICAgICAgICAgICAgICAgIGlmICghYXR0cikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYXR0ci5maWVsZCA/IGF0dHIuZmllbGQgOiB4O1xuICAgICAgICAgICAgfSlcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlZHVjZU1vZGVsRnJvbVBhdGgobW9kZWw6IE0sIHBhdGg6IHN0cmluZykge1xuICAgICAgICBjb25zdCBzdGVwcyA9IHBhdGguc3BsaXQoXCIuXCIpO1xuXG4gICAgICAgIGxldCBzdGVwID0gc3RlcHMuc2hpZnQoKTtcbiAgICAgICAgd2hpbGUgKHN0ZXApIHtcbiAgICAgICAgICAgIGlmIChtb2RlbFtzdGVwXSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzdGVwcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZGVsW3N0ZXBdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAobW9kZWxbc3RlcF0gYXMgQXJyYXk8YW55PilcbiAgICAgICAgICAgICAgICAgICAgLm1hcCh4ID0+IHRoaXMucmVkdWNlTW9kZWxGcm9tUGF0aCh4LCBzdGVwcy5qb2luKFwiLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGFsbCwgY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbLi4uYWxsLCAuLi5jdXJyZW50XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbLi4uYWxsLCBjdXJyZW50XTtcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtb2RlbCA9IG1vZGVsW3N0ZXBdO1xuICAgICAgICAgICAgaWYgKCFtb2RlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0ZXAgPSBzdGVwcy5zaGlmdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1vZGVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmluZENvbHVtbkZpZWxkTmFtZShtb2RlbDogdHlwZW9mIE0sIG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gT2JqZWN0LmtleXMobW9kZWwucmF3QXR0cmlidXRlcykuZmluZCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSBuYW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBtb2RlbC5yYXdBdHRyaWJ1dGVzW2tleV0uZmllbGQgPT09IG5hbWU7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbW9kZWwucmF3QXR0cmlidXRlc1tmaWVsZF0uZmllbGQgPz8gbmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzQ29sdW1uSnNvbihtb2RlbDogdHlwZW9mIE0sIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBhdHRyID0gbW9kZWwucmF3QXR0cmlidXRlc1tuYW1lXSA/PyBPYmplY3QudmFsdWVzKG1vZGVsLnJhd0F0dHJpYnV0ZXMpLmZpbmQoKHgpID0+IHguZmllbGQgPT09IG5hbWUpO1xuICAgICAgICByZXR1cm4gKGF0dHI/LnR5cGUgYXMgQWJzdHJhY3REYXRhVHlwZUNvbnN0cnVjdG9yKT8ua2V5ID09PSBcIkpTT05cIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEdyb3VwTGl0ZXJhbChtb2RlbDogdHlwZW9mIE0sIGdyb3VwOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBpdGVtcyA9IGdyb3VwLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgcmV0dXJuIFNlcXVlbGl6ZVV0aWxzLmdldExpdGVyYWxGdWxsTmFtZShjb2x1bW4sIGl0ZW1zLnNsaWNlKDAsIGl0ZW1zLmxlbmd0aCAtIDEpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBgXFxgJHttb2RlbC5uYW1lfVxcYC5cXGAke2dyb3VwfVxcYGA7XG4gICAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@recursyve/nestjs-data-filter",
3
- "version": "8.3.3",
3
+ "version": "8.3.6",
4
4
  "description": "NestJs DataFilter library",
5
5
  "main": "index.js",
6
6
  "scripts": {