@decaf-ts/decorator-validation 1.7.3 → 1.7.5

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.
Files changed (134) hide show
  1. package/LICENSE.md +21 -157
  2. package/dist/decorator-validation.cjs +461 -265
  3. package/dist/decorator-validation.esm.cjs +459 -265
  4. package/lib/constants/errors.cjs +19 -0
  5. package/lib/constants/errors.d.ts +11 -0
  6. package/lib/constants/index.cjs +2 -1
  7. package/lib/constants/index.d.ts +1 -0
  8. package/lib/esm/constants/errors.d.ts +11 -0
  9. package/lib/esm/constants/errors.js +16 -0
  10. package/lib/esm/constants/index.d.ts +1 -0
  11. package/lib/esm/constants/index.js +3 -2
  12. package/lib/esm/index.d.ts +1 -1
  13. package/lib/esm/index.js +6 -6
  14. package/lib/esm/mcp/ModelContextProtocol.d.ts +31 -0
  15. package/lib/esm/mcp/ModelContextProtocol.js +66 -0
  16. package/lib/esm/mcp/mcp1.d.ts +0 -0
  17. package/lib/esm/mcp/mcp1.js +405 -0
  18. package/lib/esm/mcp/tools/createModel.tool.d.ts +0 -0
  19. package/lib/esm/mcp/tools/createModel.tool.js +67 -0
  20. package/lib/esm/mcp/tools/validateModel.tool.d.ts +0 -0
  21. package/lib/esm/mcp/tools/validateModel.tool.js +2 -0
  22. package/lib/esm/mcp/types.d.ts +3 -0
  23. package/lib/esm/mcp/types.js +2 -0
  24. package/lib/esm/model/Builder.d.ts +0 -0
  25. package/lib/esm/model/Builder.js +130 -0
  26. package/lib/esm/model/Model.d.ts +1 -0
  27. package/lib/esm/model/Model.js +19 -9
  28. package/lib/esm/model/construction.js +2 -2
  29. package/lib/esm/model/decorators.d.ts +10 -0
  30. package/lib/esm/model/decorators.js +16 -4
  31. package/lib/esm/model/index.js +9 -9
  32. package/lib/esm/model/utils.js +2 -2
  33. package/lib/esm/model/validation.js +16 -13
  34. package/lib/esm/utils/Decoration.js +2 -2
  35. package/lib/esm/utils/PathProxy.d.ts +43 -0
  36. package/lib/esm/utils/PathProxy.js +89 -0
  37. package/lib/esm/utils/constants.d.ts +1 -0
  38. package/lib/esm/utils/constants.js +2 -1
  39. package/lib/esm/utils/dates.js +3 -3
  40. package/lib/esm/utils/decorators.js +2 -2
  41. package/lib/esm/utils/index.d.ts +1 -0
  42. package/lib/esm/utils/index.js +11 -10
  43. package/lib/esm/utils/serialization.js +4 -4
  44. package/lib/esm/validation/Validation.d.ts +3 -0
  45. package/lib/esm/validation/Validation.js +14 -3
  46. package/lib/esm/validation/Validators/DateValidator.js +4 -4
  47. package/lib/esm/validation/Validators/DiffValidator.d.ts +4 -2
  48. package/lib/esm/validation/Validators/DiffValidator.js +8 -8
  49. package/lib/esm/validation/Validators/EmailValidator.js +4 -4
  50. package/lib/esm/validation/Validators/EqualsValidator.d.ts +4 -2
  51. package/lib/esm/validation/Validators/EqualsValidator.js +8 -8
  52. package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.d.ts +4 -2
  53. package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.js +9 -8
  54. package/lib/esm/validation/Validators/GreaterThanValidator.d.ts +4 -2
  55. package/lib/esm/validation/Validators/GreaterThanValidator.js +9 -8
  56. package/lib/esm/validation/Validators/LessThanOrEqualValidator.d.ts +4 -2
  57. package/lib/esm/validation/Validators/LessThanOrEqualValidator.js +9 -8
  58. package/lib/esm/validation/Validators/LessThanValidator.d.ts +4 -2
  59. package/lib/esm/validation/Validators/LessThanValidator.js +9 -8
  60. package/lib/esm/validation/Validators/ListValidator.js +4 -4
  61. package/lib/esm/validation/Validators/MaxLengthValidator.js +4 -4
  62. package/lib/esm/validation/Validators/MaxValidator.js +4 -4
  63. package/lib/esm/validation/Validators/MinLengthValidator.js +4 -4
  64. package/lib/esm/validation/Validators/MinValidator.js +4 -4
  65. package/lib/esm/validation/Validators/PasswordValidator.js +4 -4
  66. package/lib/esm/validation/Validators/PatternValidator.js +4 -4
  67. package/lib/esm/validation/Validators/RequiredValidator.js +4 -4
  68. package/lib/esm/validation/Validators/StepValidator.js +4 -4
  69. package/lib/esm/validation/Validators/TypeValidator.js +6 -6
  70. package/lib/esm/validation/Validators/URLValidator.js +4 -4
  71. package/lib/esm/validation/Validators/Validator.d.ts +3 -2
  72. package/lib/esm/validation/Validators/Validator.js +3 -3
  73. package/lib/esm/validation/Validators/ValidatorRegistry.js +2 -2
  74. package/lib/esm/validation/Validators/constants.d.ts +0 -13
  75. package/lib/esm/validation/Validators/constants.js +2 -15
  76. package/lib/esm/validation/Validators/decorators.js +3 -3
  77. package/lib/esm/validation/Validators/index.js +25 -25
  78. package/lib/esm/validation/Validators/utils.d.ts +0 -14
  79. package/lib/esm/validation/Validators/utils.js +69 -56
  80. package/lib/esm/validation/decorators.d.ts +26 -3
  81. package/lib/esm/validation/decorators.js +107 -58
  82. package/lib/esm/validation/index.js +5 -5
  83. package/lib/esm/validation/types.d.ts +11 -5
  84. package/lib/esm/validation/types.js +2 -2
  85. package/lib/index.cjs +1 -1
  86. package/lib/index.d.ts +1 -1
  87. package/lib/mcp/ModelContextProtocol.cjs +70 -0
  88. package/lib/mcp/ModelContextProtocol.d.ts +31 -0
  89. package/lib/mcp/mcp1.cjs +405 -0
  90. package/lib/mcp/mcp1.d.ts +0 -0
  91. package/lib/mcp/tools/createModel.tool.cjs +67 -0
  92. package/lib/mcp/tools/createModel.tool.d.ts +0 -0
  93. package/lib/mcp/tools/validateModel.tool.cjs +2 -0
  94. package/lib/mcp/tools/validateModel.tool.d.ts +0 -0
  95. package/lib/mcp/types.cjs +3 -0
  96. package/lib/mcp/types.d.ts +3 -0
  97. package/lib/model/Builder.cjs +130 -0
  98. package/lib/model/Builder.d.ts +0 -0
  99. package/lib/model/Model.cjs +12 -2
  100. package/lib/model/Model.d.ts +1 -0
  101. package/lib/model/decorators.cjs +14 -1
  102. package/lib/model/decorators.d.ts +10 -0
  103. package/lib/model/validation.cjs +8 -5
  104. package/lib/utils/PathProxy.cjs +93 -0
  105. package/lib/utils/PathProxy.d.ts +43 -0
  106. package/lib/utils/constants.cjs +2 -1
  107. package/lib/utils/constants.d.ts +1 -0
  108. package/lib/utils/index.cjs +2 -1
  109. package/lib/utils/index.d.ts +1 -0
  110. package/lib/validation/Validation.cjs +12 -1
  111. package/lib/validation/Validation.d.ts +3 -0
  112. package/lib/validation/Validators/DiffValidator.cjs +5 -5
  113. package/lib/validation/Validators/DiffValidator.d.ts +4 -2
  114. package/lib/validation/Validators/EqualsValidator.cjs +5 -5
  115. package/lib/validation/Validators/EqualsValidator.d.ts +4 -2
  116. package/lib/validation/Validators/GreaterThanOrEqualValidator.cjs +5 -4
  117. package/lib/validation/Validators/GreaterThanOrEqualValidator.d.ts +4 -2
  118. package/lib/validation/Validators/GreaterThanValidator.cjs +5 -4
  119. package/lib/validation/Validators/GreaterThanValidator.d.ts +4 -2
  120. package/lib/validation/Validators/LessThanOrEqualValidator.cjs +5 -4
  121. package/lib/validation/Validators/LessThanOrEqualValidator.d.ts +4 -2
  122. package/lib/validation/Validators/LessThanValidator.cjs +5 -4
  123. package/lib/validation/Validators/LessThanValidator.d.ts +4 -2
  124. package/lib/validation/Validators/Validator.cjs +1 -1
  125. package/lib/validation/Validators/Validator.d.ts +3 -2
  126. package/lib/validation/Validators/constants.cjs +2 -15
  127. package/lib/validation/Validators/constants.d.ts +0 -13
  128. package/lib/validation/Validators/utils.cjs +79 -67
  129. package/lib/validation/Validators/utils.d.ts +0 -14
  130. package/lib/validation/decorators.cjs +102 -52
  131. package/lib/validation/decorators.d.ts +26 -3
  132. package/lib/validation/types.cjs +1 -1
  133. package/lib/validation/types.d.ts +11 -5
  134. package/package.json +16 -5
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const Validators_1 = require("./Validators/index.cjs");
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLHVEQUF5RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29yYXRvck1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9tb2RlbFwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbktleXMsIFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvcnNcIjtcbmltcG9ydCB7IElSZWdpc3RyeSB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGRlZmluaXRpb24gZm9yIG1ldGFkYXRhIHVzZWQgYnkgdmFsaWRhdGlvbiBkZWNvcmF0b3JzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbWV0YWRhdGEgYXR0YWNoZWQgdG8gcHJvcGVydGllcyBieSB2YWxpZGF0aW9uIGRlY29yYXRvcnMuXG4gKiBUaGlzIG1ldGFkYXRhIGlzIHVzZWQgZHVyaW5nIHZhbGlkYXRpb24gdG8gZGV0ZXJtaW5lIHZhbGlkYXRpb24gcnVsZXMgYW5kIGVycm9yIG1lc3NhZ2VzLlxuICpcbiAqIEBwcm9wZXJ0eSB7YW55W119IFthcmdzXSAtIE9wdGlvbmFsIGFyZ3VtZW50cyBmb3IgdGhlIHZhbGlkYXRvclxuICogQHByb3BlcnR5IHtzdHJpbmd9IG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB2YWxpZGF0aW9uIGZhaWxzXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBbdHlwZXNdIC0gQXJyYXkgb2YgdHlwZSBuYW1lcyB0aGF0IHRoZSBwcm9wZXJ0eSBjYW4gaGF2ZVxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFZhbGlkYXRpb25NZXRhZGF0YVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbk1ldGFkYXRhID0ge1xuICBbaW5kZXhlcjogc3RyaW5nXTogYW55O1xuICBhcmdzPzogYW55W107XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdHlwZXM/OiBzdHJpbmdbXTtcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgZGVmaW5pdGlvbiBmb3IgcHJvcGVydHktbGV2ZWwgdmFsaWRhdGlvbiBkZWNvcmF0b3IgY29uZmlndXJhdGlvblxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIHRoYXQgYXNzb2NpYXRlcyBhIHByb3BlcnR5IHdpdGggaXRzIHZhbGlkYXRpb24gZGVjb3JhdG9ycy5cbiAqIFRoaXMgdHlwZSBpcyB1c2VkIHRvIHRyYWNrIHdoaWNoIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgdG8gYSBzcGVjaWZpYyBwcm9wZXJ0eSBkdXJpbmcgdmFsaWRhdGlvbi5cbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ3xzeW1ib2x9IHByb3AgLSBUaGUgcHJvcGVydHkgbmFtZSBvciBzeW1ib2wgdGhhdCB0aGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCB0b1xuICogQHByb3BlcnR5IHtWYWxpZGF0aW9uRGVjb3JhdG9yRGVmaW5pdGlvbltdfSBkZWNvcmF0b3JzIC0gQXJyYXkgb2YgZGVjb3JhdG9yIGRlZmluaXRpb25zIGFwcGxpZWQgdG8gdGhlIHByb3BlcnR5XG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gVmFsaWRhdGlvblByb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblByb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvbiA9IHtcbiAgcHJvcDogc3RyaW5nIHwgc3ltYm9sO1xuICBkZWNvcmF0b3JzOiBWYWxpZGF0aW9uRGVjb3JhdG9yRGVmaW5pdGlvbltdO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSBkZWZpbml0aW9uIGZvciBpbmRpdmlkdWFsIHZhbGlkYXRpb24gZGVjb3JhdG9yIG1ldGFkYXRhXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBiYXNlIERlY29yYXRvck1ldGFkYXRhIHR5cGUgd2l0aCB2YWxpZGF0aW9uLXNwZWNpZmljIHByb3BlcnRpZXMuXG4gKiBUaGlzIHR5cGUgcmVwcmVzZW50cyB0aGUgbWV0YWRhdGEgZm9yIGEgc2luZ2xlIHZhbGlkYXRpb24gZGVjb3JhdG9yIGFwcGxpZWQgdG8gYSBwcm9wZXJ0eS5cbiAqXG4gKiBAcHJvcGVydHkge1ZhbGlkYXRpb25FbGVtZW50RGVmaW5pdGlvbn0gcHJvcHMgLSBUaGUgdmFsaWRhdGlvbiBlbGVtZW50IHByb3BlcnRpZXMgYW5kIGNvbmZpZ3VyYXRpb25cbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBWYWxpZGF0aW9uRGVjb3JhdG9yRGVmaW5pdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkRlY29yYXRvckRlZmluaXRpb24gPSBEZWNvcmF0b3JNZXRhZGF0YSAmIHtcbiAgcHJvcHM6IFZhbGlkYXRpb25FbGVtZW50RGVmaW5pdGlvbjtcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgVHlwZSBmb3IgYSB2YWxpZGF0b3IgZWxlbWVudCBtZXRhZGF0YVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkVsZW1lbnREZWZpbml0aW9uID0ge1xuICBbaW5kZXhlcjogc3RyaW5nXTogYW55O1xuXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIGEgbW9kZWwgZXJyb3JzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBNb2RlbEVycm9ycyA9IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4+O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFV0aWwgdHlwZSBmb3Ige0BsaW5rIFZhbGlkYXRvcn0gY29uZmlndXJhdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdG9yRGVmaW5pdGlvbiA9IHtcbiAgdmFsaWRhdG9yOiBDb25zdHJ1Y3RvcjxWYWxpZGF0b3I+O1xuICB2YWxpZGF0aW9uS2V5OiBzdHJpbmc7XG4gIHNhdmU6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGEgcmVnaXN0cnkgdGhhdCBtYW5hZ2VzIHZhbGlkYXRvciBpbnN0YW5jZXNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbnRyYWN0IGZvciBhIHJlZ2lzdHJ5IHRoYXQgc3RvcmVzIGFuZCByZXRyaWV2ZXMgdmFsaWRhdG9ycy5cbiAqIFRoZSByZWdpc3RyeSBpcyByZXNwb25zaWJsZSBmb3IgbWFpbnRhaW5pbmcgYSBjb2xsZWN0aW9uIG9mIHZhbGlkYXRvcnMgYW5kIHByb3ZpZGluZ1xuICogYWNjZXNzIHRvIHRoZW0gYnkga2V5LlxuICpcbiAqIEBpbnRlcmZhY2UgSVZhbGlkYXRvclJlZ2lzdHJ5XG4gKiBAdGVtcGxhdGUgVCBUeXBlIG9mIHZhbGlkYXRvciwgbXVzdCBleHRlbmQgVmFsaWRhdG9yXG4gKiBAZXh0ZW5kcyBJUmVnaXN0cnk8VD5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkYXRvclJlZ2lzdHJ5PFQgZXh0ZW5kcyBWYWxpZGF0b3I+IGV4dGVuZHMgSVJlZ2lzdHJ5PFQ+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgY3VzdG9tIHZhbGlkYXRpb24ga2V5cyBkZWZpbmVkIGluIHRoZSByZWdpc3RyeVxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIGEgbWFwcGluZyBvZiBjdXN0b20gdmFsaWRhdGlvbiBrZXlzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgc3RhbmRhcmQga2V5cy5cbiAgICogVGhpcyBhbGxvd3MgZm9yIGFsaWFzaW5nIHZhbGlkYXRpb24ga2V5cyBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBPYmplY3QgbWFwcGluZyBjdXN0b20ga2V5cyB0byBzdGFuZGFyZCB2YWxpZGF0aW9uIGtleXNcbiAgICovXG4gIGdldEN1c3RvbUtleXMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgYWxsIHJlZ2lzdGVyZWQgdmFsaWRhdG9yIGtleXNcbiAgICogQHN1bW1hcnkgUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdmFsaWRhdGlvbiBrZXlzIHRoYXQgaGF2ZSByZWdpc3RlcmVkIHZhbGlkYXRvcnMuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSBBcnJheSBvZiByZWdpc3RlcmVkIHZhbGlkYXRvciBrZXlzXG4gICAqL1xuICBnZXRLZXlzKCk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXJzIG9uZSBvciBtb3JlIHZhbGlkYXRvcnMgd2l0aCB0aGUgcmVnaXN0cnlcbiAgICogQHN1bW1hcnkgQWRkcyB2YWxpZGF0b3JzIHRvIHRoZSByZWdpc3RyeSwgbWFraW5nIHRoZW0gYXZhaWxhYmxlIGZvciB2YWxpZGF0aW9uIG9wZXJhdGlvbnMuXG4gICAqIFZhbGlkYXRvcnMgY2FuIGJlIHByb3ZpZGVkIGFzIGluc3RhbmNlcyBvciBhcyB2YWxpZGF0b3IgZGVmaW5pdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Li4uKFR8VmFsaWRhdG9yRGVmaW5pdGlvbil9IHZhbGlkYXRvciAtIFZhbGlkYXRvciBpbnN0YW5jZXMgb3IgZGVmaW5pdGlvbnMgdG8gcmVnaXN0ZXJcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHJlZ2lzdGVyPFQgZXh0ZW5kcyBWYWxpZGF0b3I+KFxuICAgIC4uLnZhbGlkYXRvcjogKFQgfCBWYWxpZGF0b3JEZWZpbml0aW9uKVtdXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSB2YWxpZGF0b3IgYnkgaXRzIGtleVxuICAgKiBAc3VtbWFyeSBMb29rcyB1cCBhIHZhbGlkYXRvciBpbiB0aGUgcmVnaXN0cnkgdXNpbmcgaXRzIHZhbGlkYXRpb24ga2V5LlxuICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0b3IgaWYgZm91bmQsIG9yIHVuZGVmaW5lZCBpZiBubyB2YWxpZGF0b3IgaXMgcmVnaXN0ZXJlZCBmb3IgdGhlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSB2YWxpZGF0aW9uIGtleSB0byBsb29rIHVwLCB0eXBpY2FsbHkgb25lIG9mIHRoZSB7QGxpbmsgVmFsaWRhdGlvbktleXN9XG4gICAqIEByZXR1cm4ge1R8dW5kZWZpbmVkfSBUaGUgcmVnaXN0ZXJlZCB2YWxpZGF0b3Igb3IgdW5kZWZpbmVkIGlmIG5vbmUgbWF0Y2hlcyB0aGUgcHJvdmlkZWQga2V5XG4gICAqL1xuICBnZXQ8VCBleHRlbmRzIFZhbGlkYXRvcj4oa2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNlIG9wdGlvbnMgdHlwZSBmb3IgYWxsIHZhbGlkYXRvcnNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbW1vbiBwcm9wZXJ0aWVzIGF2YWlsYWJsZSB0byBhbGwgdmFsaWRhdG9yc1xuICogQHR5cGVkZWYgVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFttZXNzYWdlXSAtIEN1c3RvbSBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB2YWxpZGF0aW9uIGZhaWxzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0b3JPcHRpb25zID0ge1xuICBtZXNzYWdlPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVVJMIHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3IgVVJMIHZhbGlkYXRpb24sIGluY2x1ZGluZyBhbGxvd2VkIFVSTCB0eXBlc1xuICogQGludGVyZmFjZSBVUkxWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhzdHJpbmd8c3RyaW5nW118eyBuYW1lOiBzdHJpbmcgfSl9IHR5cGVzIC0gU3BlY2lmaWVzIHRoZSBhbGxvd2VkIFVSTCB0eXBlcyBvciBwYXR0ZXJuc1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVUkxWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIHR5cGVzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHsgbmFtZTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciB0eXBlIHZhbGlkYXRpb24sIHNwZWNpZnlpbmcgYWxsb3dlZCB0eXBlc1xuICogQGludGVyZmFjZSBUeXBlVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHsoc3RyaW5nfHN0cmluZ1tdfHsgbmFtZTogc3RyaW5nIH0pfSB0eXBlcyAtIFNwZWNpZmllcyB0aGUgYWxsb3dlZCBkYXRhIHR5cGVzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIHR5cGVzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHsgbmFtZTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFN0ZXAgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBzdGVwIHZhbGlkYXRpb24sIHNwZWNpZnlpbmcgdGhlIHN0ZXAgaW5jcmVtZW50XG4gKiBAaW50ZXJmYWNlIFN0ZXBWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhudW1iZXJ8c3RyaW5nKX0gW1ZhbGlkYXRpb25LZXlzLlNURVBdIC0gVGhlIHN0ZXAgdmFsdWUgZm9yIG51bWVyaWNhbCB2YWxpZGF0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5TVEVQXTogbnVtYmVyIHwgc3RyaW5nO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQYXR0ZXJuIHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3IgcGF0dGVybiB2YWxpZGF0aW9uIHVzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnNcbiAqIEBpbnRlcmZhY2UgUGF0dGVyblZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7KFJlZ0V4cHxzdHJpbmcpfSBbVmFsaWRhdGlvbktleXMuUEFUVEVSTl0gLSBUaGUgcGF0dGVybiB0byBtYXRjaCBhZ2FpbnN0XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5WYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5QQVRURVJOXT86IFJlZ0V4cCB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWluaW11bSB2YWx1ZSB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIG1pbmltdW0gdmFsdWUgdmFsaWRhdGlvblxuICogQGludGVyZmFjZSBNaW5WYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhudW1iZXJ8RGF0ZXxzdHJpbmcpfSBbVmFsaWRhdGlvbktleXMuTUlOXSAtIFRoZSBtaW5pbXVtIGFsbG93ZWQgdmFsdWVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWluVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuTUlOXTogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWluaW11bSBsZW5ndGggdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBtaW5pbXVtIGxlbmd0aCB2YWxpZGF0aW9uXG4gKiBAaW50ZXJmYWNlIE1pbkxlbmd0aFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbVmFsaWRhdGlvbktleXMuTUlOX0xFTkdUSF0gLSBUaGUgbWluaW11bSBhbGxvd2VkIGxlbmd0aFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNaW5MZW5ndGhWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5NSU5fTEVOR1RIXTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNYXhpbXVtIHZhbHVlIHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3IgbWF4aW11bSB2YWx1ZSB2YWxpZGF0aW9uXG4gKiBAaW50ZXJmYWNlIE1heFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7KG51bWJlcnxEYXRlfHN0cmluZyl9IFtWYWxpZGF0aW9uS2V5cy5NQVhdIC0gVGhlIG1heGltdW0gYWxsb3dlZCB2YWx1ZVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXhWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5NQVhdOiBudW1iZXIgfCBEYXRlIHwgc3RyaW5nO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNYXhpbXVtIGxlbmd0aCB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIG1heGltdW0gbGVuZ3RoIHZhbGlkYXRpb25cbiAqIEBpbnRlcmZhY2UgTWF4TGVuZ3RoVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFtWYWxpZGF0aW9uS2V5cy5NQVhfTEVOR1RIXSAtIFRoZSBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1heExlbmd0aFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLk1BWF9MRU5HVEhdOiBudW1iZXI7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIExpc3QgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBsaXN0IHZhbGlkYXRpb25cbiAqIEBpbnRlcmZhY2UgTGlzdFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IGNsYXp6IC0gQXJyYXkgb2YgYWxsb3dlZCBjbGFzcyBuYW1lcyBvciB0eXBlc1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0VmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBjbGF6ejogc3RyaW5nW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERhdGUgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBkYXRlIHZhbGlkYXRpb25cbiAqIEBpbnRlcmZhY2UgRGF0ZVZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbVmFsaWRhdGlvbktleXMuRk9STUFUXSAtIFRoZSBleHBlY3RlZCBkYXRlIGZvcm1hdCBwYXR0ZXJuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGVWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5GT1JNQVRdPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVxdWFsc1ZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkVRVUFMU106IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaWZmVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuRElGRl06IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZXNzVGhhblZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkxFU1NfVEhBTl06IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZXNzVGhhbk9yRXF1YWxWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5MRVNTX1RIQU5fT1JfRVFVQUxdOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JlYXRlclRoYW5WYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5HUkVBVEVSX1RIQU5dOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JlYXRlclRoYW5PckVxdWFsVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuR1JFQVRFUl9USEFOX09SX0VRVUFMXTogc3RyaW5nO1xufVxuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLHVEQUF5RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29yYXRvck1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9tb2RlbFwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbktleXMsIFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvcnNcIjtcbmltcG9ydCB7IElSZWdpc3RyeSB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGRlZmluaXRpb24gZm9yIG1ldGFkYXRhIHVzZWQgYnkgdmFsaWRhdGlvbiBkZWNvcmF0b3JzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbWV0YWRhdGEgYXR0YWNoZWQgdG8gcHJvcGVydGllcyBieSB2YWxpZGF0aW9uIGRlY29yYXRvcnMuXG4gKiBUaGlzIG1ldGFkYXRhIGlzIHVzZWQgZHVyaW5nIHZhbGlkYXRpb24gdG8gZGV0ZXJtaW5lIHZhbGlkYXRpb24gcnVsZXMgYW5kIGVycm9yIG1lc3NhZ2VzLlxuICpcbiAqIEBwcm9wZXJ0eSB7YW55W119IFthcmdzXSAtIE9wdGlvbmFsIGFyZ3VtZW50cyBmb3IgdGhlIHZhbGlkYXRvclxuICogQHByb3BlcnR5IHtzdHJpbmd9IG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB2YWxpZGF0aW9uIGZhaWxzXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBbdHlwZXNdIC0gQXJyYXkgb2YgdHlwZSBuYW1lcyB0aGF0IHRoZSBwcm9wZXJ0eSBjYW4gaGF2ZVxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFZhbGlkYXRpb25NZXRhZGF0YVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbk1ldGFkYXRhID0ge1xuICBbaW5kZXhlcjogc3RyaW5nXTogYW55O1xuICBhcmdzPzogYW55W107XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdHlwZXM/OiBzdHJpbmdbXTtcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgZGVmaW5pdGlvbiBmb3IgcHJvcGVydHktbGV2ZWwgdmFsaWRhdGlvbiBkZWNvcmF0b3IgY29uZmlndXJhdGlvblxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIHRoYXQgYXNzb2NpYXRlcyBhIHByb3BlcnR5IHdpdGggaXRzIHZhbGlkYXRpb24gZGVjb3JhdG9ycy5cbiAqIFRoaXMgdHlwZSBpcyB1c2VkIHRvIHRyYWNrIHdoaWNoIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgdG8gYSBzcGVjaWZpYyBwcm9wZXJ0eSBkdXJpbmcgdmFsaWRhdGlvbi5cbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ3xzeW1ib2x9IHByb3AgLSBUaGUgcHJvcGVydHkgbmFtZSBvciBzeW1ib2wgdGhhdCB0aGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCB0b1xuICogQHByb3BlcnR5IHtWYWxpZGF0aW9uRGVjb3JhdG9yRGVmaW5pdGlvbltdfSBkZWNvcmF0b3JzIC0gQXJyYXkgb2YgZGVjb3JhdG9yIGRlZmluaXRpb25zIGFwcGxpZWQgdG8gdGhlIHByb3BlcnR5XG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gVmFsaWRhdGlvblByb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblByb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvbiA9IHtcbiAgcHJvcDogc3RyaW5nIHwgc3ltYm9sO1xuICBkZWNvcmF0b3JzOiBWYWxpZGF0aW9uRGVjb3JhdG9yRGVmaW5pdGlvbltdO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSBkZWZpbml0aW9uIGZvciBpbmRpdmlkdWFsIHZhbGlkYXRpb24gZGVjb3JhdG9yIG1ldGFkYXRhXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBiYXNlIERlY29yYXRvck1ldGFkYXRhIHR5cGUgd2l0aCB2YWxpZGF0aW9uLXNwZWNpZmljIHByb3BlcnRpZXMuXG4gKiBUaGlzIHR5cGUgcmVwcmVzZW50cyB0aGUgbWV0YWRhdGEgZm9yIGEgc2luZ2xlIHZhbGlkYXRpb24gZGVjb3JhdG9yIGFwcGxpZWQgdG8gYSBwcm9wZXJ0eS5cbiAqXG4gKiBAcHJvcGVydHkge1ZhbGlkYXRpb25FbGVtZW50RGVmaW5pdGlvbn0gcHJvcHMgLSBUaGUgdmFsaWRhdGlvbiBlbGVtZW50IHByb3BlcnRpZXMgYW5kIGNvbmZpZ3VyYXRpb25cbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBWYWxpZGF0aW9uRGVjb3JhdG9yRGVmaW5pdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkRlY29yYXRvckRlZmluaXRpb24gPSBEZWNvcmF0b3JNZXRhZGF0YSAmIHtcbiAgcHJvcHM6IFZhbGlkYXRpb25FbGVtZW50RGVmaW5pdGlvbjtcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgVHlwZSBmb3IgYSB2YWxpZGF0b3IgZWxlbWVudCBtZXRhZGF0YVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkVsZW1lbnREZWZpbml0aW9uID0ge1xuICBbaW5kZXhlcjogc3RyaW5nXTogYW55O1xuXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIGEgbW9kZWwgZXJyb3JzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBNb2RlbEVycm9ycyA9IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4+O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFV0aWwgdHlwZSBmb3Ige0BsaW5rIFZhbGlkYXRvcn0gY29uZmlndXJhdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdG9yRGVmaW5pdGlvbiA9IHtcbiAgdmFsaWRhdG9yOiBDb25zdHJ1Y3RvcjxWYWxpZGF0b3I+O1xuICB2YWxpZGF0aW9uS2V5OiBzdHJpbmc7XG4gIHNhdmU6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGEgcmVnaXN0cnkgdGhhdCBtYW5hZ2VzIHZhbGlkYXRvciBpbnN0YW5jZXNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbnRyYWN0IGZvciBhIHJlZ2lzdHJ5IHRoYXQgc3RvcmVzIGFuZCByZXRyaWV2ZXMgdmFsaWRhdG9ycy5cbiAqIFRoZSByZWdpc3RyeSBpcyByZXNwb25zaWJsZSBmb3IgbWFpbnRhaW5pbmcgYSBjb2xsZWN0aW9uIG9mIHZhbGlkYXRvcnMgYW5kIHByb3ZpZGluZ1xuICogYWNjZXNzIHRvIHRoZW0gYnkga2V5LlxuICpcbiAqIEBpbnRlcmZhY2UgSVZhbGlkYXRvclJlZ2lzdHJ5XG4gKiBAdGVtcGxhdGUgVCBUeXBlIG9mIHZhbGlkYXRvciwgbXVzdCBleHRlbmQgVmFsaWRhdG9yXG4gKiBAZXh0ZW5kcyBJUmVnaXN0cnk8VD5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkYXRvclJlZ2lzdHJ5PFQgZXh0ZW5kcyBWYWxpZGF0b3I+IGV4dGVuZHMgSVJlZ2lzdHJ5PFQ+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgY3VzdG9tIHZhbGlkYXRpb24ga2V5cyBkZWZpbmVkIGluIHRoZSByZWdpc3RyeVxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIGEgbWFwcGluZyBvZiBjdXN0b20gdmFsaWRhdGlvbiBrZXlzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgc3RhbmRhcmQga2V5cy5cbiAgICogVGhpcyBhbGxvd3MgZm9yIGFsaWFzaW5nIHZhbGlkYXRpb24ga2V5cyBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBPYmplY3QgbWFwcGluZyBjdXN0b20ga2V5cyB0byBzdGFuZGFyZCB2YWxpZGF0aW9uIGtleXNcbiAgICovXG4gIGdldEN1c3RvbUtleXMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgYWxsIHJlZ2lzdGVyZWQgdmFsaWRhdG9yIGtleXNcbiAgICogQHN1bW1hcnkgUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdmFsaWRhdGlvbiBrZXlzIHRoYXQgaGF2ZSByZWdpc3RlcmVkIHZhbGlkYXRvcnMuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSBBcnJheSBvZiByZWdpc3RlcmVkIHZhbGlkYXRvciBrZXlzXG4gICAqL1xuICBnZXRLZXlzKCk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXJzIG9uZSBvciBtb3JlIHZhbGlkYXRvcnMgd2l0aCB0aGUgcmVnaXN0cnlcbiAgICogQHN1bW1hcnkgQWRkcyB2YWxpZGF0b3JzIHRvIHRoZSByZWdpc3RyeSwgbWFraW5nIHRoZW0gYXZhaWxhYmxlIGZvciB2YWxpZGF0aW9uIG9wZXJhdGlvbnMuXG4gICAqIFZhbGlkYXRvcnMgY2FuIGJlIHByb3ZpZGVkIGFzIGluc3RhbmNlcyBvciBhcyB2YWxpZGF0b3IgZGVmaW5pdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Li4uKFR8VmFsaWRhdG9yRGVmaW5pdGlvbil9IHZhbGlkYXRvciAtIFZhbGlkYXRvciBpbnN0YW5jZXMgb3IgZGVmaW5pdGlvbnMgdG8gcmVnaXN0ZXJcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHJlZ2lzdGVyPFQgZXh0ZW5kcyBWYWxpZGF0b3I+KFxuICAgIC4uLnZhbGlkYXRvcjogKFQgfCBWYWxpZGF0b3JEZWZpbml0aW9uKVtdXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSB2YWxpZGF0b3IgYnkgaXRzIGtleVxuICAgKiBAc3VtbWFyeSBMb29rcyB1cCBhIHZhbGlkYXRvciBpbiB0aGUgcmVnaXN0cnkgdXNpbmcgaXRzIHZhbGlkYXRpb24ga2V5LlxuICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0b3IgaWYgZm91bmQsIG9yIHVuZGVmaW5lZCBpZiBubyB2YWxpZGF0b3IgaXMgcmVnaXN0ZXJlZCBmb3IgdGhlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSB2YWxpZGF0aW9uIGtleSB0byBsb29rIHVwLCB0eXBpY2FsbHkgb25lIG9mIHRoZSB7QGxpbmsgVmFsaWRhdGlvbktleXN9XG4gICAqIEByZXR1cm4ge1R8dW5kZWZpbmVkfSBUaGUgcmVnaXN0ZXJlZCB2YWxpZGF0b3Igb3IgdW5kZWZpbmVkIGlmIG5vbmUgbWF0Y2hlcyB0aGUgcHJvdmlkZWQga2V5XG4gICAqL1xuICBnZXQ8VCBleHRlbmRzIFZhbGlkYXRvcj4oa2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNlIG9wdGlvbnMgdHlwZSBmb3IgYWxsIHZhbGlkYXRvcnNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbW1vbiBwcm9wZXJ0aWVzIGF2YWlsYWJsZSB0byBhbGwgdmFsaWRhdG9yc1xuICogQGludGVyZmFjZSBWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW21lc3NhZ2VdIC0gQ3VzdG9tIGVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSB3aGVuIHZhbGlkYXRpb24gZmFpbHNcbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBVUkwgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBVUkwgdmFsaWRhdGlvbiwgaW5jbHVkaW5nIGFsbG93ZWQgVVJMIHR5cGVzXG4gKiBAaW50ZXJmYWNlIFVSTFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7KHN0cmluZ3xzdHJpbmdbXXx7IG5hbWU6IHN0cmluZyB9KX0gdHlwZXMgLSBTcGVjaWZpZXMgdGhlIGFsbG93ZWQgVVJMIHR5cGVzIG9yIHBhdHRlcm5zXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVSTFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgdHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgeyBuYW1lOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIHR5cGUgdmFsaWRhdGlvbiwgc3BlY2lmeWluZyBhbGxvd2VkIHR5cGVzXG4gKiBAaW50ZXJmYWNlIFR5cGVWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhzdHJpbmd8c3RyaW5nW118eyBuYW1lOiBzdHJpbmcgfSl9IHR5cGVzIC0gU3BlY2lmaWVzIHRoZSBhbGxvd2VkIGRhdGEgdHlwZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgdHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgeyBuYW1lOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU3RlcCB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIHN0ZXAgdmFsaWRhdGlvbiwgc3BlY2lmeWluZyB0aGUgc3RlcCBpbmNyZW1lbnRcbiAqIEBpbnRlcmZhY2UgU3RlcFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7KG51bWJlcnxzdHJpbmcpfSBbVmFsaWRhdGlvbktleXMuU1RFUF0gLSBUaGUgc3RlcCB2YWx1ZSBmb3IgbnVtZXJpY2FsIHZhbGlkYXRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLlNURVBdOiBudW1iZXIgfCBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBhdHRlcm4gdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBwYXR0ZXJuIHZhbGlkYXRpb24gdXNpbmcgcmVndWxhciBleHByZXNzaW9uc1xuICogQGludGVyZmFjZSBQYXR0ZXJuVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHsoUmVnRXhwfHN0cmluZyl9IFtWYWxpZGF0aW9uS2V5cy5QQVRURVJOXSAtIFRoZSBwYXR0ZXJuIHRvIG1hdGNoIGFnYWluc3RcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVyblZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLlBBVFRFUk5dPzogUmVnRXhwIHwgc3RyaW5nO1xuICB0eXBlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNaW5pbXVtIHZhbHVlIHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3IgbWluaW11bSB2YWx1ZSB2YWxpZGF0aW9uXG4gKiBAaW50ZXJmYWNlIE1pblZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7KG51bWJlcnxEYXRlfHN0cmluZyl9IFtWYWxpZGF0aW9uS2V5cy5NSU5dIC0gVGhlIG1pbmltdW0gYWxsb3dlZCB2YWx1ZVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNaW5WYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5NSU5dOiBudW1iZXIgfCBEYXRlIHwgc3RyaW5nO1xuICB0eXBlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNaW5pbXVtIGxlbmd0aCB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIG1pbmltdW0gbGVuZ3RoIHZhbGlkYXRpb25cbiAqIEBpbnRlcmZhY2UgTWluTGVuZ3RoVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFtWYWxpZGF0aW9uS2V5cy5NSU5fTEVOR1RIXSAtIFRoZSBtaW5pbXVtIGFsbG93ZWQgbGVuZ3RoXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pbkxlbmd0aFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLk1JTl9MRU5HVEhdOiBudW1iZXI7XG4gIHR5cGVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1heGltdW0gdmFsdWUgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBtYXhpbXVtIHZhbHVlIHZhbGlkYXRpb25cbiAqIEBpbnRlcmZhY2UgTWF4VmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHsobnVtYmVyfERhdGV8c3RyaW5nKX0gW1ZhbGlkYXRpb25LZXlzLk1BWF0gLSBUaGUgbWF4aW11bSBhbGxvd2VkIHZhbHVlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1heFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLk1BWF06IG51bWJlciB8IERhdGUgfCBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1heGltdW0gbGVuZ3RoIHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3IgbWF4aW11bSBsZW5ndGggdmFsaWRhdGlvblxuICogQGludGVyZmFjZSBNYXhMZW5ndGhWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gW1ZhbGlkYXRpb25LZXlzLk1BWF9MRU5HVEhdIC0gVGhlIG1heGltdW0gYWxsb3dlZCBsZW5ndGhcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF4TGVuZ3RoVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuTUFYX0xFTkdUSF06IG51bWJlcjtcbiAgdHlwZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTGlzdCB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIGxpc3QgdmFsaWRhdGlvblxuICogQGludGVyZmFjZSBMaXN0VmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gY2xhenogLSBBcnJheSBvZiBhbGxvd2VkIGNsYXNzIG5hbWVzIG9yIHR5cGVzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIGNsYXp6OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGF0ZSB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIGRhdGUgdmFsaWRhdGlvblxuICogQGludGVyZmFjZSBEYXRlVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtWYWxpZGF0aW9uS2V5cy5GT1JNQVRdIC0gVGhlIGV4cGVjdGVkIGRhdGUgZm9ybWF0IHBhdHRlcm5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkZPUk1BVF0/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXF1YWxzVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuRVFVQUxTXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpZmZWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5ESUZGXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlc3NUaGFuVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuTEVTU19USEFOXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlc3NUaGFuT3JFcXVhbFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkxFU1NfVEhBTl9PUl9FUVVBTF06IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmVhdGVyVGhhblZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkdSRUFURVJfVEhBTl06IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmVhdGVyVGhhbk9yRXF1YWxWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5HUkVBVEVSX1RIQU5fT1JfRVFVQUxdOiBzdHJpbmc7XG59XG4iXX0=
@@ -60,6 +60,7 @@ export type ValidationElementDefinition = {
60
60
  [indexer: string]: any;
61
61
  value?: string | number;
62
62
  message: string;
63
+ description: string;
63
64
  types?: string[];
64
65
  };
65
66
  /**
@@ -128,20 +129,19 @@ export interface IValidatorRegistry<T extends Validator> extends IRegistry<T> {
128
129
  /**
129
130
  * @description Base options type for all validators
130
131
  * @summary Defines the common properties available to all validators
131
- * @typedef ValidatorOptions
132
+ * @interface ValidatorOptions
132
133
  * @property {string} [message] - Custom error message to display when validation fails
133
- * @memberOf module:decorator-validation
134
134
  * @category Validation
135
135
  */
136
- export type ValidatorOptions = {
136
+ export interface ValidatorOptions {
137
137
  message?: string;
138
- };
138
+ description?: string;
139
+ }
139
140
  /**
140
141
  * @description URL validation options interface
141
142
  * @summary Defines options for URL validation, including allowed URL types
142
143
  * @interface URLValidatorOptions
143
144
  * @property {(string|string[]|{ name: string })} types - Specifies the allowed URL types or patterns
144
- * @memberOf module:decorator-validation
145
145
  * @category Validation
146
146
  */
147
147
  export interface URLValidatorOptions extends ValidatorOptions {
@@ -172,6 +172,7 @@ export interface TypeValidatorOptions extends ValidatorOptions {
172
172
  */
173
173
  export interface StepValidatorOptions extends ValidatorOptions {
174
174
  [ValidationKeys.STEP]: number | string;
175
+ types?: string[];
175
176
  }
176
177
  /**
177
178
  * @description Pattern validation options interface
@@ -183,6 +184,7 @@ export interface StepValidatorOptions extends ValidatorOptions {
183
184
  */
184
185
  export interface PatternValidatorOptions extends ValidatorOptions {
185
186
  [ValidationKeys.PATTERN]?: RegExp | string;
187
+ types?: string[];
186
188
  }
187
189
  /**
188
190
  * @description Minimum value validation options interface
@@ -194,6 +196,7 @@ export interface PatternValidatorOptions extends ValidatorOptions {
194
196
  */
195
197
  export interface MinValidatorOptions extends ValidatorOptions {
196
198
  [ValidationKeys.MIN]: number | Date | string;
199
+ types?: string[];
197
200
  }
198
201
  /**
199
202
  * @description Minimum length validation options interface
@@ -205,6 +208,7 @@ export interface MinValidatorOptions extends ValidatorOptions {
205
208
  */
206
209
  export interface MinLengthValidatorOptions extends ValidatorOptions {
207
210
  [ValidationKeys.MIN_LENGTH]: number;
211
+ types?: string[];
208
212
  }
209
213
  /**
210
214
  * @description Maximum value validation options interface
@@ -216,6 +220,7 @@ export interface MinLengthValidatorOptions extends ValidatorOptions {
216
220
  */
217
221
  export interface MaxValidatorOptions extends ValidatorOptions {
218
222
  [ValidationKeys.MAX]: number | Date | string;
223
+ types?: string[];
219
224
  }
220
225
  /**
221
226
  * @description Maximum length validation options interface
@@ -227,6 +232,7 @@ export interface MaxValidatorOptions extends ValidatorOptions {
227
232
  */
228
233
  export interface MaxLengthValidatorOptions extends ValidatorOptions {
229
234
  [ValidationKeys.MAX_LENGTH]: number;
235
+ types?: string[];
230
236
  }
231
237
  /**
232
238
  * @description List validation options interface
package/package.json CHANGED
@@ -1,11 +1,17 @@
1
1
  {
2
2
  "name": "@decaf-ts/decorator-validation",
3
- "version": "1.7.3",
3
+ "version": "1.7.5",
4
4
  "description": "simple decorator based validation engine",
5
5
  "type": "module",
6
6
  "exports": {
7
- "require": "./lib/index.cjs",
8
- "import": "./lib/esm/index.js"
7
+ ".": {
8
+ "require": "./lib/index.cjs",
9
+ "import": "./lib/esm/index.js"
10
+ },
11
+ "./mcp": {
12
+ "require": "./lib/mcp/index.cjs",
13
+ "import": "./lib/esm/mcp/index.js"
14
+ }
9
15
  },
10
16
  "types": "lib/index.d.ts",
11
17
  "scripts": {
@@ -23,6 +29,8 @@
23
29
  "test:integration": "jest --testPathPattern=\"/tests/(integration)\" --passWithNoTests --detectOpenHandles",
24
30
  "test:all": "jest --testPathPattern=\"/tests\" --passWithNoTests --detectOpenHandles",
25
31
  "test:circular": "dpdm -T --no-warning --no-tree ./src/index.ts",
32
+ "test:fuzz": "npm run test:all -- --testRegex='/tests/.*\\.fuzz\\.ts' --passWithNoTests",
33
+ "test:property": "npm run test:fuzz -- --testRegex='/tests/.*\\.property\\.fuzz\\.ts'",
26
34
  "coverage": "rimraf ./workdocs/reports/data/*.json && npm run test:all -- --coverage --config=./workdocs/reports/jest.coverage.config.ts",
27
35
  "lint": "eslint .",
28
36
  "lint-fix": "eslint --fix .",
@@ -60,7 +68,7 @@
60
68
  "ts"
61
69
  ],
62
70
  "author": "Tiago Venceslau",
63
- "license": "LGPL-3.0-or-later",
71
+ "license": "MIT",
64
72
  "bugs": {
65
73
  "url": "https://github.com/decaf-ts/decorator-validation/issues"
66
74
  },
@@ -80,6 +88,8 @@
80
88
  "eslint": "^9.25.1",
81
89
  "eslint-config-prettier": "^10.1.2",
82
90
  "eslint-plugin-prettier": "^5.2.6",
91
+ "fast-check": "^4.2.0",
92
+ "fastmcp": "^3.8.4",
83
93
  "globals": "^16.0.0",
84
94
  "jest": "^29.7.0",
85
95
  "jest-html-reporters": "^3.1.7",
@@ -101,6 +111,7 @@
101
111
  },
102
112
  "peerDependencies": {
103
113
  "@decaf-ts/reflection": "latest",
104
- "reflect-metadata": "^0.2.1"
114
+ "reflect-metadata": "^0.2.1",
115
+ "typed-object-accumulator": "^0.1.5"
105
116
  }
106
117
  }