@decaf-ts/decorator-validation 1.7.21 → 1.8.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/README.md +24 -2
- package/dist/decorator-validation.cjs +2 -5070
- package/dist/decorator-validation.cjs.map +1 -0
- package/dist/decorator-validation.js +2 -0
- package/dist/decorator-validation.js.map +1 -0
- package/lib/constants/errors.cjs +1 -1
- package/lib/constants/errors.js.map +1 -0
- package/lib/constants/index.cjs +1 -1
- package/lib/constants/index.js.map +1 -0
- package/lib/constants/validation.cjs +1 -1
- package/lib/constants/validation.js.map +1 -0
- package/lib/esm/constants/errors.js +1 -1
- package/lib/esm/constants/errors.js.map +1 -0
- package/lib/esm/constants/index.js +1 -1
- package/lib/esm/constants/index.js.map +1 -0
- package/lib/esm/constants/validation.js +1 -1
- package/lib/esm/constants/validation.js.map +1 -0
- package/lib/esm/index.d.ts +8 -8
- package/lib/esm/index.js +11 -2
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/mcp/ModelContextProtocol.js +1 -1
- package/lib/esm/mcp/ModelContextProtocol.js.map +1 -0
- package/lib/esm/mcp/mcp1.js +1 -1
- package/lib/esm/mcp/mcp1.js.map +1 -0
- package/lib/esm/mcp/tools/createModel.tool.js +1 -1
- package/lib/esm/mcp/tools/createModel.tool.js.map +1 -0
- package/lib/esm/mcp/tools/validateModel.tool.js +1 -1
- package/lib/esm/mcp/tools/validateModel.tool.js.map +1 -0
- package/lib/esm/mcp/types.js +1 -1
- package/lib/esm/mcp/types.js.map +1 -0
- package/lib/esm/model/Builder.js +1 -1
- package/lib/esm/model/Builder.js.map +1 -0
- package/lib/esm/model/Model.js +1 -1
- package/lib/esm/model/Model.js.map +1 -0
- package/lib/esm/model/ModelErrorDefinition.js +1 -1
- package/lib/esm/model/ModelErrorDefinition.js.map +1 -0
- package/lib/esm/model/constants.js +1 -1
- package/lib/esm/model/constants.js.map +1 -0
- package/lib/esm/model/construction.js +1 -1
- package/lib/esm/model/construction.js.map +1 -0
- package/lib/esm/model/decorators.js +1 -1
- package/lib/esm/model/decorators.js.map +1 -0
- package/lib/esm/model/index.js +1 -1
- package/lib/esm/model/index.js.map +1 -0
- package/lib/esm/model/types.js +1 -1
- package/lib/esm/model/types.js.map +1 -0
- package/lib/esm/model/utils.js +1 -1
- package/lib/esm/model/utils.js.map +1 -0
- package/lib/esm/model/validation.js +1 -1
- package/lib/esm/model/validation.js.map +1 -0
- package/lib/esm/types/index.js +1 -1
- package/lib/esm/types/index.js.map +1 -0
- package/lib/esm/types/validation.js +1 -1
- package/lib/esm/types/validation.js.map +1 -0
- package/lib/esm/utils/Decoration.js +1 -1
- package/lib/esm/utils/Decoration.js.map +1 -0
- package/lib/esm/utils/PathProxy.js +1 -1
- package/lib/esm/utils/PathProxy.js.map +1 -0
- package/lib/esm/utils/constants.js +1 -1
- package/lib/esm/utils/constants.js.map +1 -0
- package/lib/esm/utils/dates.js +1 -1
- package/lib/esm/utils/dates.js.map +1 -0
- package/lib/esm/utils/decorators.js +1 -1
- package/lib/esm/utils/decorators.js.map +1 -0
- package/lib/esm/utils/hashing.js +1 -1
- package/lib/esm/utils/hashing.js.map +1 -0
- package/lib/esm/utils/index.js +1 -1
- package/lib/esm/utils/index.js.map +1 -0
- package/lib/esm/utils/registry.js +1 -1
- package/lib/esm/utils/registry.js.map +1 -0
- package/lib/esm/utils/serialization.js +1 -1
- package/lib/esm/utils/serialization.js.map +1 -0
- package/lib/esm/utils/strings.js +1 -1
- package/lib/esm/utils/strings.js.map +1 -0
- package/lib/esm/utils/types.js +1 -1
- package/lib/esm/utils/types.js.map +1 -0
- package/lib/esm/validation/Validation.js +1 -1
- package/lib/esm/validation/Validation.js.map +1 -0
- package/lib/esm/validation/Validators/AsyncValidator.js +1 -1
- package/lib/esm/validation/Validators/AsyncValidator.js.map +1 -0
- package/lib/esm/validation/Validators/BaseValidator.js +1 -1
- package/lib/esm/validation/Validators/BaseValidator.js.map +1 -0
- package/lib/esm/validation/Validators/DateValidator.js +1 -1
- package/lib/esm/validation/Validators/DateValidator.js.map +1 -0
- package/lib/esm/validation/Validators/DiffValidator.js +1 -1
- package/lib/esm/validation/Validators/DiffValidator.js.map +1 -0
- package/lib/esm/validation/Validators/EmailValidator.js +1 -1
- package/lib/esm/validation/Validators/EmailValidator.js.map +1 -0
- package/lib/esm/validation/Validators/EqualsValidator.js +1 -1
- package/lib/esm/validation/Validators/EqualsValidator.js.map +1 -0
- package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.js +1 -1
- package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.js.map +1 -0
- package/lib/esm/validation/Validators/GreaterThanValidator.js +1 -1
- package/lib/esm/validation/Validators/GreaterThanValidator.js.map +1 -0
- package/lib/esm/validation/Validators/LessThanOrEqualValidator.js +1 -1
- package/lib/esm/validation/Validators/LessThanOrEqualValidator.js.map +1 -0
- package/lib/esm/validation/Validators/LessThanValidator.js +1 -1
- package/lib/esm/validation/Validators/LessThanValidator.js.map +1 -0
- package/lib/esm/validation/Validators/ListValidator.js +1 -1
- package/lib/esm/validation/Validators/ListValidator.js.map +1 -0
- package/lib/esm/validation/Validators/MaxLengthValidator.js +1 -1
- package/lib/esm/validation/Validators/MaxLengthValidator.js.map +1 -0
- package/lib/esm/validation/Validators/MaxValidator.js +1 -1
- package/lib/esm/validation/Validators/MaxValidator.js.map +1 -0
- package/lib/esm/validation/Validators/MinLengthValidator.js +1 -1
- package/lib/esm/validation/Validators/MinLengthValidator.js.map +1 -0
- package/lib/esm/validation/Validators/MinValidator.js +1 -1
- package/lib/esm/validation/Validators/MinValidator.js.map +1 -0
- package/lib/esm/validation/Validators/PasswordValidator.js +1 -1
- package/lib/esm/validation/Validators/PasswordValidator.js.map +1 -0
- package/lib/esm/validation/Validators/PatternValidator.js +1 -1
- package/lib/esm/validation/Validators/PatternValidator.js.map +1 -0
- package/lib/esm/validation/Validators/RequiredValidator.js +1 -1
- package/lib/esm/validation/Validators/RequiredValidator.js.map +1 -0
- package/lib/esm/validation/Validators/StepValidator.js +1 -1
- package/lib/esm/validation/Validators/StepValidator.js.map +1 -0
- package/lib/esm/validation/Validators/TypeValidator.js +1 -1
- package/lib/esm/validation/Validators/TypeValidator.js.map +1 -0
- package/lib/esm/validation/Validators/URLValidator.js +1 -1
- package/lib/esm/validation/Validators/URLValidator.js.map +1 -0
- package/lib/esm/validation/Validators/Validator.js +1 -1
- package/lib/esm/validation/Validators/Validator.js.map +1 -0
- package/lib/esm/validation/Validators/ValidatorRegistry.js +1 -1
- package/lib/esm/validation/Validators/ValidatorRegistry.js.map +1 -0
- package/lib/esm/validation/Validators/constants.js +1 -1
- package/lib/esm/validation/Validators/constants.js.map +1 -0
- package/lib/esm/validation/Validators/decorators.js +1 -1
- package/lib/esm/validation/Validators/decorators.js.map +1 -0
- package/lib/esm/validation/Validators/index.js +1 -1
- package/lib/esm/validation/Validators/index.js.map +1 -0
- package/lib/esm/validation/Validators/utils.js +1 -1
- package/lib/esm/validation/Validators/utils.js.map +1 -0
- package/lib/esm/validation/decorators.js +1 -1
- package/lib/esm/validation/decorators.js.map +1 -0
- package/lib/esm/validation/index.js +1 -1
- package/lib/esm/validation/index.js.map +1 -0
- package/lib/esm/validation/types.js +1 -1
- package/lib/esm/validation/types.js.map +1 -0
- package/lib/index.cjs +12 -3
- package/lib/index.d.ts +8 -8
- package/lib/index.js.map +1 -0
- package/lib/mcp/ModelContextProtocol.cjs +1 -1
- package/lib/mcp/ModelContextProtocol.js.map +1 -0
- package/lib/mcp/mcp1.cjs +1 -1
- package/lib/mcp/mcp1.js.map +1 -0
- package/lib/mcp/tools/createModel.tool.cjs +1 -1
- package/lib/mcp/tools/createModel.tool.js.map +1 -0
- package/lib/mcp/tools/validateModel.tool.cjs +1 -1
- package/lib/mcp/tools/validateModel.tool.js.map +1 -0
- package/lib/mcp/types.cjs +1 -1
- package/lib/mcp/types.js.map +1 -0
- package/lib/model/Builder.cjs +1 -1
- package/lib/model/Builder.js.map +1 -0
- package/lib/model/Model.cjs +1 -1
- package/lib/model/Model.js.map +1 -0
- package/lib/model/ModelErrorDefinition.cjs +1 -1
- package/lib/model/ModelErrorDefinition.js.map +1 -0
- package/lib/model/constants.cjs +1 -1
- package/lib/model/constants.js.map +1 -0
- package/lib/model/construction.cjs +1 -1
- package/lib/model/construction.js.map +1 -0
- package/lib/model/decorators.cjs +1 -1
- package/lib/model/decorators.js.map +1 -0
- package/lib/model/index.cjs +1 -1
- package/lib/model/index.js.map +1 -0
- package/lib/model/types.cjs +1 -1
- package/lib/model/types.js.map +1 -0
- package/lib/model/utils.cjs +1 -1
- package/lib/model/utils.js.map +1 -0
- package/lib/model/validation.cjs +1 -1
- package/lib/model/validation.js.map +1 -0
- package/lib/types/index.cjs +1 -1
- package/lib/types/index.js.map +1 -0
- package/lib/types/validation.cjs +1 -1
- package/lib/types/validation.js.map +1 -0
- package/lib/utils/Decoration.cjs +1 -1
- package/lib/utils/Decoration.js.map +1 -0
- package/lib/utils/PathProxy.cjs +1 -1
- package/lib/utils/PathProxy.js.map +1 -0
- package/lib/utils/constants.cjs +1 -1
- package/lib/utils/constants.js.map +1 -0
- package/lib/utils/dates.cjs +1 -1
- package/lib/utils/dates.js.map +1 -0
- package/lib/utils/decorators.cjs +1 -1
- package/lib/utils/decorators.js.map +1 -0
- package/lib/utils/hashing.cjs +1 -1
- package/lib/utils/hashing.js.map +1 -0
- package/lib/utils/index.cjs +1 -1
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/registry.cjs +1 -1
- package/lib/utils/registry.js.map +1 -0
- package/lib/utils/serialization.cjs +1 -1
- package/lib/utils/serialization.js.map +1 -0
- package/lib/utils/strings.cjs +1 -1
- package/lib/utils/strings.js.map +1 -0
- package/lib/utils/types.cjs +1 -1
- package/lib/utils/types.js.map +1 -0
- package/lib/validation/Validation.cjs +1 -1
- package/lib/validation/Validation.js.map +1 -0
- package/lib/validation/Validators/AsyncValidator.cjs +1 -1
- package/lib/validation/Validators/AsyncValidator.js.map +1 -0
- package/lib/validation/Validators/BaseValidator.cjs +1 -1
- package/lib/validation/Validators/BaseValidator.js.map +1 -0
- package/lib/validation/Validators/DateValidator.cjs +1 -1
- package/lib/validation/Validators/DateValidator.js.map +1 -0
- package/lib/validation/Validators/DiffValidator.cjs +1 -1
- package/lib/validation/Validators/DiffValidator.js.map +1 -0
- package/lib/validation/Validators/EmailValidator.cjs +1 -1
- package/lib/validation/Validators/EmailValidator.js.map +1 -0
- package/lib/validation/Validators/EqualsValidator.cjs +1 -1
- package/lib/validation/Validators/EqualsValidator.js.map +1 -0
- package/lib/validation/Validators/GreaterThanOrEqualValidator.cjs +1 -1
- package/lib/validation/Validators/GreaterThanOrEqualValidator.js.map +1 -0
- package/lib/validation/Validators/GreaterThanValidator.cjs +1 -1
- package/lib/validation/Validators/GreaterThanValidator.js.map +1 -0
- package/lib/validation/Validators/LessThanOrEqualValidator.cjs +1 -1
- package/lib/validation/Validators/LessThanOrEqualValidator.js.map +1 -0
- package/lib/validation/Validators/LessThanValidator.cjs +1 -1
- package/lib/validation/Validators/LessThanValidator.js.map +1 -0
- package/lib/validation/Validators/ListValidator.cjs +1 -1
- package/lib/validation/Validators/ListValidator.js.map +1 -0
- package/lib/validation/Validators/MaxLengthValidator.cjs +1 -1
- package/lib/validation/Validators/MaxLengthValidator.js.map +1 -0
- package/lib/validation/Validators/MaxValidator.cjs +1 -1
- package/lib/validation/Validators/MaxValidator.js.map +1 -0
- package/lib/validation/Validators/MinLengthValidator.cjs +1 -1
- package/lib/validation/Validators/MinLengthValidator.js.map +1 -0
- package/lib/validation/Validators/MinValidator.cjs +1 -1
- package/lib/validation/Validators/MinValidator.js.map +1 -0
- package/lib/validation/Validators/PasswordValidator.cjs +1 -1
- package/lib/validation/Validators/PasswordValidator.js.map +1 -0
- package/lib/validation/Validators/PatternValidator.cjs +1 -1
- package/lib/validation/Validators/PatternValidator.js.map +1 -0
- package/lib/validation/Validators/RequiredValidator.cjs +1 -1
- package/lib/validation/Validators/RequiredValidator.js.map +1 -0
- package/lib/validation/Validators/StepValidator.cjs +1 -1
- package/lib/validation/Validators/StepValidator.js.map +1 -0
- package/lib/validation/Validators/TypeValidator.cjs +1 -1
- package/lib/validation/Validators/TypeValidator.js.map +1 -0
- package/lib/validation/Validators/URLValidator.cjs +1 -1
- package/lib/validation/Validators/URLValidator.js.map +1 -0
- package/lib/validation/Validators/Validator.cjs +1 -1
- package/lib/validation/Validators/Validator.js.map +1 -0
- package/lib/validation/Validators/ValidatorRegistry.cjs +1 -1
- package/lib/validation/Validators/ValidatorRegistry.js.map +1 -0
- package/lib/validation/Validators/constants.cjs +1 -1
- package/lib/validation/Validators/constants.js.map +1 -0
- package/lib/validation/Validators/decorators.cjs +1 -1
- package/lib/validation/Validators/decorators.js.map +1 -0
- package/lib/validation/Validators/index.cjs +1 -1
- package/lib/validation/Validators/index.js.map +1 -0
- package/lib/validation/Validators/utils.cjs +1 -1
- package/lib/validation/Validators/utils.js.map +1 -0
- package/lib/validation/decorators.cjs +1 -1
- package/lib/validation/decorators.js.map +1 -0
- package/lib/validation/index.cjs +1 -1
- package/lib/validation/index.js.map +1 -0
- package/lib/validation/types.cjs +1 -1
- package/lib/validation/types.js.map +1 -0
- package/package.json +9 -13
- package/dist/decorator-validation.esm.cjs +0 -4985
|
@@ -586,4 +586,4 @@ export function gte(propertyToCompare, options) {
|
|
|
586
586
|
};
|
|
587
587
|
return validationMetadata(gte, Validation.key(ValidationKeys.GREATER_THAN_OR_EQUAL), { ...gteOptions, async: false });
|
|
588
588
|
}
|
|
589
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YWxpZGF0aW9uL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQW9CMUIsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsY0FBYyxHQUNmLGtDQUErQjtBQUNoQyxPQUFPLEVBQUUsRUFBRSxFQUFFLDhCQUF5QjtBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLDRCQUF1QjtBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLGlDQUE0QjtBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLHdCQUFxQjtBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGlDQUE0QjtBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQ0FBcUI7QUFFOUM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUksU0FBYyxFQUFFLEdBQVcsRUFBRSxLQUFRO0lBQ3pFLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDN0MsT0FBTyxLQUFLLENBQUMsWUFBWSxDQUFJLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFNLFVBQVUsS0FBSztJQUNuQixPQUFPLENBQUMsS0FBYSxFQUFRLEVBQUU7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDO1lBQzdELEtBQWEsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDMUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxV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IENvbXBhcmlzb25WYWxpZGF0b3JPcHRpb25zLFxuICBEYXRlVmFsaWRhdG9yT3B0aW9ucyxcbiAgRGlmZlZhbGlkYXRvck9wdGlvbnMsXG4gIEVxdWFsc1ZhbGlkYXRvck9wdGlvbnMsXG4gIEdyZWF0ZXJUaGFuT3JFcXVhbFZhbGlkYXRvck9wdGlvbnMsXG4gIEdyZWF0ZXJUaGFuVmFsaWRhdG9yT3B0aW9ucyxcbiAgTGVzc1RoYW5PckVxdWFsVmFsaWRhdG9yT3B0aW9ucyxcbiAgTGVzc1RoYW5WYWxpZGF0b3JPcHRpb25zLFxuICBMaXN0VmFsaWRhdG9yT3B0aW9ucyxcbiAgTWF4TGVuZ3RoVmFsaWRhdG9yT3B0aW9ucyxcbiAgTWF4VmFsaWRhdG9yT3B0aW9ucyxcbiAgTWluTGVuZ3RoVmFsaWRhdG9yT3B0aW9ucyxcbiAgTWluVmFsaWRhdG9yT3B0aW9ucyxcbiAgUGF0dGVyblZhbGlkYXRvck9wdGlvbnMsXG4gIFN0ZXBWYWxpZGF0b3JPcHRpb25zLFxuICBWYWxpZGF0aW9uTWV0YWRhdGEsXG4gIFZhbGlkYXRvck9wdGlvbnMsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0VSUk9SX01FU1NBR0VTLFxuICBERUZBVUxUX1BBVFRFUk5TLFxuICBWYWxpZGF0aW9uS2V5cyxcbn0gZnJvbSBcIi4vVmFsaWRhdG9ycy9jb25zdGFudHNcIjtcbmltcG9ydCB7IHNmIH0gZnJvbSBcIi4uL3V0aWxzL3N0cmluZ3NcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yLCBNb2RlbENvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL21vZGVsL3R5cGVzXCI7XG5pbXBvcnQgeyBwYXJzZURhdGUgfSBmcm9tIFwiLi4vdXRpbHMvZGF0ZXNcIjtcbmltcG9ydCB7IHByb3BNZXRhZGF0YSB9IGZyb20gXCIuLi91dGlscy9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSBcIi4vVmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgRGVjb3JhdGlvbiB9IGZyb20gXCIuLi91dGlscy9EZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBhcHBseSB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgQVNZTkNfTUVUQV9LRVkgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbWJpbmVkIHByb3BlcnR5IGRlY29yYXRvciBmYWN0b3J5IGZvciBtZXRhZGF0YSBhbmQgYXR0cmlidXRlIG1hcmtpbmdcbiAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBkZWNvcmF0b3IgdGhhdCBib3RoIG1hcmtzIGEgcHJvcGVydHkgYXMgYSBtb2RlbCBhdHRyaWJ1dGUgYW5kIGFzc2lnbnMgbWV0YWRhdGEgdG8gaXRcbiAqXG4gKiBAdGVtcGxhdGUgVlxuICogQHBhcmFtIHtQcm9wZXJ0eURlY29yYXRvcn0gZGVjb3JhdG9yIC0gVGhlIG1ldGFkYXRhIGtleVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBtZXRhZGF0YSBrZXlcbiAqIEBwYXJhbSB7Vn0gdmFsdWUgLSBUaGUgbWV0YWRhdGEgdmFsdWUgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHByb3BlcnR5XG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gLSBDb21iaW5lZCBkZWNvcmF0b3IgZnVuY3Rpb25cbiAqIEBmdW5jdGlvbiB2YWxpZGF0aW9uTWV0YWRhdGFcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0aW9uTWV0YWRhdGE8Vj4oZGVjb3JhdG9yOiBhbnksIGtleTogc3RyaW5nLCB2YWx1ZTogVikge1xuICBWYWxpZGF0aW9uLnJlZ2lzdGVyRGVjb3JhdG9yKGtleSwgZGVjb3JhdG9yKTtcbiAgcmV0dXJuIGFwcGx5KHByb3BNZXRhZGF0YTxWPihrZXksIHZhbHVlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3luYygpIHtcbiAgcmV0dXJuIChtb2RlbDogb2JqZWN0KTogdm9pZCA9PiB7XG4gICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kZWwsIEFTWU5DX01FVEFfS0VZKSlcbiAgICAgIChtb2RlbCBhcyBhbnkpW0FTWU5DX01FVEFfS0VZXSA9IHRydWU7XG4gIH07XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFByb3BlcnR5IGRlY29yYXRvciB0aGF0IG1hcmtzIGEgZmllbGQgYXMgcmVxdWlyZWRcbiAqIEBzdW1tYXJ5IE1hcmtzIHRoZSBwcm9wZXJ0eSBhcyByZXF1aXJlZCwgY2F1c2luZyB2YWxpZGF0aW9uIHRvIGZhaWwgaWYgdGhlIHByb3BlcnR5IGlzIHVuZGVmaW5lZCwgbnVsbCwgb3IgZW1wdHkuXG4gKiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjUkVRVUlSRUR9LlxuICogVGhpcyBkZWNvcmF0b3IgaXMgY29tbW9ubHkgdXNlZCBhcyB0aGUgZmlyc3QgdmFsaWRhdGlvbiBzdGVwIGZvciBpbXBvcnRhbnQgZmllbGRzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gLSBUaGUgZXJyb3IgbWVzc2FnZSB0byBkaXNwbGF5IHdoZW4gdmFsaWRhdGlvbiBmYWlscy4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjUkVRVUlSRUR9XG4gKiBAcmV0dXJuIHtQcm9wZXJ0eURlY29yYXRvcn0gQSBkZWNvcmF0b3IgZnVuY3Rpb24gdGhhdCBjYW4gYmUgYXBwbGllZCB0byBjbGFzcyBwcm9wZXJ0aWVzXG4gKlxuICogQGZ1bmN0aW9uIHJlcXVpcmVkXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBVc2VyIHtcbiAqICAgQHJlcXVpcmVkKClcbiAqICAgdXNlcm5hbWU6IHN0cmluZztcbiAqXG4gKiAgIEByZXF1aXJlZChcIkVtYWlsIGFkZHJlc3MgaXMgbWFuZGF0b3J5XCIpXG4gKiAgIGVtYWlsOiBzdHJpbmc7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVkKG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuUkVRVUlSRUQpIHtcbiAgY29uc3Qga2V5ID0gVmFsaWRhdGlvbi5rZXkoVmFsaWRhdGlvbktleXMuUkVRVUlSRUQpO1xuICBjb25zdCBtZXRhOiBWYWxpZGF0b3JPcHRpb25zID0ge1xuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgZGVzY3JpcHRpb246IGBkZWZpbmVzIHRoZSBhdHRyaWJ1dGUgYXMgcmVxdWlyZWRgLFxuICAgIGFzeW5jOiBmYWxzZSxcbiAgfTtcbiAgcmV0dXJuIERlY29yYXRpb24uZm9yKGtleSlcbiAgICAuZGVmaW5lKHtcbiAgICAgIGRlY29yYXRvcjogdmFsaWRhdGlvbk1ldGFkYXRhPFZhbGlkYXRvck9wdGlvbnM+LFxuICAgICAgYXJnczogW3JlcXVpcmVkLCBrZXksIG1ldGFdLFxuICAgIH0pXG4gICAgLmFwcGx5KCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFByb3BlcnR5IGRlY29yYXRvciB0aGF0IGVuZm9yY2VzIGEgbWluaW11bSB2YWx1ZSBjb25zdHJhaW50XG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgbWluaW11bSB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5LCBjYXVzaW5nIHZhbGlkYXRpb24gdG8gZmFpbCBpZiB0aGUgcHJvcGVydHkgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBzcGVjaWZpZWQgbWluaW11bS5cbiAqIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNSU59LlxuICogVGhpcyBkZWNvcmF0b3Igd29ya3Mgd2l0aCBudW1lcmljIHZhbHVlcyBhbmQgZGF0ZXMuXG4gKlxuICogQHBhcmFtIHtudW1iZXIgfCBEYXRlIHwgc3RyaW5nfSB2YWx1ZSAtIFRoZSBtaW5pbXVtIHZhbHVlIGFsbG93ZWQuIEZvciBkYXRlcywgY2FuIGJlIGEgRGF0ZSBvYmplY3Qgb3IgYSBzdHJpbmcgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIGEgZGF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSAtIFRoZSBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB2YWxpZGF0aW9uIGZhaWxzLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNNSU59XG4gKiBAcmV0dXJuIHtQcm9wZXJ0eURlY29yYXRvcn0gQSBkZWNvcmF0b3IgZnVuY3Rpb24gdGhhdCBjYW4gYmUgYXBwbGllZCB0byBjbGFzcyBwcm9wZXJ0aWVzXG4gKlxuICogQGZ1bmN0aW9uIG1pblxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgUHJvZHVjdCB7XG4gKiAgIEBtaW4oMClcbiAqICAgcHJpY2U6IG51bWJlcjtcbiAqXG4gKiAgIEBtaW4obmV3IERhdGUoMjAyMywgMCwgMSksIFwiRGF0ZSBtdXN0IGJlIGFmdGVyIEphbnVhcnkgMSwgMjAyM1wiKVxuICogICByZWxlYXNlRGF0ZTogRGF0ZTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWluKFxuICB2YWx1ZTogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZyxcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5NSU5cbikge1xuICBjb25zdCBrZXkgPSBWYWxpZGF0aW9uLmtleShWYWxpZGF0aW9uS2V5cy5NSU4pO1xuICBjb25zdCBtZXRhOiBNaW5WYWxpZGF0b3JPcHRpb25zID0ge1xuICAgIFtWYWxpZGF0aW9uS2V5cy5NSU5dOiB2YWx1ZSxcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIHR5cGVzOiBbTnVtYmVyLm5hbWUsIERhdGUubmFtZV0sXG4gICAgZGVzY3JpcHRpb246IGBkZWZpbmVzIHRoZSBtYXggdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBhcyAke3ZhbHVlfSAoYXBwbGllcyB0byBudW1iZXJzIG9yIERhdGVzKWAsXG4gICAgYXN5bmM6IGZhbHNlLFxuICB9O1xuICByZXR1cm4gRGVjb3JhdGlvbi5mb3Ioa2V5KVxuICAgIC5kZWZpbmUoe1xuICAgICAgZGVjb3JhdG9yOiB2YWxpZGF0aW9uTWV0YWRhdGE8TWluVmFsaWRhdG9yT3B0aW9ucz4sXG4gICAgICBhcmdzOiBbbWluLCBrZXksIG1ldGFdLFxuICAgIH0pXG4gICAgLmFwcGx5KCk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIG1heGltdW0gdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNQVh9XG4gKlxuICogQHBhcmFtIHtudW1iZXIgfCBEYXRlfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTUFYfVxuICpcbiAqIEBmdW5jdGlvbiBtYXhcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXgoXG4gIHZhbHVlOiBudW1iZXIgfCBEYXRlIHwgc3RyaW5nLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLk1BWFxuKSB7XG4gIGNvbnN0IGtleSA9IFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLk1BWCk7XG4gIGNvbnN0IG1ldGE6IE1heFZhbGlkYXRvck9wdGlvbnMgPSB7XG4gICAgW1ZhbGlkYXRpb25LZXlzLk1BWF06IHZhbHVlLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgdHlwZXM6IFtOdW1iZXIubmFtZSwgRGF0ZS5uYW1lXSxcbiAgICBkZXNjcmlwdGlvbjogYGRlZmluZXMgdGhlIG1heCB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIGFzICR7dmFsdWV9IChhcHBsaWVzIHRvIG51bWJlcnMgb3IgRGF0ZXMpYCxcbiAgICBhc3luYzogZmFsc2UsXG4gIH07XG4gIHJldHVybiBEZWNvcmF0aW9uLmZvcihrZXkpXG4gICAgLmRlZmluZSh7XG4gICAgICBkZWNvcmF0b3I6IHZhbGlkYXRpb25NZXRhZGF0YTxNYXhWYWxpZGF0b3JPcHRpb25zPixcbiAgICAgIGFyZ3M6IFttYXgsIGtleSwgbWV0YV0sXG4gICAgfSlcbiAgICAuYXBwbHkoKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgc3RlcCB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5XG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI1NURVB9XG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNTVEVQfVxuICpcbiAqIEBmdW5jdGlvbiBzdGVwXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc3RlcChcbiAgdmFsdWU6IG51bWJlcixcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5TVEVQXG4pIHtcbiAgY29uc3Qga2V5ID0gVmFsaWRhdGlvbi5rZXkoVmFsaWRhdGlvbktleXMuU1RFUCk7XG4gIGNvbnN0IG1ldGE6IFN0ZXBWYWxpZGF0b3JPcHRpb25zID0ge1xuICAgIFtWYWxpZGF0aW9uS2V5cy5TVEVQXTogdmFsdWUsXG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW051bWJlci5uYW1lXSxcbiAgICBkZXNjcmlwdGlvbjogYGRlZmluZXMgdGhlIHN0ZXAgb2YgdGhlIGF0dHJpYnV0ZSBhcyAke3ZhbHVlfWAsXG4gICAgYXN5bmM6IGZhbHNlLFxuICB9O1xuICByZXR1cm4gRGVjb3JhdGlvbi5mb3Ioa2V5KVxuICAgIC5kZWZpbmUoe1xuICAgICAgZGVjb3JhdG9yOiB2YWxpZGF0aW9uTWV0YWRhdGE8U3RlcFZhbGlkYXRvck9wdGlvbnM+LFxuICAgICAgYXJnczogW3N0ZXAsIGtleSwgbWV0YV0sXG4gICAgfSlcbiAgICAuYXBwbHkoKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgbWluaW11bSBsZW5ndGggZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNSU5fTEVOR1RIfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTUlOX0xFTkdUSH1cbiAqXG4gKiBAZnVuY3Rpb24gbWlubGVuZ3RoXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWlubGVuZ3RoKFxuICB2YWx1ZTogbnVtYmVyLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLk1JTl9MRU5HVEhcbikge1xuICBjb25zdCBrZXkgPSBWYWxpZGF0aW9uLmtleShWYWxpZGF0aW9uS2V5cy5NSU5fTEVOR1RIKTtcbiAgY29uc3QgbWV0YTogTWluTGVuZ3RoVmFsaWRhdG9yT3B0aW9ucyA9IHtcbiAgICBbVmFsaWRhdGlvbktleXMuTUlOX0xFTkdUSF06IHZhbHVlLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgdHlwZXM6IFtTdHJpbmcubmFtZSwgQXJyYXkubmFtZSwgU2V0Lm5hbWVdLFxuICAgIGRlc2NyaXB0aW9uOiBgZGVmaW5lcyB0aGUgbWluIGxlbmd0aCBvZiB0aGUgYXR0cmlidXRlIGFzICR7dmFsdWV9IChhcHBsaWVzIHRvIHN0cmluZ3Mgb3IgbGlzdHMpYCxcbiAgICBhc3luYzogZmFsc2UsXG4gIH07XG4gIHJldHVybiBEZWNvcmF0aW9uLmZvcihrZXkpXG4gICAgLmRlZmluZSh7XG4gICAgICBkZWNvcmF0b3I6IHZhbGlkYXRpb25NZXRhZGF0YTxNaW5MZW5ndGhWYWxpZGF0b3JPcHRpb25zPixcbiAgICAgIGFyZ3M6IFttaW5sZW5ndGgsIGtleSwgbWV0YV0sXG4gICAgfSlcbiAgICAuYXBwbHkoKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgbWF4aW11bSBsZW5ndGggZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNQVhfTEVOR1RIfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTUFYX0xFTkdUSH1cbiAqXG4gKiBAZnVuY3Rpb24gbWF4bGVuZ3RoXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWF4bGVuZ3RoKFxuICB2YWx1ZTogbnVtYmVyLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLk1BWF9MRU5HVEhcbikge1xuICBjb25zdCBrZXkgPSBWYWxpZGF0aW9uLmtleShWYWxpZGF0aW9uS2V5cy5NQVhfTEVOR1RIKTtcbiAgY29uc3QgbWV0YTogTWF4TGVuZ3RoVmFsaWRhdG9yT3B0aW9ucyA9IHtcbiAgICBbVmFsaWRhdGlvbktleXMuTUFYX0xFTkdUSF06IHZhbHVlLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgdHlwZXM6IFtTdHJpbmcubmFtZSwgQXJyYXkubmFtZSwgU2V0Lm5hbWVdLFxuICAgIGRlc2NyaXB0aW9uOiBgZGVmaW5lcyB0aGUgbWF4IGxlbmd0aCBvZiB0aGUgYXR0cmlidXRlIGFzICR7dmFsdWV9IChhcHBsaWVzIHRvIHN0cmluZ3Mgb3IgbGlzdHMpYCxcbiAgICBhc3luYzogZmFsc2UsXG4gIH07XG4gIHJldHVybiBEZWNvcmF0aW9uLmZvcihrZXkpXG4gICAgLmRlZmluZSh7XG4gICAgICBkZWNvcmF0b3I6IHZhbGlkYXRpb25NZXRhZGF0YTxNYXhMZW5ndGhWYWxpZGF0b3JPcHRpb25zPixcbiAgICAgIGFyZ3M6IFttYXhsZW5ndGgsIGtleSwgbWV0YV0sXG4gICAgfSlcbiAgICAuYXBwbHkoKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgUmVnRXhwIHBhdHRlcm4gdGhlIHByb3BlcnR5IG11c3QgcmVzcGVjdFxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNQQVRURVJOfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjUEFUVEVSTn1cbiAqXG4gKiBAZnVuY3Rpb24gcGF0dGVyblxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhdHRlcm4oXG4gIHZhbHVlOiBSZWdFeHAgfCBzdHJpbmcsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuUEFUVEVSTlxuKSB7XG4gIGNvbnN0IGtleSA9IFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLlBBVFRFUk4pO1xuICBjb25zdCBtZXRhOiBQYXR0ZXJuVmFsaWRhdG9yT3B0aW9ucyA9IHtcbiAgICBbVmFsaWRhdGlvbktleXMuUEFUVEVSTl06XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZSA6IHZhbHVlLnRvU3RyaW5nKCksXG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW1N0cmluZy5uYW1lXSxcbiAgICBkZXNjcmlwdGlvbjogYGFzc2lnbnMgdGhlICR7dmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZSA6IHZhbHVlLnRvU3RyaW5nKCl9IHBhdHRlcm4gdG8gdGhlIGF0dHJpYnV0ZWAsXG4gICAgYXN5bmM6IGZhbHNlLFxuICB9O1xuICByZXR1cm4gRGVjb3JhdGlvbi5mb3Ioa2V5KVxuICAgIC5kZWZpbmUoe1xuICAgICAgZGVjb3JhdG9yOiB2YWxpZGF0aW9uTWV0YWRhdGE8UGF0dGVyblZhbGlkYXRvck9wdGlvbnM+LFxuICAgICAgYXJnczogW3BhdHRlcm4sIGtleSwgbWV0YV0sXG4gICAgfSlcbiAgICAuYXBwbHkoKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBwcm9wZXJ0eSBhcyBhbiBlbWFpbFxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNFTUFJTH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNFTUFJTH1cbiAqXG4gKiBAZnVuY3Rpb24gZW1haWxcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWFpbChtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkVNQUlMKSB7XG4gIGNvbnN0IGtleSA9IFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLkVNQUlMKTtcbiAgY29uc3QgbWV0YTogUGF0dGVyblZhbGlkYXRvck9wdGlvbnMgPSB7XG4gICAgW1ZhbGlkYXRpb25LZXlzLlBBVFRFUk5dOiBERUZBVUxUX1BBVFRFUk5TLkVNQUlMLnRvU3RyaW5nKCksXG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW1N0cmluZy5uYW1lXSxcbiAgICBkZXNjcmlwdGlvbjogXCJtYXJrcyB0aGUgYXR0cmlidXRlIGFzIGFuIGVtYWlsXCIsXG4gICAgYXN5bmM6IGZhbHNlLFxuICB9O1xuICByZXR1cm4gRGVjb3JhdGlvbi5mb3Ioa2V5KVxuICAgIC5kZWZpbmUoe1xuICAgICAgZGVjb3JhdG9yOiB2YWxpZGF0aW9uTWV0YWRhdGE8UGF0dGVyblZhbGlkYXRvck9wdGlvbnM+LFxuICAgICAgYXJnczogW2VtYWlsLCBrZXksIG1ldGFdLFxuICAgIH0pXG4gICAgLmFwcGx5KCk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcHJvcGVydHkgYXMgYW4gVVJMXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI1VSTH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNVUkx9XG4gKlxuICogQGZ1bmN0aW9uIHVybFxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVybChtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlVSTCkge1xuICBjb25zdCBrZXkgPSBWYWxpZGF0aW9uLmtleShWYWxpZGF0aW9uS2V5cy5VUkwpO1xuICBjb25zdCBtZXRhOiBQYXR0ZXJuVmFsaWRhdG9yT3B0aW9ucyA9IHtcbiAgICBbVmFsaWRhdGlvbktleXMuUEFUVEVSTl06IERFRkFVTFRfUEFUVEVSTlMuVVJMLnRvU3RyaW5nKCksXG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW1N0cmluZy5uYW1lXSxcbiAgICBkZXNjcmlwdGlvbjogXCJtYXJrcyB0aGUgYXR0cmlidXRlIGFzIGFuIHVybFwiLFxuICAgIGFzeW5jOiBmYWxzZSxcbiAgfTtcbiAgcmV0dXJuIERlY29yYXRpb24uZm9yKGtleSlcbiAgICAuZGVmaW5lKHtcbiAgICAgIGRlY29yYXRvcjogdmFsaWRhdGlvbk1ldGFkYXRhPFBhdHRlcm5WYWxpZGF0b3JPcHRpb25zPixcbiAgICAgIGFyZ3M6IFt1cmwsIGtleSwgbWV0YV0sXG4gICAgfSlcbiAgICAuYXBwbHkoKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlTWV0YWRhdGEgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgY3VzdG9tVHlwZXM6IChzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKSlbXSB8IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IEVuZm9yY2VzIHR5cGUgdmVyaWZpY2F0aW9uXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI1RZUEV9XG4gKlxuICogQHBhcmFtIHtzdHJpbmdbXSB8IHN0cmluZ30gdHlwZXMgYWNjZXB0ZWQgdHlwZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI1RZUEV9XG4gKlxuICogQGZ1bmN0aW9uIHR5cGVcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0eXBlKFxuICB0eXBlczogKHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpKVtdIHwgc3RyaW5nIHwgKCgpID0+IHN0cmluZyksXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuVFlQRVxuKSB7XG4gIGNvbnN0IGtleSA9IFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLlRZUEUpO1xuICBjb25zdCBtZXRhOiBUeXBlTWV0YWRhdGEgPSB7XG4gICAgY3VzdG9tVHlwZXM6IHR5cGVzLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgZGVzY3JpcHRpb246IFwiZGVmaW5lcyB0aGUgYWNjZXB0ZWQgdHlwZXMgZm9yIHRoZSBhdHRyaWJ1dGVcIixcbiAgICBhc3luYzogZmFsc2UsXG4gIH07XG4gIHJldHVybiBEZWNvcmF0aW9uLmZvcihrZXkpXG4gICAgLmRlZmluZSh7XG4gICAgICBkZWNvcmF0b3I6IHZhbGlkYXRpb25NZXRhZGF0YTxUeXBlTWV0YWRhdGE+LFxuICAgICAgYXJnczogW3R5cGUsIGtleSwgbWV0YV0sXG4gICAgfSlcbiAgICAuYXBwbHkoKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRlTWV0YWRhdGEgZXh0ZW5kcyBEYXRlVmFsaWRhdG9yT3B0aW9ucyB7XG4gIHR5cGVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEYXRlIEhhbmRsZXIgRGVjb3JhdG9yXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI0RBVEV9XG4gKlxuICogV2lsbCBlbmZvcmNlIHNlcmlhbGl6YXRpb24gYWNjb3JkaW5nIHRvIHRoZSBzZWxlY3RlZCBmb3JtYXRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IGFjY2VwdGVkIGZvcm1hdCBhY2NvcmRpbmcgdG8ge0BsaW5rIGZvcm1hdERhdGV9XG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNEQVRFfVxuICpcbiAqIEBmdW5jdGlvbiBkYXRlXG4gKlxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGUoXG4gIGZvcm1hdDogc3RyaW5nID0gXCJkZC9NTS95eXl5XCIsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuREFURVxuKSB7XG4gIGNvbnN0IGtleSA9IFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLkRBVEUpO1xuICBmdW5jdGlvbiBkYXRlRGVjKGZvcm1hdDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtZXRhOiBEYXRlTWV0YWRhdGEgPSB7XG4gICAgICBbVmFsaWRhdGlvbktleXMuRk9STUFUXTogZm9ybWF0LFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIHR5cGVzOiBbRGF0ZS5uYW1lXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgZGVmaW5lcyB0aGUgYXR0cmlidXRlIGFzIGEgZGF0ZSB3aXRoIHRoZSBmb3JtYXQgJHtmb3JtYXR9YCxcbiAgICAgIGFzeW5jOiBmYWxzZSxcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiBkYXRlRGVjKFxuICAgICAgdGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgICAgcHJvcGVydHlLZXk/OiBhbnlcbiAgICApOiBhbnkge1xuICAgICAgY29uc3QgdmFsdWVzID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIHNldCh0aGlzOiBhbnksIG5ld1ZhbHVlOiBzdHJpbmcgfCBEYXRlKSB7XG4gICAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgcHJvcGVydHlLZXkpO1xuICAgICAgICAgIGlmICghZGVzY3JpcHRvciB8fCBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSlcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUtleSwge1xuICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICBnZXQ6ICgpID0+IHZhbHVlcy5nZXQodGhpcyksXG4gICAgICAgICAgICAgIHNldDogKG5ld1ZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbDogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgdmFsID0gcGFyc2VEYXRlKGZvcm1hdCwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgdmFsdWVzLnNldCh0aGlzLCB2YWwpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgc2YoXCJGYWlsZWQgdG8gcGFyc2UgZGF0ZTogezB9XCIsIGUubWVzc2FnZSB8fCBlKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzW3Byb3BlcnR5S2V5XSA9IG5ld1ZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlcy5nZXQodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uTWV0YWRhdGEoZGF0ZSwga2V5LCBtZXRhKSh0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBEZWNvcmF0aW9uLmZvcihrZXkpXG4gICAgLmRlZmluZSh7XG4gICAgICBkZWNvcmF0b3I6IGRhdGVEZWMsXG4gICAgICBhcmdzOiBbZm9ybWF0LCBtZXNzYWdlXSxcbiAgICB9KVxuICAgIC5hcHBseSgpO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IFBhc3N3b3JkIEhhbmRsZXIgRGVjb3JhdG9yXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI1BBU1NXT1JEfVxuICpcbiAqIEBwYXJhbSB7UmVnRXhwfSBbcGF0dGVybl0gZGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfUEFUVEVSTlMjQ0hBUjhfT05FX09GX0VBQ0h9XG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNQQVNTV09SRH1cbiAqXG4gKiBAZnVuY3Rpb24gcGFzc3dvcmRcbiAqXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFzc3dvcmQoXG4gIHBhdHRlcm46IFJlZ0V4cCA9IERFRkFVTFRfUEFUVEVSTlMuUEFTU1dPUkQuQ0hBUjhfT05FX09GX0VBQ0gsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuUEFTU1dPUkRcbikge1xuICBjb25zdCBrZXkgPSBWYWxpZGF0aW9uLmtleShWYWxpZGF0aW9uS2V5cy5QQVNTV09SRCk7XG4gIGNvbnN0IG1ldGE6IFBhdHRlcm5WYWxpZGF0b3JPcHRpb25zID0ge1xuICAgIFtWYWxpZGF0aW9uS2V5cy5QQVRURVJOXTogcGF0dGVybi50b1N0cmluZygpLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgdHlwZXM6IFtTdHJpbmcubmFtZV0sXG4gICAgZGVzY3JpcHRpb246IGBhdHRyaWJ1dGUgYXMgYSBwYXNzd29yZGAsXG4gICAgYXN5bmM6IGZhbHNlLFxuICB9O1xuICByZXR1cm4gRGVjb3JhdGlvbi5mb3Ioa2V5KVxuICAgIC5kZWZpbmUoe1xuICAgICAgZGVjb3JhdG9yOiB2YWxpZGF0aW9uTWV0YWRhdGEsXG4gICAgICBhcmdzOiBbcGFzc3dvcmQsIGtleSwgbWV0YV0sXG4gICAgfSlcbiAgICAuYXBwbHkoKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0TWV0YWRhdGEgZXh0ZW5kcyBMaXN0VmFsaWRhdG9yT3B0aW9ucyB7XG4gIHR5cGU6IFwiQXJyYXlcIiB8IFwiU2V0XCI7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgTGlzdCBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBBbHNvIHNldHMgdGhlIHtAbGluayB0eXBlfSB0byB0aGUgcHJvdmlkZWQgY29sbGVjdGlvblxuICpcbiAqIEBwYXJhbSB7TW9kZWxDb25zdHJ1Y3Rvcn0gY2xhenpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29sbGVjdGlvbl0gVGhlIGNvbGxlY3Rpb24gYmVpbmcgdXNlZC4gZGVmYXVsdHMgdG8gQXJyYXlcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gZGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTElTVH1cbiAqXG4gKiBAZnVuY3Rpb24gbGlzdFxuICpcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0KFxuICBjbGF6ejpcbiAgICB8IENvbnN0cnVjdG9yPGFueT5cbiAgICB8ICgoKSA9PiBDb25zdHJ1Y3Rvcjxhbnk+KVxuICAgIHwgKENvbnN0cnVjdG9yPGFueT4gfCAoKCkgPT4gQ29uc3RydWN0b3I8YW55PikpW10sXG4gIGNvbGxlY3Rpb246IFwiQXJyYXlcIiB8IFwiU2V0XCIgPSBcIkFycmF5XCIsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuTElTVFxuKSB7XG4gIGNvbnN0IGtleSA9IFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLkxJU1QpO1xuICBjb25zdCBtZXRhOiBMaXN0TWV0YWRhdGEgPSB7XG4gICAgY2xheno6IChBcnJheS5pc0FycmF5KGNsYXp6KVxuICAgICAgPyBjbGF6ei5tYXAoKGMpID0+IChjLm5hbWUgPyBjLm5hbWUgOiBjKSlcbiAgICAgIDogW2NsYXp6Lm5hbWUgPyBjbGF6ei5uYW1lIDogY2xhenpdKSBhcyAoXG4gICAgICB8IHN0cmluZ1xuICAgICAgfCAoKCkgPT4gQ29uc3RydWN0b3I8YW55PilcbiAgICApW10sXG4gICAgdHlwZTogY29sbGVjdGlvbixcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIGFzeW5jOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjogYGRlZmluZXMgdGhlIGF0dHJpYnV0ZSBhcyBhICR7Y29sbGVjdGlvbn0gb2YgJHsoY2xhenogYXMgTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+KS5uYW1lfWAsXG4gIH07XG4gIHJldHVybiBEZWNvcmF0aW9uLmZvcihrZXkpXG4gICAgLmRlZmluZSh7XG4gICAgICBkZWNvcmF0b3I6IHZhbGlkYXRpb25NZXRhZGF0YSxcbiAgICAgIGFyZ3M6IFtsaXN0LCBrZXksIG1ldGFdLFxuICAgIH0pXG4gICAgLmFwcGx5KCk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgU2V0IERlY29yYXRvclxuICogQGRlc2NyaXB0aW9uIFdyYXBwZXIgZm9yIHtAbGluayBsaXN0fSB3aXRoIHRoZSAnU2V0JyBDb2xsZWN0aW9uXG4gKlxuICogQHBhcmFtIHtNb2RlbENvbnN0cnVjdG9yfSBjbGF6elxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSBkZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNMSVNUfVxuICpcbiAqIEBmdW5jdGlvbiBzZXRcbiAqXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0KFxuICBjbGF6ejogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+LFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkxJU1Rcbikge1xuICByZXR1cm4gbGlzdChjbGF6eiwgXCJTZXRcIiwgbWVzc2FnZSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVjbGFyZXMgdGhhdCB0aGUgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgYmUgZXF1YWwgdG8gYW5vdGhlciBzcGVjaWZpZWQgcHJvcGVydHkuXG4gKiBAZGVzY3JpcHRpb24gQXBwbGllcyB0aGUge0BsaW5rIFZhbGlkYXRpb25LZXlzLkVRVUFMU30gdmFsaWRhdG9yIHRvIGVuc3VyZSB0aGUgZGVjb3JhdGVkIHZhbHVlIG1hdGNoZXMgdGhlIHZhbHVlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHlUb0NvbXBhcmUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gY29tcGFyZSBlcXVhbGl0eSBhZ2FpbnN0LlxuICogQHBhcmFtIHtDb21wYXJpc29uVmFsaWRhdG9yT3B0aW9uc30gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIHRoZSB2YWxpZGF0b3IuXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubGFiZWxdIC0gVGhlIGxhYmVsIHRleHQgZGlzcGxheWVkIGluIHRoZSBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm1lc3NhZ2U9REVGQVVMVF9FUlJPUl9NRVNTQUdFUy5FUVVBTFNdIC0gQ3VzdG9tIGVycm9yIG1lc3NhZ2UgdG8gYmUgcmV0dXJuZWQgaWYgdmFsaWRhdGlvbiBmYWlscy5cbiAqXG4gKiBAcmV0dXJucyB7UHJvcGVydHlEZWNvcmF0b3J9IEEgcHJvcGVydHkgZGVjb3JhdG9yIHVzZWQgdG8gcmVnaXN0ZXIgdGhlIGVxdWFsaXR5IHZhbGlkYXRpb24gbWV0YWRhdGEuXG4gKlxuICogQGZ1bmN0aW9uIGVxXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZXEoXG4gIHByb3BlcnR5VG9Db21wYXJlOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PENvbXBhcmlzb25WYWxpZGF0b3JPcHRpb25zLCBcImFzeW5jXCIgfCBcImRlc2NyaXB0aW9uXCI+XG4gIC8vIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuRVFVQUxTXG4pIHtcbiAgY29uc3QgZXF1YWxzT3B0aW9uczogRXF1YWxzVmFsaWRhdG9yT3B0aW9ucyA9IHtcbiAgICBsYWJlbDogb3B0aW9ucz8ubGFiZWwgfHwgcHJvcGVydHlUb0NvbXBhcmUsXG4gICAgbWVzc2FnZTogb3B0aW9ucz8ubWVzc2FnZSB8fCBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkVRVUFMUyxcbiAgICBbVmFsaWRhdGlvbktleXMuRVFVQUxTXTogcHJvcGVydHlUb0NvbXBhcmUsXG4gICAgZGVzY3JpcHRpb246IGBkZWZpbmVzIGF0dHJpYnV0ZSBhcyBlcXVhbCB0byAke3Byb3BlcnR5VG9Db21wYXJlfWAsXG4gIH07XG5cbiAgcmV0dXJuIHZhbGlkYXRpb25NZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFxuICAgIGVxLFxuICAgIFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLkVRVUFMUyksXG4gICAgeyAuLi5lcXVhbHNPcHRpb25zLCBhc3luYzogZmFsc2UgfSBhcyBWYWxpZGF0aW9uTWV0YWRhdGFcbiAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWNsYXJlcyB0aGF0IHRoZSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCBiZSBkaWZmZXJlbnQgZnJvbSBhbm90aGVyIHNwZWNpZmllZCBwcm9wZXJ0eS5cbiAqIEBkZXNjcmlwdGlvbiBBcHBsaWVzIHRoZSB7QGxpbmsgVmFsaWRhdGlvbktleXMuRElGRn0gdmFsaWRhdG9yIHRvIGVuc3VyZSB0aGUgZGVjb3JhdGVkIHZhbHVlIGlzIGRpZmZlcmVudCBmcm9tIHRoZSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5VG9Db21wYXJlIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGNvbXBhcmUgZGlmZmVyZW5jZSBhZ2FpbnN0LlxuICogQHBhcmFtIHtDb21wYXJpc29uVmFsaWRhdG9yT3B0aW9uc30gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIHRoZSB2YWxpZGF0b3IuXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubGFiZWxdIC0gVGhlIGxhYmVsIHRleHQgZGlzcGxheWVkIGluIHRoZSBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm1lc3NhZ2U9REVGQVVMVF9FUlJPUl9NRVNTQUdFUy5ESUZGXSAtIEN1c3RvbSBlcnJvciBtZXNzYWdlIHRvIGJlIHJldHVybmVkIGlmIHZhbGlkYXRpb24gZmFpbHMuXG4gKlxuICogQHJldHVybnMge1Byb3BlcnR5RGVjb3JhdG9yfSBBIHByb3BlcnR5IGRlY29yYXRvciB1c2VkIHRvIHJlZ2lzdGVyIHRoZSBkaWZmZXJlbmNlIHZhbGlkYXRpb24gbWV0YWRhdGEuXG4gKlxuICogQGZ1bmN0aW9uIGRpZmZcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmKFxuICBwcm9wZXJ0eVRvQ29tcGFyZTogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxDb21wYXJpc29uVmFsaWRhdG9yT3B0aW9ucywgXCJhc3luY1wiIHwgXCJkZXNjcmlwdGlvblwiPlxuKSB7XG4gIGNvbnN0IGRpZmZPcHRpb25zOiBEaWZmVmFsaWRhdG9yT3B0aW9ucyA9IHtcbiAgICBsYWJlbDogb3B0aW9ucz8ubGFiZWwgfHwgcHJvcGVydHlUb0NvbXBhcmUsXG4gICAgbWVzc2FnZTogb3B0aW9ucz8ubWVzc2FnZSB8fCBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkRJRkYsXG4gICAgW1ZhbGlkYXRpb25LZXlzLkRJRkZdOiBwcm9wZXJ0eVRvQ29tcGFyZSxcbiAgICBkZXNjcmlwdGlvbjogYGRlZmluZXMgYXR0cmlidXRlIGFzIGRpZmZlcmVudCB0byAke3Byb3BlcnR5VG9Db21wYXJlfWAsXG4gIH07XG5cbiAgcmV0dXJuIHZhbGlkYXRpb25NZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFxuICAgIGRpZmYsXG4gICAgVmFsaWRhdGlvbi5rZXkoVmFsaWRhdGlvbktleXMuRElGRiksXG4gICAge1xuICAgICAgLi4uZGlmZk9wdGlvbnMsXG4gICAgICBhc3luYzogZmFsc2UsXG4gICAgfSBhcyBWYWxpZGF0aW9uTWV0YWRhdGFcbiAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWNsYXJlcyB0aGF0IHRoZSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCBiZSBsZXNzIHRoYW4gYW5vdGhlciBzcGVjaWZpZWQgcHJvcGVydHkuXG4gKiBAZGVzY3JpcHRpb24gQXBwbGllcyB0aGUge0BsaW5rIFZhbGlkYXRpb25LZXlzLkxFU1NfVEhBTn0gdmFsaWRhdG9yIHRvIGVuc3VyZSB0aGUgZGVjb3JhdGVkIHZhbHVlIGlzIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eVRvQ29tcGFyZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBjb21wYXJlIGFnYWluc3QuXG4gKiBAcGFyYW0ge0NvbXBhcmlzb25WYWxpZGF0b3JPcHRpb25zfSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgdGhlIHZhbGlkYXRvci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sYWJlbF0gLSBUaGUgbGFiZWwgdGV4dCBkaXNwbGF5ZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubWVzc2FnZT1ERUZBVUxUX0VSUk9SX01FU1NBR0VTLkxFU1NfVEhBTl0gLSBDdXN0b20gZXJyb3IgbWVzc2FnZSB0byBiZSByZXR1cm5lZCBpZiB2YWxpZGF0aW9uIGZhaWxzLlxuICpcbiAqIEByZXR1cm5zIHtQcm9wZXJ0eURlY29yYXRvcn0gQSBwcm9wZXJ0eSBkZWNvcmF0b3IgdXNlZCB0byByZWdpc3RlciB0aGUgbGVzcyB0aGFuIHZhbGlkYXRpb24gbWV0YWRhdGEuXG4gKlxuICogQGZ1bmN0aW9uIGx0XG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbHQoXG4gIHByb3BlcnR5VG9Db21wYXJlOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PENvbXBhcmlzb25WYWxpZGF0b3JPcHRpb25zLCBcImFzeW5jXCIgfCBcImRlc2NyaXB0aW9uXCI+XG4pIHtcbiAgY29uc3QgbHRPcHRpb25zOiBMZXNzVGhhblZhbGlkYXRvck9wdGlvbnMgPSB7XG4gICAgbGFiZWw6IG9wdGlvbnM/LmxhYmVsIHx8IHByb3BlcnR5VG9Db21wYXJlLFxuICAgIG1lc3NhZ2U6IG9wdGlvbnM/Lm1lc3NhZ2UgfHwgREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5MRVNTX1RIQU4sXG4gICAgW1ZhbGlkYXRpb25LZXlzLkxFU1NfVEhBTl06IHByb3BlcnR5VG9Db21wYXJlLFxuICAgIGRlc2NyaXB0aW9uOiBgZGVmaW5lcyBhdHRyaWJ1dGUgYXMgbGVzcyB0aGFuIHRvICR7cHJvcGVydHlUb0NvbXBhcmV9YCxcbiAgfTtcblxuICByZXR1cm4gdmFsaWRhdGlvbk1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oXG4gICAgbHQsXG4gICAgVmFsaWRhdGlvbi5rZXkoVmFsaWRhdGlvbktleXMuTEVTU19USEFOKSxcbiAgICB7IC4uLmx0T3B0aW9ucywgYXN5bmM6IGZhbHNlIH0gYXMgVmFsaWRhdGlvbk1ldGFkYXRhXG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVjbGFyZXMgdGhhdCB0aGUgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgYmUgZXF1YWwgb3IgbGVzcyB0aGFuIGFub3RoZXIgc3BlY2lmaWVkIHByb3BlcnR5LlxuICogQGRlc2NyaXB0aW9uIEFwcGxpZXMgdGhlIHtAbGluayBWYWxpZGF0aW9uS2V5cy5MRVNTX1RIQU5fT1JfRVFVQUx9IHZhbGlkYXRvciB0byBlbnN1cmUgdGhlIGRlY29yYXRlZCB2YWx1ZSBpcyBlcXVhbCBvciBsZXNzIHRoYW4gdGhlIHZhbHVlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHlUb0NvbXBhcmUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gY29tcGFyZSBhZ2FpbnN0LlxuICogQHBhcmFtIHtDb21wYXJpc29uVmFsaWRhdG9yT3B0aW9uc30gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIHRoZSB2YWxpZGF0b3IuXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubGFiZWxdIC0gVGhlIGxhYmVsIHRleHQgZGlzcGxheWVkIGluIHRoZSBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm1lc3NhZ2U9REVGQVVMVF9FUlJPUl9NRVNTQUdFUy5MRVNTX1RIQU5fT1JfRVFVQUxdIC0gQ3VzdG9tIGVycm9yIG1lc3NhZ2UgdG8gYmUgcmV0dXJuZWQgaWYgdmFsaWRhdGlvbiBmYWlscy5cbiAqXG4gKiBAcmV0dXJucyB7UHJvcGVydHlEZWNvcmF0b3J9IEEgcHJvcGVydHkgZGVjb3JhdG9yIHVzZWQgdG8gcmVnaXN0ZXIgdGhlIGxlc3MgdGhhbiBvciBlcXVhbCB2YWxpZGF0aW9uIG1ldGFkYXRhLlxuICpcbiAqIEBmdW5jdGlvbiBsdGVcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsdGUoXG4gIHByb3BlcnR5VG9Db21wYXJlOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PENvbXBhcmlzb25WYWxpZGF0b3JPcHRpb25zLCBcImFzeW5jXCIgfCBcImRlc2NyaXB0aW9uXCI+XG4pIHtcbiAgY29uc3QgbHRlT3B0aW9uczogTGVzc1RoYW5PckVxdWFsVmFsaWRhdG9yT3B0aW9ucyA9IHtcbiAgICBsYWJlbDogb3B0aW9ucz8ubGFiZWwgfHwgcHJvcGVydHlUb0NvbXBhcmUsXG4gICAgbWVzc2FnZTogb3B0aW9ucz8ubWVzc2FnZSB8fCBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkxFU1NfVEhBTl9PUl9FUVVBTCxcbiAgICBbVmFsaWRhdGlvbktleXMuTEVTU19USEFOX09SX0VRVUFMXTogcHJvcGVydHlUb0NvbXBhcmUsXG4gICAgZGVzY3JpcHRpb246IGBkZWZpbmVzIGF0dHJpYnV0ZSBhcyBsZXNzIG9yIGVxdWFsIHRvICR7cHJvcGVydHlUb0NvbXBhcmV9YCxcbiAgfTtcblxuICByZXR1cm4gdmFsaWRhdGlvbk1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oXG4gICAgbHRlLFxuICAgIFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLkxFU1NfVEhBTl9PUl9FUVVBTCksXG4gICAgeyAuLi5sdGVPcHRpb25zLCBhc3luYzogZmFsc2UgfSBhcyBWYWxpZGF0aW9uTWV0YWRhdGFcbiAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWNsYXJlcyB0aGF0IHRoZSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gYW5vdGhlciBzcGVjaWZpZWQgcHJvcGVydHkuXG4gKiBAZGVzY3JpcHRpb24gQXBwbGllcyB0aGUge0BsaW5rIFZhbGlkYXRpb25LZXlzLkdSRUFURVJfVEhBTn0gdmFsaWRhdG9yIHRvIGVuc3VyZSB0aGUgZGVjb3JhdGVkIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eVRvQ29tcGFyZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBjb21wYXJlIGFnYWluc3QuXG4gKiBAcGFyYW0ge0NvbXBhcmlzb25WYWxpZGF0b3JPcHRpb25zfSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgdGhlIHZhbGlkYXRvci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sYWJlbF0gLSBUaGUgbGFiZWwgdGV4dCBkaXNwbGF5ZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubWVzc2FnZT1ERUZBVUxUX0VSUk9SX01FU1NBR0VTLkdSRUFURVJfVEhBTl0gLSBDdXN0b20gZXJyb3IgbWVzc2FnZSB0byBiZSByZXR1cm5lZCBpZiB2YWxpZGF0aW9uIGZhaWxzLlxuICpcbiAqIEByZXR1cm5zIHtQcm9wZXJ0eURlY29yYXRvcn0gQSBwcm9wZXJ0eSBkZWNvcmF0b3IgdXNlZCB0byByZWdpc3RlciB0aGUgZ3JlYXRlciB0aGFuIHZhbGlkYXRpb24gbWV0YWRhdGEuXG4gKlxuICogQGZ1bmN0aW9uIGd0XG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ3QoXG4gIHByb3BlcnR5VG9Db21wYXJlOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PENvbXBhcmlzb25WYWxpZGF0b3JPcHRpb25zLCBcImFzeW5jXCIgfCBcImRlc2NyaXB0aW9uXCI+XG4pIHtcbiAgY29uc3QgZ3RPcHRpb25zOiBHcmVhdGVyVGhhblZhbGlkYXRvck9wdGlvbnMgPSB7XG4gICAgbGFiZWw6IG9wdGlvbnM/LmxhYmVsIHx8IHByb3BlcnR5VG9Db21wYXJlLFxuICAgIG1lc3NhZ2U6IG9wdGlvbnM/Lm1lc3NhZ2UgfHwgREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5HUkVBVEVSX1RIQU4sXG4gICAgW1ZhbGlkYXRpb25LZXlzLkdSRUFURVJfVEhBTl06IHByb3BlcnR5VG9Db21wYXJlLFxuICAgIGRlc2NyaXB0aW9uOiBgZGVmaW5lcyBhdHRyaWJ1dGUgYXMgZ3JlYXRlciB0aGFuICR7cHJvcGVydHlUb0NvbXBhcmV9YCxcbiAgfTtcblxuICByZXR1cm4gdmFsaWRhdGlvbk1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oXG4gICAgZ3QsXG4gICAgVmFsaWRhdGlvbi5rZXkoVmFsaWRhdGlvbktleXMuR1JFQVRFUl9USEFOKSxcbiAgICB7IC4uLmd0T3B0aW9ucywgYXN5bmM6IGZhbHNlIH0gYXMgVmFsaWRhdGlvbk1ldGFkYXRhXG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVjbGFyZXMgdGhhdCB0aGUgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgYmUgZXF1YWwgb3IgZ3JlYXRlciB0aGFuIGFub3RoZXIgc3BlY2lmaWVkIHByb3BlcnR5LlxuICogQGRlc2NyaXB0aW9uIEFwcGxpZXMgdGhlIHtAbGluayBWYWxpZGF0aW9uS2V5cy5HUkVBVEVSX1RIQU5fT1JfRVFVQUx9IHZhbGlkYXRvciB0byBlbnN1cmUgdGhlIGRlY29yYXRlZCB2YWx1ZSBpcyBlcXVhbCBvciBncmVhdGVyIHRoYW4gdGhlIHZhbHVlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHlUb0NvbXBhcmUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gY29tcGFyZSBhZ2FpbnN0LlxuICogQHBhcmFtIHtDb21wYXJpc29uVmFsaWRhdG9yT3B0aW9uc30gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIHRoZSB2YWxpZGF0b3IuXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubGFiZWxdIC0gVGhlIGxhYmVsIHRleHQgZGlzcGxheWVkIGluIHRoZSBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm1lc3NhZ2U9REVGQVVMVF9FUlJPUl9NRVNTQUdFUy5HUkVBVEVSX1RIQU5fT1JfRVFVQUxdIC0gQ3VzdG9tIGVycm9yIG1lc3NhZ2UgdG8gYmUgcmV0dXJuZWQgaWYgdmFsaWRhdGlvbiBmYWlscy5cbiAqXG4gKiBAcmV0dXJucyB7UHJvcGVydHlEZWNvcmF0b3J9IEEgcHJvcGVydHkgZGVjb3JhdG9yIHVzZWQgdG8gcmVnaXN0ZXIgdGhlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB2YWxpZGF0aW9uIG1ldGFkYXRhLlxuICpcbiAqIEBmdW5jdGlvbiBndGVcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndGUoXG4gIHByb3BlcnR5VG9Db21wYXJlOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PENvbXBhcmlzb25WYWxpZGF0b3JPcHRpb25zLCBcImFzeW5jXCIgfCBcImRlc2NyaXB0aW9uXCI+XG4pIHtcbiAgY29uc3QgZ3RlT3B0aW9uczogR3JlYXRlclRoYW5PckVxdWFsVmFsaWRhdG9yT3B0aW9ucyA9IHtcbiAgICBsYWJlbDogb3B0aW9ucz8ubGFiZWwgfHwgcHJvcGVydHlUb0NvbXBhcmUsXG4gICAgbWVzc2FnZTogb3B0aW9ucz8ubWVzc2FnZSB8fCBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkdSRUFURVJfVEhBTl9PUl9FUVVBTCxcbiAgICBbVmFsaWRhdGlvbktleXMuR1JFQVRFUl9USEFOX09SX0VRVUFMXTogcHJvcGVydHlUb0NvbXBhcmUsXG4gICAgZGVzY3JpcHRpb246IGBkZWZpbmVzIGF0dHJpYnV0ZSBhcyBncmVhdGVyIG9yIGVxdWFsIHRvICR7cHJvcGVydHlUb0NvbXBhcmV9YCxcbiAgfTtcblxuICByZXR1cm4gdmFsaWRhdGlvbk1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oXG4gICAgZ3RlLFxuICAgIFZhbGlkYXRpb24ua2V5KFZhbGlkYXRpb25LZXlzLkdSRUFURVJfVEhBTl9PUl9FUVVBTCksXG4gICAgeyAuLi5ndGVPcHRpb25zLCBhc3luYzogZmFsc2UgfSBhcyBWYWxpZGF0aW9uTWV0YWRhdGFcbiAgKTtcbn1cbiJdfQ==
|
|
589
|
+
//# sourceMappingURL=decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/validation/decorators.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,4 @@ export * from "./Validators/index.js";
|
|
|
2
2
|
export * from "./decorators.js";
|
|
3
3
|
export * from "./types.js";
|
|
4
4
|
export * from "./Validation.js";
|
|
5
|
-
//# sourceMappingURL=
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/validation/index.ts"],"names":[],"mappings":"AAAA,sCAA6B;AAC7B,gCAA6B;AAC7B,2BAAwB;AACxB,gCAA6B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { ValidationKeys } from "./Validators/index.js";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsY0FBYyxFQUFhLDhCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29yYXRvck1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9tb2RlbFwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbktleXMsIFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvcnNcIjtcbmltcG9ydCB7IElSZWdpc3RyeSB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGRlZmluaXRpb24gZm9yIG1ldGFkYXRhIHVzZWQgYnkgdmFsaWRhdGlvbiBkZWNvcmF0b3JzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbWV0YWRhdGEgYXR0YWNoZWQgdG8gcHJvcGVydGllcyBieSB2YWxpZGF0aW9uIGRlY29yYXRvcnMuXG4gKiBUaGlzIG1ldGFkYXRhIGlzIHVzZWQgZHVyaW5nIHZhbGlkYXRpb24gdG8gZGV0ZXJtaW5lIHZhbGlkYXRpb24gcnVsZXMgYW5kIGVycm9yIG1lc3NhZ2VzLlxuICpcbiAqIEBwcm9wZXJ0eSB7YW55W119IFthcmdzXSAtIE9wdGlvbmFsIGFyZ3VtZW50cyBmb3IgdGhlIHZhbGlkYXRvclxuICogQHByb3BlcnR5IHtzdHJpbmd9IG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB2YWxpZGF0aW9uIGZhaWxzXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBbdHlwZXNdIC0gQXJyYXkgb2YgdHlwZSBuYW1lcyB0aGF0IHRoZSBwcm9wZXJ0eSBjYW4gaGF2ZVxuICogQHByb3BlcnR5IHtib29sZWFufSBhc3luYyAtIEluZGljYXRlcyB3aGV0aGVyIHRoZSB2YWxpZGF0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZWNvcmF0b3IgcGVyZm9ybXMgYXN5bmNocm9ub3VzIHZhbGlkYXRpb24gbG9naWMuXG4gKiBVc2UgYHRydWVgIHdoZW4gdGhlIHZhbGlkYXRvciByZXR1cm5zIGEgUHJvbWlzZSwgYW5kIGBmYWxzZWAgd2hlbiB0aGUgdmFsaWRhdGlvbiBpcyBzeW5jaHJvbm91cy5cbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBWYWxpZGF0aW9uTWV0YWRhdGFcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25NZXRhZGF0YSA9IHtcbiAgW2luZGV4ZXI6IHN0cmluZ106IGFueTtcbiAgYXJncz86IGFueVtdO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG4gIGFzeW5jOiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSBkZWZpbml0aW9uIGZvciBwcm9wZXJ0eS1sZXZlbCB2YWxpZGF0aW9uIGRlY29yYXRvciBjb25maWd1cmF0aW9uXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgdGhhdCBhc3NvY2lhdGVzIGEgcHJvcGVydHkgd2l0aCBpdHMgdmFsaWRhdGlvbiBkZWNvcmF0b3JzLlxuICogVGhpcyB0eXBlIGlzIHVzZWQgdG8gdHJhY2sgd2hpY2ggZGVjb3JhdG9ycyBhcmUgYXBwbGllZCB0byBhIHNwZWNpZmljIHByb3BlcnR5IGR1cmluZyB2YWxpZGF0aW9uLlxuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfHN5bWJvbH0gcHJvcCAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9yIHN5bWJvbCB0aGF0IHRoZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIHRvXG4gKiBAcHJvcGVydHkge1ZhbGlkYXRpb25EZWNvcmF0b3JEZWZpbml0aW9uW119IGRlY29yYXRvcnMgLSBBcnJheSBvZiBkZWNvcmF0b3IgZGVmaW5pdGlvbnMgYXBwbGllZCB0byB0aGUgcHJvcGVydHlcbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBWYWxpZGF0aW9uUHJvcGVydHlEZWNvcmF0b3JEZWZpbml0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUHJvcGVydHlEZWNvcmF0b3JEZWZpbml0aW9uID0ge1xuICBwcm9wOiBzdHJpbmcgfCBzeW1ib2w7XG4gIGRlY29yYXRvcnM6IFZhbGlkYXRpb25EZWNvcmF0b3JEZWZpbml0aW9uW107XG4gIGFzeW5jPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgZGVmaW5pdGlvbiBmb3IgaW5kaXZpZHVhbCB2YWxpZGF0aW9uIGRlY29yYXRvciBtZXRhZGF0YVxuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgYmFzZSBEZWNvcmF0b3JNZXRhZGF0YSB0eXBlIHdpdGggdmFsaWRhdGlvbi1zcGVjaWZpYyBwcm9wZXJ0aWVzLlxuICogVGhpcyB0eXBlIHJlcHJlc2VudHMgdGhlIG1ldGFkYXRhIGZvciBhIHNpbmdsZSB2YWxpZGF0aW9uIGRlY29yYXRvciBhcHBsaWVkIHRvIGEgcHJvcGVydHkuXG4gKlxuICogQHByb3BlcnR5IHtWYWxpZGF0aW9uRWxlbWVudERlZmluaXRpb259IHByb3BzIC0gVGhlIHZhbGlkYXRpb24gZWxlbWVudCBwcm9wZXJ0aWVzIGFuZCBjb25maWd1cmF0aW9uXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gVmFsaWRhdGlvbkRlY29yYXRvckRlZmluaXRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25EZWNvcmF0b3JEZWZpbml0aW9uID0gRGVjb3JhdG9yTWV0YWRhdGEgJiB7XG4gIHByb3BzOiBWYWxpZGF0aW9uRWxlbWVudERlZmluaXRpb247XG4gIGFzeW5jPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgVHlwZSBmb3IgYSB2YWxpZGF0b3IgZWxlbWVudCBtZXRhZGF0YVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkVsZW1lbnREZWZpbml0aW9uID0ge1xuICBbaW5kZXhlcjogc3RyaW5nXTogYW55O1xuXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIGEgbW9kZWwgZXJyb3JzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBNb2RlbEVycm9ycyA9IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4+O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFV0aWwgdHlwZSBmb3Ige0BsaW5rIFZhbGlkYXRvcn0gY29uZmlndXJhdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdG9yRGVmaW5pdGlvbiA9IHtcbiAgdmFsaWRhdG9yOiBDb25zdHJ1Y3RvcjxWYWxpZGF0b3I+O1xuICB2YWxpZGF0aW9uS2V5OiBzdHJpbmc7XG4gIHNhdmU6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGEgcmVnaXN0cnkgdGhhdCBtYW5hZ2VzIHZhbGlkYXRvciBpbnN0YW5jZXNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbnRyYWN0IGZvciBhIHJlZ2lzdHJ5IHRoYXQgc3RvcmVzIGFuZCByZXRyaWV2ZXMgdmFsaWRhdG9ycy5cbiAqIFRoZSByZWdpc3RyeSBpcyByZXNwb25zaWJsZSBmb3IgbWFpbnRhaW5pbmcgYSBjb2xsZWN0aW9uIG9mIHZhbGlkYXRvcnMgYW5kIHByb3ZpZGluZ1xuICogYWNjZXNzIHRvIHRoZW0gYnkga2V5LlxuICpcbiAqIEBpbnRlcmZhY2UgSVZhbGlkYXRvclJlZ2lzdHJ5XG4gKiBAdGVtcGxhdGUgVCBUeXBlIG9mIHZhbGlkYXRvciwgbXVzdCBleHRlbmQgVmFsaWRhdG9yXG4gKiBAZXh0ZW5kcyBJUmVnaXN0cnk8VD5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkYXRvclJlZ2lzdHJ5PFQgZXh0ZW5kcyBWYWxpZGF0b3I+IGV4dGVuZHMgSVJlZ2lzdHJ5PFQ+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgY3VzdG9tIHZhbGlkYXRpb24ga2V5cyBkZWZpbmVkIGluIHRoZSByZWdpc3RyeVxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIGEgbWFwcGluZyBvZiBjdXN0b20gdmFsaWRhdGlvbiBrZXlzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgc3RhbmRhcmQga2V5cy5cbiAgICogVGhpcyBhbGxvd3MgZm9yIGFsaWFzaW5nIHZhbGlkYXRpb24ga2V5cyBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBPYmplY3QgbWFwcGluZyBjdXN0b20ga2V5cyB0byBzdGFuZGFyZCB2YWxpZGF0aW9uIGtleXNcbiAgICovXG4gIGdldEN1c3RvbUtleXMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgYWxsIHJlZ2lzdGVyZWQgdmFsaWRhdG9yIGtleXNcbiAgICogQHN1bW1hcnkgUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdmFsaWRhdGlvbiBrZXlzIHRoYXQgaGF2ZSByZWdpc3RlcmVkIHZhbGlkYXRvcnMuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSBBcnJheSBvZiByZWdpc3RlcmVkIHZhbGlkYXRvciBrZXlzXG4gICAqL1xuICBnZXRLZXlzKCk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXJzIG9uZSBvciBtb3JlIHZhbGlkYXRvcnMgd2l0aCB0aGUgcmVnaXN0cnlcbiAgICogQHN1bW1hcnkgQWRkcyB2YWxpZGF0b3JzIHRvIHRoZSByZWdpc3RyeSwgbWFraW5nIHRoZW0gYXZhaWxhYmxlIGZvciB2YWxpZGF0aW9uIG9wZXJhdGlvbnMuXG4gICAqIFZhbGlkYXRvcnMgY2FuIGJlIHByb3ZpZGVkIGFzIGluc3RhbmNlcyBvciBhcyB2YWxpZGF0b3IgZGVmaW5pdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Li4uKFR8VmFsaWRhdG9yRGVmaW5pdGlvbil9IHZhbGlkYXRvciAtIFZhbGlkYXRvciBpbnN0YW5jZXMgb3IgZGVmaW5pdGlvbnMgdG8gcmVnaXN0ZXJcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHJlZ2lzdGVyPFQgZXh0ZW5kcyBWYWxpZGF0b3I+KFxuICAgIC4uLnZhbGlkYXRvcjogKFQgfCBWYWxpZGF0b3JEZWZpbml0aW9uKVtdXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSB2YWxpZGF0b3IgYnkgaXRzIGtleVxuICAgKiBAc3VtbWFyeSBMb29rcyB1cCBhIHZhbGlkYXRvciBpbiB0aGUgcmVnaXN0cnkgdXNpbmcgaXRzIHZhbGlkYXRpb24ga2V5LlxuICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0b3IgaWYgZm91bmQsIG9yIHVuZGVmaW5lZCBpZiBubyB2YWxpZGF0b3IgaXMgcmVnaXN0ZXJlZCBmb3IgdGhlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSB2YWxpZGF0aW9uIGtleSB0byBsb29rIHVwLCB0eXBpY2FsbHkgb25lIG9mIHRoZSB7QGxpbmsgVmFsaWRhdGlvbktleXN9XG4gICAqIEByZXR1cm4ge1R8dW5kZWZpbmVkfSBUaGUgcmVnaXN0ZXJlZCB2YWxpZGF0b3Igb3IgdW5kZWZpbmVkIGlmIG5vbmUgbWF0Y2hlcyB0aGUgcHJvdmlkZWQga2V5XG4gICAqL1xuICBnZXQ8VCBleHRlbmRzIFZhbGlkYXRvcj4oa2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNlIG9wdGlvbnMgdHlwZSBmb3IgYWxsIHZhbGlkYXRvcnNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbW1vbiBwcm9wZXJ0aWVzIGF2YWlsYWJsZSB0byBhbGwgdmFsaWRhdG9yc1xuICogQGludGVyZmFjZSBWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW21lc3NhZ2VdIC0gQ3VzdG9tIGVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSB3aGVuIHZhbGlkYXRpb24gZmFpbHNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gYXN5bmMgLSBJbmRpY2F0ZXMgd2hldGhlciB0aGUgdmFsaWRhdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVjb3JhdG9yIHBlcmZvcm1zIGFzeW5jaHJvbm91cyB2YWxpZGF0aW9uIGxvZ2ljLlxuICogVXNlIGB0cnVlYCB3aGVuIHRoZSB2YWxpZGF0b3IgcmV0dXJucyBhIFByb21pc2UsIGFuZCBgZmFsc2VgIHdoZW4gdGhlIHZhbGlkYXRpb24gaXMgc3luY2hyb25vdXMuXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvck9wdGlvbnMge1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgYXN5bmM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBVUkwgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBVUkwgdmFsaWRhdGlvbiwgaW5jbHVkaW5nIGFsbG93ZWQgVVJMIHR5cGVzXG4gKiBAaW50ZXJmYWNlIFVSTFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7KHN0cmluZ3xzdHJpbmdbXXx7IG5hbWU6IHN0cmluZyB9KX0gdHlwZXMgLSBTcGVjaWZpZXMgdGhlIGFsbG93ZWQgVVJMIHR5cGVzIG9yIHBhdHRlcm5zXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVSTFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgdHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgeyBuYW1lOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIHR5cGUgdmFsaWRhdGlvbiwgc3BlY2lmeWluZyBhbGxvd2VkIHR5cGVzXG4gKiBAaW50ZXJmYWNlIFR5cGVWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhzdHJpbmd8c3RyaW5nW118eyBuYW1lOiBzdHJpbmcgfSl9IHR5cGUgLSBTcGVjaWZpZXMgdGhlIGFsbG93ZWQgZGF0YSB0eXBlc1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICB0eXBlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHsgbmFtZTogc3RyaW5nIH07XG4gIGN1c3RvbVR5cGVzPzogKHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpKVtdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTdGVwIHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3Igc3RlcCB2YWxpZGF0aW9uLCBzcGVjaWZ5aW5nIHRoZSBzdGVwIGluY3JlbWVudFxuICogQGludGVyZmFjZSBTdGVwVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHsobnVtYmVyfHN0cmluZyl9IFtWYWxpZGF0aW9uS2V5cy5TVEVQXSAtIFRoZSBzdGVwIHZhbHVlIGZvciBudW1lcmljYWwgdmFsaWRhdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGVwVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuU1RFUF06IG51bWJlciB8IHN0cmluZztcbiAgdHlwZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUGF0dGVybiB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIHBhdHRlcm4gdmFsaWRhdGlvbiB1c2luZyByZWd1bGFyIGV4cHJlc3Npb25zXG4gKiBAaW50ZXJmYWNlIFBhdHRlcm5WYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhSZWdFeHB8c3RyaW5nKX0gW1ZhbGlkYXRpb25LZXlzLlBBVFRFUk5dIC0gVGhlIHBhdHRlcm4gdG8gbWF0Y2ggYWdhaW5zdFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuUEFUVEVSTl0/OiBSZWdFeHAgfCBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1pbmltdW0gdmFsdWUgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBtaW5pbXVtIHZhbHVlIHZhbGlkYXRpb25cbiAqIEBpbnRlcmZhY2UgTWluVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHsobnVtYmVyfERhdGV8c3RyaW5nKX0gW1ZhbGlkYXRpb25LZXlzLk1JTl0gLSBUaGUgbWluaW11bSBhbGxvd2VkIHZhbHVlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pblZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLk1JTl06IG51bWJlciB8IERhdGUgfCBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1pbmltdW0gbGVuZ3RoIHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3IgbWluaW11bSBsZW5ndGggdmFsaWRhdGlvblxuICogQGludGVyZmFjZSBNaW5MZW5ndGhWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gW1ZhbGlkYXRpb25LZXlzLk1JTl9MRU5HVEhdIC0gVGhlIG1pbmltdW0gYWxsb3dlZCBsZW5ndGhcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWluTGVuZ3RoVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuTUlOX0xFTkdUSF06IG51bWJlcjtcbiAgdHlwZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWF4aW11bSB2YWx1ZSB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIG1heGltdW0gdmFsdWUgdmFsaWRhdGlvblxuICogQGludGVyZmFjZSBNYXhWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhudW1iZXJ8RGF0ZXxzdHJpbmcpfSBbVmFsaWRhdGlvbktleXMuTUFYXSAtIFRoZSBtYXhpbXVtIGFsbG93ZWQgdmFsdWVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF4VmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuTUFYXTogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZztcbiAgdHlwZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWF4aW11bSBsZW5ndGggdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBtYXhpbXVtIGxlbmd0aCB2YWxpZGF0aW9uXG4gKiBAaW50ZXJmYWNlIE1heExlbmd0aFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbVmFsaWRhdGlvbktleXMuTUFYX0xFTkdUSF0gLSBUaGUgbWF4aW11bSBhbGxvd2VkIGxlbmd0aFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXhMZW5ndGhWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5NQVhfTEVOR1RIXTogbnVtYmVyO1xuICB0eXBlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBMaXN0IHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3IgbGlzdCB2YWxpZGF0aW9uXG4gKiBAaW50ZXJmYWNlIExpc3RWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBjbGF6eiAtIEFycmF5IG9mIGFsbG93ZWQgY2xhc3MgbmFtZXMgb3IgdHlwZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgY2xheno6IChzdHJpbmcgfCAoKCkgPT4gQ29uc3RydWN0b3I8YW55PikpW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFVuaXF1ZSB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIHVuaXF1ZSB2YWxpZGF0aW9uXG4gKiBAaW50ZXJmYWNlIFVuaXF1ZVZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHVuaXF1ZSAtIEFycmF5IG9mIGFsbG93ZWQgY2xhc3MgbmFtZXMgb3IgdHlwZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5pcXVlVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuVU5JUVVFXTogc3RyaW5nW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERhdGUgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBkYXRlIHZhbGlkYXRpb25cbiAqIEBpbnRlcmZhY2UgRGF0ZVZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbVmFsaWRhdGlvbktleXMuRk9STUFUXSAtIFRoZSBleHBlY3RlZCBkYXRlIGZvcm1hdCBwYXR0ZXJuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGVWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5GT1JNQVRdPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmlzb25WYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIGxhYmVsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVxdWFsc1ZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBDb21wYXJpc29uVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5FUVVBTFNdOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlmZlZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBDb21wYXJpc29uVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5ESUZGXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlc3NUaGFuVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIENvbXBhcmlzb25WYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkxFU1NfVEhBTl06IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZXNzVGhhbk9yRXF1YWxWYWxpZGF0b3JPcHRpb25zXG4gIGV4dGVuZHMgQ29tcGFyaXNvblZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuTEVTU19USEFOX09SX0VRVUFMXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyZWF0ZXJUaGFuVmFsaWRhdG9yT3B0aW9uc1xuICBleHRlbmRzIENvbXBhcmlzb25WYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkdSRUFURVJfVEhBTl06IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmVhdGVyVGhhbk9yRXF1YWxWYWxpZGF0b3JPcHRpb25zXG4gIGV4dGVuZHMgQ29tcGFyaXNvblZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuR1JFQVRFUl9USEFOX09SX0VRVUFMXTogc3RyaW5nO1xufVxuIl19
|
|
2
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/validation/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAa,8BAAqB"}
|
package/lib/index.cjs
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.VERSION = void 0;
|
|
17
|
+
exports.PACKAGE_NAME = exports.VERSION = void 0;
|
|
18
18
|
/**
|
|
19
19
|
* @module decorator-validation
|
|
20
20
|
* @description TypeScript decorator-based validation library
|
|
@@ -22,6 +22,7 @@ exports.VERSION = void 0;
|
|
|
22
22
|
* It exposes utility functions, validation decorators, and model-related functionality for
|
|
23
23
|
* implementing type-safe, declarative validation in TypeScript applications.
|
|
24
24
|
*/
|
|
25
|
+
const decoration_1 = require("@decaf-ts/decoration");
|
|
25
26
|
__exportStar(require("./constants/index.cjs"), exports);
|
|
26
27
|
__exportStar(require("./types/index.cjs"), exports);
|
|
27
28
|
__exportStar(require("./utils/index.cjs"), exports);
|
|
@@ -33,5 +34,13 @@ __exportStar(require("./model/index.cjs"), exports);
|
|
|
33
34
|
* @const VERSION
|
|
34
35
|
* @memberOf module:decorator-validation
|
|
35
36
|
*/
|
|
36
|
-
exports.VERSION = "
|
|
37
|
-
|
|
37
|
+
exports.VERSION = "##VERSION##";
|
|
38
|
+
/**
|
|
39
|
+
* @description Current version of the reflection package
|
|
40
|
+
* @summary Stores the semantic version number of the package
|
|
41
|
+
* @const PACKAGE_NAME
|
|
42
|
+
* @memberOf module:decorator-validation
|
|
43
|
+
*/
|
|
44
|
+
exports.PACKAGE_NAME = "##PACKAGE##";
|
|
45
|
+
decoration_1.Metadata.registerLibrary(exports.PACKAGE_NAME, exports.VERSION);
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.d.ts
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module decorator-validation
|
|
3
|
-
* @description TypeScript decorator-based validation library
|
|
4
|
-
* @summary This module provides a comprehensive validation framework using TypeScript decorators.
|
|
5
|
-
* It exposes utility functions, validation decorators, and model-related functionality for
|
|
6
|
-
* implementing type-safe, declarative validation in TypeScript applications.
|
|
7
|
-
*/
|
|
8
1
|
export * from "./constants";
|
|
9
2
|
export * from "./types";
|
|
10
3
|
export * from "./utils";
|
|
@@ -16,4 +9,11 @@ export * from "./model";
|
|
|
16
9
|
* @const VERSION
|
|
17
10
|
* @memberOf module:decorator-validation
|
|
18
11
|
*/
|
|
19
|
-
export declare const VERSION = "
|
|
12
|
+
export declare const VERSION = "##VERSION##";
|
|
13
|
+
/**
|
|
14
|
+
* @description Current version of the reflection package
|
|
15
|
+
* @summary Stores the semantic version number of the package
|
|
16
|
+
* @const PACKAGE_NAME
|
|
17
|
+
* @memberOf module:decorator-validation
|
|
18
|
+
*/
|
|
19
|
+
export declare const PACKAGE_NAME = "##PACKAGE##";
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;;;;;GAMG;AACH,qDAAgD;AAEhD,wDAA4B;AAC5B,oDAAwB;AACxB,oDAAwB;AACxB,yDAA6B;AAC7B,oDAAwB;AAExB;;;;;GAKG;AACU,QAAA,OAAO,GAAG,aAAa,CAAC;AAErC;;;;;GAKG;AACU,QAAA,YAAY,GAAG,aAAa,CAAC;AAE1C,qBAAQ,CAAC,eAAe,CAAC,oBAAY,EAAE,eAAO,CAAC,CAAC"}
|
|
@@ -180,4 +180,4 @@ class ModelContextProtocol {
|
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
182
|
exports.ModelContextProtocol = ModelContextProtocol;
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxDb250ZXh0UHJvdG9jb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWNwL01vZGVsQ29udGV4dFByb3RvY29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUF3QztBQUN4QywrQ0FBb0Q7QUFHcEQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxPQUFlO0lBQ3RDLE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDO0lBQ3RDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsSUFBSSxDQUFDLEtBQUs7UUFDUixNQUFNLElBQUksS0FBSyxDQUNiLDREQUE0RCxPQUFPLEVBQUUsQ0FDdEUsQ0FBQztJQUNKLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBcUMsQ0FBQztBQUNsRixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSCxNQUFNLE9BQU87SUFPWDtRQUpBLFVBQUssR0FBbUMsRUFBRSxDQUFDO1FBRTNDLFFBQUcsR0FBRyxpQkFBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVsQixDQUFDO0lBRWhCOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLEtBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsT0FBTyxDQUNMLE1BQXVCO1FBRXZCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFDeEIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUs7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUs7UUFHSCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzFELE1BQU0sR0FBRyxHQUFHLElBQUksaUJBQU8sQ0FBTztZQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDO2dCQUNILEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsQ0FBQztZQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUNaLEdBQUcsSUFBSSxDQUFDLElBQUksMkJBQTJCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUM1RSxDQUFDO1FBQ0YsT0FBTyxJQUFJLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBQ0gsTUFBYSxvQkFBb0I7SUFDL0I7Ozs7T0FJRztJQUNILElBQWMsR0FBRztRQUNmLE9BQU8saUJBQU8sQ0FBQyxHQUFHLENBQUMsSUFBVyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFlBQStCLEdBQWtCO1FBQWxCLFFBQUcsR0FBSCxHQUFHLENBQWU7SUFBRyxDQUFDO0lBRXJEOzs7T0FHRzthQUNhLFlBQU8sR0FBRyxPQUFPLENBQUM7SUFFbEM7Ozs7T0FJRztJQUNILE1BQU0sS0FBSyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxNQUFNLENBQUMsZUFBZSxDQUM1QixPQUFlO1FBRWYsT0FBTyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7QUFyQ0gsb0RBc0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFzdE1DUCwgVG9vbCB9IGZyb20gXCJmYXN0bWNwXCI7XG5pbXBvcnQgeyBMb2dnZXIsIExvZ2dpbmcgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7IEZhc3RNQ1BTZXNzaW9uQXV0aCB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRlcyBhbmQgbm9ybWFsaXplcyBhIHNlbWFudGljIHZlcnNpb24gc3RyaW5nLlxuICogQHN1bW1hcnkgRW5zdXJlcyB0aGUgcHJvdmlkZWQgdmVyc2lvbiBmb2xsb3dzIHNlbWFudGljIHZlcnNpb25pbmcgKG1ham9yLm1pbm9yLnBhdGNoKSBhbmQgcmV0dXJucyBhIHR1cGxlLWxpa2UgdGVtcGxhdGUgc3RyaW5nIHR5cGVkIGFzIGAke251bWJlcn0uJHtudW1iZXJ9LiR7bnVtYmVyfWAuXG4gKiBAdGVtcGxhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzaW9uIFRoZSB2ZXJzaW9uIHN0cmluZyB0byB2YWxpZGF0ZSwgZXhwZWN0ZWQgaW4gdGhlIGZvcm0gTUFKT1IuTUlOT1IuUEFUQ0guXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBub3JtYWxpemVkIHZlcnNpb24gc3RyaW5nIGlmIHZhbGlkLlxuICogQGZ1bmN0aW9uIHZhbGlkYXRlVmVyc2lvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVZlcnNpb24odmVyc2lvbjogc3RyaW5nKTogYCR7bnVtYmVyfS4ke251bWJlcn0uJHtudW1iZXJ9YCB7XG4gIGNvbnN0IHJlZ2V4cCA9IC8oXFxkKylcXC4oXFxkKylcXC4oXFxkKykvZztcbiAgY29uc3QgbWF0Y2ggPSByZWdleHAuZXhlYyh2ZXJzaW9uKTtcbiAgaWYgKCFtYXRjaClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCB2ZXJzaW9uIHN0cmluZy4gc2hvdWxkIG9iZXkgc2VtYW50aWMgdmVyc2lvbmluZzogJHt2ZXJzaW9ufWBcbiAgICApO1xuICByZXR1cm4gYCR7bWF0Y2hbMV19LiR7bWF0Y2hbMl19LiR7bWF0Y2hbM119YCBhcyBgJHtudW1iZXJ9LiR7bnVtYmVyfS4ke251bWJlcn1gO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGbHVlbnQgYnVpbGRlciBmb3IgY3JlYXRpbmcgYSBjb25maWd1cmVkIE1vZGVsQ29udGV4dFByb3RvY29sIGluc3RhbmNlLlxuICogQHN1bW1hcnkgQ29sbGVjdHMgTUNQIGNvbmZpZ3VyYXRpb24gaW5jbHVkaW5nIGEgc2VtYW50aWMgdmVyc2lvbiwgYSBuYW1lLCBhbmQgYSByZWdpc3RyeSBvZiB0b29scywgb2ZmZXJpbmcgY2hhaW5hYmxlIG1ldGhvZHMgYW5kIGEgZmluYWwgYnVpbGQgc3RlcCB0byBwcm9kdWNlIGEgcmVhZHktdG8tdXNlIE1vZGVsQ29udGV4dFByb3RvY29sLlxuICogQHBhcmFtIHtzdHJpbmd9IFtuYW1lXSBUaGUgbmFtZSBvZiB0aGUgTUNQIGluc3RhbmNlIHRvIGJ1aWxkLlxuICogQHBhcmFtIHtzdHJpbmd9IFt2ZXJzaW9uXSBUaGUgc2VtYW50aWMgdmVyc2lvbiBvZiB0aGUgTUNQIGluc3RhbmNlLlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBUb29sPGFueSwgYW55Pj59IFt0b29sc10gQSBtYXAgb2YgdG9vbCBjb25maWd1cmF0aW9ucyBpbmRleGVkIGJ5IHRvb2wgbmFtZS5cbiAqIEBjbGFzc1xuICogQGV4YW1wbGVcbiAqIC8vIEJ1aWxkIGEgbmV3IE1DUCB3aXRoIGEgc2luZ2xlIHRvb2xcbiAqIGNvbnN0IG1jcCA9IE1vZGVsQ29udGV4dFByb3RvY29sLmJ1aWxkZXJcbiAqICAgLnNldE5hbWUoXCJFeGFtcGxlXCIpXG4gKiAgIC5zZXRWZXJzaW9uKFwiMS4wLjBcIilcbiAqICAgLmFkZFRvb2woeyBuYW1lOiBcImRvXCIsIGRlc2NyaXB0aW9uOiBcIlwiLCBwYXJhbWV0ZXJzOiB6LmFueSgpLCBleGVjdXRlOiBhc3luYyAoKSA9PiBcIm9rXCIgfSlcbiAqICAgLmJ1aWxkKCk7XG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IERldiBhcyBEZXZlbG9wZXJcbiAqICAgcGFydGljaXBhbnQgQiBhcyBCdWlsZGVyXG4gKiAgIHBhcnRpY2lwYW50IE1DUCBhcyBNb2RlbENvbnRleHRQcm90b2NvbFxuICogICBEZXYtPj5COiBzZXROYW1lKFwiRXhhbXBsZVwiKVxuICogICBCLS0+PkRldjogQnVpbGRlclxuICogICBEZXYtPj5COiBzZXRWZXJzaW9uKFwiMS4wLjBcIilcbiAqICAgQi0tPj5EZXY6IEJ1aWxkZXJcbiAqICAgRGV2LT4+QjogYWRkVG9vbCh0b29sKVxuICogICBCLS0+PkRldjogQnVpbGRlclxuICogICBEZXYtPj5COiBidWlsZCgpXG4gKiAgIEItPj5NQ1A6IG5ldyBNb2RlbENvbnRleHRQcm90b2NvbChGYXN0TUNQKVxuICogICBCLS0+PkRldjogTW9kZWxDb250ZXh0UHJvdG9jb2xcbiAqL1xuY2xhc3MgQnVpbGRlciB7XG4gIG5hbWUhOiBzdHJpbmc7XG4gIHZlcnNpb24hOiBgJHtudW1iZXJ9LiR7bnVtYmVyfS4ke251bWJlcn1gO1xuICB0b29sczogUmVjb3JkPHN0cmluZywgVG9vbDxhbnksIGFueT4+ID0ge307XG5cbiAgbG9nID0gTG9nZ2luZy5mb3IoXCJNQ1AgQnVpbGRlclwiKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTZXRzIHRoZSBNQ1AgaW5zdGFuY2UgbmFtZS5cbiAgICogQHN1bW1hcnkgQXNzaWducyBhIGh1bWFuLXJlYWRhYmxlIGlkZW50aWZpZXIgdG8gdGhlIGJ1aWxkZXIgY29uZmlndXJhdGlvbiBhbmQgZW5hYmxlcyBtZXRob2QgY2hhaW5pbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSBUaGUgbmFtZSB0byBhc3NpZ24gdG8gdGhlIE1DUCBpbnN0YW5jZS5cbiAgICogQHJldHVybiB7dGhpc30gVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqL1xuICBzZXROYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgbmFtZSBzZXQgdG8gJHt2YWx1ZX1gKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU2V0cyBhbmQgdmFsaWRhdGVzIHRoZSBzZW1hbnRpYyB2ZXJzaW9uIGZvciB0aGUgTUNQIGluc3RhbmNlLlxuICAgKiBAc3VtbWFyeSBQYXJzZXMgdGhlIHByb3ZpZGVkIHZhbHVlIGFnYWluc3Qgc2VtYW50aWMgdmVyc2lvbmluZyBhbmQgc3RvcmVzIHRoZSBub3JtYWxpemVkIHZlcnNpb247IGVuYWJsZXMgbWV0aG9kIGNoYWluaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgVGhlIHNlbWFudGljIHZlcnNpb24gc3RyaW5nIChlLmcuLCBcIjEuMi4zXCIpLlxuICAgKiBAcmV0dXJuIHt0aGlzfSBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICovXG4gIHNldFZlcnNpb24odmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmVyc2lvbiA9IHZhbGlkYXRlVmVyc2lvbih2YWx1ZSk7XG4gICAgdGhpcy5sb2cuZGVidWcoYHZlcnNpb24gc2V0IHRvICR7dmFsdWV9YCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVycyBhIG5ldyB0b29sIGluIHRoZSBidWlsZGVyLlxuICAgKiBAc3VtbWFyeSBBZGRzIGEgdG9vbCBjb25maWd1cmF0aW9uIGJ5IGl0cyB1bmlxdWUgbmFtZSB0byB0aGUgaW50ZXJuYWwgcmVnaXN0cnksIHRocm93aW5nIGlmIGEgdG9vbCB3aXRoIHRoZSBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMuXG4gICAqIEB0ZW1wbGF0ZSBBdXRoIGV4dGVuZHMgRmFzdE1DUFNlc3Npb25BdXRoXG4gICAqIEBwYXJhbSB7VG9vbDxBdXRoLCBhbnk+fSBjb25maWcgVGhlIHRvb2wgY29uZmlndXJhdGlvbiBvYmplY3QsIGluY2x1ZGluZyBhIHVuaXF1ZSBuYW1lIGFuZCBhbiBleGVjdXRlIGhhbmRsZXIuXG4gICAqIEByZXR1cm4ge3RoaXN9IFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKi9cbiAgYWRkVG9vbDxBdXRoIGV4dGVuZHMgRmFzdE1DUFNlc3Npb25BdXRoID0gdW5kZWZpbmVkPihcbiAgICBjb25maWc6IFRvb2w8QXV0aCwgYW55PlxuICApIHtcbiAgICBjb25zdCB7IG5hbWUgfSA9IGNvbmZpZztcbiAgICBpZiAobmFtZSBpbiB0aGlzLnRvb2xzKSB0aHJvdyBuZXcgRXJyb3IoYHRvb2wgJHtuYW1lfSBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtcbiAgICB0aGlzLnRvb2xzW25hbWVdID0gY29uZmlnO1xuICAgIHRoaXMubG9nLmRlYnVnKGB0b29sICR7bmFtZX0gYWRkZWRgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemVzIHRoZSBjb25maWd1cmF0aW9uIGFuZCBwcm9kdWNlcyBhIE1vZGVsQ29udGV4dFByb3RvY29sIGluc3RhbmNlLlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgcmVxdWlyZWQgZmllbGRzIChuYW1lIGFuZCB2ZXJzaW9uKSwgY29uc3RydWN0cyBhIEZhc3RNQ1AgaW5zdGFuY2UsIHJlZ2lzdGVycyBhbGwgY29uZmlndXJlZCB0b29scywgYW5kIHJldHVybnMgYSBNb2RlbENvbnRleHRQcm90b2NvbCB3cmFwcGluZyB0aGUgTUNQLlxuICAgKiBAdGVtcGxhdGUgQXV0aCBleHRlbmRzIEZhc3RNQ1BTZXNzaW9uQXV0aFxuICAgKiBAcmV0dXJuIHtNb2RlbENvbnRleHRQcm90b2NvbDxBdXRoPn0gQSBmdWxseSBpbml0aWFsaXplZCBNb2RlbENvbnRleHRQcm90b2NvbCBpbnN0YW5jZS5cbiAgICovXG4gIGJ1aWxkPFxuICAgIEF1dGggZXh0ZW5kcyBGYXN0TUNQU2Vzc2lvbkF1dGggPSB1bmRlZmluZWQsXG4gID4oKTogTW9kZWxDb250ZXh0UHJvdG9jb2w8QXV0aD4ge1xuICAgIGlmICghdGhpcy5uYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJuYW1lIGlzIHJlcXVpcmVkXCIpO1xuICAgIGlmICghdGhpcy52ZXJzaW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJ2ZXJzaW9uIGlzIHJlcXVpcmVkXCIpO1xuICAgIGNvbnN0IG1jcCA9IG5ldyBGYXN0TUNQPEF1dGg+KHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICB9KTtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMudG9vbHMpLmZvckVhY2goKHRvb2wpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG1jcC5hZGRUb29sKHRvb2wpO1xuICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBhZGQgdG9vbCAke3Rvb2wubmFtZX06ICR7ZX1gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmxvZy5pbmZvKGAke3RoaXMubmFtZX0gTUNQIGJ1aWx0YCk7XG4gICAgdGhpcy5sb2cuZGVidWcoXG4gICAgICBgJHt0aGlzLm5hbWV9IE1DUCAtIGF2YWlsYWJsZSB0b29sczogJHtPYmplY3Qua2V5cyh0aGlzLnRvb2xzKS5qb2luKFwiLCBcIil9YFxuICAgICk7XG4gICAgcmV0dXJuIG5ldyBNb2RlbENvbnRleHRQcm90b2NvbChtY3ApO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEEgdGhpbiB3cmFwcGVyIGFyb3VuZCBGYXN0TUNQIHByb3ZpZGluZyBhIHR5cGVkIGludGVyZmFjZSBmb3IgbW9kZWwtY2VudHJpYyBwcm90b2NvbHMuXG4gKiBAc3VtbWFyeSBFbmNhcHN1bGF0ZXMgYSBjb25maWd1cmVkIEZhc3RNQ1AgaW5zdGFuY2UgYW5kIGV4cG9zZXMgZmFjdG9yeSB1dGlsaXRpZXMgdmlhIGEgc3RhdGljIEJ1aWxkZXIgZm9yIGNvbnN0cnVjdGluZyBNQ1BzIHdpdGggdG9vbHMsIHZlcnNpb25pbmcsIGFuZCBuYW1pbmcgc2VtYW50aWNzLlxuICogQHRlbXBsYXRlIEF1dGggZXh0ZW5kcyBGYXN0TUNQU2Vzc2lvbkF1dGggQXV0aGVudGljYXRpb24gcGF5bG9hZCB0eXBlIHN0b3JlZCBpbiB0aGUgTUNQIHNlc3Npb24sIG9yIHVuZGVmaW5lZCBmb3Igbm8gYXV0aC5cbiAqIEBwYXJhbSB7RmFzdE1DUDxBdXRoPn0gbWNwIFRoZSB1bmRlcmx5aW5nIEZhc3RNQ1AgaW5zdGFuY2UgdXNlZCB0byByZWdpc3RlciBhbmQgcnVuIHRvb2xzLlxuICogQGNsYXNzXG4gKiBAZXhhbXBsZVxuICogLy8gVXNpbmcgdGhlIGJ1aWxkZXJcbiAqIGNvbnN0IHByb3RvY29sID0gTW9kZWxDb250ZXh0UHJvdG9jb2wuYnVpbGRlclxuICogICAuc2V0TmFtZShcIlZhbGlkYXRvclwiKVxuICogICAuc2V0VmVyc2lvbihcIjEuMi4zXCIpXG4gKiAgIC5hZGRUb29sKHsgbmFtZTogXCJwaW5nXCIsIGRlc2NyaXB0aW9uOiBcIlwiLCBwYXJhbWV0ZXJzOiB6LmFueSgpLCBleGVjdXRlOiBhc3luYyAoKSA9PiBcInBvbmdcIiB9KVxuICogICAuYnVpbGQoKTtcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgRGV2IGFzIERldmVsb3BlclxuICogICBwYXJ0aWNpcGFudCBCIGFzIE1vZGVsQ29udGV4dFByb3RvY29sLkJ1aWxkZXJcbiAqICAgcGFydGljaXBhbnQgTUNQIGFzIEZhc3RNQ1BcbiAqICAgcGFydGljaXBhbnQgUHJvdG8gYXMgTW9kZWxDb250ZXh0UHJvdG9jb2xcbiAqICAgRGV2LT4+Qjogc2V0TmFtZSgpL3NldFZlcnNpb24oKS9hZGRUb29sKClcbiAqICAgRGV2LT4+QjogYnVpbGQoKVxuICogICBCLT4+TUNQOiBuZXcgRmFzdE1DUCh7IG5hbWUsIHZlcnNpb24gfSlcbiAqICAgQi0+Pk1DUDogYWRkVG9vbCh0b29sLi4uKVxuICogICBCLT4+UHJvdG86IG5ldyBNb2RlbENvbnRleHRQcm90b2NvbChNQ1ApXG4gKiAgIEItLT4+RGV2OiBNb2RlbENvbnRleHRQcm90b2NvbFxuICovXG5leHBvcnQgY2xhc3MgTW9kZWxDb250ZXh0UHJvdG9jb2w8QXV0aCBleHRlbmRzIEZhc3RNQ1BTZXNzaW9uQXV0aCA9IHVuZGVmaW5lZD4ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExhemlseSBvYnRhaW5zIGEgbG9nZ2VyIGluc3RhbmNlIGZvciB0aGlzIHByb3RvY29sIHdyYXBwZXIuXG4gICAqIEBzdW1tYXJ5IFVzZXMgdGhlIExvZ2dpbmcgZmFjaWxpdHkgdG8gY3JlYXRlIGEgY29udGV4dC1hd2FyZSBMb2dnZXIgYm91bmQgdG8gdGhpcyBpbnN0YW5jZS5cbiAgICogQHJldHVybiB7TG9nZ2VyfSBBIGxvZ2dlciBpbnN0YW5jZSBmb3IgdGhpcyBjbGFzcy5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgbG9nKCk6IExvZ2dlciB7XG4gICAgcmV0dXJuIExvZ2dpbmcuZm9yKHRoaXMgYXMgYW55KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBtY3A6IEZhc3RNQ1A8QXV0aD4pIHt9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBbGlhcyB0byB0aGUgaW5uZXIgQnVpbGRlciBjbGFzcyBmb3IgZXh0ZXJuYWwgYWNjZXNzLlxuICAgKiBAc3VtbWFyeSBFeHBvc2VzIHRoZSBidWlsZGVyIHR5cGUgdG8gY29uc3VtZXJzIHRvIGVuYWJsZSB0eXBlZCBjb25zdHJ1Y3Rpb24gb2YgTW9kZWxDb250ZXh0UHJvdG9jb2wgaW5zdGFuY2VzLlxuICAgKi9cbiAgc3RhdGljIHJlYWRvbmx5IEJ1aWxkZXIgPSBCdWlsZGVyO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmFjdG9yeSBhY2Nlc3NvciBmb3IgYSBuZXcgQnVpbGRlciBpbnN0YW5jZS5cbiAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIG5ldyBidWlsZGVyIHRvIGZsdWVudGx5IGNvbmZpZ3VyZSBhbmQgY29uc3RydWN0IGEgTW9kZWxDb250ZXh0UHJvdG9jb2wuXG4gICAqIEByZXR1cm4ge0J1aWxkZXJ9IEEgbmV3IGJ1aWxkZXIgaW5zdGFuY2UuXG4gICAqL1xuICBzdGF0aWMgZ2V0IGJ1aWxkZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBNb2RlbENvbnRleHRQcm90b2NvbC5CdWlsZGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFZhbGlkYXRlcyBhIHNlbWFudGljIHZlcnNpb24gc3RyaW5nLlxuICAgKiBAc3VtbWFyeSBVdGlsaXR5IHdyYXBwZXIgYXJvdW5kIHRoZSBtb2R1bGUtbGV2ZWwgdmFsaWRhdGVWZXJzaW9uIHRvIGtlZXAgYSB0eXBlZCB2YWxpZGF0b3IgY2xvc2UgdG8gdGhlIGNsYXNzIEFQSS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNpb24gVGhlIHZlcnNpb24gc3RyaW5nIHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBub3JtYWxpemVkIHNlbWFudGljIHZlcnNpb24gc3RyaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgdmFsaWRhdGVWZXJzaW9uKFxuICAgIHZlcnNpb246IHN0cmluZ1xuICApOiBgJHtudW1iZXJ9LiR7bnVtYmVyfS4ke251bWJlcn1gIHtcbiAgICByZXR1cm4gdmFsaWRhdGVWZXJzaW9uKHZlcnNpb24pO1xuICB9XG59XG4iXX0=
|
|
183
|
+
//# sourceMappingURL=ModelContextProtocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelContextProtocol.js","sourceRoot":"","sources":["../../src/mcp/ModelContextProtocol.ts"],"names":[],"mappings":"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"}
|
package/lib/mcp/mcp1.cjs
CHANGED
|
@@ -402,4 +402,4 @@
|
|
|
402
402
|
// });
|
|
403
403
|
//
|
|
404
404
|
// export { server };
|
|
405
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWNwMS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tY3AvbWNwMS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUNBQXFDO0FBQ3JDLDJCQUEyQjtBQUMzQixnREFBZ0Q7QUFDaEQsaUVBQWlFO0FBQ2pFLG9DQUFvQztBQUNwQyxXQUFXO0FBQ1gsV0FBVztBQUNYLFNBQVM7QUFDVCxlQUFlO0FBQ2YsU0FBUztBQUNULGVBQWU7QUFDZixhQUFhO0FBQ2IsY0FBYztBQUNkLDBCQUEwQjtBQUMxQiw4REFBOEQ7QUFDOUQsRUFBRTtBQUNGLDZEQUE2RDtBQUM3RCx3Q0FBd0M7QUFDeEMseUJBQXlCO0FBQ3pCLDhCQUE4QjtBQUM5QixjQUFjO0FBQ2QsRUFBRTtBQUNGLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFDL0IscUNBQXFDO0FBQ3JDLGtCQUFrQjtBQUNsQixzQkFBc0I7QUFDdEIsTUFBTTtBQUNOLEVBQUU7QUFDRixpREFBaUQ7QUFDakQsZ0RBQWdEO0FBQ2hELEVBQUU7QUFDRixxQ0FBcUM7QUFDckMsbUJBQW1CO0FBQ25CLDRCQUE0QjtBQUM1QixxRUFBcUU7QUFDckUsMkJBQTJCO0FBQzNCLGlFQUFpRTtBQUNqRSw0REFBNEQ7QUFDNUQsaUJBQWlCO0FBQ2pCLGtCQUFrQjtBQUNsQixnRkFBZ0Y7QUFDaEYsV0FBVztBQUNYLHFCQUFxQjtBQUNyQixRQUFRO0FBQ1IsK0JBQStCO0FBQy9CLGlEQUFpRDtBQUNqRCxFQUFFO0FBQ0YsK0VBQStFO0FBQy9FLHlCQUF5QjtBQUN6QiwyREFBMkQ7QUFDM0QsUUFBUTtBQUNSLEVBQUU7QUFDRixZQUFZO0FBQ1osK0NBQStDO0FBQy9DLDZDQUE2QztBQUM3QyxFQUFFO0FBQ0YsaUJBQWlCO0FBQ2pCLDRCQUE0QjtBQUM1QixrQ0FBa0M7QUFDbEMsK0RBQStEO0FBQy9ELFdBQVc7QUFDWCx3QkFBd0I7QUFDeEIsaUJBQWlCO0FBQ2pCLDBCQUEwQjtBQUMxQixnREFBZ0Q7QUFD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QUFXO0FBQ1gsWUFBWTtBQUNaLFlBQVk7QUFDWixPQUFPO0FBQ1AsdUNBQXVDO0FBQ3ZDLElBQUk7QUFDSixFQUFFO0FBQ0YseURBQXlEO0FBQ3pELG1GQUFtRjtBQUNuRiw0QkFBNEI7QUFDNUIsMkRBQTJEO0FBQzNELDJEQUEyRDtBQUMzRCxFQUFFO0FBQ0YscUNBQXFDO0FBQ3JDLG1EQUFtRDtBQUNuRCwyQkFBMkI7QUFDM0Isc0JBQXNCO0FBQ3RCLG9DQUFvQztBQUNwQyxvQ0FBb0M7QUFDcEMsWUFBWTtBQUNaLFFBQVE7QUFDUixNQUFNO0FBQ04sRUFBRTtBQUNGLHdCQUF3QjtBQUN4QixJQUFJO0FBQ0osRUFBRTtBQUNGLHNCQUFzQjtBQUN0QixpQkFBaUI7QUFDakIsNEJBQTRCO0FBQzVCLE1BQU07QUFDTixFQUFFO0FBQ0YscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IHsgRmFzdE1DUCB9IGZyb20gXCJmYXN0bWNwXCI7XG4vLyBpbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuLy8gaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gXCIuLi8uLi9wYWNrYWdlLmpzb25cIjtcbi8vIGltcG9ydCB7IE1vZGVsQ29udGV4dFByb3RvY29sIH0gZnJvbSBcIi4vTW9kZWxDb250ZXh0UHJvdG9jb2xcIjtcbi8vIGltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIi4uL21vZGVsXCI7XG4vLyBpbXBvcnQge1xuLy8gICBlbWFpbCxcbi8vICAgbWF4LFxuLy8gICBtYXhsZW5ndGgsXG4vLyAgIG1pbixcbi8vICAgbWlubGVuZ3RoLFxuLy8gICBwYXR0ZXJuLFxuLy8gICByZXF1aXJlZCxcbi8vIH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcbi8vIGltcG9ydCB7IGNyZWF0ZU1vZGVsVG9vbCB9IGZyb20gXCIuL3Rvb2xzL2NyZWF0ZU1vZGVsLnRvb2xcIjtcbi8vXG4vLyBjb25zdCBEZWNvcmF0b3JWYWxpZGF0b25NQ1AgPSBNb2RlbENvbnRleHRQcm90b2NvbC5idWlsZGVyXG4vLyAgIC5zZXROYW1lKFwiZGVjYWYtdmFsaWRhdGlvbi1zZXJ2ZXJcIilcbi8vICAgLnNldFZlcnNpb24odmVyc2lvbilcbi8vICAgLmFkZFRvb2woY3JlYXRlTW9kZWxUb29sKVxuLy8gICAuYnVpbGQoKTtcbi8vXG4vLyAvLyBJbml0aWFsaXplIEZhc3RNQ1Agc2VydmVyXG4vLyBjb25zdCBzZXJ2ZXIgPSBuZXcgRmFzdE1DUCh7XG4vLyAgIG5hbWU6IFwiZGVjYWYtdmFsaWRhdGlvbi1zZXJ2ZXJcIixcbi8vICAgLy8gQHRzLWlnbm9yZVxuLy8gICB2ZXJzaW9uOiB2ZXJzaW9uLFxuLy8gfSk7XG4vL1xuLy8gLy8gTW9kZWwgcmVnaXN0cnkgZm9yIGR5bmFtaWMgbW9kZWwgbWFuYWdlbWVudFxuLy8gY29uc3QgbW9kZWxSZWdpc3RyeSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4vL1xuLy8gLy8gVG9vbDogVmFsaWRhdGUgYSBtb2RlbCBpbnN0YW5jZVxuLy8gc2VydmVyLmFkZFRvb2woe1xuLy8gICBuYW1lOiBcInZhbGlkYXRlLW1vZGVsXCIsXG4vLyAgIGRlc2NyaXB0aW9uOiBcIlZhbGlkYXRlIGEgbW9kZWwgaW5zdGFuY2UgYWdhaW5zdCBpdHMgZGVjb3JhdG9yc1wiLFxuLy8gICBwYXJhbWV0ZXJzOiB6Lm9iamVjdCh7XG4vLyAgICAgbW9kZWxOYW1lOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiTmFtZSBvZiB0aGUgbW9kZWwgY2xhc3NcIiksXG4vLyAgICAgZGF0YTogei5yZWNvcmQoei5hbnkoKSkuZGVzY3JpYmUoXCJEYXRhIHRvIHZhbGlkYXRlXCIpLFxuLy8gICAgIG9wdGlvbnM6IHpcbi8vICAgICAgIC5vYmplY3Qoe1xuLy8gICAgICAgICBwYXJ0aWFsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQWxsb3cgcGFydGlhbCB2YWxpZGF0aW9uXCIpLFxuLy8gICAgICAgfSlcbi8vICAgICAgIC5vcHRpb25hbCgpLFxuLy8gICB9KSxcbi8vICAgZXhlY3V0ZTogYXN5bmMgKGFyZ3MpID0+IHtcbi8vICAgICBjb25zdCB7IG1vZGVsTmFtZSwgZGF0YSwgb3B0aW9ucyB9ID0gYXJncztcbi8vXG4vLyAgICAgY29uc3QgTW9kZWxDbGFzcyA9IG1vZGVsUmVnaXN0cnkuZ2V0KG1vZGVsTmFtZSkgfHwgTW9kZWwuZ2V0KG1vZGVsTmFtZSk7XG4vLyAgICAgaWYgKCFNb2RlbENsYXNzKSB7XG4vLyAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZGVsIFwiJHttb2RlbE5hbWV9XCIgbm90IGZvdW5kYCk7XG4vLyAgICAgfVxuLy9cbi8vICAgICB0cnkge1xuLy8gICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgTW9kZWxDbGFzcyhkYXRhKTtcbi8vICAgICAgIGNvbnN0IGVycm9ycyA9IGluc3RhbmNlLmhhc0Vycm9ycygpO1xuLy9cbi8vICAgICAgIHJldHVybiB7XG4vLyAgICAgICAgIGlzVmFsaWQ6ICFlcnJvcnMsXG4vLyAgICAgICAgIGVycm9yczogZXJyb3JzIHx8IG51bGwsXG4vLyAgICAgICAgIHZhbGlkYXRlZERhdGE6IGVycm9ycyA/IG51bGwgOiBpbnN0YW5jZS5zZXJpYWxpemUoKSxcbi8vICAgICAgIH07XG4vLyAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbi8vICAgICAgIHJldHVybiB7XG4vLyAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxuLy8gICAgICAgICBlcnJvcnM6IFt7IG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UgfV0sXG4vLyAgICAgICAgIHZhbGlkYXRlZERhdGE6IG51bGwsXG4vLyAgICAgICB9O1xuLy8gICAgIH1cbi8vICAgfSxcbi8vIH0pO1xuLy9cbi8vIC8vIFRvb2w6IEdldCBtb2RlbCBzY2hlbWEgaW5mb3JtYXRpb25cbi8vIHNlcnZlci5hZGRUb29sKHtcbi8vICAgbmFtZTogXCJnZXQtbW9kZWwtc2NoZW1hXCIsXG4vLyAgIGRlc2NyaXB0aW9uOiBcIkdldCB0aGUgdmFsaWRhdGlvbiBzY2hlbWEgZm9yIGEgbW9kZWxcIixcbi8vICAgcGFyYW1ldGVyczogei5vYmplY3Qoe1xuLy8gICAgIG1vZGVsTmFtZTogei5zdHJpbmcoKS5kZXNjcmliZShcIk5hbWUgb2YgdGhlIG1vZGVsIGNsYXNzXCIpLFxuLy8gICB9KSxcbi8vICAgZXhlY3V0ZTogYXN5bmMgKGFyZ3MpID0+IHtcbi8vICAgICBjb25zdCB7IG1vZGVsTmFtZSB9ID0gYXJncztcbi8vXG4vLyAgICAgY29uc3QgTW9kZWxDbGFzcyA9IG1vZGVsUmVnaXN0cnkuZ2V0KG1vZGVsTmFtZSkgfHwgTW9kZWwuZ2V0KG1vZGVsTmFtZSk7XG4vLyAgICAgaWYgKCFNb2RlbENsYXNzKSB7XG4vLyAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZGVsIFwiJHttb2RlbE5hbWV9XCIgbm90IGZvdW5kYCk7XG4vLyAgICAgfVxuLy9cbi8vICAgICAvLyBFeHRyYWN0IHZhbGlkYXRpb24gbWV0YWRhdGFcbi8vICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBNb2RlbENsYXNzKCk7XG4vLyAgICAgY29uc3QgbWV0YWRhdGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwidmFsaWRhdGlvblwiLCBpbnN0YW5jZSkgfHwge307XG4vL1xuLy8gICAgIHJldHVybiB7XG4vLyAgICAgICBtb2RlbE5hbWUsXG4vLyAgICAgICBwcm9wZXJ0aWVzOiBPYmplY3Qua2V5cyhtZXRhZGF0YSkubWFwKChrZXkpID0+ICh7XG4vLyAgICAgICAgIG5hbWU6IGtleSxcbi8vICAgICAgICAgdmFsaWRhdG9yczogbWV0YWRhdGFba2V5XSB8fCBbXSxcbi8vICAgICAgIH0pKSxcbi8vICAgICAgIGNhcGFiaWxpdGllczoge1xuLy8gICAgICAgICBzZXJpYWxpemF0aW9uOiAhIWluc3RhbmNlLnNlcmlhbGl6ZSxcbi8vICAgICAgICAgaGFzaGluZzogISFpbnN0YW5jZS5oYXNoLFxuLy8gICAgICAgICBjb21wYXJpc29uOiAhIWluc3RhbmNlLmVxdWFscyxcbi8vICAgICAgIH0sXG4vLyAgICAgfTtcbi8vICAgfSxcbi8vIH0pO1xuLy9cbi8vIC8vIFRvb2w6IFNlcmlhbGl6ZSBtb2RlbFxuLy8gc2VydmVyLmFkZFRvb2woe1xuLy8gICBuYW1lOiBcInNlcmlhbGl6ZS1tb2RlbFwiLFxuLy8gICBkZXNjcmlwdGlvbjogXCJTZXJpYWxpemUgYSBtb2RlbCBpbnN0YW5jZSB0byBzdHJpbmdcIixcbi8vICAgcGFyYW1ldGVyczogei5vYmplY3Qoe1xuLy8gICAgIG1vZGVsTmFtZTogei5zdHJpbmcoKS5kZXNjcmliZShcIk5hbWUgb2YgdGhlIG1vZGVsIGNsYXNzXCIpLFxuLy8gICAgIGRhdGE6IHoucmVjb3JkKHouYW55KCkpLmRlc2NyaWJlKFwiTW9kZWwgZGF0YSB0byBzZXJpYWxpemVcIiksXG4vLyAgICAgZm9ybWF0OiB6LmVudW0oW1wianNvblwiLCBcInlhbWxcIl0pLm9wdGlvbmFsKCkuZGVmYXVsdChcImpzb25cIiksXG4vLyAgIH0pLFxuLy8gICBleGVjdXRlOiBhc3luYyAoYXJncykgPT4ge1xuLy8gICAgIGNvbnN0IHsgbW9kZWxOYW1lLCBkYXRhLCBmb3JtYXQgfSA9IGFyZ3M7XG4vL1xuLy8gICAgIGNvbnN0IE1vZGVsQ2xhc3MgPSBtb2RlbFJlZ2lzdHJ5LmdldChtb2RlbE5hbWUpIHx8IE1vZGVsLmdldChtb2RlbE5hbWUpO1xuLy8gICAgIGlmICghTW9kZWxDbGFzcykge1xuLy8gICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb2RlbCBcIiR7bW9kZWxOYW1lfVwiIG5vdCBmb3VuZGApO1xuLy8gICAgIH1cbi8vXG4vLyAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgTW9kZWxDbGFzcyhkYXRhKTtcbi8vICAgICBjb25zdCBlcnJvcnMgPSBpbnN0YW5jZS5oYXNFcnJvcnMoKTtcbi8vXG4vLyAgICAgaWYgKGVycm9ycykge1xuLy8gICAgICAgdGhyb3cgbmV3IEVycm9yKFxuLy8gICAgICAgICBgQ2Fubm90IHNlcmlhbGl6ZSBpbnZhbGlkIG1vZGVsOiAke0pTT04uc3RyaW5naWZ5KGVycm9ycyl9YFxuLy8gICAgICAgKTtcbi8vICAgICB9XG4vL1xuLy8gICAgIHJldHVybiB7XG4vLyAgICAgICBzZXJpYWxpemVkOiBpbnN0YW5jZS5zZXJpYWxpemUoKSxcbi8vICAgICAgIGZvcm1hdCxcbi8vICAgICAgIG1vZGVsTmFtZSxcbi8vICAgICB9O1xuLy8gICB9LFxuLy8gfSk7XG4vL1xuLy8gLy8gVG9vbDogRGVzZXJpYWxpemUgbW9kZWxcbi8vIHNlcnZlci5hZGRUb29sKHtcbi8vICAgbmFtZTogXCJkZXNlcmlhbGl6ZS1tb2RlbFwiLFxuLy8gICBkZXNjcmlwdGlvbjogXCJEZXNlcmlhbGl6ZSBhIHN0cmluZyB0byBtb2RlbCBpbnN0YW5jZVwiLFxuLy8gICBwYXJhbWV0ZXJzOiB6Lm9iamVjdCh7XG4vLyAgICAgc2VyaWFsaXplZERhdGE6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJTZXJpYWxpemVkIG1vZGVsIGRhdGFcIiksXG4vLyAgICAgbW9kZWxOYW1lOiB6XG4vLyAgICAgICAuc3RyaW5nKClcbi8vICAgICAgIC5vcHRpb25hbCgpXG4vLyAgICAgICAuZGVzY3JpYmUoXCJFeHBlY3RlZCBtb2RlbCBuYW1lIGZvciB2YWxpZGF0aW9uXCIpLFxuLy8gICB9KSxcbi8vICAgZXhlY3V0ZTogYXN5bmMgKGFyZ3MpID0+IHtcbi8vICAgICBjb25zdCB7IHNlcmlhbGl6ZWREYXRhLCBtb2RlbE5hbWUgfSA9IGFyZ3M7XG4vL1xuLy8gICAgIHRyeSB7XG4vLyAgICAgICBjb25zdCBpbnN0YW5jZSA9IE1vZGVsLmRlc2VyaWFsaXplKHNlcmlhbGl6ZWREYXRhKTtcbi8vXG4vLyAgICAgICBpZiAobW9kZWxOYW1lICYmIGluc3RhbmNlLmNvbnN0cnVjdG9yLm5hbWUgIT09IG1vZGVsTmFtZSkge1xuLy8gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4vLyAgICAgICAgICAgYEV4cGVjdGVkIG1vZGVsIFwiJHttb2RlbE5hbWV9XCIsIGdvdCBcIiR7aW5zdGFuY2UuY29uc3RydWN0b3IubmFtZX1cImBcbi8vICAgICAgICAgKTtcbi8vICAgICAgIH1cbi8vXG4vLyAgICAgICByZXR1cm4ge1xuLy8gICAgICAgICBtb2RlbE5hbWU6IGluc3RhbmNlLmNvbnN0cnVjdG9yLm5hbWUsXG4vLyAgICAgICAgIGRhdGE6IEpTT04ucGFyc2UoaW5zdGFuY2Uuc2VyaWFsaXplKCkpLFxuLy8gICAgICAgICBpc1ZhbGlkOiAhaW5zdGFuY2UuaGFzRXJyb3JzKCksXG4vLyAgICAgICB9O1xuLy8gICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4vLyAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERlc2VyaWFsaXphdGlvbiBmYWlsZWQ6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbi8vICAgICB9XG4vLyAgIH0sXG4vLyB9KTtcbi8vXG4vLyAvLyBUb29sOiBDb21wYXJlIG1vZGVsc1xuLy8gc2VydmVyLmFkZFRvb2woe1xuLy8gICBuYW1lOiBcImNvbXBhcmUtbW9kZWxzXCIsXG4vLyAgIGRlc2NyaXB0aW9uOiBcIkNvbXBhcmUgdHdvIG1vZGVsIGluc3RhbmNlcyBmb3IgZXF1YWxpdHlcIixcbi8vICAgcGFyYW1ldGVyczogei5vYmplY3Qoe1xuLy8gICAgIG1vZGVsTmFtZTogei5zdHJpbmcoKS5kZXNjcmliZShcIk5hbWUgb2YgdGhlIG1vZGVsIGNsYXNzXCIpLFxuLy8gICAgIGRhdGExOiB6LnJlY29yZCh6LmFueSgpKS5kZXNjcmliZShcIkZpcnN0IG1vZGVsIGRhdGFcIiksXG4vLyAgICAgZGF0YTI6IHoucmVjb3JkKHouYW55KCkpLmRlc2NyaWJlKFwiU2Vjb25kIG1vZGVsIGRhdGFcIiksXG4vLyAgICAgZXhjbHVkZUZpZWxkczogelxuLy8gICAgICAgLmFycmF5KHouc3RyaW5nKCkpXG4vLyAgICAgICAub3B0aW9uYWwoKVxuLy8gICAgICAgLmRlc2NyaWJlKFwiRmllbGRzIHRvIGV4Y2x1ZGUgZnJvbSBjb21wYXJpc29uXCIpLFxuLy8gICB9KSxcbi8vICAgZXhlY3V0ZTogYXN5bmMgKGFyZ3MpID0+IHtcbi8vICAgICBjb25zdCB7IG1vZGVsTmFtZSwgZGF0YTEsIGRhdGEyLCBleGNsdWRlRmllbGRzIH0gPSBhcmdzO1xuLy9cbi8vICAgICBjb25zdCBNb2RlbENsYXNzID0gbW9kZWxSZWdpc3RyeS5nZXQobW9kZWxOYW1lKSB8fCBNb2RlbC5nZXQobW9kZWxOYW1lKTtcbi8vICAgICBpZiAoIU1vZGVsQ2xhc3MpIHtcbi8vICAgICAgIHRocm93IG5ldyBFcnJvcihgTW9kZWwgXCIke21vZGVsTmFtZX1cIiBub3QgZm91bmRgKTtcbi8vICAgICB9XG4vL1xuLy8gICAgIGNvbnN0IGluc3RhbmNlMSA9IG5ldyBNb2RlbENsYXNzKGRhdGExKTtcbi8vICAgICBjb25zdCBpbnN0YW5jZTIgPSBuZXcgTW9kZWxDbGFzcyhkYXRhMik7XG4vL1xuLy8gICAgIGNvbnN0IGlzRXF1YWwgPSBleGNsdWRlRmllbGRzXG4vLyAgICAgICA/IGluc3RhbmNlMS5lcXVhbHMoaW5zdGFuY2UyLCAuLi5leGNsdWRlRmllbGRzKVxuLy8gICAgICAgOiBpbnN0YW5jZTEuZXF1YWxzKGluc3RhbmNlMik7XG4vL1xuLy8gICAgIHJldHVybiB7XG4vLyAgICAgICBpc0VxdWFsLFxuLy8gICAgICAgaGFzaDE6IGluc3RhbmNlMS5oYXNoKCksXG4vLyAgICAgICBoYXNoMjogaW5zdGFuY2UyLmhhc2goKSxcbi8vICAgICAgIGRpZmZlcmVuY2VzOiBpc0VxdWFsID8gbnVsbCA6IGF3YWl0IGZpbmREaWZmZXJlbmNlcyhpbnN0YW5jZTEsIGluc3RhbmNlMiksXG4vLyAgICAgfTtcbi8vICAgfSxcbi8vIH0pO1xuLy9cbi8vIC8vIFRvb2w6IExpc3QgYXZhaWxhYmxlIGRlY29yYXRvcnNcbi8vIHNlcnZlci5hZGRUb29sKHtcbi8vICAgbmFtZTogXCJsaXN0LWRlY29yYXRvcnNcIixcbi8vICAgZGVzY3JpcHRpb246IFwiTGlzdCBhbGwgYXZhaWxhYmxlIHZhbGlkYXRpb24gZGVjb3JhdG9yc1wiLFxuLy8gICBwYXJhbWV0ZXJzOiB6Lm9iamVjdCh7XG4vLyAgICAgY2F0ZWdvcnk6IHpcbi8vICAgICAgIC5lbnVtKFtcImJhc2ljXCIsIFwidHlwZS1zcGVjaWZpY1wiLCBcImNvbXBhcmlzb25cIiwgXCJhbGxcIl0pXG4vLyAgICAgICAub3B0aW9uYWwoKVxuLy8gICAgICAgLmRlZmF1bHQoXCJhbGxcIiksXG4vLyAgIH0pLFxuLy8gICBleGVjdXRlOiBhc3luYyAoYXJncykgPT4ge1xuLy8gICAgIGNvbnN0IHsgY2F0ZWdvcnkgfSA9IGFyZ3M7XG4vL1xuLy8gICAgIGNvbnN0IGRlY29yYXRvcnMgPSB7XG4vLyAgICAgICBiYXNpYzogW1xuLy8gICAgICAgICB7XG4vLyAgICAgICAgICAgbmFtZTogXCJyZXF1aXJlZFwiLFxuLy8gICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk1hcmtzIGZpZWxkIGFzIHJlcXVpcmVkXCIsXG4vLyAgICAgICAgICAgYXJnczogW1wibWVzc2FnZT9cIl0sXG4vLyAgICAgICAgIH0sXG4vLyAgICAgICAgIHtcbi8vICAgICAgICAgICBuYW1lOiBcIm1pblwiLFxuLy8gICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk1pbmltdW0gdmFsdWUgdmFsaWRhdGlvblwiLFxuLy8gICAgICAgICAgIGFyZ3M6IFtcInZhbHVlXCIsIFwibWVzc2FnZT9cIl0sXG4vLyAgICAgICAgIH0sXG4vLyAgICAgICAgIHtcbi8vICAgICAgICAgICBuYW1lOiBcIm1heFwiLFxuLy8gICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk1heGltdW0gdmFsdWUgdmFsaWRhdGlvblwiLFxuLy8gICAgICAgICAgIGFyZ3M6IFtcInZhbHVlXCIsIFwibWVzc2FnZT9cIl0sXG4vLyAgICAgICAgIH0sXG4vLyAgICAgICAgIHtcbi8vICAgICAgICAgICBuYW1lOiBcIm1pbmxlbmd0aFwiLFxuLy8gICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk1pbmltdW0gbGVuZ3RoIHZhbGlkYXRpb25cIixcbi8vICAgICAgICAgICBhcmdzOiBbXCJsZW5ndGhcIiwgXCJtZXNzYWdlP1wiXSxcbi8vICAgICAgICAgfSxcbi8vICAgICAgICAge1xuLy8gICAgICAgICAgIG5hbWU6IFwibWF4bGVuZ3RoXCIsXG4vLyAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTWF4aW11bSBsZW5ndGggdmFsaWRhdGlvblwiLFxuLy8gICAgICAgICAgIGFyZ3M6IFtcImxlbmd0aFwiLCBcIm1lc3NhZ2U/XCJdLFxuLy8gICAgICAgICB9LFxuLy8gICAgICAgICB7XG4vLyAgICAgICAgICAgbmFtZTogXCJwYXR0ZXJuXCIsXG4vLyAgICAgICAgICAgZGVzY3JpcHRpb246IFwiUmVnZXggcGF0dGVybiB2YWxpZGF0aW9uXCIsXG4vLyAgICAgICAgICAgYXJnczogW1wicGF0dGVyblwiLCBcIm1lc3NhZ2U/XCJdLFxuLy8gICAgICAgICB9LFxuLy8gICAgICAgICB7XG4vLyAgICAgICAgICAgbmFtZTogXCJzdGVwXCIsXG4vLyAgICAgICAgICAgZGVzY3JpcHRpb246IFwiU3RlcCB2YWx1ZSB2YWxpZGF0aW9uXCIsXG4vLyAgICAgICAgICAgYXJnczogW1wic3RlcFwiLCBcIm1lc3NhZ2U/XCJdLFxuLy8gICAgICAgICB9LFxuLy8gICAgICAgXSxcbi8vICAgICAgIFwidHlwZS1zcGVjaWZpY1wiOiBbXG4vLyAgICAgICAgIHtcbi8vICAgICAgICAgICBuYW1lOiBcImVtYWlsXCIsXG4vLyAgICAgICAgICAgZGVzY3JpcHRpb246IFwiRW1haWwgZm9ybWF0IHZhbGlkYXRpb25cIixcbi8vICAgICAgICAgICBhcmdzOiBbXCJtZXNzYWdlP1wiXSxcbi8vICAgICAgICAgfSxcbi8vICAgICAgICAge1xuLy8gICAgICAgICAgIG5hbWU6IFwidXJsXCIsXG4vLyAgICAgICAgICAgZGVzY3JpcHRpb246IFwiVVJMIGZvcm1hdCB2YWxpZGF0aW9uXCIsXG4vLyAgICAgICAgICAgYXJnczogW1wibWVzc2FnZT9cIl0sXG4vLyAgICAgICAgIH0sXG4vLyAgICAgICAgIHtcbi8vICAgICAgICAgICBuYW1lOiBcImRhdGVcIixcbi8vICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJEYXRlIGZvcm1hdCB2YWxpZGF0aW9uXCIsXG4vLyAgICAgICAgICAgYXJnczogW1wiZm9ybWF0P1wiLCBcIm1lc3NhZ2U/XCJdLFxuLy8gICAgICAgICB9LFxuLy8gICAgICAgICB7XG4vLyAgICAgICAgICAgbmFtZTogXCJwYXNzd29yZFwiLFxuLy8gICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlBhc3N3b3JkIHN0cmVuZ3RoIHZhbGlkYXRpb25cIixcbi8vICAgICAgICAgICBhcmdzOiBbXCJtZXNzYWdlP1wiXSxcbi8vICAgICAgICAgfSxcbi8vICAgICAgICAge1xuLy8gICAgICAgICAgIG5hbWU6IFwidHlwZVwiLFxuLy8gICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlR5cGUgdmFsaWRhdGlvblwiLFxuLy8gICAgICAgICAgIGFyZ3M6IFtcInR5cGVcIiwgXCJtZXNzYWdlP1wiXSxcbi8vICAgICAgICAgfSxcbi8vICAgICAgICAge1xuLy8gICAgICAgICAgIG5hbWU6IFwibGlzdFwiLFxuLy8gICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkFycmF5IHZhbGlkYXRpb25cIixcbi8vICAgICAgICAgICBhcmdzOiBbXCJpdGVtVHlwZVwiLCBcIm1lc3NhZ2U/XCJdLFxuLy8gICAgICAgICB9LFxuLy8gICAgICAgICB7XG4vLyAgICAgICAgICAgbmFtZTogXCJzZXRcIixcbi8vICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTZXQgdmFsaWRhdGlvblwiLFxuLy8gICAgICAgICAgIGFyZ3M6IFtcIml0ZW1UeXBlXCIsIFwibWVzc2FnZT9cIl0sXG4vLyAgICAgICAgIH0sXG4vLyAgICAgICBdLFxuLy8gICAgICAgY29tcGFyaXNvbjogW1xuLy8gICAgICAgICB7XG4vLyAgICAgICAgICAgbmFtZTogXCJlcVwiLFxuLy8gICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkVxdWFsIHRvIGFub3RoZXIgZmllbGRcIixcbi8vICAgICAgICAgICBhcmdzOiBbXCJmaWVsZE5hbWVcIiwgXCJtZXNzYWdlP1wiXSxcbi8vICAgICAgICAgfSxcbi8vICAgICAgICAge1xuLy8gICAgICAgICAgIG5hbWU6IFwiZGlmZlwiLFxuLy8gICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkRpZmZlcmVudCBmcm9tIGFub3RoZXIgZmllbGRcIixcbi8vICAgICAgICAgICBhcmdzOiBbXCJmaWVsZE5hbWVcIiwgXCJtZXNzYWdlP1wiXSxcbi8vICAgICAgICAgfSxcbi8vICAgICAgICAge1xuLy8gICAgICAgICAgIG5hbWU6IFwibHRcIixcbi8vICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJMZXNzIHRoYW4gYW5vdGhlciBmaWVsZFwiLFxuLy8gICAgICAgICAgIGFyZ3M6IFtcImZpZWxkTmFtZVwiLCBcIm1lc3NhZ2U/XCJdLFxuLy8gICAgICAgICB9LFxuLy8gICAgICAgICB7XG4vLyAgICAgICAgICAgbmFtZTogXCJsdGVcIixcbi8vICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJMZXNzIHRoYW4gb3IgZXF1YWwgdG8gYW5vdGhlciBmaWVsZFwiLFxuLy8gICAgICAgICAgIGFyZ3M6IFtcImZpZWxkTmFtZVwiLCBcIm1lc3NhZ2U/XCJdLFxuLy8gICAgICAgICB9LFxuLy8gICAgICAgICB7XG4vLyAgICAgICAgICAgbmFtZTogXCJndFwiLFxuLy8gICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkdyZWF0ZXIgdGhhbiBhbm90aGVyIGZpZWxkXCIsXG4vLyAgICAgICAgICAgYXJnczogW1wiZmllbGROYW1lXCIsIFwibWVzc2FnZT9cIl0sXG4vLyAgICAgICAgIH0sXG4vLyAgICAgICAgIHtcbi8vICAgICAgICAgICBuYW1lOiBcImd0ZVwiLFxuLy8gICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBhbm90aGVyIGZpZWxkXCIsXG4vLyAgICAgICAgICAgYXJnczogW1wiZmllbGROYW1lXCIsIFwibWVzc2FnZT9cIl0sXG4vLyAgICAgICAgIH0sXG4vLyAgICAgICBdLFxuLy8gICAgIH07XG4vL1xuLy8gICAgIGlmIChjYXRlZ29yeSA9PT0gXCJhbGxcIikge1xuLy8gICAgICAgcmV0dXJuIHtcbi8vICAgICAgICAgY2F0ZWdvcmllczogZGVjb3JhdG9ycyxcbi8vICAgICAgICAgdG90YWw6IE9iamVjdC52YWx1ZXMoZGVjb3JhdG9ycykucmVkdWNlKFxuLy8gICAgICAgICAgIChzdW0sIGFycikgPT4gc3VtICsgYXJyLmxlbmd0aCxcbi8vICAgICAgICAgICAwXG4vLyAgICAgICAgICksXG4vLyAgICAgICB9O1xuLy8gICAgIH1cbi8vXG4vLyAgICAgcmV0dXJuIHtcbi8vICAgICAgIGNhdGVnb3J5LFxuLy8gICAgICAgZGVjb3JhdG9yczogZGVjb3JhdG9yc1tjYXRlZ29yeV0gfHwgW10sXG4vLyAgICAgICBjb3VudDogZGVjb3JhdG9yc1tjYXRlZ29yeV0/Lmxlbmd0aCB8fCAwLFxuLy8gICAgIH07XG4vLyAgIH0sXG4vLyB9KTtcbi8vXG4vLyAvLyBVdGlsaXR5IGZ1bmN0aW9uIHRvIGdldCBkZWNvcmF0b3IgZnVuY3Rpb24gYnkgbmFtZVxuLy8gZnVuY3Rpb24gZ2V0RGVjb3JhdG9yRnVuY3Rpb24obmFtZTogc3RyaW5nKTogRnVuY3Rpb24gfCBudWxsIHtcbi8vICAgY29uc3QgZGVjb3JhdG9yTWFwID0ge1xuLy8gICAgIHJlcXVpcmVkLFxuLy8gICAgIGVtYWlsLFxuLy8gICAgIG1pbixcbi8vICAgICBtYXgsXG4vLyAgICAgbWlubGVuZ3RoLFxuLy8gICAgIG1heGxlbmd0aCxcbi8vICAgICBwYXR0ZXJuLFxuLy8gICAgIHVybCxcbi8vICAgICBkYXRlLFxuLy8gICAgIHBhc3N3b3JkLFxuLy8gICAgIGxpc3QsXG4vLyAgICAgc2V0LFxuLy8gICAgIGVxLFxuLy8gICAgIGRpZmYsXG4vLyAgICAgbHQsXG4vLyAgICAgbHRlLFxuLy8gICAgIGd0LFxuLy8gICAgIGd0ZSxcbi8vICAgICB0eXBlLFxuLy8gICAgIHN0ZXAsXG4vLyAgIH07XG4vLyAgIHJldHVybiBkZWNvcmF0b3JNYXBbbmFtZV0gfHwgbnVsbDtcbi8vIH1cbi8vXG4vLyAvLyBVdGlsaXR5IGZ1bmN0aW9uIHRvIGZpbmQgZGlmZmVyZW5jZXMgYmV0d2VlbiBtb2RlbHNcbi8vIGFzeW5jIGZ1bmN0aW9uIGZpbmREaWZmZXJlbmNlcyhpbnN0YW5jZTE6IGFueSwgaW5zdGFuY2UyOiBhbnkpOiBQcm9taXNlPGFueVtdPiB7XG4vLyAgIGNvbnN0IGRpZmZlcmVuY2VzID0gW107XG4vLyAgIGNvbnN0IHNlcmlhbGl6ZWQxID0gSlNPTi5wYXJzZShpbnN0YW5jZTEuc2VyaWFsaXplKCkpO1xuLy8gICBjb25zdCBzZXJpYWxpemVkMiA9IEpTT04ucGFyc2UoaW5zdGFuY2UyLnNlcmlhbGl6ZSgpKTtcbi8vXG4vLyAgIGZvciAoY29uc3Qga2V5IGluIHNlcmlhbGl6ZWQxKSB7XG4vLyAgICAgaWYgKHNlcmlhbGl6ZWQxW2tleV0gIT09IHNlcmlhbGl6ZWQyW2tleV0pIHtcbi8vICAgICAgIGRpZmZlcmVuY2VzLnB1c2goe1xuLy8gICAgICAgICBmaWVsZDoga2V5LFxuLy8gICAgICAgICB2YWx1ZTE6IHNlcmlhbGl6ZWQxW2tleV0sXG4vLyAgICAgICAgIHZhbHVlMjogc2VyaWFsaXplZDJba2V5XSxcbi8vICAgICAgIH0pO1xuLy8gICAgIH1cbi8vICAgfVxuLy9cbi8vICAgcmV0dXJuIGRpZmZlcmVuY2VzO1xuLy8gfVxuLy9cbi8vIC8vIFN0YXJ0IHRoZSBzZXJ2ZXJcbi8vIHNlcnZlci5zdGFydCh7XG4vLyAgIHRyYW5zcG9ydFR5cGU6IFwic3RkaW9cIixcbi8vIH0pO1xuLy9cbi8vIGV4cG9ydCB7IHNlcnZlciB9O1xuIl19
|
|
405
|
+
//# sourceMappingURL=mcp1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp1.js","sourceRoot":"","sources":["../../src/mcp/mcp1.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,4 +64,4 @@
|
|
|
64
64
|
// return `Model "${name}" created and registered successfully`;
|
|
65
65
|
// },
|
|
66
66
|
// };
|
|
67
|
-
//# sourceMappingURL=
|
|
67
|
+
//# sourceMappingURL=createModel.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createModel.tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/createModel.tool.ts"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,yEAAyE;AACzE,kDAAkD;AAClD,EAAE;AACF,yCAAyC;AACzC,YAAY;AACZ,iBAAiB;AACjB,0BAA0B;AAC1B,+DAA+D;AAC/D,6BAA6B;AAC7B,qBAAqB;AACrB,8BAA8B;AAC9B,+CAA+C;AAC/C,aAAa;AACb,WAAW;AACX,SAAS;AACT,MAAM;AACN,yDAAyD;AACzD,EAAE;AACF,mEAAmE;AACnE,EAAE;AACF,uDAAuD;AACvD,0BAA0B;AAC1B,wEAAwE;AACxE,uCAAuC;AACvC,kCAAkC;AAClC,kDAAkD;AAClD,EAAE;AACF,oCAAoC;AACpC,iDAAiD;AACjD,4DAA4D;AAC5D,uBAAuB;AACvB,uCAAuC;AACvC,UAAU;AACV,SAAS;AACT,EAAE;AACF,sCAAsC;AACtC,oCAAoC;AACpC,uDAAuD;AACvD,QAAQ;AACR,iCAAiC;AACjC,wDAAwD;AACxD,QAAQ;AACR,EAAE;AACF,mCAAmC;AACnC,qCAAqC;AACrC,iDAAiD;AACjD,oEAAoE;AACpE,6BAA6B;AAC7B,oDAAoD;AACpD,sCAAsC;AACtC,wBAAwB;AACxB,eAAe;AACf,YAAY;AACZ,YAAY;AACZ,UAAU;AACV,EAAE;AACF,4BAA4B;AAC5B,oEAAoE;AACpE,oCAAoC;AACpC,6CAA6C;AAC7C,EAAE;AACF,oEAAoE;AACpE,OAAO;AACP,KAAK"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=validateModel.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateModel.tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/validateModel.tool.ts"],"names":[],"mappings":""}
|
package/lib/mcp/types.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":""}
|
package/lib/model/Builder.cjs
CHANGED
|
@@ -127,4 +127,4 @@
|
|
|
127
127
|
// return new ModelBuilder();
|
|
128
128
|
// }
|
|
129
129
|
// }
|
|
130
|
-
//# sourceMappingURL=
|
|
130
|
+
//# sourceMappingURL=Builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../src/model/Builder.ts"],"names":[],"mappings":";AAAA,mCAAmC;AACnC,mDAAmD;AACnD,gEAAgE;AAChE,EAAE;AACF,qDAAqD;AACrD,mEAAmE;AACnE,IAAI;AACJ,EAAE;AACF,uEAAuE;AACvE,iCAAiC;AACjC,IAAI;AACJ,iBAAiB;AACjB,yCAAyC;AACzC,8BAA8B;AAC9B,uBAAuB;AACvB,SAAS;AACT,EAAE;AACF,4DAA4D;AAC5D,EAAE;AACF,oEAAoE;AACpE,4CAA4C;AAC5C,4CAA4C;AAC5C,6EAA6E;AAC7E,wCAAwC;AACxC,QAAQ;AACR,0BAA0B;AAC1B,MAAM;AACN,EAAE;AACF,qDAAqD;AACrD,4CAA4C;AAC5C,6CAA6C;AAC7C,2BAA2B;AAC3B,gFAAgF;AAChF,aAAa;AACb,2CAA2C;AAC3C,QAAQ;AACR,0BAA0B;AAC1B,MAAM;AACN,EAAE;AACF,kDAAkD;AAClD,8CAA8C;AAC9C,0BAA0B;AAC1B,UAAU;AACV,+CAA+C;AAC/C,cAAc;AACd,4CAA4C;AAC5C,+BAA+B;AAC/B,2BAA2B;AAC3B,gFAAgF;AAChF,aAAa;AACb,UAAU;AACV,UAAU;AACV,SAAS;AACT,uDAAuD;AACvD,SAAS;AACT,uBAAuB;AACvB,kBAAkB;AAClB,eAAe;AACf,0BAA0B;AAC1B,WAAW;AACX,EAAE;AACF,oFAAoF;AACpF,MAAM;AACN,IAAI;AACJ,EAAE;AACF,mFAAmF;AACnF,gFAAgF;AAChF,4BAA4B;AAC5B,EAAE;AACF,sCAAsC;AACtC,EAAE;AACF,4BAA4B;AAC5B,yBAAyB;AACzB,mBAAmB;AACnB,MAAM;AACN,EAAE;AACF,4CAA4C;AAC5C,oBAAoB;AACpB,cAAc;AACd,mCAAmC;AACnC,qEAAqE;AACrE,MAAM;AACN,EAAE;AACF,2BAA2B;AAC3B,gDAAgD;AAChD,MAAM;AACN,EAAE;AACF,2BAA2B;AAC3B,gDAAgD;AAChD,MAAM;AACN,EAAE;AACF,yBAAyB;AACzB,8CAA8C;AAC9C,MAAM;AACN,EAAE;AACF,2BAA2B;AAC3B,gDAAgD;AAChD,MAAM;AACN,EAAE;AACF,sDAAsD;AACtD,+CAA+C;AAC/C,MAAM;AACN,EAAE;AACF,8BAA8B;AAC9B,4DAA4D;AAC5D,EAAE;AACF,yDAAyD;AACzD,yCAAyC;AACzC,6BAA6B;AAC7B,UAAU;AACV,SAAS;AACT,EAAE;AACF,yDAAyD;AACzD,2BAA2B;AAC3B,yBAAyB;AACzB,UAAU;AACV,EAAE;AACF,+CAA+C;AAC/C,mDAAmD;AACnD,UAAU;AACV,EAAE;AACF,6DAA6D;AAC7D,MAAM;AACN,EAAE;AACF,2BAA2B;AAC3B,iCAAiC;AACjC,MAAM;AACN,IAAI"}
|
package/lib/model/Model.cjs
CHANGED
|
@@ -627,4 +627,4 @@ class Model {
|
|
|
627
627
|
}
|
|
628
628
|
}
|
|
629
629
|
exports.Model = Model;
|
|
630
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvTW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZ0tBLDhDQVdDO0FBM0tELGdFQUF1RDtBQWF2RCxxREFBOEU7QUFDOUUsaURBQXdDO0FBQ3hDLG9EQUEyQztBQUMzQyx3REFBK0M7QUFDL0Msd0VBQW9FO0FBQ3BFLCtDQUFzRDtBQUN0RCx1Q0FBbUQ7QUFFbkQsd0RBQThDO0FBRTlDLElBQUksb0JBQXNELENBQUM7QUFDM0QsSUFBSSxtQkFBeUMsQ0FBQztBQWdCOUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Q0c7QUFDSCxNQUFhLG9CQUFvQjtJQU0vQixZQUNFLGVBQXNELEtBQUssQ0FBQyxPQUFPO1FBSjdELFVBQUssR0FBd0MsRUFBRSxDQUFDO1FBTXRELElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsUUFBUSxDQUFDLFdBQWdDLEVBQUUsSUFBYTtRQUN0RCxJQUFJLE9BQU8sV0FBVyxLQUFLLFVBQVU7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FDYiw2REFBNkQsQ0FDOUQsQ0FBQztRQUNKLElBQUksR0FBRyxJQUFJLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsR0FBRyxDQUFDLElBQVk7UUFDZCxJQUFJLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEIsNkRBQTZEO1FBQy9ELENBQUM7UUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1lBQ2hCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFD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LENBQUM7UUFFRCxPQUFPLENBQ0wsT0FBTyxDQUFDLFdBQVcsQ0FDakIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxxQkFBUyxDQUFDLFdBQVcsQ0FBQyxFQUNoQyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQ25ELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUN0QixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbmtCRCxzQkFta0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VyaWFsaXphdGlvbiB9IGZyb20gXCIuLi91dGlscy9zZXJpYWxpemF0aW9uXCI7XG5pbXBvcnQgeyBCdWlsZGVyUmVnaXN0cnkgfSBmcm9tIFwiLi4vdXRpbHMvcmVnaXN0cnlcIjtcbmltcG9ydCB7IE1vZGVsRXJyb3JEZWZpbml0aW9uIH0gZnJvbSBcIi4vTW9kZWxFcnJvckRlZmluaXRpb25cIjtcbmltcG9ydCB7XG4gIENvbXBhcmFibGUsXG4gIENvbnN0cnVjdG9yLFxuICBIYXNoYWJsZSxcbiAgTW9kZWxBcmcsXG4gIE1vZGVsQnVpbGRlckZ1bmN0aW9uLFxuICBNb2RlbENvbnN0cnVjdG9yLFxuICBTZXJpYWxpemFibGUsXG4gIFZhbGlkYXRhYmxlLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgRGVjb3JhdG9yTWV0YWRhdGEsIGlzRXF1YWwsIFJlZmxlY3Rpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcbmltcG9ydCB7IHZhbGlkYXRlIH0gZnJvbSBcIi4vdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgSGFzaGluZyB9IGZyb20gXCIuLi91dGlscy9oYXNoaW5nXCI7XG5pbXBvcnQgeyBNb2RlbEtleXMgfSBmcm9tIFwiLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCIuLi92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBqc1R5cGVzLCBSZXNlcnZlZE1vZGVscyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZ2V0TWV0YWRhdGEsIGdldE1vZGVsS2V5IH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IENvbmRpdGlvbmFsQXN5bmMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IEFTWU5DX01FVEFfS0VZIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5sZXQgbW9kZWxCdWlsZGVyRnVuY3Rpb246IE1vZGVsQnVpbGRlckZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xubGV0IGFjdGluZ01vZGVsUmVnaXN0cnk6IEJ1aWxkZXJSZWdpc3RyeTxhbnk+O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZWdpc3RyeSB0eXBlIGZvciBzdG9yaW5nIGFuZCByZXRyaWV2aW5nIG1vZGVsIGNvbnN0cnVjdG9yc1xuICogQHN1bW1hcnkgVGhlIE1vZGVsUmVnaXN0cnkgdHlwZSBkZWZpbmVzIGEgcmVnaXN0cnkgZm9yIG1vZGVsIGNvbnN0cnVjdG9ycyB0aGF0IGV4dGVuZHNcbiAqIHRoZSBCdWlsZGVyUmVnaXN0cnkgaW50ZXJmYWNlLiBJdCBwcm92aWRlcyBhIHN0YW5kYXJkaXplZCB3YXkgdG8gcmVnaXN0ZXIsIHJldHJpZXZlLFxuICogYW5kIGJ1aWxkIG1vZGVsIGluc3RhbmNlcywgZW5hYmxpbmcgdGhlIG1vZGVsIHN5c3RlbSB0byB3b3JrIHdpdGggZGlmZmVyZW50IHR5cGVzIG9mIG1vZGVscy5cbiAqXG4gKiBAaW50ZXJmYWNlIE1vZGVsUmVnaXN0cnlcbiAqIEB0ZW1wbGF0ZSBUIFR5cGUgb2YgbW9kZWwgdGhhdCBjYW4gYmUgcmVnaXN0ZXJlZCwgbXVzdCBleHRlbmQgTW9kZWxcbiAqIEBleHRlbmRzIEJ1aWxkZXJSZWdpc3RyeTxUPlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IE1vZGVsXG4gKi9cbmV4cG9ydCB0eXBlIE1vZGVsUmVnaXN0cnk8VCBleHRlbmRzIE1vZGVsPiA9IEJ1aWxkZXJSZWdpc3RyeTxUPjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVnaXN0cnkgbWFuYWdlciBmb3IgbW9kZWwgY29uc3RydWN0b3JzIHRoYXQgZW5hYmxlcyBzZXJpYWxpemF0aW9uIGFuZCByZWJ1aWxkaW5nXG4gKiBAc3VtbWFyeSBUaGUgTW9kZWxSZWdpc3RyeU1hbmFnZXIgaW1wbGVtZW50cyB0aGUgTW9kZWxSZWdpc3RyeSBpbnRlcmZhY2UgYW5kIHByb3ZpZGVzXG4gKiBmdW5jdGlvbmFsaXR5IGZvciByZWdpc3RlcmluZywgcmV0cmlldmluZywgYW5kIGJ1aWxkaW5nIG1vZGVsIGluc3RhbmNlcy4gSXQgbWFpbnRhaW5zXG4gKiBhIGNhY2hlIG9mIG1vZGVsIGNvbnN0cnVjdG9ycyBpbmRleGVkIGJ5IG5hbWUsIGFsbG93aW5nIGZvciBlZmZpY2llbnQgbG9va3VwIGFuZCBpbnN0YW50aWF0aW9uLlxuICogVGhpcyBjbGFzcyBpcyBlc3NlbnRpYWwgZm9yIHRoZSBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24gb2YgbW9kZWwgb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKFJlY29yZDxzdHJpbmcsIGFueT4pOiBib29sZWFufSBbdGVzdEZ1bmN0aW9uXSAtIEZ1bmN0aW9uIHRvIHRlc3QgaWYgYW4gb2JqZWN0IGlzIGEgbW9kZWwsIGRlZmF1bHRzIHRvIHtAbGluayBNb2RlbCNpc01vZGVsfVxuICpcbiAqIEBjbGFzcyBNb2RlbFJlZ2lzdHJ5TWFuYWdlclxuICogQHRlbXBsYXRlIE0gVHlwZSBvZiBtb2RlbCB0aGF0IGNhbiBiZSByZWdpc3RlcmVkLCBtdXN0IGV4dGVuZCBNb2RlbFxuICogQGltcGxlbWVudHMgTW9kZWxSZWdpc3RyeTxNPlxuICogQGNhdGVnb3J5IE1vZGVsXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIENyZWF0ZSBhIG1vZGVsIHJlZ2lzdHJ5XG4gKiBjb25zdCByZWdpc3RyeSA9IG5ldyBNb2RlbFJlZ2lzdHJ5TWFuYWdlcigpO1xuICpcbiAqIC8vIFJlZ2lzdGVyIGEgbW9kZWwgY2xhc3NcbiAqIHJlZ2lzdHJ5LnJlZ2lzdGVyKFVzZXIpO1xuICpcbiAqIC8vIFJldHJpZXZlIGEgbW9kZWwgY29uc3RydWN0b3IgYnkgbmFtZVxuICogY29uc3QgVXNlckNsYXNzID0gcmVnaXN0cnkuZ2V0KFwiVXNlclwiKTtcbiAqXG4gKiAvLyBCdWlsZCBhIG1vZGVsIGluc3RhbmNlIGZyb20gYSBwbGFpbiBvYmplY3RcbiAqIGNvbnN0IHVzZXJEYXRhID0geyBuYW1lOiBcIkpvaG5cIiwgYWdlOiAzMCB9O1xuICogY29uc3QgdXNlciA9IHJlZ2lzdHJ5LmJ1aWxkKHVzZXJEYXRhLCBcIlVzZXJcIik7XG4gKiBgYGBcbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IEMgYXMgQ2xpZW50XG4gKiAgIHBhcnRpY2lwYW50IFIgYXMgTW9kZWxSZWdpc3RyeU1hbmFnZXJcbiAqICAgcGFydGljaXBhbnQgTSBhcyBNb2RlbCBDbGFzc1xuICpcbiAqICAgQy0+PlI6IG5ldyBNb2RlbFJlZ2lzdHJ5TWFuYWdlcih0ZXN0RnVuY3Rpb24pXG4gKiAgIEMtPj5SOiByZWdpc3RlcihNb2RlbENsYXNzKVxuICogICBSLT4+UjogU3RvcmUgaW4gY2FjaGVcbiAqICAgQy0+PlI6IGdldChcIk1vZGVsTmFtZVwiKVxuICogICBSLS0+PkM6IE1vZGVsQ2xhc3MgY29uc3RydWN0b3JcbiAqICAgQy0+PlI6IGJ1aWxkKGRhdGEsIFwiTW9kZWxOYW1lXCIpXG4gKiAgIFItPj5SOiBHZXQgY29uc3RydWN0b3IgZnJvbSBjYWNoZVxuICogICBSLT4+TTogbmV3IE1vZGVsQ2xhc3MoZGF0YSlcbiAqICAgTS0tPj5SOiBNb2RlbCBpbnN0YW5jZVxuICogICBSLS0+PkM6IE1vZGVsIGluc3RhbmNlXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2RlbFJlZ2lzdHJ5TWFuYWdlcjxNIGV4dGVuZHMgTW9kZWw8dHJ1ZSB8IGZhbHNlPj5cbiAgaW1wbGVtZW50cyBNb2RlbFJlZ2lzdHJ5PE0+XG57XG4gIHByaXZhdGUgY2FjaGU6IFJlY29yZDxzdHJpbmcsIE1vZGVsQ29uc3RydWN0b3I8TT4+ID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVzdEZ1bmN0aW9uOiAob2JqOiBvYmplY3QpID0+IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdGVzdEZ1bmN0aW9uOiAob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBib29sZWFuID0gTW9kZWwuaXNNb2RlbFxuICApIHtcbiAgICB0aGlzLnRlc3RGdW5jdGlvbiA9IHRlc3RGdW5jdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXJzIGEgbW9kZWwgY29uc3RydWN0b3Igd2l0aCB0aGUgcmVnaXN0cnlcbiAgICogQHN1bW1hcnkgQWRkcyBhIG1vZGVsIGNvbnN0cnVjdG9yIHRvIHRoZSByZWdpc3RyeSBjYWNoZSwgbWFraW5nIGl0IGF2YWlsYWJsZSBmb3JcbiAgICogbGF0ZXIgcmV0cmlldmFsIGFuZCBpbnN0YW50aWF0aW9uLiBJZiBubyBuYW1lIGlzIHByb3ZpZGVkLCB0aGUgY29uc3RydWN0b3IncyBuYW1lXG4gICAqIHByb3BlcnR5IGlzIHVzZWQgYXMgdGhlIGtleSBpbiB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBwYXJhbSB7TW9kZWxDb25zdHJ1Y3RvcjxNPn0gY29uc3RydWN0b3IgLSBUaGUgbW9kZWwgY29uc3RydWN0b3IgdG8gcmVnaXN0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtuYW1lXSAtIE9wdGlvbmFsIG5hbWUgdG8gcmVnaXN0ZXIgdGhlIGNvbnN0cnVjdG9yIHVuZGVyLCBkZWZhdWx0cyB0byBjb25zdHJ1Y3Rvci5uYW1lXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IGEgZnVuY3Rpb25cbiAgICovXG4gIHJlZ2lzdGVyKGNvbnN0cnVjdG9yOiBNb2RlbENvbnN0cnVjdG9yPE0+LCBuYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBjb25zdHJ1Y3RvciAhPT0gXCJmdW5jdGlvblwiKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk1vZGVsIHJlZ2lzdGVyaW5nIGZhaWxlZC4gTWlzc2luZyBDbGFzcyBuYW1lIG9yIGNvbnN0cnVjdG9yXCJcbiAgICAgICk7XG4gICAgbmFtZSA9IG5hbWUgfHwgY29uc3RydWN0b3IubmFtZTtcbiAgICB0aGlzLmNhY2hlW25hbWVdID0gY29uc3RydWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgR2V0cyBhIHJlZ2lzdGVyZWQgTW9kZWwge0BsaW5rIE1vZGVsQ29uc3RydWN0b3J9XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqL1xuICBnZXQobmFtZTogc3RyaW5nKTogTW9kZWxDb25zdHJ1Y3RvcjxNPiB8IHVuZGVmaW5lZCB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlW25hbWVdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBvYmpcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtjbGF6el0gd2hlbiBwcm92aWRlZCwgaXQgd2lsbCBhdHRlbXB0IHRvIGZpbmQgdGhlIG1hdGNoaW5nIGNvbnN0cnVjdG9yXG4gICAqXG4gICAqIEB0aHJvd3MgRXJyb3IgSWYgY2xhenogaXMgbm90IGZvdW5kLCBvciBvYmogaXMgbm90IGEge0BsaW5rIE1vZGVsfSBtZWFuaW5nIGl0IGhhcyBubyB7QGxpbmsgTW9kZWxLZXlzLkFOQ0hPUn0gcHJvcGVydHlcbiAgICovXG4gIGJ1aWxkKG9iajogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LCBjbGF6ej86IHN0cmluZyk6IE0ge1xuICAgIGlmICghY2xhenogJiYgIXRoaXMudGVzdEZ1bmN0aW9uKG9iaikpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQcm92aWRlZCBvYmogaXMgbm90IGEgTW9kZWwgb2JqZWN0XCIpO1xuICAgIGNvbnN0IG5hbWUgPSBjbGF6eiB8fCBNb2RlbC5nZXRNZXRhZGF0YShvYmogYXMgYW55KTtcbiAgICBpZiAoIShuYW1lIGluIHRoaXMuY2FjaGUpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgUHJvdmlkZWQgY2xhc3MgJHtuYW1lfSBpcyBub3QgYSByZWdpc3RlcmVkIE1vZGVsIG9iamVjdGBcbiAgICAgICk7XG4gICAgcmV0dXJuIG5ldyB0aGlzLmNhY2hlW25hbWVdKG9iaik7XG4gIH1cbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBCdWxrIFJlZ2lzdGVycyBNb2RlbHNcbiAqIEBkZXNjcmlwdGlvbiBVc2VmdWwgd2hlbiB1c2luZyBidW5kbGVycyB0aGF0IG1pZ2h0IG5vdCBldmFsdWF0ZSBhbGwgdGhlIGNvZGUgYXQgb25jZVxuICpcbiAqIEB0ZW1wbGF0ZSBNIGV4dGVuZHMgTW9kZWxcbiAqIEBwYXJhbSB7QXJyYXk8Q29uc3RydWN0b3I8TT4+IHwgQXJyYXk8e25hbWU6IHN0cmluZywgY29uc3RydWN0b3I6IENvbnN0cnVjdG9yPE0+fT59IFttb2RlbHNdXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IE1vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWxrTW9kZWxSZWdpc3RlcjxNIGV4dGVuZHMgTW9kZWw+KFxuICAuLi5tb2RlbHM6IChDb25zdHJ1Y3RvcjxNPiB8IHsgbmFtZTogc3RyaW5nOyBjb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8TT4gfSlbXVxuKSB7XG4gIG1vZGVscy5mb3JFYWNoKFxuICAgIChtOiBDb25zdHJ1Y3RvcjxNPiB8IHsgbmFtZTogc3RyaW5nOyBjb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8TT4gfSkgPT4ge1xuICAgICAgY29uc3QgY29uc3RydWN0b3I6IENvbnN0cnVjdG9yPE0+ID0gKFxuICAgICAgICBtLmNvbnN0cnVjdG9yID8gbS5jb25zdHJ1Y3RvciA6IG1cbiAgICAgICkgYXMgQ29uc3RydWN0b3I8TT47XG4gICAgICBNb2RlbC5yZWdpc3Rlcihjb25zdHJ1Y3RvciwgKG0gYXMgQ29uc3RydWN0b3I8TT4pLm5hbWUpO1xuICAgIH1cbiAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBBYnN0cmFjdCBjbGFzcyByZXByZXNlbnRpbmcgYSBWYWxpZGF0YWJsZSBNb2RlbCBvYmplY3RcbiAqIEBkZXNjcmlwdGlvbiBNZWFudCB0byBiZSB1c2VkIGFzIGEgYmFzZSBjbGFzcyBmb3IgYWxsIE1vZGVsIGNsYXNzZXNcbiAqXG4gKiBNb2RlbCBvYmplY3RzIG11c3Q6XG4gKiAgLSBIYXZlIGFsbCB0aGVpciByZXF1aXJlZCBwcm9wZXJ0aWVzIG1hcmtlZCB3aXRoICchJztcbiAqICAtIEhhdmUgYWxsIHRoZWlyIG9wdGlvbmFsIHByb3BlcnRpZXMgbWFya2VkIGFzICc/JzpcbiAqXG4gKiBAcGFyYW0ge01vZGVsQXJnPE1vZGVsPn0gbW9kZWwgYmFzZSBvYmplY3QgZnJvbSB3aGljaCB0byBwb3B1bGF0ZSBwcm9wZXJ0aWVzIGZyb21cbiAqXG4gKiBAY2xhc3MgTW9kZWxcbiAqIEBjYXRlZ29yeSBNb2RlbFxuICogQGFic3RyYWN0XG4gKiBAaW1wbGVtZW50cyBWYWxpZGF0YWJsZVxuICogQGltcGxlbWVudHMgU2VyaWFsaXphYmxlXG4gKlxuICogQGV4YW1wbGVcbiAqICAgICAgY2xhc3MgQ2xhc3NOYW1lIHtcbiAqICAgICAgICAgIEByZXF1aXJlZCgpXG4gKiAgICAgICAgICByZXF1aXJlZFByb3BlcnR5TmFtZSE6IFByb3BlcnR5VHlwZTtcbiAqXG4gKiAgICAgICAgICBvcHRpb25hbFByb3BlcnR5TmFtZT86IFByb3BlcnR5VHlwZTtcbiAqICAgICAgfVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTW9kZWw8QXN5bmMgZXh0ZW5kcyBib29sZWFuID0gZmFsc2U+XG4gIGltcGxlbWVudHNcbiAgICBWYWxpZGF0YWJsZTxBc3luYz4sXG4gICAgU2VyaWFsaXphYmxlLFxuICAgIEhhc2hhYmxlLFxuICAgIENvbXBhcmFibGU8TW9kZWw8QXN5bmM+Plxue1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihhcmc6IE1vZGVsQXJnPE1vZGVsPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkge31cblxuICBwdWJsaWMgaXNBc3luYygpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcyBhcyBhbnk7XG4gICAgcmV0dXJuICEhKHNlbGZbQVNZTkNfTUVUQV9LRVldID8/IHNlbGY/LmNvbnN0cnVjdG9yW0FTWU5DX01FVEFfS0VZXSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFZhbGlkYXRlcyB0aGUgbW9kZWwgb2JqZWN0IGFnYWluc3QgaXRzIGRlZmluZWQgdmFsaWRhdGlvbiBydWxlc1xuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgdGhlIG9iamVjdCBhY2NvcmRpbmcgdG8gaXRzIGRlY29yYXRlZCBwcm9wZXJ0aWVzLCByZXR1cm5pbmcgYW55IHZhbGlkYXRpb24gZXJyb3JzXG4gICAqXG4gICAqIEBwYXJhbSB7YW55W119IFtleGNlcHRpb25zXSAtIFByb3BlcnRpZXMgaW4gdGhlIG9iamVjdCB0byBiZSBpZ25vcmVkIGZvciB0aGUgdmFsaWRhdGlvbi4gTWFya2VkIGFzICdhbnknIHRvIGFsbG93IGZvciBleHRlbnNpb24gYnV0IGV4cGVjdHMgc3RyaW5nc1xuICAgKiBAcmV0dXJuIHtNb2RlbEVycm9yRGVmaW5pdGlvbiB8IHVuZGVmaW5lZH0gLSBSZXR1cm5zIGEgTW9kZWxFcnJvckRlZmluaXRpb24gb2JqZWN0IGlmIHZhbGlkYXRpb24gZXJyb3JzIGV4aXN0LCBvdGhlcndpc2UgdW5kZWZpbmVkXG4gICAqL1xuICBwdWJsaWMgaGFzRXJyb3JzKFxuICAgIC4uLmV4Y2VwdGlvbnM6IGFueVtdXG4gICk6IENvbmRpdGlvbmFsQXN5bmM8QXN5bmMsIE1vZGVsRXJyb3JEZWZpbml0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHZhbGlkYXRlPGFueSwgQXN5bmM+KFxuICAgICAgdGhpcyxcbiAgICAgIHRoaXMuaXNBc3luYygpIGFzIGFueSxcbiAgICAgIC4uLmV4Y2VwdGlvbnNcbiAgICApIGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRGV0ZXJtaW5lcyBpZiB0aGlzIG1vZGVsIGlzIGVxdWFsIHRvIGFub3RoZXIgb2JqZWN0XG4gICAqIEBzdW1tYXJ5IENvbXBhcmUgb2JqZWN0IGVxdWFsaXR5IHJlY3Vyc2l2ZWx5LCBjaGVja2luZyBhbGwgcHJvcGVydGllcyB1bmxlc3MgZXhjbHVkZWRcbiAgICpcbiAgICogQHBhcmFtIHthbnl9IG9iaiAtIE9iamVjdCB0byBjb21wYXJlIHRvXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IFtleGNlcHRpb25zXSAtIFByb3BlcnR5IG5hbWVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIGNvbXBhcmlzb25cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gLSBUcnVlIGlmIG9iamVjdHMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHB1YmxpYyBlcXVhbHMob2JqOiBhbnksIC4uLmV4Y2VwdGlvbnM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzRXF1YWwodGhpcywgb2JqLCAuLi5leGNlcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29udmVydHMgdGhlIG1vZGVsIHRvIGEgc2VyaWFsaXplZCBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgc2VyaWFsaXplZCBtb2RlbCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnRseSBkZWZpbmVkIHtAbGluayBTZXJpYWxpemVyfVxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IC0gVGhlIHNlcmlhbGl6ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbFxuICAgKi9cbiAgc2VyaWFsaXplKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE1vZGVsLnNlcmlhbGl6ZSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsXG4gICAqIEBzdW1tYXJ5IE92ZXJyaWRlIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IganMncyAndG9TdHJpbmcoKScgdG8gcHJvdmlkZSBhIG1vcmUgdXNlZnVsIHJlcHJlc2VudGF0aW9uXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gLSBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgaW5jbHVkaW5nIGl0cyBjbGFzcyBuYW1lIGFuZCBKU09OIHJlcHJlc2VudGF0aW9uXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZSArIFwiOiBcIiArIEpTT04uc3RyaW5naWZ5KHRoaXMsIHVuZGVmaW5lZCwgMik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdlbmVyYXRlcyBhIGhhc2ggc3RyaW5nIGZvciB0aGUgbW9kZWwgb2JqZWN0XG4gICAqIEBzdW1tYXJ5IERlZmluZXMgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBvYmplY3QgaGFzaCwgcmVseWluZyBvbiBhIGJhc2ljIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIEphdmEncyBzdHJpbmcgaGFzaFxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IC0gQSBoYXNoIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIG1vZGVsXG4gICAqL1xuICBwdWJsaWMgaGFzaCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBNb2RlbC5oYXNoKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHNlcmlhbGl6ZWQgc3RyaW5nIGJhY2sgaW50byBhIG1vZGVsIGluc3RhbmNlXG4gICAqIEBzdW1tYXJ5IERlc2VyaWFsaXplcyBhIE1vZGVsIGZyb20gaXRzIHN0cmluZyByZXByZXNlbnRhdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gVGhlIHNlcmlhbGl6ZWQgc3RyaW5nIHRvIGNvbnZlcnQgYmFjayB0byBhIG1vZGVsXG4gICAqIEByZXR1cm4ge2FueX0gLSBUaGUgZGVzZXJpYWxpemVkIG1vZGVsIGluc3RhbmNlXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBpdCBmYWlscyB0byBwYXJzZSB0aGUgc3RyaW5nLCBvciBpZiBpdCBmYWlscyB0byBidWlsZCB0aGUgbW9kZWxcbiAgICovXG4gIHN0YXRpYyBkZXNlcmlhbGl6ZShzdHI6IHN0cmluZykge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgIE1vZGVsLmtleShNb2RlbEtleXMuU0VSSUFMSVpBVElPTiksXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXG4gICAgKTtcblxuICAgIGlmIChtZXRhZGF0YSAmJiBtZXRhZGF0YS5zZXJpYWxpemVyKVxuICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb24uZGVzZXJpYWxpemUoXG4gICAgICAgIHN0cixcbiAgICAgICAgbWV0YWRhdGEuc2VyaWFsaXplcixcbiAgICAgICAgLi4uKG1ldGFkYXRhLmFyZ3MgfHwgW10pXG4gICAgICApO1xuICAgIHJldHVybiBTZXJpYWxpemF0aW9uLmRlc2VyaWFsaXplKHN0cik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvcGllcyBwcm9wZXJ0aWVzIGZyb20gYSBzb3VyY2Ugb2JqZWN0IHRvIGEgbW9kZWwgaW5zdGFuY2VcbiAgICogQHN1bW1hcnkgUmVwb3B1bGF0ZXMgdGhlIE9iamVjdCBwcm9wZXJ0aWVzIHdpdGggdGhlIG9uZXMgZnJvbSB0aGUgbmV3IG9iamVjdFxuICAgKlxuICAgKiBAdGVtcGxhdGUgVFxuICAgKiBAcGFyYW0ge1R9IHNlbGYgLSBUaGUgdGFyZ2V0IG1vZGVsIGluc3RhbmNlIHRvIHVwZGF0ZVxuICAgKiBAcGFyYW0ge1QgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbb2JqXSAtIFRoZSBzb3VyY2Ugb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyB0byBjb3B5XG4gICAqIEByZXR1cm4ge1R9IC0gVGhlIHVwZGF0ZWQgbW9kZWwgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBmcm9tT2JqZWN0PFQgZXh0ZW5kcyBNb2RlbDxhbnk+PihcbiAgICBzZWxmOiBULFxuICAgIG9iaj86IFQgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICk6IFQge1xuICAgIGlmICghb2JqKSBvYmogPSB7fTtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgTW9kZWwuZ2V0QXR0cmlidXRlcyhzZWxmKSkge1xuICAgICAgKHNlbGYgYXMgYW55KVtwcm9wXSA9XG4gICAgICAgIChvYmogYXMgYW55KVtwcm9wXSA/PyAoc2VsZiBhcyBhbnkpW3Byb3BdID8/IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGY7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvcGllcyBhbmQgcmVidWlsZHMgcHJvcGVydGllcyBmcm9tIGEgc291cmNlIG9iamVjdCB0byBhIG1vZGVsIGluc3RhbmNlLCBoYW5kbGluZyBuZXN0ZWQgbW9kZWxzXG4gICAqIEBzdW1tYXJ5IFJlcG9wdWxhdGVzIHRoZSBpbnN0YW5jZSB3aXRoIHByb3BlcnRpZXMgZnJvbSB0aGUgbmV3IE1vZGVsIE9iamVjdCwgcmVjdXJzaXZlbHkgcmVidWlsZGluZyBuZXN0ZWQgbW9kZWxzXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBUXG4gICAqIEBwYXJhbSB7VH0gc2VsZiAtIFRoZSB0YXJnZXQgbW9kZWwgaW5zdGFuY2UgdG8gdXBkYXRlXG4gICAqIEBwYXJhbSB7VCB8IFJlY29yZDxzdHJpbmcsIGFueT59IFtvYmpdIC0gVGhlIHNvdXJjZSBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzIHRvIGNvcHlcbiAgICogQHJldHVybiB7VH0gLSBUaGUgdXBkYXRlZCBtb2RlbCBpbnN0YW5jZSB3aXRoIHJlYnVpbHQgbmVzdGVkIG1vZGVsc1xuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDIGFzIENsaWVudFxuICAgKiAgIHBhcnRpY2lwYW50IE0gYXMgTW9kZWwuZnJvbU1vZGVsXG4gICAqICAgcGFydGljaXBhbnQgQiBhcyBNb2RlbC5idWlsZFxuICAgKiAgIHBhcnRpY2lwYW50IFIgYXMgUmVmbGVjdGlvblxuICAgKlxuICAgKiAgIEMtPj5NOiBmcm9tTW9kZWwoc2VsZiwgb2JqKVxuICAgKiAgIE0tPj5NOiBHZXQgYXR0cmlidXRlcyBmcm9tIHNlbGZcbiAgICogICBsb29wIEZvciBlYWNoIHByb3BlcnR5XG4gICAqICAgICBNLT4+TTogQ29weSBwcm9wZXJ0eSBmcm9tIG9iaiB0byBzZWxmXG4gICAqICAgICBhbHQgUHJvcGVydHkgaXMgYSBtb2RlbFxuICAgKiAgICAgICBNLT4+TTogQ2hlY2sgaWYgcHJvcGVydHkgaXMgYSBtb2RlbFxuICAgKiAgICAgICBNLT4+QjogYnVpbGQocHJvcGVydHksIG1vZGVsVHlwZSlcbiAgICogICAgICAgQi0tPj5NOiBSZXR1cm4gYnVpbHQgbW9kZWxcbiAgICogICAgIGVsc2UgUHJvcGVydHkgaXMgYSBjb21wbGV4IHR5cGVcbiAgICogICAgICAgTS0+PlI6IEdldCBwcm9wZXJ0eSBkZWNvcmF0b3JzXG4gICAqICAgICAgIFItLT4+TTogUmV0dXJuIGRlY29yYXRvcnNcbiAgICogICAgICAgTS0+Pk06IEZpbHRlciB0eXBlIGRlY29yYXRvcnNcbiAgICogICAgICAgYWx0IFByb3BlcnR5IGlzIEFycmF5L1NldCB3aXRoIGxpc3QgZGVjb3JhdG9yXG4gICAqICAgICAgICAgTS0+Pk06IFByb2Nlc3MgZWFjaCBpdGVtIGluIGNvbGxlY3Rpb25cbiAgICogICAgICAgICBsb29wIEZvciBlYWNoIGl0ZW1cbiAgICogICAgICAgICAgIE0tPj5COiBidWlsZChpdGVtLCBpdGVtTW9kZWxUeXBlKVxuICAgKiAgICAgICAgICAgQi0tPj5NOiBSZXR1cm4gYnVpbHQgbW9kZWxcbiAgICogICAgICAgICBlbmRcbiAgICogICAgICAgZWxzZSBQcm9wZXJ0eSBpcyBhbm90aGVyIG1vZGVsIHR5cGVcbiAgICogICAgICAgICBNLT4+QjogYnVpbGQocHJvcGVydHksIHByb3BlcnR5VHlwZSlcbiAgICogICAgICAgICBCLS0+Pk06IFJldHVybiBidWlsdCBtb2RlbFxuICAgKiAgICAgICBlbmRcbiAgICogICAgIGVuZFxuICAgKiAgIGVuZFxuICAgKiAgIE0tLT4+QzogUmV0dXJuIHVwZGF0ZWQgc2VsZlxuICAgKi9cbiAgc3RhdGljIGZyb21Nb2RlbDxUIGV4dGVuZHMgTW9kZWw+KHNlbGY6IFQsIG9iaj86IFQgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogVCB7XG4gICAgaWYgKCFvYmopIG9iaiA9IHt9O1xuXG4gICAgbGV0IGRlY29yYXRvcnM6IERlY29yYXRvck1ldGFkYXRhW10sIGRlYzogRGVjb3JhdG9yTWV0YWRhdGE7XG5cbiAgICBjb25zdCBwcm9wcyA9IE1vZGVsLmdldEF0dHJpYnV0ZXMoc2VsZik7XG5cbiAgICBjb25zdCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihzZWxmKTtcbiAgICBsZXQgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yIHwgdW5kZWZpbmVkO1xuICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgKHNlbGYgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcHJvcF0gPVxuICAgICAgICAgIChvYmogYXMgUmVjb3JkPHN0cmluZywgYW55PilbcHJvcF0gPz9cbiAgICAgICAgICAoc2VsZiBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwcm9wXSA/P1xuICAgICAgICAgIHVuZGVmaW5lZDtcbiAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIHByb3ApO1xuICAgICAgICBpZiAoIWRlc2NyaXB0b3IgfHwgZGVzY3JpcHRvci53cml0YWJsZSlcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byB3cml0ZSBwcm9wZXJ0eSAke3Byb3B9IHRvIG1vZGVsOiAke2V9YCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgKHNlbGYgYXMgYW55KVtwcm9wXSAhPT0gXCJvYmplY3RcIikgY29udGludWU7XG5cbiAgICAgIGNvbnN0IHByb3BNID0gTW9kZWwuaXNQcm9wZXJ0eU1vZGVsKHNlbGYsIHByb3ApO1xuICAgICAgaWYgKHByb3BNKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgKHNlbGYgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcHJvcF0gPSBNb2RlbC5idWlsZChcbiAgICAgICAgICAgIChzZWxmIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdLFxuICAgICAgICAgICAgdHlwZW9mIHByb3BNID09PSBcInN0cmluZ1wiID8gcHJvcE0gOiB1bmRlZmluZWRcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWxsRGVjb3JhdG9yczogRGVjb3JhdG9yTWV0YWRhdGFbXSA9XG4gICAgICAgIFJlZmxlY3Rpb24uZ2V0UHJvcGVydHlEZWNvcmF0b3JzKFxuICAgICAgICAgIFZhbGlkYXRpb25LZXlzLlJFRkxFQ1QsXG4gICAgICAgICAgc2VsZixcbiAgICAgICAgICBwcm9wXG4gICAgICAgICkuZGVjb3JhdG9ycztcbiAgICAgIGRlY29yYXRvcnMgPSBhbGxEZWNvcmF0b3JzLmZpbHRlcihcbiAgICAgICAgKGQ6IERlY29yYXRvck1ldGFkYXRhKSA9PlxuICAgICAgICAgIFtNb2RlbEtleXMuVFlQRSwgVmFsaWRhdGlvbktleXMuVFlQRSBhcyBzdHJpbmddLmluZGV4T2YoZC5rZXkpICE9PSAtMVxuICAgICAgKTtcbiAgICAgIGlmICghZGVjb3JhdG9ycyB8fCAhZGVjb3JhdG9ycy5sZW5ndGgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgZmFpbGVkIHRvIGZpbmQgZGVjb3JhdG9ycyBmb3IgcHJvcGVydHkgJHtwcm9wfWApO1xuICAgICAgZGVjID0gZGVjb3JhdG9ycy5wb3AoKSBhcyBEZWNvcmF0b3JNZXRhZGF0YTtcbiAgICAgIGNvbnN0IGNsYXp6ID0gZGVjLnByb3BzLm5hbWVcbiAgICAgICAgPyBbZGVjLnByb3BzLm5hbWVdXG4gICAgICAgIDogKEFycmF5LmlzQXJyYXkoZGVjLnByb3BzLmN1c3RvbVR5cGVzKVxuICAgICAgICAgICAgPyBkZWMucHJvcHMuY3VzdG9tVHlwZXNcbiAgICAgICAgICAgIDogW2RlYy5wcm9wcy5jdXN0b21UeXBlc11cbiAgICAgICAgICApLm1hcCgodCkgPT4gKHR5cGVvZiB0ID09PSBcImZ1bmN0aW9uXCIgPyB0KCkgOiB0KSk7XG4gICAgICBjb25zdCByZXNlcnZlZCA9IE9iamVjdC52YWx1ZXMoUmVzZXJ2ZWRNb2RlbHMpLm1hcCgodikgPT5cbiAgICAgICAgdi50b0xvd2VyQ2FzZSgpXG4gICAgICApIGFzIHN0cmluZ1tdO1xuXG4gICAgICBjbGF6ei5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgYyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgaWYgKGMubmFtZSkgYyA9IGMubmFtZTtcbiAgICAgICAgICBlbHNlIGMgPSBjKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc2VydmVkLmluZGV4T2YoYy50b0xvd2VyQ2FzZSgpKSA9PT0gLTEpXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICAgICAgICBjYXNlIFwiQXJyYXlcIjpcbiAgICAgICAgICAgICAgY2FzZSBcIlNldFwiOlxuICAgICAgICAgICAgICAgIGlmIChhbGxEZWNvcmF0b3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgbGlzdERlYyA9IGFsbERlY29yYXRvcnMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKGQpID0+IGQua2V5ID09PSBWYWxpZGF0aW9uS2V5cy5MSVNUXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgaWYgKGxpc3REZWMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNsYXp6TmFtZSA9IChsaXN0RGVjLnByb3BzLmNsYXp6IGFzIHN0cmluZ1tdKS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICh0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSB0eXBlb2YgdCA9PT0gXCJmdW5jdGlvblwiID8gKHQgYXMgYW55KSgpIDogdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAodCBhcyBhbnkpLm5hbWUgPyAodCBhcyBhbnkpLm5hbWUgOiB0O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFqc1R5cGVzLmluY2x1ZGVzKHQpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY2xhenpOYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgY2xhenpOYW1lID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGNsYXp6TmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAoY2xhenpOYW1lIGFzIGFueSkoKTtcbiAgICAgICAgICAgICAgICAgICAgY2xhenpOYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgY2xhenpOYW1lID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGNsYXp6TmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAoY2xhenpOYW1lIGFzIGFueSkubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT09IFwiQXJyYXlcIilcbiAgICAgICAgICAgICAgICAgICAgICAoc2VsZiBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwcm9wXSA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYgYXMgUmVjb3JkPHN0cmluZywgYW55PlxuICAgICAgICAgICAgICAgICAgICAgIClbcHJvcF0ubWFwKChlbDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1wib2JqZWN0XCIsIFwiZnVuY3Rpb25cIl0uaW5jbHVkZXModHlwZW9mIGVsKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGF6ek5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBNb2RlbC5idWlsZChlbCwgY2xhenpOYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGVsO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gXCJTZXRcIikge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB2IG9mIChzZWxmIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcIm9iamVjdFwiLCBcImZ1bmN0aW9uXCJdLmluY2x1ZGVzKHR5cGVvZiB2KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGF6ek5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFkZChNb2RlbC5idWlsZCh2LCBjbGF6ek5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMuYWRkKHYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAoc2VsZiBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwcm9wXSA9IHM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgdHlwZW9mIHNlbGZbcHJvcCBhcyBrZXlvZiB0eXBlb2Ygc2VsZl0gIT09IFwidW5kZWZpbmVkXCIgJiZcbiAgICAgICAgICAgICAgICAgIE1vZGVsLmdldChjKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIChzZWxmIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdID0gTW9kZWwuYnVpbGQoXG4gICAgICAgICAgICAgICAgICAgIChzZWxmIGFzIGFueSlbcHJvcF0sXG4gICAgICAgICAgICAgICAgICAgIGNcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICAgIC8vIGRvIG5vdGhpbmcuIHdlIGhhdmUgbm8gcmVnaXN0cnkgb2YgdGhpcyBjbGFzc1xuICAgICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJlcyB0aGUgZ2xvYmFsIG1vZGVsIGJ1aWxkZXIgZnVuY3Rpb25cbiAgICogQHN1bW1hcnkgU2V0cyB0aGUgR2xvYmFsIHtAbGluayBNb2RlbEJ1aWxkZXJGdW5jdGlvbn0gdXNlZCBmb3IgYnVpbGRpbmcgbW9kZWwgaW5zdGFuY2VzXG4gICAqXG4gICAqIEBwYXJhbSB7TW9kZWxCdWlsZGVyRnVuY3Rpb259IFtidWlsZGVyXSAtIFRoZSBidWlsZGVyIGZ1bmN0aW9uIHRvIHNldCBhcyB0aGUgZ2xvYmFsIGJ1aWxkZXJcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyBzZXRCdWlsZGVyKGJ1aWxkZXI/OiBNb2RlbEJ1aWxkZXJGdW5jdGlvbikge1xuICAgIG1vZGVsQnVpbGRlckZ1bmN0aW9uID0gYnVpbGRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIHRoZSBjdXJyZW50bHkgY29uZmlndXJlZCBnbG9iYWwgbW9kZWwgYnVpbGRlciBmdW5jdGlvblxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSBjdXJyZW50IGdsb2JhbCB7QGxpbmsgTW9kZWxCdWlsZGVyRnVuY3Rpb259IHVzZWQgZm9yIGJ1aWxkaW5nIG1vZGVsIGluc3RhbmNlc1xuICAgKlxuICAgKiBAcmV0dXJuIHtNb2RlbEJ1aWxkZXJGdW5jdGlvbiB8IHVuZGVmaW5lZH0gLSBUaGUgY3VycmVudCBnbG9iYWwgYnVpbGRlciBmdW5jdGlvbiBvciB1bmRlZmluZWQgaWYgbm90IHNldFxuICAgKi9cbiAgc3RhdGljIGdldEJ1aWxkZXIoKTogTW9kZWxCdWlsZGVyRnVuY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBtb2RlbEJ1aWxkZXJGdW5jdGlvbiB8fCBNb2RlbC5mcm9tTW9kZWw7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgY3VycmVudCBtb2RlbCByZWdpc3RyeVxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSBjdXJyZW50IHtAbGluayBNb2RlbFJlZ2lzdHJ5TWFuYWdlcn0gaW5zdGFuY2UsIGNyZWF0aW5nIG9uZSBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAqXG4gICAqIEByZXR1cm4ge01vZGVsUmVnaXN0cnk8YW55Pn0gLSBUaGUgY3VycmVudCBtb2RlbCByZWdpc3RyeSwgZGVmYXVsdHMgdG8gYSBuZXcge0BsaW5rIE1vZGVsUmVnaXN0cnlNYW5hZ2VyfSBpZiBub3Qgc2V0XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRSZWdpc3RyeSgpIHtcbiAgICBpZiAoIWFjdGluZ01vZGVsUmVnaXN0cnkpIGFjdGluZ01vZGVsUmVnaXN0cnkgPSBuZXcgTW9kZWxSZWdpc3RyeU1hbmFnZXIoKTtcbiAgICByZXR1cm4gYWN0aW5nTW9kZWxSZWdpc3RyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJlcyB0aGUgbW9kZWwgcmVnaXN0cnkgdG8gYmUgdXNlZCBieSB0aGUgTW9kZWwgc3lzdGVtXG4gICAqIEBzdW1tYXJ5IFNldHMgdGhlIGN1cnJlbnQgbW9kZWwgcmVnaXN0cnkgdG8gYSBjdXN0b20gaW1wbGVtZW50YXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtCdWlsZGVyUmVnaXN0cnk8YW55Pn0gbW9kZWxSZWdpc3RyeSAtIFRoZSBuZXcgaW1wbGVtZW50YXRpb24gb2YgUmVnaXN0cnkgdG8gdXNlXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqL1xuICBzdGF0aWMgc2V0UmVnaXN0cnkobW9kZWxSZWdpc3RyeTogQnVpbGRlclJlZ2lzdHJ5PGFueT4pIHtcbiAgICBhY3RpbmdNb2RlbFJlZ2lzdHJ5ID0gbW9kZWxSZWdpc3RyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXJzIGEgbW9kZWwgY29uc3RydWN0b3Igd2l0aCB0aGUgbW9kZWwgcmVnaXN0cnlcbiAgICogQHN1bW1hcnkgUmVnaXN0ZXJzIG5ldyBtb2RlbCBjbGFzc2VzIHRvIG1ha2UgdGhlbSBhdmFpbGFibGUgZm9yIHNlcmlhbGl6YXRpb24gYW5kIGRlc2VyaWFsaXphdGlvblxuICAgKlxuICAgKiBAdGVtcGxhdGUgVFxuICAgKiBAcGFyYW0ge01vZGVsQ29uc3RydWN0b3I8VD59IGNvbnN0cnVjdG9yIC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yIHRvIHJlZ2lzdGVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbmFtZV0gLSBPcHRpb25hbCBuYW1lIHRvIHJlZ2lzdGVyIHRoZSBjb25zdHJ1Y3RvciB1bmRlciwgZGVmYXVsdHMgdG8gY29uc3RydWN0b3IubmFtZVxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKlxuICAgKiBAc2VlIE1vZGVsUmVnaXN0cnlcbiAgICovXG4gIHN0YXRpYyByZWdpc3RlcjxUIGV4dGVuZHMgTW9kZWw+KFxuICAgIGNvbnN0cnVjdG9yOiBNb2RlbENvbnN0cnVjdG9yPFQ+LFxuICAgIG5hbWU/OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgcmV0dXJuIE1vZGVsLmdldFJlZ2lzdHJ5KCkucmVnaXN0ZXIoY29uc3RydWN0b3IsIG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSByZWdpc3RlcmVkIG1vZGVsIGNvbnN0cnVjdG9yIGJ5IG5hbWVcbiAgICogQHN1bW1hcnkgR2V0cyBhIHJlZ2lzdGVyZWQgTW9kZWwge0BsaW5rIE1vZGVsQ29uc3RydWN0b3J9IGZyb20gdGhlIG1vZGVsIHJlZ2lzdHJ5XG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBUXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIG1vZGVsIGNvbnN0cnVjdG9yIHRvIHJldHJpZXZlXG4gICAqIEByZXR1cm4ge01vZGVsQ29uc3RydWN0b3I8VD4gfCB1bmRlZmluZWR9IC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yIGlmIGZvdW5kLCB1bmRlZmluZWQgb3RoZXJ3aXNlXG4gICAqXG4gICAqIEBzZWUgTW9kZWxSZWdpc3RyeVxuICAgKi9cbiAgc3RhdGljIGdldDxUIGV4dGVuZHMgTW9kZWw+KG5hbWU6IHN0cmluZyk6IE1vZGVsQ29uc3RydWN0b3I8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBNb2RlbC5nZXRSZWdpc3RyeSgpLmdldChuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG1vZGVsIGluc3RhbmNlIGZyb20gYSBwbGFpbiBvYmplY3RcbiAgICogQHN1bW1hcnkgQnVpbGRzIGEgbW9kZWwgaW5zdGFuY2UgdXNpbmcgdGhlIG1vZGVsIHJlZ2lzdHJ5LCBvcHRpb25hbGx5IHNwZWNpZnlpbmcgdGhlIG1vZGVsIGNsYXNzXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBUXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gb2JqIC0gVGhlIHNvdXJjZSBvYmplY3QgdG8gYnVpbGQgdGhlIG1vZGVsIGZyb21cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtjbGF6el0gLSBXaGVuIHByb3ZpZGVkLCBpdCB3aWxsIGF0dGVtcHQgdG8gZmluZCB0aGUgbWF0Y2hpbmcgY29uc3RydWN0b3IgYnkgbmFtZVxuICAgKiBAcmV0dXJuIHtUfSAtIFRoZSBidWlsdCBtb2RlbCBpbnN0YW5jZVxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgY2xhenogaXMgbm90IGZvdW5kLCBvciBvYmogaXMgbm90IGEge0BsaW5rIE1vZGVsfSBtZWFuaW5nIGl0IGhhcyBubyB7QGxpbmsgTW9kZWxLZXlzLkFOQ0hPUn0gcHJvcGVydHlcbiAgICpcbiAgICogQHNlZSBNb2RlbFJlZ2lzdHJ5XG4gICAqL1xuICBzdGF0aWMgYnVpbGQ8VCBleHRlbmRzIE1vZGVsPihcbiAgICBvYmo6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgICBjbGF6ej86IHN0cmluZ1xuICApOiBUIHtcbiAgICByZXR1cm4gTW9kZWwuZ2V0UmVnaXN0cnkoKS5idWlsZChvYmosIGNsYXp6KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIHRoZSBtb2RlbCBtZXRhZGF0YSBmcm9tIGEgbW9kZWwgaW5zdGFuY2VcbiAgICogQHN1bW1hcnkgR2V0cyB0aGUgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgbW9kZWwgaW5zdGFuY2UsIHR5cGljYWxseSB0aGUgbW9kZWwgY2xhc3MgbmFtZVxuICAgKlxuICAgKiBAdGVtcGxhdGUgTVxuICAgKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIGdldCBtZXRhZGF0YSBmcm9tXG4gICAqIEByZXR1cm4ge3N0cmluZ30gLSBUaGUgbW9kZWwgbWV0YWRhdGEgKHR5cGljYWxseSB0aGUgY2xhc3MgbmFtZSlcbiAgICovXG4gIHN0YXRpYyBnZXRNZXRhZGF0YTxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNKSB7XG4gICAgcmV0dXJuIGdldE1ldGFkYXRhPE0+KG1vZGVsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGFsbCBhdHRyaWJ1dGUgbmFtZXMgZnJvbSBhIG1vZGVsIGNsYXNzIG9yIGluc3RhbmNlXG4gICAqIEBzdW1tYXJ5IEdldHMgYWxsIGF0dHJpYnV0ZXMgZGVmaW5lZCBpbiBhIG1vZGVsLCB0cmF2ZXJzaW5nIHRoZSBwcm90b3R5cGUgY2hhaW4gdG8gaW5jbHVkZSBpbmhlcml0ZWQgYXR0cmlidXRlc1xuICAgKlxuICAgKiBAdGVtcGxhdGUgVlxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yPFY+IHwgVn0gbW9kZWwgLSBUaGUgbW9kZWwgY2xhc3Mgb3IgaW5zdGFuY2UgdG8gZ2V0IGF0dHJpYnV0ZXMgZnJvbVxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gLSBBcnJheSBvZiBhdHRyaWJ1dGUgbmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kZWxcbiAgICovXG4gIHN0YXRpYyBnZXRBdHRyaWJ1dGVzPFYgZXh0ZW5kcyBNb2RlbD4obW9kZWw6IENvbnN0cnVjdG9yPFY+IHwgVikge1xuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgcHJvdG90eXBlID1cbiAgICAgIG1vZGVsIGluc3RhbmNlb2YgTW9kZWxcbiAgICAgICAgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobW9kZWwpXG4gICAgICAgIDogKG1vZGVsIGFzIGFueSkucHJvdG90eXBlO1xuICAgIHdoaWxlIChwcm90b3R5cGUgIT0gbnVsbCkge1xuICAgICAgY29uc3QgcHJvcHM6IHN0cmluZ1tdID0gcHJvdG90eXBlW01vZGVsS2V5cy5BVFRSSUJVVEVdO1xuICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLnByb3BzKTtcbiAgICAgIH1cbiAgICAgIHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90b3R5cGUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb21wYXJlcyB0d28gbW9kZWwgaW5zdGFuY2VzIGZvciBlcXVhbGl0eVxuICAgKiBAc3VtbWFyeSBEZXRlcm1pbmVzIGlmIHR3byBtb2RlbCBpbnN0YW5jZXMgYXJlIGVxdWFsIGJ5IGNvbXBhcmluZyB0aGVpciBwcm9wZXJ0aWVzXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBNXG4gICAqIEBwYXJhbSB7TX0gb2JqMSAtIEZpcnN0IG1vZGVsIGluc3RhbmNlIHRvIGNvbXBhcmVcbiAgICogQHBhcmFtIHtNfSBvYmoyIC0gU2Vjb25kIG1vZGVsIGluc3RhbmNlIHRvIGNvbXBhcmVcbiAgICogQHBhcmFtIHthbnlbXX0gW2V4Y2VwdGlvbnNdIC0gUHJvcGVydHkgbmFtZXMgdG8gZXhjbHVkZSBmcm9tIGNvbXBhcmlzb25cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gLSBUcnVlIGlmIHRoZSBtb2RlbHMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHN0YXRpYyBlcXVhbHM8TSBleHRlbmRzIE1vZGVsPihvYmoxOiBNLCBvYmoyOiBNLCAuLi5leGNlcHRpb25zOiBhbnlbXSkge1xuICAgIHJldHVybiBpc0VxdWFsKG9iajEsIG9iajIsIC4uLmV4Y2VwdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0ZXMgYSBtb2RlbCBpbnN0YW5jZSBhZ2FpbnN0IGl0cyB2YWxpZGF0aW9uIHJ1bGVzXG4gICAqIEBzdW1tYXJ5IENoZWNrcyBpZiBhIG1vZGVsIGhhcyB2YWxpZGF0aW9uIGVycm9ycywgb3B0aW9uYWxseSBpZ25vcmluZyBzcGVjaWZpZWQgcHJvcGVydGllc1xuICAgKlxuICAgKiBAdGVtcGxhdGUgTVxuICAgKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXN5bmMgLSBBIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHZhbGlkYXRpb24gc2hvdWxkIGJlIGFzeW5jaHJvbm91cy5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gW3Byb3BzVG9JZ25vcmVdIC0gUHJvcGVydGllcyB0byBleGNsdWRlIGZyb20gdmFsaWRhdGlvblxuICAgKiBAcmV0dXJuIHtNb2RlbEVycm9yRGVmaW5pdGlvbiB8IHVuZGVmaW5lZH0gLSBSZXR1cm5zIHZhbGlkYXRpb24gZXJyb3JzIGlmIGFueSwgb3RoZXJ3aXNlIHVuZGVmaW5lZFxuICAgKi9cbiAgc3RhdGljIGhhc0Vycm9yczxNIGV4dGVuZHMgTW9kZWwsIEFzeW5jIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlPihcbiAgICBtb2RlbDogTSxcbiAgICBhc3luYzogQXN5bmMsXG4gICAgLi4ucHJvcHNUb0lnbm9yZTogc3RyaW5nW11cbiAgKTogQ29uZGl0aW9uYWxBc3luYzxBc3luYywgTW9kZWxFcnJvckRlZmluaXRpb24gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdmFsaWRhdGU8YW55LCBBc3luYz4obW9kZWwsIGFzeW5jLCAuLi5wcm9wc1RvSWdub3JlKSBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIGEgbW9kZWwgaW5zdGFuY2UgdG8gYSBzZXJpYWxpemVkIHN0cmluZ1xuICAgKiBAc3VtbWFyeSBTZXJpYWxpemVzIGEgbW9kZWwgaW5zdGFuY2UgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgc2VyaWFsaXplciBvciB0aGUgZGVmYXVsdCBvbmVcbiAgICpcbiAgICogQHRlbXBsYXRlIE1cbiAgICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZSB0byBzZXJpYWxpemVcbiAgICogQHJldHVybiB7c3RyaW5nfSAtIFRoZSBzZXJpYWxpemVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWxcbiAgICovXG4gIHN0YXRpYyBzZXJpYWxpemU8TSBleHRlbmRzIE1vZGVsPGJvb2xlYW4+Pihtb2RlbDogTSkge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgIE1vZGVsLmtleShNb2RlbEtleXMuU0VSSUFMSVpBVElPTiksXG4gICAgICBtb2RlbC5jb25zdHJ1Y3RvclxuICAgICk7XG5cbiAgICBpZiAobWV0YWRhdGEgJiYgbWV0YWRhdGEuc2VyaWFsaXplcilcbiAgICAgIHJldHVybiBTZXJpYWxpemF0aW9uLnNlcmlhbGl6ZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgbWV0YWRhdGEuc2VyaWFsaXplcixcbiAgICAgICAgLi4uKG1ldGFkYXRhLmFyZ3MgfHwgW10pXG4gICAgICApO1xuICAgIHJldHVybiBTZXJpYWxpemF0aW9uLnNlcmlhbGl6ZShtb2RlbCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdlbmVyYXRlcyBhIGhhc2ggc3RyaW5nIGZvciBhIG1vZGVsIGluc3RhbmNlXG4gICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBoYXNoIHJlcHJlc2VudGF0aW9uIG9mIGEgbW9kZWwgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgYWxnb3JpdGhtIG9yIHRoZSBkZWZhdWx0IG9uZVxuICAgKlxuICAgKiBAdGVtcGxhdGUgTVxuICAgKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIGhhc2hcbiAgICogQHJldHVybiB7c3RyaW5nfSAtIFRoZSBoYXNoIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIG1vZGVsXG4gICAqL1xuICBzdGF0aWMgaGFzaDxNIGV4dGVuZHMgTW9kZWw8Ym9vbGVhbj4+KG1vZGVsOiBNKSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAgTW9kZWwua2V5KE1vZGVsS2V5cy5IQVNISU5HKSxcbiAgICAgIG1vZGVsLmNvbnN0cnVjdG9yXG4gICAgKTtcblxuICAgIGlmIChtZXRhZGF0YSAmJiBtZXRhZGF0YS5hbGdvcml0aG0pXG4gICAgICByZXR1cm4gSGFzaGluZy5oYXNoKG1vZGVsLCBtZXRhZGF0YS5hbGdvcml0aG0sIC4uLihtZXRhZGF0YS5hcmdzIHx8IFtdKSk7XG4gICAgcmV0dXJuIEhhc2hpbmcuaGFzaChtb2RlbCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBtZXRhZGF0YSBrZXkgZm9yIHVzZSB3aXRoIHRoZSBSZWZsZWN0aW9uIEFQSVxuICAgKiBAc3VtbWFyeSBCdWlsZHMgdGhlIGtleSB0byBzdG9yZSBhcyBNZXRhZGF0YSB1bmRlciBSZWZsZWN0aW9uc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gVGhlIGJhc2Uga2V5IHRvIGNvbmNhdGVuYXRlIHdpdGggdGhlIG1vZGVsIHJlZmxlY3Rpb24gcHJlZml4XG4gICAqIEByZXR1cm4ge3N0cmluZ30gLSBUaGUgY29tcGxldGUgbWV0YWRhdGEga2V5XG4gICAqL1xuICBzdGF0aWMga2V5KHN0cjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGdldE1vZGVsS2V5KHN0cik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERldGVybWluZXMgaWYgYW4gb2JqZWN0IGlzIGEgbW9kZWwgaW5zdGFuY2Ugb3IgaGFzIG1vZGVsIG1ldGFkYXRhXG4gICAqIEBzdW1tYXJ5IENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gb2JqZWN0IGlzIGVpdGhlciBhbiBpbnN0YW5jZSBvZiB0aGUgTW9kZWwgY2xhc3Mgb3JcbiAgICogaGFzIG1vZGVsIG1ldGFkYXRhIGF0dGFjaGVkIHRvIGl0LiBUaGlzIGZ1bmN0aW9uIGlzIGVzc2VudGlhbCBmb3Igc2VyaWFsaXphdGlvbiBhbmRcbiAgICogZGVzZXJpYWxpemF0aW9uIHByb2Nlc3NlcywgYXMgaXQgaGVscHMgaWRlbnRpZnkgbW9kZWwgb2JqZWN0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZy5cbiAgICogSXQgc2FmZWx5IGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycyBkdXJpbmcgbWV0YWRhdGEgcmV0cmlldmFsLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IHRhcmdldCAtIFRoZSBvYmplY3QgdG8gY2hlY2tcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgbW9kZWwgaW5zdGFuY2Ugb3IgaGFzIG1vZGVsIG1ldGFkYXRhLCBmYWxzZSBvdGhlcndpc2VcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBtb2RlbFxuICAgKiBjb25zdCB1c2VyID0gbmV3IFVzZXIoeyBuYW1lOiBcIkpvaG5cIiB9KTtcbiAgICogY29uc3QgaXNVc2VyTW9kZWwgPSBpc01vZGVsKHVzZXIpOyAvLyB0cnVlXG4gICAqXG4gICAqIC8vIENoZWNrIGEgcGxhaW4gb2JqZWN0XG4gICAqIGNvbnN0IHBsYWluT2JqZWN0ID0geyBuYW1lOiBcIkpvaG5cIiB9O1xuICAgKiBjb25zdCBpc1BsYWluT2JqZWN0TW9kZWwgPSBpc01vZGVsKHBsYWluT2JqZWN0KTsgLy8gZmFsc2VcbiAgICogYGBgXG4gICAqL1xuICBzdGF0aWMgaXNNb2RlbCh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRhcmdldCBpbnN0YW5jZW9mIE1vZGVsIHx8ICEhTW9kZWwuZ2V0TWV0YWRhdGEodGFyZ2V0IGFzIGFueSk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDaGVja3MgaWYgYSBwcm9wZXJ0eSBvZiBhIG1vZGVsIGlzIGl0c2VsZiBhIG1vZGVsIG9yIGhhcyBhIG1vZGVsIHR5cGVcbiAgICogQHN1bW1hcnkgRGV0ZXJtaW5lcyB3aGV0aGVyIGEgc3BlY2lmaWMgcHJvcGVydHkgb2YgYSBtb2RlbCBpbnN0YW5jZSBpcyBlaXRoZXIgYSBtb2RlbCBpbnN0YW5jZVxuICAgKiBvciBoYXMgYSB0eXBlIHRoYXQgaXMgcmVnaXN0ZXJlZCBhcyBhIG1vZGVsXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBNXG4gICAqIEBwYXJhbSB7TX0gdGFyZ2V0IC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIGNoZWNrXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhdHRyaWJ1dGUgLSBUaGUgcHJvcGVydHkgbmFtZSB0byBjaGVja1xuICAgKiBAcmV0dXJuIHtib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkfSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvcGVydHkgaXMgYSBtb2RlbCBpbnN0YW5jZSxcbiAgICogdGhlIG1vZGVsIG5hbWUgaWYgdGhlIHByb3BlcnR5IGhhcyBhIG1vZGVsIHR5cGUsIG9yIHVuZGVmaW5lZCBpZiBub3QgYSBtb2RlbFxuICAgKi9cbiAgc3RhdGljIGlzUHJvcGVydHlNb2RlbDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIHRhcmdldDogTSxcbiAgICBhdHRyaWJ1dGU6IHN0cmluZ1xuICApOiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoTW9kZWwuaXNNb2RlbCgodGFyZ2V0IGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2F0dHJpYnV0ZV0pKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoTW9kZWxLZXlzLlRZUEUsIHRhcmdldCwgYXR0cmlidXRlKTtcbiAgICByZXR1cm4gTW9kZWwuZ2V0KG1ldGFkYXRhLm5hbWUpID8gbWV0YWRhdGEubmFtZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN0YXRpYyBkZXNjcmliZTxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNIHwgQ29uc3RydWN0b3I8TT4sIGtleT86IGtleW9mIE0pIHtcbiAgICBjb25zdCBkZXNjS2V5ID0gTW9kZWwua2V5KE1vZGVsS2V5cy5ERVNDUklQVElPTik7XG4gICAgaWYgKGtleSkge1xuICAgICAgbW9kZWwgPSBtb2RlbCBpbnN0YW5jZW9mIE1vZGVsID8gbW9kZWwgOiBuZXcgbW9kZWwoKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKG1vZGVsLmNvbnN0cnVjdG9yLCBrZXkudG9TdHJpbmcoKSlcbiAgICAgICAgICAuZmluZCgoaykgPT4gayA9PT0gZGVzY0tleSlcbiAgICAgICAgICA/LnRvU3RyaW5nKCkgfHwgbW9kZWwudG9TdHJpbmcoKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgICAgTW9kZWwua2V5KE1vZGVsS2V5cy5ERVNDUklQVElPTiksXG4gICAgICAgIG1vZGVsIGluc3RhbmNlb2YgTW9kZWwgPyBtb2RlbC5jb25zdHJ1Y3RvciA6IG1vZGVsXG4gICAgICApIHx8IG1vZGVsLnRvU3RyaW5nKClcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
630
|
+
//# sourceMappingURL=Model.js.map
|