@recursyve/nestjs-data-filter 8.2.3 → 8.3.0
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/lib/adapters/access-control.adapter.d.ts +1 -1
- package/lib/adapters/access-control.adapter.js +1 -1
- package/lib/filter/operators.d.ts +1 -1
- package/lib/filter/operators.js +1 -1
- package/lib/filter/order-rules/order-rule.d.ts +1 -1
- package/lib/filter/order-rules/order-rule.js +1 -1
- package/lib/sequelize.utils.d.ts +3 -2
- package/lib/sequelize.utils.js +1 -1
- package/package.json +4 -4
|
@@ -22,4 +22,4 @@ class AccessControlAdapter {
|
|
|
22
22
|
}
|
|
23
23
|
exports.AccessControlAdapter = AccessControlAdapter;
|
|
24
24
|
|
|
25
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9hZGFwdGVycy9hY2Nlc3MtY29udHJvbC5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLE1BQWEsc0JBQXNCO0lBSy9CLFlBQW9CLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQW9EO1FBQ3JGLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUc7UUFDYixPQUFPLElBQUksc0JBQXNCLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFhO1FBQy9CLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBWTtRQUNwQyxPQUFPLElBQUksc0JBQXNCLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7Q0FDSjtBQXRCRCx3REFzQkM7QUFFRCxNQUFzQixvQkFBb0I7Q0FFekM7QUFGRCxvREFFQyIsImZpbGUiOiJsaWIvYWRhcHRlcnMvYWNjZXNzLWNvbnRyb2wuYWRhcHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdoZXJlIH0gZnJvbSBcInNlcXVlbGl6ZS90eXBlcy91dGlsc1wiO1xuaW1wb3J0IHsgTSB9IGZyb20gXCIuLi9zZXF1ZWxpemUudXRpbHNcIjtcblxuZXhwb3J0IGNsYXNzIEFjY2Vzc0NvbnRyb2xSZXNvdXJjZXMge1xuICAgIHB1YmxpYyBhbGw/OiBib29sZWFuO1xuICAgIHB1YmxpYyBpZHM/OiBudW1iZXJbXTtcbiAgICBwdWJsaWMgd2hlcmU/OiBXaGVyZTtcblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoeyBhbGwsIGlkcywgd2hlcmUgfTogeyBhbGw/OiBib29sZWFuOyBpZHM/OiBudW1iZXJbXTsgd2hlcmU/OiBXaGVyZSB9KSB7XG4gICAgICAgIHRoaXMuYWxsID0gYWxsO1xuICAgICAgICB0aGlzLmlkcyA9IGlkcztcbiAgICAgICAgdGhpcy53aGVyZSA9IHdoZXJlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWxsKCk6IEFjY2Vzc0NvbnRyb2xSZXNvdXJjZXMge1xuICAgICAgICByZXR1cm4gbmV3IEFjY2Vzc0NvbnRyb2xSZXNvdXJjZXMoeyBhbGw6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tSWRzKGlkczogbnVtYmVyW10pOiBBY2Nlc3NDb250cm9sUmVzb3VyY2VzIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBY2Nlc3NDb250cm9sUmVzb3VyY2VzKHsgaWRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUNvbmRpdGlvbih3aGVyZTogV2hlcmUpOiBBY2Nlc3NDb250cm9sUmVzb3VyY2VzIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBY2Nlc3NDb250cm9sUmVzb3VyY2VzKHsgd2hlcmUgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWNjZXNzQ29udHJvbEFkYXB0ZXIge1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRSZXNvdXJjZXM8VXNlcnM+KG1vZGVsOiB0eXBlb2YgTSwgdXNlcjogVXNlcnMpOiBQcm9taXNlPEFjY2Vzc0NvbnRyb2xSZXNvdXJjZXM+O1xufVxuIl19
|
package/lib/filter/operators.js
CHANGED
|
@@ -48,4 +48,4 @@ exports.DateOperators = [
|
|
|
48
48
|
];
|
|
49
49
|
exports.NullOperators = [FilterOperatorTypes.IsNull, FilterOperatorTypes.IsNotNull];
|
|
50
50
|
|
|
51
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvb3BlcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLElBQVksbUJBcUJYO0FBckJELFdBQVksbUJBQW1CO0lBQzNCLHNDQUFlLENBQUE7SUFDZiw2Q0FBc0IsQ0FBQTtJQUN0QixnQ0FBUyxDQUFBO0lBQ1QsdUNBQWdCLENBQUE7SUFDaEIsb0NBQWEsQ0FBQTtJQUNiLG9EQUE2QixDQUFBO0lBQzdCLDBDQUFtQixDQUFBO0lBQ25CLDBEQUFtQyxDQUFBO0lBQ25DLDBDQUFtQixDQUFBO0lBQ25CLGlEQUEwQixDQUFBO0lBQzFCLHlDQUFrQixDQUFBO0lBQ2xCLGdEQUF5QixDQUFBO0lBQ3pCLGlEQUEwQixDQUFBO0lBQzFCLHdEQUFpQyxDQUFBO0lBQ2pDLDZDQUFzQixDQUFBO0lBQ3RCLG9EQUE2QixDQUFBO0lBQzdCLDRDQUFxQixDQUFBO0lBQ3JCLG1EQUE0QixDQUFBO0lBQzVCLDJDQUFvQixDQUFBO0lBQ3BCLGtEQUEyQixDQUFBO0FBQy9CLENBQUMsRUFyQlcsbUJBQW1CLEdBQW5CLDJCQUFtQixLQUFuQiwyQkFBbUIsUUFxQjlCO0FBV1ksUUFBQSxlQUFlLEdBQTBCLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRW5HLFFBQUEsZUFBZSxHQUEwQjtJQUNsRCxtQkFBbUIsQ0FBQyxLQUFLO0lBQ3pCLG1CQUFtQixDQUFDLFFBQVE7SUFDNUIsbUJBQW1CLENBQUMsUUFBUTtJQUM1QixtQkFBbUIsQ0FBQyxVQUFVO0lBQzlCLG1CQUFtQixDQUFDLGFBQWE7SUFDakMsbUJBQW1CLENBQUMsUUFBUTtJQUM1QixtQkFBbUIsQ0FBQyxXQUFXO0NBQ2xDLENBQUM7QUFFVyxRQUFBLGVBQWUsR0FBMEI7SUFDbEQsR0FBRyx1QkFBZTtJQUNsQixtQkFBbUIsQ0FBQyxPQUFPO0lBQzNCLG1CQUFtQixDQUFDLGNBQWM7SUFDbEMsbUJBQW1CLENBQUMsSUFBSTtJQUN4QixtQkFBbUIsQ0FBQyxXQUFXO0NBQ2xDLENBQUM7QUFFVyxRQUFBLGFBQWEsR0FBMEI7SUFDaEQsR0FBRyx1QkFBZTtJQUNsQixtQkFBbUIsQ0FBQyxPQUFPO0lBQzNCLG1CQUFtQixDQUFDLFVBQVU7Q0FDakMsQ0FBQztBQUVXLFFBQUEsYUFBYSxHQUEwQixDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyIsImZpbGUiOiJsaWIvZmlsdGVyL29wZXJhdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdoZXJlT3B0aW9ucyB9IGZyb20gXCJzZXF1ZWxpemVcIjtcbmltcG9ydCB7IFdoZXJlIH0gZnJvbSBcInNlcXVlbGl6ZS90eXBlcy91dGlsc1wiO1xuXG5leHBvcnQgZW51bSBGaWx0ZXJPcGVyYXRvclR5cGVzIHtcbiAgICBFcXVhbCA9IFwiZXF1YWxcIixcbiAgICBOb3RFcXVhbCA9IFwibm90X2VxdWFsXCIsXG4gICAgSW4gPSBcImluXCIsXG4gICAgTm90SW4gPSBcIm5vdF9pblwiLFxuICAgIExlc3MgPSBcImxlc3NcIixcbiAgICBMZXNzT3JFcXVhbCA9IFwibGVzc19vcl9lcXVhbFwiLFxuICAgIEdyZWF0ZXIgPSBcImdyZWF0ZXJcIixcbiAgICBHcmVhdGVyT3JFcXVhbCA9IFwiZ3JlYXRlcl9vcl9lcXVhbFwiLFxuICAgIEJldHdlZW4gPSBcImJldHdlZW5cIixcbiAgICBOb3RCZXR3ZWVuID0gXCJub3RfYmV0d2VlblwiLFxuICAgIElzTnVsbCA9IFwiaXNfbnVsbFwiLFxuICAgIElzTm90TnVsbCA9IFwiaXNfbm90X251bGxcIixcbiAgICBCZWdpbnNXaXRoID0gXCJiZWdpbnNfd2l0aFwiLFxuICAgIE5vdEJlZ2luc1dpdGggPSBcIm5vdF9iZWdpbnNfd2l0aFwiLFxuICAgIEVuZHNXaXRoID0gXCJlbmRzX3dpdGhcIixcbiAgICBOb3RFbmRzV2l0aCA9IFwibm90X2VuZHNfd2l0aFwiLFxuICAgIENvbnRhaW5zID0gXCJjb250YWluc1wiLFxuICAgIE5vdENvbnRhaW5zID0gXCJub3RfY29udGFpbnNcIixcbiAgICBJc0VtcHR5ID0gXCJpc19lbXB0eVwiLFxuICAgIElzTm90RW1wdHkgPSBcImlzX25vdF9lbXB0eVwiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tT3BlcmF0b3Ige1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB3aGVyZT86IFdoZXJlT3B0aW9ucyB8ICgodmFsdWU6IGFueSkgPT4gV2hlcmVPcHRpb25zKTtcbiAgICBoYXZpbmc/OiBXaGVyZTtcbiAgICBvcGVyYXRvcj86IEZpbHRlck9wZXJhdG9yVHlwZXM7XG59XG5cbmV4cG9ydCB0eXBlIEZpbHRlck9wZXJhdG9ycyA9IEZpbHRlck9wZXJhdG9yVHlwZXMgfCBzdHJpbmc7XG5cbmV4cG9ydCBjb25zdCBTZWxlY3RPcGVyYXRvcnM6IEZpbHRlck9wZXJhdG9yVHlwZXNbXSA9IFtGaWx0ZXJPcGVyYXRvclR5cGVzLkVxdWFsLCBGaWx0ZXJPcGVyYXRvclR5cGVzLk5vdEVxdWFsXTtcblxuZXhwb3J0IGNvbnN0IFN0cmluZ09wZXJhdG9yczogRmlsdGVyT3BlcmF0b3JUeXBlc1tdID0gW1xuICAgIEZpbHRlck9wZXJhdG9yVHlwZXMuRXF1YWwsXG4gICAgRmlsdGVyT3BlcmF0b3JUeXBlcy5Ob3RFcXVhbCxcbiAgICBGaWx0ZXJPcGVyYXRvclR5cGVzLkNvbnRhaW5zLFxuICAgIEZpbHRlck9wZXJhdG9yVHlwZXMuQmVnaW5zV2l0aCxcbiAgICBGaWx0ZXJPcGVyYXRvclR5cGVzLk5vdEJlZ2luc1dpdGgsXG4gICAgRmlsdGVyT3BlcmF0b3JUeXBlcy5FbmRzV2l0aCxcbiAgICBGaWx0ZXJPcGVyYXRvclR5cGVzLk5vdEVuZHNXaXRoXG5dO1xuXG5leHBvcnQgY29uc3QgTnVtYmVyT3BlcmF0b3JzOiBGaWx0ZXJPcGVyYXRvclR5cGVzW10gPSBbXG4gICAgLi4uU2VsZWN0T3BlcmF0b3JzLFxuICAgIEZpbHRlck9wZXJhdG9yVHlwZXMuR3JlYXRlcixcbiAgICBGaWx0ZXJPcGVyYXRvclR5cGVzLkdyZWF0ZXJPckVxdWFsLFxuICAgIEZpbHRlck9wZXJhdG9yVHlwZXMuTGVzcyxcbiAgICBGaWx0ZXJPcGVyYXRvclR5cGVzLkxlc3NPckVxdWFsXG5dO1xuXG5leHBvcnQgY29uc3QgRGF0ZU9wZXJhdG9yczogRmlsdGVyT3BlcmF0b3JUeXBlc1tdID0gW1xuICAgIC4uLk51bWJlck9wZXJhdG9ycyxcbiAgICBGaWx0ZXJPcGVyYXRvclR5cGVzLkJldHdlZW4sXG4gICAgRmlsdGVyT3BlcmF0b3JUeXBlcy5Ob3RCZXR3ZWVuXG5dO1xuXG5leHBvcnQgY29uc3QgTnVsbE9wZXJhdG9yczogRmlsdGVyT3BlcmF0b3JUeXBlc1tdID0gW0ZpbHRlck9wZXJhdG9yVHlwZXMuSXNOdWxsLCBGaWx0ZXJPcGVyYXRvclR5cGVzLklzTm90TnVsbF07XG4iXX0=
|
|
@@ -14,4 +14,4 @@ class OrderRule {
|
|
|
14
14
|
}
|
|
15
15
|
exports.OrderRule = OrderRule;
|
|
16
16
|
|
|
17
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvb3JkZXItcnVsZXMvb3JkZXItcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFhQSxNQUFzQixTQUFTO0lBTTNCLFlBQXNCLFVBQW9DO1FBTGxELFVBQUssR0FBRyxZQUFZLENBQUM7UUFNekIsSUFBSSxVQUFVLEVBQUU7WUFDWixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztTQUNuQztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQW1DO1FBQ3RELE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFlBQVksQ0FBQztJQUNoRCxDQUFDO0NBR0o7QUFqQkQsOEJBaUJDIiwiZmlsZSI6ImxpYi9maWx0ZXIvb3JkZXItcnVsZXMvb3JkZXItcnVsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbCwgRm4sIExpdGVyYWwgfSBmcm9tIFwic2VxdWVsaXplL3R5cGVzL3V0aWxzXCI7XG5cbmV4cG9ydCB0eXBlIE9yZGVySXRlbUNvbHVtbiA9IHN0cmluZyB8IENvbCB8IEZuIHwgTGl0ZXJhbDtcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlT3JkZXJSdWxlRGVmaW5pdGlvbiB7XG4gICAgYXR0cmlidXRlOiBzdHJpbmc7XG4gICAgcGF0aD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmRlclJ1bGVEZWZpbml0aW9uIGV4dGVuZHMgQmFzZU9yZGVyUnVsZURlZmluaXRpb24ge1xuICAgIGdldE9yZGVyT3B0aW9uKCk6IE9yZGVySXRlbUNvbHVtbjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE9yZGVyUnVsZSBpbXBsZW1lbnRzIE9yZGVyUnVsZURlZmluaXRpb24ge1xuICAgIHByaXZhdGUgX3R5cGUgPSBcIm9yZGVyX3J1bGVcIjtcblxuICAgIHB1YmxpYyBhdHRyaWJ1dGU6IHN0cmluZztcbiAgICBwdWJsaWMgcGF0aD86IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihkZWZpbml0aW9uPzogQmFzZU9yZGVyUnVsZURlZmluaXRpb24pIHtcbiAgICAgICAgaWYgKGRlZmluaXRpb24pIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZGVmaW5pdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHZhbGlkYXRlKGRlZmluaXRpb246IEJhc2VPcmRlclJ1bGVEZWZpbml0aW9uKSB7XG4gICAgICAgIHJldHVybiBkZWZpbml0aW9uW1wiX3R5cGVcIl0gPT09IFwib3JkZXJfcnVsZVwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRPcmRlck9wdGlvbigpOiBPcmRlckl0ZW1Db2x1bW47XG59XG4iXX0=
|
package/lib/sequelize.utils.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { FindAttributeOptions, Includeable, IncludeOptions, Order, WhereOptions
|
|
1
|
+
import { FindAttributeOptions, Includeable, IncludeOptions, Order, WhereOptions } from "sequelize";
|
|
2
2
|
import { Model } from "sequelize-typescript";
|
|
3
|
+
import { WhereAttributeHashValue } from "sequelize/types/model";
|
|
3
4
|
import { RuleModel } from "./filter";
|
|
4
5
|
export interface GeoPoint {
|
|
5
6
|
type: "point";
|
|
@@ -14,7 +15,7 @@ export declare class SequelizeUtils {
|
|
|
14
15
|
static ensureAttributesValidity(attribute: FindAttributeOptions): FindAttributeOptions;
|
|
15
16
|
static mergeWhere(a: WhereOptions, b: WhereOptions): WhereOptions;
|
|
16
17
|
static mergeOrder(a: Order, b: Order): Order;
|
|
17
|
-
static generateWhereValue(rule: RuleModel):
|
|
18
|
+
static generateWhereValue(rule: RuleModel): WhereAttributeHashValue<any>;
|
|
18
19
|
static getAttributeFullName(attribute: string, path: string): string;
|
|
19
20
|
static getLiteralFullName(attribute: string, path: string | string[]): string;
|
|
20
21
|
static getOrderFullName(attribute: string, path: string[]): string;
|
package/lib/sequelize.utils.js
CHANGED
|
@@ -271,4 +271,4 @@ class SequelizeUtils {
|
|
|
271
271
|
}
|
|
272
272
|
exports.SequelizeUtils = SequelizeUtils;
|
|
273
273
|
|
|
274
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,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S0FBSyxLQUFLLENBQUMsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQzVDLENBQUM7Q0FDSjtBQXRURCx3Q0FzVEMiLCJmaWxlIjoibGliL3NlcXVlbGl6ZS51dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFycmF5VXRpbHMsIFR5cGVVdGlscyB9IGZyb20gXCJAcmVjdXJzeXZlL25lc3Rqcy1jb21tb25cIjtcbmltcG9ydCB7XG4gICAgQWJzdHJhY3REYXRhVHlwZUNvbnN0cnVjdG9yLFxuICAgIEZpbmRBdHRyaWJ1dGVPcHRpb25zLFxuICAgIEluY2x1ZGVhYmxlLFxuICAgIEluY2x1ZGVPcHRpb25zLFxuICAgIE9wLFxuICAgIE9yZGVyLFxuICAgIE9yZGVySXRlbSxcbiAgICBXaGVyZU9wdGlvbnMsXG4gICAgV2hlcmVWYWx1ZVxufSBmcm9tIFwic2VxdWVsaXplXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJzZXF1ZWxpemUtdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgUnVsZU1vZGVsIH0gZnJvbSBcIi4vZmlsdGVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VvUG9pbnQge1xuICAgIHR5cGU6IFwicG9pbnRcIixcbiAgICBjb29yZGluYXRlczogbnVtYmVyW107XG59XG5cbmV4cG9ydCBjbGFzcyBNIGV4dGVuZHMgTW9kZWwge31cblxuZXhwb3J0IGNsYXNzIFNlcXVlbGl6ZVV0aWxzIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlZHVjZUluY2x1ZGVzKGluY2x1ZGVzOiBJbmNsdWRlT3B0aW9uc1tdW10sIGlnbm9yZUF0dHJpYnV0ZXMgPSBmYWxzZSk6IEluY2x1ZGVhYmxlW10ge1xuICAgICAgICBsZXQgaW5jbHVkZTogSW5jbHVkZU9wdGlvbnNbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgaW5jbHVkZXMpIHtcbiAgICAgICAgICAgIGluY2x1ZGUgPSB0aGlzLm1lcmdlSW5jbHVkZXMoaW5jbHVkZSwgaSwgaWdub3JlQXR0cmlidXRlcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5jbHVkZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1lcmdlSW5jbHVkZXMoYTogSW5jbHVkZU9wdGlvbnNbXSA9IFtdLCBiOiBJbmNsdWRlT3B0aW9uc1tdID0gW10sIGlnbm9yZUF0dHJpYnV0ZXMgPSBmYWxzZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGJDaGlsZCBvZiBiKSB7XG4gICAgICAgICAgICBjb25zdCBhQ2hpbGQgPSBhLmZpbmQodmFsdWUgPT4gdmFsdWUubW9kZWwgPT09IGJDaGlsZC5tb2RlbCAmJiB2YWx1ZS5hcyA9PT0gYkNoaWxkLmFzKTtcbiAgICAgICAgICAgIGlmIChhQ2hpbGQpIHtcbiAgICAgICAgICAgICAgICBhQ2hpbGQuaW5jbHVkZSA9IHRoaXMubWVyZ2VJbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgKGFDaGlsZC5pbmNsdWRlIGFzIEluY2x1ZGVPcHRpb25zW10pID8/IFtdLFxuICAgICAgICAgICAgICAgICAgICAoYkNoaWxkLmluY2x1ZGUgYXMgSW5jbHVkZU9wdGlvbnNbXSkgPz8gW10sXG4gICAgICAgICAgICAgICAgICAgIGlnbm9yZUF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmICgoYUNoaWxkLmF0dHJpYnV0ZXMgfHwgYkNoaWxkLmF0dHJpYnV0ZXMpICYmICFpZ25vcmVBdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGFDaGlsZC5hdHRyaWJ1dGVzID0gdGhpcy5tZXJnZUF0dHJpYnV0ZXMoYUNoaWxkLmF0dHJpYnV0ZXMsIGJDaGlsZC5hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgd2hlcmUgPSB0aGlzLm1lcmdlV2hlcmUoYUNoaWxkLndoZXJlLCBiQ2hpbGQud2hlcmUpO1xuICAgICAgICAgICAgICAgIGlmICh3aGVyZSkge1xuICAgICAgICAgICAgICAgICAgICBhQ2hpbGQud2hlcmUgPSB3aGVyZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JkZXIgPSB0aGlzLm1lcmdlT3JkZXIoYUNoaWxkLm9yZGVyLCBiQ2hpbGQub3JkZXIpO1xuICAgICAgICAgICAgICAgIGlmIChvcmRlcikge1xuICAgICAgICAgICAgICAgICAgICBhQ2hpbGQub3JkZXIgPSBvcmRlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFDaGlsZC5yZXF1aXJlZCB8fCBiQ2hpbGQucmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFDaGlsZC5zZXBhcmF0ZSB8fCBiQ2hpbGQuc2VwYXJhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLnNlcGFyYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYUNoaWxkLnBhcmFub2lkID0gIShhQ2hpbGQucGFyYW5vaWQgPT09IGZhbHNlIHx8IGJDaGlsZC5wYXJhbm9pZCA9PT0gZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChUeXBlVXRpbHMuaXNOb3ROdWxsT3JVbmRlZmluZWQoYUNoaWxkLnN1YlF1ZXJ5KSB8fCBUeXBlVXRpbHMuaXNOb3ROdWxsT3JVbmRlZmluZWQoYkNoaWxkLnN1YlF1ZXJ5KSkge1xuICAgICAgICAgICAgICAgICAgICBhQ2hpbGQuc3ViUXVlcnkgPSBhQ2hpbGQuc3ViUXVlcnkgPz8gYkNoaWxkLnN1YlF1ZXJ5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYS5wdXNoKGJDaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1lcmdlQXR0cmlidXRlcyhhOiBGaW5kQXR0cmlidXRlT3B0aW9ucywgYjogRmluZEF0dHJpYnV0ZU9wdGlvbnMpOiBGaW5kQXR0cmlidXRlT3B0aW9ucyB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgQXJyYXkgJiYgYiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXlVdGlscy51bmlxdWVWYWx1ZXMoWy4uLmEsIC4uLmIsIFwiaWRcIl0sIHggPT4geCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXlVdGlscy51bmlxdWVWYWx1ZXMoWy4uLmEsIFwiaWRcIl0sIHggPT4geCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXlVdGlscy51bmlxdWVWYWx1ZXMoWy4uLmIsIFwiaWRcIl0sIHggPT4geCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYSB8fCBiKSB7XG4gICAgICAgICAgICBjb25zdCBhQXR0cmlidXRlcyA9IChhID8/IHt9KSBhcyB7IGluY2x1ZGU6IHN0cmluZ1tdOyBleGNsdWRlOiBzdHJpbmdbXSB9O1xuICAgICAgICAgICAgY29uc3QgYkF0dHJpYnV0ZXMgPSAoYiA/PyB7fSkgYXMgeyBpbmNsdWRlOiBzdHJpbmdbXTsgZXhjbHVkZTogc3RyaW5nW10gfTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogeyBpbmNsdWRlPzogc3RyaW5nW107IGV4Y2x1ZGU/OiBzdHJpbmdbXSB9ID0ge307XG5cbiAgICAgICAgICAgIGlmIChhQXR0cmlidXRlcy5pbmNsdWRlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuaW5jbHVkZSA9IFsuLi5hQXR0cmlidXRlcy5pbmNsdWRlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiQXR0cmlidXRlcy5pbmNsdWRlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuaW5jbHVkZSA9IFsuLi4ocmVzdWx0LmluY2x1ZGUgPz8gW10pLCAuLi5iQXR0cmlidXRlcy5pbmNsdWRlXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGFBdHRyaWJ1dGVzLmV4Y2x1ZGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5leGNsdWRlID0gWy4uLmFBdHRyaWJ1dGVzLmV4Y2x1ZGVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJBdHRyaWJ1dGVzLmV4Y2x1ZGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5leGNsdWRlID0gWy4uLihyZXN1bHQuZXhjbHVkZSA/PyBbXSksIC4uLmJBdHRyaWJ1dGVzLmV4Y2x1ZGVdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVzdWx0LmluY2x1ZGUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuaW5jbHVkZSA9IEFycmF5VXRpbHMudW5pcXVlVmFsdWVzKHJlc3VsdC5pbmNsdWRlLCB4ID0+IHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlc3VsdC5leGNsdWRlKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmV4Y2x1ZGUgPSBBcnJheVV0aWxzLnVuaXF1ZVZhbHVlcyhyZXN1bHQuZXhjbHVkZSwgeCA9PiB4KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFyZXN1bHQuaW5jbHVkZSAmJiAhcmVzdWx0LmV4Y2x1ZGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIEZpbmRBdHRyaWJ1dGVPcHRpb25zO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBlbnN1cmVBdHRyaWJ1dGVzVmFsaWRpdHkoYXR0cmlidXRlOiBGaW5kQXR0cmlidXRlT3B0aW9ucyk6IEZpbmRBdHRyaWJ1dGVPcHRpb25zIHtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlLmZpbmQoKHgpID0+IHggPT09IFwiaWRcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBcImlkXCIsXG4gICAgICAgICAgICAgICAgLi4uYXR0cmlidXRlXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGF0dHJpYnV0ZS5leGNsdWRlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGV4Y2x1ZGU6IGF0dHJpYnV0ZS5leGNsdWRlLmZpbHRlcigoeCkgPT4geCAhPT0gXCJpZFwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1lcmdlV2hlcmUoYTogV2hlcmVPcHRpb25zLCBiOiBXaGVyZU9wdGlvbnMpOiBXaGVyZU9wdGlvbnMge1xuICAgICAgICBpZiAoIWEgJiYgIWIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGEgPz8ge30sIGIgPz8ge30pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbWVyZ2VPcmRlcihhOiBPcmRlciwgYjogT3JkZXIpOiBPcmRlciB7XG4gICAgICAgIGlmICghYSAmJiAhYikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGEgJiYgIWIpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYSAmJiBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlczogT3JkZXJJdGVtW10gPSBbXTtcbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgcmVzLnB1c2goLi4uYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaChhKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXMucHVzaCguLi5iKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZW5lcmF0ZVdoZXJlVmFsdWUocnVsZTogUnVsZU1vZGVsKTogV2hlcmVWYWx1ZSB7XG4gICAgICAgIHN3aXRjaCAocnVsZS5vcGVyYXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgXCJlcXVhbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBydWxlLnZhbHVlIGFzIGFueTtcblxuICAgICAgICAgICAgY2FzZSBcIm5vdF9lcXVhbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5uZV06IHJ1bGUudmFsdWUgfTtcblxuICAgICAgICAgICAgY2FzZSBcImluXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLmluXTogcnVsZS52YWx1ZSBhcyBhbnlbXSB9O1xuXG4gICAgICAgICAgICBjYXNlIFwibm90X2luXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLm5vdEluXTogcnVsZS52YWx1ZSBhcyBhbnlbXSB9O1xuXG4gICAgICAgICAgICBjYXNlIFwibGVzc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5sdF06IHJ1bGUudmFsdWUgYXMgYW55fTtcblxuICAgICAgICAgICAgY2FzZSBcImxlc3Nfb3JfZXF1YWxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubHRlXTogcnVsZS52YWx1ZSBhcyBhbnl9O1xuXG4gICAgICAgICAgICBjYXNlIFwiZ3JlYXRlclwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5ndF06IHJ1bGUudmFsdWUgYXMgYW55fTtcblxuICAgICAgICAgICAgY2FzZSBcImdyZWF0ZXJfb3JfZXF1YWxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AuZ3RlXTogcnVsZS52YWx1ZSBhcyBhbnl9O1xuXG4gICAgICAgICAgICBjYXNlIFwiYmV0d2VlblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5iZXR3ZWVuXTogcnVsZS52YWx1ZSBhcyBhbnkgfTtcblxuICAgICAgICAgICAgY2FzZSBcIm5vdF9iZXR3ZWVuXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLm5vdEJldHdlZW5dOiBydWxlLnZhbHVlIGFzIGFueSB9O1xuXG4gICAgICAgICAgICBjYXNlIFwiaXNfbnVsbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5lcV06IG51bGwgfTtcblxuICAgICAgICAgICAgY2FzZSBcImlzX25vdF9udWxsXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW09wLm5lXTogbnVsbCB9O1xuXG4gICAgICAgICAgICBjYXNlIFwiYmVnaW5zX3dpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubGlrZV06IGAke3J1bGUudmFsdWV9JWAgfTtcblxuICAgICAgICAgICAgY2FzZSBcIm5vdF9iZWdpbnNfd2l0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IFtPcC5ub3RMaWtlXTogYCR7cnVsZS52YWx1ZX0lYCB9O1xuXG4gICAgICAgICAgICBjYXNlIFwiY29udGFpbnNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubGlrZV06IGAlJHtydWxlLnZhbHVlfSVgIH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJub3RfY29udGFpbnNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3Aubm90TGlrZV06IGAlJHtydWxlLnZhbHVlfSVgIH07XG5cbiAgICAgICAgICAgIGNhc2UgXCJlbmRzX3dpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubGlrZV06IGAlJHtydWxlLnZhbHVlfWAgfTtcblxuICAgICAgICAgICAgY2FzZSBcIm5vdF9lbmRzX3dpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3Aubm90TGlrZV06IGAlJHtydWxlLnZhbHVlfWAgfTtcblxuICAgICAgICAgICAgY2FzZSBcImlzX2VtcHR5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG5cbiAgICAgICAgICAgIGNhc2UgXCJpc19ub3RfZW1wdHlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbT3AubmVdOiBcIlwiIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEF0dHJpYnV0ZUZ1bGxOYW1lKGF0dHJpYnV0ZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGAkJHtwYXRofS4ke2F0dHJpYnV0ZX0kYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldExpdGVyYWxGdWxsTmFtZShhdHRyaWJ1dGU6IHN0cmluZywgcGF0aDogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBwYXRoID0gcGF0aC5zcGxpdChcIi5cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGBcXGAke3BhdGguam9pbihcIi0+XCIpfVxcYC5cXGAke2F0dHJpYnV0ZX1cXGBgO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0T3JkZXJGdWxsTmFtZShhdHRyaWJ1dGU6IHN0cmluZywgcGF0aDogc3RyaW5nW10pIHtcbiAgICAgICAgcmV0dXJuIGAke3BhdGguam9pbihcIi0+XCIpfS4ke2F0dHJpYnV0ZX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TW9kZWxTZWFyY2hhYmxlQXR0cmlidXRlcyhtb2RlbDogdHlwZW9mIE0pOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhtb2RlbC5yYXdBdHRyaWJ1dGVzKS5maWx0ZXIoXG4gICAgICAgICAgICBhID0+ICFbXCJEQVRFXCIsIFwiREFURU9OTFlcIiwgXCJWSVJUVUFMXCJdLnNvbWUodCA9PiB0ID09PSAobW9kZWwucmF3QXR0cmlidXRlc1thXS50eXBlIGFzIEFic3RyYWN0RGF0YVR5cGVDb25zdHJ1Y3Rvcikua2V5KVxuICAgICAgICApLm1hcCh4ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBtb2RlbC5yYXdBdHRyaWJ1dGVzW3hdO1xuICAgICAgICAgICAgaWYgKCFhdHRyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYXR0ci5maWVsZCA/IGF0dHIuZmllbGQgOiB4O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldE1vZGVsU2VhcmNoYWJsZUZpZWxkQXR0cmlidXRlcyhtb2RlbDogdHlwZW9mIE0sIGZpZWxkczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBtb2RlbC5yYXdBdHRyaWJ1dGVzO1xuICAgICAgICByZXR1cm4gZmllbGRzXG4gICAgICAgICAgICAuZmlsdGVyKHggPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBhdHRyaWJ1dGVzW3hdO1xuICAgICAgICAgICAgICAgIGlmICghYXR0cikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuICFbXCJEQVRFXCIsIFwiREFURU9OTFlcIiwgXCJWSVJUVUFMXCJdLnNvbWUodCA9PiB0ID09PSAoYXR0ci50eXBlIGFzIEFic3RyYWN0RGF0YVR5cGVDb25zdHJ1Y3Rvcikua2V5KTtcbiAgICAgICAgICAgIH0pLlxuICAgICAgICAgICAgbWFwKHggPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBhdHRyaWJ1dGVzW3hdO1xuICAgICAgICAgICAgICAgIGlmICghYXR0cikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYXR0ci5maWVsZCA/IGF0dHIuZmllbGQgOiB4O1xuICAgICAgICAgICAgfSlcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlZHVjZU1vZGVsRnJvbVBhdGgobW9kZWw6IE0sIHBhdGg6IHN0cmluZykge1xuICAgICAgICBjb25zdCBzdGVwcyA9IHBhdGguc3BsaXQoXCIuXCIpO1xuXG4gICAgICAgIGxldCBzdGVwID0gc3RlcHMuc2hpZnQoKTtcbiAgICAgICAgd2hpbGUgKHN0ZXApIHtcbiAgICAgICAgICAgIGlmIChtb2RlbFtzdGVwXSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzdGVwcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZGVsW3N0ZXBdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAobW9kZWxbc3RlcF0gYXMgQXJyYXk8YW55PilcbiAgICAgICAgICAgICAgICAgICAgLm1hcCh4ID0+IHRoaXMucmVkdWNlTW9kZWxGcm9tUGF0aCh4LCBzdGVwcy5qb2luKFwiLlwiKSkpXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGFsbCwgY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbLi4uYWxsLCAuLi5jdXJyZW50XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbLi4uYWxsLCBjdXJyZW50XTtcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtb2RlbCA9IG1vZGVsW3N0ZXBdO1xuICAgICAgICAgICAgaWYgKCFtb2RlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0ZXAgPSBzdGVwcy5zaGlmdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1vZGVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmluZENvbHVtbkZpZWxkTmFtZShtb2RlbDogdHlwZW9mIE0sIG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gT2JqZWN0LmtleXMobW9kZWwucmF3QXR0cmlidXRlcykuZmluZCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSBuYW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBtb2RlbC5yYXdBdHRyaWJ1dGVzW2tleV0uZmllbGQgPT09IG5hbWU7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbW9kZWwucmF3QXR0cmlidXRlc1tmaWVsZF0uZmllbGQgPz8gbmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzQ29sdW1uSnNvbihtb2RlbDogdHlwZW9mIE0sIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBhdHRyID0gbW9kZWwucmF3QXR0cmlidXRlc1tuYW1lXSA/PyBPYmplY3QudmFsdWVzKG1vZGVsLnJhd0F0dHJpYnV0ZXMpLmZpbmQoKHgpID0+IHguZmllbGQgPT09IG5hbWUpO1xuICAgICAgICByZXR1cm4gKGF0dHI/LnR5cGUgYXMgQWJzdHJhY3REYXRhVHlwZUNvbnN0cnVjdG9yKT8ua2V5ID09PSBcIkpTT05cIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEdyb3VwTGl0ZXJhbChtb2RlbDogdHlwZW9mIE0sIGdyb3VwOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBpdGVtcyA9IGdyb3VwLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgcmV0dXJuIFNlcXVlbGl6ZVV0aWxzLmdldExpdGVyYWxGdWxsTmFtZShjb2x1bW4sIGl0ZW1zLnNsaWNlKDAsIGl0ZW1zLmxlbmd0aCAtIDEpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBgXFxgJHttb2RlbC5uYW1lfVxcYC5cXGAke2dyb3VwfVxcYGA7XG4gICAgfVxufVxuIl19
|
|
274
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,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S0FBSyxLQUFLLENBQUMsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQzVDLENBQUM7Q0FDSjtBQXRURCx3Q0FzVEMiLCJmaWxlIjoibGliL3NlcXVlbGl6ZS51dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFycmF5VXRpbHMsIFR5cGVVdGlscyB9IGZyb20gXCJAcmVjdXJzeXZlL25lc3Rqcy1jb21tb25cIjtcbmltcG9ydCB7XG4gICAgQWJzdHJhY3REYXRhVHlwZUNvbnN0cnVjdG9yLFxuICAgIEZpbmRBdHRyaWJ1dGVPcHRpb25zLFxuICAgIEluY2x1ZGVhYmxlLFxuICAgIEluY2x1ZGVPcHRpb25zLFxuICAgIE9wLFxuICAgIE9yZGVyLFxuICAgIE9yZGVySXRlbSxcbiAgICBXaGVyZU9wdGlvbnNcbn0gZnJvbSBcInNlcXVlbGl6ZVwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwic2VxdWVsaXplLXR5cGVzY3JpcHRcIjtcbmltcG9ydCB7IFdoZXJlQXR0cmlidXRlSGFzaFZhbHVlIH0gZnJvbSBcInNlcXVlbGl6ZS90eXBlcy9tb2RlbFwiO1xuaW1wb3J0IHsgUnVsZU1vZGVsIH0gZnJvbSBcIi4vZmlsdGVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VvUG9pbnQge1xuICAgIHR5cGU6IFwicG9pbnRcIixcbiAgICBjb29yZGluYXRlczogbnVtYmVyW107XG59XG5cbmV4cG9ydCBjbGFzcyBNIGV4dGVuZHMgTW9kZWwge31cblxuZXhwb3J0IGNsYXNzIFNlcXVlbGl6ZVV0aWxzIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlZHVjZUluY2x1ZGVzKGluY2x1ZGVzOiBJbmNsdWRlT3B0aW9uc1tdW10sIGlnbm9yZUF0dHJpYnV0ZXMgPSBmYWxzZSk6IEluY2x1ZGVhYmxlW10ge1xuICAgICAgICBsZXQgaW5jbHVkZTogSW5jbHVkZU9wdGlvbnNbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgaW5jbHVkZXMpIHtcbiAgICAgICAgICAgIGluY2x1ZGUgPSB0aGlzLm1lcmdlSW5jbHVkZXMoaW5jbHVkZSwgaSwgaWdub3JlQXR0cmlidXRlcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5jbHVkZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1lcmdlSW5jbHVkZXMoYTogSW5jbHVkZU9wdGlvbnNbXSA9IFtdLCBiOiBJbmNsdWRlT3B0aW9uc1tdID0gW10sIGlnbm9yZUF0dHJpYnV0ZXMgPSBmYWxzZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGJDaGlsZCBvZiBiKSB7XG4gICAgICAgICAgICBjb25zdCBhQ2hpbGQgPSBhLmZpbmQodmFsdWUgPT4gdmFsdWUubW9kZWwgPT09IGJDaGlsZC5tb2RlbCAmJiB2YWx1ZS5hcyA9PT0gYkNoaWxkLmFzKTtcbiAgICAgICAgICAgIGlmIChhQ2hpbGQpIHtcbiAgICAgICAgICAgICAgICBhQ2hpbGQuaW5jbHVkZSA9IHRoaXMubWVyZ2VJbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgKGFDaGlsZC5pbmNsdWRlIGFzIEluY2x1ZGVPcHRpb25zW10pID8/IFtdLFxuICAgICAgICAgICAgICAgICAgICAoYkNoaWxkLmluY2x1ZGUgYXMgSW5jbHVkZU9wdGlvbnNbXSkgPz8gW10sXG4gICAgICAgICAgICAgICAgICAgIGlnbm9yZUF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmICgoYUNoaWxkLmF0dHJpYnV0ZXMgfHwgYkNoaWxkLmF0dHJpYnV0ZXMpICYmICFpZ25vcmVBdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGFDaGlsZC5hdHRyaWJ1dGVzID0gdGhpcy5tZXJnZUF0dHJpYnV0ZXMoYUNoaWxkLmF0dHJpYnV0ZXMsIGJDaGlsZC5hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgd2hlcmUgPSB0aGlzLm1lcmdlV2hlcmUoYUNoaWxkLndoZXJlLCBiQ2hpbGQud2hlcmUpO1xuICAgICAgICAgICAgICAgIGlmICh3aGVyZSkge1xuICAgICAgICAgICAgICAgICAgICBhQ2hpbGQud2hlcmUgPSB3aGVyZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JkZXIgPSB0aGlzLm1lcmdlT3JkZXIoYUNoaWxkLm9yZGVyLCBiQ2hpbGQub3JkZXIpO1xuICAgICAgICAgICAgICAgIGlmIChvcmRlcikge1xuICAgICAgICAgICAgICAgICAgICBhQ2hpbGQub3JkZXIgPSBvcmRlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFDaGlsZC5yZXF1aXJlZCB8fCBiQ2hpbGQucmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFDaGlsZC5zZXBhcmF0ZSB8fCBiQ2hpbGQuc2VwYXJhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYUNoaWxkLnNlcGFyYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYUNoaWxkLnBhcmFub2lkID0gIShhQ2hpbGQucGFyYW5vaWQgPT09IGZhbHNlIHx8IGJDaGlsZC5wYXJhbm9pZCA9PT0gZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChUeXBlVXRpbHMuaXNOb3ROdWxsT3JVbmRlZmluZWQoYUNoaWxkLnN1YlF1ZXJ5KSB8fCBUeXBlVXRpbHMuaXNOb3ROdWxsT3JVbmRlZmluZWQoYkNoaWxkLnN1YlF1ZXJ5KSkge1xuICAgICAgICAgICAgICAgICAgICBhQ2hpbGQuc3ViUXVlcnkgPSBhQ2hpbGQuc3ViUXVlcnkgPz8gYkNoaWxkLnN1YlF1ZXJ5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYS5wdXNoKGJDaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1lcmdlQXR0cmlidXRlcyhhOiBGaW5kQXR0cmlidXRlT3B0aW9ucywgYjogRmluZEF0dHJpYnV0ZU9wdGlvbnMpOiBGaW5kQXR0cmlidXRlT3B0aW9ucyB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgQXJyYXkgJiYgYiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXlVdGlscy51bmlxdWVWYWx1ZXMoWy4uLmEsIC4uLmIsIFwiaWRcIl0sIHggPT4geCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXlVdGlscy51bmlxdWVWYWx1ZXMoWy4uLmEsIFwiaWRcIl0sIHggPT4geCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXlVdGlscy51bmlxdWVWYWx1ZXMoWy4uLmIsIFwiaWRcIl0sIHggPT4geCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYSB8fCBiKSB7XG4gICAgICAgICAgICBjb25zdCBhQXR0cmlidXRlcyA9IChhID8/IHt9KSBhcyB7IGluY2x1ZGU6IHN0cmluZ1tdOyBleGNsdWRlOiBzdHJpbmdbXSB9O1xuICAgICAgICAgICAgY29uc3QgYkF0dHJpYnV0ZXMgPSAoYiA/PyB7fSkgYXMgeyBpbmNsdWRlOiBzdHJpbmdbXTsgZXhjbHVkZTogc3RyaW5nW10gfTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogeyBpbmNsdWRlPzogc3RyaW5nW107IGV4Y2x1ZGU/OiBzdHJpbmdbXSB9ID0ge307XG5cbiAgICAgICAgICAgIGlmIChhQXR0cmlidXRlcy5pbmNsdWRlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuaW5jbHVkZSA9IFsuLi5hQXR0cmlidXRlcy5pbmNsdWRlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiQXR0cmlidXRlcy5pbmNsdWRlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuaW5jbHVkZSA9IFsuLi4ocmVzdWx0LmluY2x1ZGUgPz8gW10pLCAuLi5iQXR0cmlidXRlcy5pbmNsdWRlXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGFBdHRyaWJ1dGVzLmV4Y2x1ZGU/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
|
+
"version": "8.3.0",
|
|
4
4
|
"description": "NestJs DataFilter library",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"@nestjs/core": ">=8.0.0",
|
|
24
24
|
"@recursyve/nestjs-common": ">=8.0.0",
|
|
25
25
|
"moment": "^2.29.0",
|
|
26
|
-
"sequelize": ">=6.
|
|
26
|
+
"sequelize": ">=6.19.0",
|
|
27
27
|
"sequelize-typescript": ">=2.1.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"jest": "^27.5.0",
|
|
45
45
|
"reflect-metadata": "^0.1.13",
|
|
46
46
|
"rxjs": "^7.5.2",
|
|
47
|
-
"sequelize": "^6.
|
|
48
|
-
"sequelize-typescript": "^2.1.
|
|
47
|
+
"sequelize": "^6.19.0",
|
|
48
|
+
"sequelize-typescript": "^2.1.3",
|
|
49
49
|
"sqlite3": "^5.0.2",
|
|
50
50
|
"ts-jest": "^27.1.3",
|
|
51
51
|
"ts-node": "^10.4.0",
|