ec2-instance-running-scheduler 0.4.6 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -36,8 +36,9 @@ const SLACK_SECRET_FETCH_OPTIONS = {
36
36
  /**
37
37
  * Whether a secret payload is a JSON object with non-empty Slack `token` and `channel`.
38
38
  *
39
- * `aws-lambda-secret-fetcher` ^0.7 parses JSON with quiet-json-parser; invalid or empty
40
- * JSON falls back to the original string instead of throwing.
39
+ * `aws-lambda-secret-fetcher` ^0.8 parses JSON string secrets with quiet-json-parser
40
+ * (invalid or empty JSON falls back to the original string) and returns binary secrets as
41
+ * `Uint8Array`, which this guard rejects.
41
42
  *
42
43
  * @param value - Value returned by {@link secretFetcher.getSecretValue}.
43
44
  * @returns `true` when `value` is a {@link SlackSecret}.
@@ -361,4 +362,4 @@ exports.handler = (0, durable_execution_sdk_js_1.withDurableExecution)(async (ev
361
362
  results: resultList,
362
363
  };
363
364
  });
364
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmluZy1zY2hlZHVsZXIubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Z1bmNzL3J1bm5pbmctc2NoZWR1bGVyLmxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRzs7O0FBRUgsNEVBQTBGO0FBQzFGLG9EQUs2QjtBQUM3QixvR0FBa0g7QUFDbEgsNENBQTJDO0FBQzNDLHlFQUFzRjtBQUN0Riw2REFBdUU7QUFDdkUsaUZBTXdDO0FBQ3hDLDZFQUEwRztBQUUxRyx5RUFBeUU7QUFDekUsTUFBTSxVQUFVLEdBQUc7SUFDakIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtJQUNsRCxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0NBQzFDLENBQUM7QUFFWDs7Ozs7R0FLRztBQUNILE1BQU0sMEJBQTBCLEdBQTBCO0lBQ3hELFNBQVMsRUFBRSxJQUFJO0lBQ2YsT0FBTyxFQUFFLENBQUM7SUFDVixhQUFhLEVBQUUsR0FBRztDQUNuQixDQUFDO0FBMkJGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFjLEVBQXdCLEVBQUU7SUFDN0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2hELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssRUFB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VSxFQUFFLE1BQU0sQ0FBQyxVQUFVO3dCQUM3QixZQUFZLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztxQkFDckUsQ0FBQyxDQUFDO29CQUNILE1BQU0sS0FBSyxDQUFDO2dCQUNkLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxFQUNELEVBQUUsY0FBYyxFQUFFLENBQ25CLENBQUM7SUFFRixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN6RCxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRTtRQUM5QyxTQUFTLEVBQUUsZUFBZSxDQUFDLE1BQU07UUFDakMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxNQUFNO0tBQy9CLENBQUMsQ0FBQztJQUNILE9BQU87UUFDTCxNQUFNLEVBQUUsV0FBb0I7UUFDNUIsU0FBUyxFQUFFLGVBQWUsQ0FBQyxNQUFNO1FBQ2pDLE9BQU8sRUFBRSxVQUFVO0tBQ3BCLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRUMyIFJ1bm5pbmcgU2NoZWR1bGVyIOKAkyBEdXJhYmxlIEZ1bmN0aW9ucyBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBJbXBsZW1lbnRzIHRoZSBydW5uaW5nLWNvbnRyb2wgZmxvdyB1c2luZyBBV1MgTGFtYmRhIER1cmFibGUgRXhlY3V0aW9uLlxuICogU3RlcCBjaGVja3BvaW50cywgd2FpdCAobm8gY2hhcmdlKSwgYW5kIHBhcmFsbGVsIG1hcCBwcm92aWRlIGEgZmxvdyBlcXVpdmFsZW50IHRvIFN0ZXAgRnVuY3Rpb25zLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvZHVyYWJsZS1leGVjdXRpb24tc2RrLmh0bWxcbiAqL1xuXG5pbXBvcnQgeyB3aXRoRHVyYWJsZUV4ZWN1dGlvbiwgdHlwZSBEdXJhYmxlQ29udGV4dCB9IGZyb20gJ0Bhd3MvZHVyYWJsZS1leGVjdXRpb24tc2RrLWpzJztcbmltcG9ydCB7XG4gIEVDMkNsaWVudCxcbiAgRGVzY3JpYmVJbnN0YW5jZXNDb21tYW5kLFxuICBTdGFydEluc3RhbmNlc0NvbW1hbmQsXG4gIFN0b3BJbnN0YW5jZXNDb21tYW5kLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtZWMyJztcbmltcG9ydCB7IEdldFJlc291cmNlc0NvbW1hbmQsIFJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSUNsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1yZXNvdXJjZS1ncm91cHMtdGFnZ2luZy1hcGknO1xuaW1wb3J0IHsgV2ViQ2xpZW50IH0gZnJvbSAnQHNsYWNrL3dlYi1hcGknO1xuaW1wb3J0IHsgc2VjcmV0RmV0Y2hlciwgdHlwZSBHZXRTZWNyZXRWYWx1ZU9wdGlvbnMgfSBmcm9tICdhd3MtbGFtYmRhLXNlY3JldC1mZXRjaGVyJztcbmltcG9ydCB7IFN0cmljdEVudlJlc29sdmVyLCBTdHJpY3RFbnZUeXBlIH0gZnJvbSAnc3RyaWN0LWVudi1yZXNvbHZlcic7XG5pbXBvcnQge1xuICBmb3JtYXRSZXNvdXJjZVdhaXRGYWlsdXJlLFxuICBnZXRXYWl0QWJvcnRSZWFzb24sXG4gIGlzRGVzaXJlZFN0YWJsZVN0YXRlLFxuICBpc1RyYW5zaXRpb25pbmdTdGF0ZSxcbiAgdHlwZSBSZXNvdXJjZVdhaXRMaW1pdHMsXG59IGZyb20gJy4vcnVubmluZy1zY2hlZHVsZXItcHJlZGljYXRlcyc7XG5pbXBvcnQgeyBwYXJzZU1heENvbmN1cnJlbmN5RnJvbUVudiwgcGFyc2VSZXNvdXJjZVdhaXRMaW1pdHNGcm9tRW52IH0gZnJvbSAnLi9ydW5uaW5nLXNjaGVkdWxlci13YWl0LWVudic7XG5cbi8qKiBNYXBwaW5nIG9mIEVDMiBpbnN0YW5jZSBzdGF0ZSB0byBkaXNwbGF5IG5hbWUgYW5kIGVtb2ppIGZvciBTbGFjay4gKi9cbmNvbnN0IFNUQVRFX0xJU1QgPSBbXG4gIHsgbmFtZTogJ1JVTk5JTkcnLCBlbW9qaTogJ/CfmIYnLCBzdGF0ZTogJ3J1bm5pbmcnIH0sXG4gIHsgbmFtZTogJ1NUT1BQRUQnLCBlbW9qaTogJ/CfmLQnLCBzdGF0ZTogJ3N0b3BwZWQnIH0sXG5dIGFzIGNvbnN0O1xuXG4vKipcbiAqIE9wdGlvbnMgcGFzc2VkIHRvIHtAbGluayBzZWNyZXRGZXRjaGVyLmdldFNlY3JldFZhbHVlfSB3aGVuIGxvYWRpbmcgdGhlIFNsYWNrIHNlY3JldC5cbiAqXG4gKiBSZXRyaWVzIGNvdmVyIHRyYW5zaWVudCBleHRlbnNpb24gSFRUUCBlcnJvcnMgKDV4eCwgNDI5KSBhbmQgdGhlIGV4dGVuc2lvblxuICogXCJub3QgcmVhZHkgdG8gc2VydmUgdHJhZmZpY1wiIHJlc3BvbnNlIGR1cmluZyBjb2xkIHN0YXJ0cy5cbiAqL1xuY29uc3QgU0xBQ0tfU0VDUkVUX0ZFVENIX09QVElPTlM6IEdldFNlY3JldFZhbHVlT3B0aW9ucyA9IHtcbiAgdGltZW91dE1zOiAzMDAwLFxuICByZXRyaWVzOiA1LFxuICBiYXNlQmFja29mZk1zOiAzMDAsXG59O1xuXG4vKipcbiAqIEV2ZW50IHBheWxvYWQgZnJvbSBFdmVudEJyaWRnZSBTY2hlZHVsZXIgaW52b2tpbmcgdGhpcyBMYW1iZGEuXG4gKlxuICogQHNlZSB7QGxpbmsgaGFuZGxlcn1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY2hlZHVsZXJFdmVudCB7XG4gIC8qKiBTY2hlZHVsZXIgaW52b2NhdGlvbiBwYXJhbWV0ZXJzICh0YWcgZmlsdGVyIGFuZCBzdGFydC9zdG9wIG1vZGUpLiAqL1xuICBQYXJhbXM6IHtcbiAgICAvKiogVGFnIGtleSB1c2VkIHRvIHNlbGVjdCBFQzIgaW5zdGFuY2VzLiAqL1xuICAgIFRhZ0tleTogc3RyaW5nO1xuICAgIC8qKiBUYWcgdmFsdWVzIHRvIG1hdGNoLiAqL1xuICAgIFRhZ1ZhbHVlczogc3RyaW5nW107XG4gICAgLyoqIFdoZXRoZXIgdG8gc3RhcnQgb3Igc3RvcCBpbnN0YW5jZXMuICovXG4gICAgTW9kZTogJ1N0YXJ0JyB8ICdTdG9wJztcbiAgfTtcbn1cblxuLyoqIFNsYWNrIGNyZWRlbnRpYWxzIGFuZCBkZWZhdWx0IGNoYW5uZWwgbG9hZGVkIGZyb20gU2VjcmV0cyBNYW5hZ2VyIChgU0xBQ0tfU0VDUkVUX05BTUVgKS4gKi9cbmludGVyZmFjZSBTbGFja1NlY3JldCB7XG4gIC8qKiBTbGFjayBib3QgdG9rZW4gZm9yIHRoZSBTbGFjayBgV2ViQ2xpZW50YC4gKi9cbiAgdG9rZW46IHN0cmluZztcbiAgLyoqIENoYW5uZWwgSUQgb3IgbmFtZSBwYXNzZWQgdG8gYGNoYXQucG9zdE1lc3NhZ2VgLiAqL1xuICBjaGFubmVsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogV2hldGhlciBhIHNlY3JldCBwYXlsb2FkIGlzIGEgSlNPTiBvYmplY3Qgd2l0aCBub24tZW1wdHkgU2xhY2sgYHRva2VuYCBhbmQgYGNoYW5uZWxgLlxuICpcbiAqIGBhd3MtbGFtYmRhLXNlY3JldC1mZXRjaGVyYCBeMC43IHBhcnNlcyBKU09OIHdpdGggcXVpZXQtanNvbi1wYXJzZXI7IGludmFsaWQgb3IgZW1wdHlcbiAqIEpTT04gZmFsbHMgYmFjayB0byB0aGUgb3JpZ2luYWwgc3RyaW5nIGluc3RlYWQgb2YgdGhyb3dpbmcuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgcmV0dXJuZWQgYnkge0BsaW5rIHNlY3JldEZldGNoZXIuZ2V0U2VjcmV0VmFsdWV9LlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gYHZhbHVlYCBpcyBhIHtAbGluayBTbGFja1NlY3JldH0uXG4gKi9cbmNvbnN0IGlzU2xhY2tTZWNyZXQgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBTbGFja1NlY3JldCA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICghKCd0b2tlbicgaW4gdmFsdWUpIHx8ICEoJ2NoYW5uZWwnIGluIHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlLnRva2VuICE9PSAnc3RyaW5nJyB8fCB2YWx1ZS50b2tlbiA9PT0gJycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZS5jaGFubmVsICE9PSAnc3RyaW5nJyB8fCB2YWx1ZS5jaGFubmVsID09PSAnJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBkaXNwbGF5IG5hbWUgYW5kIGVtb2ppIGZvciBhbiBFQzIgaW5zdGFuY2Ugc3RhdGUuXG4gKlxuICogQHBhcmFtIGN1cnJlbnQgLSBDdXJyZW50IGluc3RhbmNlIHN0YXRlIChlLmcuICdydW5uaW5nJywgJ3N0b3BwZWQnKS5cbiAqIEByZXR1cm5zIERpc3BsYXkgaW5mbyBvciB1bmRlZmluZWQgaWYgc3RhdGUgaXMgbm90IGluIFNUQVRFX0xJU1QuXG4gKi9cbmNvbnN0IGdldFN0YXRlRGlzcGxheSA9IChjdXJyZW50OiBzdHJpbmcpOiB7IGVtb2ppOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9IHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgZm91bmQgPSBTVEFURV9MSVNULmZpbmQoKHMpID0+IHMuc3RhdGUgPT09IGN1cnJlbnQpO1xuICByZXR1cm4gZm91bmQgPyB7IGVtb2ppOiBmb3VuZC5lbW9qaSwgbmFtZTogZm91bmQubmFtZSB9IDogdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBQcm9jZXNzZXMgb25lIEVDMiBpbnN0YW5jZTogZGVzY3JpYmVzIHN0YXRlLCBpc3N1ZXMgc3RhcnQvc3RvcCB3aGVuIG5lZWRlZCwgdGhlbiB3YWl0cyB1bnRpbFxuICoge0BsaW5rIGlzRGVzaXJlZFN0YWJsZVN0YXRlfSBpcyBzYXRpc2ZpZWQgKGR1cmFibGUgYHN0ZXBgIC8gYHdhaXRgIGJldHdlZW4gYXR0ZW1wdHMpLlxuICpcbiAqIEVhY2ggbG9vcCBpdGVyYXRpb24gY2hlY2tzIHtAbGluayBnZXRXYWl0QWJvcnRSZWFzb259IGJlZm9yZSBkZXNjcmliZS4gRmFpbHVyZXMgdXNlXG4gKiB7QGxpbmsgZm9ybWF0UmVzb3VyY2VXYWl0RmFpbHVyZX0gKGBSZXNvdXJjZVdhaXRGYWlsZWQ6KmAgbWVzc2FnZSBwcmVmaXgpLlxuICpcbiAqIEBwYXJhbSBjdHggLSBEdXJhYmxlIGV4ZWN1dGlvbiBjb250ZXh0IChjaGlsZCBjb250ZXh0IHBlciBpbnN0YW5jZSByZWNvbW1lbmRlZCkuXG4gKiBAcGFyYW0gdGFyZ2V0UmVzb3VyY2UgLSBFQzIgaW5zdGFuY2UgQVJOLlxuICogQHBhcmFtIHBhcmFtcyAtIFNjaGVkdWxlciBwYXJhbXMgKGBUYWdLZXlgLCBgVGFnVmFsdWVzYCwgYE1vZGVgKS5cbiAqIEBwYXJhbSByZXNvdXJjZUluZGV4IC0gSW5kZXggdXNlZCBpbiBkdXJhYmxlIHN0ZXAgbmFtZXMgZm9yIHRoaXMgcmVzb3VyY2UuXG4gKiBAcGFyYW0gd2FpdExpbWl0cyAtIFBlci1pbnN0YW5jZSBjYXBzIGZyb20ge0BsaW5rIHBhcnNlUmVzb3VyY2VXYWl0TGltaXRzRnJvbUVudn0gKHNldCBieSB0aGUgQ0RLIGNvbnN0cnVjdCkuXG4gKiBAcmV0dXJucyBGaW5hbCByZXNvdXJjZSBBUk4sIEVDMiBzdGF0ZSBuYW1lLCBwYXJzZWQgYWNjb3VudCwgcmVnaW9uLCBhbmQgaW5zdGFuY2UgaWQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gV2hlbiB3YWl0IGxpbWl0cyBhcmUgZXhjZWVkZWQgKGBNYXhMb29wQ291bnRFeGNlZWRlZGAsIGBNYXhFbGFwc2VkVGltZUV4Y2VlZGVkYCksXG4gKiAgIHRoZSBpbnN0YW5jZSBpcyBpbiBhbiB1bmV4cGVjdGVkIHN0YXRlIChgVW5leHBlY3RlZEluc3RhbmNlU3RhdGVgKSwgb3IgdGhlIGxvb3AgZXhpdHMgd2l0aG91dCBhIHN0YWJsZSBnb2FsIHN0YXRlLlxuICovXG5jb25zdCBwcm9jZXNzT25lUmVzb3VyY2UgPSBhc3luYyAoXG4gIGN0eDogRHVyYWJsZUNvbnRleHQsXG4gIHRhcmdldFJlc291cmNlOiBzdHJpbmcsXG4gIHBhcmFtczogU2NoZWR1bGVyRXZlbnRbJ1BhcmFtcyddLFxuICByZXNvdXJjZUluZGV4OiBudW1iZXIsXG4gIHdhaXRMaW1pdHM6IFJlc291cmNlV2FpdExpbWl0cyxcbik6IFByb21pc2U8eyByZXNvdXJjZTogc3RyaW5nOyBzdGF0dXM6IHN0cmluZzsgYWNjb3VudDogc3RyaW5nOyByZWdpb246IHN0cmluZzsgaWRlbnRpZmllcjogc3RyaW5nIH0+ID0+IHtcbiAgY29uc3QgcGFydHMgPSB0YXJnZXRSZXNvdXJjZS5zcGxpdCgnLycpO1xuICBjb25zdCBpZGVudGlmaWVyID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gPz8gJ3Vua25vd24nO1xuICBjb25zdCBhcm5QYXJ0cyA9IHRhcmdldFJlc291cmNlLnNwbGl0KCc6Jyk7XG4gIGNvbnN0IGFjY291bnQgPSBhcm5QYXJ0c1s0XSA/PyAnJztcbiAgY29uc3QgcmVnaW9uID0gYXJuUGFydHNbM10gPz8gJyc7XG4gIGNvbnN0IHN0ZXBQcmVmaXggPSBgcmVzb3VyY2UtJHtyZXNvdXJjZUluZGV4fS0ke2lkZW50aWZpZXJ9YDtcblxuICBjdHgubG9nZ2VyLmluZm8oJ3Byb2Nlc3NPbmVSZXNvdXJjZTogc3RhcnQnLCB7XG4gICAgcmVzb3VyY2VJbmRleCxcbiAgICBpZGVudGlmaWVyLFxuICAgIHJlZ2lvbixcbiAgICBhY2NvdW50LFxuICAgIG1vZGU6IHBhcmFtcy5Nb2RlLFxuICAgIG1heExvb3BDb3VudDogd2FpdExpbWl0cy5tYXhMb29wQ291bnQsXG4gICAgbWF4RWxhcHNlZFNlY29uZHM6IHdhaXRMaW1pdHMubWF4RWxhcHNlZFNlY29uZHMsXG4gICAgc3RhdHVzQ2hhbmdlV2FpdFNlY29uZHM6IHdhaXRMaW1pdHMuc3RhdHVzQ2hhbmdlV2FpdFNlY29uZHMsXG4gIH0pO1xuXG4gIGNvbnN0IHN0YXJ0ZWRBdE1zID0gYXdhaXQgY3R4LnN0ZXAoYCR7c3RlcFByZWZpeH0td2FpdC1zdGFydGVkLWF0YCwgYXN5bmMgKCkgPT4gRGF0ZS5ub3coKSk7XG5cbiAgbGV0IGxvb3BDb3VudCA9IDA7XG4gIGxldCBjdXJyZW50U3RhdGUgPSAnJztcbiAgZG8ge1xuICAgIGNvbnN0IGFib3J0UmVhc29uID0gYXdhaXQgY3R4LnN0ZXAoYCR7c3RlcFByZWZpeH0td2FpdC1saW1pdC1jaGVjay0ke2xvb3BDb3VudH1gLCBhc3luYyAoKSA9PlxuICAgICAgZ2V0V2FpdEFib3J0UmVhc29uKGxvb3BDb3VudCwgc3RhcnRlZEF0TXMsIERhdGUubm93KCksIHdhaXRMaW1pdHMpLFxuICAgICk7XG4gICAgaWYgKGFib3J0UmVhc29uKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gZm9ybWF0UmVzb3VyY2VXYWl0RmFpbHVyZShhYm9ydFJlYXNvbiwge1xuICAgICAgICBpZGVudGlmaWVyLFxuICAgICAgICBtb2RlOiBwYXJhbXMuTW9kZSxcbiAgICAgICAgY3VycmVudFN0YXRlOiBjdXJyZW50U3RhdGUgfHwgJ3Vua25vd24nLFxuICAgICAgICBsb29wQ291bnQsXG4gICAgICAgIGxpbWl0czogd2FpdExpbWl0cyxcbiAgICAgIH0pO1xuICAgICAgY3R4LmxvZ2dlci5lcnJvcigncHJvY2Vzc09uZVJlc291cmNlOiB3YWl0IGxpbWl0IGV4Y2VlZGVkJywge1xuICAgICAgICBpZGVudGlmaWVyLFxuICAgICAgICBhYm9ydFJlYXNvbixcbiAgICAgICAgbG9vcENvdW50LFxuICAgICAgICBjdXJyZW50U3RhdGUsXG4gICAgICAgIG1heExvb3BDb3VudDogd2FpdExpbWl0cy5tYXhMb29wQ291bnQsXG4gICAgICAgIG1heEVsYXBzZWRTZWNvbmRzOiB3YWl0TGltaXRzLm1heEVsYXBzZWRTZWNvbmRzLFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY3VycmVudFN0YXRlID0gYXdhaXQgY3R4LnN0ZXAoYCR7c3RlcFByZWZpeH0tZGVzY3JpYmUtJHtsb29wQ291bnR9YCwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZWMyID0gbmV3IEVDMkNsaWVudCh7fSk7XG4gICAgICBjb25zdCBvdXQgPSBhd2FpdCBlYzIuc2VuZChuZXcgRGVzY3JpYmVJbnN0YW5jZXNDb21tYW5kKHsgSW5zdGFuY2VJZHM6IFtpZGVudGlmaWVyXSB9KSk7XG4gICAgICByZXR1cm4gb3V0LlJlc2VydmF0aW9ucz8uWzBdPy5JbnN0YW5jZXM/LlswXT8uU3RhdGU/Lk5hbWUgPz8gJ3Vua25vd24nO1xuICAgIH0pO1xuXG4gICAgY3R4LmxvZ2dlci5pbmZvKCdwcm9jZXNzT25lUmVzb3VyY2U6IGRlc2NyaWJlZCcsIHtcbiAgICAgIGlkZW50aWZpZXIsXG4gICAgICBsb29wQ291bnQsXG4gICAgICBjdXJyZW50U3RhdGUsXG4gICAgICBtb2RlOiBwYXJhbXMuTW9kZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IG1vZGUgPSBwYXJhbXMuTW9kZTtcblxuICAgIGlmIChtb2RlID09PSAnU3RhcnQnICYmIGN1cnJlbnRTdGF0ZSA9PT0gJ3N0b3BwZWQnKSB7XG4gICAgICBjdHgubG9nZ2VyLmluZm8oJ3Byb2Nlc3NPbmVSZXNvdXJjZTogc3RhcnRpbmcgaW5zdGFuY2UnLCB7IGlkZW50aWZpZXIsIGxvb3BDb3VudCB9KTtcbiAgICAgIGF3YWl0IGN0eC5zdGVwKGAke3N0ZXBQcmVmaXh9LXN0YXJ0LSR7bG9vcENvdW50fWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgZWMyID0gbmV3IEVDMkNsaWVudCh7fSk7XG4gICAgICAgIGF3YWl0IGVjMi5zZW5kKG5ldyBTdGFydEluc3RhbmNlc0NvbW1hbmQoeyBJbnN0YW5jZUlkczogW2lkZW50aWZpZXJdIH0pKTtcbiAgICAgIH0pO1xuICAgICAgY3R4LmxvZ2dlci5pbmZvKCdwcm9jZXNzT25lUmVzb3VyY2U6IHdhaXQgYWZ0ZXIgc3RhcnQnLCB7XG4gICAgICAgIGlkZW50aWZpZXIsXG4gICAgICAgIHNlY29uZHM6IHdhaXRMaW1pdHMuc3RhdHVzQ2hhbmdlV2FpdFNlY29uZHMsXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IGN0eC53YWl0KHsgc2Vjb25kczogd2FpdExpbWl0cy5zdGF0dXNDaGFuZ2VXYWl0U2Vjb25kcyB9KTtcbiAgICAgIGxvb3BDb3VudCArPSAxO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgPT09ICdTdG9wJyAmJiBjdXJyZW50U3RhdGUgPT09ICdydW5uaW5nJykge1xuICAgICAgY3R4LmxvZ2dlci5pbmZvKCdwcm9jZXNzT25lUmVzb3VyY2U6IHN0b3BwaW5nIGluc3RhbmNlJywgeyBpZGVudGlmaWVyLCBsb29wQ291bnQgfSk7XG4gICAgICBhd2FpdCBjdHguc3RlcChgJHtzdGVwUHJlZml4fS1zdG9wLSR7bG9vcENvdW50fWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgZWMyID0gbmV3IEVDMkNsaWVudCh7fSk7XG4gICAgICAgIGF3YWl0IGVjMi5zZW5kKG5ldyBTdG9wSW5zdGFuY2VzQ29tbWFuZCh7IEluc3RhbmNlSWRzOiBbaWRlbnRpZmllcl0gfSkpO1xuICAgICAgfSk7XG4gICAgICBjdHgubG9nZ2VyLmluZm8oJ3Byb2Nlc3NPbmVSZXNvdXJjZTogd2FpdCBhZnRlciBzdG9wJywge1xuICAgICAgICBpZGVudGlmaWVyLFxuICAgICAgICBzZWNvbmRzOiB3YWl0TGltaXRzLnN0YXR1c0NoYW5nZVdhaXRTZWNvbmRzLFxuICAgICAgfSk7XG4gICAgICBhd2FpdCBjdHgud2FpdCh7IHNlY29uZHM6IHdhaXRMaW1pdHMuc3RhdHVzQ2hhbmdlV2FpdFNlY29uZHMgfSk7XG4gICAgICBsb29wQ291bnQgKz0gMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghaXNEZXNpcmVkU3RhYmxlU3RhdGUobW9kZSwgY3VycmVudFN0YXRlKSkge1xuICAgICAgaWYgKGlzVHJhbnNpdGlvbmluZ1N0YXRlKG1vZGUsIGN1cnJlbnRTdGF0ZSkpIHtcbiAgICAgICAgY3R4LmxvZ2dlci5pbmZvKCdwcm9jZXNzT25lUmVzb3VyY2U6IHdhaXQgd2hpbGUgdHJhbnNpdGlvbmluZycsIHtcbiAgICAgICAgICBpZGVudGlmaWVyLFxuICAgICAgICAgIGxvb3BDb3VudCxcbiAgICAgICAgICBjdXJyZW50U3RhdGUsXG4gICAgICAgICAgbW9kZSxcbiAgICAgICAgICBzZWNvbmRzOiB3YWl0TGltaXRzLnN0YXR1c0NoYW5nZVdhaXRTZWNvbmRzLFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgY3R4LndhaXQoeyBzZWNvbmRzOiB3YWl0TGltaXRzLnN0YXR1c0NoYW5nZVdhaXRTZWNvbmRzIH0pO1xuICAgICAgICBsb29wQ291bnQgKz0gMTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBmb3JtYXRSZXNvdXJjZVdhaXRGYWlsdXJlKCdVbmV4cGVjdGVkSW5zdGFuY2VTdGF0ZScsIHtcbiAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgbW9kZSxcbiAgICAgICAgY3VycmVudFN0YXRlLFxuICAgICAgICBsb29wQ291bnQsXG4gICAgICAgIGxpbWl0czogd2FpdExpbWl0cyxcbiAgICAgIH0pO1xuICAgICAgY3R4LmxvZ2dlci5lcnJvcigncHJvY2Vzc09uZVJlc291cmNlOiB1bmV4cGVjdGVkIHN0YXRlJywge1xuICAgICAgICBpZGVudGlmaWVyLFxuICAgICAgICBtb2RlLFxuICAgICAgICBjdXJyZW50U3RhdGUsXG4gICAgICAgIGxvb3BDb3VudCxcbiAgICAgIH0pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgfSB3aGlsZSAoIWlzRGVzaXJlZFN0YWJsZVN0YXRlKHBhcmFtcy5Nb2RlLCBjdXJyZW50U3RhdGUpKTtcblxuICBjdHgubG9nZ2VyLmluZm8oJ3Byb2Nlc3NPbmVSZXNvdXJjZTogcmVhY2hlZCBkZXNpcmVkIHN0YWJsZSBzdGF0ZScsIHtcbiAgICBpZGVudGlmaWVyLFxuICAgIGZpbmFsU3RhdGU6IGN1cnJlbnRTdGF0ZSxcbiAgICBtb2RlOiBwYXJhbXMuTW9kZSxcbiAgICBsb29wQ291bnQsXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgaWRlbnRpZmllcixcbiAgICBhY2NvdW50LFxuICAgIHJlZ2lvbixcbiAgICByZXNvdXJjZTogdGFyZ2V0UmVzb3VyY2UsXG4gICAgc3RhdHVzOiBjdXJyZW50U3RhdGUsXG4gIH07XG59O1xuXG4vKipcbiAqIER1cmFibGUgTGFtYmRhIGVudHJ5IHBvaW50IGZvciB0aGUgRUMyIHJ1bm5pbmcgc2NoZWR1bGVyLlxuICpcbiAqIFJlc29sdmVzIGluc3RhbmNlcyB2aWEgUmVzb3VyY2UgR3JvdXBzIFRhZ2dpbmcgQVBJLCBydW5zIHtAbGluayBwcm9jZXNzT25lUmVzb3VyY2V9IGZvciBlYWNoIEFSTlxuICogaW4gcGFyYWxsZWwgKGJvdW5kZWQgY29uY3VycmVuY3kpLCBwb3N0cyBhIHBhcmVudCBTbGFjayBtZXNzYWdlIGFuZCBwZXItaW5zdGFuY2UgdGhyZWFkIHJlcGxpZXMsXG4gKiBhbmQgdXNlcyBkdXJhYmxlIGBzdGVwYCAvIGB3YWl0YCAvIGBtYXBgIHNvIHRoZSBydW4gY2FuIHJlc3VtZSBhY3Jvc3Mgc3VzcGVuc2lvbnMuXG4gKlxuICogUmVhZHMgcGVyLWluc3RhbmNlIHdhaXQgbGltaXRzIGZyb20gYFBST0NFU1NfUkVTT1VSQ0VfTUFYX0xPT1BfQ09VTlRgLFxuICogYFBST0NFU1NfUkVTT1VSQ0VfTUFYX0VMQVBTRURfU0VDT05EU2AsIGFuZCBgUFJPQ0VTU19SRVNPVVJDRV9TVEFUVVNfQ0hBTkdFX1dBSVRfU0VDT05EU2BcbiAqIHZpYSB7QGxpbmsgcGFyc2VSZXNvdXJjZVdhaXRMaW1pdHNGcm9tRW52fSwgYW5kIG1hcCBjb25jdXJyZW5jeSBmcm9tXG4gKiBgUFJPQ0VTU19SRVNPVVJDRVNfTUFYX0NPTkNVUlJFTkNZYCB2aWEge0BsaW5rIHBhcnNlTWF4Q29uY3VycmVuY3lGcm9tRW52fS5cbiAqIExvYWRzIHRoZSBTbGFjayBzZWNyZXQgdmlhIHtAbGluayBzZWNyZXRGZXRjaGVyfSAoUGFyYW1ldGVycyBhbmQgU2VjcmV0cyBMYW1iZGEgRXh0ZW5zaW9uKS5cbiAqIFNsYWNrIEFQSSBmYWlsdXJlcyBhcmUgbG9nZ2VkIGFzIGBydW5uaW5nLXNjaGVkdWxlcjogU2xhY2sgcG9zdCBmYWlsZWRgIGZvciBDbG91ZFdhdGNoIGxvZyBmaWx0ZXJzLlxuICpcbiAqIEBwYXJhbSBldmVudCAtIFBheWxvYWQgZnJvbSBFdmVudEJyaWRnZSBTY2hlZHVsZXI7IG11c3QgaW5jbHVkZSBgUGFyYW1zLlRhZ0tleWAsIGBQYXJhbXMuVGFnVmFsdWVzYCwgYFBhcmFtcy5Nb2RlYC5cbiAqIEBwYXJhbSBjdHggLSBSb290IGR1cmFibGUgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcmV0dXJuc1xuICogLSBgeyBzdGF0dXM6ICdUYXJnZXRSZXNvdXJjZXNOb3RGb3VuZCcgfWAgd2hlbiBubyBpbnN0YW5jZXMgbWF0Y2ggdGhlIHRhZyBmaWx0ZXIuXG4gKiAtIGB7IHN0YXR1czogJ0NvbXBsZXRlZCcsIHByb2Nlc3NlZCwgcmVzdWx0cyB9YCB3aGVuIGluc3RhbmNlcyB3ZXJlIGhhbmRsZWQgKGByZXN1bHRzYCBlbnRyaWVzIG1hdGNoIHtAbGluayBwcm9jZXNzT25lUmVzb3VyY2V9IHJldHVybiBzaGFwZSkuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgYFBhcmFtc2AgaXMgaW52YWxpZCwgdGhlIFNsYWNrIHNlY3JldCBpcyBpbmNvbXBsZXRlIG9yIG5vdCBKU09OIHdpdGggYHRva2VuYCBhbmQgYGNoYW5uZWxgLFxuICogICBpbnN0YW5jZSBwcm9jZXNzaW5nIGZhaWxzIChpbmNsdWRpbmcgYFJlc291cmNlV2FpdEZhaWxlZDoqYCBlcnJvcnMpLFxuICogICBvciB0aGUgc2VjcmV0IGNhbm5vdCBiZSByZWFkIGZyb20gdGhlIGV4dGVuc2lvbiAoZS5nLiBvdXRzaWRlIExhbWJkYSBvciBtaXNzaW5nIGBBV1NfU0VTU0lPTl9UT0tFTmApLlxuICogQHRocm93cyB7aW1wb3J0KCdzdHJpY3QtZW52LXJlc29sdmVyJykuU3RyaWN0RW52VmFsaWRhdGlvbkVycm9yfSBXaGVuIHJlcXVpcmVkIGVudiB2YXJzIGFyZSBtaXNzaW5nIG9yIG5vdCBwb3NpdGl2ZSBpbnRlZ2Vycy5cbiAqIEB0aHJvd3Mge2ltcG9ydCgnZmV0Y2gtcmV0cmllcicpLkZldGNoUmV0cmllckh0dHBFcnJvcn0gV2hlbiB0aGUgZXh0ZW5zaW9uIHJldHVybnMgYSBub24tcmV0cmlhYmxlIEhUVFAgZXJyb3IuXG4gKiBAdGhyb3dzIHtpbXBvcnQoJ2ZldGNoLXJldHJpZXInKS5GZXRjaFJldHJpZXJOZXR3b3JrRXJyb3J9IFdoZW4gZXh0ZW5zaW9uIHJlcXVlc3RzIGZhaWwgYXQgdGhlIG5ldHdvcmsgbGV2ZWwuXG4gKiBAdGhyb3dzIHtpbXBvcnQoJ2ZldGNoLXJldHJpZXInKS5GZXRjaFJldHJpZXJBYm9ydEVycm9yfSBXaGVuIGV4dGVuc2lvbiByZXF1ZXN0cyB0aW1lIG91dCBhZnRlciBhbGwgcmV0cmllcy5cbiAqIEB0aHJvd3Mge2ltcG9ydCgnZmV0Y2gtcmV0cmllcicpLkZldGNoUmV0cmllckludmFsaWRPcHRpb25zRXJyb3J9IFdoZW4gc2VjcmV0LWZldGNoIHJldHJ5IG9wdGlvbnMgYXJlIGludmFsaWQuXG4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVyID0gd2l0aER1cmFibGVFeGVjdXRpb24oYXN5bmMgKGV2ZW50OiBTY2hlZHVsZXJFdmVudCwgY3R4OiBEdXJhYmxlQ29udGV4dCkgPT4ge1xuXG4gIGNvbnN0IHBhcmFtcyA9IGV2ZW50LlBhcmFtcztcblxuICBjdHgubG9nZ2VyLmluZm8oJ3J1bm5pbmctc2NoZWR1bGVyOiBpbnZvY2F0aW9uJywge1xuICAgIG1vZGU6IHBhcmFtcz8uTW9kZSxcbiAgICB0YWdLZXk6IHBhcmFtcz8uVGFnS2V5LFxuICAgIHRhZ1ZhbHVlQ291bnQ6IHBhcmFtcz8uVGFnVmFsdWVzPy5sZW5ndGggPz8gMCxcbiAgfSk7XG5cbiAgaWYgKCFwYXJhbXM/LlRhZ0tleSB8fCAhcGFyYW1zPy5UYWdWYWx1ZXMgfHwgIXBhcmFtcz8uTW9kZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBldmVudDogUGFyYW1zLlRhZ0tleSwgUGFyYW1zLlRhZ1ZhbHVlcywgUGFyYW1zLk1vZGUgYXJlIHJlcXVpcmVkLicpO1xuICB9XG5cbiAgY29uc3Qgd2FpdExpbWl0cyA9IHBhcnNlUmVzb3VyY2VXYWl0TGltaXRzRnJvbUVudigpO1xuICBjb25zdCBtYXhDb25jdXJyZW5jeSA9IHBhcnNlTWF4Q29uY3VycmVuY3lGcm9tRW52KCk7XG5cbiAgY29uc3Qgc2xhY2tTZWNyZXROYW1lID0gU3RyaWN0RW52UmVzb2x2ZXIucmVzb2x2ZSgnU0xBQ0tfU0VDUkVUX05BTUUnLCBTdHJpY3RFbnZUeXBlLlN0cmluZyk7XG5cbiAgY29uc3Qgc2xhY2tTZWNyZXRWYWx1ZTogdW5rbm93biA9IGF3YWl0IGN0eC5zdGVwKCdmZXRjaC1zbGFjay1zZWNyZXQnLCBhc3luYyAoKSA9PiB7XG4gICAgY3R4LmxvZ2dlci5pbmZvKCdydW5uaW5nLXNjaGVkdWxlcjogZmV0Y2hpbmcgU2xhY2sgc2VjcmV0JywgeyBzZWNyZXROYW1lOiBzbGFja1NlY3JldE5hbWUgfSk7XG4gICAgcmV0dXJuIHNlY3JldEZldGNoZXIuZ2V0U2VjcmV0VmFsdWUoc2xhY2tTZWNyZXROYW1lLCBTTEFDS19TRUNSRVRfRkVUQ0hfT1BUSU9OUyk7XG4gIH0pO1xuXG4gIGN0eC5sb2dnZXIuaW5mbygncnVubmluZy1zY2hlZHVsZXI6IFNsYWNrIHNlY3JldCBsb2FkZWQnKTtcblxuICBpZiAoIWlzU2xhY2tTZWNyZXQoc2xhY2tTZWNyZXRWYWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NsYWNrIHNlY3JldCBtdXN0IGNvbnRhaW4gdG9rZW4gYW5kIGNoYW5uZWwuJyk7XG4gIH1cblxuICBjb25zdCB0YXJnZXRSZXNvdXJjZXMgPSBhd2FpdCBjdHguc3RlcCgnZ2V0LXRhcmdldC1yZXNvdXJjZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFJlc291cmNlR3JvdXBzVGFnZ2luZ0FQSUNsaWVudCh7fSk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2xpZW50LnNlbmQoXG4gICAgICBuZXcgR2V0UmVzb3VyY2VzQ29tbWFuZCh7XG4gICAgICAgIFJlc291cmNlVHlwZUZpbHRlcnM6IFsnZWMyOmluc3RhbmNlJ10sXG4gICAgICAgIFRhZ0ZpbHRlcnM6IFt7IEtleTogcGFyYW1zLlRhZ0tleSwgVmFsdWVzOiBwYXJhbXMuVGFnVmFsdWVzIH1dLFxuICAgICAgfSksXG4gICAgKTtcbiAgICBjb25zdCBhcm5zID0gKHJlc3VsdC5SZXNvdXJjZVRhZ01hcHBpbmdMaXN0ID8/IFtdKVxuICAgICAgLm1hcCgobTogeyBSZXNvdXJjZUFSTj86IHN0cmluZyB9KSA9PiBtLlJlc291cmNlQVJOKVxuICAgICAgLmZpbHRlcigoYXJuOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBhcm4gaXMgc3RyaW5nID0+IGFybiAhPSBudWxsKTtcbiAgICBjdHgubG9nZ2VyLmluZm8oJ3J1bm5pbmctc2NoZWR1bGVyOiBnZXQtdGFyZ2V0LXJlc291cmNlcyBkb25lJywgeyBjb3VudDogYXJucy5sZW5ndGggfSk7XG4gICAgcmV0dXJuIGFybnM7XG4gIH0pO1xuXG4gIGlmICh0YXJnZXRSZXNvdXJjZXMubGVuZ3RoID09PSAwKSB7XG4gICAgY3R4LmxvZ2dlci5pbmZvKCdydW5uaW5nLXNjaGVkdWxlcjogbm8gbWF0Y2hpbmcgaW5zdGFuY2VzJywgeyB0YWdLZXk6IHBhcmFtcy5UYWdLZXkgfSk7XG4gICAgcmV0dXJuIHsgc3RhdHVzOiAnVGFyZ2V0UmVzb3VyY2VzTm90Rm91bmQnIGFzIGNvbnN0IH07XG4gIH1cblxuICBjb25zdCBjbGllbnQgPSBuZXcgV2ViQ2xpZW50KHNsYWNrU2VjcmV0VmFsdWUudG9rZW4pO1xuICBjb25zdCBjaGFubmVsID0gc2xhY2tTZWNyZXRWYWx1ZS5jaGFubmVsO1xuXG4gIGN0eC5sb2dnZXIuaW5mbygncnVubmluZy1zY2hlZHVsZXI6IHBvc3RpbmcgcGFyZW50IFNsYWNrIG1lc3NhZ2UnLCB7XG4gICAgaW5zdGFuY2VDb3VudDogdGFyZ2V0UmVzb3VyY2VzLmxlbmd0aCxcbiAgfSk7XG5cbiAgLy8gc2VuZCBzbGFjayBtZXNzYWdlXG4gIGNvbnN0IHNsYWNrUGFyZW50TWVzc2FnZVJlc3VsdCA9IGF3YWl0IGN0eC5zdGVwKCdwb3N0LXNsYWNrLW1lc3NhZ2VzJywgYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgY2xpZW50LmNoYXQucG9zdE1lc3NhZ2Uoe1xuICAgICAgICBjaGFubmVsLFxuICAgICAgICB0ZXh0OiBgJHtwYXJhbXMuTW9kZSA9PT0gJ1N0YXJ0JyA/ICfwn5iGIFN0YXJ0cycgOiAn8J+lsSBTdG9wcyd9IHRoZSBzY2hlZHVsZWQgRUMyIEluc3RhbmNlLmAsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgY3R4LmxvZ2dlci5lcnJvcigncnVubmluZy1zY2hlZHVsZXI6IFNsYWNrIHBvc3QgZmFpbGVkJywge1xuICAgICAgICBzdGVwOiAncG9zdC1zbGFjay1tZXNzYWdlcycsXG4gICAgICAgIGNoYW5uZWwsXG4gICAgICAgIGVycm9yTWVzc2FnZTogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH0pO1xuXG4gIGN0eC5sb2dnZXIuaW5mbygncnVubmluZy1zY2hlZHVsZXI6IHBhcmVudCBTbGFjayBtZXNzYWdlIHBvc3RlZCcsIHtcbiAgICB0aHJlYWRUczogc2xhY2tQYXJlbnRNZXNzYWdlUmVzdWx0Py50cyA/PyBudWxsLFxuICB9KTtcblxuICBjdHgubG9nZ2VyLmluZm8oJ3J1bm5pbmctc2NoZWR1bGVyOiBzdGFydGluZyBwYXJhbGxlbCBpbnN0YW5jZSBwcm9jZXNzaW5nJywge1xuICAgIGNvdW50OiB0YXJnZXRSZXNvdXJjZXMubGVuZ3RoLFxuICAgIG1heENvbmN1cnJlbmN5LFxuICB9KTtcblxuICBjb25zdCByZXN1bHRzID0gYXdhaXQgY3R4Lm1hcChcbiAgICB0YXJnZXRSZXNvdXJjZXMsXG4gICAgLy8gYXN5bmMgKGN0eDogRHVyYWJsZUNvbnRleHQsIHRhcmdldFJlc291cmNlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgLy8gICBjdHguc3RlcChgcHJvY2Vzcy1yZXNvdXJjZS0ke2luZGV4fWAsIGFzeW5jICgpID0+XG4gICAgLy8gICAgIHByb2Nlc3NPbmVSZXNvdXJjZShjdHgsIHRhcmdldFJlc291cmNlLCBwYXJhbXMsIGluZGV4KSxcbiAgICAvLyAgICksXG4gICAgYXN5bmMgKG1hcEN0eDogRHVyYWJsZUNvbnRleHQsIHRhcmdldFJlc291cmNlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIHJldHVybiBtYXBDdHgucnVuSW5DaGlsZENvbnRleHQoYHJlc291cmNlLSR7aW5kZXh9YCwgYXN5bmMgKGNoaWxkQ3R4OiBEdXJhYmxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9jZXNzT25lUmVzb3VyY2UoY2hpbGRDdHgsIHRhcmdldFJlc291cmNlLCBwYXJhbXMsIGluZGV4LCB3YWl0TGltaXRzKTtcbiAgICAgICAgLy8gaWYgKHJlc3VsdC5zdGF0dXMgPT09ICdza2lwcGVkJykge1xuICAgICAgICAvLyAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIC8vIH1cbiAgICAgICAgY2hpbGRDdHgubG9nZ2VyLmluZm8oJ3J1bm5pbmctc2NoZWR1bGVyOiBwb3N0aW5nIHRocmVhZCBTbGFjayBtZXNzYWdlJywge1xuICAgICAgICAgIGluZGV4LFxuICAgICAgICAgIGlkZW50aWZpZXI6IHJlc3VsdC5pZGVudGlmaWVyLFxuICAgICAgICAgIHN0YXR1czogcmVzdWx0LnN0YXR1cyxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHNlbmQgc2xhY2sgdGhyZWFkIG1lc3NhZ2VcbiAgICAgICAgYXdhaXQgY2hpbGRDdHguc3RlcCgncG9zdC1zbGFjay1jaGlsZC1tZXNzYWdlcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBkaXNwbGF5ID0gZ2V0U3RhdGVEaXNwbGF5KHJlc3VsdC5zdGF0dXMpO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBjbGllbnQuY2hhdC5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgIGNoYW5uZWwsXG4gICAgICAgICAgICAgIHRocmVhZF90czogc2xhY2tQYXJlbnRNZXNzYWdlUmVzdWx0Py50cyxcbiAgICAgICAgICAgICAgYXR0YWNobWVudHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBjb2xvcjogJyMzNmE2NGYnLFxuICAgICAgICAgICAgICAgICAgcHJldGV4dDogYCR7ZGlzcGxheT8uZW1vaml9IFRoZSBzdGF0dXMgb2YgdGhlIEVDMiBJbnN0YW5jZSAke3Jlc3VsdC5pZGVudGlmaWVyfSBjaGFuZ2VkIHRvICR7ZGlzcGxheT8ubmFtZX0gZHVlIHRvIHRoZSBzY2hlZHVsZS5gLFxuICAgICAgICAgICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICAgICAgICAgIHsgdGl0bGU6ICdBY2NvdW50JywgdmFsdWU6IHJlc3VsdC5hY2NvdW50LCBzaG9ydDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICB7IHRpdGxlOiAnUmVnaW9uJywgdmFsdWU6IHJlc3VsdC5yZWdpb24sIHNob3J0OiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgdGl0bGU6ICdJZGVudGlmaWVyJywgdmFsdWU6IHJlc3VsdC5pZGVudGlmaWVyLCBzaG9ydDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICB7IHRpdGxlOiAnU3RhdHVzJywgdmFsdWU6IChkaXNwbGF5Py5uYW1lID8/ICdVbmtub3duJyksIHNob3J0OiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAgICAgY2hpbGRDdHgubG9nZ2VyLmVycm9yKCdydW5uaW5nLXNjaGVkdWxlcjogU2xhY2sgcG9zdCBmYWlsZWQnLCB7XG4gICAgICAgICAgICAgIHN0ZXA6ICdwb3N0LXNsYWNrLWNoaWxkLW1lc3NhZ2VzJyxcbiAgICAgICAgICAgICAgY2hhbm5lbCxcbiAgICAgICAgICAgICAgaWRlbnRpZmllcjogcmVzdWx0LmlkZW50aWZpZXIsXG4gICAgICAgICAgICAgIGVycm9yTWVzc2FnZTogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSk7XG4gICAgfSxcbiAgICB7IG1heENvbmN1cnJlbmN5IH0sXG4gICk7XG5cbiAgY29uc3QgcmVzdWx0TGlzdCA9IEFycmF5LmlzQXJyYXkocmVzdWx0cykgPyByZXN1bHRzIDogW107XG4gIGN0eC5sb2dnZXIuaW5mbygncnVubmluZy1zY2hlZHVsZXI6IGNvbXBsZXRlZCcsIHtcbiAgICBwcm9jZXNzZWQ6IHRhcmdldFJlc291cmNlcy5sZW5ndGgsXG4gICAgcmVzdWx0Q291bnQ6IHJlc3VsdExpc3QubGVuZ3RoLFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBzdGF0dXM6ICdDb21wbGV0ZWQnIGFzIGNvbnN0LFxuICAgIHByb2Nlc3NlZDogdGFyZ2V0UmVzb3VyY2VzLmxlbmd0aCxcbiAgICByZXN1bHRzOiByZXN1bHRMaXN0LFxuICB9O1xufSk7XG4iXX0=
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmluZy1zY2hlZHVsZXIubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Z1bmNzL3J1bm5pbmctc2NoZWR1bGVyLmxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRzs7O0FBRUgsNEVBQTBGO0FBQzFGLG9EQUs2QjtBQUM3QixvR0FBa0g7QUFDbEgsNENBQTJDO0FBQzNDLHlFQUFzRjtBQUN0Riw2REFBdUU7QUFDdkUsaUZBTXdDO0FBQ3hDLDZFQUEwRztBQUUxRyx5RUFBeUU7QUFDekUsTUFBTSxVQUFVLEdBQUc7SUFDakIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtJQUNsRCxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0NBQzFDLENBQUM7QUFFWDs7Ozs7R0FLRztBQUNILE1BQU0sMEJBQTBCLEdBQTBCO0lBQ3hELFNBQVMsRUFBRSxJQUFJO0lBQ2YsT0FBTyxFQUFFLENBQUM7SUFDVixhQUFhLEVBQUUsR0FBRztDQUNuQixDQUFDO0FBMkJGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBYyxFQUF3QixFQUFFO0lBQzdELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNoRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2pELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLEVB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QVUsRUFBRSxNQUFNLENBQUMsVUFBVTt3QkFDN0IsWUFBWSxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7cUJBQ3JFLENBQUMsQ0FBQztvQkFDSCxNQUFNLEtBQUssQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsRUFDRCxFQUFFLGNBQWMsRUFBRSxDQUNuQixDQUFDO0lBRUYsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDekQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUU7UUFDOUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxNQUFNO1FBQ2pDLFdBQVcsRUFBRSxVQUFVLENBQUMsTUFBTTtLQUMvQixDQUFDLENBQUM7SUFDSCxPQUFPO1FBQ0wsTUFBTSxFQUFFLFdBQW9CO1FBQzVCLFNBQVMsRUFBRSxlQUFlLENBQUMsTUFBTTtRQUNqQyxPQUFPLEVBQUUsVUFBVTtLQUNwQixDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEVDMiBSdW5uaW5nIFNjaGVkdWxlciDigJMgRHVyYWJsZSBGdW5jdGlvbnMgaW1wbGVtZW50YXRpb24uXG4gKlxuICogSW1wbGVtZW50cyB0aGUgcnVubmluZy1jb250cm9sIGZsb3cgdXNpbmcgQVdTIExhbWJkYSBEdXJhYmxlIEV4ZWN1dGlvbi5cbiAqIFN0ZXAgY2hlY2twb2ludHMsIHdhaXQgKG5vIGNoYXJnZSksIGFuZCBwYXJhbGxlbCBtYXAgcHJvdmlkZSBhIGZsb3cgZXF1aXZhbGVudCB0byBTdGVwIEZ1bmN0aW9ucy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2R1cmFibGUtZXhlY3V0aW9uLXNkay5odG1sXG4gKi9cblxuaW1wb3J0IHsgd2l0aER1cmFibGVFeGVjdXRpb24sIHR5cGUgRHVyYWJsZUNvbnRleHQgfSBmcm9tICdAYXdzL2R1cmFibGUtZXhlY3V0aW9uLXNkay1qcyc7XG5pbXBvcnQge1xuICBFQzJDbGllbnQsXG4gIERlc2NyaWJlSW5zdGFuY2VzQ29tbWFuZCxcbiAgU3RhcnRJbnN0YW5jZXNDb21tYW5kLFxuICBTdG9wSW5zdGFuY2VzQ29tbWFuZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWVjMic7XG5pbXBvcnQgeyBHZXRSZXNvdXJjZXNDb21tYW5kLCBSZXNvdXJjZUdyb3Vwc1RhZ2dpbmdBUElDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtcmVzb3VyY2UtZ3JvdXBzLXRhZ2dpbmctYXBpJztcbmltcG9ydCB7IFdlYkNsaWVudCB9IGZyb20gJ0BzbGFjay93ZWItYXBpJztcbmltcG9ydCB7IHNlY3JldEZldGNoZXIsIHR5cGUgR2V0U2VjcmV0VmFsdWVPcHRpb25zIH0gZnJvbSAnYXdzLWxhbWJkYS1zZWNyZXQtZmV0Y2hlcic7XG5pbXBvcnQgeyBTdHJpY3RFbnZSZXNvbHZlciwgU3RyaWN0RW52VHlwZSB9IGZyb20gJ3N0cmljdC1lbnYtcmVzb2x2ZXInO1xuaW1wb3J0IHtcbiAgZm9ybWF0UmVzb3VyY2VXYWl0RmFpbHVyZSxcbiAgZ2V0V2FpdEFib3J0UmVhc29uLFxuICBpc0Rlc2lyZWRTdGFibGVTdGF0ZSxcbiAgaXNUcmFuc2l0aW9uaW5nU3RhdGUsXG4gIHR5cGUgUmVzb3VyY2VXYWl0TGltaXRzLFxufSBmcm9tICcuL3J1bm5pbmctc2NoZWR1bGVyLXByZWRpY2F0ZXMnO1xuaW1wb3J0IHsgcGFyc2VNYXhDb25jdXJyZW5jeUZyb21FbnYsIHBhcnNlUmVzb3VyY2VXYWl0TGltaXRzRnJvbUVudiB9IGZyb20gJy4vcnVubmluZy1zY2hlZHVsZXItd2FpdC1lbnYnO1xuXG4vKiogTWFwcGluZyBvZiBFQzIgaW5zdGFuY2Ugc3RhdGUgdG8gZGlzcGxheSBuYW1lIGFuZCBlbW9qaSBmb3IgU2xhY2suICovXG5jb25zdCBTVEFURV9MSVNUID0gW1xuICB7IG5hbWU6ICdSVU5OSU5HJywgZW1vamk6ICfwn5iGJywgc3RhdGU6ICdydW5uaW5nJyB9LFxuICB7IG5hbWU6ICdTVE9QUEVEJywgZW1vamk6ICfwn5i0Jywgc3RhdGU6ICdzdG9wcGVkJyB9LFxuXSBhcyBjb25zdDtcblxuLyoqXG4gKiBPcHRpb25zIHBhc3NlZCB0byB7QGxpbmsgc2VjcmV0RmV0Y2hlci5nZXRTZWNyZXRWYWx1ZX0gd2hlbiBsb2FkaW5nIHRoZSBTbGFjayBzZWNyZXQuXG4gKlxuICogUmV0cmllcyBjb3ZlciB0cmFuc2llbnQgZXh0ZW5zaW9uIEhUVFAgZXJyb3JzICg1eHgsIDQyOSkgYW5kIHRoZSBleHRlbnNpb25cbiAqIFwibm90IHJlYWR5IHRvIHNlcnZlIHRyYWZmaWNcIiByZXNwb25zZSBkdXJpbmcgY29sZCBzdGFydHMuXG4gKi9cbmNvbnN0IFNMQUNLX1NFQ1JFVF9GRVRDSF9PUFRJT05TOiBHZXRTZWNyZXRWYWx1ZU9wdGlvbnMgPSB7XG4gIHRpbWVvdXRNczogMzAwMCxcbiAgcmV0cmllczogNSxcbiAgYmFzZUJhY2tvZmZNczogMzAwLFxufTtcblxuLyoqXG4gKiBFdmVudCBwYXlsb2FkIGZyb20gRXZlbnRCcmlkZ2UgU2NoZWR1bGVyIGludm9raW5nIHRoaXMgTGFtYmRhLlxuICpcbiAqIEBzZWUge0BsaW5rIGhhbmRsZXJ9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVyRXZlbnQge1xuICAvKiogU2NoZWR1bGVyIGludm9jYXRpb24gcGFyYW1ldGVycyAodGFnIGZpbHRlciBhbmQgc3RhcnQvc3RvcCBtb2RlKS4gKi9cbiAgUGFyYW1zOiB7XG4gICAgLyoqIFRhZyBrZXkgdXNlZCB0byBzZWxlY3QgRUMyIGluc3RhbmNlcy4gKi9cbiAgICBUYWdLZXk6IHN0cmluZztcbiAgICAvKiogVGFnIHZhbHVlcyB0byBtYXRjaC4gKi9cbiAgICBUYWdWYWx1ZXM6IHN0cmluZ1tdO1xuICAgIC8qKiBXaGV0aGVyIHRvIHN0YXJ0IG9yIHN0b3AgaW5zdGFuY2VzLiAqL1xuICAgIE1vZGU6ICdTdGFydCcgfCAnU3RvcCc7XG4gIH07XG59XG5cbi8qKiBTbGFjayBjcmVkZW50aWFscyBhbmQgZGVmYXVsdCBjaGFubmVsIGxvYWRlZCBmcm9tIFNlY3JldHMgTWFuYWdlciAoYFNMQUNLX1NFQ1JFVF9OQU1FYCkuICovXG5pbnRlcmZhY2UgU2xhY2tTZWNyZXQge1xuICAvKiogU2xhY2sgYm90IHRva2VuIGZvciB0aGUgU2xhY2sgYFdlYkNsaWVudGAuICovXG4gIHRva2VuOiBzdHJpbmc7XG4gIC8qKiBDaGFubmVsIElEIG9yIG5hbWUgcGFzc2VkIHRvIGBjaGF0LnBvc3RNZXNzYWdlYC4gKi9cbiAgY2hhbm5lbDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgYSBzZWNyZXQgcGF5bG9hZCBpcyBhIEpTT04gb2JqZWN0IHdpdGggbm9uLWVtcHR5IFNsYWNrIGB0b2tlbmAgYW5kIGBjaGFubmVsYC5cbiAqXG4gKiBgYXdzLWxhbWJkYS1zZWNyZXQtZmV0Y2hlcmAgXjAuOCBwYXJzZXMgSlNPTiBzdHJpbmcgc2VjcmV0cyB3aXRoIHF1aWV0LWpzb24tcGFyc2VyXG4gKiAoaW52YWxpZCBvciBlbXB0eSBKU09OIGZhbGxzIGJhY2sgdG8gdGhlIG9yaWdpbmFsIHN0cmluZykgYW5kIHJldHVybnMgYmluYXJ5IHNlY3JldHMgYXNcbiAqIGBVaW50OEFycmF5YCwgd2hpY2ggdGhpcyBndWFyZCByZWplY3RzLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHJldHVybmVkIGJ5IHtAbGluayBzZWNyZXRGZXRjaGVyLmdldFNlY3JldFZhbHVlfS5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIGB2YWx1ZWAgaXMgYSB7QGxpbmsgU2xhY2tTZWNyZXR9LlxuICovXG5jb25zdCBpc1NsYWNrU2VjcmV0ID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgU2xhY2tTZWNyZXQgPT4ge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoISgndG9rZW4nIGluIHZhbHVlKSB8fCAhKCdjaGFubmVsJyBpbiB2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZS50b2tlbiAhPT0gJ3N0cmluZycgfHwgdmFsdWUudG9rZW4gPT09ICcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUuY2hhbm5lbCAhPT0gJ3N0cmluZycgfHwgdmFsdWUuY2hhbm5lbCA9PT0gJycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vKipcbiAqIFJldHVybnMgZGlzcGxheSBuYW1lIGFuZCBlbW9qaSBmb3IgYW4gRUMyIGluc3RhbmNlIHN0YXRlLlxuICpcbiAqIEBwYXJhbSBjdXJyZW50IC0gQ3VycmVudCBpbnN0YW5jZSBzdGF0ZSAoZS5nLiAncnVubmluZycsICdzdG9wcGVkJykuXG4gKiBAcmV0dXJucyBEaXNwbGF5IGluZm8gb3IgdW5kZWZpbmVkIGlmIHN0YXRlIGlzIG5vdCBpbiBTVEFURV9MSVNULlxuICovXG5jb25zdCBnZXRTdGF0ZURpc3BsYXkgPSAoY3VycmVudDogc3RyaW5nKTogeyBlbW9qaTogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGZvdW5kID0gU1RBVEVfTElTVC5maW5kKChzKSA9PiBzLnN0YXRlID09PSBjdXJyZW50KTtcbiAgcmV0dXJuIGZvdW5kID8geyBlbW9qaTogZm91bmQuZW1vamksIG5hbWU6IGZvdW5kLm5hbWUgfSA6IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogUHJvY2Vzc2VzIG9uZSBFQzIgaW5zdGFuY2U6IGRlc2NyaWJlcyBzdGF0ZSwgaXNzdWVzIHN0YXJ0L3N0b3Agd2hlbiBuZWVkZWQsIHRoZW4gd2FpdHMgdW50aWxcbiAqIHtAbGluayBpc0Rlc2lyZWRTdGFibGVTdGF0ZX0gaXMgc2F0aXNmaWVkIChkdXJhYmxlIGBzdGVwYCAvIGB3YWl0YCBiZXR3ZWVuIGF0dGVtcHRzKS5cbiAqXG4gKiBFYWNoIGxvb3AgaXRlcmF0aW9uIGNoZWNrcyB7QGxpbmsgZ2V0V2FpdEFib3J0UmVhc29ufSBiZWZvcmUgZGVzY3JpYmUuIEZhaWx1cmVzIHVzZVxuICoge0BsaW5rIGZvcm1hdFJlc291cmNlV2FpdEZhaWx1cmV9IChgUmVzb3VyY2VXYWl0RmFpbGVkOipgIG1lc3NhZ2UgcHJlZml4KS5cbiAqXG4gKiBAcGFyYW0gY3R4IC0gRHVyYWJsZSBleGVjdXRpb24gY29udGV4dCAoY2hpbGQgY29udGV4dCBwZXIgaW5zdGFuY2UgcmVjb21tZW5kZWQpLlxuICogQHBhcmFtIHRhcmdldFJlc291cmNlIC0gRUMyIGluc3RhbmNlIEFSTi5cbiAqIEBwYXJhbSBwYXJhbXMgLSBTY2hlZHVsZXIgcGFyYW1zIChgVGFnS2V5YCwgYFRhZ1ZhbHVlc2AsIGBNb2RlYCkuXG4gKiBAcGFyYW0gcmVzb3VyY2VJbmRleCAtIEluZGV4IHVzZWQgaW4gZHVyYWJsZSBzdGVwIG5hbWVzIGZvciB0aGlzIHJlc291cmNlLlxuICogQHBhcmFtIHdhaXRMaW1pdHMgLSBQZXItaW5zdGFuY2UgY2FwcyBmcm9tIHtAbGluayBwYXJzZVJlc291cmNlV2FpdExpbWl0c0Zyb21FbnZ9IChzZXQgYnkgdGhlIENESyBjb25zdHJ1Y3QpLlxuICogQHJldHVybnMgRmluYWwgcmVzb3VyY2UgQVJOLCBFQzIgc3RhdGUgbmFtZSwgcGFyc2VkIGFjY291bnQsIHJlZ2lvbiwgYW5kIGluc3RhbmNlIGlkLlxuICogQHRocm93cyB7RXJyb3J9IFdoZW4gd2FpdCBsaW1pdHMgYXJlIGV4Y2VlZGVkIChgTWF4TG9vcENvdW50RXhjZWVkZWRgLCBgTWF4RWxhcHNlZFRpbWVFeGNlZWRlZGApLFxuICogICB0aGUgaW5zdGFuY2UgaXMgaW4gYW4gdW5leHBlY3RlZCBzdGF0ZSAoYFVuZXhwZWN0ZWRJbnN0YW5jZVN0YXRlYCksIG9yIHRoZSBsb29wIGV4aXRzIHdpdGhvdXQgYSBzdGFibGUgZ29hbCBzdGF0ZS5cbiAqL1xuY29uc3QgcHJvY2Vzc09uZVJlc291cmNlID0gYXN5bmMgKFxuICBjdHg6IER1cmFibGVDb250ZXh0LFxuICB0YXJnZXRSZXNvdXJjZTogc3RyaW5nLFxuICBwYXJhbXM6IFNjaGVkdWxlckV2ZW50WydQYXJhbXMnXSxcbiAgcmVzb3VyY2VJbmRleDogbnVtYmVyLFxuICB3YWl0TGltaXRzOiBSZXNvdXJjZVdhaXRMaW1pdHMsXG4pOiBQcm9taXNlPHsgcmVzb3VyY2U6IHN0cmluZzsgc3RhdHVzOiBzdHJpbmc7IGFjY291bnQ6IHN0cmluZzsgcmVnaW9uOiBzdHJpbmc7IGlkZW50aWZpZXI6IHN0cmluZyB9PiA9PiB7XG4gIGNvbnN0IHBhcnRzID0gdGFyZ2V0UmVzb3VyY2Uuc3BsaXQoJy8nKTtcbiAgY29uc3QgaWRlbnRpZmllciA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdID8/ICd1bmtub3duJztcbiAgY29uc3QgYXJuUGFydHMgPSB0YXJnZXRSZXNvdXJjZS5zcGxpdCgnOicpO1xuICBjb25zdCBhY2NvdW50ID0gYXJuUGFydHNbNF0gPz8gJyc7XG4gIGNvbnN0IHJlZ2lvbiA9IGFyblBhcnRzWzNdID8/ICcnO1xuICBjb25zdCBzdGVwUHJlZml4ID0gYHJlc291cmNlLSR7cmVzb3VyY2VJbmRleH0tJHtpZGVudGlmaWVyfWA7XG5cbiAgY3R4LmxvZ2dlci5pbmZvKCdwcm9jZXNzT25lUmVzb3VyY2U6IHN0YXJ0Jywge1xuICAgIHJlc291cmNlSW5kZXgsXG4gICAgaWRlbnRpZmllcixcbiAgICByZWdpb24sXG4gICAgYWNjb3VudCxcbiAgICBtb2RlOiBwYXJhbXMuTW9kZSxcbiAgICBtYXhMb29wQ291bnQ6IHdhaXRMaW1pdHMubWF4TG9vcENvdW50LFxuICAgIG1heEVsYXBzZWRTZWNvbmRzOiB3YWl0TGltaXRzLm1heEVsYXBzZWRTZWNvbmRzLFxuICAgIHN0YXR1c0NoYW5nZVdhaXRTZWNvbmRzOiB3YWl0TGltaXRzLnN0YXR1c0NoYW5nZVdhaXRTZWNvbmRzLFxuICB9KTtcblxuICBjb25zdCBzdGFydGVkQXRNcyA9IGF3YWl0IGN0eC5zdGVwKGAke3N0ZXBQcmVmaXh9LXdhaXQtc3RhcnRlZC1hdGAsIGFzeW5jICgpID0+IERhdGUubm93KCkpO1xuXG4gIGxldCBsb29wQ291bnQgPSAwO1xuICBsZXQgY3VycmVudFN0YXRlID0gJyc7XG4gIGRvIHtcbiAgICBjb25zdCBhYm9ydFJlYXNvbiA9IGF3YWl0IGN0eC5zdGVwKGAke3N0ZXBQcmVmaXh9LXdhaXQtbGltaXQtY2hlY2stJHtsb29wQ291bnR9YCwgYXN5bmMgKCkgPT5cbiAgICAgIGdldFdhaXRBYm9ydFJlYXNvbihsb29wQ291bnQsIHN0YXJ0ZWRBdE1zLCBEYXRlLm5vdygpLCB3YWl0TGltaXRzKSxcbiAgICApO1xuICAgIGlmIChhYm9ydFJlYXNvbikge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGZvcm1hdFJlc291cmNlV2FpdEZhaWx1cmUoYWJvcnRSZWFzb24sIHtcbiAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgbW9kZTogcGFyYW1zLk1vZGUsXG4gICAgICAgIGN1cnJlbnRTdGF0ZTogY3VycmVudFN0YXRlIHx8ICd1bmtub3duJyxcbiAgICAgICAgbG9vcENvdW50LFxuICAgICAgICBsaW1pdHM6IHdhaXRMaW1pdHMsXG4gICAgICB9KTtcbiAgICAgIGN0eC5sb2dnZXIuZXJyb3IoJ3Byb2Nlc3NPbmVSZXNvdXJjZTogd2FpdCBsaW1pdCBleGNlZWRlZCcsIHtcbiAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgYWJvcnRSZWFzb24sXG4gICAgICAgIGxvb3BDb3VudCxcbiAgICAgICAgY3VycmVudFN0YXRlLFxuICAgICAgICBtYXhMb29wQ291bnQ6IHdhaXRMaW1pdHMubWF4TG9vcENvdW50LFxuICAgICAgICBtYXhFbGFwc2VkU2Vjb25kczogd2FpdExpbWl0cy5tYXhFbGFwc2VkU2Vjb25kcyxcbiAgICAgIH0pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGN1cnJlbnRTdGF0ZSA9IGF3YWl0IGN0eC5zdGVwKGAke3N0ZXBQcmVmaXh9LWRlc2NyaWJlLSR7bG9vcENvdW50fWAsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGVjMiA9IG5ldyBFQzJDbGllbnQoe30pO1xuICAgICAgY29uc3Qgb3V0ID0gYXdhaXQgZWMyLnNlbmQobmV3IERlc2NyaWJlSW5zdGFuY2VzQ29tbWFuZCh7IEluc3RhbmNlSWRzOiBbaWRlbnRpZmllcl0gfSkpO1xuICAgICAgcmV0dXJuIG91dC5SZXNlcnZhdGlvbnM/LlswXT8uSW5zdGFuY2VzPy5bMF0/LlN0YXRlPy5OYW1lID8/ICd1bmtub3duJztcbiAgICB9KTtcblxuICAgIGN0eC5sb2dnZXIuaW5mbygncHJvY2Vzc09uZVJlc291cmNlOiBkZXNjcmliZWQnLCB7XG4gICAgICBpZGVudGlmaWVyLFxuICAgICAgbG9vcENvdW50LFxuICAgICAgY3VycmVudFN0YXRlLFxuICAgICAgbW9kZTogcGFyYW1zLk1vZGUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBtb2RlID0gcGFyYW1zLk1vZGU7XG5cbiAgICBpZiAobW9kZSA9PT0gJ1N0YXJ0JyAmJiBjdXJyZW50U3RhdGUgPT09ICdzdG9wcGVkJykge1xuICAgICAgY3R4LmxvZ2dlci5pbmZvKCdwcm9jZXNzT25lUmVzb3VyY2U6IHN0YXJ0aW5nIGluc3RhbmNlJywgeyBpZGVudGlmaWVyLCBsb29wQ291bnQgfSk7XG4gICAgICBhd2FpdCBjdHguc3RlcChgJHtzdGVwUHJlZml4fS1zdGFydC0ke2xvb3BDb3VudH1gLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVjMiA9IG5ldyBFQzJDbGllbnQoe30pO1xuICAgICAgICBhd2FpdCBlYzIuc2VuZChuZXcgU3RhcnRJbnN0YW5jZXNDb21tYW5kKHsgSW5zdGFuY2VJZHM6IFtpZGVudGlmaWVyXSB9KSk7XG4gICAgICB9KTtcbiAgICAgIGN0eC5sb2dnZXIuaW5mbygncHJvY2Vzc09uZVJlc291cmNlOiB3YWl0IGFmdGVyIHN0YXJ0Jywge1xuICAgICAgICBpZGVudGlmaWVyLFxuICAgICAgICBzZWNvbmRzOiB3YWl0TGltaXRzLnN0YXR1c0NoYW5nZVdhaXRTZWNvbmRzLFxuICAgICAgfSk7XG4gICAgICBhd2FpdCBjdHgud2FpdCh7IHNlY29uZHM6IHdhaXRMaW1pdHMuc3RhdHVzQ2hhbmdlV2FpdFNlY29uZHMgfSk7XG4gICAgICBsb29wQ291bnQgKz0gMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChtb2RlID09PSAnU3RvcCcgJiYgY3VycmVudFN0YXRlID09PSAncnVubmluZycpIHtcbiAgICAgIGN0eC5sb2dnZXIuaW5mbygncHJvY2Vzc09uZVJlc291cmNlOiBzdG9wcGluZyBpbnN0YW5jZScsIHsgaWRlbnRpZmllciwgbG9vcENvdW50IH0pO1xuICAgICAgYXdhaXQgY3R4LnN0ZXAoYCR7c3RlcFByZWZpeH0tc3RvcC0ke2xvb3BDb3VudH1gLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVjMiA9IG5ldyBFQzJDbGllbnQoe30pO1xuICAgICAgICBhd2FpdCBlYzIuc2VuZChuZXcgU3RvcEluc3RhbmNlc0NvbW1hbmQoeyBJbnN0YW5jZUlkczogW2lkZW50aWZpZXJdIH0pKTtcbiAgICAgIH0pO1xuICAgICAgY3R4LmxvZ2dlci5pbmZvKCdwcm9jZXNzT25lUmVzb3VyY2U6IHdhaXQgYWZ0ZXIgc3RvcCcsIHtcbiAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgc2Vjb25kczogd2FpdExpbWl0cy5zdGF0dXNDaGFuZ2VXYWl0U2Vjb25kcyxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgY3R4LndhaXQoeyBzZWNvbmRzOiB3YWl0TGltaXRzLnN0YXR1c0NoYW5nZVdhaXRTZWNvbmRzIH0pO1xuICAgICAgbG9vcENvdW50ICs9IDE7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzRGVzaXJlZFN0YWJsZVN0YXRlKG1vZGUsIGN1cnJlbnRTdGF0ZSkpIHtcbiAgICAgIGlmIChpc1RyYW5zaXRpb25pbmdTdGF0ZShtb2RlLCBjdXJyZW50U3RhdGUpKSB7XG4gICAgICAgIGN0eC5sb2dnZXIuaW5mbygncHJvY2Vzc09uZVJlc291cmNlOiB3YWl0IHdoaWxlIHRyYW5zaXRpb25pbmcnLCB7XG4gICAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgICBsb29wQ291bnQsXG4gICAgICAgICAgY3VycmVudFN0YXRlLFxuICAgICAgICAgIG1vZGUsXG4gICAgICAgICAgc2Vjb25kczogd2FpdExpbWl0cy5zdGF0dXNDaGFuZ2VXYWl0U2Vjb25kcyxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IGN0eC53YWl0KHsgc2Vjb25kczogd2FpdExpbWl0cy5zdGF0dXNDaGFuZ2VXYWl0U2Vjb25kcyB9KTtcbiAgICAgICAgbG9vcENvdW50ICs9IDE7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXNzYWdlID0gZm9ybWF0UmVzb3VyY2VXYWl0RmFpbHVyZSgnVW5leHBlY3RlZEluc3RhbmNlU3RhdGUnLCB7XG4gICAgICAgIGlkZW50aWZpZXIsXG4gICAgICAgIG1vZGUsXG4gICAgICAgIGN1cnJlbnRTdGF0ZSxcbiAgICAgICAgbG9vcENvdW50LFxuICAgICAgICBsaW1pdHM6IHdhaXRMaW1pdHMsXG4gICAgICB9KTtcbiAgICAgIGN0eC5sb2dnZXIuZXJyb3IoJ3Byb2Nlc3NPbmVSZXNvdXJjZTogdW5leHBlY3RlZCBzdGF0ZScsIHtcbiAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgbW9kZSxcbiAgICAgICAgY3VycmVudFN0YXRlLFxuICAgICAgICBsb29wQ291bnQsXG4gICAgICB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gIH0gd2hpbGUgKCFpc0Rlc2lyZWRTdGFibGVTdGF0ZShwYXJhbXMuTW9kZSwgY3VycmVudFN0YXRlKSk7XG5cbiAgY3R4LmxvZ2dlci5pbmZvKCdwcm9jZXNzT25lUmVzb3VyY2U6IHJlYWNoZWQgZGVzaXJlZCBzdGFibGUgc3RhdGUnLCB7XG4gICAgaWRlbnRpZmllcixcbiAgICBmaW5hbFN0YXRlOiBjdXJyZW50U3RhdGUsXG4gICAgbW9kZTogcGFyYW1zLk1vZGUsXG4gICAgbG9vcENvdW50LFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGlkZW50aWZpZXIsXG4gICAgYWNjb3VudCxcbiAgICByZWdpb24sXG4gICAgcmVzb3VyY2U6IHRhcmdldFJlc291cmNlLFxuICAgIHN0YXR1czogY3VycmVudFN0YXRlLFxuICB9O1xufTtcblxuLyoqXG4gKiBEdXJhYmxlIExhbWJkYSBlbnRyeSBwb2ludCBmb3IgdGhlIEVDMiBydW5uaW5nIHNjaGVkdWxlci5cbiAqXG4gKiBSZXNvbHZlcyBpbnN0YW5jZXMgdmlhIFJlc291cmNlIEdyb3VwcyBUYWdnaW5nIEFQSSwgcnVucyB7QGxpbmsgcHJvY2Vzc09uZVJlc291cmNlfSBmb3IgZWFjaCBBUk5cbiAqIGluIHBhcmFsbGVsIChib3VuZGVkIGNvbmN1cnJlbmN5KSwgcG9zdHMgYSBwYXJlbnQgU2xhY2sgbWVzc2FnZSBhbmQgcGVyLWluc3RhbmNlIHRocmVhZCByZXBsaWVzLFxuICogYW5kIHVzZXMgZHVyYWJsZSBgc3RlcGAgLyBgd2FpdGAgLyBgbWFwYCBzbyB0aGUgcnVuIGNhbiByZXN1bWUgYWNyb3NzIHN1c3BlbnNpb25zLlxuICpcbiAqIFJlYWRzIHBlci1pbnN0YW5jZSB3YWl0IGxpbWl0cyBmcm9tIGBQUk9DRVNTX1JFU09VUkNFX01BWF9MT09QX0NPVU5UYCxcbiAqIGBQUk9DRVNTX1JFU09VUkNFX01BWF9FTEFQU0VEX1NFQ09ORFNgLCBhbmQgYFBST0NFU1NfUkVTT1VSQ0VfU1RBVFVTX0NIQU5HRV9XQUlUX1NFQ09ORFNgXG4gKiB2aWEge0BsaW5rIHBhcnNlUmVzb3VyY2VXYWl0TGltaXRzRnJvbUVudn0sIGFuZCBtYXAgY29uY3VycmVuY3kgZnJvbVxuICogYFBST0NFU1NfUkVTT1VSQ0VTX01BWF9DT05DVVJSRU5DWWAgdmlhIHtAbGluayBwYXJzZU1heENvbmN1cnJlbmN5RnJvbUVudn0uXG4gKiBMb2FkcyB0aGUgU2xhY2sgc2VjcmV0IHZpYSB7QGxpbmsgc2VjcmV0RmV0Y2hlcn0gKFBhcmFtZXRlcnMgYW5kIFNlY3JldHMgTGFtYmRhIEV4dGVuc2lvbikuXG4gKiBTbGFjayBBUEkgZmFpbHVyZXMgYXJlIGxvZ2dlZCBhcyBgcnVubmluZy1zY2hlZHVsZXI6IFNsYWNrIHBvc3QgZmFpbGVkYCBmb3IgQ2xvdWRXYXRjaCBsb2cgZmlsdGVycy5cbiAqXG4gKiBAcGFyYW0gZXZlbnQgLSBQYXlsb2FkIGZyb20gRXZlbnRCcmlkZ2UgU2NoZWR1bGVyOyBtdXN0IGluY2x1ZGUgYFBhcmFtcy5UYWdLZXlgLCBgUGFyYW1zLlRhZ1ZhbHVlc2AsIGBQYXJhbXMuTW9kZWAuXG4gKiBAcGFyYW0gY3R4IC0gUm9vdCBkdXJhYmxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHJldHVybnNcbiAqIC0gYHsgc3RhdHVzOiAnVGFyZ2V0UmVzb3VyY2VzTm90Rm91bmQnIH1gIHdoZW4gbm8gaW5zdGFuY2VzIG1hdGNoIHRoZSB0YWcgZmlsdGVyLlxuICogLSBgeyBzdGF0dXM6ICdDb21wbGV0ZWQnLCBwcm9jZXNzZWQsIHJlc3VsdHMgfWAgd2hlbiBpbnN0YW5jZXMgd2VyZSBoYW5kbGVkIChgcmVzdWx0c2AgZW50cmllcyBtYXRjaCB7QGxpbmsgcHJvY2Vzc09uZVJlc291cmNlfSByZXR1cm4gc2hhcGUpLlxuICogQHRocm93cyB7RXJyb3J9IElmIGBQYXJhbXNgIGlzIGludmFsaWQsIHRoZSBTbGFjayBzZWNyZXQgaXMgaW5jb21wbGV0ZSBvciBub3QgSlNPTiB3aXRoIGB0b2tlbmAgYW5kIGBjaGFubmVsYCxcbiAqICAgaW5zdGFuY2UgcHJvY2Vzc2luZyBmYWlscyAoaW5jbHVkaW5nIGBSZXNvdXJjZVdhaXRGYWlsZWQ6KmAgZXJyb3JzKSxcbiAqICAgb3IgdGhlIHNlY3JldCBjYW5ub3QgYmUgcmVhZCBmcm9tIHRoZSBleHRlbnNpb24gKGUuZy4gb3V0c2lkZSBMYW1iZGEgb3IgbWlzc2luZyBgQVdTX1NFU1NJT05fVE9LRU5gKS5cbiAqIEB0aHJvd3Mge2ltcG9ydCgnc3RyaWN0LWVudi1yZXNvbHZlcicpLlN0cmljdEVudlZhbGlkYXRpb25FcnJvcn0gV2hlbiByZXF1aXJlZCBlbnYgdmFycyBhcmUgbWlzc2luZyBvciBub3QgcG9zaXRpdmUgaW50ZWdlcnMuXG4gKiBAdGhyb3dzIHtpbXBvcnQoJ2ZldGNoLXJldHJpZXInKS5GZXRjaFJldHJpZXJIdHRwRXJyb3J9IFdoZW4gdGhlIGV4dGVuc2lvbiByZXR1cm5zIGEgbm9uLXJldHJpYWJsZSBIVFRQIGVycm9yLlxuICogQHRocm93cyB7aW1wb3J0KCdmZXRjaC1yZXRyaWVyJykuRmV0Y2hSZXRyaWVyTmV0d29ya0Vycm9yfSBXaGVuIGV4dGVuc2lvbiByZXF1ZXN0cyBmYWlsIGF0IHRoZSBuZXR3b3JrIGxldmVsLlxuICogQHRocm93cyB7aW1wb3J0KCdmZXRjaC1yZXRyaWVyJykuRmV0Y2hSZXRyaWVyQWJvcnRFcnJvcn0gV2hlbiBleHRlbnNpb24gcmVxdWVzdHMgdGltZSBvdXQgYWZ0ZXIgYWxsIHJldHJpZXMuXG4gKiBAdGhyb3dzIHtpbXBvcnQoJ2ZldGNoLXJldHJpZXInKS5GZXRjaFJldHJpZXJJbnZhbGlkT3B0aW9uc0Vycm9yfSBXaGVuIHNlY3JldC1mZXRjaCByZXRyeSBvcHRpb25zIGFyZSBpbnZhbGlkLlxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlciA9IHdpdGhEdXJhYmxlRXhlY3V0aW9uKGFzeW5jIChldmVudDogU2NoZWR1bGVyRXZlbnQsIGN0eDogRHVyYWJsZUNvbnRleHQpID0+IHtcblxuICBjb25zdCBwYXJhbXMgPSBldmVudC5QYXJhbXM7XG5cbiAgY3R4LmxvZ2dlci5pbmZvKCdydW5uaW5nLXNjaGVkdWxlcjogaW52b2NhdGlvbicsIHtcbiAgICBtb2RlOiBwYXJhbXM/Lk1vZGUsXG4gICAgdGFnS2V5OiBwYXJhbXM/LlRhZ0tleSxcbiAgICB0YWdWYWx1ZUNvdW50OiBwYXJhbXM/LlRhZ1ZhbHVlcz8ubGVuZ3RoID8/IDAsXG4gIH0pO1xuXG4gIGlmICghcGFyYW1zPy5UYWdLZXkgfHwgIXBhcmFtcz8uVGFnVmFsdWVzIHx8ICFwYXJhbXM/Lk1vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZXZlbnQ6IFBhcmFtcy5UYWdLZXksIFBhcmFtcy5UYWdWYWx1ZXMsIFBhcmFtcy5Nb2RlIGFyZSByZXF1aXJlZC4nKTtcbiAgfVxuXG4gIGNvbnN0IHdhaXRMaW1pdHMgPSBwYXJzZVJlc291cmNlV2FpdExpbWl0c0Zyb21FbnYoKTtcbiAgY29uc3QgbWF4Q29uY3VycmVuY3kgPSBwYXJzZU1heENvbmN1cnJlbmN5RnJvbUVudigpO1xuXG4gIGNvbnN0IHNsYWNrU2VjcmV0TmFtZSA9IFN0cmljdEVudlJlc29sdmVyLnJlc29sdmUoJ1NMQUNLX1NFQ1JFVF9OQU1FJywgU3RyaWN0RW52VHlwZS5TdHJpbmcpO1xuXG4gIGNvbnN0IHNsYWNrU2VjcmV0VmFsdWU6IHVua25vd24gPSBhd2FpdCBjdHguc3RlcCgnZmV0Y2gtc2xhY2stc2VjcmV0JywgYXN5bmMgKCkgPT4ge1xuICAgIGN0eC5sb2dnZXIuaW5mbygncnVubmluZy1zY2hlZHVsZXI6IGZldGNoaW5nIFNsYWNrIHNlY3JldCcsIHsgc2VjcmV0TmFtZTogc2xhY2tTZWNyZXROYW1lIH0pO1xuICAgIHJldHVybiBzZWNyZXRGZXRjaGVyLmdldFNlY3JldFZhbHVlKHNsYWNrU2VjcmV0TmFtZSwgU0xBQ0tfU0VDUkVUX0ZFVENIX09QVElPTlMpO1xuICB9KTtcblxuICBjdHgubG9nZ2VyLmluZm8oJ3J1bm5pbmctc2NoZWR1bGVyOiBTbGFjayBzZWNyZXQgbG9hZGVkJyk7XG5cbiAgaWYgKCFpc1NsYWNrU2VjcmV0KHNsYWNrU2VjcmV0VmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTbGFjayBzZWNyZXQgbXVzdCBjb250YWluIHRva2VuIGFuZCBjaGFubmVsLicpO1xuICB9XG5cbiAgY29uc3QgdGFyZ2V0UmVzb3VyY2VzID0gYXdhaXQgY3R4LnN0ZXAoJ2dldC10YXJnZXQtcmVzb3VyY2VzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBSZXNvdXJjZUdyb3Vwc1RhZ2dpbmdBUElDbGllbnQoe30pO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNsaWVudC5zZW5kKFxuICAgICAgbmV3IEdldFJlc291cmNlc0NvbW1hbmQoe1xuICAgICAgICBSZXNvdXJjZVR5cGVGaWx0ZXJzOiBbJ2VjMjppbnN0YW5jZSddLFxuICAgICAgICBUYWdGaWx0ZXJzOiBbeyBLZXk6IHBhcmFtcy5UYWdLZXksIFZhbHVlczogcGFyYW1zLlRhZ1ZhbHVlcyB9XSxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgY29uc3QgYXJucyA9IChyZXN1bHQuUmVzb3VyY2VUYWdNYXBwaW5nTGlzdCA/PyBbXSlcbiAgICAgIC5tYXAoKG06IHsgUmVzb3VyY2VBUk4/OiBzdHJpbmcgfSkgPT4gbS5SZXNvdXJjZUFSTilcbiAgICAgIC5maWx0ZXIoKGFybjogc3RyaW5nIHwgdW5kZWZpbmVkKTogYXJuIGlzIHN0cmluZyA9PiBhcm4gIT0gbnVsbCk7XG4gICAgY3R4LmxvZ2dlci5pbmZvKCdydW5uaW5nLXNjaGVkdWxlcjogZ2V0LXRhcmdldC1yZXNvdXJjZXMgZG9uZScsIHsgY291bnQ6IGFybnMubGVuZ3RoIH0pO1xuICAgIHJldHVybiBhcm5zO1xuICB9KTtcblxuICBpZiAodGFyZ2V0UmVzb3VyY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgIGN0eC5sb2dnZXIuaW5mbygncnVubmluZy1zY2hlZHVsZXI6IG5vIG1hdGNoaW5nIGluc3RhbmNlcycsIHsgdGFnS2V5OiBwYXJhbXMuVGFnS2V5IH0pO1xuICAgIHJldHVybiB7IHN0YXR1czogJ1RhcmdldFJlc291cmNlc05vdEZvdW5kJyBhcyBjb25zdCB9O1xuICB9XG5cbiAgY29uc3QgY2xpZW50ID0gbmV3IFdlYkNsaWVudChzbGFja1NlY3JldFZhbHVlLnRva2VuKTtcbiAgY29uc3QgY2hhbm5lbCA9IHNsYWNrU2VjcmV0VmFsdWUuY2hhbm5lbDtcblxuICBjdHgubG9nZ2VyLmluZm8oJ3J1bm5pbmctc2NoZWR1bGVyOiBwb3N0aW5nIHBhcmVudCBTbGFjayBtZXNzYWdlJywge1xuICAgIGluc3RhbmNlQ291bnQ6IHRhcmdldFJlc291cmNlcy5sZW5ndGgsXG4gIH0pO1xuXG4gIC8vIHNlbmQgc2xhY2sgbWVzc2FnZVxuICBjb25zdCBzbGFja1BhcmVudE1lc3NhZ2VSZXN1bHQgPSBhd2FpdCBjdHguc3RlcCgncG9zdC1zbGFjay1tZXNzYWdlcycsIGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGNsaWVudC5jaGF0LnBvc3RNZXNzYWdlKHtcbiAgICAgICAgY2hhbm5lbCxcbiAgICAgICAgdGV4dDogYCR7cGFyYW1zLk1vZGUgPT09ICdTdGFydCcgPyAn8J+YhiBTdGFydHMnIDogJ/CfpbEgU3RvcHMnfSB0aGUgc2NoZWR1bGVkIEVDMiBJbnN0YW5jZS5gLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIGN0eC5sb2dnZXIuZXJyb3IoJ3J1bm5pbmctc2NoZWR1bGVyOiBTbGFjayBwb3N0IGZhaWxlZCcsIHtcbiAgICAgICAgc3RlcDogJ3Bvc3Qtc2xhY2stbWVzc2FnZXMnLFxuICAgICAgICBjaGFubmVsLFxuICAgICAgICBlcnJvck1lc3NhZ2U6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSxcbiAgICAgIH0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9KTtcblxuICBjdHgubG9nZ2VyLmluZm8oJ3J1bm5pbmctc2NoZWR1bGVyOiBwYXJlbnQgU2xhY2sgbWVzc2FnZSBwb3N0ZWQnLCB7XG4gICAgdGhyZWFkVHM6IHNsYWNrUGFyZW50TWVzc2FnZVJlc3VsdD8udHMgPz8gbnVsbCxcbiAgfSk7XG5cbiAgY3R4LmxvZ2dlci5pbmZvKCdydW5uaW5nLXNjaGVkdWxlcjogc3RhcnRpbmcgcGFyYWxsZWwgaW5zdGFuY2UgcHJvY2Vzc2luZycsIHtcbiAgICBjb3VudDogdGFyZ2V0UmVzb3VyY2VzLmxlbmd0aCxcbiAgICBtYXhDb25jdXJyZW5jeSxcbiAgfSk7XG5cbiAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGN0eC5tYXAoXG4gICAgdGFyZ2V0UmVzb3VyY2VzLFxuICAgIC8vIGFzeW5jIChjdHg6IER1cmFibGVDb250ZXh0LCB0YXJnZXRSZXNvdXJjZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxuICAgIC8vICAgY3R4LnN0ZXAoYHByb2Nlc3MtcmVzb3VyY2UtJHtpbmRleH1gLCBhc3luYyAoKSA9PlxuICAgIC8vICAgICBwcm9jZXNzT25lUmVzb3VyY2UoY3R4LCB0YXJnZXRSZXNvdXJjZSwgcGFyYW1zLCBpbmRleCksXG4gICAgLy8gICApLFxuICAgIGFzeW5jIChtYXBDdHg6IER1cmFibGVDb250ZXh0LCB0YXJnZXRSZXNvdXJjZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICByZXR1cm4gbWFwQ3R4LnJ1bkluQ2hpbGRDb250ZXh0KGByZXNvdXJjZS0ke2luZGV4fWAsIGFzeW5jIChjaGlsZEN0eDogRHVyYWJsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvY2Vzc09uZVJlc291cmNlKGNoaWxkQ3R4LCB0YXJnZXRSZXNvdXJjZSwgcGFyYW1zLCBpbmRleCwgd2FpdExpbWl0cyk7XG4gICAgICAgIC8vIGlmIChyZXN1bHQuc3RhdHVzID09PSAnc2tpcHBlZCcpIHtcbiAgICAgICAgLy8gICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAvLyB9XG4gICAgICAgIGNoaWxkQ3R4LmxvZ2dlci5pbmZvKCdydW5uaW5nLXNjaGVkdWxlcjogcG9zdGluZyB0aHJlYWQgU2xhY2sgbWVzc2FnZScsIHtcbiAgICAgICAgICBpbmRleCxcbiAgICAgICAgICBpZGVudGlmaWVyOiByZXN1bHQuaWRlbnRpZmllcixcbiAgICAgICAgICBzdGF0dXM6IHJlc3VsdC5zdGF0dXMsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBzZW5kIHNsYWNrIHRocmVhZCBtZXNzYWdlXG4gICAgICAgIGF3YWl0IGNoaWxkQ3R4LnN0ZXAoJ3Bvc3Qtc2xhY2stY2hpbGQtbWVzc2FnZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGlzcGxheSA9IGdldFN0YXRlRGlzcGxheShyZXN1bHQuc3RhdHVzKTtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgY2xpZW50LmNoYXQucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICBjaGFubmVsLFxuICAgICAgICAgICAgICB0aHJlYWRfdHM6IHNsYWNrUGFyZW50TWVzc2FnZVJlc3VsdD8udHMsXG4gICAgICAgICAgICAgIGF0dGFjaG1lbnRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY29sb3I6ICcjMzZhNjRmJyxcbiAgICAgICAgICAgICAgICAgIHByZXRleHQ6IGAke2Rpc3BsYXk/LmVtb2ppfSBUaGUgc3RhdHVzIG9mIHRoZSBFQzIgSW5zdGFuY2UgJHtyZXN1bHQuaWRlbnRpZmllcn0gY2hhbmdlZCB0byAke2Rpc3BsYXk/Lm5hbWV9IGR1ZSB0byB0aGUgc2NoZWR1bGUuYCxcbiAgICAgICAgICAgICAgICAgIGZpZWxkczogW1xuICAgICAgICAgICAgICAgICAgICB7IHRpdGxlOiAnQWNjb3VudCcsIHZhbHVlOiByZXN1bHQuYWNjb3VudCwgc2hvcnQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgeyB0aXRsZTogJ1JlZ2lvbicsIHZhbHVlOiByZXN1bHQucmVnaW9uLCBzaG9ydDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICB7IHRpdGxlOiAnSWRlbnRpZmllcicsIHZhbHVlOiByZXN1bHQuaWRlbnRpZmllciwgc2hvcnQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgeyB0aXRsZTogJ1N0YXR1cycsIHZhbHVlOiAoZGlzcGxheT8ubmFtZSA/PyAnVW5rbm93bicpLCBzaG9ydDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICAgIGNoaWxkQ3R4LmxvZ2dlci5lcnJvcigncnVubmluZy1zY2hlZHVsZXI6IFNsYWNrIHBvc3QgZmFpbGVkJywge1xuICAgICAgICAgICAgICBzdGVwOiAncG9zdC1zbGFjay1jaGlsZC1tZXNzYWdlcycsXG4gICAgICAgICAgICAgIGNoYW5uZWwsXG4gICAgICAgICAgICAgIGlkZW50aWZpZXI6IHJlc3VsdC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgeyBtYXhDb25jdXJyZW5jeSB9LFxuICApO1xuXG4gIGNvbnN0IHJlc3VsdExpc3QgPSBBcnJheS5pc0FycmF5KHJlc3VsdHMpID8gcmVzdWx0cyA6IFtdO1xuICBjdHgubG9nZ2VyLmluZm8oJ3J1bm5pbmctc2NoZWR1bGVyOiBjb21wbGV0ZWQnLCB7XG4gICAgcHJvY2Vzc2VkOiB0YXJnZXRSZXNvdXJjZXMubGVuZ3RoLFxuICAgIHJlc3VsdENvdW50OiByZXN1bHRMaXN0Lmxlbmd0aCxcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgc3RhdHVzOiAnQ29tcGxldGVkJyBhcyBjb25zdCxcbiAgICBwcm9jZXNzZWQ6IHRhcmdldFJlc291cmNlcy5sZW5ndGgsXG4gICAgcmVzdWx0czogcmVzdWx0TGlzdCxcbiAgfTtcbn0pO1xuIl19
package/lib/index.d.ts CHANGED
@@ -2,7 +2,8 @@
2
2
  * Public API for the EC2 instance running scheduler CDK library.
3
3
  *
4
4
  * Exports {@link EC2InstanceRunningScheduler}, {@link EC2InstanceRunningScheduleStack},
5
- * optional {@link FailureDetectionAlarms} / {@link RunningSchedulerFailureDetection}, and related prop types.
5
+ * optional {@link RunningSchedulerFailureDetectionProps} / {@link RunningSchedulerFailureDetection},
6
+ * {@link LambdaFailureDetector} and related prop types.
6
7
  */
7
8
  export * from './constructs/ec2-instance-running-scheduler';
8
9
  export * from './stacks/ec2-instance-running-schedule-stack';
package/lib/index.js CHANGED
@@ -18,8 +18,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  * Public API for the EC2 instance running scheduler CDK library.
19
19
  *
20
20
  * Exports {@link EC2InstanceRunningScheduler}, {@link EC2InstanceRunningScheduleStack},
21
- * optional {@link FailureDetectionAlarms} / {@link RunningSchedulerFailureDetection}, and related prop types.
21
+ * optional {@link RunningSchedulerFailureDetectionProps} / {@link RunningSchedulerFailureDetection},
22
+ * {@link LambdaFailureDetector} and related prop types.
22
23
  */
23
24
  __exportStar(require("./constructs/ec2-instance-running-scheduler"), exports);
24
25
  __exportStar(require("./stacks/ec2-instance-running-schedule-stack"), exports);
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7OztHQUtHO0FBQ0gsOEVBQTREO0FBQzVELCtFQUE2RCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHVibGljIEFQSSBmb3IgdGhlIEVDMiBpbnN0YW5jZSBydW5uaW5nIHNjaGVkdWxlciBDREsgbGlicmFyeS5cbiAqXG4gKiBFeHBvcnRzIHtAbGluayBFQzJJbnN0YW5jZVJ1bm5pbmdTY2hlZHVsZXJ9LCB7QGxpbmsgRUMySW5zdGFuY2VSdW5uaW5nU2NoZWR1bGVTdGFja30sXG4gKiBvcHRpb25hbCB7QGxpbmsgRmFpbHVyZURldGVjdGlvbkFsYXJtc30gLyB7QGxpbmsgUnVubmluZ1NjaGVkdWxlckZhaWx1cmVEZXRlY3Rpb259LCBhbmQgcmVsYXRlZCBwcm9wIHR5cGVzLlxuICovXG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdHMvZWMyLWluc3RhbmNlLXJ1bm5pbmctc2NoZWR1bGVyJztcbmV4cG9ydCAqIGZyb20gJy4vc3RhY2tzL2VjMi1pbnN0YW5jZS1ydW5uaW5nLXNjaGVkdWxlLXN0YWNrJzsiXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7R0FNRztBQUNILDhFQUE0RDtBQUM1RCwrRUFBNkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFB1YmxpYyBBUEkgZm9yIHRoZSBFQzIgaW5zdGFuY2UgcnVubmluZyBzY2hlZHVsZXIgQ0RLIGxpYnJhcnkuXG4gKlxuICogRXhwb3J0cyB7QGxpbmsgRUMySW5zdGFuY2VSdW5uaW5nU2NoZWR1bGVyfSwge0BsaW5rIEVDMkluc3RhbmNlUnVubmluZ1NjaGVkdWxlU3RhY2t9LFxuICogb3B0aW9uYWwge0BsaW5rIFJ1bm5pbmdTY2hlZHVsZXJGYWlsdXJlRGV0ZWN0aW9uUHJvcHN9IC8ge0BsaW5rIFJ1bm5pbmdTY2hlZHVsZXJGYWlsdXJlRGV0ZWN0aW9ufSxcbiAqIHtAbGluayBMYW1iZGFGYWlsdXJlRGV0ZWN0b3J9IGFuZCByZWxhdGVkIHByb3AgdHlwZXMuXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0cy9lYzItaW5zdGFuY2UtcnVubmluZy1zY2hlZHVsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zdGFja3MvZWMyLWluc3RhbmNlLXJ1bm5pbmctc2NoZWR1bGUtc3RhY2snOyJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { Stack, StackProps } from 'aws-cdk-lib';
2
2
  import { Construct } from 'constructs';
3
- import { TargetResource, Secrets, Schedule, type FailureDetectionAlarms } from '../constructs/ec2-instance-running-scheduler';
3
+ import { TargetResource, Secrets, Schedule, type RunningSchedulerFailureDetectionProps } from '../constructs/ec2-instance-running-scheduler';
4
4
  /**
5
5
  * Props for the EC2 instance running schedule CDK stack.
6
6
  *
@@ -19,13 +19,13 @@ export interface EC2InstanceRunningScheduleStackProps extends StackProps {
19
19
  /** Cron schedule for starting instances. */
20
20
  readonly startSchedule?: Schedule;
21
21
  /** Optional CloudWatch failure detection alarms and log-based metrics. */
22
- readonly failureDetection?: FailureDetectionAlarms;
22
+ readonly failureDetection?: RunningSchedulerFailureDetectionProps;
23
23
  }
24
24
  /**
25
25
  * CDK stack that deploys the EC2 instance running scheduler (EventBridge Scheduler + Durable Lambda).
26
26
  *
27
27
  * Wires {@link EC2InstanceRunningScheduler} with targeting, schedules, secrets, scheduling toggle,
28
- * and optional {@link FailureDetectionAlarms}. Does not expose {@link ResourceWaitLimits},
28
+ * and optional {@link RunningSchedulerFailureDetectionProps}. Does not expose {@link ResourceWaitLimits},
29
29
  * {@link RunningSchedulerRuntimeProps}, {@link RunningSchedulerDurableProps}, or
30
30
  * {@link RunningSchedulerLogGroupProps}; use the construct directly when custom runtime,
31
31
  * wait, durable, or log group settings are required.
@@ -8,13 +8,13 @@ const ec2_instance_running_scheduler_1 = require("../constructs/ec2-instance-run
8
8
  * CDK stack that deploys the EC2 instance running scheduler (EventBridge Scheduler + Durable Lambda).
9
9
  *
10
10
  * Wires {@link EC2InstanceRunningScheduler} with targeting, schedules, secrets, scheduling toggle,
11
- * and optional {@link FailureDetectionAlarms}. Does not expose {@link ResourceWaitLimits},
11
+ * and optional {@link RunningSchedulerFailureDetectionProps}. Does not expose {@link ResourceWaitLimits},
12
12
  * {@link RunningSchedulerRuntimeProps}, {@link RunningSchedulerDurableProps}, or
13
13
  * {@link RunningSchedulerLogGroupProps}; use the construct directly when custom runtime,
14
14
  * wait, durable, or log group settings are required.
15
15
  */
16
16
  class EC2InstanceRunningScheduleStack extends aws_cdk_lib_1.Stack {
17
- static [JSII_RTTI_SYMBOL_1] = { fqn: "ec2-instance-running-scheduler.EC2InstanceRunningScheduleStack", version: "0.4.6" };
17
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "ec2-instance-running-scheduler.EC2InstanceRunningScheduleStack", version: "0.5.0" };
18
18
  /**
19
19
  * Creates the stack and wires {@link EC2InstanceRunningScheduler}.
20
20
  *
@@ -35,4 +35,4 @@ class EC2InstanceRunningScheduleStack extends aws_cdk_lib_1.Stack {
35
35
  }
36
36
  }
37
37
  exports.EC2InstanceRunningScheduleStack = EC2InstanceRunningScheduleStack;
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWMyLWluc3RhbmNlLXJ1bm5pbmctc2NoZWR1bGUtc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhY2tzL2VjMi1pbnN0YW5jZS1ydW5uaW5nLXNjaGVkdWxlLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2Q0FBZ0Q7QUFFaEQsaUdBQTJKO0FBdUIzSjs7Ozs7Ozs7R0FRRztBQUNILE1BQWEsK0JBQWdDLFNBQVEsbUJBQUs7O0lBQ3hEOzs7Ozs7T0FNRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkM7UUFDbkYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSw0REFBMkIsQ0FBQyxJQUFJLEVBQUUsNkJBQTZCLEVBQUU7WUFDbkUsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO1lBQ3BDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDeEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDbEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQW5CSCwwRUFvQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRUMySW5zdGFuY2VSdW5uaW5nU2NoZWR1bGVyLCBUYXJnZXRSZXNvdXJjZSwgU2VjcmV0cywgU2NoZWR1bGUsIHR5cGUgRmFpbHVyZURldGVjdGlvbkFsYXJtcyB9IGZyb20gJy4uL2NvbnN0cnVjdHMvZWMyLWluc3RhbmNlLXJ1bm5pbmctc2NoZWR1bGVyJztcblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIEVDMiBpbnN0YW5jZSBydW5uaW5nIHNjaGVkdWxlIENESyBzdGFjay5cbiAqXG4gKiBAc2VlIHtAbGluayBFQzJJbnN0YW5jZVJ1bm5pbmdTY2hlZHVsZXJQcm9wc30gZm9yIGNvbnN0cnVjdC1sZXZlbCBvcHRpb25zIG5vdCBleHBvc2VkIGhlcmVcbiAqIChlLmcuIGByZXNvdXJjZVdhaXRgLCBgcnVudGltZWAsIGBkdXJhYmxlYCwgYGxvZ0dyb3VwYCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRUMySW5zdGFuY2VSdW5uaW5nU2NoZWR1bGVTdGFja1Byb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIC8qKiBUYWctYmFzZWQgdGFyZ2V0IHJlc291cmNlIGZvciBFQzIgaW5zdGFuY2VzIHRvIHN0YXJ0L3N0b3AuICovXG4gIHJlYWRvbmx5IHRhcmdldFJlc291cmNlOiBUYXJnZXRSZXNvdXJjZTtcbiAgLyoqIFdoZXRoZXIgc2NoZWR1bGluZyBpcyBlbmFibGVkLiBEZWZhdWx0cyB0byB0cnVlIGlmIG9taXR0ZWQuICovXG4gIHJlYWRvbmx5IGVuYWJsZVNjaGVkdWxpbmc/OiBib29sZWFuO1xuICAvKiogU2VjcmV0cyAoZS5nLiBTbGFjaykgZm9yIHRoZSBzY2hlZHVsZXIuICovXG4gIHJlYWRvbmx5IHNlY3JldHM6IFNlY3JldHM7XG4gIC8qKiBDcm9uIHNjaGVkdWxlIGZvciBzdG9wcGluZyBpbnN0YW5jZXMuICovXG4gIHJlYWRvbmx5IHN0b3BTY2hlZHVsZT86IFNjaGVkdWxlO1xuICAvKiogQ3JvbiBzY2hlZHVsZSBmb3Igc3RhcnRpbmcgaW5zdGFuY2VzLiAqL1xuICByZWFkb25seSBzdGFydFNjaGVkdWxlPzogU2NoZWR1bGU7XG4gIC8qKiBPcHRpb25hbCBDbG91ZFdhdGNoIGZhaWx1cmUgZGV0ZWN0aW9uIGFsYXJtcyBhbmQgbG9nLWJhc2VkIG1ldHJpY3MuICovXG4gIHJlYWRvbmx5IGZhaWx1cmVEZXRlY3Rpb24/OiBGYWlsdXJlRGV0ZWN0aW9uQWxhcm1zO1xufVxuXG4vKipcbiAqIENESyBzdGFjayB0aGF0IGRlcGxveXMgdGhlIEVDMiBpbnN0YW5jZSBydW5uaW5nIHNjaGVkdWxlciAoRXZlbnRCcmlkZ2UgU2NoZWR1bGVyICsgRHVyYWJsZSBMYW1iZGEpLlxuICpcbiAqIFdpcmVzIHtAbGluayBFQzJJbnN0YW5jZVJ1bm5pbmdTY2hlZHVsZXJ9IHdpdGggdGFyZ2V0aW5nLCBzY2hlZHVsZXMsIHNlY3JldHMsIHNjaGVkdWxpbmcgdG9nZ2xlLFxuICogYW5kIG9wdGlvbmFsIHtAbGluayBGYWlsdXJlRGV0ZWN0aW9uQWxhcm1zfS4gRG9lcyBub3QgZXhwb3NlIHtAbGluayBSZXNvdXJjZVdhaXRMaW1pdHN9LFxuICoge0BsaW5rIFJ1bm5pbmdTY2hlZHVsZXJSdW50aW1lUHJvcHN9LCB7QGxpbmsgUnVubmluZ1NjaGVkdWxlckR1cmFibGVQcm9wc30sIG9yXG4gKiB7QGxpbmsgUnVubmluZ1NjaGVkdWxlckxvZ0dyb3VwUHJvcHN9OyB1c2UgdGhlIGNvbnN0cnVjdCBkaXJlY3RseSB3aGVuIGN1c3RvbSBydW50aW1lLFxuICogd2FpdCwgZHVyYWJsZSwgb3IgbG9nIGdyb3VwIHNldHRpbmdzIGFyZSByZXF1aXJlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEVDMkluc3RhbmNlUnVubmluZ1NjaGVkdWxlU3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBzdGFjayBhbmQgd2lyZXMge0BsaW5rIEVDMkluc3RhbmNlUnVubmluZ1NjaGVkdWxlcn0uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFBhcmVudCBjb25zdHJ1Y3Qgb3IgYXBwLlxuICAgKiBAcGFyYW0gaWQgLSBTdGFjayBpZC5cbiAgICogQHBhcmFtIHByb3BzIC0gVGFyZ2V0IHJlc291cmNlLCBzY2hlZHVsZXMsIHNlY3JldHMsIG9wdGlvbmFsIGZhaWx1cmUgZGV0ZWN0aW9uLCBhbmQgc3RhbmRhcmQgc3RhY2sgcHJvcHMuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRUMySW5zdGFuY2VSdW5uaW5nU2NoZWR1bGVTdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBuZXcgRUMySW5zdGFuY2VSdW5uaW5nU2NoZWR1bGVyKHRoaXMsICdFQzJJbnN0YW5jZVJ1bm5pbmdTY2hlZHVsZXInLCB7XG4gICAgICB0YXJnZXRSZXNvdXJjZTogcHJvcHMudGFyZ2V0UmVzb3VyY2UsXG4gICAgICBlbmFibGVTY2hlZHVsaW5nOiBwcm9wcy5lbmFibGVTY2hlZHVsaW5nLFxuICAgICAgc2VjcmV0czogcHJvcHMuc2VjcmV0cyxcbiAgICAgIHN0b3BTY2hlZHVsZTogcHJvcHMuc3RvcFNjaGVkdWxlLFxuICAgICAgc3RhcnRTY2hlZHVsZTogcHJvcHMuc3RhcnRTY2hlZHVsZSxcbiAgICAgIGZhaWx1cmVEZXRlY3Rpb246IHByb3BzLmZhaWx1cmVEZXRlY3Rpb24sXG4gICAgfSk7XG4gIH1cbn0iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWMyLWluc3RhbmNlLXJ1bm5pbmctc2NoZWR1bGUtc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhY2tzL2VjMi1pbnN0YW5jZS1ydW5uaW5nLXNjaGVkdWxlLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2Q0FBZ0Q7QUFFaEQsaUdBQTBLO0FBdUIxSzs7Ozs7Ozs7R0FRRztBQUNILE1BQWEsK0JBQWdDLFNBQVEsbUJBQUs7O0lBQ3hEOzs7Ozs7T0FNRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkM7UUFDbkYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSw0REFBMkIsQ0FBQyxJQUFJLEVBQUUsNkJBQTZCLEVBQUU7WUFDbkUsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO1lBQ3BDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDeEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDbEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQW5CSCwwRUFvQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRUMySW5zdGFuY2VSdW5uaW5nU2NoZWR1bGVyLCBUYXJnZXRSZXNvdXJjZSwgU2VjcmV0cywgU2NoZWR1bGUsIHR5cGUgUnVubmluZ1NjaGVkdWxlckZhaWx1cmVEZXRlY3Rpb25Qcm9wcyB9IGZyb20gJy4uL2NvbnN0cnVjdHMvZWMyLWluc3RhbmNlLXJ1bm5pbmctc2NoZWR1bGVyJztcblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIEVDMiBpbnN0YW5jZSBydW5uaW5nIHNjaGVkdWxlIENESyBzdGFjay5cbiAqXG4gKiBAc2VlIHtAbGluayBFQzJJbnN0YW5jZVJ1bm5pbmdTY2hlZHVsZXJQcm9wc30gZm9yIGNvbnN0cnVjdC1sZXZlbCBvcHRpb25zIG5vdCBleHBvc2VkIGhlcmVcbiAqIChlLmcuIGByZXNvdXJjZVdhaXRgLCBgcnVudGltZWAsIGBkdXJhYmxlYCwgYGxvZ0dyb3VwYCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRUMySW5zdGFuY2VSdW5uaW5nU2NoZWR1bGVTdGFja1Byb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIC8qKiBUYWctYmFzZWQgdGFyZ2V0IHJlc291cmNlIGZvciBFQzIgaW5zdGFuY2VzIHRvIHN0YXJ0L3N0b3AuICovXG4gIHJlYWRvbmx5IHRhcmdldFJlc291cmNlOiBUYXJnZXRSZXNvdXJjZTtcbiAgLyoqIFdoZXRoZXIgc2NoZWR1bGluZyBpcyBlbmFibGVkLiBEZWZhdWx0cyB0byB0cnVlIGlmIG9taXR0ZWQuICovXG4gIHJlYWRvbmx5IGVuYWJsZVNjaGVkdWxpbmc/OiBib29sZWFuO1xuICAvKiogU2VjcmV0cyAoZS5nLiBTbGFjaykgZm9yIHRoZSBzY2hlZHVsZXIuICovXG4gIHJlYWRvbmx5IHNlY3JldHM6IFNlY3JldHM7XG4gIC8qKiBDcm9uIHNjaGVkdWxlIGZvciBzdG9wcGluZyBpbnN0YW5jZXMuICovXG4gIHJlYWRvbmx5IHN0b3BTY2hlZHVsZT86IFNjaGVkdWxlO1xuICAvKiogQ3JvbiBzY2hlZHVsZSBmb3Igc3RhcnRpbmcgaW5zdGFuY2VzLiAqL1xuICByZWFkb25seSBzdGFydFNjaGVkdWxlPzogU2NoZWR1bGU7XG4gIC8qKiBPcHRpb25hbCBDbG91ZFdhdGNoIGZhaWx1cmUgZGV0ZWN0aW9uIGFsYXJtcyBhbmQgbG9nLWJhc2VkIG1ldHJpY3MuICovXG4gIHJlYWRvbmx5IGZhaWx1cmVEZXRlY3Rpb24/OiBSdW5uaW5nU2NoZWR1bGVyRmFpbHVyZURldGVjdGlvblByb3BzO1xufVxuXG4vKipcbiAqIENESyBzdGFjayB0aGF0IGRlcGxveXMgdGhlIEVDMiBpbnN0YW5jZSBydW5uaW5nIHNjaGVkdWxlciAoRXZlbnRCcmlkZ2UgU2NoZWR1bGVyICsgRHVyYWJsZSBMYW1iZGEpLlxuICpcbiAqIFdpcmVzIHtAbGluayBFQzJJbnN0YW5jZVJ1bm5pbmdTY2hlZHVsZXJ9IHdpdGggdGFyZ2V0aW5nLCBzY2hlZHVsZXMsIHNlY3JldHMsIHNjaGVkdWxpbmcgdG9nZ2xlLFxuICogYW5kIG9wdGlvbmFsIHtAbGluayBSdW5uaW5nU2NoZWR1bGVyRmFpbHVyZURldGVjdGlvblByb3BzfS4gRG9lcyBub3QgZXhwb3NlIHtAbGluayBSZXNvdXJjZVdhaXRMaW1pdHN9LFxuICoge0BsaW5rIFJ1bm5pbmdTY2hlZHVsZXJSdW50aW1lUHJvcHN9LCB7QGxpbmsgUnVubmluZ1NjaGVkdWxlckR1cmFibGVQcm9wc30sIG9yXG4gKiB7QGxpbmsgUnVubmluZ1NjaGVkdWxlckxvZ0dyb3VwUHJvcHN9OyB1c2UgdGhlIGNvbnN0cnVjdCBkaXJlY3RseSB3aGVuIGN1c3RvbSBydW50aW1lLFxuICogd2FpdCwgZHVyYWJsZSwgb3IgbG9nIGdyb3VwIHNldHRpbmdzIGFyZSByZXF1aXJlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEVDMkluc3RhbmNlUnVubmluZ1NjaGVkdWxlU3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBzdGFjayBhbmQgd2lyZXMge0BsaW5rIEVDMkluc3RhbmNlUnVubmluZ1NjaGVkdWxlcn0uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFBhcmVudCBjb25zdHJ1Y3Qgb3IgYXBwLlxuICAgKiBAcGFyYW0gaWQgLSBTdGFjayBpZC5cbiAgICogQHBhcmFtIHByb3BzIC0gVGFyZ2V0IHJlc291cmNlLCBzY2hlZHVsZXMsIHNlY3JldHMsIG9wdGlvbmFsIGZhaWx1cmUgZGV0ZWN0aW9uLCBhbmQgc3RhbmRhcmQgc3RhY2sgcHJvcHMuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRUMySW5zdGFuY2VSdW5uaW5nU2NoZWR1bGVTdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBuZXcgRUMySW5zdGFuY2VSdW5uaW5nU2NoZWR1bGVyKHRoaXMsICdFQzJJbnN0YW5jZVJ1bm5pbmdTY2hlZHVsZXInLCB7XG4gICAgICB0YXJnZXRSZXNvdXJjZTogcHJvcHMudGFyZ2V0UmVzb3VyY2UsXG4gICAgICBlbmFibGVTY2hlZHVsaW5nOiBwcm9wcy5lbmFibGVTY2hlZHVsaW5nLFxuICAgICAgc2VjcmV0czogcHJvcHMuc2VjcmV0cyxcbiAgICAgIHN0b3BTY2hlZHVsZTogcHJvcHMuc3RvcFNjaGVkdWxlLFxuICAgICAgc3RhcnRTY2hlZHVsZTogcHJvcHMuc3RhcnRTY2hlZHVsZSxcbiAgICAgIGZhaWx1cmVEZXRlY3Rpb246IHByb3BzLmZhaWx1cmVEZXRlY3Rpb24sXG4gICAgfSk7XG4gIH1cbn0iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ec2-instance-running-scheduler",
3
- "description": "AWS CDK construct library that starts and stops EC2 instances on a cron schedule using EventBridge Scheduler and a Durable Execution Lambda. The handler discovers instances with the Resource Groups Tagging API, issues start/stop, waits until each instance reaches a stable target state (durable step / wait), processes multiple instances in parallel (bounded concurrency), and posts Slack summary and per-instance thread messages using a secret from Secrets Manager. The Lambda emits structured application logs alongside JSON platform logs.",
3
+ "description": "AWS CDK construct library that starts and stops EC2 instances on a cron schedule using EventBridge Scheduler and a Durable Execution Lambda. Tagged instances are discovered account-wide, started or stopped in parallel, waited until stable, and reported to Slack via Secrets Manager.",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/gammarers-aws-cdk-constructs/ec2-instance-running-scheduler.git"
@@ -42,6 +42,7 @@
42
42
  "@aws-sdk/client-ec2": "^3.1111.0",
43
43
  "@aws-sdk/client-resource-groups-tagging-api": "^3.1111.0",
44
44
  "@aws/durable-execution-sdk-js": "^1.1.7",
45
+ "@gammarers/projen-projects": "^0.4.0",
45
46
  "@slack/web-api": "^6.13.0",
46
47
  "@stylistic/eslint-plugin": "^2",
47
48
  "@types/aws-lambda": "^8.10.162",
@@ -50,7 +51,7 @@
50
51
  "@typescript-eslint/eslint-plugin": "^8",
51
52
  "@typescript-eslint/parser": "^8",
52
53
  "aws-cdk-lib": "2.232.0",
53
- "aws-lambda-secret-fetcher": "^0.7.2",
54
+ "aws-lambda-secret-fetcher": "^0.8.1",
54
55
  "aws-sdk-client-mock": "^2.2.0",
55
56
  "aws-sdk-client-mock-jest": "^2.2.0",
56
57
  "commit-and-tag-version": "^13",
@@ -67,7 +68,7 @@
67
68
  "jsii-pacmak": "^1.140.0",
68
69
  "jsii-rosetta": "6.0.x",
69
70
  "projen": "^0.103.27",
70
- "strict-env-resolver": "^0.6.2",
71
+ "strict-env-resolver": "^0.7.2",
71
72
  "ts-jest": "^29.4.14",
72
73
  "ts-node": "^10.9.2",
73
74
  "typescript": "6.0.x"
@@ -100,7 +101,7 @@
100
101
  "publishConfig": {
101
102
  "access": "public"
102
103
  },
103
- "version": "0.4.6",
104
+ "version": "0.5.0",
104
105
  "jest": {
105
106
  "coverageProvider": "v8",
106
107
  "testMatch": [