@decaf-ts/db-decorators 0.6.4 → 0.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/db-decorators.cjs +38 -17
- package/dist/db-decorators.esm.cjs +39 -18
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/interfaces/IRepository.d.ts +1 -1
- package/lib/esm/interfaces/IRepository.js +1 -1
- package/lib/esm/model/decorators.d.ts +2 -2
- package/lib/esm/model/decorators.js +11 -5
- package/lib/esm/model/model.d.ts +3 -3
- package/lib/esm/model/model.js +1 -1
- package/lib/esm/model/overrides.js +1 -2
- package/lib/esm/model/validation.js +6 -2
- package/lib/esm/repository/Context.d.ts +1 -1
- package/lib/esm/repository/Context.js +1 -1
- package/lib/esm/repository/Repository.d.ts +1 -1
- package/lib/esm/repository/Repository.js +1 -1
- package/lib/esm/repository/utils.d.ts +1 -1
- package/lib/esm/repository/utils.js +1 -1
- package/lib/esm/validation/decorators.js +23 -11
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/interfaces/IRepository.cjs +1 -1
- package/lib/interfaces/IRepository.d.ts +1 -1
- package/lib/model/decorators.cjs +10 -4
- package/lib/model/decorators.d.ts +2 -2
- package/lib/model/model.cjs +1 -1
- package/lib/model/model.d.ts +3 -3
- package/lib/model/overrides.cjs +1 -2
- package/lib/model/validation.cjs +6 -2
- package/lib/repository/Context.cjs +1 -1
- package/lib/repository/Context.d.ts +1 -1
- package/lib/repository/Repository.cjs +1 -1
- package/lib/repository/Repository.d.ts +1 -1
- package/lib/repository/utils.cjs +1 -1
- package/lib/repository/utils.d.ts +1 -1
- package/lib/validation/decorators.cjs +23 -11
- package/package.json +1 -1
|
@@ -172,4 +172,4 @@ export const getAllPropertyDecoratorsRecursive = function (model, accum, ...pref
|
|
|
172
172
|
// proto = Object.getPrototypeOf(proto)
|
|
173
173
|
return getAllPropertyDecoratorsRecursive(proto, accumulator, ...prefixes);
|
|
174
174
|
};
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVwb3NpdG9yeS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLHNDQUFpQztBQUd0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLHFDQUFnQztBQUN4RCxPQUFPLEVBQXFCLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQWlCO0FBQ3pDLE9BQU8sRUFBc0IsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUF1Qi9FOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxVQUM1QixHQUFRLEVBQ1IsSUFBWSxFQUNaLENBQW1CLEVBQ25CLEtBQTBDO0lBRTFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQ2hDLElBQUksQ0FBQyxJQUFJO1FBQUUsTUFBTSxJQUFJLGFBQWEsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3RFLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO0lBRXBCLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVELEtBQUssR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUUxRCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLElBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQyxTQUFTO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDN0MsSUFBSSxLQUFLLENBQUMsV0FB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RUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQzVDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGLE1BQU0sSUFBSSxHQUNSLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUMxRCxJQUFJLElBQUk7UUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFaEMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLE1BQU0sQ0FBQyxTQUFTO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFFMUUsdUNBQXVDO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLFdBQVcsQ0FBQztJQUMvQiw0REFBNEQ7SUFDNUQsMkNBQTJDO0lBQzNDLE9BQU8saUNBQWlDLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQzVFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wZXJhdGlvbnMgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9PcGVyYXRpb25zXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25IYW5kbGVyLCBVcGRhdGVPcGVyYXRpb25IYW5kbGVyIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvdHlwZXNcIjtcbmltcG9ydCB7IElSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvSVJlcG9zaXRvcnlcIjtcbmltcG9ydCB7IE9wZXJhdGlvbktleXMgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9jb25zdGFudHNcIjtcbmltcG9ydCB7IERlY29yYXRvck1ldGFkYXRhLCBSZWZsZWN0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciwgTW9kZWwsIE1vZGVsS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi9Db250ZXh0XCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5RmxhZ3MgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb250ZXh0IGFyZ3VtZW50cyBmb3IgcmVwb3NpdG9yeSBvcGVyYXRpb25zLlxuICogQHN1bW1hcnkgUmVwcmVzZW50cyB0aGUgY29udGV4dCBhbmQgYXJndW1lbnRzIGZvciByZXBvc2l0b3J5IG9wZXJhdGlvbnMuXG4gKiBUaGlzIHR5cGUgaXMgdXNlZCB0byBwYXNzIGNvbnRleHQgYW5kIGFyZ3VtZW50cyBiZXR3ZWVuIHJlcG9zaXRvcnkgbWV0aG9kcy5cbiAqIEB0ZW1wbGF0ZSBGIC0gVGhlIHJlcG9zaXRvcnkgZmxhZ3MgdHlwZSwgZGVmYXVsdHMgdG8gUmVwb3NpdG9yeUZsYWdzXG4gKiBAdGVtcGxhdGUgQyAtIFRoZSBjb250ZXh0IHR5cGUsIGRlZmF1bHRzIHRvIENvbnRleHQ8Rj5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IENvbnRleHRBcmdzXG4gKiBAcHJvcGVydHkge0N9IGNvbnRleHQgLSBUaGUgb3BlcmF0aW9uIGNvbnRleHRcbiAqIEBwcm9wZXJ0eSB7YW55W119IGFyZ3MgLSBUaGUgb3BlcmF0aW9uIGFyZ3VtZW50c1xuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCB0eXBlIENvbnRleHRBcmdzPFxuICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzID0gUmVwb3NpdG9yeUZsYWdzLFxuICBDIGV4dGVuZHMgQ29udGV4dDxGPiA9IENvbnRleHQ8Rj4sXG4+ID0ge1xuICBjb250ZXh0OiBDO1xuICBhcmdzOiBhbnlbXTtcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgcmV0cmlldmVzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBoYW5kbGVyXG4gKiBAcGFyYW0ge2FueX0gZGVjIHRoZSBkZWNvcmF0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wIHRoZSBwcm9wZXJ0eSBuYW1lXG4gKiBAcGFyYW0ge3t9fSBtIHRoZSBtb2RlbFxuICogQHBhcmFtIHt7fX0gW2FjY3VtXSBhY2N1bXVsYXRvciB1c2VkIGZvciBpbnRlcm5hbCByZWN1cnNpdmVuZXNzXG4gKlxuICogQGZ1bmN0aW9uIGdldEhhbmRsZXJBcmdzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnMuUmVwb3NpdG9yeVxuICovXG5leHBvcnQgY29uc3QgZ2V0SGFuZGxlckFyZ3MgPSBmdW5jdGlvbiAoXG4gIGRlYzogYW55LFxuICBwcm9wOiBzdHJpbmcsXG4gIG06IENvbnN0cnVjdG9yPGFueT4sXG4gIGFjY3VtPzogUmVjb3JkPHN0cmluZywgeyBhcmdzOiBzdHJpbmdbXSB9PlxuKTogUmVjb3JkPHN0cmluZywgeyBhcmdzOiBzdHJpbmdbXSB9PiB8IHZvaWQge1xuICBjb25zdCBuYW1lID0gbS5jb25zdHJ1Y3Rvci5uYW1lO1xuICBpZiAoIW5hbWUpIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiQ291bGQgbm90IGRldGVybWluZSBtb2RlbCBjbGFzc1wiKTtcbiAgYWNjdW0gPSBhY2N1bSB8fCB7fTtcblxuICBpZiAoZGVjLnByb3BzLmhhbmRsZXJzW25hbWVdICYmIGRlYy5wcm9wcy5oYW5kbGVyc1tuYW1lXVtwcm9wXSlcbiAgICBhY2N1bSA9IHsgLi4uZGVjLnByb3BzLmhhbmRsZXJzW25hbWVdW3Byb3BdLCAuLi5hY2N1bSB9O1xuXG4gIGxldCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihtKTtcbiAgaWYgKHByb3RvID09PSBPYmplY3QucHJvdG90eXBlKSByZXR1cm4gYWNjdW07XG4gIGlmIChwcm90by5jb25zdHJ1Y3Rvci5uYW1lID09PSBuYW1lKSBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90byk7XG5cbiAgcmV0dXJuIGdldEhhbmRsZXJBcmdzKGRlYywgcHJvcCwgcHJvdG8sIGFjY3VtKTtcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7SVJlcG9zaXRvcnk8VD59IHJlcG9cbiAqIEBwYXJhbSBjb250ZXh0XG4gKiBAcGFyYW0ge1R9IG1vZGVsXG4gKiBAcGFyYW0gb3BlcmF0aW9uXG4gKiBAcGFyYW0gcHJlZml4XG4gKlxuICogQHBhcmFtIG9sZE1vZGVsXG4gKiBAZnVuY3Rpb24gZW5mb3JjZURCUHJvcGVydHlEZWNvcmF0b3JzQXN5bmNcbiAqXG4gKiBAbWVtYmVyT2YgZGItZGVjb3JhdG9ycy51dGlsc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5mb3JjZURCRGVjb3JhdG9yczxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgSVJlcG9zaXRvcnk8TSwgRiwgQz4sXG4gIFYgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3QsXG4gIEYgZXh0ZW5kcyBSZXBvc2l0b3J5RmxhZ3MgPSBSZXBvc2l0b3J5RmxhZ3MsXG4gIEMgZXh0ZW5kcyBDb250ZXh0PEY+ID0gQ29udGV4dDxGPixcbj4oXG4gIHJlcG86IFIsXG4gIGNvbnRleHQ6IEMsXG4gIG1vZGVsOiBNLFxuICBvcGVyYXRpb246IHN0cmluZyxcbiAgcHJlZml4OiBzdHJpbmcsXG4gIG9sZE1vZGVsPzogTVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGRlY29yYXRvcnM6IFJlY29yZDxzdHJpbmcsIERlY29yYXRvck1ldGFkYXRhW10+IHwgdW5kZWZpbmVkID1cbiAgICBnZXREYkRlY29yYXRvcnMobW9kZWwsIG9wZXJhdGlvbiwgcHJlZml4KTtcblxuICBpZiAoIWRlY29yYXRvcnMpIHJldHVybjtcblxuICBmb3IgKGNvbnN0IHByb3AgaW4gZGVjb3JhdG9ycykge1xuICAgIGNvbnN0IGRlY3M6IERlY29yYXRvck1ldGFkYXRhW10gPSBkZWNvcmF0b3JzW3Byb3BdO1xuICAgIGZvciAoY29uc3QgZGVjIG9mIGRlY3MpIHtcbiAgICAgIGNvbnN0IHsga2V5IH0gPSBkZWM7XG4gICAgICBjb25zdCBoYW5kbGVyczogT3BlcmF0aW9uSGFuZGxlcjxNLCBSLCBWLCBGLCBDPltdIHwgdW5kZWZpbmVkID1cbiAgICAgICAgT3BlcmF0aW9ucy5nZXQ8TSwgUiwgViwgRiwgQz4obW9kZWwsIHByb3AsIHByZWZpeCArIGtleSk7XG4gICAgICBpZiAoIWhhbmRsZXJzIHx8ICFoYW5kbGVycy5sZW5ndGgpXG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgIGBDb3VsZCBub3QgZmluZCByZWdpc3RlcmVkIGhhbmRsZXIgZm9yIHRoZSBvcGVyYXRpb24gJHtwcmVmaXggKyBrZXl9IHVuZGVyIHByb3BlcnR5ICR7cHJvcH1gXG4gICAgICAgICk7XG5cbiAgICAgIGNvbnN0IGhhbmRsZXJBcmdzID0gZ2V0SGFuZGxlckFyZ3MoZGVjLCBwcm9wLCBtb2RlbCBhcyBhbnkpO1xuXG4gICAgICBpZiAoIWhhbmRsZXJBcmdzIHx8IE9iamVjdC52YWx1ZXMoaGFuZGxlckFyZ3MpLmxlbmd0aCAhPT0gaGFuZGxlcnMubGVuZ3RoKVxuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIkFyZ3MgYW5kIGhhbmRsZXJzIGxlbmd0aCBkbyBub3QgbWF0Y2hcIik7XG5cbiAgICAgIGxldCBoYW5kbGVyOiBPcGVyYXRpb25IYW5kbGVyPE0sIFIsIFYsIEYsIEM+O1xuICAgICAgbGV0IGRhdGE6IGFueTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGFuZGxlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaGFuZGxlciA9IGhhbmRsZXJzW2ldO1xuICAgICAgICBkYXRhID0gT2JqZWN0LnZhbHVlcyhoYW5kbGVyQXJncylbaV07XG5cbiAgICAgICAgY29uc3QgYXJnczogYW55W10gPSBbY29udGV4dCwgZGF0YS5kYXRhLCBwcm9wLCBtb2RlbF07XG5cbiAgICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gT3BlcmF0aW9uS2V5cy5VUERBVEUgJiYgcHJlZml4ID09PSBPcGVyYXRpb25LZXlzLk9OKSB7XG4gICAgICAgICAgaWYgKCFvbGRNb2RlbClcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTWlzc2luZyBvbGQgbW9kZWwgZm9yIHVwZGF0ZSBvcGVyYXRpb25cIik7XG4gICAgICAgICAgYXJncy5wdXNoKG9sZE1vZGVsKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IChoYW5kbGVyIGFzIFVwZGF0ZU9wZXJhdGlvbkhhbmRsZXI8TSwgUiwgViwgRiwgQz4pLmFwcGx5KFxuICAgICAgICAgICAgcmVwbyxcbiAgICAgICAgICAgIGFyZ3MgYXMgW0MsIFYsIGtleW9mIE0sIE0sIE1dXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IGBGYWlsZWQgdG8gZXhlY3V0ZSBoYW5kbGVyICR7aGFuZGxlci5uYW1lfSBmb3IgJHtwcm9wfSBvbiAke21vZGVsLmNvbnN0cnVjdG9yLm5hbWV9IGR1ZSB0byBlcnJvcjogJHtlfWA7XG4gICAgICAgICAgaWYgKGNvbnRleHQuZ2V0KFwiYnJlYWtPbkhhbmRsZXJFcnJvclwiKSkgdGhyb3cgbmV3IEludGVybmFsRXJyb3IobXNnKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhtc2cpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogU3BlY2lmaWMgZm9yIERCIERlY29yYXRvcnNcbiAqIEBwYXJhbSB7VH0gbW9kZWxcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcGVyYXRpb24gQ1JVRCB7QGxpbmsgT3BlcmF0aW9uS2V5c31cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZXh0cmFQcmVmaXhdXG4gKlxuICogQGZ1bmN0aW9uIGdldERiUHJvcGVydHlEZWNvcmF0b3JzXG4gKlxuICogQG1lbWJlck9mIGRiLWRlY29yYXRvcnMudXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERiRGVjb3JhdG9yczxUIGV4dGVuZHMgTW9kZWw+KFxuICBtb2RlbDogVCxcbiAgb3BlcmF0aW9uOiBzdHJpbmcsXG4gIGV4dHJhUHJlZml4Pzogc3RyaW5nXG4pOiBSZWNvcmQ8c3RyaW5nLCBEZWNvcmF0b3JNZXRhZGF0YVtdPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGRlY29yYXRvcnM6IFJlY29yZDxzdHJpbmcsIERlY29yYXRvck1ldGFkYXRhW10+IHwgdW5kZWZpbmVkID1cbiAgICBSZWZsZWN0aW9uLmdldEFsbFByb3BlcnR5RGVjb3JhdG9ycyhcbiAgICAgIG1vZGVsLFxuICAgICAgLy8gdW5kZWZpbmVkLFxuICAgICAgT3BlcmF0aW9uS2V5cy5SRUZMRUNUICsgKGV4dHJhUHJlZml4ID8gZXh0cmFQcmVmaXggOiBcIlwiKVxuICAgICk7XG4gIGlmICghZGVjb3JhdG9ycykgcmV0dXJuO1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVjb3JhdG9ycykucmVkdWNlKFxuICAgIChhY2N1bTogUmVjb3JkPHN0cmluZywgRGVjb3JhdG9yTWV0YWRhdGFbXT4gfCB1bmRlZmluZWQsIGRlY29yYXRvcikgPT4ge1xuICAgICAgY29uc3QgZGVjID0gZGVjb3JhdG9yc1tkZWNvcmF0b3JdLmZpbHRlcigoZCkgPT4gZC5rZXkgPT09IG9wZXJhdGlvbik7XG4gICAgICBpZiAoZGVjICYmIGRlYy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKCFhY2N1bSkgYWNjdW0gPSB7fTtcbiAgICAgICAgYWNjdW1bZGVjb3JhdG9yXSA9IGRlYztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2N1bTtcbiAgICB9LFxuICAgIHVuZGVmaW5lZFxuICApO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgZGVjb3JhdG9ycyBmb3IgYW4gb2JqZWN0J3MgcHJvcGVydGllcyBwcmVmaXhlZCBieSB7QHBhcmFtIHByZWZpeGVzfSByZWN1cnNpdmVseVxuICogQHBhcmFtIG1vZGVsXG4gKiBAcGFyYW0gYWNjdW1cbiAqIEBwYXJhbSBwcmVmaXhlc1xuICpcbiAqIEBmdW5jdGlvbiBnZXRBbGxQcm9wZXJ0eURlY29yYXRvcnNSZWN1cnNpdmVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9ycy5SZXBvc2l0b3J5XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRBbGxQcm9wZXJ0eURlY29yYXRvcnNSZWN1cnNpdmUgPSBmdW5jdGlvbiA8VCBleHRlbmRzIE1vZGVsPihcbiAgbW9kZWw6IFQsXG4gIGFjY3VtOiB7IFtpbmRleGVyOiBzdHJpbmddOiBhbnlbXSB9IHwgdW5kZWZpbmVkLFxuICAuLi5wcmVmaXhlczogc3RyaW5nW11cbik6IHsgW2luZGV4ZXI6IHN0cmluZ106IGFueVtdIH0gfCB1bmRlZmluZWQge1xuICBjb25zdCBhY2N1bXVsYXRvciA9IGFjY3VtIHx8IHt9O1xuICBjb25zdCBtZXJnZURlY29yYXRvcnMgPSBmdW5jdGlvbiAoZGVjczogeyBbaW5kZXhlcjogc3RyaW5nXTogYW55W10gfSkge1xuICAgIGNvbnN0IHB1c2hPclNxdWFzaCA9IChrZXk6IHN0cmluZywgLi4udmFsdWVzOiBhbnlbXSkgPT4ge1xuICAgICAgdmFsdWVzLmZvckVhY2goKHZhbCkgPT4ge1xuICAgICAgICBsZXQgbWF0Y2g6IGFueTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICEobWF0Y2ggPSBhY2N1bXVsYXRvcltrZXldLmZpbmQoKGUpID0+IGUua2V5ID09PSB2YWwua2V5KSkgfHxcbiAgICAgICAgICBtYXRjaC5wcm9wcy5vcGVyYXRpb24gIT09IHZhbC5wcm9wcy5vcGVyYXRpb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgYWNjdW11bGF0b3Jba2V5XS5wdXNoKHZhbCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbC5rZXkgPT09IE1vZGVsS2V5cy5UWVBFKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgeyBoYW5kbGVycywgb3BlcmF0aW9uIH0gPSB2YWwucHJvcHM7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICFvcGVyYXRpb24gfHxcbiAgICAgICAgICAhb3BlcmF0aW9uLm1hdGNoKFxuICAgICAgICAgICAgbmV3IFJlZ0V4cChcbiAgICAgICAgICAgICAgYF4oOj8ke09wZXJhdGlvbktleXMuT059fCR7T3BlcmF0aW9uS2V5cy5BRlRFUn0pKDo/JHtPcGVyYXRpb25LZXlzLkNSRUFURX18JHtPcGVyYXRpb25LZXlzLlJFQUR9fCR7T3BlcmF0aW9uS2V5cy5VUERBVEV9fCR7T3BlcmF0aW9uS2V5cy5ERUxFVEV9KSRgXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICBhY2N1bXVsYXRvcltrZXldLnB1c2godmFsKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhY2N1bUhhbmRsZXJzID0gbWF0Y2gucHJvcHMuaGFuZGxlcnM7XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMoaGFuZGxlcnMpLmZvckVhY2goKFtjbGF6eiwgaGFuZGxlckRlZl0pID0+IHtcbiAgICAgICAgICBpZiAoIShjbGF6eiBpbiBhY2N1bUhhbmRsZXJzKSkge1xuICAgICAgICAgICAgYWNjdW1IYW5kbGVyc1tjbGF6el0gPSBoYW5kbGVyRGVmO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGhhbmRsZXJEZWYgYXMgb2JqZWN0KS5mb3JFYWNoKFxuICAgICAgICAgICAgKFtoYW5kbGVyUHJvcCwgaGFuZGxlcl0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKCEoaGFuZGxlclByb3AgaW4gYWNjdW1IYW5kbGVyc1tjbGF6el0pKSB7XG4gICAgICAgICAgICAgICAgYWNjdW1IYW5kbGVyc1tjbGF6el1baGFuZGxlclByb3BdID0gaGFuZGxlcjtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhoYW5kbGVyIGFzIG9iamVjdCkuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAoW2hhbmRsZXJLZXksIGFyZ3NPYmpdKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoIShoYW5kbGVyS2V5IGluIGFjY3VtSGFuZGxlcnNbY2xhenpdW2hhbmRsZXJQcm9wXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYWNjdW1IYW5kbGVyc1tjbGF6el1baGFuZGxlclByb3BdW2hhbmRsZXJLZXldID0gYXJnc09iajtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICBgU2tpcHBpbmcgaGFuZGxlciByZWdpc3RyYXRpb24gZm9yICR7Y2xhenp9IHVuZGVyIHByb3AgJHtoYW5kbGVyUHJvcH0gYmVjYXVzZSBoYW5kbGVyIGlzIHRoZSBzYW1lYFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmVudHJpZXMoZGVjcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBhY2N1bXVsYXRvcltrZXldID0gYWNjdW11bGF0b3Jba2V5XSB8fCBbXTtcbiAgICAgIHB1c2hPclNxdWFzaChrZXksIC4uLnZhbHVlKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBkZWNzOiB7IFtpbmRleGVyOiBzdHJpbmddOiBhbnlbXSB9IHwgdW5kZWZpbmVkID1cbiAgICBSZWZsZWN0aW9uLmdldEFsbFByb3BlcnR5RGVjb3JhdG9ycyhtb2RlbCwgLi4ucHJlZml4ZXMpO1xuICBpZiAoZGVjcykgbWVyZ2VEZWNvcmF0b3JzKGRlY3MpO1xuXG4gIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YobW9kZWwpID09PSBPYmplY3QucHJvdG90eXBlKSByZXR1cm4gYWNjdW11bGF0b3I7XG5cbiAgLy8gY29uc3QgbmFtZSA9IG1vZGVsLmNvbnN0cnVjdG9yLm5hbWU7XG4gIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG1vZGVsKTtcbiAgaWYgKCFwcm90bykgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAvLyBpZiAocHJvdG8uY29uc3RydWN0b3IgJiYgcHJvdG8uY29uc3RydWN0b3IubmFtZSA9PT0gbmFtZSlcbiAgLy8gICAgIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKVxuICByZXR1cm4gZ2V0QWxsUHJvcGVydHlEZWNvcmF0b3JzUmVjdXJzaXZlKHByb3RvLCBhY2N1bXVsYXRvciwgLi4ucHJlZml4ZXMpO1xufTtcbiJdfQ==
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVwb3NpdG9yeS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLHNDQUFpQztBQUd0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLHFDQUFnQztBQUN4RCxPQUFPLEVBQXFCLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQWlCO0FBQ3pDLE9BQU8sRUFBc0IsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUF1Qi9FOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxVQUM1QixHQUFRLEVBQ1IsSUFBWSxFQUNaLENBQW1CLEVBQ25CLEtBQTBDO0lBRTFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQ2hDLElBQUksQ0FBQyxJQUFJO1FBQUUsTUFBTSxJQUFJLGFBQWEsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3RFLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO0lBRXBCLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVELEtBQUssR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUUxRCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLElBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQyxTQUFTO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDN0MsSUFBSSxLQUFLLENBQUMsV0FB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RUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQzVDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGLE1BQU0sSUFBSSxHQUNSLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUMxRCxJQUFJLElBQUk7UUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFaEMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLE1BQU0sQ0FBQyxTQUFTO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFFMUUsdUNBQXVDO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLFdBQVcsQ0FBQztJQUMvQiw0REFBNEQ7SUFDNUQsMkNBQTJDO0lBQzNDLE9BQU8saUNBQWlDLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQzVFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wZXJhdGlvbnMgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9PcGVyYXRpb25zXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25IYW5kbGVyLCBVcGRhdGVPcGVyYXRpb25IYW5kbGVyIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvdHlwZXNcIjtcbmltcG9ydCB7IElSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvSVJlcG9zaXRvcnlcIjtcbmltcG9ydCB7IE9wZXJhdGlvbktleXMgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9jb25zdGFudHNcIjtcbmltcG9ydCB7IERlY29yYXRvck1ldGFkYXRhLCBSZWZsZWN0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciwgTW9kZWwsIE1vZGVsS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi9Db250ZXh0XCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5RmxhZ3MgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb250ZXh0IGFyZ3VtZW50cyBmb3IgcmVwb3NpdG9yeSBvcGVyYXRpb25zLlxuICogQHN1bW1hcnkgUmVwcmVzZW50cyB0aGUgY29udGV4dCBhbmQgYXJndW1lbnRzIGZvciByZXBvc2l0b3J5IG9wZXJhdGlvbnMuXG4gKiBUaGlzIHR5cGUgaXMgdXNlZCB0byBwYXNzIGNvbnRleHQgYW5kIGFyZ3VtZW50cyBiZXR3ZWVuIHJlcG9zaXRvcnkgbWV0aG9kcy5cbiAqIEB0ZW1wbGF0ZSBGIC0gVGhlIHJlcG9zaXRvcnkgZmxhZ3MgdHlwZSwgZGVmYXVsdHMgdG8gUmVwb3NpdG9yeUZsYWdzXG4gKiBAdGVtcGxhdGUgQyAtIFRoZSBjb250ZXh0IHR5cGUsIGRlZmF1bHRzIHRvIENvbnRleHQ8Rj5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IENvbnRleHRBcmdzXG4gKiBAcHJvcGVydHkge0N9IGNvbnRleHQgLSBUaGUgb3BlcmF0aW9uIGNvbnRleHRcbiAqIEBwcm9wZXJ0eSB7YW55W119IGFyZ3MgLSBUaGUgb3BlcmF0aW9uIGFyZ3VtZW50c1xuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCB0eXBlIENvbnRleHRBcmdzPFxuICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzID0gUmVwb3NpdG9yeUZsYWdzLFxuICBDIGV4dGVuZHMgQ29udGV4dDxGPiA9IENvbnRleHQ8Rj4sXG4+ID0ge1xuICBjb250ZXh0OiBDO1xuICBhcmdzOiBhbnlbXTtcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgcmV0cmlldmVzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBoYW5kbGVyXG4gKiBAcGFyYW0ge2FueX0gZGVjIHRoZSBkZWNvcmF0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wIHRoZSBwcm9wZXJ0eSBuYW1lXG4gKiBAcGFyYW0ge3t9fSBtIHRoZSBtb2RlbFxuICogQHBhcmFtIHt7fX0gW2FjY3VtXSBhY2N1bXVsYXRvciB1c2VkIGZvciBpbnRlcm5hbCByZWN1cnNpdmVuZXNzXG4gKlxuICogQGZ1bmN0aW9uIGdldEhhbmRsZXJBcmdzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnMuUmVwb3NpdG9yeVxuICovXG5leHBvcnQgY29uc3QgZ2V0SGFuZGxlckFyZ3MgPSBmdW5jdGlvbiAoXG4gIGRlYzogYW55LFxuICBwcm9wOiBzdHJpbmcsXG4gIG06IENvbnN0cnVjdG9yPGFueT4sXG4gIGFjY3VtPzogUmVjb3JkPHN0cmluZywgeyBhcmdzOiBzdHJpbmdbXSB9PlxuKTogUmVjb3JkPHN0cmluZywgeyBhcmdzOiBzdHJpbmdbXSB9PiB8IHZvaWQge1xuICBjb25zdCBuYW1lID0gbS5jb25zdHJ1Y3Rvci5uYW1lO1xuICBpZiAoIW5hbWUpIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiQ291bGQgbm90IGRldGVybWluZSBtb2RlbCBjbGFzc1wiKTtcbiAgYWNjdW0gPSBhY2N1bSB8fCB7fTtcblxuICBpZiAoZGVjLnByb3BzLmhhbmRsZXJzW25hbWVdICYmIGRlYy5wcm9wcy5oYW5kbGVyc1tuYW1lXVtwcm9wXSlcbiAgICBhY2N1bSA9IHsgLi4uZGVjLnByb3BzLmhhbmRsZXJzW25hbWVdW3Byb3BdLCAuLi5hY2N1bSB9O1xuXG4gIGxldCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihtKTtcbiAgaWYgKHByb3RvID09PSBPYmplY3QucHJvdG90eXBlKSByZXR1cm4gYWNjdW07XG4gIGlmIChwcm90by5jb25zdHJ1Y3Rvci5uYW1lID09PSBuYW1lKSBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90byk7XG5cbiAgcmV0dXJuIGdldEhhbmRsZXJBcmdzKGRlYywgcHJvcCwgcHJvdG8sIGFjY3VtKTtcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7SVJlcG9zaXRvcnk8VD59IHJlcG9cbiAqIEBwYXJhbSBjb250ZXh0XG4gKiBAcGFyYW0ge1R9IG1vZGVsXG4gKiBAcGFyYW0gb3BlcmF0aW9uXG4gKiBAcGFyYW0gcHJlZml4XG4gKlxuICogQHBhcmFtIG9sZE1vZGVsXG4gKiBAZnVuY3Rpb24gZW5mb3JjZURCUHJvcGVydHlEZWNvcmF0b3JzQXN5bmNcbiAqXG4gKiBAbWVtYmVyT2YgZGItZGVjb3JhdG9ycy51dGlsc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5mb3JjZURCRGVjb3JhdG9yczxcbiAgTSBleHRlbmRzIE1vZGVsPHRydWUgfCBmYWxzZT4sXG4gIFIgZXh0ZW5kcyBJUmVwb3NpdG9yeTxNLCBGLCBDPixcbiAgViBleHRlbmRzIG9iamVjdCA9IG9iamVjdCxcbiAgRiBleHRlbmRzIFJlcG9zaXRvcnlGbGFncyA9IFJlcG9zaXRvcnlGbGFncyxcbiAgQyBleHRlbmRzIENvbnRleHQ8Rj4gPSBDb250ZXh0PEY+LFxuPihcbiAgcmVwbzogUixcbiAgY29udGV4dDogQyxcbiAgbW9kZWw6IE0sXG4gIG9wZXJhdGlvbjogc3RyaW5nLFxuICBwcmVmaXg6IHN0cmluZyxcbiAgb2xkTW9kZWw/OiBNXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZGVjb3JhdG9yczogUmVjb3JkPHN0cmluZywgRGVjb3JhdG9yTWV0YWRhdGFbXT4gfCB1bmRlZmluZWQgPVxuICAgIGdldERiRGVjb3JhdG9ycyhtb2RlbCwgb3BlcmF0aW9uLCBwcmVmaXgpO1xuXG4gIGlmICghZGVjb3JhdG9ycykgcmV0dXJuO1xuXG4gIGZvciAoY29uc3QgcHJvcCBpbiBkZWNvcmF0b3JzKSB7XG4gICAgY29uc3QgZGVjczogRGVjb3JhdG9yTWV0YWRhdGFbXSA9IGRlY29yYXRvcnNbcHJvcF07XG4gICAgZm9yIChjb25zdCBkZWMgb2YgZGVjcykge1xuICAgICAgY29uc3QgeyBrZXkgfSA9IGRlYztcbiAgICAgIGNvbnN0IGhhbmRsZXJzOiBPcGVyYXRpb25IYW5kbGVyPE0sIFIsIFYsIEYsIEM+W10gfCB1bmRlZmluZWQgPVxuICAgICAgICBPcGVyYXRpb25zLmdldDxNLCBSLCBWLCBGLCBDPihtb2RlbCwgcHJvcCwgcHJlZml4ICsga2V5KTtcbiAgICAgIGlmICghaGFuZGxlcnMgfHwgIWhhbmRsZXJzLmxlbmd0aClcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgYENvdWxkIG5vdCBmaW5kIHJlZ2lzdGVyZWQgaGFuZGxlciBmb3IgdGhlIG9wZXJhdGlvbiAke3ByZWZpeCArIGtleX0gdW5kZXIgcHJvcGVydHkgJHtwcm9wfWBcbiAgICAgICAgKTtcblxuICAgICAgY29uc3QgaGFuZGxlckFyZ3MgPSBnZXRIYW5kbGVyQXJncyhkZWMsIHByb3AsIG1vZGVsIGFzIGFueSk7XG5cbiAgICAgIGlmICghaGFuZGxlckFyZ3MgfHwgT2JqZWN0LnZhbHVlcyhoYW5kbGVyQXJncykubGVuZ3RoICE9PSBoYW5kbGVycy5sZW5ndGgpXG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiQXJncyBhbmQgaGFuZGxlcnMgbGVuZ3RoIGRvIG5vdCBtYXRjaFwiKTtcblxuICAgICAgbGV0IGhhbmRsZXI6IE9wZXJhdGlvbkhhbmRsZXI8TSwgUiwgViwgRiwgQz47XG4gICAgICBsZXQgZGF0YTogYW55O1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoYW5kbGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBoYW5kbGVyID0gaGFuZGxlcnNbaV07XG4gICAgICAgIGRhdGEgPSBPYmplY3QudmFsdWVzKGhhbmRsZXJBcmdzKVtpXTtcblxuICAgICAgICBjb25zdCBhcmdzOiBhbnlbXSA9IFtjb250ZXh0LCBkYXRhLmRhdGEsIHByb3AsIG1vZGVsXTtcblxuICAgICAgICBpZiAob3BlcmF0aW9uID09PSBPcGVyYXRpb25LZXlzLlVQREFURSAmJiBwcmVmaXggPT09IE9wZXJhdGlvbktleXMuT04pIHtcbiAgICAgICAgICBpZiAoIW9sZE1vZGVsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJNaXNzaW5nIG9sZCBtb2RlbCBmb3IgdXBkYXRlIG9wZXJhdGlvblwiKTtcbiAgICAgICAgICBhcmdzLnB1c2gob2xkTW9kZWwpO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgKGhhbmRsZXIgYXMgVXBkYXRlT3BlcmF0aW9uSGFuZGxlcjxNLCBSLCBWLCBGLCBDPikuYXBwbHkoXG4gICAgICAgICAgICByZXBvLFxuICAgICAgICAgICAgYXJncyBhcyBbQywgViwga2V5b2YgTSwgTSwgTV1cbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgY29uc3QgbXNnID0gYEZhaWxlZCB0byBleGVjdXRlIGhhbmRsZXIgJHtoYW5kbGVyLm5hbWV9IGZvciAke3Byb3B9IG9uICR7bW9kZWwuY29uc3RydWN0b3IubmFtZX0gZHVlIHRvIGVycm9yOiAke2V9YDtcbiAgICAgICAgICBpZiAoY29udGV4dC5nZXQoXCJicmVha09uSGFuZGxlckVycm9yXCIpKSB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihtc2cpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKG1zZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBTcGVjaWZpYyBmb3IgREIgRGVjb3JhdG9yc1xuICogQHBhcmFtIHtUfSBtb2RlbFxuICogQHBhcmFtIHtzdHJpbmd9IG9wZXJhdGlvbiBDUlVEIHtAbGluayBPcGVyYXRpb25LZXlzfVxuICogQHBhcmFtIHtzdHJpbmd9IFtleHRyYVByZWZpeF1cbiAqXG4gKiBAZnVuY3Rpb24gZ2V0RGJQcm9wZXJ0eURlY29yYXRvcnNcbiAqXG4gKiBAbWVtYmVyT2YgZGItZGVjb3JhdG9ycy51dGlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGJEZWNvcmF0b3JzPFQgZXh0ZW5kcyBNb2RlbD4oXG4gIG1vZGVsOiBULFxuICBvcGVyYXRpb246IHN0cmluZyxcbiAgZXh0cmFQcmVmaXg/OiBzdHJpbmdcbik6IFJlY29yZDxzdHJpbmcsIERlY29yYXRvck1ldGFkYXRhW10+IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVjb3JhdG9yczogUmVjb3JkPHN0cmluZywgRGVjb3JhdG9yTWV0YWRhdGFbXT4gfCB1bmRlZmluZWQgPVxuICAgIFJlZmxlY3Rpb24uZ2V0QWxsUHJvcGVydHlEZWNvcmF0b3JzKFxuICAgICAgbW9kZWwsXG4gICAgICAvLyB1bmRlZmluZWQsXG4gICAgICBPcGVyYXRpb25LZXlzLlJFRkxFQ1QgKyAoZXh0cmFQcmVmaXggPyBleHRyYVByZWZpeCA6IFwiXCIpXG4gICAgKTtcbiAgaWYgKCFkZWNvcmF0b3JzKSByZXR1cm47XG4gIHJldHVybiBPYmplY3Qua2V5cyhkZWNvcmF0b3JzKS5yZWR1Y2UoXG4gICAgKGFjY3VtOiBSZWNvcmQ8c3RyaW5nLCBEZWNvcmF0b3JNZXRhZGF0YVtdPiB8IHVuZGVmaW5lZCwgZGVjb3JhdG9yKSA9PiB7XG4gICAgICBjb25zdCBkZWMgPSBkZWNvcmF0b3JzW2RlY29yYXRvcl0uZmlsdGVyKChkKSA9PiBkLmtleSA9PT0gb3BlcmF0aW9uKTtcbiAgICAgIGlmIChkZWMgJiYgZGVjLmxlbmd0aCkge1xuICAgICAgICBpZiAoIWFjY3VtKSBhY2N1bSA9IHt9O1xuICAgICAgICBhY2N1bVtkZWNvcmF0b3JdID0gZGVjO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjY3VtO1xuICAgIH0sXG4gICAgdW5kZWZpbmVkXG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSBkZWNvcmF0b3JzIGZvciBhbiBvYmplY3QncyBwcm9wZXJ0aWVzIHByZWZpeGVkIGJ5IHtAcGFyYW0gcHJlZml4ZXN9IHJlY3Vyc2l2ZWx5XG4gKiBAcGFyYW0gbW9kZWxcbiAqIEBwYXJhbSBhY2N1bVxuICogQHBhcmFtIHByZWZpeGVzXG4gKlxuICogQGZ1bmN0aW9uIGdldEFsbFByb3BlcnR5RGVjb3JhdG9yc1JlY3Vyc2l2ZVxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzLlJlcG9zaXRvcnlcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEFsbFByb3BlcnR5RGVjb3JhdG9yc1JlY3Vyc2l2ZSA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgTW9kZWw+KFxuICBtb2RlbDogVCxcbiAgYWNjdW06IHsgW2luZGV4ZXI6IHN0cmluZ106IGFueVtdIH0gfCB1bmRlZmluZWQsXG4gIC4uLnByZWZpeGVzOiBzdHJpbmdbXVxuKTogeyBbaW5kZXhlcjogc3RyaW5nXTogYW55W10gfSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGFjY3VtdWxhdG9yID0gYWNjdW0gfHwge307XG4gIGNvbnN0IG1lcmdlRGVjb3JhdG9ycyA9IGZ1bmN0aW9uIChkZWNzOiB7IFtpbmRleGVyOiBzdHJpbmddOiBhbnlbXSB9KSB7XG4gICAgY29uc3QgcHVzaE9yU3F1YXNoID0gKGtleTogc3RyaW5nLCAuLi52YWx1ZXM6IGFueVtdKSA9PiB7XG4gICAgICB2YWx1ZXMuZm9yRWFjaCgodmFsKSA9PiB7XG4gICAgICAgIGxldCBtYXRjaDogYW55O1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIShtYXRjaCA9IGFjY3VtdWxhdG9yW2tleV0uZmluZCgoZSkgPT4gZS5rZXkgPT09IHZhbC5rZXkpKSB8fFxuICAgICAgICAgIG1hdGNoLnByb3BzLm9wZXJhdGlvbiAhPT0gdmFsLnByb3BzLm9wZXJhdGlvblxuICAgICAgICApIHtcbiAgICAgICAgICBhY2N1bXVsYXRvcltrZXldLnB1c2godmFsKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsLmtleSA9PT0gTW9kZWxLZXlzLlRZUEUpIHJldHVybjtcblxuICAgICAgICBjb25zdCB7IGhhbmRsZXJzLCBvcGVyYXRpb24gfSA9IHZhbC5wcm9wcztcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgIW9wZXJhdGlvbiB8fFxuICAgICAgICAgICFvcGVyYXRpb24ubWF0Y2goXG4gICAgICAgICAgICBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgICBgXig6PyR7T3BlcmF0aW9uS2V5cy5PTn18JHtPcGVyYXRpb25LZXlzLkFGVEVSfSkoOj8ke09wZXJhdGlvbktleXMuQ1JFQVRFfXwke09wZXJhdGlvbktleXMuUkVBRH18JHtPcGVyYXRpb25LZXlzLlVQREFURX18JHtPcGVyYXRpb25LZXlzLkRFTEVURX0pJGBcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIGFjY3VtdWxhdG9yW2tleV0ucHVzaCh2YWwpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjY3VtSGFuZGxlcnMgPSBtYXRjaC5wcm9wcy5oYW5kbGVycztcblxuICAgICAgICBPYmplY3QuZW50cmllcyhoYW5kbGVycykuZm9yRWFjaCgoW2NsYXp6LCBoYW5kbGVyRGVmXSkgPT4ge1xuICAgICAgICAgIGlmICghKGNsYXp6IGluIGFjY3VtSGFuZGxlcnMpKSB7XG4gICAgICAgICAgICBhY2N1bUhhbmRsZXJzW2NsYXp6XSA9IGhhbmRsZXJEZWY7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMoaGFuZGxlckRlZiBhcyBvYmplY3QpLmZvckVhY2goXG4gICAgICAgICAgICAoW2hhbmRsZXJQcm9wLCBoYW5kbGVyXSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIShoYW5kbGVyUHJvcCBpbiBhY2N1bUhhbmRsZXJzW2NsYXp6XSkpIHtcbiAgICAgICAgICAgICAgICBhY2N1bUhhbmRsZXJzW2NsYXp6XVtoYW5kbGVyUHJvcF0gPSBoYW5kbGVyO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGhhbmRsZXIgYXMgb2JqZWN0KS5mb3JFYWNoKFxuICAgICAgICAgICAgICAgIChbaGFuZGxlcktleSwgYXJnc09ial0pID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICghKGhhbmRsZXJLZXkgaW4gYWNjdW1IYW5kbGVyc1tjbGF6el1baGFuZGxlclByb3BdKSkge1xuICAgICAgICAgICAgICAgICAgICBhY2N1bUhhbmRsZXJzW2NsYXp6XVtoYW5kbGVyUHJvcF1baGFuZGxlcktleV0gPSBhcmdzT2JqO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgIGBTa2lwcGluZyBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBmb3IgJHtjbGF6en0gdW5kZXIgcHJvcCAke2hhbmRsZXJQcm9wfSBiZWNhdXNlIGhhbmRsZXIgaXMgdGhlIHNhbWVgXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBPYmplY3QuZW50cmllcyhkZWNzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGFjY3VtdWxhdG9yW2tleV0gPSBhY2N1bXVsYXRvcltrZXldIHx8IFtdO1xuICAgICAgcHVzaE9yU3F1YXNoKGtleSwgLi4udmFsdWUpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGRlY3M6IHsgW2luZGV4ZXI6IHN0cmluZ106IGFueVtdIH0gfCB1bmRlZmluZWQgPVxuICAgIFJlZmxlY3Rpb24uZ2V0QWxsUHJvcGVydHlEZWNvcmF0b3JzKG1vZGVsLCAuLi5wcmVmaXhlcyk7XG4gIGlmIChkZWNzKSBtZXJnZURlY29yYXRvcnMoZGVjcyk7XG5cbiAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZihtb2RlbCkgPT09IE9iamVjdC5wcm90b3R5cGUpIHJldHVybiBhY2N1bXVsYXRvcjtcblxuICAvLyBjb25zdCBuYW1lID0gbW9kZWwuY29uc3RydWN0b3IubmFtZTtcbiAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YobW9kZWwpO1xuICBpZiAoIXByb3RvKSByZXR1cm4gYWNjdW11bGF0b3I7XG4gIC8vIGlmIChwcm90by5jb25zdHJ1Y3RvciAmJiBwcm90by5jb25zdHJ1Y3Rvci5uYW1lID09PSBuYW1lKVxuICAvLyAgICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pXG4gIHJldHVybiBnZXRBbGxQcm9wZXJ0eURlY29yYXRvcnNSZWN1cnNpdmUocHJvdG8sIGFjY3VtdWxhdG9yLCAuLi5wcmVmaXhlcyk7XG59O1xuIl19
|
|
@@ -91,17 +91,29 @@ export async function timestampHandler(context, data, key, model) {
|
|
|
91
91
|
*/
|
|
92
92
|
export function timestamp(operation = DBOperations.CREATE_UPDATE, format = DEFAULT_TIMESTAMP_FORMAT) {
|
|
93
93
|
const key = Validation.updateKey(DBKeys.TIMESTAMP);
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
94
|
+
function ts(operation, format) {
|
|
95
|
+
const decorators = [
|
|
96
|
+
date(format, DEFAULT_ERROR_MESSAGES.TIMESTAMP.DATE),
|
|
97
|
+
required(DEFAULT_ERROR_MESSAGES.TIMESTAMP.REQUIRED),
|
|
98
|
+
propMetadata(Validation.key(DBKeys.TIMESTAMP), {
|
|
99
|
+
operation: operation,
|
|
100
|
+
format: format,
|
|
101
|
+
}),
|
|
102
|
+
on(operation, timestampHandler),
|
|
103
|
+
];
|
|
104
|
+
if (operation.indexOf(OperationKeys.UPDATE) !== -1)
|
|
105
|
+
decorators.push(propMetadata(key, {
|
|
106
|
+
message: DEFAULT_ERROR_MESSAGES.TIMESTAMP.INVALID,
|
|
107
|
+
}));
|
|
108
|
+
else
|
|
109
|
+
decorators.push(readonly());
|
|
110
|
+
return apply(...decorators);
|
|
111
|
+
}
|
|
103
112
|
return Decoration.for(key)
|
|
104
|
-
.define(
|
|
113
|
+
.define({
|
|
114
|
+
decorator: ts,
|
|
115
|
+
args: [operation, format],
|
|
116
|
+
})
|
|
105
117
|
.apply();
|
|
106
118
|
}
|
|
107
119
|
/**
|
|
@@ -189,4 +201,4 @@ export async function serializeAfterAll(context, data, key, model) {
|
|
|
189
201
|
export function serialize() {
|
|
190
202
|
return apply(onCreateUpdate(serializeOnCreateUpdate), after(DBOperations.ALL, serializeAfterAll), type([String.name, Object.name]), metadata(Repository.key(DBKeys.SERIALIZE), {}));
|
|
191
203
|
}
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YWxpZGF0aW9uL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUJBQXNCO0FBQ3RCLE9BQU8sRUFDTCxJQUFJLEVBQ0osVUFBVSxFQUVWLFlBQVksRUFDWixRQUFRLEVBQ1IsSUFBSSxFQUNKLFVBQVUsR0FDWCxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsZ0NBQTJCO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSx1QkFBb0I7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUscUNBQWdDO0FBQ3RFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxzQ0FBaUM7QUFFckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtDQUE2QjtBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUNBQXNCO0FBSTNDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUN0QixVQUFrQixzQkFBc0IsQ0FBQyxRQUFRLENBQUMsT0FBTztJQUV6RCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1NBQ3ZCLE1BQU0sQ0FDTCxZQUFZLENBQUMsR0FBRyxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxPQUFPO0tBQ2pCLENBQUMsQ0FDSDtTQUNBLEtBQUssRUFBRSxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCLENBTTNCLE9BQVUsRUFBRSxJQUFPLEVBQUUsR0FB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LENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUNoQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQy9DLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwiLi92YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBkYXRlLFxuICBEZWNvcmF0aW9uLFxuICBNb2RlbCxcbiAgcHJvcE1ldGFkYXRhLFxuICByZXF1aXJlZCxcbiAgdHlwZSxcbiAgVmFsaWRhdGlvbixcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgREJLZXlzLCBERUZBVUxUX1RJTUVTVEFNUF9GT1JNQVQgfSBmcm9tIFwiLi4vbW9kZWwvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VSUk9SX01FU1NBR0VTIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBEQk9wZXJhdGlvbnMsIE9wZXJhdGlvbktleXMgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGFmdGVyLCBvbiwgb25DcmVhdGVVcGRhdGUgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBJUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL0lSZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBTZXJpYWxpemF0aW9uRXJyb3IgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9lcnJvcnNcIjtcbmltcG9ydCB7IGFwcGx5LCBtZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvQ29udGV4dFwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeUZsYWdzIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvdHlwZXNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUHJldmVudHMgYSBwcm9wZXJ0eSBmcm9tIGJlaW5nIG1vZGlmaWVkIGFmdGVyIGluaXRpYWwgY3JlYXRpb24uXG4gKiBAc3VtbWFyeSBNYXJrcyB0aGUgcHJvcGVydHkgYXMgcmVhZG9ubHksIGNhdXNpbmcgdmFsaWRhdGlvbiBlcnJvcnMgaWYgYXR0ZW1wdHMgYXJlIG1hZGUgdG8gbW9kaWZ5IGl0IGR1cmluZyB1cGRhdGVzLlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSAtIFRoZSBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB2YWxpZGF0aW9uIGZhaWxzLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5SRUFET05MWS5JTlZBTElEfVxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgZGVjb3JhdG9yIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gY2xhc3MgcHJvcGVydGllc1xuICogQGZ1bmN0aW9uIHJlYWRvbmx5XG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZG9ubHkoXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuUkVBRE9OTFkuSU5WQUxJRFxuKSB7XG4gIGNvbnN0IGtleSA9IFZhbGlkYXRpb24udXBkYXRlS2V5KERCS2V5cy5SRUFET05MWSk7XG4gIHJldHVybiBEZWNvcmF0aW9uLmZvcihrZXkpXG4gICAgLmRlZmluZShcbiAgICAgIHByb3BNZXRhZGF0YShrZXksIHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIH0pXG4gICAgKVxuICAgIC5hcHBseSgpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBIYW5kbGVyIGZ1bmN0aW9uIHRoYXQgc2V0cyBhIHRpbWVzdGFtcCBwcm9wZXJ0eSB0byB0aGUgY3VycmVudCB0aW1lc3RhbXAuXG4gKiBAc3VtbWFyeSBVcGRhdGVzIGEgbW9kZWwgcHJvcGVydHkgd2l0aCB0aGUgY3VycmVudCB0aW1lc3RhbXAgZnJvbSB0aGUgcmVwb3NpdG9yeSBjb250ZXh0LlxuICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSBleHRlbmRpbmcgTW9kZWxcbiAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHJlcG9zaXRvcnkgdHlwZSBleHRlbmRpbmcgSVJlcG9zaXRvcnlcbiAqIEB0ZW1wbGF0ZSBWIC0gVGhlIGRhdGEgdHlwZSBmb3IgdGhlIG9wZXJhdGlvblxuICogQHRlbXBsYXRlIEYgLSBUaGUgcmVwb3NpdG9yeSBmbGFncyB0eXBlXG4gKiBAdGVtcGxhdGUgQyAtIFRoZSBjb250ZXh0IHR5cGVcbiAqIEBwYXJhbSB7Q30gY29udGV4dCAtIFRoZSByZXBvc2l0b3J5IGNvbnRleHQgY29udGFpbmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXBcbiAqIEBwYXJhbSB7Vn0gZGF0YSAtIFRoZSBkYXRhIGJlaW5nIHByb2Nlc3NlZFxuICogQHBhcmFtIGtleSAtIFRoZSBwcm9wZXJ0eSBrZXkgdG8gdXBkYXRlXG4gKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIGJlaW5nIHVwZGF0ZWRcbiAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRpbWVzdGFtcCBoYXMgYmVlbiBzZXRcbiAqIEBmdW5jdGlvbiB0aW1lc3RhbXBIYW5kbGVyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRpbWVzdGFtcEhhbmRsZXI8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIElSZXBvc2l0b3J5PE0sIEYsIEM+LFxuICBWLFxuICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzID0gUmVwb3NpdG9yeUZsYWdzLFxuICBDIGV4dGVuZHMgQ29udGV4dDxGPiA9IENvbnRleHQ8Rj4sXG4+KHRoaXM6IFIsIGNvbnRleHQ6IEMsIGRhdGE6IFYsIGtleToga2V5b2YgTSwgbW9kZWw6IE0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgKG1vZGVsIGFzIGFueSlba2V5XSA9IGNvbnRleHQudGltZXN0YW1wO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBdXRvbWF0aWNhbGx5IG1hbmFnZXMgdGltZXN0YW1wIHByb3BlcnRpZXMgZm9yIHRyYWNraW5nIGNyZWF0aW9uIGFuZCB1cGRhdGUgdGltZXMuXG4gKiBAc3VtbWFyeSBNYXJrcyB0aGUgcHJvcGVydHkgYXMgYSB0aW1lc3RhbXAsIG1ha2luZyBpdCByZXF1aXJlZCBhbmQgZW5zdXJpbmcgaXQncyBhIHZhbGlkIGRhdGUuIFRoZSBwcm9wZXJ0eSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZCB3aXRoIHRoZSBjdXJyZW50IHRpbWVzdGFtcCBkdXJpbmcgc3BlY2lmaWVkIG9wZXJhdGlvbnMuXG4gKlxuICogRGF0ZSBGb3JtYXQ6XG4gKlxuICogPHByZT5cbiAqICAgICAgVXNpbmcgc2ltaWxhciBmb3JtYXR0aW5nIGFzIE1vbWVudC5qcywgQ2xhc3MgRGF0ZVRpbWVGb3JtYXR0ZXIgKEphdmEpLCBhbmQgQ2xhc3MgU2ltcGxlRGF0ZUZvcm1hdCAoSmF2YSksXG4gKiAgICAgIEkgaW1wbGVtZW50ZWQgYSBjb21wcmVoZW5zaXZlIHNvbHV0aW9uIGZvcm1hdERhdGUoZGF0ZSwgcGF0dGVyblN0cikgd2hlcmUgdGhlIGNvZGUgaXMgZWFzeSB0byByZWFkIGFuZCBtb2RpZnkuXG4gKiAgICAgIFlvdSBjYW4gZGlzcGxheSBkYXRlLCB0aW1lLCBBTS9QTSwgZXRjLlxuICpcbiAqICAgICAgRGF0ZSBhbmQgVGltZSBQYXR0ZXJuc1xuICogICAgICB5eSA9IDItZGlnaXQgeWVhcjsgeXl5eSA9IGZ1bGwgeWVhclxuICogICAgICBNID0gZGlnaXQgbW9udGg7IE1NID0gMi1kaWdpdCBtb250aDsgTU1NID0gc2hvcnQgbW9udGggbmFtZTsgTU1NTSA9IGZ1bGwgbW9udGggbmFtZVxuICogICAgICBFRUVFID0gZnVsbCB3ZWVrZGF5IG5hbWU7IEVFRSA9IHNob3J0IHdlZWtkYXkgbmFtZVxuICogICAgICBkID0gZGlnaXQgZGF5OyBkZCA9IDItZGlnaXQgZGF5XG4gKiAgICAgIGggPSBob3VycyBhbS9wbTsgaGggPSAyLWRpZ2l0IGhvdXJzIGFtL3BtOyBIID0gaG91cnM7IEhIID0gMi1kaWdpdCBob3Vyc1xuICogICAgICBtID0gbWludXRlczsgbW0gPSAyLWRpZ2l0IG1pbnV0ZXM7IGFhYSA9IEFNL1BNXG4gKiAgICAgIHMgPSBzZWNvbmRzOyBzcyA9IDItZGlnaXQgc2Vjb25kc1xuICogICAgICBTID0gbWlsaXNlY29uZHNcbiAqIDwvcHJlPlxuICpcbiAqIEBwYXJhbSB7T3BlcmF0aW9uS2V5c1tdfSBvcGVyYXRpb24gLSBUaGUgb3BlcmF0aW9ucyB0byBhY3Qgb24uIERlZmF1bHRzIHRvIHtAbGluayBEQk9wZXJhdGlvbnMuQ1JFQVRFX1VQREFURX1cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZm9ybWF0XSAtIFRoZSB0aW1lc3RhbXAgZm9ybWF0LiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9USU1FU1RBTVBfRk9STUFUfVxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgZGVjb3JhdG9yIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gY2xhc3MgcHJvcGVydGllc1xuICogQGZ1bmN0aW9uIHRpbWVzdGFtcFxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQyBhcyBDbGllbnRcbiAqICAgcGFydGljaXBhbnQgTSBhcyBNb2RlbFxuICogICBwYXJ0aWNpcGFudCBUIGFzIFRpbWVzdGFtcERlY29yYXRvclxuICogICBwYXJ0aWNpcGFudCBWIGFzIFZhbGlkYXRvclxuICpcbiAqICAgQy0+Pk06IENyZWF0ZS9VcGRhdGUgbW9kZWxcbiAqICAgTS0+PlQ6IFByb2Nlc3MgdGltZXN0YW1wIHByb3BlcnR5XG4gKiAgIFQtPj5NOiBBcHBseSByZXF1aXJlZCB2YWxpZGF0aW9uXG4gKiAgIFQtPj5NOiBBcHBseSBkYXRlIGZvcm1hdCB2YWxpZGF0aW9uXG4gKlxuICogICBhbHQgVXBkYXRlIG9wZXJhdGlvblxuICogICAgIFQtPj5WOiBSZWdpc3RlciB0aW1lc3RhbXAgdmFsaWRhdG9yXG4gKiAgICAgVi0+Pk06IFZhbGlkYXRlIHRpbWVzdGFtcCBpcyBuZXdlclxuICogICBlbmRcbiAqXG4gKiAgIFQtPj5NOiBTZXQgY3VycmVudCB0aW1lc3RhbXBcbiAqICAgTS0+PkM6IFJldHVybiB1cGRhdGVkIG1vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aW1lc3RhbXAoXG4gIG9wZXJhdGlvbjogT3BlcmF0aW9uS2V5c1tdID0gREJPcGVyYXRpb25zLkNSRUFURV9VUERBVEUgYXMgdW5rbm93biBhcyBPcGVyYXRpb25LZXlzW10sXG4gIGZvcm1hdDogc3RyaW5nID0gREVGQVVMVF9USU1FU1RBTVBfRk9STUFUXG4pIHtcbiAgY29uc3Qga2V5ID0gVmFsaWRhdGlvbi51cGRhdGVLZXkoREJLZXlzLlRJTUVTVEFNUCk7XG5cbiAgY29uc3QgZGVjb3JhdG9yczogYW55W10gPSBbXG4gICAgZGF0ZShmb3JtYXQsIERFRkFVTFRfRVJST1JfTUVTU0FHRVMuVElNRVNUQU1QLkRBVEUpLFxuICAgIHJlcXVpcmVkKERFRkFVTFRfRVJST1JfTUVTU0FHRVMuVElNRVNUQU1QLlJFUVVJUkVEKSxcbiAgICBvbihvcGVyYXRpb24sIHRpbWVzdGFtcEhhbmRsZXIpLFxuICBdO1xuXG4gIGlmIChvcGVyYXRpb24uaW5kZXhPZihPcGVyYXRpb25LZXlzLlVQREFURSkgIT09IC0xKVxuICAgIGRlY29yYXRvcnMucHVzaChcbiAgICAgIHByb3BNZXRhZGF0YShWYWxpZGF0aW9uLnVwZGF0ZUtleShEQktleXMuVElNRVNUQU1QKSwge1xuICAgICAgICBtZXNzYWdlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlRJTUVTVEFNUC5JTlZBTElELFxuICAgICAgfSlcbiAgICApO1xuICByZXR1cm4gRGVjb3JhdGlvbi5mb3Ioa2V5KVxuICAgIC5kZWZpbmUoLi4uZGVjb3JhdG9ycylcbiAgICAuYXBwbHkoKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSGFuZGxlciBmdW5jdGlvbiB0aGF0IHNlcmlhbGl6ZXMgYSBwcm9wZXJ0eSB0byBKU09OIHN0cmluZyBkdXJpbmcgY3JlYXRlIGFuZCB1cGRhdGUgb3BlcmF0aW9ucy5cbiAqIEBzdW1tYXJ5IENvbnZlcnRzIGEgY29tcGxleCBvYmplY3QgcHJvcGVydHkgdG8gYSBKU09OIHN0cmluZyBiZWZvcmUgc3RvcmluZyBpdCBpbiB0aGUgZGF0YWJhc2UuXG4gKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHRlbXBsYXRlIFIgLSBUaGUgcmVwb3NpdG9yeSB0eXBlIGV4dGVuZGluZyBJUmVwb3NpdG9yeVxuICogQHRlbXBsYXRlIFYgLSBUaGUgZGF0YSB0eXBlIGZvciB0aGUgb3BlcmF0aW9uXG4gKiBAdGVtcGxhdGUgRiAtIFRoZSByZXBvc2l0b3J5IGZsYWdzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBDIC0gVGhlIGNvbnRleHQgdHlwZVxuICogQHBhcmFtIHtDfSBjb250ZXh0IC0gVGhlIHJlcG9zaXRvcnkgY29udGV4dFxuICogQHBhcmFtIHtWfSBkYXRhIC0gVGhlIGRhdGEgYmVpbmcgcHJvY2Vzc2VkXG4gKiBAcGFyYW0ga2V5IC0gVGhlIHByb3BlcnR5IGtleSB0byBzZXJpYWxpemVcbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2UgYmVpbmcgcHJvY2Vzc2VkXG4gKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBwcm9wZXJ0eSBoYXMgYmVlbiBzZXJpYWxpemVkXG4gKiBAZnVuY3Rpb24gc2VyaWFsaXplT25DcmVhdGVVcGRhdGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9yc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VyaWFsaXplT25DcmVhdGVVcGRhdGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIElSZXBvc2l0b3J5PE0sIEYsIEM+LFxuICBWLFxuICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzID0gUmVwb3NpdG9yeUZsYWdzLFxuICBDIGV4dGVuZHMgQ29udGV4dDxGPiA9IENvbnRleHQ8Rj4sXG4+KHRoaXM6IFIsIGNvbnRleHQ6IEMsIGRhdGE6IFYsIGtleToga2V5b2YgTSwgbW9kZWw6IE0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFtb2RlbFtrZXldKSByZXR1cm47XG4gIHRyeSB7XG4gICAgbW9kZWxba2V5XSA9IEpTT04uc3RyaW5naWZ5KG1vZGVsW2tleV0pIGFzIE1ba2V5b2YgTV07XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihcbiAgICAgIGBGYWlsZWQgdG8gc2VyaWFsaXplICR7a2V5LnRvU3RyaW5nKCl9IHByb3BlcnR5IG9mIG1vZGVsICR7bW9kZWwuY29uc3RydWN0b3IubmFtZX06IGVgXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBIYW5kbGVyIGZ1bmN0aW9uIHRoYXQgZGVzZXJpYWxpemVzIGEgcHJvcGVydHkgZnJvbSBKU09OIHN0cmluZyBhZnRlciBkYXRhYmFzZSBvcGVyYXRpb25zLlxuICogQHN1bW1hcnkgQ29udmVydHMgYSBKU09OIHN0cmluZyBwcm9wZXJ0eSBiYWNrIHRvIGl0cyBvcmlnaW5hbCBjb21wbGV4IG9iamVjdCBmb3JtIGFmdGVyIHJldHJpZXZpbmcgaXQgZnJvbSB0aGUgZGF0YWJhc2UuXG4gKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHRlbXBsYXRlIFIgLSBUaGUgcmVwb3NpdG9yeSB0eXBlIGV4dGVuZGluZyBJUmVwb3NpdG9yeVxuICogQHRlbXBsYXRlIFYgLSBUaGUgZGF0YSB0eXBlIGZvciB0aGUgb3BlcmF0aW9uXG4gKiBAdGVtcGxhdGUgRiAtIFRoZSByZXBvc2l0b3J5IGZsYWdzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBDIC0gVGhlIGNvbnRleHQgdHlwZVxuICogQHBhcmFtIHtDfSBjb250ZXh0IC0gVGhlIHJlcG9zaXRvcnkgY29udGV4dFxuICogQHBhcmFtIHtWfSBkYXRhIC0gVGhlIGRhdGEgYmVpbmcgcHJvY2Vzc2VkXG4gKiBAcGFyYW0ga2V5IC0gVGhlIHByb3BlcnR5IGtleSB0byBkZXNlcmlhbGl6ZVxuICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZSBiZWluZyBwcm9jZXNzZWRcbiAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHByb3BlcnR5IGhhcyBiZWVuIGRlc2VyaWFsaXplZFxuICogQGZ1bmN0aW9uIHNlcmlhbGl6ZUFmdGVyQWxsXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlcmlhbGl6ZUFmdGVyQWxsPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBJUmVwb3NpdG9yeTxNLCBGLCBDPixcbiAgVixcbiAgRiBleHRlbmRzIFJlcG9zaXRvcnlGbGFncyA9IFJlcG9zaXRvcnlGbGFncyxcbiAgQyBleHRlbmRzIENvbnRleHQ8Rj4gPSBDb250ZXh0PEY+LFxuPih0aGlzOiBSLCBjb250ZXh0OiBDLCBkYXRhOiBWLCBrZXk6IGtleW9mIE0sIG1vZGVsOiBNKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghbW9kZWxba2V5XSkgcmV0dXJuO1xuICBpZiAodHlwZW9mIG1vZGVsW2tleV0gIT09IFwic3RyaW5nXCIpIHJldHVybjtcblxuICB0cnkge1xuICAgIG1vZGVsW2tleV0gPSBKU09OLnBhcnNlKG1vZGVsW2tleV0pO1xuICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihcbiAgICAgIGBGYWlsZWQgdG8gZGVzZXJpYWxpemUgJHtrZXkudG9TdHJpbmcoKX0gcHJvcGVydHkgb2YgbW9kZWwgJHttb2RlbC5jb25zdHJ1Y3Rvci5uYW1lfTogJHtlfWBcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVuYWJsZXMgYXV0b21hdGljIEpTT04gc2VyaWFsaXphdGlvbiBhbmQgZGVzZXJpYWxpemF0aW9uIGZvciBjb21wbGV4IG9iamVjdCBwcm9wZXJ0aWVzLlxuICogQHN1bW1hcnkgRGVjb3JhdG9yIHRoYXQgYXV0b21hdGljYWxseSBjb252ZXJ0cyBjb21wbGV4IG9iamVjdHMgdG8gSlNPTiBzdHJpbmdzIGJlZm9yZSBzdG9yaW5nIGluIHRoZSBkYXRhYmFzZSBhbmQgYmFjayB0byBvYmplY3RzIHdoZW4gcmV0cmlldmluZyB0aGVtLlxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgZGVjb3JhdG9yIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gY2xhc3MgcHJvcGVydGllc1xuICogQGZ1bmN0aW9uIHNlcmlhbGl6ZVxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQyBhcyBDbGllbnRcbiAqICAgcGFydGljaXBhbnQgTSBhcyBNb2RlbFxuICogICBwYXJ0aWNpcGFudCBTIGFzIFNlcmlhbGl6ZURlY29yYXRvclxuICogICBwYXJ0aWNpcGFudCBEQiBhcyBEYXRhYmFzZVxuICpcbiAqICAgTm90ZSBvdmVyIEMsREI6IENyZWF0ZS9VcGRhdGUgRmxvd1xuICogICBDLT4+TTogU2V0IGNvbXBsZXggb2JqZWN0IHByb3BlcnR5XG4gKiAgIE0tPj5TOiBQcm9jZXNzIHByb3BlcnR5IChjcmVhdGUvdXBkYXRlKVxuICogICBTLT4+TTogQ29udmVydCB0byBKU09OIHN0cmluZ1xuICogICBNLT4+REI6IFN0b3JlIHNlcmlhbGl6ZWQgZGF0YVxuICpcbiAqICAgTm90ZSBvdmVyIEMsREI6IFJldHJpZXZhbCBGbG93XG4gKiAgIEMtPj5NOiBSZXF1ZXN0IG1vZGVsXG4gKiAgIE0tPj5EQjogRmV0Y2ggZGF0YVxuICogICBEQi0+Pk06IFJldHVybiB3aXRoIHNlcmlhbGl6ZWQgcHJvcGVydHlcbiAqICAgTS0+PlM6IFByb2Nlc3MgcHJvcGVydHkgKGFmdGVyIGFsbCBvcHMpXG4gKiAgIFMtPj5NOiBQYXJzZSBKU09OIGJhY2sgdG8gb2JqZWN0XG4gKiAgIE0tPj5DOiBSZXR1cm4gbW9kZWwgd2l0aCBkZXNlcmlhbGl6ZWQgcHJvcGVydHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSgpIHtcbiAgcmV0dXJuIGFwcGx5KFxuICAgIG9uQ3JlYXRlVXBkYXRlKHNlcmlhbGl6ZU9uQ3JlYXRlVXBkYXRlKSxcbiAgICBhZnRlcihEQk9wZXJhdGlvbnMuQUxMLCBzZXJpYWxpemVBZnRlckFsbCksXG4gICAgdHlwZShbU3RyaW5nLm5hbWUsIE9iamVjdC5uYW1lXSksXG4gICAgbWV0YWRhdGEoUmVwb3NpdG9yeS5rZXkoREJLZXlzLlNFUklBTElaRSksIHt9KVxuICApO1xufVxuIl19
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YWxpZGF0aW9uL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUJBQXNCO0FBQ3RCLE9BQU8sRUFDTCxJQUFJLEVBQ0osVUFBVSxFQUdWLFlBQVksRUFDWixRQUFRLEVBQ1IsSUFBSSxFQUNKLFVBQVUsR0FDWCxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsZ0NBQTJCO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSx1QkFBb0I7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUscUNBQWdDO0FBQ3RFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxzQ0FBaUM7QUFFckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtDQUE2QjtBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUNBQXNCO0FBSTNDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUN0QixVQUFrQixzQkFBc0IsQ0FBQyxRQUFRLENBQUMsT0FBTztJQUV6RCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1NBQ3ZCLE1BQU0sQ0FDTCxZQUFZLENBQUMsR0FBRyxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxPQUFPO0tBQ2pCLENBQUMsQ0FDSDtTQUNBLEtBQUssRUFBRSxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCLENBTTNCLE9BQVUsRUFBRSxJQUFPLEVBQUUsR0FB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R0FBRyxDQUFDLFFBQVEsRUFBRSxzQkFBc0IsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQzVGLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUNILE1BQU0sVUFBVSxTQUFTO0lBQ3ZCLE9BQU8sS0FBSyxDQUNWLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxFQUN2QyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxFQUMxQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUNoQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQy9DLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwiLi92YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBkYXRlLFxuICBEZWNvcmF0aW9uLFxuICBNb2RlbCxcbiAgcHJvcCxcbiAgcHJvcE1ldGFkYXRhLFxuICByZXF1aXJlZCxcbiAgdHlwZSxcbiAgVmFsaWRhdGlvbixcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgREJLZXlzLCBERUZBVUxUX1RJTUVTVEFNUF9GT1JNQVQgfSBmcm9tIFwiLi4vbW9kZWwvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VSUk9SX01FU1NBR0VTIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBEQk9wZXJhdGlvbnMsIE9wZXJhdGlvbktleXMgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGFmdGVyLCBvbiwgb25DcmVhdGVVcGRhdGUgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBJUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL0lSZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBTZXJpYWxpemF0aW9uRXJyb3IgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9lcnJvcnNcIjtcbmltcG9ydCB7IGFwcGx5LCBtZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvQ29udGV4dFwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeUZsYWdzIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvdHlwZXNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUHJldmVudHMgYSBwcm9wZXJ0eSBmcm9tIGJlaW5nIG1vZGlmaWVkIGFmdGVyIGluaXRpYWwgY3JlYXRpb24uXG4gKiBAc3VtbWFyeSBNYXJrcyB0aGUgcHJvcGVydHkgYXMgcmVhZG9ubHksIGNhdXNpbmcgdmFsaWRhdGlvbiBlcnJvcnMgaWYgYXR0ZW1wdHMgYXJlIG1hZGUgdG8gbW9kaWZ5IGl0IGR1cmluZyB1cGRhdGVzLlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSAtIFRoZSBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB2YWxpZGF0aW9uIGZhaWxzLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5SRUFET05MWS5JTlZBTElEfVxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgZGVjb3JhdG9yIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gY2xhc3MgcHJvcGVydGllc1xuICogQGZ1bmN0aW9uIHJlYWRvbmx5XG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZG9ubHkoXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuUkVBRE9OTFkuSU5WQUxJRFxuKSB7XG4gIGNvbnN0IGtleSA9IFZhbGlkYXRpb24udXBkYXRlS2V5KERCS2V5cy5SRUFET05MWSk7XG4gIHJldHVybiBEZWNvcmF0aW9uLmZvcihrZXkpXG4gICAgLmRlZmluZShcbiAgICAgIHByb3BNZXRhZGF0YShrZXksIHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIH0pXG4gICAgKVxuICAgIC5hcHBseSgpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBIYW5kbGVyIGZ1bmN0aW9uIHRoYXQgc2V0cyBhIHRpbWVzdGFtcCBwcm9wZXJ0eSB0byB0aGUgY3VycmVudCB0aW1lc3RhbXAuXG4gKiBAc3VtbWFyeSBVcGRhdGVzIGEgbW9kZWwgcHJvcGVydHkgd2l0aCB0aGUgY3VycmVudCB0aW1lc3RhbXAgZnJvbSB0aGUgcmVwb3NpdG9yeSBjb250ZXh0LlxuICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSBleHRlbmRpbmcgTW9kZWxcbiAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHJlcG9zaXRvcnkgdHlwZSBleHRlbmRpbmcgSVJlcG9zaXRvcnlcbiAqIEB0ZW1wbGF0ZSBWIC0gVGhlIGRhdGEgdHlwZSBmb3IgdGhlIG9wZXJhdGlvblxuICogQHRlbXBsYXRlIEYgLSBUaGUgcmVwb3NpdG9yeSBmbGFncyB0eXBlXG4gKiBAdGVtcGxhdGUgQyAtIFRoZSBjb250ZXh0IHR5cGVcbiAqIEBwYXJhbSB7Q30gY29udGV4dCAtIFRoZSByZXBvc2l0b3J5IGNvbnRleHQgY29udGFpbmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXBcbiAqIEBwYXJhbSB7Vn0gZGF0YSAtIFRoZSBkYXRhIGJlaW5nIHByb2Nlc3NlZFxuICogQHBhcmFtIGtleSAtIFRoZSBwcm9wZXJ0eSBrZXkgdG8gdXBkYXRlXG4gKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIGJlaW5nIHVwZGF0ZWRcbiAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRpbWVzdGFtcCBoYXMgYmVlbiBzZXRcbiAqIEBmdW5jdGlvbiB0aW1lc3RhbXBIYW5kbGVyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRpbWVzdGFtcEhhbmRsZXI8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIElSZXBvc2l0b3J5PE0sIEYsIEM+LFxuICBWLFxuICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzID0gUmVwb3NpdG9yeUZsYWdzLFxuICBDIGV4dGVuZHMgQ29udGV4dDxGPiA9IENvbnRleHQ8Rj4sXG4+KHRoaXM6IFIsIGNvbnRleHQ6IEMsIGRhdGE6IFYsIGtleToga2V5b2YgTSwgbW9kZWw6IE0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgKG1vZGVsIGFzIGFueSlba2V5XSA9IGNvbnRleHQudGltZXN0YW1wO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBdXRvbWF0aWNhbGx5IG1hbmFnZXMgdGltZXN0YW1wIHByb3BlcnRpZXMgZm9yIHRyYWNraW5nIGNyZWF0aW9uIGFuZCB1cGRhdGUgdGltZXMuXG4gKiBAc3VtbWFyeSBNYXJrcyB0aGUgcHJvcGVydHkgYXMgYSB0aW1lc3RhbXAsIG1ha2luZyBpdCByZXF1aXJlZCBhbmQgZW5zdXJpbmcgaXQncyBhIHZhbGlkIGRhdGUuIFRoZSBwcm9wZXJ0eSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZCB3aXRoIHRoZSBjdXJyZW50IHRpbWVzdGFtcCBkdXJpbmcgc3BlY2lmaWVkIG9wZXJhdGlvbnMuXG4gKlxuICogRGF0ZSBGb3JtYXQ6XG4gKlxuICogPHByZT5cbiAqICAgICAgVXNpbmcgc2ltaWxhciBmb3JtYXR0aW5nIGFzIE1vbWVudC5qcywgQ2xhc3MgRGF0ZVRpbWVGb3JtYXR0ZXIgKEphdmEpLCBhbmQgQ2xhc3MgU2ltcGxlRGF0ZUZvcm1hdCAoSmF2YSksXG4gKiAgICAgIEkgaW1wbGVtZW50ZWQgYSBjb21wcmVoZW5zaXZlIHNvbHV0aW9uIGZvcm1hdERhdGUoZGF0ZSwgcGF0dGVyblN0cikgd2hlcmUgdGhlIGNvZGUgaXMgZWFzeSB0byByZWFkIGFuZCBtb2RpZnkuXG4gKiAgICAgIFlvdSBjYW4gZGlzcGxheSBkYXRlLCB0aW1lLCBBTS9QTSwgZXRjLlxuICpcbiAqICAgICAgRGF0ZSBhbmQgVGltZSBQYXR0ZXJuc1xuICogICAgICB5eSA9IDItZGlnaXQgeWVhcjsgeXl5eSA9IGZ1bGwgeWVhclxuICogICAgICBNID0gZGlnaXQgbW9udGg7IE1NID0gMi1kaWdpdCBtb250aDsgTU1NID0gc2hvcnQgbW9udGggbmFtZTsgTU1NTSA9IGZ1bGwgbW9udGggbmFtZVxuICogICAgICBFRUVFID0gZnVsbCB3ZWVrZGF5IG5hbWU7IEVFRSA9IHNob3J0IHdlZWtkYXkgbmFtZVxuICogICAgICBkID0gZGlnaXQgZGF5OyBkZCA9IDItZGlnaXQgZGF5XG4gKiAgICAgIGggPSBob3VycyBhbS9wbTsgaGggPSAyLWRpZ2l0IGhvdXJzIGFtL3BtOyBIID0gaG91cnM7IEhIID0gMi1kaWdpdCBob3Vyc1xuICogICAgICBtID0gbWludXRlczsgbW0gPSAyLWRpZ2l0IG1pbnV0ZXM7IGFhYSA9IEFNL1BNXG4gKiAgICAgIHMgPSBzZWNvbmRzOyBzcyA9IDItZGlnaXQgc2Vjb25kc1xuICogICAgICBTID0gbWlsaXNlY29uZHNcbiAqIDwvcHJlPlxuICpcbiAqIEBwYXJhbSB7T3BlcmF0aW9uS2V5c1tdfSBvcGVyYXRpb24gLSBUaGUgb3BlcmF0aW9ucyB0byBhY3Qgb24uIERlZmF1bHRzIHRvIHtAbGluayBEQk9wZXJhdGlvbnMuQ1JFQVRFX1VQREFURX1cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZm9ybWF0XSAtIFRoZSB0aW1lc3RhbXAgZm9ybWF0LiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9USU1FU1RBTVBfRk9STUFUfVxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgZGVjb3JhdG9yIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gY2xhc3MgcHJvcGVydGllc1xuICogQGZ1bmN0aW9uIHRpbWVzdGFtcFxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQyBhcyBDbGllbnRcbiAqICAgcGFydGljaXBhbnQgTSBhcyBNb2RlbFxuICogICBwYXJ0aWNpcGFudCBUIGFzIFRpbWVzdGFtcERlY29yYXRvclxuICogICBwYXJ0aWNpcGFudCBWIGFzIFZhbGlkYXRvclxuICpcbiAqICAgQy0+Pk06IENyZWF0ZS9VcGRhdGUgbW9kZWxcbiAqICAgTS0+PlQ6IFByb2Nlc3MgdGltZXN0YW1wIHByb3BlcnR5XG4gKiAgIFQtPj5NOiBBcHBseSByZXF1aXJlZCB2YWxpZGF0aW9uXG4gKiAgIFQtPj5NOiBBcHBseSBkYXRlIGZvcm1hdCB2YWxpZGF0aW9uXG4gKlxuICogICBhbHQgVXBkYXRlIG9wZXJhdGlvblxuICogICAgIFQtPj5WOiBSZWdpc3RlciB0aW1lc3RhbXAgdmFsaWRhdG9yXG4gKiAgICAgVi0+Pk06IFZhbGlkYXRlIHRpbWVzdGFtcCBpcyBuZXdlclxuICogICBlbmRcbiAqXG4gKiAgIFQtPj5NOiBTZXQgY3VycmVudCB0aW1lc3RhbXBcbiAqICAgTS0+PkM6IFJldHVybiB1cGRhdGVkIG1vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aW1lc3RhbXAoXG4gIG9wZXJhdGlvbjogT3BlcmF0aW9uS2V5c1tdID0gREJPcGVyYXRpb25zLkNSRUFURV9VUERBVEUgYXMgdW5rbm93biBhcyBPcGVyYXRpb25LZXlzW10sXG4gIGZvcm1hdDogc3RyaW5nID0gREVGQVVMVF9USU1FU1RBTVBfRk9STUFUXG4pIHtcbiAgY29uc3Qga2V5ID0gVmFsaWRhdGlvbi51cGRhdGVLZXkoREJLZXlzLlRJTUVTVEFNUCk7XG5cbiAgZnVuY3Rpb24gdHMob3BlcmF0aW9uOiBPcGVyYXRpb25LZXlzW10sIGZvcm1hdDogc3RyaW5nKSB7XG4gICAgY29uc3QgZGVjb3JhdG9yczogYW55W10gPSBbXG4gICAgICBkYXRlKGZvcm1hdCwgREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5USU1FU1RBTVAuREFURSksXG4gICAgICByZXF1aXJlZChERUZBVUxUX0VSUk9SX01FU1NBR0VTLlRJTUVTVEFNUC5SRVFVSVJFRCksXG4gICAgICBwcm9wTWV0YWRhdGEoVmFsaWRhdGlvbi5rZXkoREJLZXlzLlRJTUVTVEFNUCksIHtcbiAgICAgICAgb3BlcmF0aW9uOiBvcGVyYXRpb24sXG4gICAgICAgIGZvcm1hdDogZm9ybWF0LFxuICAgICAgfSksXG4gICAgICBvbihvcGVyYXRpb24sIHRpbWVzdGFtcEhhbmRsZXIpLFxuICAgIF07XG4gICAgaWYgKG9wZXJhdGlvbi5pbmRleE9mKE9wZXJhdGlvbktleXMuVVBEQVRFKSAhPT0gLTEpXG4gICAgICBkZWNvcmF0b3JzLnB1c2goXG4gICAgICAgIHByb3BNZXRhZGF0YShrZXksIHtcbiAgICAgICAgICBtZXNzYWdlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlRJTUVTVEFNUC5JTlZBTElELFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICBlbHNlIGRlY29yYXRvcnMucHVzaChyZWFkb25seSgpKTtcbiAgICByZXR1cm4gYXBwbHkoLi4uZGVjb3JhdG9ycyk7XG4gIH1cbiAgcmV0dXJuIERlY29yYXRpb24uZm9yKGtleSlcbiAgICAuZGVmaW5lKHtcbiAgICAgIGRlY29yYXRvcjogdHMsXG4gICAgICBhcmdzOiBbb3BlcmF0aW9uLCBmb3JtYXRdLFxuICAgIH0pXG4gICAgLmFwcGx5KCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCBzZXJpYWxpemVzIGEgcHJvcGVydHkgdG8gSlNPTiBzdHJpbmcgZHVyaW5nIGNyZWF0ZSBhbmQgdXBkYXRlIG9wZXJhdGlvbnMuXG4gKiBAc3VtbWFyeSBDb252ZXJ0cyBhIGNvbXBsZXggb2JqZWN0IHByb3BlcnR5IHRvIGEgSlNPTiBzdHJpbmcgYmVmb3JlIHN0b3JpbmcgaXQgaW4gdGhlIGRhdGFiYXNlLlxuICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSBleHRlbmRpbmcgTW9kZWxcbiAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHJlcG9zaXRvcnkgdHlwZSBleHRlbmRpbmcgSVJlcG9zaXRvcnlcbiAqIEB0ZW1wbGF0ZSBWIC0gVGhlIGRhdGEgdHlwZSBmb3IgdGhlIG9wZXJhdGlvblxuICogQHRlbXBsYXRlIEYgLSBUaGUgcmVwb3NpdG9yeSBmbGFncyB0eXBlXG4gKiBAdGVtcGxhdGUgQyAtIFRoZSBjb250ZXh0IHR5cGVcbiAqIEBwYXJhbSB7Q30gY29udGV4dCAtIFRoZSByZXBvc2l0b3J5IGNvbnRleHRcbiAqIEBwYXJhbSB7Vn0gZGF0YSAtIFRoZSBkYXRhIGJlaW5nIHByb2Nlc3NlZFxuICogQHBhcmFtIGtleSAtIFRoZSBwcm9wZXJ0eSBrZXkgdG8gc2VyaWFsaXplXG4gKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIGJlaW5nIHByb2Nlc3NlZFxuICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcHJvcGVydHkgaGFzIGJlZW4gc2VyaWFsaXplZFxuICogQGZ1bmN0aW9uIHNlcmlhbGl6ZU9uQ3JlYXRlVXBkYXRlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlcmlhbGl6ZU9uQ3JlYXRlVXBkYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBJUmVwb3NpdG9yeTxNLCBGLCBDPixcbiAgVixcbiAgRiBleHRlbmRzIFJlcG9zaXRvcnlGbGFncyA9IFJlcG9zaXRvcnlGbGFncyxcbiAgQyBleHRlbmRzIENvbnRleHQ8Rj4gPSBDb250ZXh0PEY+LFxuPih0aGlzOiBSLCBjb250ZXh0OiBDLCBkYXRhOiBWLCBrZXk6IGtleW9mIE0sIG1vZGVsOiBNKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghbW9kZWxba2V5XSkgcmV0dXJuO1xuICB0cnkge1xuICAgIG1vZGVsW2tleV0gPSBKU09OLnN0cmluZ2lmeShtb2RlbFtrZXldKSBhcyBNW2tleW9mIE1dO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXJyb3IoXG4gICAgICBgRmFpbGVkIHRvIHNlcmlhbGl6ZSAke2tleS50b1N0cmluZygpfSBwcm9wZXJ0eSBvZiBtb2RlbCAke21vZGVsLmNvbnN0cnVjdG9yLm5hbWV9OiBlYFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSGFuZGxlciBmdW5jdGlvbiB0aGF0IGRlc2VyaWFsaXplcyBhIHByb3BlcnR5IGZyb20gSlNPTiBzdHJpbmcgYWZ0ZXIgZGF0YWJhc2Ugb3BlcmF0aW9ucy5cbiAqIEBzdW1tYXJ5IENvbnZlcnRzIGEgSlNPTiBzdHJpbmcgcHJvcGVydHkgYmFjayB0byBpdHMgb3JpZ2luYWwgY29tcGxleCBvYmplY3QgZm9ybSBhZnRlciByZXRyaWV2aW5nIGl0IGZyb20gdGhlIGRhdGFiYXNlLlxuICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSBleHRlbmRpbmcgTW9kZWxcbiAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHJlcG9zaXRvcnkgdHlwZSBleHRlbmRpbmcgSVJlcG9zaXRvcnlcbiAqIEB0ZW1wbGF0ZSBWIC0gVGhlIGRhdGEgdHlwZSBmb3IgdGhlIG9wZXJhdGlvblxuICogQHRlbXBsYXRlIEYgLSBUaGUgcmVwb3NpdG9yeSBmbGFncyB0eXBlXG4gKiBAdGVtcGxhdGUgQyAtIFRoZSBjb250ZXh0IHR5cGVcbiAqIEBwYXJhbSB7Q30gY29udGV4dCAtIFRoZSByZXBvc2l0b3J5IGNvbnRleHRcbiAqIEBwYXJhbSB7Vn0gZGF0YSAtIFRoZSBkYXRhIGJlaW5nIHByb2Nlc3NlZFxuICogQHBhcmFtIGtleSAtIFRoZSBwcm9wZXJ0eSBrZXkgdG8gZGVzZXJpYWxpemVcbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2UgYmVpbmcgcHJvY2Vzc2VkXG4gKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBwcm9wZXJ0eSBoYXMgYmVlbiBkZXNlcmlhbGl6ZWRcbiAqIEBmdW5jdGlvbiBzZXJpYWxpemVBZnRlckFsbFxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXJpYWxpemVBZnRlckFsbDxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgSVJlcG9zaXRvcnk8TSwgRiwgQz4sXG4gIFYsXG4gIEYgZXh0ZW5kcyBSZXBvc2l0b3J5RmxhZ3MgPSBSZXBvc2l0b3J5RmxhZ3MsXG4gIEMgZXh0ZW5kcyBDb250ZXh0PEY+ID0gQ29udGV4dDxGPixcbj4odGhpczogUiwgY29udGV4dDogQywgZGF0YTogViwga2V5OiBrZXlvZiBNLCBtb2RlbDogTSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIW1vZGVsW2tleV0pIHJldHVybjtcbiAgaWYgKHR5cGVvZiBtb2RlbFtrZXldICE9PSBcInN0cmluZ1wiKSByZXR1cm47XG5cbiAgdHJ5IHtcbiAgICBtb2RlbFtrZXldID0gSlNPTi5wYXJzZShtb2RlbFtrZXldKTtcbiAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXJyb3IoXG4gICAgICBgRmFpbGVkIHRvIGRlc2VyaWFsaXplICR7a2V5LnRvU3RyaW5nKCl9IHByb3BlcnR5IG9mIG1vZGVsICR7bW9kZWwuY29uc3RydWN0b3IubmFtZX06ICR7ZX1gXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFbmFibGVzIGF1dG9tYXRpYyBKU09OIHNlcmlhbGl6YXRpb24gYW5kIGRlc2VyaWFsaXphdGlvbiBmb3IgY29tcGxleCBvYmplY3QgcHJvcGVydGllcy5cbiAqIEBzdW1tYXJ5IERlY29yYXRvciB0aGF0IGF1dG9tYXRpY2FsbHkgY29udmVydHMgY29tcGxleCBvYmplY3RzIHRvIEpTT04gc3RyaW5ncyBiZWZvcmUgc3RvcmluZyBpbiB0aGUgZGF0YWJhc2UgYW5kIGJhY2sgdG8gb2JqZWN0cyB3aGVuIHJldHJpZXZpbmcgdGhlbS5cbiAqIEByZXR1cm4ge1Byb3BlcnR5RGVjb3JhdG9yfSBBIGRlY29yYXRvciBmdW5jdGlvbiB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGNsYXNzIHByb3BlcnRpZXNcbiAqIEBmdW5jdGlvbiBzZXJpYWxpemVcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IEMgYXMgQ2xpZW50XG4gKiAgIHBhcnRpY2lwYW50IE0gYXMgTW9kZWxcbiAqICAgcGFydGljaXBhbnQgUyBhcyBTZXJpYWxpemVEZWNvcmF0b3JcbiAqICAgcGFydGljaXBhbnQgREIgYXMgRGF0YWJhc2VcbiAqXG4gKiAgIE5vdGUgb3ZlciBDLERCOiBDcmVhdGUvVXBkYXRlIEZsb3dcbiAqICAgQy0+Pk06IFNldCBjb21wbGV4IG9iamVjdCBwcm9wZXJ0eVxuICogICBNLT4+UzogUHJvY2VzcyBwcm9wZXJ0eSAoY3JlYXRlL3VwZGF0ZSlcbiAqICAgUy0+Pk06IENvbnZlcnQgdG8gSlNPTiBzdHJpbmdcbiAqICAgTS0+PkRCOiBTdG9yZSBzZXJpYWxpemVkIGRhdGFcbiAqXG4gKiAgIE5vdGUgb3ZlciBDLERCOiBSZXRyaWV2YWwgRmxvd1xuICogICBDLT4+TTogUmVxdWVzdCBtb2RlbFxuICogICBNLT4+REI6IEZldGNoIGRhdGFcbiAqICAgREItPj5NOiBSZXR1cm4gd2l0aCBzZXJpYWxpemVkIHByb3BlcnR5XG4gKiAgIE0tPj5TOiBQcm9jZXNzIHByb3BlcnR5IChhZnRlciBhbGwgb3BzKVxuICogICBTLT4+TTogUGFyc2UgSlNPTiBiYWNrIHRvIG9iamVjdFxuICogICBNLT4+QzogUmV0dXJuIG1vZGVsIHdpdGggZGVzZXJpYWxpemVkIHByb3BlcnR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemUoKSB7XG4gIHJldHVybiBhcHBseShcbiAgICBvbkNyZWF0ZVVwZGF0ZShzZXJpYWxpemVPbkNyZWF0ZVVwZGF0ZSksXG4gICAgYWZ0ZXIoREJPcGVyYXRpb25zLkFMTCwgc2VyaWFsaXplQWZ0ZXJBbGwpLFxuICAgIHR5cGUoW1N0cmluZy5uYW1lLCBPYmplY3QubmFtZV0pLFxuICAgIG1ldGFkYXRhKFJlcG9zaXRvcnkua2V5KERCS2V5cy5TRVJJQUxJWkUpLCB7fSlcbiAgKTtcbn1cbiJdfQ==
|
package/lib/index.cjs
CHANGED
|
@@ -32,5 +32,5 @@ __exportStar(require("./validation/index.cjs"), exports);
|
|
|
32
32
|
* @const VERSION
|
|
33
33
|
* @memberOf module:db-decorators
|
|
34
34
|
*/
|
|
35
|
-
exports.VERSION = "0.6.
|
|
35
|
+
exports.VERSION = "0.6.6";
|
|
36
36
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1REFBMkI7QUFDM0IseURBQTZCO0FBQzdCLG9EQUF3QjtBQUN4Qix5REFBNkI7QUFDN0IseURBQTZCO0FBQzdCLHlEQUE2QjtBQUU3Qjs7OztHQUlHO0FBR0g7Ozs7O0dBS0c7QUFDVSxRQUFBLE9BQU8sR0FBRyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9pZGVudGl0eVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29wZXJhdGlvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlcG9zaXRvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZhbGlkYXRpb25cIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGF0YWJhc2UgZGVjb3JhdG9ycyBmb3IgVHlwZVNjcmlwdCBhcHBsaWNhdGlvbnNcbiAqIEBzdW1tYXJ5IEEgY29tcHJlaGVuc2l2ZSBsaWJyYXJ5IHByb3ZpZGluZyBkZWNvcmF0b3JzIGFuZCB1dGlsaXRpZXMgZm9yIGRhdGFiYXNlIG9wZXJhdGlvbnMsIG1vZGVsIGRlZmluaXRpb25zLCB2YWxpZGF0aW9uLCBhbmQgcmVwb3NpdG9yeSBwYXR0ZXJucyBpbiBUeXBlU2NyaXB0IGFwcGxpY2F0aW9uc1xuICogQG1vZHVsZSBkYi1kZWNvcmF0b3JzXG4gKi9cblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDdXJyZW50IHZlcnNpb24gb2YgdGhlIHJlZmxlY3Rpb24gcGFja2FnZVxuICogQHN1bW1hcnkgU3RvcmVzIHRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlciBvZiB0aGUgcGFja2FnZVxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcbiJdfQ==
|
package/lib/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9JUmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWwsIE1vZGVsQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBCdWxrQ3J1ZE9wZXJhdG9yIH0gZnJvbSBcIi4vQnVsa0NydWRPcGVyYXRvclwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeUZsYWdzIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvdHlwZXNcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeVwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXBvc2l0b3J5IGludGVyZmFjZSBmb3IgZGF0YWJhc2Ugb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgSW50ZXJmYWNlIGhvbGRpbmcgYmFzaWMgQ1JVRCBBUElzIGZvciBkYXRhYmFzZSBtb2RlbHMsIHByb3ZpZGluZyBzdGFuZGFyZCBvcGVyYXRpb25zIGFuZCBtZXRhZGF0YVxuICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHRlbXBsYXRlIEYgLSBUeXBlIGV4dGVuZGluZyBSZXBvc2l0b3J5RmxhZ3MsIGRlZmF1bHRzIHRvIFJlcG9zaXRvcnlGbGFnc1xuICogQHRlbXBsYXRlIEMgLSBUeXBlIGV4dGVuZGluZyBDb250ZXh0PEY+LCBkZWZhdWx0cyB0byBDb250ZXh0PEY+
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9JUmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWwsIE1vZGVsQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBCdWxrQ3J1ZE9wZXJhdG9yIH0gZnJvbSBcIi4vQnVsa0NydWRPcGVyYXRvclwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeUZsYWdzIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvdHlwZXNcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeVwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXBvc2l0b3J5IGludGVyZmFjZSBmb3IgZGF0YWJhc2Ugb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgSW50ZXJmYWNlIGhvbGRpbmcgYmFzaWMgQ1JVRCBBUElzIGZvciBkYXRhYmFzZSBtb2RlbHMsIHByb3ZpZGluZyBzdGFuZGFyZCBvcGVyYXRpb25zIGFuZCBtZXRhZGF0YVxuICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHRlbXBsYXRlIEYgLSBUeXBlIGV4dGVuZGluZyBSZXBvc2l0b3J5RmxhZ3MsIGRlZmF1bHRzIHRvIFJlcG9zaXRvcnlGbGFnc1xuICogQHRlbXBsYXRlIEMgLSBUeXBlIGV4dGVuZGluZyBDb250ZXh0PEY+LCBkZWZhdWx0cyB0byBDb250ZXh0PEY+XG4gKiBAaW50ZXJmYWNlIElSZXBvc2l0b3J5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUmVwb3NpdG9yeTxcbiAgTSBleHRlbmRzIE1vZGVsPHRydWUgfCBmYWxzZT4sXG4gIEYgZXh0ZW5kcyBSZXBvc2l0b3J5RmxhZ3MgPSBSZXBvc2l0b3J5RmxhZ3MsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgQyBleHRlbmRzIENvbnRleHQ8Rj4gPSBDb250ZXh0PEY+LFxuPiBleHRlbmRzIEJ1bGtDcnVkT3BlcmF0b3I8TT4ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgbW9kZWwgY2xhc3NcbiAgICogQHN1bW1hcnkgUmVmZXJlbmNlIHRvIHRoZSBtb2RlbCBjbGFzcyBjb25zdHJ1Y3RvciB1c2VkIHRvIGNyZWF0ZSBuZXcgaW5zdGFuY2VzXG4gICAqL1xuICByZWFkb25seSBjbGFzczogTW9kZWxDb25zdHJ1Y3RvcjxNPjtcblxuICByZWFkb25seSBwazoga2V5b2YgTTtcbn1cbiJdfQ==
|
|
@@ -11,7 +11,7 @@ import { Context } from "../repository";
|
|
|
11
11
|
* @interface IRepository
|
|
12
12
|
* @memberOf module:db-decorators
|
|
13
13
|
*/
|
|
14
|
-
export interface IRepository<M extends Model
|
|
14
|
+
export interface IRepository<M extends Model<true | false>, F extends RepositoryFlags = RepositoryFlags, C extends Context<F> = Context<F>> extends BulkCrudOperator<M> {
|
|
15
15
|
/**
|
|
16
16
|
* @description The constructor of the model class
|
|
17
17
|
* @summary Reference to the model class constructor used to create new instances
|
package/lib/model/decorators.cjs
CHANGED
|
@@ -205,7 +205,10 @@ function versionCreateUpdate(operation) {
|
|
|
205
205
|
* @category PropertyDecorators
|
|
206
206
|
*/
|
|
207
207
|
function version() {
|
|
208
|
-
|
|
208
|
+
const key = Repository_1.Repository.key(constants_1.DBKeys.VERSION);
|
|
209
|
+
return decorator_validation_1.Decoration.for(key)
|
|
210
|
+
.define((0, decorator_validation_1.type)(Number.name), (0, decorators_1.onCreate)(versionCreateUpdate(operations_1.OperationKeys.CREATE)), (0, decorators_1.onUpdate)(versionCreateUpdate(operations_1.OperationKeys.UPDATE)), (0, decorator_validation_1.propMetadata)(key, true))
|
|
211
|
+
.apply();
|
|
209
212
|
}
|
|
210
213
|
/**
|
|
211
214
|
* @description Creates a decorator that marks a property as transient
|
|
@@ -215,9 +218,12 @@ function version() {
|
|
|
215
218
|
* @category PropertyDecorators
|
|
216
219
|
*/
|
|
217
220
|
function transient() {
|
|
218
|
-
|
|
221
|
+
const key = Repository_1.Repository.key(constants_1.DBKeys.TRANSIENT);
|
|
222
|
+
return decorator_validation_1.Decoration.for(key)
|
|
223
|
+
.define(function transient(model, attribute) {
|
|
219
224
|
(0, decorator_validation_1.propMetadata)(Repository_1.Repository.key(constants_1.DBKeys.TRANSIENT), true)(model, attribute);
|
|
220
225
|
(0, decorator_validation_1.propMetadata)(Repository_1.Repository.key(constants_1.DBKeys.TRANSIENT), true)(model.constructor);
|
|
221
|
-
}
|
|
226
|
+
})
|
|
227
|
+
.apply();
|
|
222
228
|
}
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaUNBLGdEQVdDO0FBU0Qsb0JBS0M7QUF1Q0QsNERBMkJDO0FBb0RELDRDQVFDO0FBY0QsNEJBUUM7QUFnQ0Qsa0RBdUJDO0FBU0QsMEJBT0M7QUFTRCw4QkFLQztBQW5TRCwrQ0FBdUQ7QUFDdkQscURBQTZDO0FBQzdDLHlFQUt3QztBQUN4QywrREFBOEU7QUFFOUUsdURBQXFEO0FBQ3JELCtEQUFzRDtBQUV0RCwwREFBOEQ7QUFHOUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxTQUFnQixrQkFBa0IsQ0FNdkIsT0FBVSxFQUFFLElBQU8sRUFBRSxHQUFZLEVBQUUsS0FBUSxFQUFFLFFBQVk7SUFDbEUsSUFBSSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxXQUFXO1FBQUUsT0FBTztJQUM5QyxNQUFNLElBQUksR0FBRyw4QkFBTyxDQUFDLElBQUksQ0FBRSxLQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQyxJQUFJLFFBQVEsSUFBSyxLQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSTtRQUFFLE9BQU87SUFDckQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNwQixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsSUFBSTtJQUNsQixPQUFPLElBQUEsa0JBQUssRUFDVixJQUFBLDJCQUFjLEVBQUMsa0JBQWtCLENBQUMsRUFDbEMsSUFBQSxtQ0FBWSxFQUFDLHVCQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQzlDLENBQUM7QUFDSixDQUFDO0FBdUJEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFNBQWdCLHdCQUF3QixDQU03QixPQUFVLEVBQUUsSUFBTyxFQUFFLEdB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LElBQUEsbUNBQVksRUFBQyx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN2RSxJQUFBLG1DQUFZLEVBQUMsdUJBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUUsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERCS2V5cywgRGVmYXVsdFNlcGFyYXRvciB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgYXBwbHkgfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcbmltcG9ydCB7XG4gIEhhc2hpbmcsXG4gIE1vZGVsLFxuICBwcm9wTWV0YWRhdGEsXG4gIHR5cGUsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IG9uQ3JlYXRlLCBvbkNyZWF0ZVVwZGF0ZSwgb25VcGRhdGUgfSBmcm9tIFwiLi4vb3BlcmF0aW9ucy9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBJUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL0lSZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvZXJyb3JzXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L0NvbnRleHRcIjtcbmltcG9ydCB7IENydWRPcGVyYXRpb25zLCBPcGVyYXRpb25LZXlzIH0gZnJvbSBcIi4uL29wZXJhdGlvbnNcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnlGbGFncyB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L3R5cGVzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEhhc2hlcyBhIHByb3BlcnR5IHZhbHVlIGR1cmluZyBjcmVhdGUgb3IgdXBkYXRlIG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IENhbGxiYWNrIGZ1bmN0aW9uIHVzZWQgYnkgdGhlIGhhc2ggZGVjb3JhdG9yIHRvIGFwcGx5IGhhc2hpbmcgdG8gYSBwcm9wZXJ0eSB2YWx1ZVxuICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHRlbXBsYXRlIFIgLSBUeXBlIGV4dGVuZGluZyBJUmVwb3NpdG9yeVxuICogQHRlbXBsYXRlIFYgLSBUeXBlIGZvciBtZXRhZGF0YVxuICogQHRlbXBsYXRlIEYgLSBUeXBlIGV4dGVuZGluZyBSZXBvc2l0b3J5RmxhZ3NcbiAqIEB0ZW1wbGF0ZSBDIC0gVHlwZSBleHRlbmRpbmcgQ29udGV4dFxuICogQHBhcmFtIHtDfSBjb250ZXh0IC0gVGhlIG9wZXJhdGlvbiBjb250ZXh0XG4gKiBAcGFyYW0ge1Z9IGRhdGEgLSBNZXRhZGF0YSBmb3IgdGhlIG9wZXJhdGlvblxuICogQHBhcmFtIGtleSAtIFRoZSBwcm9wZXJ0eSBrZXkgdG8gaGFzaFxuICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBiZWluZyBwcm9jZXNzZWRcbiAqIEBwYXJhbSB7TX0gW29sZE1vZGVsXSAtIFRoZSBwcmV2aW91cyBtb2RlbCBzdGF0ZSAoZm9yIHVwZGF0ZXMpXG4gKiBAcmV0dXJuIHt2b2lkfVxuICogQGZ1bmN0aW9uIGhhc2hPbkNyZWF0ZVVwZGF0ZVxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNoT25DcmVhdGVVcGRhdGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIElSZXBvc2l0b3J5PE0sIEYsIEM+LFxuICBWIGV4dGVuZHMgb2JqZWN0LFxuICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzID0gUmVwb3NpdG9yeUZsYWdzLFxuICBDIGV4dGVuZHMgQ29udGV4dDxGPiA9IENvbnRleHQ8Rj4sXG4+KHRoaXM6IFIsIGNvbnRleHQ6IEMsIGRhdGE6IFYsIGtleToga2V5b2YgTSwgbW9kZWw6IE0sIG9sZE1vZGVsPzogTSk6IHZvaWQge1xuICBpZiAodHlwZW9mIG1vZGVsW2tleV0gPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcbiAgY29uc3QgaGFzaCA9IEhhc2hpbmcuaGFzaCgobW9kZWwgYXMgYW55KVtrZXldKTtcbiAgaWYgKG9sZE1vZGVsICYmIChtb2RlbCBhcyBhbnkpW2tleV0gPT09IGhhc2gpIHJldHVybjtcbiAgbW9kZWxba2V5XSA9IGhhc2g7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBkZWNvcmF0b3IgdGhhdCBoYXNoZXMgYSBwcm9wZXJ0eSB2YWx1ZVxuICogQHN1bW1hcnkgRGVjb3JhdG9yIHRoYXQgYXV0b21hdGljYWxseSBoYXNoZXMgYSBwcm9wZXJ0eSB2YWx1ZSBkdXJpbmcgY3JlYXRlIGFuZCB1cGRhdGUgb3BlcmF0aW9uc1xuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgZGVjb3JhdG9yIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gY2xhc3MgcHJvcGVydGllc1xuICogQGZ1bmN0aW9uIGhhc2hcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNoKCkge1xuICByZXR1cm4gYXBwbHkoXG4gICAgb25DcmVhdGVVcGRhdGUoaGFzaE9uQ3JlYXRlVXBkYXRlKSxcbiAgICBwcm9wTWV0YWRhdGEoUmVwb3NpdG9yeS5rZXkoREJLZXlzLkhBU0gpLCB7fSlcbiAgKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWV0YWRhdGEgZm9yIGNvbXBvc2VkIHByb3BlcnR5IGRlY29yYXRvcnNcbiAqIEBzdW1tYXJ5IENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgcHJvcGVydHkgY29tcG9zaXRpb24gZnJvbSBvdGhlciBwcm9wZXJ0aWVzXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDb21wb3NlZEZyb21NZXRhZGF0YVxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gYXJncyAtIFByb3BlcnR5IG5hbWVzIHRvIGNvbXBvc2UgZnJvbVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHNlcGFyYXRvciAtIENoYXJhY3RlciB1c2VkIHRvIGpvaW4gdGhlIGNvbXBvc2VkIHZhbHVlc1xuICogQHByb3BlcnR5IHtib29sZWFufSBoYXNoUmVzdWx0IC0gV2hldGhlciB0byBoYXNoIHRoZSBjb21wb3NlZCByZXN1bHRcbiAqIEBwcm9wZXJ0eSB7XCJrZXlzXCJ8XCJ2YWx1ZXNcIn0gdHlwZSAtIFdoZXRoZXIgdG8gdXNlIHByb3BlcnR5IGtleXMgb3IgdmFsdWVzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3ByZWZpeF0gLSBPcHRpb25hbCBwcmVmaXggdG8gYWRkIHRvIHRoZSBjb21wb3NlZCB2YWx1ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtzdWZmaXhdIC0gT3B0aW9uYWwgc3VmZml4IHRvIGFkZCB0byB0aGUgY29tcG9zZWQgdmFsdWVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9yc1xuICovXG5leHBvcnQgdHlwZSBDb21wb3NlZEZyb21NZXRhZGF0YSA9IHtcbiAgYXJnczogc3RyaW5nW107XG4gIHNlcGFyYXRvcjogc3RyaW5nO1xuICBoYXNoUmVzdWx0OiBib29sZWFuO1xuICB0eXBlOiBcImtleXNcIiB8IFwidmFsdWVzXCI7XG4gIHByZWZpeD86IHN0cmluZztcbiAgc3VmZml4Pzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9zZXMgYSBwcm9wZXJ0eSB2YWx1ZSBmcm9tIG90aGVyIHByb3BlcnRpZXMgZHVyaW5nIGNyZWF0ZSBvciB1cGRhdGUgb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgQ2FsbGJhY2sgZnVuY3Rpb24gdXNlZCBieSBjb21wb3NlZCBkZWNvcmF0b3JzIHRvIGdlbmVyYXRlIGEgcHJvcGVydHkgdmFsdWUgZnJvbSBvdGhlciBwcm9wZXJ0aWVzXG4gKiBAdGVtcGxhdGUgTSAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gKiBAdGVtcGxhdGUgUiAtIFR5cGUgZXh0ZW5kaW5nIElSZXBvc2l0b3J5XG4gKiBAdGVtcGxhdGUgViAtIFR5cGUgZXh0ZW5kaW5nIENvbXBvc2VkRnJvbU1ldGFkYXRhXG4gKiBAdGVtcGxhdGUgRiAtIFR5cGUgZXh0ZW5kaW5nIFJlcG9zaXRvcnlGbGFnc1xuICogQHRlbXBsYXRlIEMgLSBUeXBlIGV4dGVuZGluZyBDb250ZXh0XG4gKiBAcGFyYW0ge0N9IGNvbnRleHQgLSBUaGUgb3BlcmF0aW9uIGNvbnRleHRcbiAqIEBwYXJhbSB7Vn0gZGF0YSAtIE1ldGFkYXRhIGZvciB0aGUgY29tcG9zaXRpb25cbiAqIEBwYXJhbSBrZXkgLSBUaGUgcHJvcGVydHkga2V5IHRvIHNldCB0aGUgY29tcG9zZWQgdmFsdWUgb25cbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgYmVpbmcgcHJvY2Vzc2VkXG4gKiBAcmV0dXJuIHt2b2lkfVxuICogQGZ1bmN0aW9uIGNvbXBvc2VkRnJvbUNyZWF0ZVVwZGF0ZVxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlZEZyb21DcmVhdGVVcGRhdGU8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIElSZXBvc2l0b3J5PE0sIEYsIEM+LFxuICBWIGV4dGVuZHMgQ29tcG9zZWRGcm9tTWV0YWRhdGEsXG4gIEYgZXh0ZW5kcyBSZXBvc2l0b3J5RmxhZ3MgPSBSZXBvc2l0b3J5RmxhZ3MsXG4gIEMgZXh0ZW5kcyBDb250ZXh0PEY+ID0gQ29udGV4dDxGPixcbj4odGhpczogUiwgY29udGV4dDogQywgZGF0YTogViwga2V5OiBrZXlvZiBNLCBtb2RlbDogTSkge1xuICB0cnkge1xuICAgIGNvbnN0IHsgYXJncywgdHlwZSwgcHJlZml4LCBzdWZmaXgsIHNlcGFyYXRvciB9ID0gZGF0YTtcbiAgICBjb25zdCBjb21wb3NlZCA9IGFyZ3MubWFwKChhcmc6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCEoYXJnIGluIG1vZGVsKSlcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYFByb3BlcnR5ICR7YXJnfSBub3QgZm91bmQgdG8gY29tcG9zZSBmcm9tYCk7XG4gICAgICBpZiAodHlwZSA9PT0gXCJrZXlzXCIpIHJldHVybiBhcmc7XG4gICAgICBpZiAodHlwZW9mIChtb2RlbCBhcyBhbnkpW2FyZ10gPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgIGBQcm9wZXJ0eSAke2FyZ3N9IGRvZXMgbm90IGNvbnRhaW4gYSB2YWx1ZSB0byBjb21wb3NlIGZyb21gXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gKChtb2RlbCBhcyBhbnkpW2FyZ10gYXMgYW55KS50b1N0cmluZygpO1xuICAgIH0pO1xuXG4gICAgaWYgKHByZWZpeCkgY29tcG9zZWQudW5zaGlmdChwcmVmaXgpO1xuICAgIGlmIChzdWZmaXgpIGNvbXBvc2VkLnB1c2goc3VmZml4KTtcblxuICAgIChtb2RlbCBhcyBhbnkpW2tleV0gPSBjb21wb3NlZC5qb2luKHNlcGFyYXRvcik7XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBGYWlsZWQgdG8gY29tcG9zZSB2YWx1ZTogJHtlfWApO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBkZWNvcmF0b3IgdGhhdCBjb21wb3NlcyBhIHByb3BlcnR5IHZhbHVlIGZyb20gb3RoZXIgcHJvcGVydGllc1xuICogQHN1bW1hcnkgQmFzZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgcHJvcGVydHkgY29tcG9zaXRpb24gZGVjb3JhdG9yc1xuICogQHBhcmFtIHtzdHJpbmdbXX0gYXJncyAtIFByb3BlcnR5IG5hbWVzIHRvIGNvbXBvc2UgZnJvbVxuICogQHBhcmFtIHtib29sZWFufSBbaGFzaFJlc3VsdD1mYWxzZV0gLSBXaGV0aGVyIHRvIGhhc2ggdGhlIGNvbXBvc2VkIHJlc3VsdFxuICogQHBhcmFtIHtzdHJpbmd9IFtzZXBhcmF0b3I9RGVmYXVsdFNlcGFyYXRvcl0gLSBDaGFyYWN0ZXIgdXNlZCB0byBqb2luIHRoZSBjb21wb3NlZCB2YWx1ZXNcbiAqIEBwYXJhbSB7XCJrZXlzXCJ8XCJ2YWx1ZXNcIn0gW3R5cGU9XCJ2YWx1ZXNcIl0gLSBXaGV0aGVyIHRvIHVzZSBwcm9wZXJ0eSBrZXlzIG9yIHZhbHVlc1xuICogQHBhcmFtIHtzdHJpbmd9IFtwcmVmaXg9XCJcIl0gLSBPcHRpb25hbCBwcmVmaXggdG8gYWRkIHRvIHRoZSBjb21wb3NlZCB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFtzdWZmaXg9XCJcIl0gLSBPcHRpb25hbCBzdWZmaXggdG8gYWRkIHRvIHRoZSBjb21wb3NlZCB2YWx1ZVxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgZGVjb3JhdG9yIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gY2xhc3MgcHJvcGVydGllc1xuICogQGZ1bmN0aW9uIGNvbXBvc2VkRnJvbVxuICogQGNhdGVnb3J5IFByb3BlcnR5RGVjb3JhdG9yc1xuICovXG5mdW5jdGlvbiBjb21wb3NlZEZyb20oXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICBoYXNoUmVzdWx0OiBib29sZWFuID0gZmFsc2UsXG4gIHNlcGFyYXRvcjogc3RyaW5nID0gRGVmYXVsdFNlcGFyYXRvcixcbiAgdHlwZTogXCJrZXlzXCIgfCBcInZhbHVlc1wiID0gXCJ2YWx1ZXNcIixcbiAgcHJlZml4ID0gXCJcIixcbiAgc3VmZml4ID0gXCJcIlxuKSB7XG4gIGNvbnN0IGRhdGE6IENvbXBvc2VkRnJvbU1ldGFkYXRhID0ge1xuICAgIGFyZ3M6IGFyZ3MsXG4gICAgaGFzaFJlc3VsdDogaGFzaFJlc3VsdCxcbiAgICBzZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgICB0eXBlOiB0eXBlLFxuICAgIHByZWZpeDogcHJlZml4LFxuICAgIHN1ZmZpeDogc3VmZml4LFxuICB9O1xuXG4gIGNvbnN0IGRlY29yYXRvcnMgPSBbXG4gICAgb25DcmVhdGVVcGRhdGUoY29tcG9zZWRGcm9tQ3JlYXRlVXBkYXRlLCBkYXRhKSxcbiAgICBwcm9wTWV0YWRhdGEoUmVwb3NpdG9yeS5rZXkoREJLZXlzLkNPTVBPU0VEKSwgZGF0YSksXG4gIF07XG4gIGlmIChoYXNoUmVzdWx0KSBkZWNvcmF0b3JzLnB1c2goaGFzaCgpKTtcbiAgcmV0dXJuIGFwcGx5KC4uLmRlY29yYXRvcnMpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgZGVjb3JhdG9yIHRoYXQgY29tcG9zZXMgYSBwcm9wZXJ0eSB2YWx1ZSBmcm9tIHByb3BlcnR5IGtleXNcbiAqIEBzdW1tYXJ5IERlY29yYXRvciB0aGF0IGdlbmVyYXRlcyBhIHByb3BlcnR5IHZhbHVlIGJ5IGpvaW5pbmcgdGhlIG5hbWVzIG9mIG90aGVyIHByb3BlcnRpZXNcbiAqIEBwYXJhbSB7c3RyaW5nW119IGFyZ3MgLSBQcm9wZXJ0eSBuYW1lcyB0byBjb21wb3NlIGZyb21cbiAqIEBwYXJhbSB7c3RyaW5nfSBbc2VwYXJhdG9yPURlZmF1bHRTZXBhcmF0b3JdIC0gQ2hhcmFjdGVyIHVzZWQgdG8gam9pbiB0aGUgcHJvcGVydHkgbmFtZXNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2hhc2g9ZmFsc2VdIC0gV2hldGhlciB0byBoYXNoIHRoZSBjb21wb3NlZCByZXN1bHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcHJlZml4PVwiXCJdIC0gT3B0aW9uYWwgcHJlZml4IHRvIGFkZCB0byB0aGUgY29tcG9zZWQgdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3VmZml4PVwiXCJdIC0gT3B0aW9uYWwgc3VmZml4IHRvIGFkZCB0byB0aGUgY29tcG9zZWQgdmFsdWVcbiAqIEByZXR1cm4ge1Byb3BlcnR5RGVjb3JhdG9yfSBBIGRlY29yYXRvciB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGNsYXNzIHByb3BlcnRpZXNcbiAqIEBmdW5jdGlvbiBjb21wb3NlZEZyb21LZXlzXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHlEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlZEZyb21LZXlzKFxuICBhcmdzOiBzdHJpbmdbXSxcbiAgc2VwYXJhdG9yOiBzdHJpbmcgPSBEZWZhdWx0U2VwYXJhdG9yLFxuICBoYXNoOiBib29sZWFuID0gZmFsc2UsXG4gIHByZWZpeCA9IFwiXCIsXG4gIHN1ZmZpeCA9IFwiXCJcbikge1xuICByZXR1cm4gY29tcG9zZWRGcm9tKGFyZ3MsIGhhc2gsIHNlcGFyYXRvciwgXCJrZXlzXCIsIHByZWZpeCwgc3VmZml4KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIGRlY29yYXRvciB0aGF0IGNvbXBvc2VzIGEgcHJvcGVydHkgdmFsdWUgZnJvbSBwcm9wZXJ0eSB2YWx1ZXNcbiAqIEBzdW1tYXJ5IERlY29yYXRvciB0aGF0IGdlbmVyYXRlcyBhIHByb3BlcnR5IHZhbHVlIGJ5IGpvaW5pbmcgdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBhcmdzIC0gUHJvcGVydHkgbmFtZXMgd2hvc2UgdmFsdWVzIHdpbGwgYmUgY29tcG9zZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc2VwYXJhdG9yPURlZmF1bHRTZXBhcmF0b3JdIC0gQ2hhcmFjdGVyIHVzZWQgdG8gam9pbiB0aGUgcHJvcGVydHkgdmFsdWVzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtoYXNoPWZhbHNlXSAtIFdoZXRoZXIgdG8gaGFzaCB0aGUgY29tcG9zZWQgcmVzdWx0XG4gKiBAcGFyYW0ge3N0cmluZ30gW3ByZWZpeD1cIlwiXSAtIE9wdGlvbmFsIHByZWZpeCB0byBhZGQgdG8gdGhlIGNvbXBvc2VkIHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW3N1ZmZpeD1cIlwiXSAtIE9wdGlvbmFsIHN1ZmZpeCB0byBhZGQgdG8gdGhlIGNvbXBvc2VkIHZhbHVlXG4gKiBAcmV0dXJuIHtQcm9wZXJ0eURlY29yYXRvcn0gQSBkZWNvcmF0b3IgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBjbGFzcyBwcm9wZXJ0aWVzXG4gKiBAZnVuY3Rpb24gY29tcG9zZWRcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eURlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2VkKFxuICBhcmdzOiBzdHJpbmdbXSxcbiAgc2VwYXJhdG9yOiBzdHJpbmcgPSBEZWZhdWx0U2VwYXJhdG9yLFxuICBoYXNoOiBib29sZWFuID0gZmFsc2UsXG4gIHByZWZpeCA9IFwiXCIsXG4gIHN1ZmZpeCA9IFwiXCJcbikge1xuICByZXR1cm4gY29tcG9zZWRGcm9tKGFyZ3MsIGhhc2gsIHNlcGFyYXRvciwgXCJ2YWx1ZXNcIiwgcHJlZml4LCBzdWZmaXgpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB1cGRhdGVzIGEgdmVyc2lvbiBwcm9wZXJ0eSBkdXJpbmcgb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgRmFjdG9yeSBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyBhIGNhbGxiYWNrIGZvciBpbmNyZW1lbnRpbmcgdmVyc2lvbiBudW1iZXJzXG4gKiBAcGFyYW0ge0NydWRPcGVyYXRpb25zfSBvcGVyYXRpb24gLSBUaGUgdHlwZSBvZiBvcGVyYXRpb24gKENSRUFURSBvciBVUERBVEUpXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHVwZGF0ZXMgdGhlIHZlcnNpb24gcHJvcGVydHlcbiAqIEB0ZW1wbGF0ZSBNIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAqIEB0ZW1wbGF0ZSBSIC0gVHlwZSBleHRlbmRpbmcgSVJlcG9zaXRvcnlcbiAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSBmb3IgbWV0YWRhdGFcbiAqIEB0ZW1wbGF0ZSBGIC0gVHlwZSBleHRlbmRpbmcgUmVwb3NpdG9yeUZsYWdzXG4gKiBAdGVtcGxhdGUgQyAtIFR5cGUgZXh0ZW5kaW5nIENvbnRleHRcbiAqIEBmdW5jdGlvbiB2ZXJzaW9uQ3JlYXRlVXBkYXRlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gKiAgIHBhcnRpY2lwYW50IHZlcnNpb25DcmVhdGVVcGRhdGVcbiAqXG4gKiAgIENhbGxlci0+PnZlcnNpb25DcmVhdGVVcGRhdGU6IG9wZXJhdGlvblxuICogICB2ZXJzaW9uQ3JlYXRlVXBkYXRlLS0+PkNhbGxlcjogY2FsbGJhY2sgZnVuY3Rpb25cbiAqICAgTm90ZSBvdmVyIENhbGxlcix2ZXJzaW9uQ3JlYXRlVXBkYXRlOiBXaGVuIGNhbGxiYWNrIGlzIGV4ZWN1dGVkOlxuICogICBDYWxsZXItPj52ZXJzaW9uQ3JlYXRlVXBkYXRlOiBjb250ZXh0LCBkYXRhLCBrZXksIG1vZGVsXG4gKiAgIGFsdCBvcGVyYXRpb24gaXMgQ1JFQVRFXG4gKiAgICAgdmVyc2lvbkNyZWF0ZVVwZGF0ZS0+PnZlcnNpb25DcmVhdGVVcGRhdGU6IHNldCB2ZXJzaW9uIHRvIDFcbiAqICAgZWxzZSBvcGVyYXRpb24gaXMgVVBEQVRFXG4gKiAgICAgdmVyc2lvbkNyZWF0ZVVwZGF0ZS0+PnZlcnNpb25DcmVhdGVVcGRhdGU6IGluY3JlbWVudCB2ZXJzaW9uXG4gKiAgIGVsc2UgaW52YWxpZCBvcGVyYXRpb25cbiAqICAgICB2ZXJzaW9uQ3JlYXRlVXBkYXRlLT4+dmVyc2lvbkNyZWF0ZVVwZGF0ZTogdGhyb3cgZXJyb3JcbiAqICAgZW5kXG4gKiAgIHZlcnNpb25DcmVhdGVVcGRhdGUtLT4+Q2FsbGVyOiB2b2lkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJzaW9uQ3JlYXRlVXBkYXRlKG9wZXJhdGlvbjogQ3J1ZE9wZXJhdGlvbnMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHZlcnNpb25DcmVhdGVVcGRhdGU8XG4gICAgTSBleHRlbmRzIE1vZGVsLFxuICAgIFIgZXh0ZW5kcyBJUmVwb3NpdG9yeTxNLCBGLCBDPixcbiAgICBWIGV4dGVuZHMgb2JqZWN0LFxuICAgIEYgZXh0ZW5kcyBSZXBvc2l0b3J5RmxhZ3MgPSBSZXBvc2l0b3J5RmxhZ3MsXG4gICAgQyBleHRlbmRzIENvbnRleHQ8Rj4gPSBDb250ZXh0PEY+LFxuICA+KHRoaXM6IFIsIGNvbnRleHQ6IEMsIGRhdGE6IFYsIGtleToga2V5b2YgTSwgbW9kZWw6IE0pIHtcbiAgICB0cnkge1xuICAgICAgc3dpdGNoIChvcGVyYXRpb24pIHtcbiAgICAgICAgY2FzZSBPcGVyYXRpb25LZXlzLkNSRUFURTpcbiAgICAgICAgICAobW9kZWwgYXMgYW55KVtrZXldID0gMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPcGVyYXRpb25LZXlzLlVQREFURTpcbiAgICAgICAgICAobW9kZWwgYXMgYW55KVtrZXldKys7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEludmFsaWQgb3BlcmF0aW9uOiAke29wZXJhdGlvbn1gKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgRmFpbGVkIHRvIHVwZGF0ZSB2ZXJzaW9uOiAke2V9YCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgZGVjb3JhdG9yIGZvciB2ZXJzaW9uaW5nIGEgcHJvcGVydHkgaW4gYSBtb2RlbFxuICogQHN1bW1hcnkgVGhpcyBkZWNvcmF0b3IgYXBwbGllcyBtdWx0aXBsZSBzdWItZGVjb3JhdG9ycyB0byBoYW5kbGUgdmVyc2lvbiBtYW5hZ2VtZW50IGR1cmluZyBjcmVhdGUgYW5kIHVwZGF0ZSBvcGVyYXRpb25zXG4gKiBAcmV0dXJuIHtQcm9wZXJ0eURlY29yYXRvcn0gQSBjb21wb3NpdGUgZGVjb3JhdG9yIHRoYXQgc2V0cyB0aGUgdHlwZSB0byBOdW1iZXIsIG1hbmFnZXMgdmVyc2lvbiB1cGRhdGVzLCBhbmQgYWRkcyB2ZXJzaW9uaW5nIG1ldGFkYXRhXG4gKiBAZnVuY3Rpb24gdmVyc2lvblxuICogQGNhdGVnb3J5IFByb3BlcnR5RGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyc2lvbigpIHtcbiAgcmV0dXJuIGFwcGx5KFxuICAgIHR5cGUoTnVtYmVyLm5hbWUpLFxuICAgIG9uQ3JlYXRlKHZlcnNpb25DcmVhdGVVcGRhdGUoT3BlcmF0aW9uS2V5cy5DUkVBVEUpKSxcbiAgICBvblVwZGF0ZSh2ZXJzaW9uQ3JlYXRlVXBkYXRlKE9wZXJhdGlvbktleXMuVVBEQVRFKSksXG4gICAgcHJvcE1ldGFkYXRhKFJlcG9zaXRvcnkua2V5KERCS2V5cy5WRVJTSU9OKSwgdHJ1ZSlcbiAgKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIGRlY29yYXRvciB0aGF0IG1hcmtzIGEgcHJvcGVydHkgYXMgdHJhbnNpZW50XG4gKiBAc3VtbWFyeSBEZWNvcmF0b3IgdGhhdCBpbmRpY2F0ZXMgYSBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIHBlcnNpc3RlZCB0byB0aGUgZGF0YWJhc2VcbiAqIEByZXR1cm4ge1Byb3BlcnR5RGVjb3JhdG9yfSBBIGRlY29yYXRvciB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGNsYXNzIHByb3BlcnRpZXNcbiAqIEBmdW5jdGlvbiB0cmFuc2llbnRcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eURlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zaWVudCgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRyYW5zaWVudChtb2RlbDogYW55LCBhdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHByb3BNZXRhZGF0YShSZXBvc2l0b3J5LmtleShEQktleXMuVFJBTlNJRU5UKSwgdHJ1ZSkobW9kZWwsIGF0dHJpYnV0ZSk7XG4gICAgcHJvcE1ldGFkYXRhKFJlcG9zaXRvcnkua2V5KERCS2V5cy5UUkFOU0lFTlQpLCB0cnVlKShtb2RlbC5jb25zdHJ1Y3Rvcik7XG4gIH07XG59XG4iXX0=
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBa0NBLGdEQVdDO0FBU0Qsb0JBS0M7QUF1Q0QsNERBMkJDO0FBb0RELDRDQVFDO0FBY0QsNEJBUUM7QUFnQ0Qsa0RBdUJDO0FBU0QsMEJBVUM7QUFTRCw4QkFRQztBQTFTRCwrQ0FBdUQ7QUFDdkQscURBQTZDO0FBQzdDLHlFQU13QztBQUN4QywrREFBOEU7QUFFOUUsdURBQXFEO0FBQ3JELCtEQUFzRDtBQUV0RCwwREFBOEQ7QUFHOUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxTQUFnQixrQkFBa0IsQ0FNdkIsT0FBVSxFQUFFLElBQU8sRUFBRSxHQUFZLEVBQUUsS0FBUSxFQUFFLFFBQVk7SUFDbEUsSUFBSSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxXQUFXO1FBQUUsT0FBTztJQUM5QyxNQUFNLElBQUksR0FBRyw4QkFBTyxDQUFDLElBQUksQ0FBRSxLQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQyxJQUFJLFFBQVEsSUFBSyxLQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSTtRQUFFLE9BQU87SUFDckQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNwQixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsSUFBSTtJQUNsQixPQUFPLElBQUEsa0JBQUssRUFDVixJQUFBLDJCQUFjLEVBQUMsa0JBQWtCLENBQUMsRUFDbEMsSUFBQSxtQ0FBWSxFQUFDLHVCQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQzlDLENBQUM7QUFDSixDQUFDO0FBdUJEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFNBQWdCLHdCQUF3QixDQU03QixPQUFVLEVBQUUsSUFBTyxFQUFFLEdB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QUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLFNBQVM7SUFDdkIsTUFBTSxHQUFHLEdBQUcsdUJBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QyxPQUFPLGlDQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztTQUN2QixNQUFNLENBQUMsU0FBUyxTQUFTLENBQUMsS0FBVSxFQUFFLFNBQWM7UUFDbkQsSUFBQSxtQ0FBWSxFQUFDLHVCQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUEsbUNBQVksRUFBQyx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxRSxDQUFDLENBQUM7U0FDRCxLQUFLLEVBQUUsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEQktleXMsIERlZmF1bHRTZXBhcmF0b3IgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGFwcGx5IH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQge1xuICBEZWNvcmF0aW9uLFxuICBIYXNoaW5nLFxuICBNb2RlbCxcbiAgcHJvcE1ldGFkYXRhLFxuICB0eXBlLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBvbkNyZWF0ZSwgb25DcmVhdGVVcGRhdGUsIG9uVXBkYXRlIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgSVJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9JUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L2Vycm9yc1wiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9Db250ZXh0XCI7XG5pbXBvcnQgeyBDcnVkT3BlcmF0aW9ucywgT3BlcmF0aW9uS2V5cyB9IGZyb20gXCIuLi9vcGVyYXRpb25zXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5RmxhZ3MgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBIYXNoZXMgYSBwcm9wZXJ0eSB2YWx1ZSBkdXJpbmcgY3JlYXRlIG9yIHVwZGF0ZSBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBDYWxsYmFjayBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBoYXNoIGRlY29yYXRvciB0byBhcHBseSBoYXNoaW5nIHRvIGEgcHJvcGVydHkgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBNIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAqIEB0ZW1wbGF0ZSBSIC0gVHlwZSBleHRlbmRpbmcgSVJlcG9zaXRvcnlcbiAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSBmb3IgbWV0YWRhdGFcbiAqIEB0ZW1wbGF0ZSBGIC0gVHlwZSBleHRlbmRpbmcgUmVwb3NpdG9yeUZsYWdzXG4gKiBAdGVtcGxhdGUgQyAtIFR5cGUgZXh0ZW5kaW5nIENvbnRleHRcbiAqIEBwYXJhbSB7Q30gY29udGV4dCAtIFRoZSBvcGVyYXRpb24gY29udGV4dFxuICogQHBhcmFtIHtWfSBkYXRhIC0gTWV0YWRhdGEgZm9yIHRoZSBvcGVyYXRpb25cbiAqIEBwYXJhbSBrZXkgLSBUaGUgcHJvcGVydHkga2V5IHRvIGhhc2hcbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgYmVpbmcgcHJvY2Vzc2VkXG4gKiBAcGFyYW0ge019IFtvbGRNb2RlbF0gLSBUaGUgcHJldmlvdXMgbW9kZWwgc3RhdGUgKGZvciB1cGRhdGVzKVxuICogQHJldHVybiB7dm9pZH1cbiAqIEBmdW5jdGlvbiBoYXNoT25DcmVhdGVVcGRhdGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzaE9uQ3JlYXRlVXBkYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBJUmVwb3NpdG9yeTxNLCBGLCBDPixcbiAgViBleHRlbmRzIG9iamVjdCxcbiAgRiBleHRlbmRzIFJlcG9zaXRvcnlGbGFncyA9IFJlcG9zaXRvcnlGbGFncyxcbiAgQyBleHRlbmRzIENvbnRleHQ8Rj4gPSBDb250ZXh0PEY+LFxuPih0aGlzOiBSLCBjb250ZXh0OiBDLCBkYXRhOiBWLCBrZXk6IGtleW9mIE0sIG1vZGVsOiBNLCBvbGRNb2RlbD86IE0pOiB2b2lkIHtcbiAgaWYgKHR5cGVvZiBtb2RlbFtrZXldID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XG4gIGNvbnN0IGhhc2ggPSBIYXNoaW5nLmhhc2goKG1vZGVsIGFzIGFueSlba2V5XSk7XG4gIGlmIChvbGRNb2RlbCAmJiAobW9kZWwgYXMgYW55KVtrZXldID09PSBoYXNoKSByZXR1cm47XG4gIG1vZGVsW2tleV0gPSBoYXNoO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgZGVjb3JhdG9yIHRoYXQgaGFzaGVzIGEgcHJvcGVydHkgdmFsdWVcbiAqIEBzdW1tYXJ5IERlY29yYXRvciB0aGF0IGF1dG9tYXRpY2FsbHkgaGFzaGVzIGEgcHJvcGVydHkgdmFsdWUgZHVyaW5nIGNyZWF0ZSBhbmQgdXBkYXRlIG9wZXJhdGlvbnNcbiAqIEByZXR1cm4ge1Byb3BlcnR5RGVjb3JhdG9yfSBBIGRlY29yYXRvciB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGNsYXNzIHByb3BlcnRpZXNcbiAqIEBmdW5jdGlvbiBoYXNoXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzaCgpIHtcbiAgcmV0dXJuIGFwcGx5KFxuICAgIG9uQ3JlYXRlVXBkYXRlKGhhc2hPbkNyZWF0ZVVwZGF0ZSksXG4gICAgcHJvcE1ldGFkYXRhKFJlcG9zaXRvcnkua2V5KERCS2V5cy5IQVNIKSwge30pXG4gICk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1ldGFkYXRhIGZvciBjb21wb3NlZCBwcm9wZXJ0eSBkZWNvcmF0b3JzXG4gKiBAc3VtbWFyeSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHByb3BlcnR5IGNvbXBvc2l0aW9uIGZyb20gb3RoZXIgcHJvcGVydGllc1xuICogQHR5cGVkZWYge09iamVjdH0gQ29tcG9zZWRGcm9tTWV0YWRhdGFcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IGFyZ3MgLSBQcm9wZXJ0eSBuYW1lcyB0byBjb21wb3NlIGZyb21cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZXBhcmF0b3IgLSBDaGFyYWN0ZXIgdXNlZCB0byBqb2luIHRoZSBjb21wb3NlZCB2YWx1ZXNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaGFzaFJlc3VsdCAtIFdoZXRoZXIgdG8gaGFzaCB0aGUgY29tcG9zZWQgcmVzdWx0XG4gKiBAcHJvcGVydHkge1wia2V5c1wifFwidmFsdWVzXCJ9IHR5cGUgLSBXaGV0aGVyIHRvIHVzZSBwcm9wZXJ0eSBrZXlzIG9yIHZhbHVlc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtwcmVmaXhdIC0gT3B0aW9uYWwgcHJlZml4IHRvIGFkZCB0byB0aGUgY29tcG9zZWQgdmFsdWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbc3VmZml4XSAtIE9wdGlvbmFsIHN1ZmZpeCB0byBhZGQgdG8gdGhlIGNvbXBvc2VkIHZhbHVlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IHR5cGUgQ29tcG9zZWRGcm9tTWV0YWRhdGEgPSB7XG4gIGFyZ3M6IHN0cmluZ1tdO1xuICBzZXBhcmF0b3I6IHN0cmluZztcbiAgaGFzaFJlc3VsdDogYm9vbGVhbjtcbiAgdHlwZTogXCJrZXlzXCIgfCBcInZhbHVlc1wiO1xuICBwcmVmaXg/OiBzdHJpbmc7XG4gIHN1ZmZpeD86IHN0cmluZztcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvc2VzIGEgcHJvcGVydHkgdmFsdWUgZnJvbSBvdGhlciBwcm9wZXJ0aWVzIGR1cmluZyBjcmVhdGUgb3IgdXBkYXRlIG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IENhbGxiYWNrIGZ1bmN0aW9uIHVzZWQgYnkgY29tcG9zZWQgZGVjb3JhdG9ycyB0byBnZW5lcmF0ZSBhIHByb3BlcnR5IHZhbHVlIGZyb20gb3RoZXIgcHJvcGVydGllc1xuICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHRlbXBsYXRlIFIgLSBUeXBlIGV4dGVuZGluZyBJUmVwb3NpdG9yeVxuICogQHRlbXBsYXRlIFYgLSBUeXBlIGV4dGVuZGluZyBDb21wb3NlZEZyb21NZXRhZGF0YVxuICogQHRlbXBsYXRlIEYgLSBUeXBlIGV4dGVuZGluZyBSZXBvc2l0b3J5RmxhZ3NcbiAqIEB0ZW1wbGF0ZSBDIC0gVHlwZSBleHRlbmRpbmcgQ29udGV4dFxuICogQHBhcmFtIHtDfSBjb250ZXh0IC0gVGhlIG9wZXJhdGlvbiBjb250ZXh0XG4gKiBAcGFyYW0ge1Z9IGRhdGEgLSBNZXRhZGF0YSBmb3IgdGhlIGNvbXBvc2l0aW9uXG4gKiBAcGFyYW0ga2V5IC0gVGhlIHByb3BlcnR5IGtleSB0byBzZXQgdGhlIGNvbXBvc2VkIHZhbHVlIG9uXG4gKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGJlaW5nIHByb2Nlc3NlZFxuICogQHJldHVybiB7dm9pZH1cbiAqIEBmdW5jdGlvbiBjb21wb3NlZEZyb21DcmVhdGVVcGRhdGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZWRGcm9tQ3JlYXRlVXBkYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBJUmVwb3NpdG9yeTxNLCBGLCBDPixcbiAgViBleHRlbmRzIENvbXBvc2VkRnJvbU1ldGFkYXRhLFxuICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzID0gUmVwb3NpdG9yeUZsYWdzLFxuICBDIGV4dGVuZHMgQ29udGV4dDxGPiA9IENvbnRleHQ8Rj4sXG4+KHRoaXM6IFIsIGNvbnRleHQ6IEMsIGRhdGE6IFYsIGtleToga2V5b2YgTSwgbW9kZWw6IE0pIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7IGFyZ3MsIHR5cGUsIHByZWZpeCwgc3VmZml4LCBzZXBhcmF0b3IgfSA9IGRhdGE7XG4gICAgY29uc3QgY29tcG9zZWQgPSBhcmdzLm1hcCgoYXJnOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghKGFyZyBpbiBtb2RlbCkpXG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBQcm9wZXJ0eSAke2FyZ30gbm90IGZvdW5kIHRvIGNvbXBvc2UgZnJvbWApO1xuICAgICAgaWYgKHR5cGUgPT09IFwia2V5c1wiKSByZXR1cm4gYXJnO1xuICAgICAgaWYgKHR5cGVvZiAobW9kZWwgYXMgYW55KVthcmddID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICBgUHJvcGVydHkgJHthcmdzfSBkb2VzIG5vdCBjb250YWluIGEgdmFsdWUgdG8gY29tcG9zZSBmcm9tYFxuICAgICAgICApO1xuICAgICAgcmV0dXJuICgobW9kZWwgYXMgYW55KVthcmddIGFzIGFueSkudG9TdHJpbmcoKTtcbiAgICB9KTtcblxuICAgIGlmIChwcmVmaXgpIGNvbXBvc2VkLnVuc2hpZnQocHJlZml4KTtcbiAgICBpZiAoc3VmZml4KSBjb21wb3NlZC5wdXNoKHN1ZmZpeCk7XG5cbiAgICAobW9kZWwgYXMgYW55KVtrZXldID0gY29tcG9zZWQuam9pbihzZXBhcmF0b3IpO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgRmFpbGVkIHRvIGNvbXBvc2UgdmFsdWU6ICR7ZX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgZGVjb3JhdG9yIHRoYXQgY29tcG9zZXMgYSBwcm9wZXJ0eSB2YWx1ZSBmcm9tIG90aGVyIHByb3BlcnRpZXNcbiAqIEBzdW1tYXJ5IEJhc2UgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIHByb3BlcnR5IGNvbXBvc2l0aW9uIGRlY29yYXRvcnNcbiAqIEBwYXJhbSB7c3RyaW5nW119IGFyZ3MgLSBQcm9wZXJ0eSBuYW1lcyB0byBjb21wb3NlIGZyb21cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2hhc2hSZXN1bHQ9ZmFsc2VdIC0gV2hldGhlciB0byBoYXNoIHRoZSBjb21wb3NlZCByZXN1bHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc2VwYXJhdG9yPURlZmF1bHRTZXBhcmF0b3JdIC0gQ2hhcmFjdGVyIHVzZWQgdG8gam9pbiB0aGUgY29tcG9zZWQgdmFsdWVzXG4gKiBAcGFyYW0ge1wia2V5c1wifFwidmFsdWVzXCJ9IFt0eXBlPVwidmFsdWVzXCJdIC0gV2hldGhlciB0byB1c2UgcHJvcGVydHkga2V5cyBvciB2YWx1ZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcHJlZml4PVwiXCJdIC0gT3B0aW9uYWwgcHJlZml4IHRvIGFkZCB0byB0aGUgY29tcG9zZWQgdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3VmZml4PVwiXCJdIC0gT3B0aW9uYWwgc3VmZml4IHRvIGFkZCB0byB0aGUgY29tcG9zZWQgdmFsdWVcbiAqIEByZXR1cm4ge1Byb3BlcnR5RGVjb3JhdG9yfSBBIGRlY29yYXRvciB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGNsYXNzIHByb3BlcnRpZXNcbiAqIEBmdW5jdGlvbiBjb21wb3NlZEZyb21cbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eURlY29yYXRvcnNcbiAqL1xuZnVuY3Rpb24gY29tcG9zZWRGcm9tKFxuICBhcmdzOiBzdHJpbmdbXSxcbiAgaGFzaFJlc3VsdDogYm9vbGVhbiA9IGZhbHNlLFxuICBzZXBhcmF0b3I6IHN0cmluZyA9IERlZmF1bHRTZXBhcmF0b3IsXG4gIHR5cGU6IFwia2V5c1wiIHwgXCJ2YWx1ZXNcIiA9IFwidmFsdWVzXCIsXG4gIHByZWZpeCA9IFwiXCIsXG4gIHN1ZmZpeCA9IFwiXCJcbikge1xuICBjb25zdCBkYXRhOiBDb21wb3NlZEZyb21NZXRhZGF0YSA9IHtcbiAgICBhcmdzOiBhcmdzLFxuICAgIGhhc2hSZXN1bHQ6IGhhc2hSZXN1bHQsXG4gICAgc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gICAgdHlwZTogdHlwZSxcbiAgICBwcmVmaXg6IHByZWZpeCxcbiAgICBzdWZmaXg6IHN1ZmZpeCxcbiAgfTtcblxuICBjb25zdCBkZWNvcmF0b3JzID0gW1xuICAgIG9uQ3JlYXRlVXBkYXRlKGNvbXBvc2VkRnJvbUNyZWF0ZVVwZGF0ZSwgZGF0YSksXG4gICAgcHJvcE1ldGFkYXRhKFJlcG9zaXRvcnkua2V5KERCS2V5cy5DT01QT1NFRCksIGRhdGEpLFxuICBdO1xuICBpZiAoaGFzaFJlc3VsdCkgZGVjb3JhdG9ycy5wdXNoKGhhc2goKSk7XG4gIHJldHVybiBhcHBseSguLi5kZWNvcmF0b3JzKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIGRlY29yYXRvciB0aGF0IGNvbXBvc2VzIGEgcHJvcGVydHkgdmFsdWUgZnJvbSBwcm9wZXJ0eSBrZXlzXG4gKiBAc3VtbWFyeSBEZWNvcmF0b3IgdGhhdCBnZW5lcmF0ZXMgYSBwcm9wZXJ0eSB2YWx1ZSBieSBqb2luaW5nIHRoZSBuYW1lcyBvZiBvdGhlciBwcm9wZXJ0aWVzXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBhcmdzIC0gUHJvcGVydHkgbmFtZXMgdG8gY29tcG9zZSBmcm9tXG4gKiBAcGFyYW0ge3N0cmluZ30gW3NlcGFyYXRvcj1EZWZhdWx0U2VwYXJhdG9yXSAtIENoYXJhY3RlciB1c2VkIHRvIGpvaW4gdGhlIHByb3BlcnR5IG5hbWVzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtoYXNoPWZhbHNlXSAtIFdoZXRoZXIgdG8gaGFzaCB0aGUgY29tcG9zZWQgcmVzdWx0XG4gKiBAcGFyYW0ge3N0cmluZ30gW3ByZWZpeD1cIlwiXSAtIE9wdGlvbmFsIHByZWZpeCB0byBhZGQgdG8gdGhlIGNvbXBvc2VkIHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW3N1ZmZpeD1cIlwiXSAtIE9wdGlvbmFsIHN1ZmZpeCB0byBhZGQgdG8gdGhlIGNvbXBvc2VkIHZhbHVlXG4gKiBAcmV0dXJuIHtQcm9wZXJ0eURlY29yYXRvcn0gQSBkZWNvcmF0b3IgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBjbGFzcyBwcm9wZXJ0aWVzXG4gKiBAZnVuY3Rpb24gY29tcG9zZWRGcm9tS2V5c1xuICogQGNhdGVnb3J5IFByb3BlcnR5RGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZWRGcm9tS2V5cyhcbiAgYXJnczogc3RyaW5nW10sXG4gIHNlcGFyYXRvcjogc3RyaW5nID0gRGVmYXVsdFNlcGFyYXRvcixcbiAgaGFzaDogYm9vbGVhbiA9IGZhbHNlLFxuICBwcmVmaXggPSBcIlwiLFxuICBzdWZmaXggPSBcIlwiXG4pIHtcbiAgcmV0dXJuIGNvbXBvc2VkRnJvbShhcmdzLCBoYXNoLCBzZXBhcmF0b3IsIFwia2V5c1wiLCBwcmVmaXgsIHN1ZmZpeCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBkZWNvcmF0b3IgdGhhdCBjb21wb3NlcyBhIHByb3BlcnR5IHZhbHVlIGZyb20gcHJvcGVydHkgdmFsdWVzXG4gKiBAc3VtbWFyeSBEZWNvcmF0b3IgdGhhdCBnZW5lcmF0ZXMgYSBwcm9wZXJ0eSB2YWx1ZSBieSBqb2luaW5nIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllc1xuICogQHBhcmFtIHtzdHJpbmdbXX0gYXJncyAtIFByb3BlcnR5IG5hbWVzIHdob3NlIHZhbHVlcyB3aWxsIGJlIGNvbXBvc2VkXG4gKiBAcGFyYW0ge3N0cmluZ30gW3NlcGFyYXRvcj1EZWZhdWx0U2VwYXJhdG9yXSAtIENoYXJhY3RlciB1c2VkIHRvIGpvaW4gdGhlIHByb3BlcnR5IHZhbHVlc1xuICogQHBhcmFtIHtib29sZWFufSBbaGFzaD1mYWxzZV0gLSBXaGV0aGVyIHRvIGhhc2ggdGhlIGNvbXBvc2VkIHJlc3VsdFxuICogQHBhcmFtIHtzdHJpbmd9IFtwcmVmaXg9XCJcIl0gLSBPcHRpb25hbCBwcmVmaXggdG8gYWRkIHRvIHRoZSBjb21wb3NlZCB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFtzdWZmaXg9XCJcIl0gLSBPcHRpb25hbCBzdWZmaXggdG8gYWRkIHRvIHRoZSBjb21wb3NlZCB2YWx1ZVxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgZGVjb3JhdG9yIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gY2xhc3MgcHJvcGVydGllc1xuICogQGZ1bmN0aW9uIGNvbXBvc2VkXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHlEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlZChcbiAgYXJnczogc3RyaW5nW10sXG4gIHNlcGFyYXRvcjogc3RyaW5nID0gRGVmYXVsdFNlcGFyYXRvcixcbiAgaGFzaDogYm9vbGVhbiA9IGZhbHNlLFxuICBwcmVmaXggPSBcIlwiLFxuICBzdWZmaXggPSBcIlwiXG4pIHtcbiAgcmV0dXJuIGNvbXBvc2VkRnJvbShhcmdzLCBoYXNoLCBzZXBhcmF0b3IsIFwidmFsdWVzXCIsIHByZWZpeCwgc3VmZml4KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgdXBkYXRlcyBhIHZlcnNpb24gcHJvcGVydHkgZHVyaW5nIG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IEZhY3RvcnkgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgYSBjYWxsYmFjayBmb3IgaW5jcmVtZW50aW5nIHZlcnNpb24gbnVtYmVyc1xuICogQHBhcmFtIHtDcnVkT3BlcmF0aW9uc30gb3BlcmF0aW9uIC0gVGhlIHR5cGUgb2Ygb3BlcmF0aW9uIChDUkVBVEUgb3IgVVBEQVRFKVxuICogQHJldHVybiB7RnVuY3Rpb259IEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCB1cGRhdGVzIHRoZSB2ZXJzaW9uIHByb3BlcnR5XG4gKiBAdGVtcGxhdGUgTSAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gKiBAdGVtcGxhdGUgUiAtIFR5cGUgZXh0ZW5kaW5nIElSZXBvc2l0b3J5XG4gKiBAdGVtcGxhdGUgViAtIFR5cGUgZm9yIG1ldGFkYXRhXG4gKiBAdGVtcGxhdGUgRiAtIFR5cGUgZXh0ZW5kaW5nIFJlcG9zaXRvcnlGbGFnc1xuICogQHRlbXBsYXRlIEMgLSBUeXBlIGV4dGVuZGluZyBDb250ZXh0XG4gKiBAZnVuY3Rpb24gdmVyc2lvbkNyZWF0ZVVwZGF0ZVxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENhbGxlclxuICogICBwYXJ0aWNpcGFudCB2ZXJzaW9uQ3JlYXRlVXBkYXRlXG4gKlxuICogICBDYWxsZXItPj52ZXJzaW9uQ3JlYXRlVXBkYXRlOiBvcGVyYXRpb25cbiAqICAgdmVyc2lvbkNyZWF0ZVVwZGF0ZS0tPj5DYWxsZXI6IGNhbGxiYWNrIGZ1bmN0aW9uXG4gKiAgIE5vdGUgb3ZlciBDYWxsZXIsdmVyc2lvbkNyZWF0ZVVwZGF0ZTogV2hlbiBjYWxsYmFjayBpcyBleGVjdXRlZDpcbiAqICAgQ2FsbGVyLT4+dmVyc2lvbkNyZWF0ZVVwZGF0ZTogY29udGV4dCwgZGF0YSwga2V5LCBtb2RlbFxuICogICBhbHQgb3BlcmF0aW9uIGlzIENSRUFURVxuICogICAgIHZlcnNpb25DcmVhdGVVcGRhdGUtPj52ZXJzaW9uQ3JlYXRlVXBkYXRlOiBzZXQgdmVyc2lvbiB0byAxXG4gKiAgIGVsc2Ugb3BlcmF0aW9uIGlzIFVQREFURVxuICogICAgIHZlcnNpb25DcmVhdGVVcGRhdGUtPj52ZXJzaW9uQ3JlYXRlVXBkYXRlOiBpbmNyZW1lbnQgdmVyc2lvblxuICogICBlbHNlIGludmFsaWQgb3BlcmF0aW9uXG4gKiAgICAgdmVyc2lvbkNyZWF0ZVVwZGF0ZS0+PnZlcnNpb25DcmVhdGVVcGRhdGU6IHRocm93IGVycm9yXG4gKiAgIGVuZFxuICogICB2ZXJzaW9uQ3JlYXRlVXBkYXRlLS0+PkNhbGxlcjogdm9pZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyc2lvbkNyZWF0ZVVwZGF0ZShvcGVyYXRpb246IENydWRPcGVyYXRpb25zKSB7XG4gIHJldHVybiBmdW5jdGlvbiB2ZXJzaW9uQ3JlYXRlVXBkYXRlPFxuICAgIE0gZXh0ZW5kcyBNb2RlbCxcbiAgICBSIGV4dGVuZHMgSVJlcG9zaXRvcnk8TSwgRiwgQz4sXG4gICAgViBleHRlbmRzIG9iamVjdCxcbiAgICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzID0gUmVwb3NpdG9yeUZsYWdzLFxuICAgIEMgZXh0ZW5kcyBDb250ZXh0PEY+ID0gQ29udGV4dDxGPixcbiAgPih0aGlzOiBSLCBjb250ZXh0OiBDLCBkYXRhOiBWLCBrZXk6IGtleW9mIE0sIG1vZGVsOiBNKSB7XG4gICAgdHJ5IHtcbiAgICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7XG4gICAgICAgIGNhc2UgT3BlcmF0aW9uS2V5cy5DUkVBVEU6XG4gICAgICAgICAgKG1vZGVsIGFzIGFueSlba2V5XSA9IDE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT3BlcmF0aW9uS2V5cy5VUERBVEU6XG4gICAgICAgICAgKG1vZGVsIGFzIGFueSlba2V5XSsrO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBJbnZhbGlkIG9wZXJhdGlvbjogJHtvcGVyYXRpb259YCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byB1cGRhdGUgdmVyc2lvbjogJHtlfWApO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIGRlY29yYXRvciBmb3IgdmVyc2lvbmluZyBhIHByb3BlcnR5IGluIGEgbW9kZWxcbiAqIEBzdW1tYXJ5IFRoaXMgZGVjb3JhdG9yIGFwcGxpZXMgbXVsdGlwbGUgc3ViLWRlY29yYXRvcnMgdG8gaGFuZGxlIHZlcnNpb24gbWFuYWdlbWVudCBkdXJpbmcgY3JlYXRlIGFuZCB1cGRhdGUgb3BlcmF0aW9uc1xuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgY29tcG9zaXRlIGRlY29yYXRvciB0aGF0IHNldHMgdGhlIHR5cGUgdG8gTnVtYmVyLCBtYW5hZ2VzIHZlcnNpb24gdXBkYXRlcywgYW5kIGFkZHMgdmVyc2lvbmluZyBtZXRhZGF0YVxuICogQGZ1bmN0aW9uIHZlcnNpb25cbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eURlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcnNpb24oKSB7XG4gIGNvbnN0IGtleSA9IFJlcG9zaXRvcnkua2V5KERCS2V5cy5WRVJTSU9OKTtcbiAgcmV0dXJuIERlY29yYXRpb24uZm9yKGtleSlcbiAgICAuZGVmaW5lKFxuICAgICAgdHlwZShOdW1iZXIubmFtZSksXG4gICAgICBvbkNyZWF0ZSh2ZXJzaW9uQ3JlYXRlVXBkYXRlKE9wZXJhdGlvbktleXMuQ1JFQVRFKSksXG4gICAgICBvblVwZGF0ZSh2ZXJzaW9uQ3JlYXRlVXBkYXRlKE9wZXJhdGlvbktleXMuVVBEQVRFKSksXG4gICAgICBwcm9wTWV0YWRhdGEoa2V5LCB0cnVlKVxuICAgIClcbiAgICAuYXBwbHkoKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIGRlY29yYXRvciB0aGF0IG1hcmtzIGEgcHJvcGVydHkgYXMgdHJhbnNpZW50XG4gKiBAc3VtbWFyeSBEZWNvcmF0b3IgdGhhdCBpbmRpY2F0ZXMgYSBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIHBlcnNpc3RlZCB0byB0aGUgZGF0YWJhc2VcbiAqIEByZXR1cm4ge1Byb3BlcnR5RGVjb3JhdG9yfSBBIGRlY29yYXRvciB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGNsYXNzIHByb3BlcnRpZXNcbiAqIEBmdW5jdGlvbiB0cmFuc2llbnRcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eURlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zaWVudCgpIHtcbiAgY29uc3Qga2V5ID0gUmVwb3NpdG9yeS5rZXkoREJLZXlzLlRSQU5TSUVOVCk7XG4gIHJldHVybiBEZWNvcmF0aW9uLmZvcihrZXkpXG4gICAgLmRlZmluZShmdW5jdGlvbiB0cmFuc2llbnQobW9kZWw6IGFueSwgYXR0cmlidXRlOiBhbnkpIHtcbiAgICAgIHByb3BNZXRhZGF0YShSZXBvc2l0b3J5LmtleShEQktleXMuVFJBTlNJRU5UKSwgdHJ1ZSkobW9kZWwsIGF0dHJpYnV0ZSk7XG4gICAgICBwcm9wTWV0YWRhdGEoUmVwb3NpdG9yeS5rZXkoREJLZXlzLlRSQU5TSUVOVCksIHRydWUpKG1vZGVsLmNvbnN0cnVjdG9yKTtcbiAgICB9KVxuICAgIC5hcHBseSgpO1xufVxuIl19
|
|
@@ -130,7 +130,7 @@ export declare function versionCreateUpdate(operation: CrudOperations): <M exten
|
|
|
130
130
|
* @function version
|
|
131
131
|
* @category PropertyDecorators
|
|
132
132
|
*/
|
|
133
|
-
export declare function version(): (target:
|
|
133
|
+
export declare function version(): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
134
134
|
/**
|
|
135
135
|
* @description Creates a decorator that marks a property as transient
|
|
136
136
|
* @summary Decorator that indicates a property should not be persisted to the database
|
|
@@ -138,4 +138,4 @@ export declare function version(): (target: object, propertyKey?: string | symbo
|
|
|
138
138
|
* @function transient
|
|
139
139
|
* @category PropertyDecorators
|
|
140
140
|
*/
|
|
141
|
-
export declare function transient(): (
|
|
141
|
+
export declare function transient(): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
package/lib/model/model.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbmRpdGlvbmFsQXN5bmMsXG4gIE1vZGVsRXJyb3JEZWZpbml0aW9uLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5cbmRlY2xhcmUgbW9kdWxlIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCIge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgZGVjbGFyZSBpbnRlcmZhY2UgTW9kZWw8QXN5bmMgZXh0ZW5kcyBib29sZWFuID0gZmFsc2U+IHtcbiAgICBoYXNFcnJvcnMoXG4gICAgICBwcmV2aW91c1ZlcnNpb24/OiBNb2RlbCB8IGFueSxcbiAgICAgIC4uLmV4Y2x1c2lvbnM6IGFueVtdXG4gICAgKTogQ29uZGl0aW9uYWxBc3luYzxBc3luYywgTW9kZWxFcnJvckRlZmluaXRpb24gfCB1bmRlZmluZWQ+O1xuICB9XG59XG4iXX0=
|
package/lib/model/model.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ConditionalAsync, ModelErrorDefinition } from "@decaf-ts/decorator-validation";
|
|
2
2
|
declare module "@decaf-ts/decorator-validation" {
|
|
3
|
-
interface Model {
|
|
4
|
-
hasErrors(previousVersion?: Model | any, ...exclusions: any[]): ModelErrorDefinition | undefined
|
|
3
|
+
interface Model<Async extends boolean = false> {
|
|
4
|
+
hasErrors(previousVersion?: Model | any, ...exclusions: any[]): ConditionalAsync<Async, ModelErrorDefinition | undefined>;
|
|
5
5
|
}
|
|
6
6
|
}
|
package/lib/model/overrides.cjs
CHANGED
|
@@ -12,7 +12,6 @@ const validation_1 = require("./validation.cjs");
|
|
|
12
12
|
* @function hasErrors
|
|
13
13
|
* @memberOf module:db-decorators
|
|
14
14
|
*/
|
|
15
|
-
// @ts-expect-error Overriding Model prototype method with dynamic conditional return type.
|
|
16
15
|
decorator_validation_1.Model.prototype.hasErrors = function (previousVersion, ...exclusions) {
|
|
17
16
|
if (previousVersion && !(previousVersion instanceof decorator_validation_1.Model)) {
|
|
18
17
|
exclusions.unshift(previousVersion);
|
|
@@ -33,4 +32,4 @@ decorator_validation_1.Model.prototype.hasErrors = function (previousVersion, ..
|
|
|
33
32
|
// @ts-expect-error Overriding Model prototype method with dynamic conditional return type.
|
|
34
33
|
return (0, validation_1.validateCompare)(previousVersion, this, async, ...exclusions);
|
|
35
34
|
};
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnJpZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL292ZXJyaWRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlFQUl3QztBQUN4QyxpREFBK0M7QUFFL0M7Ozs7Ozs7OztHQVNHO0FBQ0gsNEJBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBRTFCLGVBQXlCLEVBQ3pCLEdBQUcsVUFBaUI7SUFFcEIsSUFBSSxlQUFlLElBQUksQ0FBQyxDQUFDLGVBQWUsWUFBWSw0QkFBSyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxVQUFVLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BDLGVBQWUsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QixNQUFNLElBQUksR0FBRyxJQUFBLCtCQUFRLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBRWxELElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDakQsSUFBSSxZQUFZLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxZQUFZLENBQUM7WUFDdEIsQ0FBQztZQUNELE9BQU8sSUFBQSw0QkFBZSxFQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFRLENBQUM7SUFDWixDQUFDO0lBRUQsSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlO1FBQUUsT0FBTyxJQUFXLENBQUM7SUFFakQsMkZBQTJGO0lBQzNGLE9BQU8sSUFBQSw0QkFBZSxFQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUM7QUFDdEUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTW9kZWwsXG4gIE1vZGVsQ29uZGl0aW9uYWxBc3luYyxcbiAgdmFsaWRhdGUsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHZhbGlkYXRlQ29tcGFyZSB9IGZyb20gXCIuL3ZhbGlkYXRpb25cIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdGVzIHRoZSBtb2RlbCBhbmQgY2hlY2tzIGZvciBlcnJvcnNcbiAqIEBzdW1tYXJ5IFZhbGlkYXRlcyB0aGUgY3VycmVudCBtb2RlbCBzdGF0ZSBhbmQgb3B0aW9uYWxseSBjb21wYXJlcyB3aXRoIGEgcHJldmlvdXMgdmVyc2lvblxuICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHBhcmFtIHtNfGFueX0gW3ByZXZpb3VzVmVyc2lvbl0gLSBPcHRpb25hbCBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZSBtb2RlbCBmb3IgY29tcGFyaXNvblxuICogQHBhcmFtIHsuLi5hbnlbXX0gZXhjbHVzaW9ucyAtIFByb3BlcnRpZXMgdG8gZXhjbHVkZSBmcm9tIHZhbGlkYXRpb25cbiAqIEByZXR1cm4ge01vZGVsRXJyb3JEZWZpbml0aW9ufHVuZGVmaW5lZH0gRXJyb3IgZGVmaW5pdGlvbiBpZiB2YWxpZGF0aW9uIGZhaWxzLCB1bmRlZmluZWQgb3RoZXJ3aXNlXG4gKiBAZnVuY3Rpb24gaGFzRXJyb3JzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuTW9kZWwucHJvdG90eXBlLmhhc0Vycm9ycyA9IGZ1bmN0aW9uIDxNIGV4dGVuZHMgTW9kZWw8dHJ1ZSB8IGZhbHNlPj4oXG4gIHRoaXM6IE0sXG4gIHByZXZpb3VzVmVyc2lvbj86IE0gfCBhbnksXG4gIC4uLmV4Y2x1c2lvbnM6IGFueVtdXG4pOiBNb2RlbENvbmRpdGlvbmFsQXN5bmM8TT4ge1xuICBpZiAocHJldmlvdXNWZXJzaW9uICYmICEocHJldmlvdXNWZXJzaW9uIGluc3RhbmNlb2YgTW9kZWwpKSB7XG4gICAgZXhjbHVzaW9ucy51bnNoaWZ0KHByZXZpb3VzVmVyc2lvbik7XG4gICAgcHJldmlvdXNWZXJzaW9uID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgYXN5bmMgPSB0aGlzLmlzQXN5bmMoKTtcbiAgY29uc3QgZXJycyA9IHZhbGlkYXRlKHRoaXMsIGFzeW5jLCAuLi5leGNsdXNpb25zKTtcblxuICBpZiAoYXN5bmMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGVycnMpLnRoZW4oKHJlc29sdmVkRXJycykgPT4ge1xuICAgICAgaWYgKHJlc29sdmVkRXJycyB8fCAhcHJldmlvdXNWZXJzaW9uKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlZEVycnM7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsaWRhdGVDb21wYXJlKHByZXZpb3VzVmVyc2lvbiwgdGhpcywgYXN5bmMsIC4uLmV4Y2x1c2lvbnMpO1xuICAgIH0pIGFzIGFueTtcbiAgfVxuXG4gIGlmIChlcnJzIHx8ICFwcmV2aW91c1ZlcnNpb24pIHJldHVybiBlcnJzIGFzIGFueTtcblxuICAvLyBAdHMtZXhwZWN0LWVycm9yIE92ZXJyaWRpbmcgTW9kZWwgcHJvdG90eXBlIG1ldGhvZCB3aXRoIGR5bmFtaWMgY29uZGl0aW9uYWwgcmV0dXJuIHR5cGUuXG4gIHJldHVybiB2YWxpZGF0ZUNvbXBhcmUocHJldmlvdXNWZXJzaW9uLCB0aGlzLCBhc3luYywgLi4uZXhjbHVzaW9ucyk7XG59O1xuIl19
|