aws-delivlib 13.6.4 → 13.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/.gitattributes +0 -1
  2. package/cdk.out/{asset.7820644cf1fdec7cec290ed6fdd561e35f4015d4dcf03a20f8035dda3c0ac88a → asset.66b99756ae087cd731a655763245d55e9435c1657dc62d0c5a421806e223e6b2}/watcher-handler.d.ts +0 -0
  3. package/cdk.out/asset.66b99756ae087cd731a655763245d55e9435c1657dc62d0c5a421806e223e6b2/watcher-handler.js +112 -0
  4. package/cdk.out/{asset.7820644cf1fdec7cec290ed6fdd561e35f4015d4dcf03a20f8035dda3c0ac88a → asset.66b99756ae087cd731a655763245d55e9435c1657dc62d0c5a421806e223e6b2}/watcher-handler.ts +0 -0
  5. package/cdk.out/{asset.0ff875115bf3a3ba9f32946b1f2b9b153553ecba0e511c42ac11bef064968c40 → asset.ca50c9b7760151d8e8ce6e39851032d4eff4836ea1ee806eaa944aaef110a353}/index.js +154 -120
  6. package/cdk.out/cdk.out +1 -1
  7. package/cdk.out/delivlib-test.assets.json +9 -9
  8. package/cdk.out/delivlib-test.template.json +7710 -7710
  9. package/cdk.out/manifest.json +1230 -1230
  10. package/cdk.out/tree.json +403 -403
  11. package/lib/change-control-lambda/disable-transition.js +6 -2
  12. package/lib/change-control-lambda/index.js +6 -2
  13. package/lib/change-controller.js +6 -2
  14. package/lib/chime-notifier/chime-notifier.js +6 -2
  15. package/lib/chime-notifier/handler/notifier-handler.js +6 -2
  16. package/lib/chime-notifier/index.js +6 -2
  17. package/lib/code-signing/certificate-signing-request.js +6 -2
  18. package/lib/code-signing/code-signing-certificate.js +6 -2
  19. package/lib/code-signing/index.js +6 -2
  20. package/lib/code-signing/private-key.js +6 -2
  21. package/lib/custom-resource-handlers/src/_cloud-formation.js +6 -2
  22. package/lib/custom-resource-handlers/src/_exec.js +6 -2
  23. package/lib/custom-resource-handlers/src/_rmrf.js +6 -2
  24. package/lib/custom-resource-handlers/src/certificate-signing-request.js +6 -2
  25. package/lib/custom-resource-handlers/src/certificate-signing-request.tsbuildinfo +1 -1
  26. package/lib/custom-resource-handlers/src/pgp-secret.js +6 -2
  27. package/lib/custom-resource-handlers/src/pgp-secret.tsbuildinfo +1 -1
  28. package/lib/custom-resource-handlers/src/private-key.js +6 -2
  29. package/lib/custom-resource-handlers/src/private-key.tsbuildinfo +1 -1
  30. package/lib/index.js +6 -2
  31. package/lib/open-pgp-key-pair.js +6 -2
  32. package/lib/package-integrity/handler/integrity.js +6 -2
  33. package/lib/package-integrity/handler/repository.js +6 -2
  34. package/lib/package-integrity/handler/validate.bundle.js +16255 -5395
  35. package/lib/package-integrity/index.js +6 -2
  36. package/lib/package-integrity/integrity.js +6 -2
  37. package/lib/pipeline-notifications/chime.js +6 -2
  38. package/lib/pipeline-notifications/index.js +6 -2
  39. package/lib/pipeline-notifications/slack.js +6 -2
  40. package/lib/pipeline-watcher/handler/watcher-handler.js +6 -2
  41. package/lib/pipeline-watcher/index.js +6 -2
  42. package/lib/pipeline-watcher/watcher.js +6 -2
  43. package/lib/pipeline.d.ts +1 -0
  44. package/lib/pipeline.js +12 -2
  45. package/lib/pipeline.ts +7 -0
  46. package/lib/publishing.js +6 -2
  47. package/lib/pull-request/bump.js +6 -2
  48. package/lib/pull-request/index.js +6 -2
  49. package/lib/pull-request/merge-back.js +6 -2
  50. package/lib/pull-request/pr.js +6 -2
  51. package/lib/registry-sync/index.js +6 -2
  52. package/lib/shellable.js +6 -2
  53. package/lib/util.js +6 -2
  54. package/package.json +20 -20
  55. package/cdk.out/asset.7820644cf1fdec7cec290ed6fdd561e35f4015d4dcf03a20f8035dda3c0ac88a/watcher-handler.js +0 -108
package/lib/shellable.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -255,4 +259,4 @@ class WindowsPlatform extends ShellPlatform {
255
259
  }
256
260
  }
257
261
  exports.WindowsPlatform = WindowsPlatform;
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hlbGxhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLHFDQUtpQjtBQUNqQiw2Q0FBeUM7QUFDekMsaUNBQW9EO0FBRXBELE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDO0FBQ3pDLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQztBQStNbkM7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsbUJBQVM7SUFjdEMsWUFBWSxNQUFpQixFQUFFLEVBQVUsRUFBRSxLQUFxQjs7UUFDOUQsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVsQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUU1RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDL0Q7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLHVCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUN0RCxJQUFJLEVBQUUsS0FBSyxDQUFDLGVBQWU7U0FDNUIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO1lBQ3hDLE1BQU0sSUFBSSxLQUFLLENB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ZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7XG4gIENvbnN0cnVjdCwgRHVyYXRpb24sXG4gIGF3c19jbG91ZHdhdGNoIGFzIGNsb3Vkd2F0Y2gsIGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkLFxuICBhd3NfY29kZXBpcGVsaW5lIGFzIGNwaXBlbGluZSwgYXdzX2NvZGVwaXBlbGluZV9hY3Rpb25zIGFzIGNwaXBlbGluZV9hY3Rpb25zLFxuICBhd3NfaWFtIGFzIGlhbSwgYXdzX3MzX2Fzc2V0cyBhcyBhc3NldHMsIGF3c19zZWNyZXRzbWFuYWdlciwgYXdzX3NzbSxcbn0gZnJvbSAnbW9ub2Nkayc7XG5pbXBvcnQgeyBCdWlsZFNwZWMgfSBmcm9tICcuL2J1aWxkLXNwZWMnO1xuaW1wb3J0IHsgcmVuZGVyRW52aXJvbm1lbnRWYXJpYWJsZXMgfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCBTM19CVUNLRVRfRU5WID0gJ1NDUklQVF9TM19CVUNLRVQnO1xuY29uc3QgUzNfS0VZX0VOViA9ICdTQ1JJUFRfUzNfS0VZJztcblxuZXhwb3J0IGludGVyZmFjZSBTaGVsbGFibGVPcHRpb25zIHtcblxuICAvKipcbiAgICogU291cmNlIGZvciB0aGUgQ29kZUJ1aWxkIHByb2plY3RcbiAgICpcbiAgICogQGRlZmF1bHQgbm8gc291cmNlXG4gICAqL1xuICBzb3VyY2U/OiBjYnVpbGQuSVNvdXJjZTtcblxuICAvKipcbiAgICogV2hhdCBwbGF0Zm9ybSB0byB1cyB0byBydW4gdGhlIHNjcmlwdHMgb25cbiAgICpcbiAgICogQGRlZmF1bHQgU2hlbGxQbGF0Zm9ybS5MaW51eFVidW50dVxuICAgKi9cbiAgcGxhdGZvcm0/OiBTaGVsbFBsYXRmb3JtO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqL1xuICBlbnZpcm9ubWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH07XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoIHNlY3JldHMgbWFuYWdlciB2YWx1ZXMuIFRoZSB2YWx1ZXMgbXVzdCBiZSBjb21wbGV0ZSBTZWNyZXQgTWFuYWdlciBBUk5zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKi9cbiAgZW52aXJvbm1lbnRTZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggU1NNIHBhcmFtZXRlciB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqL1xuICBlbnZpcm9ubWVudFBhcmFtZXRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgY29tcHV0ZSB0eXBlIHRvIHVzZSBmb3IgdGhlIGJ1aWxkIGNvbnRhaW5lci5cbiAgICpcbiAgICogTm90ZSB0aGF0IG5vdCBhbGwgY29tYmluYXRpb25zIGFyZSBhdmFpbGFibGUuIEZvciBleGFtcGxlLFxuICAgKiBXaW5kb3dzIGltYWdlcyBjYW5ub3QgYmUgcnVuIG9uIENvbXB1dGVUeXBlLlNtYWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBDb21wdXRlVHlwZS5NZWRpdW1cbiAgICovXG4gIGNvbXB1dGVUeXBlPzogY2J1aWxkLkNvbXB1dGVUeXBlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaG93IHRoZSBwcm9qZWN0IGJ1aWxkcyBEb2NrZXIgaW1hZ2VzLiBTcGVjaWZ5IHRydWUgdG8gZW5hYmxlXG4gICAqIHJ1bm5pbmcgdGhlIERvY2tlciBkYWVtb24gaW5zaWRlIGEgRG9ja2VyIGNvbnRhaW5lci4gVGhpcyB2YWx1ZSBtdXN0IGJlXG4gICAqIHNldCB0byB0cnVlIG9ubHkgaWYgdGhpcyBidWlsZCBwcm9qZWN0IHdpbGwgYmUgdXNlZCB0byBidWlsZCBEb2NrZXJcbiAgICogaW1hZ2VzLCBhbmQgdGhlIHNwZWNpZmllZCBidWlsZCBlbnZpcm9ubWVudCBpbWFnZSBpcyBub3Qgb25lIHByb3ZpZGVkIGJ5XG4gICAqIEFXUyBDb2RlQnVpbGQgd2l0aCBEb2NrZXIgc3VwcG9ydC4gT3RoZXJ3aXNlLCBhbGwgYXNzb2NpYXRlZCBidWlsZHMgdGhhdFxuICAgKiBhdHRlbXB0IHRvIGludGVyYWN0IHdpdGggdGhlIERvY2tlciBkYWVtb24gd2lsbCBmYWlsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHJpdmlsZWdlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIGZvciB0aGUgYnVpbGQgcHJvamVjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgYSBuYW1lIGlzIGdlbmVyYXRlZCBieSBDbG91ZEZvcm1hdGlvbi5cbiAgICovXG4gIGJ1aWxkUHJvamVjdE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiBSZWdpb25hbCBBV1MgU1RTIGVuZHBvaW50cyBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkXG4gICAqIG9mIHRoZSBnbG9iYWwgZW5kcG9pbnQuIFNwZWNpZnkgdHJ1ZSB0byB1c2UgUmVnaW9uYWwgQVdTIFNUUyBlbmRwb2ludHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENhbiBiZSB1c2VkIHRvIHJ1biB0aGlzIGJ1aWxkIHVzaW5nIGEgc3BlY2lmaWMgSUFNIHJvbGUuIFRoaXMgY2FuIGJlIHVzZWQsXG4gICAqIGZvciBleGFtcGxlLCB0byBleGVjdXRlIGluIHRoZSBjb250ZXh0IG9mIGFub3RoZXIgYWNjb3VudCAoZS5nLiB0byBydW5cbiAgICogdGVzdHMgaW4gaXNvbGF0aW9uKS5cbiAgICovXG4gIGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGJ1aWxkc3BlYyAoZm9yIGFydGlmYWN0cyBldGMuKVxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBhZGRpdGlvbmFsIGJ1aWxkc3BlY1xuICAgKi9cbiAgYnVpbGRTcGVjPzogQnVpbGRTcGVjO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZW91dCBvZiB0aGUgYnVpbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBDb2RlQnVpbGQgZGVmYXVsdCAoMSBob3VyKVxuICAgKi9cbiAgdGltZW91dD86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBBbGFybSBwZXJpb2QuXG4gICAqXG4gICAqIEBkZWZhdWx0IDMwMCBzZWNvbmRzICg1IG1pbnV0ZXMpXG4gICAqL1xuICBhbGFybVBlcmlvZD86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBBbGFybSB0aHJlc2hvbGQuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGFsYXJtVGhyZXNob2xkPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBbGFybSBldmFsdWF0aW9uIHBlcmlvZHMuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGFsYXJtRXZhbHVhdGlvblBlcmlvZHM/OiBudW1iZXI7XG5cbiAgc2Vjb25kYXJ5QXJ0aWZhY3ROYW1lcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdXNlZCB0byBjcmVhdGUgYSBTaGVsbGFibGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaGVsbGFibGVQcm9wcyBleHRlbmRzIFNoZWxsYWJsZU9wdGlvbnMge1xuICAvKipcbiAgICogRGlyZWN0b3J5IHdpdGggdGhlIHNjcmlwdHMuXG4gICAqXG4gICAqIFRoZSB3aG9sZSBkaXJlY3Rvcnkgd2lsbCBiZSB1cGxvYWRlZC5cbiAgICovXG4gIHNjcmlwdERpcmVjdG9yeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGaWxlbmFtZSBvZiB0aGUgaW5pdGlhbCBzY3JpcHQgdG8gc3RhcnQsIHJlbGF0aXZlIHRvIHNjcmlwdERpcmVjdG9yeS5cbiAgICovXG4gIGVudHJ5cG9pbnQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBc3N1bWVSb2xlIHtcbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgcm9sZSB0byBhc3N1bWUuXG4gICAqL1xuICByb2xlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBhc3N1bWVkIHJvbGUgc2Vzc2lvbi5cbiAgICpcbiAgICogVXNlICB0aGUgIHJvbGUgIHNlc3Npb24gbmFtZSB0byB1bmlxdWVseSBpZGVudGlmeSBhIHNlc3Npb24gd2hlbiB0aGUgc2FtZVxuICAgKiByb2xlIGlzIGFzc3VtZWQgYnkgZGlmZmVyZW50IHByaW5jaXBhbHMgb3IgZm9yIGRpZmZlcmVudCByZWFzb25zLiBJblxuICAgKiBjcm9zcy1hY2NvdW50IHNjZW5hcmlvcywgdGhlIHJvbGUgc2Vzc2lvbiBuYW1lIGlzIHZpc2libGUgdG8sIGFuZCBjYW4gYmVcbiAgICogbG9nZ2VkIGJ5IHRoZSBhY2NvdW50IHRoYXQgb3ducyB0aGUgcm9sZS4gIFRoZSByb2xlIHNlc3Npb24gbmFtZSBpcyBhbHNvXG4gICAqIHVzZWQgaW4gdGhlIEFSTiBvZiB0aGUgYXNzdW1lZCByb2xlIHByaW5jaXBhbC4gVGhpcyBtZWFucyB0aGF0IHN1YnNlcXVlbnRcbiAgICogY3Jvc3MtYWNjb3VudCBBUEkgcmVxdWVzdHMgdXNpbmcgdGhlIHRlbS0gcG9yYXJ5IHNlY3VyaXR5IGNyZWRlbnRpYWxzIHdpbGxcbiAgICogZXhwb3NlIHRoZSByb2xlIHNlc3Npb24gbmFtZSB0byB0aGUgZXh0ZXJuYWwgYWNjb3VudCBpbiB0aGVpciBDbG91ZFRyYWlsXG4gICAqIGxvZ3MuXG4gICAqXG4gICAqIFRoZSByZWdleCB1c2VkIHRvIHZhbGlkYXRlIHRoaXMgcGFyYW1ldGVyIGlzIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnNcbiAgICogY29uc2lzdGluZyAgb2YgdXBwZXItIGFuZCBsb3dlci1jYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHdpdGggbm9cbiAgICogc3BhY2VzLiBZb3UgY2FuIGFsc28gaW5jbHVkZSB1bmRlcnNjb3JlcyBvciBhbnkgb2YgdGhlIGZvbGxvd2luZ1xuICAgKiBjaGFyYWN0ZXJzOiA9LC5ALVxuICAgKi9cbiAgc2Vzc2lvbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQSAgdW5pcXVlICBpZGVudGlmaWVyICB0aGF0ICBpcyAgdXNlZCBieSB0aGlyZCBwYXJ0aWVzIHdoZW4gYXNzdW1pbmcgcm9sZXNcbiAgICogaW4gdGhlaXIgY3VzdG9tZXJzJyBhY2NvdW50cy4gRm9yIGVhY2ggIHJvbGUgIHRoYXQgIHRoZSAgdGhpcmQgcGFydHkgY2FuXG4gICAqIGFzc3VtZSwgdGhleSBzaG91bGQgaW5zdHJ1Y3QgdGhlaXIgY3VzdG9tZXJzIHRvIGVuc3VyZSB0aGUgcm9sZSdzIHRydXN0XG4gICAqIHBvbGljeSBjaGVja3MgZm9yIHRoZSBleHRlcm5hbCBJRCB0aGF0IHRoZSB0aGlyZCAgcGFydHkgZ2VuZXJhdGVkLiAgRWFjaFxuICAgKiB0aW1lIHRoZSB0aGlyZCBwYXJ0eSBhc3N1bWVzIHRoZSByb2xlLCB0aGV5IHNob3VsZCBwYXNzIHRoZSBjdXN0b21lcidzXG4gICAqIGV4dGVybmFsIElELiBUaGUgZXh0ZXJuYWwgSUQgaXMgdXNlZnVsIGluICBvcmRlciB0byAgaGVscCAgdGhpcmQgIHBhcnRpZXNcbiAgICogYmluZCBhIHJvbGUgdG8gdGhlIGN1c3RvbWVyIHdobyBjcmVhdGVkIGl0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVcbiAgICogZXh0ZXJuYWwgSUQsIHNlZSBIb3cgdG8gVXNlIGFuIEV4dGVyLSBuYWwgIElEICBXaGVuIEdyYW50aW5nIEFjY2VzcyB0byBZb3VyXG4gICAqIEFXUyBSZXNvdXJjZXMgdG8gYSBUaGlyZCBQYXJ0eSBpbiB0aGUgSUFNIFVzZXIgR3VpZGUgLlxuICAgKlxuICAgKiBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnMgY29uc2lzdGluZyAgb2YgdXBwZXItIGFuZFxuICAgKiBsb3dlci1jYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHdpdGggbm8gc3BhY2VzLiBZb3UgY2FuIGFsc28gaW5jbHVkZVxuICAgKiB1bmRlcnNjb3JlcyBvciAgYW55ICBvZiAgdGhlICBmb2xsb3dpbmcgY2hhcmFjdGVyczogPSwuQDovLVxuICAgKi9cbiAgZXh0ZXJuYWxJZD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiBhIHByb2ZpZSBuYW1lIGlzIGNvbmZpZ3VyZWQsIGFuIGFzc3VtZWQgcm9sZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgY3JlYXRlZFxuICAgKiBpbiB0aGUgc2hhcmVkIGF3cyBjb25maWd1cmF0aW9uIGZpbGUgKH4vLmF3cy9jb25maWcpLiBUaGlzIGlzIGluIGNvbnRyYXJ5IG9mIHNpbXBseSBpbnZva2luZ1xuICAgKiBhbiBgc3RzIGFzc3VtZS1yb2xlYCBjb21tYW5kIHRoYXQgY3JlYXRlcyBhIHNlc3Npb24gd2l0aCBhIGZpeGVkIGV4cGlyeSBkYXRlLlxuICAgKlxuICAgKiBVc2luZyBhIHByb2ZpbGUgd2lsbCBkZWxlZ2F0ZSBjcmVkZW50aWFsIHJlZnJlc2hpbmcgdG8gdGhlIFNESy9DTEkuXG4gICAqIFRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgbG9uZyBydW5uaW5nIHNlc3Npb25zIHRoYXQgbmVlZHMgc2Vzc2lvbnMgdGhhdCBhcmUgbG9uZ2VyIHRoYW5cbiAgICogdGhlIHNlc3Npb24gZHVyYXRpb24gdGhhdCBjYW4gYmUgY29uZmlndXJlZCB3aXRoIGEgYHN0cyBhc3N1bWUtcm9sZWAuXG4gICAqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBjb2RlIHdpbGwgYWNjZXNzIHRvIHRoaXMgcHJvZmlsZSBpbiB0aGUgYEFXU19QUk9GSUxFYCBlbnYgdmFyaWFibGUuXG4gICAqXG4gICAqIE9ubHkgcmVsZXZhbnQgaWYgYHJlZnJlc2hgIGlzIHNwZWNpZmllZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xpL2xhdGVzdC91c2VyZ3VpZGUvY2xpLWNvbmZpZ3VyZS1maWxlcy5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0ICdsb25nLXJ1bm5pbmctcHJvZmlsZSdcbiAgICovXG4gIHByb2ZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoaXMgaWYgeW91IGhhdmUgYSBsb25nIHJ1bm5pbmcgZXhlY3V0aW9uIHRoYXQgbmVlZHMgbG9uZyBydW5uaW5nIHNlc3Npb25zLlxuICAgKiBUaGlzIHdpbGwgY3JlYXRlIGEgcHJvZmlsZSBhbmQgdXNlIGl0IHRvIGRlbGVnYXRlIGNyZWRlbnRpYWwgcmVmcmVzaGluZyB0byB0aGUgU0RLL0NMSVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVmcmVzaD86IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBBIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgcnVucyBhcmJpdHJhcnkgc2NyaXB0cy5cbiAqXG4gKiBUaGUgc2NyaXB0cyB0byBiZSBydW4gYXJlIHNwZWNpZmllZCBieSBzdXBwbHlpbmcgYSBkaXJlY3RvcnkuXG4gKiBBbGwgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSBhcmUgdXBsb2FkZWQsIHRoZW4gdGhlIHNjcmlwdCBkZXNpZ25hdGVkXG4gKiBhcyB0aGUgZW50cnkgcG9pbnQgaXMgc3RhcnRlZC5cbiAqXG4gKiBUaGUgc2NyaXB0IGlzIGV4ZWN1dGVkIGluIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGJ1aWxkIHByb2plY3Qnc1xuICogaW5wdXQgaXMgc3RvcmVkLiBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBzY3JpcHQgZmlsZXMgYXJlIHN0b3JlZFxuICogaXMgaW4gdGhlICRTQ1JJUFRfRElSIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICpcbiAqIFN1cHBvcnRzIGJvdGggV2luZG93cyBhbmQgTGludXggY29tcHV0ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTaGVsbGFibGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIENsb3VkV2F0Y2ggYWxhcm0gdGhhdCB3aWxsIGJlIHRyaWdnZXJlZCBpZiB0aGlzIGFjdGlvbiBmYWlscy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGFybTogY2xvdWR3YXRjaC5BbGFybTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtOiBTaGVsbFBsYXRmb3JtO1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkU3BlYzogQnVpbGRTcGVjO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb3V0cHV0QXJ0aWZhY3ROYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTaGVsbGFibGVQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgdGhpcy5wbGF0Zm9ybSA9IHByb3BzLnBsYXRmb3JtIHx8IFNoZWxsUGxhdGZvcm0uTGludXhVYnVudHU7XG5cbiAgICBjb25zdCBlbnRyeXBvaW50ID0gcGF0aC5qb2luKHByb3BzLnNjcmlwdERpcmVjdG9yeSwgcHJvcHMuZW50cnlwb2ludCk7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGVudHJ5cG9pbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHRlc3QgZW50cnlwb2ludDogJHtlbnRyeXBvaW50fWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc2V0ID0gbmV3IGFzc2V0cy5Bc3NldCh0aGlzLCAnU2NyaXB0RGlyZWN0b3J5Jywge1xuICAgICAgcGF0aDogcHJvcHMuc2NyaXB0RGlyZWN0b3J5LFxuICAgIH0pO1xuXG4gICAgdGhpcy5vdXRwdXRBcnRpZmFjdE5hbWUgPSBgQXJ0aWZhY3RfJHt0aGlzLm5vZGUudW5pcXVlSWR9YDtcbiAgICBpZiAodGhpcy5vdXRwdXRBcnRpZmFjdE5hbWUubGVuZ3RoID4gMTAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFdob29wcywgdG9vIGxvbmc6ICR7dGhpcy5vdXRwdXRBcnRpZmFjdE5hbWV9YCk7XG4gICAgfVxuXG4gICAgdGhpcy5idWlsZFNwZWMgPSBCdWlsZFNwZWMuc2ltcGxlKHtcbiAgICAgIHByZUJ1aWxkOiB0aGlzLnBsYXRmb3JtLnByZWJ1aWxkQ29tbWFuZHMocHJvcHMuYXNzdW1lUm9sZSwgcHJvcHMudXNlUmVnaW9uYWxTdHNFbmRwb2ludHMpLFxuICAgICAgYnVpbGQ6IHRoaXMucGxhdGZvcm0uYnVpbGRDb21tYW5kcyhwcm9wcy5lbnRyeXBvaW50KSxcbiAgICB9KS5tZXJnZShwcm9wcy5idWlsZFNwZWMgfHwgQnVpbGRTcGVjLmVtcHR5KCkpO1xuXG4gICAgY29uc3QgZW52aXJvbm1lbnRTZWNyZXRzQXNTZWNyZXROYW1lcyA9IHRoaXMuY29udmVydEVudmlyb25tZW50U2VjcmV0QXJuc1RvU2VjcmV0TmFtZXMocHJvcHMuZW52aXJvbm1lbnRTZWNyZXRzKTtcblxuICAgIHRoaXMucHJvamVjdCA9IG5ldyBjYnVpbGQuUHJvamVjdCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBwcm9qZWN0TmFtZTogcHJvcHMuYnVpbGRQcm9qZWN0TmFtZSxcbiAgICAgIHNvdXJjZTogcHJvcHMuc291cmNlLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgYnVpbGRJbWFnZTogdGhpcy5wbGF0Zm9ybS5idWlsZEltYWdlLFxuICAgICAgICBjb21wdXRlVHlwZTogcHJvcHMuY29tcHV0ZVR5cGUgfHwgY2J1aWxkLkNvbXB1dGVUeXBlLk1FRElVTSxcbiAgICAgICAgcHJpdmlsZWdlZDogcHJvcHMucHJpdmlsZWdlZCxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczoge1xuICAgICAgICBbUzNfQlVDS0VUX0VOVl06IHsgdmFsdWU6IGFzc2V0LnMzQnVja2V0TmFtZSB9LFxuICAgICAgICBbUzNfS0VZX0VOVl06IHsgdmFsdWU6IGFzc2V0LnMzT2JqZWN0S2V5IH0sXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKHByb3BzLmVudmlyb25tZW50KSxcbiAgICAgICAgLi4ucmVuZGVyRW52aXJvbm1lbnRWYXJpYWJsZXMoZW52aXJvbm1lbnRTZWNyZXRzQXNTZWNyZXROYW1lcywgY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuU0VDUkVUU19NQU5BR0VSKSxcbiAgICAgICAgLi4ucmVuZGVyRW52aXJvbm1lbnRWYXJpYWJsZXMocHJvcHMuZW52aXJvbm1lbnRQYXJhbWV0ZXJzLCBjYnVpbGQuQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZS5QQVJBTUVURVJfU1RPUkUpLFxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IHByb3BzLnRpbWVvdXQsXG4gICAgICBidWlsZFNwZWM6IGNidWlsZC5CdWlsZFNwZWMuZnJvbU9iamVjdCh0aGlzLmJ1aWxkU3BlYy5yZW5kZXIoeyBwcmltYXJ5QXJ0aWZhY3ROYW1lOiB0aGlzLm91dHB1dEFydGlmYWN0TmFtZSB9KSksXG4gICAgfSk7XG5cbiAgICB0aGlzLnJvbGUgPSB0aGlzLnByb2plY3Qucm9sZSE7IC8vIG5vdCB1bmRlZmluZWQsIGFzIGl0J3MgYSBuZXcgUHJvamVjdFxuICAgIGFzc2V0LmdyYW50UmVhZCh0aGlzLnJvbGUpO1xuXG4gICAgLy8gR3JhbnQgcmVhZCBhY2Nlc3MgdG8gc2VjcmV0c1xuICAgIE9iamVjdC5lbnRyaWVzKHByb3BzLmVudmlyb25tZW50U2VjcmV0cyA/PyB7fSkuZm9yRWFjaCgoW25hbWUsIHNlY3JldEFybl0pID0+IHtcbiAgICAgIGNvbnN0IHNlY3JldCA9IGF3c19zZWNyZXRzbWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKHRoaXMsIGAke25hbWV9U2VjcmV0YCwgc2VjcmV0QXJuKTtcbiAgICAgIHNlY3JldC5ncmFudFJlYWQodGhpcy5yb2xlKTtcbiAgICB9KTtcblxuICAgIC8vIEdyYW50IHJlYWQgYWNjZXNzIHRvIHBhcmFtZXRlcnNcbiAgICBPYmplY3QuZW50cmllcyhwcm9wcy5lbnZpcm9ubWVudFBhcmFtZXRlcnMgPz8ge30pLmZvckVhY2goKFtuYW1lLCBwYXJhbWV0ZXJOYW1lXSkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1ldGVyID0gYXdzX3NzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUodGhpcywgYCR7bmFtZX1QYXJhbWV0ZXJgLCBwYXJhbWV0ZXJOYW1lKTtcbiAgICAgIHBhcmFtZXRlci5ncmFudFJlYWQodGhpcy5yb2xlKTtcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5hc3N1bWVSb2xlKSB7XG4gICAgICB0aGlzLnJvbGUuYWRkVG9Qb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ3N0czpBc3N1bWVSb2xlJ10sXG4gICAgICAgIHJlc291cmNlczogW3Byb3BzLmFzc3VtZVJvbGUucm9sZUFybl0sXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgdGhpcy5hbGFybSA9IG5ldyBjbG91ZHdhdGNoLkFsYXJtKHRoaXMsICdBbGFybScsIHtcbiAgICAgIG1ldHJpYzogdGhpcy5wcm9qZWN0Lm1ldHJpY0ZhaWxlZEJ1aWxkcyh7IHBlcmlvZDogcHJvcHMuYWxhcm1QZXJpb2QgfHwgRHVyYXRpb24uc2Vjb25kcygzMDApIH0pLFxuICAgICAgdGhyZXNob2xkOiBwcm9wcy5hbGFybVRocmVzaG9sZCB8fCAxLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IHByb3BzLmFsYXJtRXZhbHVhdGlvblBlcmlvZHMgfHwgMSxcbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IGNsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5JR05PUkUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgbmFtZTogc3RyaW5nLCBpbnB1dEFydGlmYWN0OiBjcGlwZWxpbmUuQXJ0aWZhY3QsIHJ1bk9yZGVyPzogbnVtYmVyKTpcbiAgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uIHtcbiAgICBjb25zdCBjb2RlQnVpbGRBY3Rpb24gPSBuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IG5hbWUsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgICBydW5PcmRlcixcbiAgICAgIGlucHV0OiBpbnB1dEFydGlmYWN0LFxuICAgICAgb3V0cHV0czogW25ldyBjcGlwZWxpbmUuQXJ0aWZhY3QodGhpcy5vdXRwdXRBcnRpZmFjdE5hbWUpXS5jb25jYXQoXG4gICAgICAgIHRoaXMuYnVpbGRTcGVjLmFkZGl0aW9uYWxBcnRpZmFjdE5hbWVzLm1hcChhcnRpZmFjdE5hbWUgPT4gbmV3IGNwaXBlbGluZS5BcnRpZmFjdChhcnRpZmFjdE5hbWUpKSksXG4gICAgfSk7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKGNvZGVCdWlsZEFjdGlvbik7XG4gICAgcmV0dXJuIGNvZGVCdWlsZEFjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29udHJhY3Qgb2YgYGVudmlyb25tZW50U2VjcmV0c2AgaXMgdGhhdCB0aGUgdmFsdWVzIGFyZSBjb21wbGV0ZSBTZWNyZXQgQVJOcztcbiAgICogaG93ZXZlciwgdGhlIENvZGVCdWlsZCBjb25zdHJ1Y3QgZXhwZWN0cyBzZWNyZXQgbmFtZXMgYXMgdGhlIGlucHV0cyBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgKiBUaGlzIG1ldGhvZCBjb252ZXJ0cyB0aGUgZW52aXJvbm1lbnQgc2VjcmV0cyBmcm9tIEFSTnMgdG8gbmFtZXMuXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRFbnZpcm9ubWVudFNlY3JldEFybnNUb1NlY3JldE5hbWVzKGVudmlyb25tZW50U2VjcmV0cz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICBpZiAoIWVudmlyb25tZW50U2VjcmV0cykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBvdXQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7IH07XG4gICAgT2JqZWN0LmVudHJpZXMoZW52aXJvbm1lbnRTZWNyZXRzID8/IHt9KS5mb3JFYWNoKChbbmFtZSwgc2VjcmV0QXJuXSkgPT4ge1xuICAgICAgY29uc3Qgc2VjcmV0ID0gYXdzX3NlY3JldHNtYW5hZ2VyLlNlY3JldC5mcm9tU2VjcmV0Q29tcGxldGVBcm4odGhpcywgYCR7bmFtZX1TZWNyZXRGcm9tQXJuYCwgc2VjcmV0QXJuKTtcbiAgICAgIG91dFtuYW1lXSA9IHNlY3JldC5zZWNyZXROYW1lO1xuICAgIH0pO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQbGF0Zm9ybSBhcmNoZXR5cGVcbiAqL1xuZXhwb3J0IGVudW0gUGxhdGZvcm1UeXBlIHtcbiAgTGludXggPSAnTGludXgnLFxuICBXaW5kb3dzID0gJ1dpbmRvd3MnXG59XG5cbi8qKlxuICogVGhlIHBsYXRmb3JtIHR5cGUgdG8gcnVuIHRoZSBzY3JpcHRzIG9uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTaGVsbFBsYXRmb3JtIHtcbiAgLyoqXG4gICAqIFJldHVybiBhIGRlZmF1bHQgVWJ1bnR1IExpbnV4IHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBMaW51eFVidW50dSgpOiBTaGVsbFBsYXRmb3JtIHtcbiAgICAvLyBDYW5ub3QgYmUgc3RhdGljIG1lbWJlciBiZWNhdXNlIG9mIGluaXRpYWxpemF0aW9uIG9yZGVyXG4gICAgcmV0dXJuIG5ldyBMaW51eFBsYXRmb3JtKGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuU1RBTkRBUkRfNF8wKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBkZWZhdWx0IFdpbmRvd3MgcGxhdGZvcm1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IFdpbmRvd3MoKTogU2hlbGxQbGF0Zm9ybSB7XG4gICAgLy8gQ2Fubm90IGJlIHN0YXRpYyBtZW1iZXIgYmVjYXVzZSBvZiBpbml0aWFsaXphdGlvbiBvcmRlclxuICAgIHJldHVybiBuZXcgV2luZG93c1BsYXRmb3JtKGNidWlsZC5XaW5kb3dzQnVpbGRJbWFnZS5XSU5fU0VSVkVSX0NPUkVfMjAxOV9CQVNFKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBidWlsZEltYWdlOiBjYnVpbGQuSUJ1aWxkSW1hZ2UpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gY29tbWFuZHMgdG8gZG93bmxvYWQgdGhlIHNjcmlwdCBidW5kbGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmV0dXJuIGNvbW1hbmRzIHRvIHN0YXJ0IHRoZSBlbnRyeXBvaW50IHNjcmlwdFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGJ1aWxkQ29tbWFuZHMoZW50cnlwb2ludDogc3RyaW5nKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgcGxhdGZvcm1cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXQgcGxhdGZvcm1UeXBlKCk6IFBsYXRmb3JtVHlwZTtcbn1cblxuLyoqXG4gKiBBIExpbnV4IFBsYXRmb3JtXG4gKi9cbmV4cG9ydCBjbGFzcyBMaW51eFBsYXRmb3JtIGV4dGVuZHMgU2hlbGxQbGF0Zm9ybSB7XG4gIHB1YmxpYyByZWFkb25seSBwbGF0Zm9ybVR5cGUgPSBQbGF0Zm9ybVR5cGUuTGludXg7XG5cbiAgcHVibGljIHByZWJ1aWxkQ29tbWFuZHMoYXNzdW1lUm9sZT86IEFzc3VtZVJvbGUsIHVzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzPzogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBsaW5lcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgLy8gQmV0dGVyIGVjaG8gdGhlIGxvY2F0aW9uIGhlcmU7IGlmIHRoaXMgZmFpbHMsIHRoZSBlcnJvciBtZXNzYWdlIG9ubHkgY29udGFpbnNcbiAgICAvLyB0aGUgdW5leHBhbmRlZCB2YXJpYWJsZXMgYnkgZGVmYXVsdC4gSXQgbWlnaHQgZmFpbCBpZiB5b3UncmUgcnVubmluZyBhbiBvbGRcbiAgICAvLyBkZWZpbml0aW9uIG9mIHRoZSBDb2RlQnVpbGQgcHJvamVjdC0tdGhlIHBlcm1pc3Npb25zIHdpbGwgaGF2ZSBiZWVuIGNoYW5nZWRcbiAgICAvLyB0byBvbmx5IGFsbG93IGRvd25sb2FkaW5nIHRoZSB2ZXJ5IGxhdGVzdCB2ZXJzaW9uLlxuICAgIGxpbmVzLnB1c2goYGVjaG8gXCJEb3dubG9hZGluZyBzY3JpcHRzIGZyb20gczM6Ly9cXCR7JHtTM19CVUNLRVRfRU5WfX0vXFwkeyR7UzNfS0VZX0VOVn19XCJgKTtcbiAgICBsaW5lcy5wdXNoKGBhd3MgczMgY3AgczM6Ly9cXCR7JHtTM19CVUNLRVRfRU5WfX0vXFwkeyR7UzNfS0VZX0VOVn19IC90bXBgKTtcbiAgICBsaW5lcy5wdXNoKCdta2RpciAtcCAvdG1wL3NjcmlwdGRpcicpO1xuICAgIGxpbmVzLnB1c2goYHVuemlwIC90bXAvJChiYXNlbmFtZSBcXCQke1MzX0tFWV9FTlZ9KSAtZCAvdG1wL3NjcmlwdGRpcmApO1xuXG4gICAgaWYgKGFzc3VtZVJvbGUpIHtcblxuICAgICAgaWYgKGFzc3VtZVJvbGUucmVmcmVzaCkge1xuXG4gICAgICAgIGNvbnN0IGF3c0hvbWUgPSAnfi8uYXdzJztcblxuICAgICAgICBjb25zdCBwcm9maWxlTmFtZSA9IGFzc3VtZVJvbGUucHJvZmlsZU5hbWUgPz8gJ2xvbmctcnVubmluZy1wcm9maWxlJztcblxuICAgICAgICBsaW5lcy5wdXNoKGBta2RpciAtcCAke2F3c0hvbWV9YCk7XG4gICAgICAgIGxpbmVzLnB1c2goYHRvdWNoICR7YXdzSG9tZX0vY3JlZGVudGlhbHNgKTtcbiAgICAgICAgbGluZXMucHVzaChgY29uZmlnPSR7YXdzSG9tZX0vY29uZmlnYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYGVjaG8gW3Byb2ZpbGUgJHtwcm9maWxlTmFtZX1dPj4gJFxce2NvbmZpZ1xcfWApO1xuICAgICAgICBsaW5lcy5wdXNoKCdlY2hvIGNyZWRlbnRpYWxfc291cmNlID0gRWNzQ29udGFpbmVyID4+ICRcXHtjb25maWdcXH0nKTtcbiAgICAgICAgbGluZXMucHVzaChgZWNobyByb2xlX3Nlc3Npb25fbmFtZSA9ICR7YXNzdW1lUm9sZS5zZXNzaW9uTmFtZX0gPj4gJFxce2NvbmZpZ1xcfWApO1xuICAgICAgICBsaW5lcy5wdXNoKGBlY2hvIHJvbGVfYXJuID0gJHthc3N1bWVSb2xlLnJvbGVBcm59ID4+ICRjb25maWdgKTtcblxuICAgICAgICBpZiAoYXNzdW1lUm9sZS5leHRlcm5hbElkKSB7XG4gICAgICAgICAgbGluZXMucHVzaChgZWNobyBleHRlcm5hbF9pZCA9ICR7YXNzdW1lUm9sZS5leHRlcm5hbElkfSA+PiAkY29uZmlnYCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBsZXQgdGhlIGFwcGxpY2F0aW9uIGNvZGUga25vdyB3aGljaCByb2xlIGlzIGJlaW5nIHVzZWQuXG4gICAgICAgIGxpbmVzLnB1c2goYGV4cG9ydCBBV1NfUFJPRklMRT0ke3Byb2ZpbGVOYW1lfWApO1xuXG4gICAgICAgIC8vIGZvcmNlIHRoZSBBV1MgU0RLIGZvciBKYXZhU2NyaXB0IHRvIGFjdHVhbGx5IGxvYWQgdGhlIGNvbmZpZyBmaWxlIChkbyBhdXRvbWF0aWNhbGx5IHNvIHVzZXJzIGRvbid0IGZvcmdldClcbiAgICAgICAgbGluZXMucHVzaCgnZXhwb3J0IEFXU19TREtfTE9BRF9DT05GSUc9MScpO1xuXG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIGNvbnN0IGV4dGVybmFsSWQgPSBhc3N1bWVSb2xlLmV4dGVybmFsSWQgPyBgLS1leHRlcm5hbC1pZCBcIiR7YXNzdW1lUm9sZS5leHRlcm5hbElkfVwiYCA6ICcnO1xuICAgICAgICBjb25zdCBTdHNFbmRwb2ludHMgPSB1c2VSZWdpb25hbFN0c0VuZHBvaW50cyA/ICdyZWdpb25hbCcgOiAnbGVnYWN5JztcblxuICAgICAgICBsaW5lcy5wdXNoKCdjcmVkcz0kKG1rdGVtcCAtZCkvY3JlZHMuanNvbicpO1xuICAgICAgICBsaW5lcy5wdXNoKGBBV1NfU1RTX1JFR0lPTkFMX0VORFBPSU5UUz0ke1N0c0VuZHBvaW50c30gYXdzIHN0cyBhc3N1bWUtcm9sZSAtLXJvbGUtYXJuIFwiJHthc3N1bWVSb2xlLnJvbGVBcm59XCIgLS1yb2xlLXNlc3Npb24tbmFtZSBcIiR7YXNzdW1lUm9sZS5zZXNzaW9uTmFtZX1cIiAke2V4dGVybmFsSWR9ID4gJGNyZWRzYCk7XG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfQUNDRVNTX0tFWV9JRD1cIiQoY2F0ICR7Y3JlZHN9IHwgZ3JlcCBcIkFjY2Vzc0tleUlkXCIgfCBjdXQgLWRcXCdcIlxcJyAtZiA0KVwiJyk7XG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0VDUkVUX0FDQ0VTU19LRVk9XCIkKGNhdCAke2NyZWRzfSB8IGdyZXAgXCJTZWNyZXRBY2Nlc3NLZXlcIiB8IGN1dCAtZFxcJ1wiXFwnIC1mIDQpXCInKTtcbiAgICAgICAgbGluZXMucHVzaCgnZXhwb3J0IEFXU19TRVNTSU9OX1RPS0VOPVwiJChjYXQgJHtjcmVkc30gfCBncmVwIFwiU2Vzc2lvblRva2VuXCIgfCBjdXQgLWRcXCdcIlxcJyAtZiA0KVwiJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmVzO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkQ29tbWFuZHMoZW50cnlwb2ludDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnZXhwb3J0IFNDUklQVF9ESVI9L3RtcC9zY3JpcHRkaXInLFxuICAgICAgYGVjaG8gXCJSdW5uaW5nICR7ZW50cnlwb2ludH1cImAsXG4gICAgICBgL2Jpbi9iYXNoIC90bXAvc2NyaXB0ZGlyLyR7ZW50cnlwb2ludH1gLFxuICAgIF07XG4gIH1cbn1cblxuLyoqXG4gKiBBIFdpbmRvd3MgUGxhdGZvcm1cbiAqL1xuZXhwb3J0IGNsYXNzIFdpbmRvd3NQbGF0Zm9ybSBleHRlbmRzIFNoZWxsUGxhdGZvcm0ge1xuICBwdWJsaWMgcmVhZG9ubHkgcGxhdGZvcm1UeXBlID0gUGxhdGZvcm1UeXBlLldpbmRvd3M7XG5cbiAgcHVibGljIHByZWJ1aWxkQ29tbWFuZHMoYXNzdW1lUm9sZT86IEFzc3VtZVJvbGUsIF91c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgaWYgKGFzc3VtZVJvbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYXNzdW1lUm9sZSBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3M6IGh0dHBzOi8vZ2l0aHViLmNvbS9jZGtsYWJzL2F3cy1kZWxpdmxpYi9pc3N1ZXMvNTcnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAgLy8gV291bGQgbG92ZSB0byBkbyBkb3dubG9hZGluZyBoZXJlIGFuZCBleGVjdXRpbmcgaW4gdGhlIG5leHQgc3RlcCxcbiAgICAgIC8vIGJ1dCBJIGRvbid0IGtub3cgaG93IHRvIHByb3BhZ2F0ZSB0aGUgdmFsdWUgb2YgJFRFTVBESVIuXG4gICAgICAvL1xuICAgICAgLy8gUHVudGluZyBmb3Igc29tZW9uZSB3aG8ga25vd3MgUG93ZXJTaGVsbCB3ZWxsIGVub3VnaC5cbiAgICBdO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkQ29tbWFuZHMoZW50cnlwb2ludDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnU2V0LVZhcmlhYmxlIC1OYW1lIFRFTVBESVIgLVZhbHVlIChOZXctVGVtcG9yYXJ5RmlsZSkuRGlyZWN0b3J5TmFtZScsXG4gICAgICBgYXdzIHMzIGNwIHMzOi8vJGVudjoke1MzX0JVQ0tFVF9FTlZ9LyRlbnY6JHtTM19LRVlfRU5WfSAkVEVNUERJUlxcXFxzY3JpcHRzLnppcGAsXG4gICAgICAnTmV3LUl0ZW0gLUl0ZW1UeXBlIERpcmVjdG9yeSAtUGF0aCAkVEVNUERJUlxcXFxzY3JpcHRkaXInLFxuICAgICAgJ0V4cGFuZC1BcmNoaXZlIC1QYXRoICRURU1QRElSL3NjcmlwdHMuemlwIC1EZXN0aW5hdGlvblBhdGggJFRFTVBESVJcXFxcc2NyaXB0ZGlyJyxcbiAgICAgICckZW52OlNDUklQVF9ESVIgPSBcIiRURU1QRElSXFxcXHNjcmlwdGRpclwiJyxcbiAgICAgIGAmICRURU1QRElSXFxcXHNjcmlwdGRpclxcXFwke2VudHJ5cG9pbnR9YCxcbiAgICBdO1xuICB9XG59XG4iXX0=
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hlbGxhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QixxQ0FLaUI7QUFDakIsNkNBQXlDO0FBQ3pDLGlDQUFvRDtBQUVwRCxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQztBQUN6QyxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUM7QUErTW5DOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQWEsU0FBVSxTQUFRLG1CQUFTO0lBY3RDLFlBQVksTUFBaUIsRUFBRSxFQUFVLEVBQUUsS0FBcUI7O1FBQzlELEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxXQUFXLENBQUM7UUFFNUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1NBQy9EO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSx1QkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDdEQsSUFBSSxFQUFFLEtBQUssQ0FBQyxlQUFlO1NBQzVCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUN4QyxNQUFNLElBQUksS0FB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b20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3QsIER1cmF0aW9uLFxuICBhd3NfY2xvdWR3YXRjaCBhcyBjbG91ZHdhdGNoLCBhd3NfY29kZWJ1aWxkIGFzIGNidWlsZCxcbiAgYXdzX2NvZGVwaXBlbGluZSBhcyBjcGlwZWxpbmUsIGF3c19jb2RlcGlwZWxpbmVfYWN0aW9ucyBhcyBjcGlwZWxpbmVfYWN0aW9ucyxcbiAgYXdzX2lhbSBhcyBpYW0sIGF3c19zM19hc3NldHMgYXMgYXNzZXRzLCBhd3Nfc2VjcmV0c21hbmFnZXIsIGF3c19zc20sXG59IGZyb20gJ21vbm9jZGsnO1xuaW1wb3J0IHsgQnVpbGRTcGVjIH0gZnJvbSAnLi9idWlsZC1zcGVjJztcbmltcG9ydCB7IHJlbmRlckVudmlyb25tZW50VmFyaWFibGVzIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgUzNfQlVDS0VUX0VOViA9ICdTQ1JJUFRfUzNfQlVDS0VUJztcbmNvbnN0IFMzX0tFWV9FTlYgPSAnU0NSSVBUX1MzX0tFWSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hlbGxhYmxlT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIFNvdXJjZSBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIHNvdXJjZVxuICAgKi9cbiAgc291cmNlPzogY2J1aWxkLklTb3VyY2U7XG5cbiAgLyoqXG4gICAqIFdoYXQgcGxhdGZvcm0gdG8gdXMgdG8gcnVuIHRoZSBzY3JpcHRzIG9uXG4gICAqXG4gICAqIEBkZWZhdWx0IFNoZWxsUGxhdGZvcm0uTGludXhVYnVudHVcbiAgICovXG4gIHBsYXRmb3JtPzogU2hlbGxQbGF0Zm9ybTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKi9cbiAgZW52aXJvbm1lbnQ/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9O1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCBzZWNyZXRzIG1hbmFnZXIgdmFsdWVzLiBUaGUgdmFsdWVzIG11c3QgYmUgY29tcGxldGUgU2VjcmV0IE1hbmFnZXIgQVJOcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIGVudmlyb25tZW50U2VjcmV0cz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoIFNTTSBwYXJhbWV0ZXIgdmFsdWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKi9cbiAgZW52aXJvbm1lbnRQYXJhbWV0ZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIGNvbXB1dGUgdHlwZSB0byB1c2UgZm9yIHRoZSBidWlsZCBjb250YWluZXIuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBub3QgYWxsIGNvbWJpbmF0aW9ucyBhcmUgYXZhaWxhYmxlLiBGb3IgZXhhbXBsZSxcbiAgICogV2luZG93cyBpbWFnZXMgY2Fubm90IGJlIHJ1biBvbiBDb21wdXRlVHlwZS5TbWFsbC5cbiAgICpcbiAgICogQGRlZmF1bHQgQ29tcHV0ZVR5cGUuTWVkaXVtXG4gICAqL1xuICBjb21wdXRlVHlwZT86IGNidWlsZC5Db21wdXRlVHlwZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGhvdyB0aGUgcHJvamVjdCBidWlsZHMgRG9ja2VyIGltYWdlcy4gU3BlY2lmeSB0cnVlIHRvIGVuYWJsZVxuICAgKiBydW5uaW5nIHRoZSBEb2NrZXIgZGFlbW9uIGluc2lkZSBhIERvY2tlciBjb250YWluZXIuIFRoaXMgdmFsdWUgbXVzdCBiZVxuICAgKiBzZXQgdG8gdHJ1ZSBvbmx5IGlmIHRoaXMgYnVpbGQgcHJvamVjdCB3aWxsIGJlIHVzZWQgdG8gYnVpbGQgRG9ja2VyXG4gICAqIGltYWdlcywgYW5kIHRoZSBzcGVjaWZpZWQgYnVpbGQgZW52aXJvbm1lbnQgaW1hZ2UgaXMgbm90IG9uZSBwcm92aWRlZCBieVxuICAgKiBBV1MgQ29kZUJ1aWxkIHdpdGggRG9ja2VyIHN1cHBvcnQuIE90aGVyd2lzZSwgYWxsIGFzc29jaWF0ZWQgYnVpbGRzIHRoYXRcbiAgICogYXR0ZW1wdCB0byBpbnRlcmFjdCB3aXRoIHRoZSBEb2NrZXIgZGFlbW9uIHdpbGwgZmFpbC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHByaXZpbGVnZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBmb3IgdGhlIGJ1aWxkIHByb2plY3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGEgbmFtZSBpcyBnZW5lcmF0ZWQgYnkgQ2xvdWRGb3JtYXRpb24uXG4gICAqL1xuICBidWlsZFByb2plY3ROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgUmVnaW9uYWwgQVdTIFNUUyBlbmRwb2ludHMgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZFxuICAgKiBvZiB0aGUgZ2xvYmFsIGVuZHBvaW50LiBTcGVjaWZ5IHRydWUgdG8gdXNlIFJlZ2lvbmFsIEFXUyBTVFMgZW5kcG9pbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDYW4gYmUgdXNlZCB0byBydW4gdGhpcyBidWlsZCB1c2luZyBhIHNwZWNpZmljIElBTSByb2xlLiBUaGlzIGNhbiBiZSB1c2VkLFxuICAgKiBmb3IgZXhhbXBsZSwgdG8gZXhlY3V0ZSBpbiB0aGUgY29udGV4dCBvZiBhbm90aGVyIGFjY291bnQgKGUuZy4gdG8gcnVuXG4gICAqIHRlc3RzIGluIGlzb2xhdGlvbikuXG4gICAqL1xuICBhc3N1bWVSb2xlPzogQXNzdW1lUm9sZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBidWlsZHNwZWMgKGZvciBhcnRpZmFjdHMgZXRjLilcbiAgICpcbiAgICogQGRlZmF1bHQgTm8gYWRkaXRpb25hbCBidWlsZHNwZWNcbiAgICovXG4gIGJ1aWxkU3BlYz86IEJ1aWxkU3BlYztcblxuICAvKipcbiAgICogVGhlIHRpbWVvdXQgb2YgdGhlIGJ1aWxkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgQ29kZUJ1aWxkIGRlZmF1bHQgKDEgaG91cilcbiAgICovXG4gIHRpbWVvdXQ/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQWxhcm0gcGVyaW9kLlxuICAgKlxuICAgKiBAZGVmYXVsdCAzMDAgc2Vjb25kcyAoNSBtaW51dGVzKVxuICAgKi9cbiAgYWxhcm1QZXJpb2Q/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQWxhcm0gdGhyZXNob2xkLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBhbGFybVRocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogQWxhcm0gZXZhbHVhdGlvbiBwZXJpb2RzLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBhbGFybUV2YWx1YXRpb25QZXJpb2RzPzogbnVtYmVyO1xuXG4gIHNlY29uZGFyeUFydGlmYWN0TmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHVzZWQgdG8gY3JlYXRlIGEgU2hlbGxhYmxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2hlbGxhYmxlUHJvcHMgZXh0ZW5kcyBTaGVsbGFibGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIERpcmVjdG9yeSB3aXRoIHRoZSBzY3JpcHRzLlxuICAgKlxuICAgKiBUaGUgd2hvbGUgZGlyZWN0b3J5IHdpbGwgYmUgdXBsb2FkZWQuXG4gICAqL1xuICBzY3JpcHREaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogRmlsZW5hbWUgb2YgdGhlIGluaXRpYWwgc2NyaXB0IHRvIHN0YXJ0LCByZWxhdGl2ZSB0byBzY3JpcHREaXJlY3RvcnkuXG4gICAqL1xuICBlbnRyeXBvaW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzdW1lUm9sZSB7XG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHJvbGUgdG8gYXNzdW1lLlxuICAgKi9cbiAgcm9sZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgYXNzdW1lZCByb2xlIHNlc3Npb24uXG4gICAqXG4gICAqIFVzZSAgdGhlICByb2xlICBzZXNzaW9uIG5hbWUgdG8gdW5pcXVlbHkgaWRlbnRpZnkgYSBzZXNzaW9uIHdoZW4gdGhlIHNhbWVcbiAgICogcm9sZSBpcyBhc3N1bWVkIGJ5IGRpZmZlcmVudCBwcmluY2lwYWxzIG9yIGZvciBkaWZmZXJlbnQgcmVhc29ucy4gSW5cbiAgICogY3Jvc3MtYWNjb3VudCBzY2VuYXJpb3MsIHRoZSByb2xlIHNlc3Npb24gbmFtZSBpcyB2aXNpYmxlIHRvLCBhbmQgY2FuIGJlXG4gICAqIGxvZ2dlZCBieSB0aGUgYWNjb3VudCB0aGF0IG93bnMgdGhlIHJvbGUuICBUaGUgcm9sZSBzZXNzaW9uIG5hbWUgaXMgYWxzb1xuICAgKiB1c2VkIGluIHRoZSBBUk4gb2YgdGhlIGFzc3VtZWQgcm9sZSBwcmluY2lwYWwuIFRoaXMgbWVhbnMgdGhhdCBzdWJzZXF1ZW50XG4gICAqIGNyb3NzLWFjY291bnQgQVBJIHJlcXVlc3RzIHVzaW5nIHRoZSB0ZW0tIHBvcmFyeSBzZWN1cml0eSBjcmVkZW50aWFscyB3aWxsXG4gICAqIGV4cG9zZSB0aGUgcm9sZSBzZXNzaW9uIG5hbWUgdG8gdGhlIGV4dGVybmFsIGFjY291bnQgaW4gdGhlaXIgQ2xvdWRUcmFpbFxuICAgKiBsb2dzLlxuICAgKlxuICAgKiBUaGUgcmVnZXggdXNlZCB0byB2YWxpZGF0ZSB0aGlzIHBhcmFtZXRlciBpcyBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzXG4gICAqIGNvbnNpc3RpbmcgIG9mIHVwcGVyLSBhbmQgbG93ZXItY2FzZSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIG5vXG4gICAqIHNwYWNlcy4gWW91IGNhbiBhbHNvIGluY2x1ZGUgdW5kZXJzY29yZXMgb3IgYW55IG9mIHRoZSBmb2xsb3dpbmdcbiAgICogY2hhcmFjdGVyczogPSwuQC1cbiAgICovXG4gIHNlc3Npb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgIHVuaXF1ZSAgaWRlbnRpZmllciAgdGhhdCAgaXMgIHVzZWQgYnkgdGhpcmQgcGFydGllcyB3aGVuIGFzc3VtaW5nIHJvbGVzXG4gICAqIGluIHRoZWlyIGN1c3RvbWVycycgYWNjb3VudHMuIEZvciBlYWNoICByb2xlICB0aGF0ICB0aGUgIHRoaXJkIHBhcnR5IGNhblxuICAgKiBhc3N1bWUsIHRoZXkgc2hvdWxkIGluc3RydWN0IHRoZWlyIGN1c3RvbWVycyB0byBlbnN1cmUgdGhlIHJvbGUncyB0cnVzdFxuICAgKiBwb2xpY3kgY2hlY2tzIGZvciB0aGUgZXh0ZXJuYWwgSUQgdGhhdCB0aGUgdGhpcmQgIHBhcnR5IGdlbmVyYXRlZC4gIEVhY2hcbiAgICogdGltZSB0aGUgdGhpcmQgcGFydHkgYXNzdW1lcyB0aGUgcm9sZSwgdGhleSBzaG91bGQgcGFzcyB0aGUgY3VzdG9tZXInc1xuICAgKiBleHRlcm5hbCBJRC4gVGhlIGV4dGVybmFsIElEIGlzIHVzZWZ1bCBpbiAgb3JkZXIgdG8gIGhlbHAgIHRoaXJkICBwYXJ0aWVzXG4gICAqIGJpbmQgYSByb2xlIHRvIHRoZSBjdXN0b21lciB3aG8gY3JlYXRlZCBpdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4gICAqIGV4dGVybmFsIElELCBzZWUgSG93IHRvIFVzZSBhbiBFeHRlci0gbmFsICBJRCAgV2hlbiBHcmFudGluZyBBY2Nlc3MgdG8gWW91clxuICAgKiBBV1MgUmVzb3VyY2VzIHRvIGEgVGhpcmQgUGFydHkgaW4gdGhlIElBTSBVc2VyIEd1aWRlIC5cbiAgICpcbiAgICogVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGNvbnNpc3RpbmcgIG9mIHVwcGVyLSBhbmRcbiAgICogbG93ZXItY2FzZSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIG5vIHNwYWNlcy4gWW91IGNhbiBhbHNvIGluY2x1ZGVcbiAgICogdW5kZXJzY29yZXMgb3IgIGFueSAgb2YgIHRoZSAgZm9sbG93aW5nIGNoYXJhY3RlcnM6ID0sLkA6Ly1cbiAgICovXG4gIGV4dGVybmFsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gYSBwcm9maWUgbmFtZSBpcyBjb25maWd1cmVkLCBhbiBhc3N1bWVkIHJvbGUgY29uZmlndXJhdGlvbiB3aWxsIGJlIGNyZWF0ZWRcbiAgICogaW4gdGhlIHNoYXJlZCBhd3MgY29uZmlndXJhdGlvbiBmaWxlICh+Ly5hd3MvY29uZmlnKS4gVGhpcyBpcyBpbiBjb250cmFyeSBvZiBzaW1wbHkgaW52b2tpbmdcbiAgICogYW4gYHN0cyBhc3N1bWUtcm9sZWAgY29tbWFuZCB0aGF0IGNyZWF0ZXMgYSBzZXNzaW9uIHdpdGggYSBmaXhlZCBleHBpcnkgZGF0ZS5cbiAgICpcbiAgICogVXNpbmcgYSBwcm9maWxlIHdpbGwgZGVsZWdhdGUgY3JlZGVudGlhbCByZWZyZXNoaW5nIHRvIHRoZSBTREsvQ0xJLlxuICAgKiBUaGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IGxvbmcgcnVubmluZyBzZXNzaW9ucyB0aGF0IG5lZWRzIHNlc3Npb25zIHRoYXQgYXJlIGxvbmdlciB0aGFuXG4gICAqIHRoZSBzZXNzaW9uIGR1cmF0aW9uIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCBhIGBzdHMgYXNzdW1lLXJvbGVgLlxuICAgKlxuICAgKiBUaGUgYXBwbGljYXRpb24gY29kZSB3aWxsIGFjY2VzcyB0byB0aGlzIHByb2ZpbGUgaW4gdGhlIGBBV1NfUFJPRklMRWAgZW52IHZhcmlhYmxlLlxuICAgKlxuICAgKiBPbmx5IHJlbGV2YW50IGlmIGByZWZyZXNoYCBpcyBzcGVjaWZpZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2NsaS9sYXRlc3QvdXNlcmd1aWRlL2NsaS1jb25maWd1cmUtZmlsZXMuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAnbG9uZy1ydW5uaW5nLXByb2ZpbGUnXG4gICAqL1xuICBwcm9maWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGlzIGlmIHlvdSBoYXZlIGEgbG9uZyBydW5uaW5nIGV4ZWN1dGlvbiB0aGF0IG5lZWRzIGxvbmcgcnVubmluZyBzZXNzaW9ucy5cbiAgICogVGhpcyB3aWxsIGNyZWF0ZSBhIHByb2ZpbGUgYW5kIHVzZSBpdCB0byBkZWxlZ2F0ZSBjcmVkZW50aWFsIHJlZnJlc2hpbmcgdG8gdGhlIFNESy9DTElcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlZnJlc2g/OiBib29sZWFuO1xuXG59XG5cbi8qKlxuICogQSBDb2RlQnVpbGQgcHJvamVjdCB0aGF0IHJ1bnMgYXJiaXRyYXJ5IHNjcmlwdHMuXG4gKlxuICogVGhlIHNjcmlwdHMgdG8gYmUgcnVuIGFyZSBzcGVjaWZpZWQgYnkgc3VwcGx5aW5nIGEgZGlyZWN0b3J5LlxuICogQWxsIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkgYXJlIHVwbG9hZGVkLCB0aGVuIHRoZSBzY3JpcHQgZGVzaWduYXRlZFxuICogYXMgdGhlIGVudHJ5IHBvaW50IGlzIHN0YXJ0ZWQuXG4gKlxuICogVGhlIHNjcmlwdCBpcyBleGVjdXRlZCBpbiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBidWlsZCBwcm9qZWN0J3NcbiAqIGlucHV0IGlzIHN0b3JlZC4gVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgc2NyaXB0IGZpbGVzIGFyZSBzdG9yZWRcbiAqIGlzIGluIHRoZSAkU0NSSVBUX0RJUiBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqXG4gKiBTdXBwb3J0cyBib3RoIFdpbmRvd3MgYW5kIExpbnV4IGNvbXB1dGVzLlxuICovXG5leHBvcnQgY2xhc3MgU2hlbGxhYmxlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBDbG91ZFdhdGNoIGFsYXJtIHRoYXQgd2lsbCBiZSB0cmlnZ2VyZWQgaWYgdGhpcyBhY3Rpb24gZmFpbHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWxhcm06IGNsb3Vkd2F0Y2guQWxhcm07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybTogU2hlbGxQbGF0Zm9ybTtcbiAgcHJpdmF0ZSByZWFkb25seSBidWlsZFNwZWM6IEJ1aWxkU3BlYztcblxuICBwcml2YXRlIHJlYWRvbmx5IG91dHB1dEFydGlmYWN0TmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2hlbGxhYmxlUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIHRoaXMucGxhdGZvcm0gPSBwcm9wcy5wbGF0Zm9ybSB8fCBTaGVsbFBsYXRmb3JtLkxpbnV4VWJ1bnR1O1xuXG4gICAgY29uc3QgZW50cnlwb2ludCA9IHBhdGguam9pbihwcm9wcy5zY3JpcHREaXJlY3RvcnksIHByb3BzLmVudHJ5cG9pbnQpO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhlbnRyeXBvaW50KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCB0ZXN0IGVudHJ5cG9pbnQ6ICR7ZW50cnlwb2ludH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBhc3NldCA9IG5ldyBhc3NldHMuQXNzZXQodGhpcywgJ1NjcmlwdERpcmVjdG9yeScsIHtcbiAgICAgIHBhdGg6IHByb3BzLnNjcmlwdERpcmVjdG9yeSxcbiAgICB9KTtcblxuICAgIHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lID0gYEFydGlmYWN0XyR7dGhpcy5ub2RlLnVuaXF1ZUlkfWA7XG4gICAgaWYgKHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lLmxlbmd0aCA+IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaG9vcHMsIHRvbyBsb25nOiAke3RoaXMub3V0cHV0QXJ0aWZhY3ROYW1lfWApO1xuICAgIH1cblxuICAgIHRoaXMuYnVpbGRTcGVjID0gQnVpbGRTcGVjLnNpbXBsZSh7XG4gICAgICBwcmVCdWlsZDogdGhpcy5wbGF0Zm9ybS5wcmVidWlsZENvbW1hbmRzKHByb3BzLmFzc3VtZVJvbGUsIHByb3BzLnVzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzKSxcbiAgICAgIGJ1aWxkOiB0aGlzLnBsYXRmb3JtLmJ1aWxkQ29tbWFuZHMocHJvcHMuZW50cnlwb2ludCksXG4gICAgfSkubWVyZ2UocHJvcHMuYnVpbGRTcGVjIHx8IEJ1aWxkU3BlYy5lbXB0eSgpKTtcblxuICAgIGNvbnN0IGVudmlyb25tZW50U2VjcmV0c0FzU2VjcmV0TmFtZXMgPSB0aGlzLmNvbnZlcnRFbnZpcm9ubWVudFNlY3JldEFybnNUb1NlY3JldE5hbWVzKHByb3BzLmVudmlyb25tZW50U2VjcmV0cyk7XG5cbiAgICB0aGlzLnByb2plY3QgPSBuZXcgY2J1aWxkLlByb2plY3QodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgcHJvamVjdE5hbWU6IHByb3BzLmJ1aWxkUHJvamVjdE5hbWUsXG4gICAgICBzb3VyY2U6IHByb3BzLnNvdXJjZSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIGJ1aWxkSW1hZ2U6IHRoaXMucGxhdGZvcm0uYnVpbGRJbWFnZSxcbiAgICAgICAgY29tcHV0ZVR5cGU6IHByb3BzLmNvbXB1dGVUeXBlIHx8IGNidWlsZC5Db21wdXRlVHlwZS5NRURJVU0sXG4gICAgICAgIHByaXZpbGVnZWQ6IHByb3BzLnByaXZpbGVnZWQsXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHtcbiAgICAgICAgW1MzX0JVQ0tFVF9FTlZdOiB7IHZhbHVlOiBhc3NldC5zM0J1Y2tldE5hbWUgfSxcbiAgICAgICAgW1MzX0tFWV9FTlZdOiB7IHZhbHVlOiBhc3NldC5zM09iamVjdEtleSB9LFxuICAgICAgICAuLi5yZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhwcm9wcy5lbnZpcm9ubWVudCksXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKGVudmlyb25tZW50U2VjcmV0c0FzU2VjcmV0TmFtZXMsIGNidWlsZC5CdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLlNFQ1JFVFNfTUFOQUdFUiksXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKHByb3BzLmVudmlyb25tZW50UGFyYW1ldGVycywgY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuUEFSQU1FVEVSX1NUT1JFKSxcbiAgICAgIH0sXG4gICAgICB0aW1lb3V0OiBwcm9wcy50aW1lb3V0LFxuICAgICAgYnVpbGRTcGVjOiBjYnVpbGQuQnVpbGRTcGVjLmZyb21PYmplY3QodGhpcy5idWlsZFNwZWMucmVuZGVyKHsgcHJpbWFyeUFydGlmYWN0TmFtZTogdGhpcy5vdXRwdXRBcnRpZmFjdE5hbWUgfSkpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yb2xlID0gdGhpcy5wcm9qZWN0LnJvbGUhOyAvLyBub3QgdW5kZWZpbmVkLCBhcyBpdCdzIGEgbmV3IFByb2plY3RcbiAgICBhc3NldC5ncmFudFJlYWQodGhpcy5yb2xlKTtcblxuICAgIC8vIEdyYW50IHJlYWQgYWNjZXNzIHRvIHNlY3JldHNcbiAgICBPYmplY3QuZW50cmllcyhwcm9wcy5lbnZpcm9ubWVudFNlY3JldHMgPz8ge30pLmZvckVhY2goKFtuYW1lLCBzZWNyZXRBcm5dKSA9PiB7XG4gICAgICBjb25zdCBzZWNyZXQgPSBhd3Nfc2VjcmV0c21hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybih0aGlzLCBgJHtuYW1lfVNlY3JldGAsIHNlY3JldEFybik7XG4gICAgICBzZWNyZXQuZ3JhbnRSZWFkKHRoaXMucm9sZSk7XG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCByZWFkIGFjY2VzcyB0byBwYXJhbWV0ZXJzXG4gICAgT2JqZWN0LmVudHJpZXMocHJvcHMuZW52aXJvbm1lbnRQYXJhbWV0ZXJzID8/IHt9KS5mb3JFYWNoKChbbmFtZSwgcGFyYW1ldGVyTmFtZV0pID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlciA9IGF3c19zc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsIGAke25hbWV9UGFyYW1ldGVyYCwgcGFyYW1ldGVyTmFtZSk7XG4gICAgICBwYXJhbWV0ZXIuZ3JhbnRSZWFkKHRoaXMucm9sZSk7XG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuYXNzdW1lUm9sZSkge1xuICAgICAgdGhpcy5yb2xlLmFkZFRvUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydzdHM6QXNzdW1lUm9sZSddLFxuICAgICAgICByZXNvdXJjZXM6IFtwcm9wcy5hc3N1bWVSb2xlLnJvbGVBcm5dLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHRoaXMuYWxhcm0gPSBuZXcgY2xvdWR3YXRjaC5BbGFybSh0aGlzLCAnQWxhcm0nLCB7XG4gICAgICBtZXRyaWM6IHRoaXMucHJvamVjdC5tZXRyaWNGYWlsZWRCdWlsZHMoeyBwZXJpb2Q6IHByb3BzLmFsYXJtUGVyaW9kIHx8IER1cmF0aW9uLnNlY29uZHMoMzAwKSB9KSxcbiAgICAgIHRocmVzaG9sZDogcHJvcHMuYWxhcm1UaHJlc2hvbGQgfHwgMSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBwcm9wcy5hbGFybUV2YWx1YXRpb25QZXJpb2RzIHx8IDEsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBjbG91ZHdhdGNoLlRyZWF0TWlzc2luZ0RhdGEuSUdOT1JFLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIG5hbWU6IHN0cmluZywgaW5wdXRBcnRpZmFjdDogY3BpcGVsaW5lLkFydGlmYWN0LCBydW5PcmRlcj86IG51bWJlcik6XG4gIGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbiB7XG4gICAgY29uc3QgY29kZUJ1aWxkQWN0aW9uID0gbmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBuYW1lLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgICAgcnVuT3JkZXIsXG4gICAgICBpbnB1dDogaW5wdXRBcnRpZmFjdCxcbiAgICAgIG91dHB1dHM6IFtuZXcgY3BpcGVsaW5lLkFydGlmYWN0KHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lKV0uY29uY2F0KFxuICAgICAgICB0aGlzLmJ1aWxkU3BlYy5hZGRpdGlvbmFsQXJ0aWZhY3ROYW1lcy5tYXAoYXJ0aWZhY3ROYW1lID0+IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoYXJ0aWZhY3ROYW1lKSkpLFxuICAgIH0pO1xuICAgIHN0YWdlLmFkZEFjdGlvbihjb2RlQnVpbGRBY3Rpb24pO1xuICAgIHJldHVybiBjb2RlQnVpbGRBY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbnRyYWN0IG9mIGBlbnZpcm9ubWVudFNlY3JldHNgIGlzIHRoYXQgdGhlIHZhbHVlcyBhcmUgY29tcGxldGUgU2VjcmV0IEFSTnM7XG4gICAqIGhvd2V2ZXIsIHRoZSBDb2RlQnVpbGQgY29uc3RydWN0IGV4cGVjdHMgc2VjcmV0IG5hbWVzIGFzIHRoZSBpbnB1dHMgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICogVGhpcyBtZXRob2QgY29udmVydHMgdGhlIGVudmlyb25tZW50IHNlY3JldHMgZnJvbSBBUk5zIHRvIG5hbWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0RW52aXJvbm1lbnRTZWNyZXRBcm5zVG9TZWNyZXROYW1lcyhlbnZpcm9ubWVudFNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgaWYgKCFlbnZpcm9ubWVudFNlY3JldHMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0geyB9O1xuICAgIE9iamVjdC5lbnRyaWVzKGVudmlyb25tZW50U2VjcmV0cyA/PyB7fSkuZm9yRWFjaCgoW25hbWUsIHNlY3JldEFybl0pID0+IHtcbiAgICAgIGNvbnN0IHNlY3JldCA9IGF3c19zZWNyZXRzbWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKHRoaXMsIGAke25hbWV9U2VjcmV0RnJvbUFybmAsIHNlY3JldEFybik7XG4gICAgICBvdXRbbmFtZV0gPSBzZWNyZXQuc2VjcmV0TmFtZTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG59XG5cbi8qKlxuICogUGxhdGZvcm0gYXJjaGV0eXBlXG4gKi9cbmV4cG9ydCBlbnVtIFBsYXRmb3JtVHlwZSB7XG4gIExpbnV4ID0gJ0xpbnV4JyxcbiAgV2luZG93cyA9ICdXaW5kb3dzJ1xufVxuXG4vKipcbiAqIFRoZSBwbGF0Zm9ybSB0eXBlIHRvIHJ1biB0aGUgc2NyaXB0cyBvblxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2hlbGxQbGF0Zm9ybSB7XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBkZWZhdWx0IFVidW50dSBMaW51eCBwbGF0Zm9ybVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgTGludXhVYnVudHUoKTogU2hlbGxQbGF0Zm9ybSB7XG4gICAgLy8gQ2Fubm90IGJlIHN0YXRpYyBtZW1iZXIgYmVjYXVzZSBvZiBpbml0aWFsaXphdGlvbiBvcmRlclxuICAgIHJldHVybiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzRfMCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgZGVmYXVsdCBXaW5kb3dzIHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBXaW5kb3dzKCk6IFNoZWxsUGxhdGZvcm0ge1xuICAgIC8vIENhbm5vdCBiZSBzdGF0aWMgbWVtYmVyIGJlY2F1c2Ugb2YgaW5pdGlhbGl6YXRpb24gb3JkZXJcbiAgICByZXR1cm4gbmV3IFdpbmRvd3NQbGF0Zm9ybShjYnVpbGQuV2luZG93c0J1aWxkSW1hZ2UuV0lOX1NFUlZFUl9DT1JFXzIwMTlfQkFTRSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgYnVpbGRJbWFnZTogY2J1aWxkLklCdWlsZEltYWdlKSB7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGNvbW1hbmRzIHRvIGRvd25sb2FkIHRoZSBzY3JpcHQgYnVuZGxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcHJlYnVpbGRDb21tYW5kcyhhc3N1bWVSb2xlPzogQXNzdW1lUm9sZSwgdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJldHVybiBjb21tYW5kcyB0byBzdGFydCB0aGUgZW50cnlwb2ludCBzY3JpcHRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0IHBsYXRmb3JtVHlwZSgpOiBQbGF0Zm9ybVR5cGU7XG59XG5cbi8qKlxuICogQSBMaW51eCBQbGF0Zm9ybVxuICovXG5leHBvcnQgY2xhc3MgTGludXhQbGF0Zm9ybSBleHRlbmRzIFNoZWxsUGxhdGZvcm0ge1xuICBwdWJsaWMgcmVhZG9ubHkgcGxhdGZvcm1UeXBlID0gUGxhdGZvcm1UeXBlLkxpbnV4O1xuXG4gIHB1YmxpYyBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIC8vIEJldHRlciBlY2hvIHRoZSBsb2NhdGlvbiBoZXJlOyBpZiB0aGlzIGZhaWxzLCB0aGUgZXJyb3IgbWVzc2FnZSBvbmx5IGNvbnRhaW5zXG4gICAgLy8gdGhlIHVuZXhwYW5kZWQgdmFyaWFibGVzIGJ5IGRlZmF1bHQuIEl0IG1pZ2h0IGZhaWwgaWYgeW91J3JlIHJ1bm5pbmcgYW4gb2xkXG4gICAgLy8gZGVmaW5pdGlvbiBvZiB0aGUgQ29kZUJ1aWxkIHByb2plY3QtLXRoZSBwZXJtaXNzaW9ucyB3aWxsIGhhdmUgYmVlbiBjaGFuZ2VkXG4gICAgLy8gdG8gb25seSBhbGxvdyBkb3dubG9hZGluZyB0aGUgdmVyeSBsYXRlc3QgdmVyc2lvbi5cbiAgICBsaW5lcy5wdXNoKGBlY2hvIFwiRG93bmxvYWRpbmcgc2NyaXB0cyBmcm9tIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fVwiYCk7XG4gICAgbGluZXMucHVzaChgYXdzIHMzIGNwIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fSAvdG1wYCk7XG4gICAgbGluZXMucHVzaCgnbWtkaXIgLXAgL3RtcC9zY3JpcHRkaXInKTtcbiAgICBsaW5lcy5wdXNoKGB1bnppcCAvdG1wLyQoYmFzZW5hbWUgXFwkJHtTM19LRVlfRU5WfSkgLWQgL3RtcC9zY3JpcHRkaXJgKTtcblxuICAgIGlmIChhc3N1bWVSb2xlKSB7XG5cbiAgICAgIGlmIChhc3N1bWVSb2xlLnJlZnJlc2gpIHtcblxuICAgICAgICBjb25zdCBhd3NIb21lID0gJ34vLmF3cyc7XG5cbiAgICAgICAgY29uc3QgcHJvZmlsZU5hbWUgPSBhc3N1bWVSb2xlLnByb2ZpbGVOYW1lID8/ICdsb25nLXJ1bm5pbmctcHJvZmlsZSc7XG5cbiAgICAgICAgbGluZXMucHVzaChgbWtkaXIgLXAgJHthd3NIb21lfWApO1xuICAgICAgICBsaW5lcy5wdXNoKGB0b3VjaCAke2F3c0hvbWV9L2NyZWRlbnRpYWxzYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYGNvbmZpZz0ke2F3c0hvbWV9L2NvbmZpZ2ApO1xuICAgICAgICBsaW5lcy5wdXNoKGBlY2hvIFtwcm9maWxlICR7cHJvZmlsZU5hbWV9XT4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaCgnZWNobyBjcmVkZW50aWFsX3NvdXJjZSA9IEVjc0NvbnRhaW5lciA+PiAkXFx7Y29uZmlnXFx9Jyk7XG4gICAgICAgIGxpbmVzLnB1c2goYGVjaG8gcm9sZV9zZXNzaW9uX25hbWUgPSAke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9ID4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaChgZWNobyByb2xlX2FybiA9ICR7YXNzdW1lUm9sZS5yb2xlQXJufSA+PiAkY29uZmlnYCk7XG5cbiAgICAgICAgaWYgKGFzc3VtZVJvbGUuZXh0ZXJuYWxJZCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYGVjaG8gZXh0ZXJuYWxfaWQgPSAke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH0gPj4gJGNvbmZpZ2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbGV0IHRoZSBhcHBsaWNhdGlvbiBjb2RlIGtub3cgd2hpY2ggcm9sZSBpcyBiZWluZyB1c2VkLlxuICAgICAgICBsaW5lcy5wdXNoKGBleHBvcnQgQVdTX1BST0ZJTEU9JHtwcm9maWxlTmFtZX1gKTtcblxuICAgICAgICAvLyBmb3JjZSB0aGUgQVdTIFNESyBmb3IgSmF2YVNjcmlwdCB0byBhY3R1YWxseSBsb2FkIHRoZSBjb25maWcgZmlsZSAoZG8gYXV0b21hdGljYWxseSBzbyB1c2VycyBkb24ndCBmb3JnZXQpXG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0RLX0xPQURfQ09ORklHPTEnKTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBjb25zdCBleHRlcm5hbElkID0gYXNzdW1lUm9sZS5leHRlcm5hbElkID8gYC0tZXh0ZXJuYWwtaWQgXCIke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH1cImAgOiAnJztcbiAgICAgICAgY29uc3QgU3RzRW5kcG9pbnRzID0gdXNlUmVnaW9uYWxTdHNFbmRwb2ludHMgPyAncmVnaW9uYWwnIDogJ2xlZ2FjeSc7XG5cbiAgICAgICAgbGluZXMucHVzaCgnY3JlZHM9JChta3RlbXAgLWQpL2NyZWRzLmpzb24nKTtcbiAgICAgICAgbGluZXMucHVzaChgQVdTX1NUU19SRUdJT05BTF9FTkRQT0lOVFM9JHtTdHNFbmRwb2ludHN9IGF3cyBzdHMgYXNzdW1lLXJvbGUgLS1yb2xlLWFybiBcIiR7YXNzdW1lUm9sZS5yb2xlQXJufVwiIC0tcm9sZS1zZXNzaW9uLW5hbWUgXCIke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9XCIgJHtleHRlcm5hbElkfSA+ICRjcmVkc2ApO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX0FDQ0VTU19LRVlfSUQ9XCIkKGNhdCAke2NyZWRzfSB8IGdyZXAgXCJBY2Nlc3NLZXlJZFwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPVwiJChjYXQgJHtjcmVkc30gfCBncmVwIFwiU2VjcmV0QWNjZXNzS2V5XCIgfCBjdXQgLWRcXCdcIlxcJyAtZiA0KVwiJyk7XG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0VTU0lPTl9UT0tFTj1cIiQoY2F0ICR7Y3JlZHN9IHwgZ3JlcCBcIlNlc3Npb25Ub2tlblwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2V4cG9ydCBTQ1JJUFRfRElSPS90bXAvc2NyaXB0ZGlyJyxcbiAgICAgIGBlY2hvIFwiUnVubmluZyAke2VudHJ5cG9pbnR9XCJgLFxuICAgICAgYC9iaW4vYmFzaCAvdG1wL3NjcmlwdGRpci8ke2VudHJ5cG9pbnR9YCxcbiAgICBdO1xuICB9XG59XG5cbi8qKlxuICogQSBXaW5kb3dzIFBsYXRmb3JtXG4gKi9cbmV4cG9ydCBjbGFzcyBXaW5kb3dzUGxhdGZvcm0gZXh0ZW5kcyBTaGVsbFBsYXRmb3JtIHtcbiAgcHVibGljIHJlYWRvbmx5IHBsYXRmb3JtVHlwZSA9IFBsYXRmb3JtVHlwZS5XaW5kb3dzO1xuXG4gIHB1YmxpYyBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCBfdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuKTogc3RyaW5nW10ge1xuICAgIGlmIChhc3N1bWVSb2xlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Fzc3VtZVJvbGUgaXMgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzOiBodHRwczovL2dpdGh1Yi5jb20vY2RrbGFicy9hd3MtZGVsaXZsaWIvaXNzdWVzLzU3Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIFdvdWxkIGxvdmUgdG8gZG8gZG93bmxvYWRpbmcgaGVyZSBhbmQgZXhlY3V0aW5nIGluIHRoZSBuZXh0IHN0ZXAsXG4gICAgICAvLyBidXQgSSBkb24ndCBrbm93IGhvdyB0byBwcm9wYWdhdGUgdGhlIHZhbHVlIG9mICRURU1QRElSLlxuICAgICAgLy9cbiAgICAgIC8vIFB1bnRpbmcgZm9yIHNvbWVvbmUgd2hvIGtub3dzIFBvd2VyU2hlbGwgd2VsbCBlbm91Z2guXG4gICAgXTtcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ1NldC1WYXJpYWJsZSAtTmFtZSBURU1QRElSIC1WYWx1ZSAoTmV3LVRlbXBvcmFyeUZpbGUpLkRpcmVjdG9yeU5hbWUnLFxuICAgICAgYGF3cyBzMyBjcCBzMzovLyRlbnY6JHtTM19CVUNLRVRfRU5WfS8kZW52OiR7UzNfS0VZX0VOVn0gJFRFTVBESVJcXFxcc2NyaXB0cy56aXBgLFxuICAgICAgJ05ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFRFTVBESVJcXFxcc2NyaXB0ZGlyJyxcbiAgICAgICdFeHBhbmQtQXJjaGl2ZSAtUGF0aCAkVEVNUERJUi9zY3JpcHRzLnppcCAtRGVzdGluYXRpb25QYXRoICRURU1QRElSXFxcXHNjcmlwdGRpcicsXG4gICAgICAnJGVudjpTQ1JJUFRfRElSID0gXCIkVEVNUERJUlxcXFxzY3JpcHRkaXJcIicsXG4gICAgICBgJiAkVEVNUERJUlxcXFxzY3JpcHRkaXJcXFxcJHtlbnRyeXBvaW50fWAsXG4gICAgXTtcbiAgfVxufVxuIl19
package/lib/util.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -98,4 +102,4 @@ function flatMap(xs, fn) {
98
102
  return ret;
99
103
  }
100
104
  exports.flatMap = flatMap;
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBSTdCOzs7O0dBSUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxLQUFhLEVBQUUsV0FBb0I7SUFDbkUsaURBQWlEO0lBQ2pELElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRTtRQUM3QixPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFQRCw4Q0FPQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxTQUFpQjtJQUNuRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1FBQ3RCLEtBQUssTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5RDtLQUNGO1NBQU07UUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUN6QztJQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBWkQsa0RBWUM7QUFFRCxTQUFnQiwwQkFBMEIsQ0FBQyxHQUEyQyxFQUFFLElBQTBDO0lBQ2hJLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDUixPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELE1BQU0sR0FBRyxHQUF1RCxFQUFHLENBQUM7SUFDcEUsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDOUMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUM1QjtLQUNGO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBWkQsZ0VBWUM7QUFFRCxTQUFnQixXQUFXLENBQUksRUFBYztJQUMzQyxNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7SUFDcEIsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7UUFDdkMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ25CLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDWjtLQUNGO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBUkQsa0NBUUM7QUFFRCxTQUFnQixTQUFTLENBQU8sRUFBc0IsRUFBRSxFQUFlO0lBQ3JFLE1BQU0sR0FBRyxHQUF1QixFQUFFLENBQUM7SUFDbkMsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7UUFDdkMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNoQjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQU5ELDhCQU1DO0FBRUQsU0FBZ0IsT0FBTyxDQUFPLEVBQU8sRUFBRSxFQUFpQjtJQUN0RCxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBSyxDQUFDO0lBQzNCLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNwQjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQU5ELDBCQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgYXdzX2NvZGVidWlsZCBhcyBjYnVpbGQgfSBmcm9tICdtb25vY2RrJztcblxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIFwiUnVuT3JkZXJcIiBwcm9wZXJ0eSBmb3IgdGhlIG5leHQgYWN0aW9uIHRvIGJlIGFkZGVkIHRvIGEgc3RhZ2UuXG4gKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgbmV3IGFjdGlvblxuICogQHBhcmFtIGNvbmN1cnJlbmN5IFRoZSBjb25jdXJyZW5jeSBsaW1pdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZXJtaW5lUnVuT3JkZXIoaW5kZXg6IG51bWJlciwgY29uY3VycmVuY3k/OiBudW1iZXIpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAvLyBubyBydW5PcmRlciBpZiB3ZSBhcmUgYXQgdW5saW1pdGVkIGNvbmN1cnJlbmN5XG4gIGlmIChjb25jdXJyZW5jeSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBNYXRoLmZsb29yKGluZGV4IC8gY29uY3VycmVuY3kpICsgMTtcbn1cblxuLyoqXG4gKiBIYXNoZXMgdGhlIGNvbnRlbnRzIG9mIGEgZmlsZSBvciBkaXJlY3RvcnkuIElmIHRoZSBhcmd1bWVudCBpcyBhIGRpcmVjdG9yeSxcbiAqIGl0IGlzIGFzc3VtZWQgbm90IHRvIGNvbnRhaW4gc3ltbGlua3MgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBjeWNsaWMgdHJlZS5cbiAqXG4gKiBAcGFyYW0gZmlsZU9yRGlyIHRoZSBwYXRoIHRvIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSB0aGF0IHNob3VsZCBiZSBoYXNoZWQuXG4gKlxuICogQHJldHVybnMgYSBTSEEyNTYgaGFzaCwgYmFzZS02NCBlbmNvZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzaEZpbGVPckRpcmVjdG9yeShmaWxlT3JEaXI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGhhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaCgnU0hBMjU2Jyk7XG4gIGhhc2gudXBkYXRlKHBhdGguYmFzZW5hbWUoZmlsZU9yRGlyKSkudXBkYXRlKCdcXDAnKTtcbiAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKGZpbGVPckRpcik7XG4gIGlmIChzdGF0LmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZnMucmVhZGRpclN5bmMoZmlsZU9yRGlyKS5zb3J0KCkpIHtcbiAgICAgIGhhc2gudXBkYXRlKGhhc2hGaWxlT3JEaXJlY3RvcnkocGF0aC5qb2luKGZpbGVPckRpciwgaXRlbSkpKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaGFzaC51cGRhdGUoZnMucmVhZEZpbGVTeW5jKGZpbGVPckRpcikpO1xuICB9XG4gIHJldHVybiBoYXNoLmRpZ2VzdCgnYmFzZTY0Jyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhlbnY/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9LCB0eXBlPzogY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUpIHtcbiAgaWYgKCFlbnYpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3Qgb3V0OiB7IFtrZXk6IHN0cmluZ106IGNidWlsZC5CdWlsZEVudmlyb25tZW50VmFyaWFibGUgfSA9IHsgfTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZW52KSkge1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvdXRba2V5XSA9IHsgdmFsdWUsIHR5cGUgfTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vVW5kZWZpbmVkPFQ+KHhzOiBQYXJ0aWFsPFQ+KToge1trIGluIGtleW9mIFRdOiBUW2tdfSB7XG4gIGNvbnN0IHJldDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldFtrXSA9IHY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBWYWx1ZXM8VCwgVT4oeHM6IHtba2V5OiBzdHJpbmddOiBUfSwgZm46ICh4OiBUKSA9PiBVKToge1trZXk6IHN0cmluZ106IFV9IHtcbiAgY29uc3QgcmV0OiB7W2tleTogc3RyaW5nXTogVX0gPSB7fTtcbiAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoeHMpKSB7XG4gICAgcmV0W2tdID0gZm4odik7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZsYXRNYXA8VCwgVT4oeHM6IFRbXSwgZm46ICh4OiBUKSA9PiBVW10pOiBVW10ge1xuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8VT4oKTtcbiAgZm9yIChjb25zdCB4IG9mIHhzKSB7XG4gICAgcmV0LnB1c2goLi4uZm4oeCkpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUk3Qjs7OztHQUlHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsS0FBYSxFQUFFLFdBQW9CO0lBQ25FLGlEQUFpRDtJQUNqRCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUU7UUFDN0IsT0FBTyxTQUFTLENBQUM7S0FDbEI7SUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBUEQsOENBT0M7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsU0FBaUI7SUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRTtRQUN0QixLQUFLLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDOUQ7S0FDRjtTQUFNO1FBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDekM7SUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQVpELGtEQVlDO0FBRUQsU0FBZ0IsMEJBQTBCLENBQUMsR0FBMkMsRUFBRSxJQUEwQztJQUNoSSxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1IsT0FBTyxTQUFTLENBQUM7S0FDbEI7SUFFRCxNQUFNLEdBQUcsR0FBdUQsRUFBRyxDQUFDO0lBQ3BFLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzlDLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN2QixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDNUI7S0FDRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQVpELGdFQVlDO0FBRUQsU0FBZ0IsV0FBVyxDQUFJLEVBQWM7SUFDM0MsTUFBTSxHQUFHLEdBQVEsRUFBRSxDQUFDO0lBQ3BCLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUNuQixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ1o7S0FDRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQVJELGtDQVFDO0FBRUQsU0FBZ0IsU0FBUyxDQUFPLEVBQXNCLEVBQUUsRUFBZTtJQUNyRSxNQUFNLEdBQUcsR0FBdUIsRUFBRSxDQUFDO0lBQ25DLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQ3ZDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDaEI7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFORCw4QkFNQztBQUVELFNBQWdCLE9BQU8sQ0FBTyxFQUFPLEVBQUUsRUFBaUI7SUFDdEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUssQ0FBQztJQUMzQixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNsQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDcEI7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFORCwwQkFNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkIH0gZnJvbSAnbW9ub2Nkayc7XG5cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBcIlJ1bk9yZGVyXCIgcHJvcGVydHkgZm9yIHRoZSBuZXh0IGFjdGlvbiB0byBiZSBhZGRlZCB0byBhIHN0YWdlLlxuICogQHBhcmFtIGluZGV4IEluZGV4IG9mIG5ldyBhY3Rpb25cbiAqIEBwYXJhbSBjb25jdXJyZW5jeSBUaGUgY29uY3VycmVuY3kgbGltaXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVybWluZVJ1bk9yZGVyKGluZGV4OiBudW1iZXIsIGNvbmN1cnJlbmN5PzogbnVtYmVyKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgLy8gbm8gcnVuT3JkZXIgaWYgd2UgYXJlIGF0IHVubGltaXRlZCBjb25jdXJyZW5jeVxuICBpZiAoY29uY3VycmVuY3kgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gTWF0aC5mbG9vcihpbmRleCAvIGNvbmN1cnJlbmN5KSArIDE7XG59XG5cbi8qKlxuICogSGFzaGVzIHRoZSBjb250ZW50cyBvZiBhIGZpbGUgb3IgZGlyZWN0b3J5LiBJZiB0aGUgYXJndW1lbnQgaXMgYSBkaXJlY3RvcnksXG4gKiBpdCBpcyBhc3N1bWVkIG5vdCB0byBjb250YWluIHN5bWxpbmtzIHRoYXQgd291bGQgcmVzdWx0IGluIGEgY3ljbGljIHRyZWUuXG4gKlxuICogQHBhcmFtIGZpbGVPckRpciB0aGUgcGF0aCB0byB0aGUgZmlsZSBvciBkaXJlY3RvcnkgdGhhdCBzaG91bGQgYmUgaGFzaGVkLlxuICpcbiAqIEByZXR1cm5zIGEgU0hBMjU2IGhhc2gsIGJhc2UtNjQgZW5jb2RlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc2hGaWxlT3JEaXJlY3RvcnkoZmlsZU9yRGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBoYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goJ1NIQTI1NicpO1xuICBoYXNoLnVwZGF0ZShwYXRoLmJhc2VuYW1lKGZpbGVPckRpcikpLnVwZGF0ZSgnXFwwJyk7XG4gIGNvbnN0IHN0YXQgPSBmcy5zdGF0U3luYyhmaWxlT3JEaXIpO1xuICBpZiAoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGZzLnJlYWRkaXJTeW5jKGZpbGVPckRpcikuc29ydCgpKSB7XG4gICAgICBoYXNoLnVwZGF0ZShoYXNoRmlsZU9yRGlyZWN0b3J5KHBhdGguam9pbihmaWxlT3JEaXIsIGl0ZW0pKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhhc2gudXBkYXRlKGZzLnJlYWRGaWxlU3luYyhmaWxlT3JEaXIpKTtcbiAgfVxuICByZXR1cm4gaGFzaC5kaWdlc3QoJ2Jhc2U2NCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRW52aXJvbm1lbnRWYXJpYWJsZXMoZW52PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSwgdHlwZT86IGNidWlsZC5CdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlKSB7XG4gIGlmICghZW52KSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IG91dDogeyBba2V5OiBzdHJpbmddOiBjYnVpbGQuQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlIH0gPSB7IH07XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGVudikpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3V0W2tleV0gPSB7IHZhbHVlLCB0eXBlIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub1VuZGVmaW5lZDxUPih4czogUGFydGlhbDxUPik6IHtbayBpbiBrZXlvZiBUXTogVFtrXX0ge1xuICBjb25zdCByZXQ6IGFueSA9IHt9O1xuICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyh4cykpIHtcbiAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXRba10gPSB2O1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwVmFsdWVzPFQsIFU+KHhzOiB7W2tleTogc3RyaW5nXTogVH0sIGZuOiAoeDogVCkgPT4gVSk6IHtba2V5OiBzdHJpbmddOiBVfSB7XG4gIGNvbnN0IHJldDoge1trZXk6IHN0cmluZ106IFV9ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIHJldFtrXSA9IGZuKHYpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmbGF0TWFwPFQsIFU+KHhzOiBUW10sIGZuOiAoeDogVCkgPT4gVVtdKTogVVtdIHtcbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFU+KCk7XG4gIGZvciAoY29uc3QgeCBvZiB4cykge1xuICAgIHJldC5wdXNoKC4uLmZuKHgpKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIl19
package/package.json CHANGED
@@ -37,9 +37,9 @@
37
37
  "organization": false
38
38
  },
39
39
  "devDependencies": {
40
- "@monocdk-experiment/assert": "^1.146.0",
41
- "@types/adm-zip": "^0.4.34",
42
- "@types/aws-lambda": "^8.10.92",
40
+ "@monocdk-experiment/assert": "^1.153.0",
41
+ "@types/adm-zip": "^0.5.0",
42
+ "@types/aws-lambda": "^8.10.95",
43
43
  "@types/fs-extra": "^9.0.13",
44
44
  "@types/jest": "^27.4.1",
45
45
  "@types/node": "^12",
@@ -47,37 +47,37 @@
47
47
  "@typescript-eslint/eslint-plugin": "^5",
48
48
  "@typescript-eslint/parser": "^5",
49
49
  "adm-zip": "^0.5.9",
50
- "aws-cdk": "^1.146.0",
51
- "aws-sdk": "^2.1082.0",
50
+ "aws-cdk": "^1.153.0",
51
+ "aws-sdk": "^2.1120.0",
52
52
  "aws-sdk-mock": "^5.6.2",
53
- "constructs": "^3.3.228",
54
- "esbuild": "^0.14.23",
53
+ "constructs": "^3.3.275",
54
+ "esbuild": "^0.14.38",
55
55
  "eslint": "^8",
56
56
  "eslint-import-resolver-node": "^0.3.6",
57
- "eslint-import-resolver-typescript": "^2.5.0",
58
- "eslint-plugin-import": "^2.25.4",
59
- "fs-extra": "^10.0.1",
57
+ "eslint-import-resolver-typescript": "^2.7.1",
58
+ "eslint-plugin-import": "^2.26.0",
59
+ "fs-extra": "^10.1.0",
60
60
  "jest": "^27.5.1",
61
61
  "jest-create-mock-instance": "^2.0.0",
62
62
  "jest-junit": "^13",
63
63
  "json-schema": "^0.4.0",
64
64
  "JSONStream": "^1.3.5",
65
- "monocdk": "^1.146.0",
66
- "node-ical": "^0.14.1",
65
+ "monocdk": "^1.153.0",
66
+ "node-ical": "^0.15.1",
67
67
  "npm-check-updates": "^12",
68
- "projen": "^0.52.49",
69
- "rrule": "^2.6.8",
68
+ "projen": "^0.54.40",
69
+ "rrule": "^2.6.9",
70
70
  "standard-version": "^9",
71
71
  "tar": "^6.1.11",
72
- "ts-jest": "^27.1.3",
73
- "typescript": "~4.5.5"
72
+ "ts-jest": "^27.1.4",
73
+ "typescript": "~4.6.3"
74
74
  },
75
75
  "peerDependencies": {
76
- "constructs": "^3.3.228",
77
- "monocdk": "^1.146.0"
76
+ "constructs": "^3.3.275",
77
+ "monocdk": "^1.153.0"
78
78
  },
79
79
  "dependencies": {
80
- "changelog-parser": "^2.8.0"
80
+ "changelog-parser": "^2.8.1"
81
81
  },
82
82
  "keywords": [
83
83
  "aws-cdk",
@@ -87,7 +87,7 @@
87
87
  ],
88
88
  "main": "lib/index.js",
89
89
  "license": "Apache-2.0",
90
- "version": "13.6.4",
90
+ "version": "13.7.2",
91
91
  "jest": {
92
92
  "testMatch": [
93
93
  "**/lib/__tests__/**/?(*.)+(spec|test).js?(x)"
@@ -1,108 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.handler = exports.cloudwatch = void 0;
23
- // eslint-disable-next-line import/no-extraneous-dependencies
24
- const AWS = __importStar(require("aws-sdk"));
25
- // export for tests
26
- exports.cloudwatch = new AWS.CloudWatch();
27
- const logger = {
28
- log: (line) => process.stdout.write(line),
29
- };
30
- /**
31
- * Lambda function that reacts to an Amazon EventBridge event triggered by a 'CodePipeline Action Execution State Change'.
32
- * The handler reads the event and sends off metrics to CloudWatch.
33
- */
34
- async function handler(event) {
35
- logger.log(`Received event: ${JSON.stringify(event)}`);
36
- switch (event['detail-type']) {
37
- case 'CodePipeline Pipeline Execution State Change':
38
- await handleExecutionChange(event);
39
- break;
40
- case 'CodePipeline Action Execution State Change':
41
- await handleActionChange(event);
42
- break;
43
- default: throw new Error(`Unhandled detail type ${event['detaill-type']}`);
44
- }
45
- }
46
- exports.handler = handler;
47
- async function handleExecutionChange(event) {
48
- const pipelineName = event.detail.pipeline;
49
- const state = event.detail.state;
50
- let value;
51
- switch (state) {
52
- case 'FAILED':
53
- value = 1;
54
- break;
55
- case 'SUCCEEDED':
56
- value = 0;
57
- break;
58
- default: throw new Error(`Unsupported state: ${state}. Only FAILED and SUCCEEDED states are supported. ` +
59
- 'Others must be filtered out prior to this function.');
60
- }
61
- await putMetric(event, value, [
62
- { Name: 'Pipeline', Value: pipelineName },
63
- ]);
64
- logger.log('Done');
65
- }
66
- async function handleActionChange(event) {
67
- const pipelineName = event.detail.pipeline;
68
- const action = event.detail.action;
69
- const state = event.detail.state;
70
- let value;
71
- switch (state) {
72
- case 'FAILED':
73
- value = 1;
74
- break;
75
- case 'SUCCEEDED':
76
- value = 0;
77
- break;
78
- default: throw new Error(`Unsupported state: ${state}. Only FAILED and SUCCEEDED states are supported. ` +
79
- 'Others must be filtered out prior to this function.');
80
- }
81
- await putMetric(event, value, [
82
- { Name: 'Pipeline', Value: pipelineName },
83
- { Name: 'Action', Value: action },
84
- ]);
85
- logger.log('Done');
86
- }
87
- async function putMetric(event, value, dimensions) {
88
- const metricNamespace = process.env.METRIC_NAMESPACE;
89
- const metricName = process.env.METRIC_NAME;
90
- const time = new Date(event.time);
91
- if (!metricNamespace || !metricName) {
92
- throw new Error('Both METRIC_NAMESPACE and METRIC_NAME environment variables must be set.');
93
- }
94
- const input = {
95
- Namespace: metricNamespace,
96
- MetricData: [
97
- {
98
- MetricName: metricName,
99
- Value: value,
100
- Dimensions: dimensions,
101
- Timestamp: time,
102
- },
103
- ],
104
- };
105
- logger.log(`Calling PutMetricData with payload: ${JSON.stringify(input)}`);
106
- await exports.cloudwatch.putMetricData(input).promise();
107
- }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hlci1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsid2F0Y2hlci1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2REFBNkQ7QUFDN0QsNkNBQStCO0FBbUIvQixtQkFBbUI7QUFDTixRQUFBLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUMvQyxNQUFNLE1BQU0sR0FBRztJQUNiLEdBQUcsRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0NBQ2xELENBQUM7QUFFRjs7O0dBR0c7QUFDSSxLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQWdCO0lBQzVDLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXZELFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1FBQzVCLEtBQUssOENBQThDO1lBQUUsTUFBTSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDL0YsS0FBSyw0Q0FBNEM7WUFBRSxNQUFNLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQUMsTUFBTTtRQUMxRixPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQzVFO0FBQ0gsQ0FBQztBQVJELDBCQVFDO0FBRUQsS0FBSyxVQUFVLHFCQUFxQixDQUFDLEtBQXNDO0lBQ3pFLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQzNDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBRWpDLElBQUksS0FBYSxDQUFDO0lBQ2xCLFFBQVEsS0FBSyxFQUFFO1FBQ2IsS0FBSyxRQUFRO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDaEMsS0FBSyxXQUFXO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDbkMsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsS0FBSyxvREFBb0Q7WUFDeEcscURBQXFELENBQUMsQ0FBQztLQUN4RDtJQUVELE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDNUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7S0FDMUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBR0QsS0FBSyxVQUFVLGtCQUFrQixDQUFDLEtBQW1DO0lBQ25FLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQzNDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ25DLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBRWpDLElBQUksS0FBYSxDQUFDO0lBQ2xCLFFBQVEsS0FBSyxFQUFFO1FBQ2IsS0FBSyxRQUFRO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDaEMsS0FBSyxXQUFXO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDbkMsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsS0FBSyxvREFBb0Q7WUFDeEcscURBQXFELENBQUMsQ0FBQztLQUN4RDtJQUVELE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDNUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7UUFDekMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7S0FDbEMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBRUQsS0FBSyxVQUFVLFNBQVMsQ0FBQyxLQUFnQixFQUFFLEtBQWEsRUFBRSxVQUFxQztJQUM3RixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO0lBQ3JELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO0lBQzNDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsMEVBQTBFLENBQUMsQ0FBQztLQUM3RjtJQUVELE1BQU0sS0FBSyxHQUFzQztRQUMvQyxTQUFTLEVBQUUsZUFBZTtRQUMxQixVQUFVLEVBQUU7WUFDVjtnQkFDRSxVQUFVLEVBQUUsVUFBVTtnQkFDdEIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osVUFBVSxFQUFFLFVBQVU7Z0JBQ3RCLFNBQVMsRUFBRSxJQUFJO2FBQ2hCO1NBQ0Y7S0FDRixDQUFDO0lBRUYsTUFBTSxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFM0UsTUFBTSxrQkFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuXG4vLyBQYXJ0aWFsIHR5cGUgZm9yIHRoZSAnZGV0YWlsJyBzZWN0aW9uIG9mIGFuIGV2ZW50IGZyb20gQW1hem9uIEV2ZW50QnJpZGdlIGZvciAnQ29kZVBpcGVsaW5lIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnXG4vLyBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2V2ZW50YnJpZGdlL2xhdGVzdC91c2VyZ3VpZGUvZXZlbnQtdHlwZXMuaHRtbCNjb2RlcGlwZWxpbmUtZXZlbnQtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRpb25TdGF0ZUNoYW5nZUV2ZW50IHtcbiAgcmVhZG9ubHkgcGlwZWxpbmU6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhdGU6ICdTVEFSVEVEJyB8ICdDQU5DRUxFRCcgfCAnRkFJTEVEJyB8ICdTVUNDRUVERUQnO1xufVxuXG4vLyBQYXJ0aWFsIHR5cGUgZm9yIHRoZSAnZGV0YWlsJyBzZWN0aW9uIG9mIGFuIGV2ZW50IGZyb20gQW1hem9uIEV2ZW50QnJpZGdlIGZvciAnQ29kZVBpcGVsaW5lIEFjdGlvbiBFeGVjdXRpb24gU3RhdGUgQ2hhbmdlJ1xuLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ldmVudGJyaWRnZS9sYXRlc3QvdXNlcmd1aWRlL2V2ZW50LXR5cGVzLmh0bWwjY29kZXBpcGVsaW5lLWV2ZW50LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uU3RhdGVDaGFuZ2VFdmVudCBleHRlbmRzIEV4ZWN1dGlvblN0YXRlQ2hhbmdlRXZlbnQge1xuICByZWFkb25seSBhY3Rpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgTGFtYmRhRXhlY3V0aW9uU3RhdGVDaGFuZ2VFdmVudCA9IEFXU0xhbWJkYS5FdmVudEJyaWRnZUV2ZW50PCdDb2RlUGlwZWxpbmUgUGlwZWxpbmUgRXhlY3V0aW9uIFN0YXRlIENoYW5nZScsIEV4ZWN1dGlvblN0YXRlQ2hhbmdlRXZlbnQ+O1xuZXhwb3J0IHR5cGUgTGFtYmRhQWN0aW9uU3RhdGVDaGFuZ2VFdmVudCA9IEFXU0xhbWJkYS5FdmVudEJyaWRnZUV2ZW50PCdDb2RlUGlwZWxpbmUgQWN0aW9uIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnLCBBY3Rpb25TdGF0ZUNoYW5nZUV2ZW50PjtcbmV4cG9ydCB0eXBlIEV2ZW50VHlwZSA9IExhbWJkYUV4ZWN1dGlvblN0YXRlQ2hhbmdlRXZlbnQgfCBMYW1iZGFBY3Rpb25TdGF0ZUNoYW5nZUV2ZW50O1xuXG4vLyBleHBvcnQgZm9yIHRlc3RzXG5leHBvcnQgY29uc3QgY2xvdWR3YXRjaCA9IG5ldyBBV1MuQ2xvdWRXYXRjaCgpO1xuY29uc3QgbG9nZ2VyID0ge1xuICBsb2c6IChsaW5lOiBzdHJpbmcpID0+IHByb2Nlc3Muc3Rkb3V0LndyaXRlKGxpbmUpLFxufTtcblxuLyoqXG4gKiBMYW1iZGEgZnVuY3Rpb24gdGhhdCByZWFjdHMgdG8gYW4gQW1hem9uIEV2ZW50QnJpZGdlIGV2ZW50IHRyaWdnZXJlZCBieSBhICdDb2RlUGlwZWxpbmUgQWN0aW9uIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnLlxuICogVGhlIGhhbmRsZXIgcmVhZHMgdGhlIGV2ZW50IGFuZCBzZW5kcyBvZmYgbWV0cmljcyB0byBDbG91ZFdhdGNoLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogRXZlbnRUeXBlKSB7XG4gIGxvZ2dlci5sb2coYFJlY2VpdmVkIGV2ZW50OiAke0pTT04uc3RyaW5naWZ5KGV2ZW50KX1gKTtcblxuICBzd2l0Y2ggKGV2ZW50WydkZXRhaWwtdHlwZSddKSB7XG4gICAgY2FzZSAnQ29kZVBpcGVsaW5lIFBpcGVsaW5lIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnOiBhd2FpdCBoYW5kbGVFeGVjdXRpb25DaGFuZ2UoZXZlbnQpOyBicmVhaztcbiAgICBjYXNlICdDb2RlUGlwZWxpbmUgQWN0aW9uIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnOiBhd2FpdCBoYW5kbGVBY3Rpb25DaGFuZ2UoZXZlbnQpOyBicmVhaztcbiAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCBkZXRhaWwgdHlwZSAke2V2ZW50WydkZXRhaWxsLXR5cGUnXX1gKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVFeGVjdXRpb25DaGFuZ2UoZXZlbnQ6IExhbWJkYUV4ZWN1dGlvblN0YXRlQ2hhbmdlRXZlbnQpIHtcbiAgY29uc3QgcGlwZWxpbmVOYW1lID0gZXZlbnQuZGV0YWlsLnBpcGVsaW5lO1xuICBjb25zdCBzdGF0ZSA9IGV2ZW50LmRldGFpbC5zdGF0ZTtcblxuICBsZXQgdmFsdWU6IG51bWJlcjtcbiAgc3dpdGNoIChzdGF0ZSkge1xuICAgIGNhc2UgJ0ZBSUxFRCc6IHZhbHVlID0gMTsgYnJlYWs7XG4gICAgY2FzZSAnU1VDQ0VFREVEJzogdmFsdWUgPSAwOyBicmVhaztcbiAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHN0YXRlOiAke3N0YXRlfS4gT25seSBGQUlMRUQgYW5kIFNVQ0NFRURFRCBzdGF0ZXMgYXJlIHN1cHBvcnRlZC4gYCArXG4gICAgJ090aGVycyBtdXN0IGJlIGZpbHRlcmVkIG91dCBwcmlvciB0byB0aGlzIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgYXdhaXQgcHV0TWV0cmljKGV2ZW50LCB2YWx1ZSwgW1xuICAgIHsgTmFtZTogJ1BpcGVsaW5lJywgVmFsdWU6IHBpcGVsaW5lTmFtZSB9LFxuICBdKTtcblxuICBsb2dnZXIubG9nKCdEb25lJyk7XG59XG5cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlQWN0aW9uQ2hhbmdlKGV2ZW50OiBMYW1iZGFBY3Rpb25TdGF0ZUNoYW5nZUV2ZW50KSB7XG4gIGNvbnN0IHBpcGVsaW5lTmFtZSA9IGV2ZW50LmRldGFpbC5waXBlbGluZTtcbiAgY29uc3QgYWN0aW9uID0gZXZlbnQuZGV0YWlsLmFjdGlvbjtcbiAgY29uc3Qgc3RhdGUgPSBldmVudC5kZXRhaWwuc3RhdGU7XG5cbiAgbGV0IHZhbHVlOiBudW1iZXI7XG4gIHN3aXRjaCAoc3RhdGUpIHtcbiAgICBjYXNlICdGQUlMRUQnOiB2YWx1ZSA9IDE7IGJyZWFrO1xuICAgIGNhc2UgJ1NVQ0NFRURFRCc6IHZhbHVlID0gMDsgYnJlYWs7XG4gICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBzdGF0ZTogJHtzdGF0ZX0uIE9ubHkgRkFJTEVEIGFuZCBTVUNDRUVERUQgc3RhdGVzIGFyZSBzdXBwb3J0ZWQuIGAgK1xuICAgICdPdGhlcnMgbXVzdCBiZSBmaWx0ZXJlZCBvdXQgcHJpb3IgdG8gdGhpcyBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIGF3YWl0IHB1dE1ldHJpYyhldmVudCwgdmFsdWUsIFtcbiAgICB7IE5hbWU6ICdQaXBlbGluZScsIFZhbHVlOiBwaXBlbGluZU5hbWUgfSxcbiAgICB7IE5hbWU6ICdBY3Rpb24nLCBWYWx1ZTogYWN0aW9uIH0sXG4gIF0pO1xuXG4gIGxvZ2dlci5sb2coJ0RvbmUnKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHV0TWV0cmljKGV2ZW50OiBFdmVudFR5cGUsIHZhbHVlOiBudW1iZXIsIGRpbWVuc2lvbnM6IEFXUy5DbG91ZFdhdGNoLkRpbWVuc2lvbnMpIHtcbiAgY29uc3QgbWV0cmljTmFtZXNwYWNlID0gcHJvY2Vzcy5lbnYuTUVUUklDX05BTUVTUEFDRTtcbiAgY29uc3QgbWV0cmljTmFtZSA9IHByb2Nlc3MuZW52Lk1FVFJJQ19OQU1FO1xuICBjb25zdCB0aW1lID0gbmV3IERhdGUoZXZlbnQudGltZSk7XG5cbiAgaWYgKCFtZXRyaWNOYW1lc3BhY2UgfHwgIW1ldHJpY05hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0JvdGggTUVUUklDX05BTUVTUEFDRSBhbmQgTUVUUklDX05BTUUgZW52aXJvbm1lbnQgdmFyaWFibGVzIG11c3QgYmUgc2V0LicpO1xuICB9XG5cbiAgY29uc3QgaW5wdXQ6IEFXUy5DbG91ZFdhdGNoLlB1dE1ldHJpY0RhdGFJbnB1dCA9IHtcbiAgICBOYW1lc3BhY2U6IG1ldHJpY05hbWVzcGFjZSxcbiAgICBNZXRyaWNEYXRhOiBbXG4gICAgICB7XG4gICAgICAgIE1ldHJpY05hbWU6IG1ldHJpY05hbWUsXG4gICAgICAgIFZhbHVlOiB2YWx1ZSxcbiAgICAgICAgRGltZW5zaW9uczogZGltZW5zaW9ucyxcbiAgICAgICAgVGltZXN0YW1wOiB0aW1lLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIGxvZ2dlci5sb2coYENhbGxpbmcgUHV0TWV0cmljRGF0YSB3aXRoIHBheWxvYWQ6ICR7SlNPTi5zdHJpbmdpZnkoaW5wdXQpfWApO1xuXG4gIGF3YWl0IGNsb3Vkd2F0Y2gucHV0TWV0cmljRGF0YShpbnB1dCkucHJvbWlzZSgpO1xufSJdfQ==