@jjrawlins/cdk-diff-pr-github-action 1.8.0 → 1.9.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.
@@ -61,8 +61,11 @@ class CdkDriftDetectionWorkflow {
61
61
  const innerCond = "github.event_name == 'schedule' || !github.event.inputs.stack || github.event.inputs.stack == 'all' || github.event.inputs.stack == '" + sanitizedStackName + "' || github.event.inputs.stack == '" + originalStackName + "'";
62
62
  const condExpr = '${{ ' + innerCond + ' }}';
63
63
  const notCondExpr = '${{ !(' + innerCond + ') }}';
64
+ const stepCtx = { stack: sanitizedStackName, workingDirectory: wd };
65
+ const rawPre = props.preGitHubSteps;
66
+ const preSteps = typeof rawPre === 'function' ? rawPre(stepCtx) : (rawPre ?? []);
64
67
  const rawPost = props.postGitHubSteps;
65
- const postSteps = typeof rawPost === 'function' ? rawPost({ stack: sanitizedStackName }) : (rawPost ?? []);
68
+ const postSteps = typeof rawPost === 'function' ? rawPost(stepCtx) : (rawPost ?? []);
66
69
  // Prefix results file path for uses: steps (which ignore defaults.run.working-directory)
67
70
  const artifactResultsPath = wd ? `${wd}/${resultsFile}` : resultsFile;
68
71
  const issueResultsPath = wd ? `${wd}/${resultsFile}` : resultsFile;
@@ -93,6 +96,11 @@ class CdkDriftDetectionWorkflow {
93
96
  with: { 'node-version': nodeVersion },
94
97
  },
95
98
  { name: 'Install dependencies', if: condExpr, run: 'yarn install --frozen-lockfile || npm ci', env: { GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' } },
99
+ ...preSteps.map((step) => {
100
+ const s = { ...step };
101
+ s.if = s.if ?? condExpr;
102
+ return s;
103
+ }),
96
104
  {
97
105
  name: 'AWS Credentials',
98
106
  if: condExpr,
@@ -200,7 +208,7 @@ class CdkDriftDetectionWorkflow {
200
208
  }
201
209
  exports.CdkDriftDetectionWorkflow = CdkDriftDetectionWorkflow;
202
210
  _a = JSII_RTTI_SYMBOL_1;
203
- CdkDriftDetectionWorkflow[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftDetectionWorkflow", version: "1.8.0" };
211
+ CdkDriftDetectionWorkflow[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftDetectionWorkflow", version: "1.9.0" };
204
212
  CdkDriftDetectionWorkflow.scriptCreated = false;
205
213
  function issueScript(stack, region, resultsFile) {
206
214
  // Construct a plain JS script string (no template string nesting mishaps)
@@ -314,4 +322,4 @@ function toGithubJobId(s) {
314
322
  }
315
323
  return out;
316
324
  }
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRHJpZnREZXRlY3Rpb25Xb3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DZGtEcmlmdERldGVjdGlvbldvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOENBQTJEO0FBQzNELHVFQUFrRTtBQUNsRSxpRkFBMkU7QUFFM0UsTUFBTSxrQ0FBa0MsR0FBRyxJQUFJLENBQUM7QUFDaEQsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLENBQUM7QUFDMUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLENBQUM7QUFDM0MsTUFBTSxrQ0FBa0MsR0FBRyxJQUFJLENBQUM7QUFDaEQsTUFBTSxvQ0FBb0MsR0FBRyxJQUFJLENBQUM7QUFDbEQsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLENBQUM7QUFFOUMsTUFBTSw0QkFBNEIsR0FBRyxHQUFHLENBQUM7QUE0RHpDLE1BQWEseUJBQXlCO0lBR3BDLFlBQVksS0FBcUM7UUFDL0MsOEJBQThCO1FBQzlCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLGlCQUFpQixDQUFDO1FBQ3JELE1BQU0sUUFBUSxHQUFHLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDO1FBQ2hELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDOUIsTUFBTSxnQkFBZ0IsR0FBRSxLQUFLLENBQUMsZ0JBQWdCLElBQUksMkNBQTJDLENBQUM7UUFFOUYsc0RBQXNEO1FBQ3RELE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLEVB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QUFDO0lBQ0QscURBQXFEO0lBQ3JELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQzdELENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxDQUFTO0lBQzlCLDRGQUE0RjtJQUM1RiwyQ0FBMkM7SUFDM0MsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3QyxpQ0FBaUM7SUFDakMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLHFFQUFxRTtJQUNyRSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEMsZ0ZBQWdGO0lBQ2hGLEdBQUcsR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsa0RBQWtEO0lBQ2xELElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEMsR0FBRyxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdpdEh1YiwgR2l0aHViV29ya2Zsb3cgfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yic7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9uIH0gZnJvbSAncHJvamVuL2xpYi9naXRodWIvd29ya2Zsb3dzLW1vZGVsJztcbmltcG9ydCB7IENka0RyaWZ0RGV0ZWN0aW9uU2NyaXB0IH0gZnJvbSAnLi9iaW4vY2RrLWRyaWZ0LWRldGVjdGlvbi1zY3JpcHQnO1xuXG5jb25zdCBnaXRodWJBY3Rpb25zQXdzQ3JlZGVudGlhbHNWZXJzaW9uID0gJ3Y1JztcbmNvbnN0IGdpdGh1YkFjdGlvbnNDaGVja291dFZlcnNpb24gPSAndjUnO1xuY29uc3QgZ2l0aHViQWN0aW9uc1NldHVwTm9kZVZlcnNpb24gPSAndjUnO1xuY29uc3QgZ2l0aHViQWN0aW9uc1VwbG9hZEFydGlmYWN0VmVyc2lvbiA9ICd2NCc7XG5jb25zdCBnaXRodWJBY3Rpb25zRG93bmxvYWRBcnRpZmFjdFZlcnNpb24gPSAndjUnO1xuY29uc3QgZ2l0aHViQWN0aW9uc0dpdGh1YlNjcmlwdFZlcnNpb24gPSAndjgnO1xuXG5jb25zdCBNQVhfV09SS0ZMT1dfRklMRU5BTUVfTEVOR1RIID0gMjU1O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrIHtcbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lUmVnaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lQXJuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZhaWxPbkRyaWZ0PzogYm9vbGVhbjsgLy8gaWYgdHJ1ZSwgZmFpbCBqb2Igd2hlbiBkcmlmdCBkZXRlY3RlZCAoZGVmYXVsdCB0cnVlKVxuICByZWFkb25seSBvaWRjUm9sZUFybj86IHN0cmluZzsgLy8gT3B0aW9uYWwgb3ZlcnJpZGUgZm9yIE9JREMgcm9sZVxuICByZWFkb25seSBvaWRjUmVnaW9uPzogc3RyaW5nOyAvLyBPcHRpb25hbCBvdmVycmlkZSBmb3IgT0lEQyByZWdpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDZGtEcmlmdERldGVjdGlvbldvcmtmbG93UHJvcHMge1xuICByZWFkb25seSBzY3JpcHRPdXRwdXRQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9qZWN0OiBhbnk7IC8vIGF2b2lkIGV4cG9ydGluZyBwcm9qZW4gdHlwZXMgaW4gcHVibGljIEFQSVxuICByZWFkb25seSB3b3JrZmxvd05hbWU/OiBzdHJpbmc7IC8vIHdvcmtmbG93IHdvcmtmbG93TmFtZSAoYWxzbyB1c2VkIHRvIGRlcml2ZSBmaWxlIHdvcmtmbG93TmFtZSlcbiAgcmVhZG9ubHkgc2NoZWR1bGU/OiBzdHJpbmc7IC8vIGNyb24gZXhwcmVzc2lvbiwgZS5nLiAnMCAwICogKiAqJ1xuICByZWFkb25seSBjcmVhdGVJc3N1ZXM/OiBib29sZWFuOyAvLyBjcmVhdGUvdXBkYXRlIGlzc3VlIHdoZW4gZHJpZnQgZGV0ZWN0ZWQgb24gc2NoZWR1bGUgKGRlZmF1bHQgdHJ1ZSlcbiAgcmVhZG9ubHkgb2lkY1JvbGVBcm4/OiBzdHJpbmc7IC8vIGRlZmF1bHQgT0lEQyByb2xlIEFSTiB0byBhc3N1bWUgZm9yIGFsbCBzdGFja3MgKG9yIGVhY2ggc3RhY2sgbXVzdCBoYXZlIGl0cyBvd24pXG4gIHJlYWRvbmx5IG9pZGNSZWdpb24/OiBzdHJpbmc7IC8vIGRlZmF1bHQgT0lEQyByZWdpb24gdG8gYXNzdW1lIGZvciBhbGwgc3RhY2tzIChvciBlYWNoIHN0YWNrIG11c3QgaGF2ZSBpdHMgb3duKVxuICByZWFkb25seSBzdGFja3M6IFN0YWNrW107XG4gIHJlYWRvbmx5IG5vZGVWZXJzaW9uPzogc3RyaW5nOyAvLyBlLmcuLCAnMjQueCdcbiAgLyoqXG4gICAqIFdvcmtpbmcgZGlyZWN0b3J5IGZvciB0aGUgQ0RLIGFwcCwgcmVsYXRpdmUgdG8gdGhlIHJlcG9zaXRvcnkgcm9vdC5cbiAgICogVXNlZnVsIGZvciBtb25vcmVwb3Mgd2hlcmUgaW5mcmFzdHJ1Y3R1cmUgbGl2ZXMgaW4gYSBzdWJkaXJlY3RvcnkgKGUuZy4sICdpbmZyYScpLlxuICAgKlxuICAgKiBXaGVuIHNldCwgYWxsIHdvcmtmbG93IHJ1biBzdGVwcyB3aWxsIHVzZSBgZGVmYXVsdHMucnVuLndvcmtpbmctZGlyZWN0b3J5YFxuICAgKiBhbmQgYXJ0aWZhY3Qvc2NyaXB0IHBhdGhzIHdpbGwgYmUgYWRqdXN0ZWQgYWNjb3JkaW5nbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcmVwb3NpdG9yeSByb290XG4gICAqL1xuICByZWFkb25seSB3b3JraW5nRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAvKipcbiAgICogT3B0aW9uYWwgaG9vayB0byBhcHBlbmQgYWRkaXRpb25hbCBHaXRIdWIgQWN0aW9ucyBzdGVwcyBhZnRlciBkcmlmdCBkZXRlY3Rpb24gcGVyIHN0YWNrLlxuICAgKiBZb3UgY2FuIHN1cHBseSBhIHN0YXRpYyBhcnJheSBvZiBzdGVwcywgb3IgYSBmYWN0b3J5IHRoYXQgcmVjZWl2ZXMgY29udGV4dCBhbmQgcmV0dXJucyBzdGVwcy5cbiAgICovXG4gIC8qKlxuICAgKiBPcHRpb25hbCBhZGRpdGlvbmFsIEdpdEh1YiBBY3Rpb24gc3RlcHMgdG8gcnVuIGFmdGVyIGRyaWZ0IGRldGVjdGlvbiBmb3IgZWFjaCBzdGFjay5cbiAgICogVGhlc2Ugc3RlcHMgcnVuIGFmdGVyIHJlc3VsdHMgYXJlIHVwbG9hZGVkIGZvciBlYWNoIHN0YWNrLiBZb3UgY2FuIGluY2x1ZGVcbiAgICogYW55IG5vdGlmaWNhdGlvbnMgeW91IGxpa2UgKGUuZy4sIFNsYWNrKS4gUHJvdmlkZSBleHBsaWNpdCBpbnB1dHMgKGUuZy4sIHBheWxvYWQvbWFya2Rvd24pXG4gICAqIGRpcmVjdGx5IGluIHlvdXIgc3RlcCB3aXRob3V0IHJlbHlpbmcgb24gYSBwcmUtZ2VuZXJhdGVkIHBheWxvYWQuXG4gICAqL1xuICAvLyBOT1RFOiBqc2lpIGRvZXMgbm90IHN1cHBvcnQgZnVuY3Rpb24gdHlwZXMgaW4gcHVibGljIEFQSXM7IHVzZSAnYW55JyBoZXJlIGFuZCBhY2NlcHQgZWl0aGVyOlxuICAvLyAtIEFuIGFycmF5IG9mIEdpdEh1YiBzdGVwcywgb3JcbiAgLy8gLSBBIGZ1bmN0aW9uIChjdHg6IHsgc3RhY2s6IHN0cmluZyB9KSA9PiBHaXRIdWJTdGVwW11cbiAgLy8gVGhlIGNvbnN0cnVjdG9yIGhhbmRsZXMgYm90aCBhdCBydW50aW1lLlxuICByZWFkb25seSBwb3N0R2l0SHViU3RlcHM/OiBhbnk7XG59XG5cbnR5cGUgR2l0SHViU3RlcCA9IHtcbiAgbmFtZT86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIGlmPzogc3RyaW5nO1xuICB1c2VzPzogc3RyaW5nO1xuICBydW4/OiBzdHJpbmc7XG4gIHdpdGg/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBjb250aW51ZU9uRXJyb3I/OiBib29sZWFuO1xuICBzaGVsbD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjbGFzcyBDZGtEcmlmdERldGVjdGlvbldvcmtmbG93IHtcbiAgcHJpdmF0ZSBzdGF0aWMgc2NyaXB0Q3JlYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBDZGtEcmlmdERldGVjdGlvbldvcmtmbG93UHJvcHMpIHtcbiAgICAvLyBWYWxpZGF0ZSBPSURDIGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLnZhbGlkYXRlT2lkY0NvbmZpZ3VyYXRpb24ocHJvcHMpO1xuXG4gICAgY29uc3QgbmFtZSA9IHByb3BzLndvcmtmbG93TmFtZSA/PyAnZHJpZnQtZGV0ZWN0aW9uJztcbiAgICBjb25zdCBmaWxlTmFtZSA9IGJ1aWxkV29ya2Zsb3dGaWxlTmFtZSh0b0tlYmFiQ2FzZShuYW1lKSk7XG4gICAgY29uc3Qgbm9kZVZlcnNpb24gPSBwcm9wcy5ub2RlVmVyc2lvbiA/PyAnMjQueCc7XG4gICAgY29uc3QgY3JlYXRlSXNzdWVzID0gcHJvcHMuY3JlYXRlSXNzdWVzID8/IHRydWU7XG4gICAgY29uc3QgcHJvamVjdCA9IHByb3BzLnByb2plY3Q7XG4gICAgY29uc3Qgc2NyaXB0T3V0cHV0UGF0aD0gcHJvcHMuc2NyaXB0T3V0cHV0UGF0aCA/PyAnLmdpdGh1Yi93b3JrZmxvd3Mvc2NyaXB0cy9kZXRlY3QtZHJpZnQudHMnO1xuXG4gICAgLy8gTm9ybWFsaXplIHdvcmtpbmcgZGlyZWN0b3J5OiBzdHJpcCB0cmFpbGluZyBzbGFzaGVzXG4gICAgY29uc3Qgd2QgPSBwcm9wcy53b3JraW5nRGlyZWN0b3J5Py5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHdkID8geyBydW46IHsgd29ya2luZ0RpcmVjdG9yeTogd2QgfSB9IDogdW5kZWZpbmVkO1xuXG4gICAgLy8gT25seSBjcmVhdGUgdGhlIGRyaWZ0IGRldGVjdGlvbiBzY3JpcHQgb25jZSB0byBhdm9pZCBjb2xsaXNpb25zXG4gICAgaWYgKCFDZGtEcmlmdERldGVjdGlvbldvcmtmbG93LnNjcmlwdENyZWF0ZWQpIHtcbiAgICAgIG5ldyBDZGtEcmlmdERldGVjdGlvblNjcmlwdCh7XG4gICAgICAgIHByb2plY3Q6IHByb3BzLnByb2plY3QsXG4gICAgICAgIG91dHB1dFBhdGg6IHNjcmlwdE91dHB1dFBhdGgsXG4gICAgICB9KTtcbiAgICAgIENka0RyaWZ0RGV0ZWN0aW9uV29ya2Zsb3cuc2NyaXB0Q3JlYXRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZ2ggPSAocHJvamVjdCBhcyBhbnkpLmdpdGh1YiA/PyBuZXcgR2l0SHViKHByb2plY3QpO1xuICAgIGNvbnN0IHdvcmtmbG93ID0gbmV3IEdpdGh1YldvcmtmbG93KGdoLCBuYW1lLCB7IGZpbGVOYW1lIH0pO1xuXG4gICAgLy8gdHJpZ2dlcnM6IHNjaGVkdWxlICsgbWFudWFsIGRpc3BhdGNoIHdpdGggc3RhY2sgY2hvaWNlXG4gICAgY29uc3Qgc3RhY2tDaG9pY2VzID0gWydhbGwnLCAuLi5wcm9wcy5zdGFja3MubWFwKChzKSA9PiBzLnN0YWNrTmFtZSldO1xuICAgIHdvcmtmbG93Lm9uKHtcbiAgICAgIHNjaGVkdWxlOiBwcm9wcy5zY2hlZHVsZSA/IFt7IGNyb246IHByb3BzLnNjaGVkdWxlIH1dIDogdW5kZWZpbmVkLFxuICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge1xuICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICBzdGFjazoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiU3RhY2sgdG8gY2hlY2sgZm9yIGRyaWZ0ICgnYWxsJyB0byBydW4gZXZlcnkgc3RhY2spXCIsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICB0eXBlOiAnY2hvaWNlJyxcbiAgICAgICAgICAgIG9wdGlvbnM6IHN0YWNrQ2hvaWNlcyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIE9uZSBqb2IgcGVyIHN0YWNrXG4gICAgY29uc3Qgam9iczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBzdGFjayBvZiBwcm9wcy5zdGFja3MpIHtcbiAgICAgIGNvbnN0IHNhbml0aXplZFN0YWNrTmFtZSA9IHRvS2ViYWJDYXNlKHRvR2l0aHViSm9iSWQoc3RhY2suc3RhY2tOYW1lKSk7XG4gICAgICBjb25zdCBvcmlnaW5hbFN0YWNrTmFtZSA9IHN0YWNrLnN0YWNrTmFtZTtcbiAgICAgIGNvbnN0IGpvYklkID0gYGRyaWZ0LSR7c2FuaXRpemVkU3RhY2tOYW1lfWA7XG4gICAgICBjb25zdCByZXN1bHRzRmlsZSA9IGBkcmlmdC1yZXN1bHRzLSR7c2FuaXRpemVkU3RhY2tOYW1lfS5qc29uYDtcbiAgICAgIGNvbnN0IGlubmVyQ29uZCA9IFwiZ2l0aHViLmV2ZW50X25hbWUgPT0gJ3NjaGVkdWxlJyB8fCAhZ2l0aHViLmV2ZW50LmlucHV0cy5zdGFjayB8fCBnaXRodWIuZXZlbnQuaW5wdXRzLnN0YWNrID09ICdhbGwnIHx8IGdpdGh1Yi5ldmVudC5pbnB1dHMuc3RhY2sgPT0gJ1wiICsgc2FuaXRpemVkU3RhY2tOYW1lICsgXCInIHx8IGdpdGh1Yi5ldmVudC5pbnB1dHMuc3RhY2sgPT0gJ1wiICsgb3JpZ2luYWxTdGFja05hbWUgKyBcIidcIjtcbiAgICAgIGNvbnN0IGNvbmRFeHByID0gJyR7eyAnICsgaW5uZXJDb25kICsgJyB9fSc7XG4gICAgICBjb25zdCBub3RDb25kRXhwciA9ICcke3sgISgnICsgaW5uZXJDb25kICsgJykgfX0nO1xuXG4gICAgICBjb25zdCByYXdQb3N0ID0gcHJvcHMucG9zdEdpdEh1YlN0ZXBzO1xuICAgICAgY29uc3QgcG9zdFN0ZXBzOiBHaXRIdWJTdGVwW10gPSB0eXBlb2YgcmF3UG9zdCA9PT0gJ2Z1bmN0aW9uJyA/IChyYXdQb3N0IGFzIChjdHg6IHsgc3RhY2s6IHN0cmluZyB9KSA9PiBHaXRIdWJTdGVwW10pKHsgc3RhY2s6IHNhbml0aXplZFN0YWNrTmFtZSB9KSA6IChyYXdQb3N0ID8/IFtdKTtcblxuICAgICAgLy8gUHJlZml4IHJlc3VsdHMgZmlsZSBwYXRoIGZvciB1c2VzOiBzdGVwcyAod2hpY2ggaWdub3JlIGRlZmF1bHRzLnJ1bi53b3JraW5nLWRpcmVjdG9yeSlcbiAgICAgIGNvbnN0IGFydGlmYWN0UmVzdWx0c1BhdGggPSB3ZCA/IGAke3dkfS8ke3Jlc3VsdHNGaWxlfWAgOiByZXN1bHRzRmlsZTtcbiAgICAgIGNvbnN0IGlzc3VlUmVzdWx0c1BhdGggPSB3ZCA/IGAke3dkfS8ke3Jlc3VsdHNGaWxlfWAgOiByZXN1bHRzRmlsZTtcblxuICAgICAgam9ic1tqb2JJZF0gPSB7XG4gICAgICAgIG5hbWU6IGBEcmlmdCBEZXRlY3Rpb24gLSAke3Nhbml0aXplZFN0YWNrTmFtZX1gLFxuICAgICAgICBydW5zT246IFsndWJ1bnR1LWxhdGVzdCddLFxuICAgICAgICAuLi4oZGVmYXVsdHMgJiYgeyBkZWZhdWx0cyB9KSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICAgIGlkVG9rZW46IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgICAgaXNzdWVzOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgICB9LFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBBV1NfREVGQVVMVF9SRUdJT046IHN0YWNrLmRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lUmVnaW9uLFxuICAgICAgICAgIEFXU19SRUdJT046IHN0YWNrLmRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lUmVnaW9uLFxuICAgICAgICAgIERSSUZUX0RFVEVDVElPTl9PVVRQVVQ6IHJlc3VsdHNGaWxlLFxuICAgICAgICAgIFNUQUNLX0lEOiBzYW5pdGl6ZWRTdGFja05hbWUsXG4gICAgICAgICAgU1RBQ0tfTkFNRTogc3RhY2suc3RhY2tOYW1lLFxuICAgICAgICB9LFxuICAgICAgICAvLyBObyBqb2ItbGV2ZWwgY29uZGl0aW9uOyB3ZSBnYXRlIHN0ZXBzIHNvIHRoZSBqb2IgYWx3YXlzIGNvbXBsZXRlcyBhbmQgc3VtbWFyeSBjYW4gcnVuXG4gICAgICAgIHN0ZXBzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnU2tpcCAoc3RhY2sgbm90IHNlbGVjdGVkKScsIGlmOiBub3RDb25kRXhwciwgcnVuOiAnZWNobyBcIlN0YWNrIG5vdCBzZWxlY3RlZDsgc2tpcHBpbmcgZHJpZnQgZGV0ZWN0aW9uIGZvciB0aGlzIGpvYi5cIicgfSxcbiAgICAgICAgICB7IG5hbWU6ICdDaGVja291dCcsIGlmOiBjb25kRXhwciwgdXNlczogYGFjdGlvbnMvY2hlY2tvdXRAJHtnaXRodWJBY3Rpb25zQ2hlY2tvdXRWZXJzaW9ufWAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnU2V0dXAgTm9kZS5qcycsXG4gICAgICAgICAgICBpZjogY29uZEV4cHIsXG4gICAgICAgICAgICB1c2VzOiBgYWN0aW9ucy9zZXR1cC1ub2RlQCR7Z2l0aHViQWN0aW9uc1NldHVwTm9kZVZlcnNpb259YCxcbiAgICAgICAgICAgIHdpdGg6IHsgJ25vZGUtdmVyc2lvbic6IG5vZGVWZXJzaW9uIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IG5hbWU6ICdJbnN0YWxsIGRlcGVuZGVuY2llcycsIGlmOiBjb25kRXhwciwgcnVuOiAneWFybiBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlIHx8IG5wbSBjaScsIGVudjogeyBHSVRIVUJfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nIH0gfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQVdTIENyZWRlbnRpYWxzJyxcbiAgICAgICAgICAgIGlmOiBjb25kRXhwcixcbiAgICAgICAgICAgIGlkOiAnY3JlZHMnLFxuICAgICAgICAgICAgdXNlczogYGF3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHNAJHtnaXRodWJBY3Rpb25zQXdzQ3JlZGVudGlhbHNWZXJzaW9ufWAsXG4gICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICdyb2xlLXRvLWFzc3VtZSc6IHN0YWNrLm9pZGNSb2xlQXJuID8/IHByb3BzLm9pZGNSb2xlQXJuLFxuICAgICAgICAgICAgICAncm9sZS1zZXNzaW9uLW5hbWUnOiAnR2l0SHViQWN0aW9uJyxcbiAgICAgICAgICAgICAgJ2F3cy1yZWdpb24nOiBzdGFjay5vaWRjUmVnaW9uID8/IHByb3BzLm9pZGNSZWdpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0Fzc3VtZSBEcmlmdCBEZXRlY3Rpb24gUm9sZScsXG4gICAgICAgICAgICBpZjogY29uZEV4cHIsXG4gICAgICAgICAgICB1c2VzOiBgYXdzLWFjdGlvbnMvY29uZmlndXJlLWF3cy1jcmVkZW50aWFsc0Ake2dpdGh1YkFjdGlvbnNBd3NDcmVkZW50aWFsc1ZlcnNpb259YCxcbiAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgJ3JvbGUtdG8tYXNzdW1lJzogc3RhY2suZHJpZnREZXRlY3Rpb25Sb2xlVG9Bc3N1bWVBcm4sXG4gICAgICAgICAgICAgICdyb2xlLWNoYWluaW5nJzogdHJ1ZSxcbiAgICAgICAgICAgICAgJ3JvbGUtc2tpcC1zZXNzaW9uLXRhZ2dpbmcnOiB0cnVlLFxuICAgICAgICAgICAgICAnYXdzLXJlZ2lvbic6IHN0YWNrLmRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lUmVnaW9uLFxuICAgICAgICAgICAgICAnYXdzLWFjY2Vzcy1rZXktaWQnOiAnJHt7IHN0ZXBzLmNyZWRzLm91dHB1dHMuYXdzLWFjY2Vzcy1rZXktaWQgfX0nLFxuICAgICAgICAgICAgICAnYXdzLXNlY3JldC1hY2Nlc3Mta2V5JzogJyR7eyBzdGVwcy5jcmVkcy5vdXRwdXRzLmF3cy1zZWNyZXQtYWNjZXNzLWtleSB9fScsXG4gICAgICAgICAgICAgICdhd3Mtc2Vzc2lvbi10b2tlbic6ICcke3sgc3RlcHMuY3JlZHMub3V0cHV0cy5hd3Mtc2Vzc2lvbi10b2tlbiB9fScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0RldGVjdCBkcmlmdCcsXG4gICAgICAgICAgICBpZjogY29uZEV4cHIsXG4gICAgICAgICAgICBpZDogJ2RyaWZ0JyxcbiAgICAgICAgICAgIGNvbnRpbnVlT25FcnJvcjogdHJ1ZSwgLy8gYWxsb3cgYXJ0aWZhY3QgdXBsb2FkIGFuZCBpc3N1ZSBjcmVhdGlvbiBldmVuIHdoZW4gZHJpZnQgaXMgZGV0ZWN0ZWRcbiAgICAgICAgICAgIHJ1bjogW1xuICAgICAgICAgICAgICAnc2V0ICtlJyxcbiAgICAgICAgICAgICAgLy8gVXNlIHRoZSBidW5kbGVkIHNjcmlwdCBmcm9tIHRoaXMgcGFja2FnZVxuICAgICAgICAgICAgICAnbm9kZSAuL25vZGVfbW9kdWxlcy9AampyYXdsaW5zL2Nkay1kaWZmLXByLWdpdGh1Yi1hY3Rpb24vbGliL2Jpbi9kZXRlY3QtZHJpZnQuanMnLFxuICAgICAgICAgICAgICAnc3RhdHVzPSQ/JyxcbiAgICAgICAgICAgICAgJ2lmIFsgLWYgXCIkRFJJRlRfREVURUNUSU9OX09VVFBVVFwiIF07IHRoZW4gZWNobyBcIlJlc3VsdHMgZmlsZSBjcmVhdGVkOiAkRFJJRlRfREVURUNUSU9OX09VVFBVVFwiOyBmaScsXG4gICAgICAgICAgICAgIC8vIEV4cG9zZSB1c2VmdWwgb3V0cHV0cyBmb3IgZG93bnN0cmVhbSBzdGVwc1xuICAgICAgICAgICAgICBcIlNUQUNLX0FSTj0kKGF3cyBjbG91ZGZvcm1hdGlvbiBkZXNjcmliZS1zdGFja3MgLS1zdGFjay1uYW1lIFxcXCIkU1RBQ0tfTkFNRVxcXCIgLS1xdWVyeSAnU3RhY2tzWzBdLlN0YWNrSWQnIC0tb3V0cHV0IHRleHQgMj4vZGV2L251bGwgfHwgdHJ1ZSlcIixcbiAgICAgICAgICAgICAgJ2VjaG8gXCJzdGFjay1hcm49JFNUQUNLX0FSTlwiID4+IFwiJEdJVEhVQl9PVVRQVVRcIicsXG4gICAgICAgICAgICAgICdleGl0ICRzdGF0dXMnLFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICBTVEFDS19OQU1FOiBzdGFjay5zdGFja05hbWUsXG4gICAgICAgICAgICAgIEFXU19SRUdJT046IHN0YWNrLmRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lUmVnaW9uLFxuICAgICAgICAgICAgICBEUklGVF9ERVRFQ1RJT05fT1VUUFVUOiByZXN1bHRzRmlsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnVXBsb2FkIHJlc3VsdHMnLFxuICAgICAgICAgICAgaWY6IGNvbmRFeHByLFxuICAgICAgICAgICAgdXNlczogYGFjdGlvbnMvdXBsb2FkLWFydGlmYWN0QCR7Z2l0aHViQWN0aW9uc1VwbG9hZEFydGlmYWN0VmVyc2lvbn1gLFxuICAgICAgICAgICAgd2l0aDogeyAnbmFtZSc6IGBkcmlmdC1yZXN1bHRzLSR7c2FuaXRpemVkU3RhY2tOYW1lfWAsICdwYXRoJzogYXJ0aWZhY3RSZXN1bHRzUGF0aCwgJ2lmLW5vLWZpbGVzLWZvdW5kJzogJ2lnbm9yZScgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLihcbiAgICAgICAgICAgIGNyZWF0ZUlzc3Vlc1xuICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiAnQ3JlYXRlIElzc3VlIG9uIERyaWZ0JyxcbiAgICAgICAgICAgICAgICAgIGlmOiBcImFsd2F5cygpICYmIHN0ZXBzLmRyaWZ0Lm91dGNvbWUgPT0gJ2ZhaWx1cmUnXCIsXG4gICAgICAgICAgICAgICAgICBpZDogJ2lzc3VlJyxcbiAgICAgICAgICAgICAgICAgIHVzZXM6IGBhY3Rpb25zL2dpdGh1Yi1zY3JpcHRAJHtnaXRodWJBY3Rpb25zR2l0aHViU2NyaXB0VmVyc2lvbn1gLFxuICAgICAgICAgICAgICAgICAgd2l0aDogeyAncmVzdWx0LWVuY29kaW5nJzogJ3N0cmluZycsICdzY3JpcHQnOiBpc3N1ZVNjcmlwdChzYW5pdGl6ZWRTdGFja05hbWUsIHN0YWNrLmRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lUmVnaW9uLCBpc3N1ZVJlc3VsdHNQYXRoKSB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgOiBbXVxuICAgICAgICAgICksXG4gICAgICAgICAgLi4ucG9zdFN0ZXBzLm1hcCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgczogYW55ID0geyAuLi4oc3RlcCBhcyBhbnkpIH07XG4gICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBvbmx5IHJ1biBleHRyYSBub3RpZmljYXRpb24gc3RlcHMgd2hlbiBkcmlmdCBvY2N1cnNcbiAgICAgICAgICAgIHMuaWYgPSBzLmlmID8/IFwiYWx3YXlzKCkgJiYgc3RlcHMuZHJpZnQub3V0Y29tZSA9PSAnZmFpbHVyZSdcIjtcbiAgICAgICAgICAgIHJldHVybiBzO1xuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBzdW1tYXJ5IGFnZ3JlZ2F0b3Igam9iXG4gICAgam9ic1snZHJpZnQtc3VtbWFyeSddID0ge1xuICAgICAgbmFtZTogJ0RyaWZ0IERldGVjdGlvbiBTdW1tYXJ5JyxcbiAgICAgIG5lZWRzOiBPYmplY3Qua2V5cyhqb2JzKS5maWx0ZXIoKGopID0+IGouc3RhcnRzV2l0aCgnZHJpZnQtJykgJiYgaiAhPT0gJ2RyaWZ0LXN1bW1hcnknKSxcbiAgICAgIHJ1bnNPbjogWyd1YnVudHUtbGF0ZXN0J10sXG4gICAgICBwZXJtaXNzaW9uczogeyBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFEIH0sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0Rvd25sb2FkIGFsbCBhcnRpZmFjdHMnLFxuICAgICAgICAgIHVzZXM6IGBhY3Rpb25zL2Rvd25sb2FkLWFydGlmYWN0QCR7Z2l0aHViQWN0aW9uc0Rvd25sb2FkQXJ0aWZhY3RWZXJzaW9ufWAsXG4gICAgICAgICAgd2l0aDogeyBwYXRoOiAnZHJpZnQtcmVzdWx0cycgfSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBuYW1lOiAnR2VuZXJhdGUgc3VtbWFyeScsIHNoZWxsOiAnYmFzaCcsIHJ1bjogc3VtbWFyeVNjcmlwdCgpIH0sXG4gICAgICBdLFxuICAgIH07XG5cbiAgICB3b3JrZmxvdy5hZGRKb2JzKGpvYnMpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU9pZGNDb25maWd1cmF0aW9uKHByb3BzOiBDZGtEcmlmdERldGVjdGlvbldvcmtmbG93UHJvcHMpOiB2b2lkIHtcbiAgICBjb25zdCBoYXNEZWZhdWx0T2lkY1JvbGUgPSAhIXByb3BzLm9pZGNSb2xlQXJuO1xuICAgIGNvbnN0IGhhc0RlZmF1bHRPaWRjUmVnaW9uID0gISFwcm9wcy5vaWRjUmVnaW9uO1xuXG4gICAgLy8gQ2hlY2sgaWYgYWxsIHN0YWNrcyBoYXZlIHRoZWlyIG93biBPSURDIGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBhbGxTdGFja3NIYXZlT2lkY1JvbGUgPSBwcm9wcy5zdGFja3MuZXZlcnkoc3RhY2sgPT4gISFzdGFjay5vaWRjUm9sZUFybik7XG4gICAgY29uc3QgYWxsU3RhY2tzSGF2ZU9pZGNSZWdpb24gPSBwcm9wcy5zdGFja3MuZXZlcnkoc3RhY2sgPT4gISFzdGFjay5vaWRjUmVnaW9uKTtcblxuICAgIC8vIEVpdGhlciBkZWZhdWx0cyBtdXN0IGJlIHByb3ZpZGVkIE9SIGFsbCBzdGFja3MgbXVzdCBoYXZlIHRoZWlyIG93biBPSURDIGNvbmZpZ1xuICAgIGlmICghaGFzRGVmYXVsdE9pZGNSb2xlICYmICFhbGxTdGFja3NIYXZlT2lkY1JvbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRWl0aGVyIHByb3ZpZGUgZGVmYXVsdCBvaWRjUm9sZUFybiBvciBzcGVjaWZ5IG9pZGNSb2xlQXJuIGZvciBlYWNoIHN0YWNrJyk7XG4gICAgfVxuXG4gICAgaWYgKCFoYXNEZWZhdWx0T2lkY1JlZ2lvbiAmJiAhYWxsU3RhY2tzSGF2ZU9pZGNSZWdpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRWl0aGVyIHByb3ZpZGUgZGVmYXVsdCBvaWRjUmVnaW9uIG9yIHNwZWNpZnkgb2lkY1JlZ2lvbiBmb3IgZWFjaCBzdGFjaycpO1xuICAgIH1cbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGlzc3VlU2NyaXB0KHN0YWNrOiBzdHJpbmcsIHJlZ2lvbjogc3RyaW5nLCByZXN1bHRzRmlsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gQ29uc3RydWN0IGEgcGxhaW4gSlMgc2NyaXB0IHN0cmluZyAobm8gdGVtcGxhdGUgc3RyaW5nIG5lc3RpbmcgbWlzaGFwcylcbiAgY29uc3QgbGluZXMgPSBbXG4gICAgXCJjb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XCIsXG4gICAgYGNvbnN0IHJlc3VsdHNGaWxlID0gJyR7cmVzdWx0c0ZpbGV9JztgLFxuICAgIFwiaWYgKCFmcy5leGlzdHNTeW5jKHJlc3VsdHNGaWxlKSkgeyBjb25zb2xlLmxvZygnTm8gcmVzdWx0cyBmaWxlIGZvdW5kJyk7IHJldHVybiAnTk9fUkVTVUxUUyc7IH1cIixcbiAgICBcImNvbnN0IHJlc3VsdHMgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhyZXN1bHRzRmlsZSwgJ3V0ZjgnKSk7XCIsXG4gICAgXCJjb25zdCBkcmlmdGVkU3RhY2tzID0gcmVzdWx0cy5maWx0ZXIociA9PiByLmRyaWZ0U3RhdHVzID09PSAnRFJJRlRFRCcpO1wiLFxuICAgIFwiaWYgKGRyaWZ0ZWRTdGFja3MubGVuZ3RoID09PSAwKSB7IGNvbnNvbGUubG9nKCdObyBkcmlmdCBkZXRlY3RlZCcpOyByZXR1cm4gJ05PX0RSSUZUJzsgfVwiLFxuICAgIGBjb25zdCB0aXRsZSA9ICdEcmlmdCBEZXRlY3RlZCBpbiAke3N0YWNrfSc7YCxcbiAgICBgbGV0IGJvZHkgPSAnIyMgRHJpZnQgRGV0ZWN0aW9uIFJlcG9ydFxcXFxuXFxcXG4nICsgJyoqU3RhY2s6KiogJHtzdGFja31cXFxcbicgKyAnKipSZWdpb246KiogJHtyZWdpb259XFxcXG4nICsgJyoqVGltZToqKiAnICsgbmV3IERhdGUoKS50b0lTT1N0cmluZygpICsgJ1xcXFxuXFxcXG4nO2AsXG4gICAgXCJib2R5ICs9ICcjIyMgU3VtbWFyeVxcXFxuJztcIixcbiAgICBcImJvZHkgKz0gJy0gVG90YWwgc3RhY2tzIGNoZWNrZWQ6ICcgKyByZXN1bHRzLmxlbmd0aCArICdcXFxcbic7XCIsXG4gICAgXCJib2R5ICs9ICctIERyaWZ0ZWQgc3RhY2tzOiAnICsgZHJpZnRlZFN0YWNrcy5sZW5ndGggKyAnXFxcXG5cXFxcbic7XCIsXG4gICAgXCJib2R5ICs9ICcjIyMgRHJpZnRlZCBTdGFja3NcXFxcbic7XCIsXG4gICAgJ2ZvciAoY29uc3QgcyBvZiBkcmlmdGVkU3RhY2tzKSB7JyxcbiAgICAnICBjb25zdCByZXNvdXJjZXMgPSBzLmRyaWZ0ZWRSZXNvdXJjZXMgfHwgW107JyxcbiAgICBcIiAgYm9keSArPSAnIyMjIyAnICsgcy5zdGFja05hbWUgKyAnXFxcXG4nO1wiLFxuICAgIFwiICBib2R5ICs9ICctIERyaWZ0ZWQgcmVzb3VyY2VzOiAnICsgcmVzb3VyY2VzLmxlbmd0aCArICdcXFxcbic7XCIsXG4gICAgXCIgIGZvciAoY29uc3QgciBvZiByZXNvdXJjZXMpIHsgYm9keSArPSAnICAtICcgKyByLmxvZ2ljYWxSZXNvdXJjZUlkICsgJyAoJyArIHIucmVzb3VyY2VUeXBlICsgJylcXFxcbic7IH1cIixcbiAgICBcIiAgYm9keSArPSAnXFxcXG4nO1wiLFxuICAgICd9JyxcbiAgICBcImJvZHkgKz0gJyMjIyBBY3Rpb24gUmVxdWlyZWRcXFxcbicgKyAnUGxlYXNlIHJldmlldyB0aGUgZHJpZnRlZCByZXNvdXJjZXMgYW5kIGVpdGhlcjpcXFxcbjEuIFVwZGF0ZSB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29kZSB0byBtYXRjaCB0aGUgYWN0dWFsIHN0YXRlXFxcXG4yLiBSZXN0b3JlIHRoZSByZXNvdXJjZXMgdG8gbWF0Y2ggdGhlIGV4cGVjdGVkIHN0YXRlXFxcXG5cXFxcbic7XCIsXG4gICAgJ2JvZHkgKz0gYFtWaWV3IHdvcmtmbG93IHJ1bl0oJHtjb250ZXh0LnNlcnZlclVybH0vJHtjb250ZXh0LnJlcG8ub3duZXJ9LyR7Y29udGV4dC5yZXBvLnJlcG99L2FjdGlvbnMvcnVucy8ke2NvbnRleHQucnVuSWR9KWA7JyxcbiAgICAvLyBMaXN0IG9yIHVwZGF0ZSBhbiBpc3N1ZSB3aXRoIGxhYmVsc1xuICAgIGBjb25zdCBpc3N1ZXMgPSBhd2FpdCBnaXRodWIucmVzdC5pc3N1ZXMubGlzdEZvclJlcG8oeyBvd25lcjogY29udGV4dC5yZXBvLm93bmVyLCByZXBvOiBjb250ZXh0LnJlcG8ucmVwbywgc3RhdGU6ICdvcGVuJywgbGFiZWxzOiBbJ2RyaWZ0LWRldGVjdGlvbicsICcke3N0YWNrfSddIH0pO2AsXG4gICAgJ2xldCBpc3N1ZU51bWJlcjsnLFxuICAgICdpZiAoaXNzdWVzLmRhdGEubGVuZ3RoID09PSAwKSB7JyxcbiAgICBgICBjb25zdCBjcmVhdGVkID0gYXdhaXQgZ2l0aHViLnJlc3QuaXNzdWVzLmNyZWF0ZSh7IG93bmVyOiBjb250ZXh0LnJlcG8ub3duZXIsIHJlcG86IGNvbnRleHQucmVwby5yZXBvLCB0aXRsZSwgYm9keSwgbGFiZWxzOiBbJ2RyaWZ0LWRldGVjdGlvbicsICcke3N0YWNrfSddIH0pO2AsXG4gICAgJyAgaXNzdWVOdW1iZXIgPSBjcmVhdGVkLmRhdGEubnVtYmVyOycsXG4gICAgJ30gZWxzZSB7JyxcbiAgICAnICBjb25zdCBpc3N1ZSA9IGlzc3Vlcy5kYXRhWzBdOycsXG4gICAgJyAgaXNzdWVOdW1iZXIgPSBpc3N1ZS5udW1iZXI7JyxcbiAgICAnICBhd2FpdCBnaXRodWIucmVzdC5pc3N1ZXMuY3JlYXRlQ29tbWVudCh7IG93bmVyOiBjb250ZXh0LnJlcG8ub3duZXIsIHJlcG86IGNvbnRleHQucmVwby5yZXBvLCBpc3N1ZV9udW1iZXI6IGlzc3VlLm51bWJlciwgYm9keSB9KTsnLFxuICAgICd9JyxcbiAgICAncmV0dXJuIFN0cmluZyhpc3N1ZU51bWJlciA/PyBcIlwiKTsnLFxuICBdO1xuICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG59XG5cblxuZnVuY3Rpb24gc3VtbWFyeVNjcmlwdCgpOiBzdHJpbmcge1xuICByZXR1cm4gW1xuICAgICcjIS9iaW4vYmFzaCcsXG4gICAgJ3NldCAtZScsXG4gICAgJ2VjaG8gXCIjIyBEcmlmdCBEZXRlY3Rpb24gU3VtbWFyeVwiID4+ICRHSVRIVUJfU1RFUF9TVU1NQVJZJyxcbiAgICAnZWNobyBcIlwiID4+ICRHSVRIVUJfU1RFUF9TVU1NQVJZJyxcbiAgICAnJyxcbiAgICAndG90YWxfc3RhY2tzPTAnLFxuICAgICd0b3RhbF9kcmlmdGVkPTAnLFxuICAgICd0b3RhbF9lcnJvcnM9MCcsXG4gICAgJycsXG4gICAgJ3Nob3B0IC1zIG51bGxnbG9iJyxcbiAgICAnZm9yIGZpbGUgaW4gZHJpZnQtcmVzdWx0cy0qLmpzb24gZHJpZnQtcmVzdWx0cy8qL2RyaWZ0LXJlc3VsdHMtKi5qc29uOyBkbycsXG4gICAgJyAgaWYgW1sgLWYgXCIkZmlsZVwiIF1dOyB0aGVuJyxcbiAgICAnICAgIHN0YWNrPSQoYmFzZW5hbWUgXCIkZmlsZVwiIHwgc2VkIC1FIFxcXCJzL15kcmlmdC1yZXN1bHRzLShbXi5dKylcXFxcLmpzb24kL1xcXFwxL1xcXCIpJyxcbiAgICAnICAgIGVjaG8gXCIjIyMgU3RhY2s6ICRzdGFja1wiID4+ICRHSVRIVUJfU1RFUF9TVU1NQVJZJyxcbiAgICAnICAgIGpxIC1yIFxcJycgK1xuICAgICAgJy4gYXMgJHJlc3VsdHMgfFxcbicgK1xuICAgICAgJ1wiLSBUb3RhbCBzdGFja3M6IFwiICsgKCRyZXN1bHRzIHwgbGVuZ3RoIHwgdG9zdHJpbmcpICsgXCJcXFxcblwiICtcXG4nICtcbiAgICAgICdcIi0gRHJpZnRlZDogXCIgKyAoWy5bXSB8IHNlbGVjdCguZHJpZnRTdGF0dXMgPT0gXCJEUklGVEVEXCIpXSB8IGxlbmd0aCB8IHRvc3RyaW5nKSArIFwiXFxcXG5cIiArXFxuJyArXG4gICAgICAnXCItIEVycm9yczogXCIgKyAoWy5bXSB8IHNlbGVjdCguZXJyb3IpXSB8IGxlbmd0aCB8IHRvc3RyaW5nKSArIFwiXFxcXG5cIiArXFxuJyArXG4gICAgICAnKFsuW10gfCBzZWxlY3QoLmRyaWZ0U3RhdHVzID09IFwiRFJJRlRFRFwiKV0gfCBpZiBsZW5ndGggPiAwIHRoZW4gXCJcXFxcbioqRHJpZnRlZCBzdGFja3M6KipcXFxcblwiICsgKG1hcChcIiAgLSBcIiArIC5zdGFja05hbWUgKyBcIiAoXCIgKyAoKC5kcmlmdGVkUmVzb3VyY2VzIC8vIFtdKSB8IGxlbmd0aCB8IHRvc3RyaW5nKSArIFwiIHJlc291cmNlcylcIikgfCBqb2luKFwiXFxcXG5cIikpIGVsc2UgXCJcIiBlbmQpXFxuJyArXG4gICAgJ1xcJycgK1xuICAgICcgXCIkZmlsZVwiID4+ICRHSVRIVUJfU1RFUF9TVU1NQVJZJyxcbiAgICAnICAgIGVjaG8gXCJcIiA+PiAkR0lUSFVCX1NURVBfU1VNTUFSWScsXG4gICAgJyAgICB0b3RhbF9zdGFja3M9JCgodG90YWxfc3RhY2tzICsgJChqcSBcXFwibGVuZ3RoXFxcIiBcXFwiJGZpbGVcXFwiKSkpJyxcbiAgICAnICAgIHRvdGFsX2RyaWZ0ZWQ9JCgodG90YWxfZHJpZnRlZCArICQoanEgXFxcIlsuW10gfCBzZWxlY3QoLmRyaWZ0U3RhdHVzID09IFxcXFxcXFwiRFJJRlRFRFxcXFxcXFwiKV0gfCBsZW5ndGhcXFwiIFxcXCIkZmlsZVxcXCIpKSknLFxuICAgICcgICAgdG90YWxfZXJyb3JzPSQoKHRvdGFsX2Vycm9ycyArICQoanEgXFxcIlsuW10gfCBzZWxlY3QoLmVycm9yKV0gfCBsZW5ndGhcXFwiIFxcXCIkZmlsZVxcXCIpKSknLFxuICAgICcgIGZpJyxcbiAgICAnZG9uZScsXG4gICAgJycsXG4gICAgJ2VjaG8gXCIjIyMgT3ZlcmFsbCBTdW1tYXJ5XCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICdlY2hvIFwiLSBUb3RhbCBzdGFja3MgY2hlY2tlZDogJHRvdGFsX3N0YWNrc1wiID4+ICRHSVRIVUJfU1RFUF9TVU1NQVJZJyxcbiAgICAnZWNobyBcIi0gVG90YWwgZHJpZnRlZCBzdGFja3M6ICR0b3RhbF9kcmlmdGVkXCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICdlY2hvIFwiLSBUb3RhbCBlcnJvcnM6ICR0b3RhbF9lcnJvcnNcIiA+PiAkR0lUSFVCX1NURVBfU1VNTUFSWScsXG4gICAgJycsXG4gICAgJ2lmIFtbICR0b3RhbF9kcmlmdGVkIC1ndCAwIF1dOyB0aGVuJyxcbiAgICAnICBlY2hvIFwiXCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICcgIGVjaG8gXCLimqDvuI8gKipBY3Rpb24gcmVxdWlyZWQ6KiogRHJpZnQgZGV0ZWN0ZWQgaW4gJHRvdGFsX2RyaWZ0ZWQgc3RhY2tzXCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICdmaScsXG4gIF0uam9pbignXFxuJyk7XG59XG5cbmZ1bmN0aW9uIHRvS2ViYWJDYXNlKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzLnJlcGxhY2UoL1teYS16QS1aMC05XSsvZywgJy0nKS5yZXBsYWNlKC9eLSt8LSskL2csICcnKS50b0xvd2VyQ2FzZSgpO1xufVxuXG5cbmZ1bmN0aW9uIGJ1aWxkV29ya2Zsb3dGaWxlTmFtZShiYXNlTmFtZTogc3RyaW5nLCBleHQ6IHN0cmluZyA9ICcueW1sJywgbWF4TGVuZ3RoOiBudW1iZXIgPSBNQVhfV09SS0ZMT1dfRklMRU5BTUVfTEVOR1RIKTogc3RyaW5nIHtcbiAgY29uc3QgZnVsbCA9IGAke2Jhc2VOYW1lfSR7ZXh0fWA7XG4gIGlmIChmdWxsLmxlbmd0aCA8PSBtYXhMZW5ndGgpIHtcbiAgICByZXR1cm4gZnVsbDtcbiAgfVxuICBjb25zdCBhdmFpbGFibGUgPSBtYXhMZW5ndGggLSBleHQubGVuZ3RoO1xuICBpZiAoYXZhaWxhYmxlIDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFdvcmtmbG93IGV4dGVuc2lvbiBleGNlZWRzIG1heGltdW0gZmlsZW5hbWUgbGVuZ3RoIG9mICR7bWF4TGVuZ3RofWApO1xuICB9XG4gIC8vIFRydW5jYXRlIGZyb20gdGhlIGJlZ2lubmluZyB0byBrZWVwIHRoZSBlbmQgaW50YWN0XG4gIHJldHVybiBiYXNlTmFtZS5zbGljZSgtYXZhaWxhYmxlKS5yZXBsYWNlKC9eLSsvLCAnJykgKyBleHQ7XG59XG5cbmZ1bmN0aW9uIHRvR2l0aHViSm9iSWQoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gR2l0SHViIGpvYl9pZCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgb3IgdW5kZXJzY29yZSBhbmQgY29udGFpbiBvbmx5IEEtWmEtejAtOSwgJy0nLCAnXydcbiAgLy8gMSkgUmVwbGFjZSBhbnkgZGlzYWxsb3dlZCBjaGFycyB3aXRoICctJ1xuICBsZXQgb3V0ID0gcy5yZXBsYWNlKC9bXkEtWmEtejAtOV8tXSsvZywgJy0nKTtcbiAgLy8gMikgQ29sbGFwc2UgY29uc2VjdXRpdmUgZGFzaGVzXG4gIG91dCA9IG91dC5yZXBsYWNlKC8tKy9nLCAnLScpO1xuICAvLyAzKSBUcmltIGxlYWRpbmcvdHJhaWxpbmcgZGFzaGVzICh1bmRlcnNjb3JlcyBhcmUgYWxsb3dlZCBhdCBzdGFydClcbiAgb3V0ID0gb3V0LnJlcGxhY2UoL14tK3wtKyQvZywgJycpO1xuICAvLyA0KSBMb3dlcmNhc2UgZm9yIGNvbnNpc3RlbmN5IChub3QgcmVxdWlyZWQgYnkgR2l0SHViIGJ1dCBrZWVwcyB0aGluZ3Mgc3RhYmxlKVxuICBvdXQgPSBvdXQudG9Mb3dlckNhc2UoKTtcbiAgLy8gNSkgRW5zdXJlIGl0IHN0YXJ0cyB3aXRoIGEgbGV0dGVyIG9yIHVuZGVyc2NvcmVcbiAgaWYgKCFvdXQgfHwgIS9eW2Etel9dL2kudGVzdChvdXQpKSB7XG4gICAgb3V0ID0gYHMtJHtvdXR9YDtcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuIl19
325
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRHJpZnREZXRlY3Rpb25Xb3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DZGtEcmlmdERldGVjdGlvbldvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOENBQTJEO0FBQzNELHVFQUFrRTtBQUNsRSxpRkFBMkU7QUFFM0UsTUFBTSxrQ0FBa0MsR0FBRyxJQUFJLENBQUM7QUFDaEQsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLENBQUM7QUFDMUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLENBQUM7QUFDM0MsTUFBTSxrQ0FBa0MsR0FBRyxJQUFJLENBQUM7QUFDaEQsTUFBTSxvQ0FBb0MsR0FBRyxJQUFJLENBQUM7QUFDbEQsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLENBQUM7QUFFOUMsTUFBTSw0QkFBNEIsR0FBRyxHQUFHLENBQUM7QUF3RXpDLE1BQWEseUJBQXlCO0lBR3BDLFlBQVksS0FBcUM7UUFDL0MsOEJBQThCO1FBQzlCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLGlCQUFpQixDQUFDO1FBQ3JELE1BQU0sUUFBUSxHQUFHLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDO1FBQ2hELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDOUIsTUFBTSxnQkFBZ0IsR0FBRSxLQUFLLENBQUMsZ0JBQWdCLElBQUksMkNBQTJDLENBQUM7UUFFOUYsc0RBQXNEO1FBQ3RELE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLEVB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LENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEMsR0FBRyxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdpdEh1YiwgR2l0aHViV29ya2Zsb3cgfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yic7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9uIH0gZnJvbSAncHJvamVuL2xpYi9naXRodWIvd29ya2Zsb3dzLW1vZGVsJztcbmltcG9ydCB7IENka0RyaWZ0RGV0ZWN0aW9uU2NyaXB0IH0gZnJvbSAnLi9iaW4vY2RrLWRyaWZ0LWRldGVjdGlvbi1zY3JpcHQnO1xuXG5jb25zdCBnaXRodWJBY3Rpb25zQXdzQ3JlZGVudGlhbHNWZXJzaW9uID0gJ3Y1JztcbmNvbnN0IGdpdGh1YkFjdGlvbnNDaGVja291dFZlcnNpb24gPSAndjUnO1xuY29uc3QgZ2l0aHViQWN0aW9uc1NldHVwTm9kZVZlcnNpb24gPSAndjUnO1xuY29uc3QgZ2l0aHViQWN0aW9uc1VwbG9hZEFydGlmYWN0VmVyc2lvbiA9ICd2NCc7XG5jb25zdCBnaXRodWJBY3Rpb25zRG93bmxvYWRBcnRpZmFjdFZlcnNpb24gPSAndjUnO1xuY29uc3QgZ2l0aHViQWN0aW9uc0dpdGh1YlNjcmlwdFZlcnNpb24gPSAndjgnO1xuXG5jb25zdCBNQVhfV09SS0ZMT1dfRklMRU5BTUVfTEVOR1RIID0gMjU1O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrIHtcbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lUmVnaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lQXJuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZhaWxPbkRyaWZ0PzogYm9vbGVhbjsgLy8gaWYgdHJ1ZSwgZmFpbCBqb2Igd2hlbiBkcmlmdCBkZXRlY3RlZCAoZGVmYXVsdCB0cnVlKVxuICByZWFkb25seSBvaWRjUm9sZUFybj86IHN0cmluZzsgLy8gT3B0aW9uYWwgb3ZlcnJpZGUgZm9yIE9JREMgcm9sZVxuICByZWFkb25seSBvaWRjUmVnaW9uPzogc3RyaW5nOyAvLyBPcHRpb25hbCBvdmVycmlkZSBmb3IgT0lEQyByZWdpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDZGtEcmlmdERldGVjdGlvbldvcmtmbG93UHJvcHMge1xuICByZWFkb25seSBzY3JpcHRPdXRwdXRQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9qZWN0OiBhbnk7IC8vIGF2b2lkIGV4cG9ydGluZyBwcm9qZW4gdHlwZXMgaW4gcHVibGljIEFQSVxuICByZWFkb25seSB3b3JrZmxvd05hbWU/OiBzdHJpbmc7IC8vIHdvcmtmbG93IHdvcmtmbG93TmFtZSAoYWxzbyB1c2VkIHRvIGRlcml2ZSBmaWxlIHdvcmtmbG93TmFtZSlcbiAgcmVhZG9ubHkgc2NoZWR1bGU/OiBzdHJpbmc7IC8vIGNyb24gZXhwcmVzc2lvbiwgZS5nLiAnMCAwICogKiAqJ1xuICByZWFkb25seSBjcmVhdGVJc3N1ZXM/OiBib29sZWFuOyAvLyBjcmVhdGUvdXBkYXRlIGlzc3VlIHdoZW4gZHJpZnQgZGV0ZWN0ZWQgb24gc2NoZWR1bGUgKGRlZmF1bHQgdHJ1ZSlcbiAgcmVhZG9ubHkgb2lkY1JvbGVBcm4/OiBzdHJpbmc7IC8vIGRlZmF1bHQgT0lEQyByb2xlIEFSTiB0byBhc3N1bWUgZm9yIGFsbCBzdGFja3MgKG9yIGVhY2ggc3RhY2sgbXVzdCBoYXZlIGl0cyBvd24pXG4gIHJlYWRvbmx5IG9pZGNSZWdpb24/OiBzdHJpbmc7IC8vIGRlZmF1bHQgT0lEQyByZWdpb24gdG8gYXNzdW1lIGZvciBhbGwgc3RhY2tzIChvciBlYWNoIHN0YWNrIG11c3QgaGF2ZSBpdHMgb3duKVxuICByZWFkb25seSBzdGFja3M6IFN0YWNrW107XG4gIHJlYWRvbmx5IG5vZGVWZXJzaW9uPzogc3RyaW5nOyAvLyBlLmcuLCAnMjQueCdcbiAgLyoqXG4gICAqIFdvcmtpbmcgZGlyZWN0b3J5IGZvciB0aGUgQ0RLIGFwcCwgcmVsYXRpdmUgdG8gdGhlIHJlcG9zaXRvcnkgcm9vdC5cbiAgICogVXNlZnVsIGZvciBtb25vcmVwb3Mgd2hlcmUgaW5mcmFzdHJ1Y3R1cmUgbGl2ZXMgaW4gYSBzdWJkaXJlY3RvcnkgKGUuZy4sICdpbmZyYScpLlxuICAgKlxuICAgKiBXaGVuIHNldCwgYWxsIHdvcmtmbG93IHJ1biBzdGVwcyB3aWxsIHVzZSBgZGVmYXVsdHMucnVuLndvcmtpbmctZGlyZWN0b3J5YFxuICAgKiBhbmQgYXJ0aWZhY3Qvc2NyaXB0IHBhdGhzIHdpbGwgYmUgYWRqdXN0ZWQgYWNjb3JkaW5nbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcmVwb3NpdG9yeSByb290XG4gICAqL1xuICByZWFkb25seSB3b3JraW5nRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAvKipcbiAgICogT3B0aW9uYWwgaG9vayB0byBhcHBlbmQgYWRkaXRpb25hbCBHaXRIdWIgQWN0aW9ucyBzdGVwcyBhZnRlciBkcmlmdCBkZXRlY3Rpb24gcGVyIHN0YWNrLlxuICAgKiBZb3UgY2FuIHN1cHBseSBhIHN0YXRpYyBhcnJheSBvZiBzdGVwcywgb3IgYSBmYWN0b3J5IHRoYXQgcmVjZWl2ZXMgY29udGV4dCBhbmQgcmV0dXJucyBzdGVwcy5cbiAgICovXG4gIC8qKlxuICAgKiBPcHRpb25hbCBhZGRpdGlvbmFsIEdpdEh1YiBBY3Rpb24gc3RlcHMgdG8gcnVuIGFmdGVyIGRyaWZ0IGRldGVjdGlvbiBmb3IgZWFjaCBzdGFjay5cbiAgICogVGhlc2Ugc3RlcHMgcnVuIGFmdGVyIHJlc3VsdHMgYXJlIHVwbG9hZGVkIGZvciBlYWNoIHN0YWNrLiBZb3UgY2FuIGluY2x1ZGVcbiAgICogYW55IG5vdGlmaWNhdGlvbnMgeW91IGxpa2UgKGUuZy4sIFNsYWNrKS4gUHJvdmlkZSBleHBsaWNpdCBpbnB1dHMgKGUuZy4sIHBheWxvYWQvbWFya2Rvd24pXG4gICAqIGRpcmVjdGx5IGluIHlvdXIgc3RlcCB3aXRob3V0IHJlbHlpbmcgb24gYSBwcmUtZ2VuZXJhdGVkIHBheWxvYWQuXG4gICAqL1xuICAvLyBOT1RFOiBqc2lpIGRvZXMgbm90IHN1cHBvcnQgZnVuY3Rpb24gdHlwZXMgaW4gcHVibGljIEFQSXM7IHVzZSAnYW55JyBoZXJlIGFuZCBhY2NlcHQgZWl0aGVyOlxuICAvLyAtIEFuIGFycmF5IG9mIEdpdEh1YiBzdGVwcywgb3JcbiAgLy8gLSBBIGZ1bmN0aW9uIChjdHg6IHsgc3RhY2s6IHN0cmluZzsgd29ya2luZ0RpcmVjdG9yeT86IHN0cmluZyB9KSA9PiBHaXRIdWJTdGVwW11cbiAgLy8gVGhlIGNvbnN0cnVjdG9yIGhhbmRsZXMgYm90aCBhdCBydW50aW1lLlxuICByZWFkb25seSBwb3N0R2l0SHViU3RlcHM/OiBhbnk7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIEdpdEh1YiBBY3Rpb25zIHN0ZXBzIHRvIHJ1biBiZWZvcmUgZHJpZnQgZGV0ZWN0aW9uIChhZnRlciBpbnN0YWxsLCBiZWZvcmUgQVdTIGNyZWRzKS5cbiAgICogQWNjZXB0cyBhIHN0YXRpYyBhcnJheSBvZiBzdGVwcywgb3IgYSBmYWN0b3J5IGZ1bmN0aW9uIHJlY2VpdmluZyBjb250ZXh0OlxuICAgKiBgKGN0eDogeyBzdGFjazogc3RyaW5nOyB3b3JraW5nRGlyZWN0b3J5Pzogc3RyaW5nIH0pID0+IEdpdEh1YlN0ZXBbXWBcbiAgICpcbiAgICogV2hlbiBgd29ya2luZ0RpcmVjdG9yeWAgaXMgc2V0LCBhbGwgYHJ1bjpgIHN0ZXBzIGluaGVyaXQgdGhhdCBkaXJlY3RvcnkuXG4gICAqIFRvIHJ1biBhIHN0ZXAgYXQgdGhlIHJlcG9zaXRvcnkgcm9vdCwgYWRkIGB3b3JraW5nLWRpcmVjdG9yeTogJy4nYCB0byB0aGF0IHN0ZXAuXG4gICAqXG4gICAqIFByZS1zdGVwcyBhdXRvbWF0aWNhbGx5IHJlY2VpdmUgdGhlIHN0YWNrLXNlbGVjdGlvbiBjb25kaXRpb24gKGBpZmApIHNvIHRoZXlcbiAgICogb25seSBydW4gd2hlbiB0aGUgc3RhY2sgaXMgc2VsZWN0ZWQgdmlhIGRpc3BhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlR2l0SHViU3RlcHM/OiBhbnk7XG59XG5cbnR5cGUgR2l0SHViU3RlcCA9IHtcbiAgbmFtZT86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIGlmPzogc3RyaW5nO1xuICB1c2VzPzogc3RyaW5nO1xuICBydW4/OiBzdHJpbmc7XG4gIHdpdGg/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBjb250aW51ZU9uRXJyb3I/OiBib29sZWFuO1xuICBzaGVsbD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjbGFzcyBDZGtEcmlmdERldGVjdGlvbldvcmtmbG93IHtcbiAgcHJpdmF0ZSBzdGF0aWMgc2NyaXB0Q3JlYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBDZGtEcmlmdERldGVjdGlvbldvcmtmbG93UHJvcHMpIHtcbiAgICAvLyBWYWxpZGF0ZSBPSURDIGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLnZhbGlkYXRlT2lkY0NvbmZpZ3VyYXRpb24ocHJvcHMpO1xuXG4gICAgY29uc3QgbmFtZSA9IHByb3BzLndvcmtmbG93TmFtZSA/PyAnZHJpZnQtZGV0ZWN0aW9uJztcbiAgICBjb25zdCBmaWxlTmFtZSA9IGJ1aWxkV29ya2Zsb3dGaWxlTmFtZSh0b0tlYmFiQ2FzZShuYW1lKSk7XG4gICAgY29uc3Qgbm9kZVZlcnNpb24gPSBwcm9wcy5ub2RlVmVyc2lvbiA/PyAnMjQueCc7XG4gICAgY29uc3QgY3JlYXRlSXNzdWVzID0gcHJvcHMuY3JlYXRlSXNzdWVzID8/IHRydWU7XG4gICAgY29uc3QgcHJvamVjdCA9IHByb3BzLnByb2plY3Q7XG4gICAgY29uc3Qgc2NyaXB0T3V0cHV0UGF0aD0gcHJvcHMuc2NyaXB0T3V0cHV0UGF0aCA/PyAnLmdpdGh1Yi93b3JrZmxvd3Mvc2NyaXB0cy9kZXRlY3QtZHJpZnQudHMnO1xuXG4gICAgLy8gTm9ybWFsaXplIHdvcmtpbmcgZGlyZWN0b3J5OiBzdHJpcCB0cmFpbGluZyBzbGFzaGVzXG4gICAgY29uc3Qgd2QgPSBwcm9wcy53b3JraW5nRGlyZWN0b3J5Py5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHdkID8geyBydW46IHsgd29ya2luZ0RpcmVjdG9yeTogd2QgfSB9IDogdW5kZWZpbmVkO1xuXG4gICAgLy8gT25seSBjcmVhdGUgdGhlIGRyaWZ0IGRldGVjdGlvbiBzY3JpcHQgb25jZSB0byBhdm9pZCBjb2xsaXNpb25zXG4gICAgaWYgKCFDZGtEcmlmdERldGVjdGlvbldvcmtmbG93LnNjcmlwdENyZWF0ZWQpIHtcbiAgICAgIG5ldyBDZGtEcmlmdERldGVjdGlvblNjcmlwdCh7XG4gICAgICAgIHByb2plY3Q6IHByb3BzLnByb2plY3QsXG4gICAgICAgIG91dHB1dFBhdGg6IHNjcmlwdE91dHB1dFBhdGgsXG4gICAgICB9KTtcbiAgICAgIENka0RyaWZ0RGV0ZWN0aW9uV29ya2Zsb3cuc2NyaXB0Q3JlYXRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZ2ggPSAocHJvamVjdCBhcyBhbnkpLmdpdGh1YiA/PyBuZXcgR2l0SHViKHByb2plY3QpO1xuICAgIGNvbnN0IHdvcmtmbG93ID0gbmV3IEdpdGh1YldvcmtmbG93KGdoLCBuYW1lLCB7IGZpbGVOYW1lIH0pO1xuXG4gICAgLy8gdHJpZ2dlcnM6IHNjaGVkdWxlICsgbWFudWFsIGRpc3BhdGNoIHdpdGggc3RhY2sgY2hvaWNlXG4gICAgY29uc3Qgc3RhY2tDaG9pY2VzID0gWydhbGwnLCAuLi5wcm9wcy5zdGFja3MubWFwKChzKSA9PiBzLnN0YWNrTmFtZSldO1xuICAgIHdvcmtmbG93Lm9uKHtcbiAgICAgIHNjaGVkdWxlOiBwcm9wcy5zY2hlZHVsZSA/IFt7IGNyb246IHByb3BzLnNjaGVkdWxlIH1dIDogdW5kZWZpbmVkLFxuICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge1xuICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICBzdGFjazoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiU3RhY2sgdG8gY2hlY2sgZm9yIGRyaWZ0ICgnYWxsJyB0byBydW4gZXZlcnkgc3RhY2spXCIsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICB0eXBlOiAnY2hvaWNlJyxcbiAgICAgICAgICAgIG9wdGlvbnM6IHN0YWNrQ2hvaWNlcyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIE9uZSBqb2IgcGVyIHN0YWNrXG4gICAgY29uc3Qgam9iczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBzdGFjayBvZiBwcm9wcy5zdGFja3MpIHtcbiAgICAgIGNvbnN0IHNhbml0aXplZFN0YWNrTmFtZSA9IHRvS2ViYWJDYXNlKHRvR2l0aHViSm9iSWQoc3RhY2suc3RhY2tOYW1lKSk7XG4gICAgICBjb25zdCBvcmlnaW5hbFN0YWNrTmFtZSA9IHN0YWNrLnN0YWNrTmFtZTtcbiAgICAgIGNvbnN0IGpvYklkID0gYGRyaWZ0LSR7c2FuaXRpemVkU3RhY2tOYW1lfWA7XG4gICAgICBjb25zdCByZXN1bHRzRmlsZSA9IGBkcmlmdC1yZXN1bHRzLSR7c2FuaXRpemVkU3RhY2tOYW1lfS5qc29uYDtcbiAgICAgIGNvbnN0IGlubmVyQ29uZCA9IFwiZ2l0aHViLmV2ZW50X25hbWUgPT0gJ3NjaGVkdWxlJyB8fCAhZ2l0aHViLmV2ZW50LmlucHV0cy5zdGFjayB8fCBnaXRodWIuZXZlbnQuaW5wdXRzLnN0YWNrID09ICdhbGwnIHx8IGdpdGh1Yi5ldmVudC5pbnB1dHMuc3RhY2sgPT0gJ1wiICsgc2FuaXRpemVkU3RhY2tOYW1lICsgXCInIHx8IGdpdGh1Yi5ldmVudC5pbnB1dHMuc3RhY2sgPT0gJ1wiICsgb3JpZ2luYWxTdGFja05hbWUgKyBcIidcIjtcbiAgICAgIGNvbnN0IGNvbmRFeHByID0gJyR7eyAnICsgaW5uZXJDb25kICsgJyB9fSc7XG4gICAgICBjb25zdCBub3RDb25kRXhwciA9ICcke3sgISgnICsgaW5uZXJDb25kICsgJykgfX0nO1xuXG4gICAgICBjb25zdCBzdGVwQ3R4ID0geyBzdGFjazogc2FuaXRpemVkU3RhY2tOYW1lLCB3b3JraW5nRGlyZWN0b3J5OiB3ZCB9O1xuICAgICAgY29uc3QgcmF3UHJlID0gcHJvcHMucHJlR2l0SHViU3RlcHM7XG4gICAgICBjb25zdCBwcmVTdGVwczogR2l0SHViU3RlcFtdID0gdHlwZW9mIHJhd1ByZSA9PT0gJ2Z1bmN0aW9uJyA/IHJhd1ByZShzdGVwQ3R4KSA6IChyYXdQcmUgPz8gW10pO1xuICAgICAgY29uc3QgcmF3UG9zdCA9IHByb3BzLnBvc3RHaXRIdWJTdGVwcztcbiAgICAgIGNvbnN0IHBvc3RTdGVwczogR2l0SHViU3RlcFtdID0gdHlwZW9mIHJhd1Bvc3QgPT09ICdmdW5jdGlvbicgPyByYXdQb3N0KHN0ZXBDdHgpIDogKHJhd1Bvc3QgPz8gW10pO1xuXG4gICAgICAvLyBQcmVmaXggcmVzdWx0cyBmaWxlIHBhdGggZm9yIHVzZXM6IHN0ZXBzICh3aGljaCBpZ25vcmUgZGVmYXVsdHMucnVuLndvcmtpbmctZGlyZWN0b3J5KVxuICAgICAgY29uc3QgYXJ0aWZhY3RSZXN1bHRzUGF0aCA9IHdkID8gYCR7d2R9LyR7cmVzdWx0c0ZpbGV9YCA6IHJlc3VsdHNGaWxlO1xuICAgICAgY29uc3QgaXNzdWVSZXN1bHRzUGF0aCA9IHdkID8gYCR7d2R9LyR7cmVzdWx0c0ZpbGV9YCA6IHJlc3VsdHNGaWxlO1xuXG4gICAgICBqb2JzW2pvYklkXSA9IHtcbiAgICAgICAgbmFtZTogYERyaWZ0IERldGVjdGlvbiAtICR7c2FuaXRpemVkU3RhY2tOYW1lfWAsXG4gICAgICAgIHJ1bnNPbjogWyd1YnVudHUtbGF0ZXN0J10sXG4gICAgICAgIC4uLihkZWZhdWx0cyAmJiB7IGRlZmF1bHRzIH0pLFxuICAgICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgICAgaWRUb2tlbjogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgICBpc3N1ZXM6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgIH0sXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIEFXU19ERUZBVUxUX1JFR0lPTjogc3RhY2suZHJpZnREZXRlY3Rpb25Sb2xlVG9Bc3N1bWVSZWdpb24sXG4gICAgICAgICAgQVdTX1JFR0lPTjogc3RhY2suZHJpZnREZXRlY3Rpb25Sb2xlVG9Bc3N1bWVSZWdpb24sXG4gICAgICAgICAgRFJJRlRfREVURUNUSU9OX09VVFBVVDogcmVzdWx0c0ZpbGUsXG4gICAgICAgICAgU1RBQ0tfSUQ6IHNhbml0aXplZFN0YWNrTmFtZSxcbiAgICAgICAgICBTVEFDS19OQU1FOiBzdGFjay5zdGFja05hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIE5vIGpvYi1sZXZlbCBjb25kaXRpb247IHdlIGdhdGUgc3RlcHMgc28gdGhlIGpvYiBhbHdheXMgY29tcGxldGVzIGFuZCBzdW1tYXJ5IGNhbiBydW5cbiAgICAgICAgc3RlcHM6IFtcbiAgICAgICAgICB7IG5hbWU6ICdTa2lwIChzdGFjayBub3Qgc2VsZWN0ZWQpJywgaWY6IG5vdENvbmRFeHByLCBydW46ICdlY2hvIFwiU3RhY2sgbm90IHNlbGVjdGVkOyBza2lwcGluZyBkcmlmdCBkZXRlY3Rpb24gZm9yIHRoaXMgam9iLlwiJyB9LFxuICAgICAgICAgIHsgbmFtZTogJ0NoZWNrb3V0JywgaWY6IGNvbmRFeHByLCB1c2VzOiBgYWN0aW9ucy9jaGVja291dEAke2dpdGh1YkFjdGlvbnNDaGVja291dFZlcnNpb259YCB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdTZXR1cCBOb2RlLmpzJyxcbiAgICAgICAgICAgIGlmOiBjb25kRXhwcixcbiAgICAgICAgICAgIHVzZXM6IGBhY3Rpb25zL3NldHVwLW5vZGVAJHtnaXRodWJBY3Rpb25zU2V0dXBOb2RlVmVyc2lvbn1gLFxuICAgICAgICAgICAgd2l0aDogeyAnbm9kZS12ZXJzaW9uJzogbm9kZVZlcnNpb24gfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgbmFtZTogJ0luc3RhbGwgZGVwZW5kZW5jaWVzJywgaWY6IGNvbmRFeHByLCBydW46ICd5YXJuIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGUgfHwgbnBtIGNpJywgZW52OiB7IEdJVEhVQl9UT0tFTjogJyR7eyBzZWNyZXRzLkdJVEhVQl9UT0tFTiB9fScgfSB9LFxuICAgICAgICAgIC4uLnByZVN0ZXBzLm1hcCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgczogYW55ID0geyAuLi4oc3RlcCBhcyBhbnkpIH07XG4gICAgICAgICAgICBzLmlmID0gcy5pZiA/PyBjb25kRXhwcjtcbiAgICAgICAgICAgIHJldHVybiBzO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdBV1MgQ3JlZGVudGlhbHMnLFxuICAgICAgICAgICAgaWY6IGNvbmRFeHByLFxuICAgICAgICAgICAgaWQ6ICdjcmVkcycsXG4gICAgICAgICAgICB1c2VzOiBgYXdzLWFjdGlvbnMvY29uZmlndXJlLWF3cy1jcmVkZW50aWFsc0Ake2dpdGh1YkFjdGlvbnNBd3NDcmVkZW50aWFsc1ZlcnNpb259YCxcbiAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgJ3JvbGUtdG8tYXNzdW1lJzogc3RhY2sub2lkY1JvbGVBcm4gPz8gcHJvcHMub2lkY1JvbGVBcm4sXG4gICAgICAgICAgICAgICdyb2xlLXNlc3Npb24tbmFtZSc6ICdHaXRIdWJBY3Rpb24nLFxuICAgICAgICAgICAgICAnYXdzLXJlZ2lvbic6IHN0YWNrLm9pZGNSZWdpb24gPz8gcHJvcHMub2lkY1JlZ2lvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQXNzdW1lIERyaWZ0IERldGVjdGlvbiBSb2xlJyxcbiAgICAgICAgICAgIGlmOiBjb25kRXhwcixcbiAgICAgICAgICAgIHVzZXM6IGBhd3MtYWN0aW9ucy9jb25maWd1cmUtYXdzLWNyZWRlbnRpYWxzQCR7Z2l0aHViQWN0aW9uc0F3c0NyZWRlbnRpYWxzVmVyc2lvbn1gLFxuICAgICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgICAncm9sZS10by1hc3N1bWUnOiBzdGFjay5kcmlmdERldGVjdGlvblJvbGVUb0Fzc3VtZUFybixcbiAgICAgICAgICAgICAgJ3JvbGUtY2hhaW5pbmcnOiB0cnVlLFxuICAgICAgICAgICAgICAncm9sZS1za2lwLXNlc3Npb24tdGFnZ2luZyc6IHRydWUsXG4gICAgICAgICAgICAgICdhd3MtcmVnaW9uJzogc3RhY2suZHJpZnREZXRlY3Rpb25Sb2xlVG9Bc3N1bWVSZWdpb24sXG4gICAgICAgICAgICAgICdhd3MtYWNjZXNzLWtleS1pZCc6ICcke3sgc3RlcHMuY3JlZHMub3V0cHV0cy5hd3MtYWNjZXNzLWtleS1pZCB9fScsXG4gICAgICAgICAgICAgICdhd3Mtc2VjcmV0LWFjY2Vzcy1rZXknOiAnJHt7IHN0ZXBzLmNyZWRzLm91dHB1dHMuYXdzLXNlY3JldC1hY2Nlc3Mta2V5IH19JyxcbiAgICAgICAgICAgICAgJ2F3cy1zZXNzaW9uLXRva2VuJzogJyR7eyBzdGVwcy5jcmVkcy5vdXRwdXRzLmF3cy1zZXNzaW9uLXRva2VuIH19JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnRGV0ZWN0IGRyaWZ0JyxcbiAgICAgICAgICAgIGlmOiBjb25kRXhwcixcbiAgICAgICAgICAgIGlkOiAnZHJpZnQnLFxuICAgICAgICAgICAgY29udGludWVPbkVycm9yOiB0cnVlLCAvLyBhbGxvdyBhcnRpZmFjdCB1cGxvYWQgYW5kIGlzc3VlIGNyZWF0aW9uIGV2ZW4gd2hlbiBkcmlmdCBpcyBkZXRlY3RlZFxuICAgICAgICAgICAgcnVuOiBbXG4gICAgICAgICAgICAgICdzZXQgK2UnLFxuICAgICAgICAgICAgICAvLyBVc2UgdGhlIGJ1bmRsZWQgc2NyaXB0IGZyb20gdGhpcyBwYWNrYWdlXG4gICAgICAgICAgICAgICdub2RlIC4vbm9kZV9tb2R1bGVzL0BqanJhd2xpbnMvY2RrLWRpZmYtcHItZ2l0aHViLWFjdGlvbi9saWIvYmluL2RldGVjdC1kcmlmdC5qcycsXG4gICAgICAgICAgICAgICdzdGF0dXM9JD8nLFxuICAgICAgICAgICAgICAnaWYgWyAtZiBcIiREUklGVF9ERVRFQ1RJT05fT1VUUFVUXCIgXTsgdGhlbiBlY2hvIFwiUmVzdWx0cyBmaWxlIGNyZWF0ZWQ6ICREUklGVF9ERVRFQ1RJT05fT1VUUFVUXCI7IGZpJyxcbiAgICAgICAgICAgICAgLy8gRXhwb3NlIHVzZWZ1bCBvdXRwdXRzIGZvciBkb3duc3RyZWFtIHN0ZXBzXG4gICAgICAgICAgICAgIFwiU1RBQ0tfQVJOPSQoYXdzIGNsb3VkZm9ybWF0aW9uIGRlc2NyaWJlLXN0YWNrcyAtLXN0YWNrLW5hbWUgXFxcIiRTVEFDS19OQU1FXFxcIiAtLXF1ZXJ5ICdTdGFja3NbMF0uU3RhY2tJZCcgLS1vdXRwdXQgdGV4dCAyPi9kZXYvbnVsbCB8fCB0cnVlKVwiLFxuICAgICAgICAgICAgICAnZWNobyBcInN0YWNrLWFybj0kU1RBQ0tfQVJOXCIgPj4gXCIkR0lUSFVCX09VVFBVVFwiJyxcbiAgICAgICAgICAgICAgJ2V4aXQgJHN0YXR1cycsXG4gICAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgICAgZW52OiB7XG4gICAgICAgICAgICAgIFNUQUNLX05BTUU6IHN0YWNrLnN0YWNrTmFtZSxcbiAgICAgICAgICAgICAgQVdTX1JFR0lPTjogc3RhY2suZHJpZnREZXRlY3Rpb25Sb2xlVG9Bc3N1bWVSZWdpb24sXG4gICAgICAgICAgICAgIERSSUZUX0RFVEVDVElPTl9PVVRQVVQ6IHJlc3VsdHNGaWxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdVcGxvYWQgcmVzdWx0cycsXG4gICAgICAgICAgICBpZjogY29uZEV4cHIsXG4gICAgICAgICAgICB1c2VzOiBgYWN0aW9ucy91cGxvYWQtYXJ0aWZhY3RAJHtnaXRodWJBY3Rpb25zVXBsb2FkQXJ0aWZhY3RWZXJzaW9ufWAsXG4gICAgICAgICAgICB3aXRoOiB7ICduYW1lJzogYGRyaWZ0LXJlc3VsdHMtJHtzYW5pdGl6ZWRTdGFja05hbWV9YCwgJ3BhdGgnOiBhcnRpZmFjdFJlc3VsdHNQYXRoLCAnaWYtbm8tZmlsZXMtZm91bmQnOiAnaWdub3JlJyB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uKFxuICAgICAgICAgICAgY3JlYXRlSXNzdWVzXG4gICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdDcmVhdGUgSXNzdWUgb24gRHJpZnQnLFxuICAgICAgICAgICAgICAgICAgaWY6IFwiYWx3YXlzKCkgJiYgc3RlcHMuZHJpZnQub3V0Y29tZSA9PSAnZmFpbHVyZSdcIixcbiAgICAgICAgICAgICAgICAgIGlkOiAnaXNzdWUnLFxuICAgICAgICAgICAgICAgICAgdXNlczogYGFjdGlvbnMvZ2l0aHViLXNjcmlwdEAke2dpdGh1YkFjdGlvbnNHaXRodWJTY3JpcHRWZXJzaW9ufWAsXG4gICAgICAgICAgICAgICAgICB3aXRoOiB7ICdyZXN1bHQtZW5jb2RpbmcnOiAnc3RyaW5nJywgJ3NjcmlwdCc6IGlzc3VlU2NyaXB0KHNhbml0aXplZFN0YWNrTmFtZSwgc3RhY2suZHJpZnREZXRlY3Rpb25Sb2xlVG9Bc3N1bWVSZWdpb24sIGlzc3VlUmVzdWx0c1BhdGgpIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICA6IFtdXG4gICAgICAgICAgKSxcbiAgICAgICAgICAuLi5wb3N0U3RlcHMubWFwKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzOiBhbnkgPSB7IC4uLihzdGVwIGFzIGFueSkgfTtcbiAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIG9ubHkgcnVuIGV4dHJhIG5vdGlmaWNhdGlvbiBzdGVwcyB3aGVuIGRyaWZ0IG9jY3Vyc1xuICAgICAgICAgICAgcy5pZiA9IHMuaWYgPz8gXCJhbHdheXMoKSAmJiBzdGVwcy5kcmlmdC5vdXRjb21lID09ICdmYWlsdXJlJ1wiO1xuICAgICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIHN1bW1hcnkgYWdncmVnYXRvciBqb2JcbiAgICBqb2JzWydkcmlmdC1zdW1tYXJ5J10gPSB7XG4gICAgICBuYW1lOiAnRHJpZnQgRGV0ZWN0aW9uIFN1bW1hcnknLFxuICAgICAgbmVlZHM6IE9iamVjdC5rZXlzKGpvYnMpLmZpbHRlcigoaikgPT4gai5zdGFydHNXaXRoKCdkcmlmdC0nKSAmJiBqICE9PSAnZHJpZnQtc3VtbWFyeScpLFxuICAgICAgcnVuc09uOiBbJ3VidW50dS1sYXRlc3QnXSxcbiAgICAgIHBlcm1pc3Npb25zOiB7IGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnRG93bmxvYWQgYWxsIGFydGlmYWN0cycsXG4gICAgICAgICAgdXNlczogYGFjdGlvbnMvZG93bmxvYWQtYXJ0aWZhY3RAJHtnaXRodWJBY3Rpb25zRG93bmxvYWRBcnRpZmFjdFZlcnNpb259YCxcbiAgICAgICAgICB3aXRoOiB7IHBhdGg6ICdkcmlmdC1yZXN1bHRzJyB9LFxuICAgICAgICB9LFxuICAgICAgICB7IG5hbWU6ICdHZW5lcmF0ZSBzdW1tYXJ5Jywgc2hlbGw6ICdiYXNoJywgcnVuOiBzdW1tYXJ5U2NyaXB0KCkgfSxcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIHdvcmtmbG93LmFkZEpvYnMoam9icyk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlT2lkY0NvbmZpZ3VyYXRpb24ocHJvcHM6IENka0RyaWZ0RGV0ZWN0aW9uV29ya2Zsb3dQcm9wcyk6IHZvaWQge1xuICAgIGNvbnN0IGhhc0RlZmF1bHRPaWRjUm9sZSA9ICEhcHJvcHMub2lkY1JvbGVBcm47XG4gICAgY29uc3QgaGFzRGVmYXVsdE9pZGNSZWdpb24gPSAhIXByb3BzLm9pZGNSZWdpb247XG5cbiAgICAvLyBDaGVjayBpZiBhbGwgc3RhY2tzIGhhdmUgdGhlaXIgb3duIE9JREMgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IGFsbFN0YWNrc0hhdmVPaWRjUm9sZSA9IHByb3BzLnN0YWNrcy5ldmVyeShzdGFjayA9PiAhIXN0YWNrLm9pZGNSb2xlQXJuKTtcbiAgICBjb25zdCBhbGxTdGFja3NIYXZlT2lkY1JlZ2lvbiA9IHByb3BzLnN0YWNrcy5ldmVyeShzdGFjayA9PiAhIXN0YWNrLm9pZGNSZWdpb24pO1xuXG4gICAgLy8gRWl0aGVyIGRlZmF1bHRzIG11c3QgYmUgcHJvdmlkZWQgT1IgYWxsIHN0YWNrcyBtdXN0IGhhdmUgdGhlaXIgb3duIE9JREMgY29uZmlnXG4gICAgaWYgKCFoYXNEZWZhdWx0T2lkY1JvbGUgJiYgIWFsbFN0YWNrc0hhdmVPaWRjUm9sZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgcHJvdmlkZSBkZWZhdWx0IG9pZGNSb2xlQXJuIG9yIHNwZWNpZnkgb2lkY1JvbGVBcm4gZm9yIGVhY2ggc3RhY2snKTtcbiAgICB9XG5cbiAgICBpZiAoIWhhc0RlZmF1bHRPaWRjUmVnaW9uICYmICFhbGxTdGFja3NIYXZlT2lkY1JlZ2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgcHJvdmlkZSBkZWZhdWx0IG9pZGNSZWdpb24gb3Igc3BlY2lmeSBvaWRjUmVnaW9uIGZvciBlYWNoIHN0YWNrJyk7XG4gICAgfVxuICB9XG59XG5cblxuZnVuY3Rpb24gaXNzdWVTY3JpcHQoc3RhY2s6IHN0cmluZywgcmVnaW9uOiBzdHJpbmcsIHJlc3VsdHNGaWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBDb25zdHJ1Y3QgYSBwbGFpbiBKUyBzY3JpcHQgc3RyaW5nIChubyB0ZW1wbGF0ZSBzdHJpbmcgbmVzdGluZyBtaXNoYXBzKVxuICBjb25zdCBsaW5lcyA9IFtcbiAgICBcImNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcIixcbiAgICBgY29uc3QgcmVzdWx0c0ZpbGUgPSAnJHtyZXN1bHRzRmlsZX0nO2AsXG4gICAgXCJpZiAoIWZzLmV4aXN0c1N5bmMocmVzdWx0c0ZpbGUpKSB7IGNvbnNvbGUubG9nKCdObyByZXN1bHRzIGZpbGUgZm91bmQnKTsgcmV0dXJuICdOT19SRVNVTFRTJzsgfVwiLFxuICAgIFwiY29uc3QgcmVzdWx0cyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHJlc3VsdHNGaWxlLCAndXRmOCcpKTtcIixcbiAgICBcImNvbnN0IGRyaWZ0ZWRTdGFja3MgPSByZXN1bHRzLmZpbHRlcihyID0+IHIuZHJpZnRTdGF0dXMgPT09ICdEUklGVEVEJyk7XCIsXG4gICAgXCJpZiAoZHJpZnRlZFN0YWNrcy5sZW5ndGggPT09IDApIHsgY29uc29sZS5sb2coJ05vIGRyaWZ0IGRldGVjdGVkJyk7IHJldHVybiAnTk9fRFJJRlQnOyB9XCIsXG4gICAgYGNvbnN0IHRpdGxlID0gJ0RyaWZ0IERldGVjdGVkIGluICR7c3RhY2t9JztgLFxuICAgIGBsZXQgYm9keSA9ICcjIyBEcmlmdCBEZXRlY3Rpb24gUmVwb3J0XFxcXG5cXFxcbicgKyAnKipTdGFjazoqKiAke3N0YWNrfVxcXFxuJyArICcqKlJlZ2lvbjoqKiAke3JlZ2lvbn1cXFxcbicgKyAnKipUaW1lOioqICcgKyBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgKyAnXFxcXG5cXFxcbic7YCxcbiAgICBcImJvZHkgKz0gJyMjIyBTdW1tYXJ5XFxcXG4nO1wiLFxuICAgIFwiYm9keSArPSAnLSBUb3RhbCBzdGFja3MgY2hlY2tlZDogJyArIHJlc3VsdHMubGVuZ3RoICsgJ1xcXFxuJztcIixcbiAgICBcImJvZHkgKz0gJy0gRHJpZnRlZCBzdGFja3M6ICcgKyBkcmlmdGVkU3RhY2tzLmxlbmd0aCArICdcXFxcblxcXFxuJztcIixcbiAgICBcImJvZHkgKz0gJyMjIyBEcmlmdGVkIFN0YWNrc1xcXFxuJztcIixcbiAgICAnZm9yIChjb25zdCBzIG9mIGRyaWZ0ZWRTdGFja3MpIHsnLFxuICAgICcgIGNvbnN0IHJlc291cmNlcyA9IHMuZHJpZnRlZFJlc291cmNlcyB8fCBbXTsnLFxuICAgIFwiICBib2R5ICs9ICcjIyMjICcgKyBzLnN0YWNrTmFtZSArICdcXFxcbic7XCIsXG4gICAgXCIgIGJvZHkgKz0gJy0gRHJpZnRlZCByZXNvdXJjZXM6ICcgKyByZXNvdXJjZXMubGVuZ3RoICsgJ1xcXFxuJztcIixcbiAgICBcIiAgZm9yIChjb25zdCByIG9mIHJlc291cmNlcykgeyBib2R5ICs9ICcgIC0gJyArIHIubG9naWNhbFJlc291cmNlSWQgKyAnICgnICsgci5yZXNvdXJjZVR5cGUgKyAnKVxcXFxuJzsgfVwiLFxuICAgIFwiICBib2R5ICs9ICdcXFxcbic7XCIsXG4gICAgJ30nLFxuICAgIFwiYm9keSArPSAnIyMjIEFjdGlvbiBSZXF1aXJlZFxcXFxuJyArICdQbGVhc2UgcmV2aWV3IHRoZSBkcmlmdGVkIHJlc291cmNlcyBhbmQgZWl0aGVyOlxcXFxuMS4gVXBkYXRlIHRoZSBpbmZyYXN0cnVjdHVyZSBjb2RlIHRvIG1hdGNoIHRoZSBhY3R1YWwgc3RhdGVcXFxcbjIuIFJlc3RvcmUgdGhlIHJlc291cmNlcyB0byBtYXRjaCB0aGUgZXhwZWN0ZWQgc3RhdGVcXFxcblxcXFxuJztcIixcbiAgICAnYm9keSArPSBgW1ZpZXcgd29ya2Zsb3cgcnVuXSgke2NvbnRleHQuc2VydmVyVXJsfS8ke2NvbnRleHQucmVwby5vd25lcn0vJHtjb250ZXh0LnJlcG8ucmVwb30vYWN0aW9ucy9ydW5zLyR7Y29udGV4dC5ydW5JZH0pYDsnLFxuICAgIC8vIExpc3Qgb3IgdXBkYXRlIGFuIGlzc3VlIHdpdGggbGFiZWxzXG4gICAgYGNvbnN0IGlzc3VlcyA9IGF3YWl0IGdpdGh1Yi5yZXN0Lmlzc3Vlcy5saXN0Rm9yUmVwbyh7IG93bmVyOiBjb250ZXh0LnJlcG8ub3duZXIsIHJlcG86IGNvbnRleHQucmVwby5yZXBvLCBzdGF0ZTogJ29wZW4nLCBsYWJlbHM6IFsnZHJpZnQtZGV0ZWN0aW9uJywgJyR7c3RhY2t9J10gfSk7YCxcbiAgICAnbGV0IGlzc3VlTnVtYmVyOycsXG4gICAgJ2lmIChpc3N1ZXMuZGF0YS5sZW5ndGggPT09IDApIHsnLFxuICAgIGAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBnaXRodWIucmVzdC5pc3N1ZXMuY3JlYXRlKHsgb3duZXI6IGNvbnRleHQucmVwby5vd25lciwgcmVwbzogY29udGV4dC5yZXBvLnJlcG8sIHRpdGxlLCBib2R5LCBsYWJlbHM6IFsnZHJpZnQtZGV0ZWN0aW9uJywgJyR7c3RhY2t9J10gfSk7YCxcbiAgICAnICBpc3N1ZU51bWJlciA9IGNyZWF0ZWQuZGF0YS5udW1iZXI7JyxcbiAgICAnfSBlbHNlIHsnLFxuICAgICcgIGNvbnN0IGlzc3VlID0gaXNzdWVzLmRhdGFbMF07JyxcbiAgICAnICBpc3N1ZU51bWJlciA9IGlzc3VlLm51bWJlcjsnLFxuICAgICcgIGF3YWl0IGdpdGh1Yi5yZXN0Lmlzc3Vlcy5jcmVhdGVDb21tZW50KHsgb3duZXI6IGNvbnRleHQucmVwby5vd25lciwgcmVwbzogY29udGV4dC5yZXBvLnJlcG8sIGlzc3VlX251bWJlcjogaXNzdWUubnVtYmVyLCBib2R5IH0pOycsXG4gICAgJ30nLFxuICAgICdyZXR1cm4gU3RyaW5nKGlzc3VlTnVtYmVyID8/IFwiXCIpOycsXG4gIF07XG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuXG5mdW5jdGlvbiBzdW1tYXJ5U2NyaXB0KCk6IHN0cmluZyB7XG4gIHJldHVybiBbXG4gICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAnc2V0IC1lJyxcbiAgICAnZWNobyBcIiMjIERyaWZ0IERldGVjdGlvbiBTdW1tYXJ5XCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICdlY2hvIFwiXCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICcnLFxuICAgICd0b3RhbF9zdGFja3M9MCcsXG4gICAgJ3RvdGFsX2RyaWZ0ZWQ9MCcsXG4gICAgJ3RvdGFsX2Vycm9ycz0wJyxcbiAgICAnJyxcbiAgICAnc2hvcHQgLXMgbnVsbGdsb2InLFxuICAgICdmb3IgZmlsZSBpbiBkcmlmdC1yZXN1bHRzLSouanNvbiBkcmlmdC1yZXN1bHRzLyovZHJpZnQtcmVzdWx0cy0qLmpzb247IGRvJyxcbiAgICAnICBpZiBbWyAtZiBcIiRmaWxlXCIgXV07IHRoZW4nLFxuICAgICcgICAgc3RhY2s9JChiYXNlbmFtZSBcIiRmaWxlXCIgfCBzZWQgLUUgXFxcInMvXmRyaWZ0LXJlc3VsdHMtKFteLl0rKVxcXFwuanNvbiQvXFxcXDEvXFxcIiknLFxuICAgICcgICAgZWNobyBcIiMjIyBTdGFjazogJHN0YWNrXCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICcgICAganEgLXIgXFwnJyArXG4gICAgICAnLiBhcyAkcmVzdWx0cyB8XFxuJyArXG4gICAgICAnXCItIFRvdGFsIHN0YWNrczogXCIgKyAoJHJlc3VsdHMgfCBsZW5ndGggfCB0b3N0cmluZykgKyBcIlxcXFxuXCIgK1xcbicgK1xuICAgICAgJ1wiLSBEcmlmdGVkOiBcIiArIChbLltdIHwgc2VsZWN0KC5kcmlmdFN0YXR1cyA9PSBcIkRSSUZURURcIildIHwgbGVuZ3RoIHwgdG9zdHJpbmcpICsgXCJcXFxcblwiICtcXG4nICtcbiAgICAgICdcIi0gRXJyb3JzOiBcIiArIChbLltdIHwgc2VsZWN0KC5lcnJvcildIHwgbGVuZ3RoIHwgdG9zdHJpbmcpICsgXCJcXFxcblwiICtcXG4nICtcbiAgICAgICcoWy5bXSB8IHNlbGVjdCguZHJpZnRTdGF0dXMgPT0gXCJEUklGVEVEXCIpXSB8IGlmIGxlbmd0aCA+IDAgdGhlbiBcIlxcXFxuKipEcmlmdGVkIHN0YWNrczoqKlxcXFxuXCIgKyAobWFwKFwiICAtIFwiICsgLnN0YWNrTmFtZSArIFwiIChcIiArICgoLmRyaWZ0ZWRSZXNvdXJjZXMgLy8gW10pIHwgbGVuZ3RoIHwgdG9zdHJpbmcpICsgXCIgcmVzb3VyY2VzKVwiKSB8IGpvaW4oXCJcXFxcblwiKSkgZWxzZSBcIlwiIGVuZClcXG4nICtcbiAgICAnXFwnJyArXG4gICAgJyBcIiRmaWxlXCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICcgICAgZWNobyBcIlwiID4+ICRHSVRIVUJfU1RFUF9TVU1NQVJZJyxcbiAgICAnICAgIHRvdGFsX3N0YWNrcz0kKCh0b3RhbF9zdGFja3MgKyAkKGpxIFxcXCJsZW5ndGhcXFwiIFxcXCIkZmlsZVxcXCIpKSknLFxuICAgICcgICAgdG90YWxfZHJpZnRlZD0kKCh0b3RhbF9kcmlmdGVkICsgJChqcSBcXFwiWy5bXSB8IHNlbGVjdCguZHJpZnRTdGF0dXMgPT0gXFxcXFxcXCJEUklGVEVEXFxcXFxcXCIpXSB8IGxlbmd0aFxcXCIgXFxcIiRmaWxlXFxcIikpKScsXG4gICAgJyAgICB0b3RhbF9lcnJvcnM9JCgodG90YWxfZXJyb3JzICsgJChqcSBcXFwiWy5bXSB8IHNlbGVjdCguZXJyb3IpXSB8IGxlbmd0aFxcXCIgXFxcIiRmaWxlXFxcIikpKScsXG4gICAgJyAgZmknLFxuICAgICdkb25lJyxcbiAgICAnJyxcbiAgICAnZWNobyBcIiMjIyBPdmVyYWxsIFN1bW1hcnlcIiA+PiAkR0lUSFVCX1NURVBfU1VNTUFSWScsXG4gICAgJ2VjaG8gXCItIFRvdGFsIHN0YWNrcyBjaGVja2VkOiAkdG90YWxfc3RhY2tzXCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICdlY2hvIFwiLSBUb3RhbCBkcmlmdGVkIHN0YWNrczogJHRvdGFsX2RyaWZ0ZWRcIiA+PiAkR0lUSFVCX1NURVBfU1VNTUFSWScsXG4gICAgJ2VjaG8gXCItIFRvdGFsIGVycm9yczogJHRvdGFsX2Vycm9yc1wiID4+ICRHSVRIVUJfU1RFUF9TVU1NQVJZJyxcbiAgICAnJyxcbiAgICAnaWYgW1sgJHRvdGFsX2RyaWZ0ZWQgLWd0IDAgXV07IHRoZW4nLFxuICAgICcgIGVjaG8gXCJcIiA+PiAkR0lUSFVCX1NURVBfU1VNTUFSWScsXG4gICAgJyAgZWNobyBcIuKaoO+4jyAqKkFjdGlvbiByZXF1aXJlZDoqKiBEcmlmdCBkZXRlY3RlZCBpbiAkdG90YWxfZHJpZnRlZCBzdGFja3NcIiA+PiAkR0lUSFVCX1NURVBfU1VNTUFSWScsXG4gICAgJ2ZpJyxcbiAgXS5qb2luKCdcXG4nKTtcbn1cblxuZnVuY3Rpb24gdG9LZWJhYkNhc2Uoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCAnLScpLnJlcGxhY2UoL14tK3wtKyQvZywgJycpLnRvTG93ZXJDYXNlKCk7XG59XG5cblxuZnVuY3Rpb24gYnVpbGRXb3JrZmxvd0ZpbGVOYW1lKGJhc2VOYW1lOiBzdHJpbmcsIGV4dDogc3RyaW5nID0gJy55bWwnLCBtYXhMZW5ndGg6IG51bWJlciA9IE1BWF9XT1JLRkxPV19GSUxFTkFNRV9MRU5HVEgpOiBzdHJpbmcge1xuICBjb25zdCBmdWxsID0gYCR7YmFzZU5hbWV9JHtleHR9YDtcbiAgaWYgKGZ1bGwubGVuZ3RoIDw9IG1heExlbmd0aCkge1xuICAgIHJldHVybiBmdWxsO1xuICB9XG4gIGNvbnN0IGF2YWlsYWJsZSA9IG1heExlbmd0aCAtIGV4dC5sZW5ndGg7XG4gIGlmIChhdmFpbGFibGUgPD0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgV29ya2Zsb3cgZXh0ZW5zaW9uIGV4Y2VlZHMgbWF4aW11bSBmaWxlbmFtZSBsZW5ndGggb2YgJHttYXhMZW5ndGh9YCk7XG4gIH1cbiAgLy8gVHJ1bmNhdGUgZnJvbSB0aGUgYmVnaW5uaW5nIHRvIGtlZXAgdGhlIGVuZCBpbnRhY3RcbiAgcmV0dXJuIGJhc2VOYW1lLnNsaWNlKC1hdmFpbGFibGUpLnJlcGxhY2UoL14tKy8sICcnKSArIGV4dDtcbn1cblxuZnVuY3Rpb24gdG9HaXRodWJKb2JJZChzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBHaXRIdWIgam9iX2lkIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBvciB1bmRlcnNjb3JlIGFuZCBjb250YWluIG9ubHkgQS1aYS16MC05LCAnLScsICdfJ1xuICAvLyAxKSBSZXBsYWNlIGFueSBkaXNhbGxvd2VkIGNoYXJzIHdpdGggJy0nXG4gIGxldCBvdXQgPSBzLnJlcGxhY2UoL1teQS1aYS16MC05Xy1dKy9nLCAnLScpO1xuICAvLyAyKSBDb2xsYXBzZSBjb25zZWN1dGl2ZSBkYXNoZXNcbiAgb3V0ID0gb3V0LnJlcGxhY2UoLy0rL2csICctJyk7XG4gIC8vIDMpIFRyaW0gbGVhZGluZy90cmFpbGluZyBkYXNoZXMgKHVuZGVyc2NvcmVzIGFyZSBhbGxvd2VkIGF0IHN0YXJ0KVxuICBvdXQgPSBvdXQucmVwbGFjZSgvXi0rfC0rJC9nLCAnJyk7XG4gIC8vIDQpIExvd2VyY2FzZSBmb3IgY29uc2lzdGVuY3kgKG5vdCByZXF1aXJlZCBieSBHaXRIdWIgYnV0IGtlZXBzIHRoaW5ncyBzdGFibGUpXG4gIG91dCA9IG91dC50b0xvd2VyQ2FzZSgpO1xuICAvLyA1KSBFbnN1cmUgaXQgc3RhcnRzIHdpdGggYSBsZXR0ZXIgb3IgdW5kZXJzY29yZVxuICBpZiAoIW91dCB8fCAhL15bYS16X10vaS50ZXN0KG91dCkpIHtcbiAgICBvdXQgPSBgcy0ke291dH1gO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iXX0=
@@ -79,7 +79,7 @@ class CdkDriftIamTemplateGenerator {
79
79
  }
80
80
  exports.CdkDriftIamTemplateGenerator = CdkDriftIamTemplateGenerator;
81
81
  _a = JSII_RTTI_SYMBOL_1;
82
- CdkDriftIamTemplateGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplateGenerator", version: "1.8.0" };
82
+ CdkDriftIamTemplateGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplateGenerator", version: "1.9.0" };
83
83
  /**
84
84
  * Projen construct that emits a CloudFormation template with minimal IAM permissions
85
85
  * for the CDK Drift Detection Workflow.
@@ -102,5 +102,5 @@ class CdkDriftIamTemplate {
102
102
  }
103
103
  exports.CdkDriftIamTemplate = CdkDriftIamTemplate;
104
104
  _b = JSII_RTTI_SYMBOL_1;
105
- CdkDriftIamTemplate[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplate", version: "1.8.0" };
105
+ CdkDriftIamTemplate[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplate", version: "1.9.0" };
106
106
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRHJpZnRJYW1UZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DZGtEcmlmdElhbVRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQWtDO0FBY2xDOzs7R0FHRztBQUNILE1BQWEsNEJBQTRCO0lBQ3ZDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQXdDO1FBQzlELE1BQU0sS0FBSyxHQUFHO1lBQ1osd0NBQXdDO1lBQ3hDLDBEQUEwRDtZQUMxRCxFQUFFO1lBQ0YsYUFBYTtZQUNiLHNCQUFzQjtZQUN0QixrQkFBa0I7WUFDbEIseUZBQXlGO1lBQ3pGLGlCQUFpQixLQUFLLENBQUMsV0FBVyxHQUFHO1lBQ3JDLEVBQUU7WUFDRixZQUFZO1lBQ1osOEZBQThGO1lBQzlGLGlCQUFpQjtZQUNqQiwwQkFBMEI7WUFDMUIsaUJBQWlCO1lBQ2pCLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxRQUFRLEdBQUcsR0FBRztZQUMxQyxpQ0FBaUM7WUFDakMsK0JBQStCO1lBQy9CLG9CQUFvQjtZQUNwQiwyQkFBMkI7WUFDM0Isd0JBQXdCO1lBQ3hCLDJDQUEyQztZQUMzQyxvQ0FBb0M7WUFDcEMsd0JBQXdCO1lBQ3hCLDZCQUE2QjtZQUM3Qix3Q0FBd0MsR0FBRyxLQUFLLENBQUMsVUFBVSxHQUFHLEdBQUc7WUFDakUsaUJBQWlCO1lBQ2pCLGlEQUFpRDtZQUNqRCwyQkFBMkI7WUFDM0IsbUNBQW1DO1lBQ25DLHdCQUF3QjtZQUN4QiwyREFBMkQ7WUFDM0QsK0JBQStCO1lBQy9CLHlCQUF5QjtZQUN6QixxREFBcUQ7WUFDckQsc0VBQXNFO1lBQ3RFLGdFQUFnRTtZQUNoRSxtREFBbUQ7WUFDbkQsdURBQXVEO1lBQ3ZELDZEQUE2RDtZQUM3RCwrQkFBK0I7WUFDL0IsRUFBRTtZQUNGLFVBQVU7WUFDVixvQkFBb0I7WUFDcEIsd0RBQXdEO1lBQ3hELHFDQUFxQztZQUNyQyxhQUFhO1lBQ2Isc0RBQXNEO1lBQ3RELEVBQUU7WUFDRixxQkFBcUI7WUFDckIseURBQXlEO1lBQ3pELDhCQUE4QjtZQUM5QixhQUFhO1lBQ2IsdURBQXVEO1NBQ3hELENBQUM7UUFFRixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLHFCQUFxQixDQUFDLGVBQXVCLHNDQUFzQztRQUN4RixPQUFPLDZDQUE2QyxZQUFZLCtFQUErRSxDQUFDO0lBQ2xKLENBQUM7O0FBckVILG9FQXNFQzs7O0FBWUQ7Ozs7O0dBS0c7QUFDSCxNQUFhLG1CQUFtQjtJQUM5QixZQUFZLEtBQStCO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUksc0NBQXNDLENBQUM7UUFFOUUsd0NBQXdDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLDRCQUE0QixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLElBQUksaUJBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6RSxrQkFBa0I7UUFDbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsOEJBQThCLEVBQUU7WUFDcEQsV0FBVyxFQUNULHVJQUF1STtZQUN6SSxXQUFXLEVBQUUsSUFBSTtZQUNqQixJQUFJLEVBQUUsNEJBQTRCLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDO1NBQ3JFLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBZkgsa0RBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuXG4vKipcbiAqIFByb3BzIGZvciBnZW5lcmF0aW5nIENESyBEcmlmdCBJQU0gdGVtcGxhdGVzIChubyBQcm9qZW4gZGVwZW5kZW5jeSlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtEcmlmdElhbVRlbXBsYXRlR2VuZXJhdG9yUHJvcHMge1xuICAvKiogTmFtZSBmb3IgdGhlIElBTSByb2xlICovXG4gIHJlYWRvbmx5IHJvbGVOYW1lOiBzdHJpbmc7XG4gIC8qKiBBUk4gb2YgdGhlIGV4aXN0aW5nIEdpdEh1YiBPSURDIHJvbGUgdGhhdCBjYW4gYXNzdW1lIHRoaXMgZHJpZnQgcm9sZSAqL1xuICByZWFkb25seSBvaWRjUm9sZUFybjogc3RyaW5nO1xuICAvKiogUmVnaW9uIGZvciB0aGUgT0lEQyB0cnVzdCBjb25kaXRpb24gKi9cbiAgcmVhZG9ubHkgb2lkY1JlZ2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFB1cmUgZ2VuZXJhdG9yIGNsYXNzIGZvciBDREsgRHJpZnQgSUFNIHRlbXBsYXRlcy5cbiAqIE5vIFByb2plbiBkZXBlbmRlbmN5IC0gY2FuIGJlIHVzZWQgaW4gYW55IHByb2plY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtEcmlmdElhbVRlbXBsYXRlR2VuZXJhdG9yIHtcbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRoZSBDbG91ZEZvcm1hdGlvbiBJQU0gdGVtcGxhdGUgYXMgYSBZQU1MIHN0cmluZy5cbiAgICovXG4gIHN0YXRpYyBnZW5lcmF0ZVRlbXBsYXRlKHByb3BzOiBDZGtEcmlmdElhbVRlbXBsYXRlR2VuZXJhdG9yUHJvcHMpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxpbmVzID0gW1xuICAgICAgXCJBV1NUZW1wbGF0ZUZvcm1hdFZlcnNpb246ICcyMDEwLTA5LTA5J1wiLFxuICAgICAgXCJEZXNjcmlwdGlvbjogJ0lBTSByb2xlIGZvciBDREsgRHJpZnQgRGV0ZWN0aW9uIFdvcmtmbG93J1wiLFxuICAgICAgJycsXG4gICAgICAnUGFyYW1ldGVyczonLFxuICAgICAgJyAgR2l0SHViT0lEQ1JvbGVBcm46JyxcbiAgICAgICcgICAgVHlwZTogU3RyaW5nJyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBleGlzdGluZyBHaXRIdWIgT0lEQyByb2xlIHRoYXQgY2FuIGFzc3VtZSB0aGlzIGRyaWZ0IHJvbGUnXCIsXG4gICAgICBgICAgIERlZmF1bHQ6ICcke3Byb3BzLm9pZGNSb2xlQXJufSdgLFxuICAgICAgJycsXG4gICAgICAnUmVzb3VyY2VzOicsXG4gICAgICAnICAjIENsb3VkRm9ybWF0aW9uIERyaWZ0IERldGVjdGlvbiBSb2xlIC0gbWluaW1hbCBwZXJtaXNzaW9ucyBmb3IgZHJpZnQgZGV0ZWN0aW9uIG9wZXJhdGlvbnMnLFxuICAgICAgJyAgQ2RrRHJpZnRSb2xlOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpSb2xlJyxcbiAgICAgICcgICAgUHJvcGVydGllczonLFxuICAgICAgXCIgICAgICBSb2xlTmFtZTogJ1wiICsgcHJvcHMucm9sZU5hbWUgKyBcIidcIixcbiAgICAgICcgICAgICBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ6JyxcbiAgICAgIFwiICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgIFByaW5jaXBhbDonLFxuICAgICAgJyAgICAgICAgICAgICAgQVdTOiAhUmVmIEdpdEh1Yk9JRENSb2xlQXJuJyxcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyxcbiAgICAgICcgICAgICAgICAgICBDb25kaXRpb246JyxcbiAgICAgICcgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgYXdzOlJlcXVlc3RlZFJlZ2lvbjogJ1wiICsgcHJvcHMub2lkY1JlZ2lvbiArIFwiJ1wiLFxuICAgICAgJyAgICAgIFBvbGljaWVzOicsXG4gICAgICAnICAgICAgICAtIFBvbGljeU5hbWU6IENsb3VkRm9ybWF0aW9uRHJpZnRBY2Nlc3MnLFxuICAgICAgJyAgICAgICAgICBQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgICAgICBTdGF0ZW1lbnQ6JyxcbiAgICAgICcgICAgICAgICAgICAgICMgQ2xvdWRGb3JtYXRpb24gZHJpZnQgZGV0ZWN0aW9uIG9wZXJhdGlvbnMnLFxuICAgICAgJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICAgICAgQWN0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXRlY3RTdGFja0RyaWZ0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tEcmlmdERldGVjdGlvblN0YXR1cycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrUmVzb3VyY2VEcmlmdHMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246TGlzdFN0YWNrUmVzb3VyY2VzJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRldGVjdFN0YWNrUmVzb3VyY2VEcmlmdCcsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogJyonXCIsXG4gICAgICAnJyxcbiAgICAgICdPdXRwdXRzOicsXG4gICAgICAnICBDZGtEcmlmdFJvbGVBcm46JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBDREsgZHJpZnQgZGV0ZWN0aW9uIHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhR2V0QXR0IENka0RyaWZ0Um9sZS5Bcm4nLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tQ2RrRHJpZnRSb2xlQXJuJ1wiLFxuICAgICAgJycsXG4gICAgICAnICBDZGtEcmlmdFJvbGVOYW1lOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIENESyBkcmlmdCBkZXRlY3Rpb24gcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFSZWYgQ2RrRHJpZnRSb2xlJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUNka0RyaWZ0Um9sZU5hbWUnXCIsXG4gICAgXTtcblxuICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0aGUgQVdTIENMSSBkZXBsb3kgY29tbWFuZCBmb3IgdGhlIElBTSB0ZW1wbGF0ZS5cbiAgICovXG4gIHN0YXRpYyBnZW5lcmF0ZURlcGxveUNvbW1hbmQodGVtcGxhdGVQYXRoOiBzdHJpbmcgPSAnY2RrLWRyaWZ0LXdvcmtmbG93LWlhbS10ZW1wbGF0ZS55YW1sJyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBhd3MgY2xvdWRmb3JtYXRpb24gZGVwbG95IC0tdGVtcGxhdGUtZmlsZSAke3RlbXBsYXRlUGF0aH0gLS1zdGFjay1uYW1lIGNkay1kcmlmdC13b3JrZmxvdy1pYW0tcm9sZSAtLWNhcGFiaWxpdGllcyBDQVBBQklMSVRZX05BTUVEX0lBTWA7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIFByb2plbi1pbnRlZ3JhdGVkIENESyBEcmlmdCBJQU0gdGVtcGxhdGUgY29uc3RydWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrRHJpZnRJYW1UZW1wbGF0ZVByb3BzIGV4dGVuZHMgQ2RrRHJpZnRJYW1UZW1wbGF0ZUdlbmVyYXRvclByb3BzIHtcbiAgLyoqIFByb2plbiBwcm9qZWN0IGluc3RhbmNlICovXG4gIHJlYWRvbmx5IHByb2plY3Q6IGFueTtcbiAgLyoqIE91dHB1dCBwYXRoIGZvciB0aGUgdGVtcGxhdGUgZmlsZSAoZGVmYXVsdDogJ2Nkay1kcmlmdC13b3JrZmxvdy1pYW0tdGVtcGxhdGUueWFtbCcpICovXG4gIHJlYWRvbmx5IG91dHB1dFBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvamVuIGNvbnN0cnVjdCB0aGF0IGVtaXRzIGEgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgd2l0aCBtaW5pbWFsIElBTSBwZXJtaXNzaW9uc1xuICogZm9yIHRoZSBDREsgRHJpZnQgRGV0ZWN0aW9uIFdvcmtmbG93LlxuICpcbiAqIEZvciBub24tUHJvamVuIHByb2plY3RzLCB1c2UgYENka0RyaWZ0SWFtVGVtcGxhdGVHZW5lcmF0b3JgIGRpcmVjdGx5LlxuICovXG5leHBvcnQgY2xhc3MgQ2RrRHJpZnRJYW1UZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBDZGtEcmlmdElhbVRlbXBsYXRlUHJvcHMpIHtcbiAgICBjb25zdCBvdXRwdXRQYXRoID0gcHJvcHMub3V0cHV0UGF0aCA/PyAnY2RrLWRyaWZ0LXdvcmtmbG93LWlhbS10ZW1wbGF0ZS55YW1sJztcblxuICAgIC8vIEdlbmVyYXRlIHRlbXBsYXRlIHVzaW5nIHRoZSBnZW5lcmF0b3JcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IENka0RyaWZ0SWFtVGVtcGxhdGVHZW5lcmF0b3IuZ2VuZXJhdGVUZW1wbGF0ZShwcm9wcyk7XG4gICAgbmV3IFRleHRGaWxlKHByb3BzLnByb2plY3QsIG91dHB1dFBhdGgsIHsgbGluZXM6IHRlbXBsYXRlLnNwbGl0KCdcXG4nKSB9KTtcblxuICAgIC8vIEFkZCBkZXBsb3kgdGFza1xuICAgIHByb3BzLnByb2plY3QuYWRkVGFzaygnZGVwbG95LWNka2RyaWZ0LWlhbS10ZW1wbGF0ZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRGVwbG95IHRoZSBDREsgRHJpZnQgRGV0ZWN0aW9uIElBTSB0ZW1wbGF0ZSB2aWEgQ2xvdWRGb3JtYXRpb24gKGFjY2VwdHMgZXh0cmEgQVdTIENMSSBhcmdzLCBlLmcuLCAtLXBhcmFtZXRlci1vdmVycmlkZXMgS2V5PVZhbHVlLi4uKScsXG4gICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICAgIGV4ZWM6IENka0RyaWZ0SWFtVGVtcGxhdGVHZW5lcmF0b3IuZ2VuZXJhdGVEZXBsb3lDb21tYW5kKG91dHB1dFBhdGgpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -110,7 +110,7 @@
110
110
  "publishConfig": {
111
111
  "access": "public"
112
112
  },
113
- "version": "1.8.0",
113
+ "version": "1.9.0",
114
114
  "jest": {
115
115
  "coverageProvider": "v8",
116
116
  "testMatch": [