@ruvector/ruvllm 2.5.6 → 2.5.7

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 (67) hide show
  1. package/README.md +282 -282
  2. package/bin/cli.js +1020 -1020
  3. package/dist/cjs/benchmarks/embedding-benchmark.js +8 -8
  4. package/dist/cjs/benchmarks/index.js +5 -5
  5. package/dist/cjs/benchmarks/model-comparison.js +15 -25
  6. package/dist/cjs/benchmarks/routing-benchmark.js +5 -5
  7. package/dist/cjs/contrastive.js +78 -78
  8. package/dist/cjs/engine.js +13 -13
  9. package/dist/cjs/export.js +31 -31
  10. package/dist/cjs/federated.js +1 -1
  11. package/dist/cjs/index.js +1 -1
  12. package/dist/cjs/intelligence.js +8 -18
  13. package/dist/cjs/lora.js +1 -1
  14. package/dist/cjs/models.js +13 -23
  15. package/dist/cjs/native.js +5 -4
  16. package/dist/cjs/session.js +1 -1
  17. package/dist/cjs/simd.js +1 -1
  18. package/dist/cjs/sona.js +1 -1
  19. package/dist/cjs/streaming.d.ts +1 -0
  20. package/dist/cjs/streaming.d.ts.map +1 -1
  21. package/dist/cjs/streaming.js +3 -3
  22. package/dist/cjs/training.d.ts +32 -4
  23. package/dist/cjs/training.d.ts.map +1 -1
  24. package/dist/cjs/training.js +59 -9
  25. package/dist/cjs/types.js +1 -1
  26. package/dist/esm/benchmarks/embedding-benchmark.js +1 -1
  27. package/dist/esm/benchmarks/index.js +1 -1
  28. package/dist/esm/benchmarks/model-comparison.js +1 -1
  29. package/dist/esm/benchmarks/routing-benchmark.js +1 -1
  30. package/dist/esm/contrastive.js +70 -70
  31. package/dist/esm/engine.js +13 -13
  32. package/dist/esm/export.js +31 -31
  33. package/dist/esm/federated.js +1 -1
  34. package/dist/esm/index.js +1 -1
  35. package/dist/esm/intelligence.js +1 -1
  36. package/dist/esm/lora.js +1 -1
  37. package/dist/esm/models.js +1 -1
  38. package/dist/esm/native.js +1 -1
  39. package/dist/esm/session.js +1 -1
  40. package/dist/esm/simd.js +1 -1
  41. package/dist/esm/sona.js +1 -1
  42. package/dist/esm/streaming.d.ts +1 -0
  43. package/dist/esm/streaming.d.ts.map +1 -1
  44. package/dist/esm/streaming.js +1 -1
  45. package/dist/esm/training.d.ts +32 -4
  46. package/dist/esm/training.d.ts.map +1 -1
  47. package/dist/esm/training.js +59 -9
  48. package/dist/esm/types.js +1 -1
  49. package/package.json +133 -133
  50. package/scripts/ensemble-model-compare.js +287 -287
  51. package/scripts/huggingface/README.md +537 -537
  52. package/scripts/huggingface/publish.sh +112 -112
  53. package/scripts/hybrid-model-compare.js +373 -373
  54. package/scripts/improved-model-compare.js +288 -288
  55. package/scripts/optimized-model-compare.js +364 -364
  56. package/scripts/real-model-compare.js +280 -280
  57. package/scripts/training/agentic-flow-capabilities.json +329 -329
  58. package/scripts/training/claude-code-synth.js +505 -505
  59. package/scripts/training/claude-flow-capabilities.json +1322 -1322
  60. package/scripts/training/claude-hard-negatives.js +222 -222
  61. package/scripts/training/contrastive-finetune.js +517 -517
  62. package/scripts/training/ecosystem-triplets.jsonl +1466 -1466
  63. package/scripts/training/generate-ecosystem-triplets.js +1324 -1324
  64. package/scripts/training/routing-dataset.js +634 -634
  65. package/scripts/training/ruvector-capabilities.json +798 -798
  66. package/scripts/training/validate-ecosystem.js +381 -381
  67. package/scripts/training/validation-results.json +22 -22
package/dist/esm/lora.js CHANGED
@@ -486,4 +486,4 @@ export class LoraManager {
486
486
  this.activeAdapterId = null;
487
487
  }
488
488
  }
489
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9yYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb3JhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUlIOztHQUVHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBeUI7SUFDaEQsSUFBSSxFQUFFLENBQUM7SUFDUCxLQUFLLEVBQUUsRUFBRTtJQUNULE9BQU8sRUFBRSxHQUFHO0lBQ1osYUFBYSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztDQUNsQyxDQUFDO0FBOEJGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQVF0QixZQUFZLE1BQTRCLEVBQUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxTQUFTLEdBQUcsR0FBRztRQUhqRSxrQkFBYSxHQUE2QixJQUFJLENBQUM7UUFDL0MsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUc5QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxtQkFBbUIsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTNCLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxLQUFlO1FBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFFckMsbURBQW1EO1FB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T0FFRztJQUNILEtBQUs7UUFNSCxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRXBCLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzdDLFdBQVcsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFFRCxPQUFPO1lBQ0wsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUNqQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDbkMsZUFBZSxFQUFFLFdBQVc7WUFDNUIsV0FBVztTQUNaLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogTG9SQSAoTG93LVJhbmsgQWRhcHRhdGlvbikgUnVudGltZVxyXG4gKlxyXG4gKiBFZmZpY2llbnQgcGFyYW1ldGVyLWVmZmljaWVudCBmaW5lLXR1bmluZyBhZGFwdGVycyBmb3IgTExNcy5cclxuICogU3VwcG9ydHMgbWljcm8tTG9SQSAoZmFzdCwgc21hbGwgdXBkYXRlcykgYW5kIGJhc2UtTG9SQSAoZGVlcGVyIGFkYXB0YXRpb24pLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGltcG9ydCB7IExvcmFBZGFwdGVyLCBMb3JhTWFuYWdlciB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xyXG4gKlxyXG4gKiAvLyBDcmVhdGUgYWRhcHRlclxyXG4gKiBjb25zdCBhZGFwdGVyID0gbmV3IExvcmFBZGFwdGVyKHtcclxuICogICByYW5rOiA4LFxyXG4gKiAgIGFscGhhOiAxNixcclxuICogICBkcm9wb3V0OiAwLjEsXHJcbiAqICAgdGFyZ2V0TW9kdWxlczogWydxdWVyeScsICd2YWx1ZSddLFxyXG4gKiB9KTtcclxuICpcclxuICogLy8gQXBwbHkgdG8gaGlkZGVuIHN0YXRlc1xyXG4gKiBjb25zdCBvdXRwdXQgPSBhZGFwdGVyLmZvcndhcmQoaGlkZGVuU3RhdGVzKTtcclxuICpcclxuICogLy8gTWFuYWdlIG11bHRpcGxlIGFkYXB0ZXJzXHJcbiAqIGNvbnN0IG1hbmFnZXIgPSBuZXcgTG9yYU1hbmFnZXIoKTtcclxuICogbWFuYWdlci5yZWdpc3RlcigndGFzay0xJywgYWRhcHRlcik7XHJcbiAqIG1hbmFnZXIuYWN0aXZhdGUoJ3Rhc2stMScpO1xyXG4gKiBgYGBcclxuICovXHJcblxyXG5pbXBvcnQgeyBMb1JBQ29uZmlnLCBFbWJlZGRpbmcgfSBmcm9tICcuL3R5cGVzJztcclxuXHJcbi8qKlxyXG4gKiBEZWZhdWx0IExvUkEgY29uZmlndXJhdGlvblxyXG4gKi9cclxuY29uc3QgREVGQVVMVF9MT1JBX0NPTkZJRzogUmVxdWlyZWQ8TG9SQUNvbmZpZz4gPSB7XHJcbiAgcmFuazogOCxcclxuICBhbHBoYTogMTYsXHJcbiAgZHJvcG91dDogMC4xLFxyXG4gIHRhcmdldE1vZHVsZXM6IFsncXVlcnknLCAndmFsdWUnXSxcclxufTtcclxuXHJcbi8qKlxyXG4gKiBMb1JBIGFkYXB0ZXIgd2VpZ2h0c1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBMb3JhV2VpZ2h0cyB7XHJcbiAgLyoqIERvd24gcHJvamVjdGlvbiBtYXRyaXggKGQgeCByKSAqL1xyXG4gIGxvcmFBOiBudW1iZXJbXVtdO1xyXG4gIC8qKiBVcCBwcm9qZWN0aW9uIG1hdHJpeCAociB4IGQpICovXHJcbiAgbG9yYUI6IG51bWJlcltdW107XHJcbiAgLyoqIFNjYWxpbmcgZmFjdG9yICovXHJcbiAgc2NhbGluZzogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogTG9SQSB0cmFpbmluZyBzdGF0ZVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBMb3JhVHJhaW5pbmdTdGF0ZSB7XHJcbiAgLyoqIEN1cnJlbnQgc3RlcCAqL1xyXG4gIHN0ZXA6IG51bWJlcjtcclxuICAvKiogTGVhcm5pbmcgcmF0ZSAqL1xyXG4gIGxlYXJuaW5nUmF0ZTogbnVtYmVyO1xyXG4gIC8qKiBBY2N1bXVsYXRlZCBncmFkaWVudHMgZm9yIEEgKi9cclxuICBncmFkQTogbnVtYmVyW11bXTtcclxuICAvKiogQWNjdW11bGF0ZWQgZ3JhZGllbnRzIGZvciBCICovXHJcbiAgZ3JhZEI6IG51bWJlcltdW107XHJcbiAgLyoqIExvc3MgaGlzdG9yeSAqL1xyXG4gIGxvc3NIaXN0b3J5OiBudW1iZXJbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIExvUkEgQWRhcHRlclxyXG4gKlxyXG4gKiBJbXBsZW1lbnRzIGxvdy1yYW5rIGRlY29tcG9zaXRpb24gZm9yIHBhcmFtZXRlci1lZmZpY2llbnQgZmluZS10dW5pbmcuXHJcbiAqIFcnID0gVyArIEJBIHdoZXJlIEEgaXMgKGQgeCByKSBhbmQgQiBpcyAociB4IGQpLCByIDw8IGRcclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBhZGFwdGVyID0gbmV3IExvcmFBZGFwdGVyKHtcclxuICogICByYW5rOiA4LFxyXG4gKiAgIGFscGhhOiAxNixcclxuICogICBpbnB1dERpbTogNzY4LFxyXG4gKiAgIG91dHB1dERpbTogNzY4LFxyXG4gKiB9KTtcclxuICpcclxuICogLy8gRm9yd2FyZCBwYXNzXHJcbiAqIGNvbnN0IG91dHB1dCA9IGFkYXB0ZXIuZm9yd2FyZChpbnB1dCk7XHJcbiAqXHJcbiAqIC8vIFRyYWluaW5nIHN0ZXBcclxuICogYWRhcHRlci5iYWNrd2FyZChpbnB1dCwgZ3JhZE91dHB1dCwgMC4wMDEpO1xyXG4gKiBgYGBcclxuICovXHJcbmV4cG9ydCBjbGFzcyBMb3JhQWRhcHRlciB7XHJcbiAgcHJpdmF0ZSBjb25maWc6IFJlcXVpcmVkPExvUkFDb25maWc+O1xyXG4gIHByaXZhdGUgaW5wdXREaW06IG51bWJlcjtcclxuICBwcml2YXRlIG91dHB1dERpbTogbnVtYmVyO1xyXG4gIHByaXZhdGUgd2VpZ2h0czogTG9yYVdlaWdodHM7XHJcbiAgcHJpdmF0ZSB0cmFpbmluZ1N0YXRlOiBMb3JhVHJhaW5pbmdTdGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgZnJvemVuOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IFBhcnRpYWw8TG9SQUNvbmZpZz4sIGlucHV0RGltID0gMjU2LCBvdXRwdXREaW0gPSAyNTYpIHtcclxuICAgIHRoaXMuY29uZmlnID0geyAuLi5ERUZBVUxUX0xPUkFfQ09ORklHLCAuLi5jb25maWcgfTtcclxuICAgIHRoaXMuaW5wdXREaW0gPSBpbnB1dERpbTtcclxuICAgIHRoaXMub3V0cHV0RGltID0gb3V0cHV0RGltO1xyXG5cclxuICAgIC8vIEluaXRpYWxpemUgd2VpZ2h0c1xyXG4gICAgdGhpcy53ZWlnaHRzID0gdGhpcy5pbml0aWFsaXplV2VpZ2h0cygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9yd2FyZCBwYXNzIHRocm91Z2ggTG9SQSBhZGFwdGVyXHJcbiAgICogT1BUSU1JWkVEOiBVc2VzIEZsb2F0NjRBcnJheSBhbmQgbG9vcCB1bnJvbGxpbmdcclxuICAgKlxyXG4gICAqIG91dHB1dCA9IGlucHV0ICsgc2NhbGluZyAqIChpbnB1dCBAIEEgQCBCKVxyXG4gICAqL1xyXG4gIGZvcndhcmQoaW5wdXQ6IG51bWJlcltdKTogbnVtYmVyW10ge1xyXG4gICAgY29uc3QgcmFuayA9IHRoaXMuY29uZmlnLnJhbms7XHJcbiAgICBjb25zdCBkaW0gPSBNYXRoLm1pbihpbnB1dC5sZW5ndGgsIHRoaXMuaW5wdXREaW0pO1xyXG4gICAgY29uc3Qgc2NhbGluZyA9IHRoaXMud2VpZ2h0cy5zY2FsaW5nO1xyXG5cclxuICAgIC8vIEFwcGx5IGRyb3BvdXQgZHVyaW5nIHRyYWluaW5nIChzaW1wbGlmaWVkIGNoZWNrKVxyXG4gICAgY29uc3QgYXBwbHlEcm9wb3V0ID0gdGhpcy50cmFpbmluZ1N0YXRlICE9PSBudWxsICYmIHRoaXMuY29uZmlnLmRyb3BvdXQgPiAwO1xyXG5cclxuICAgIC8vIGlucHV0IEAgQSAoZCAtPiByKSAtIHVzZSB0eXBlZCBhcnJheSBmb3IgaGlkZGVuXHJcbiAgICBjb25zdCBoaWRkZW4gPSBuZXcgRmxvYXQ2NEFycmF5KHJhbmspO1xyXG4gICAgZm9yIChsZXQgciA9IDA7IHIgPCByYW5rOyByKyspIHtcclxuICAgICAgbGV0IHN1bSA9IDA7XHJcbiAgICAgIGNvbnN0IGxvcmFBQ29sID0gdGhpcy53ZWlnaHRzLmxvcmFBO1xyXG4gICAgICAvLyBVbnJvbGwgbG9vcCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlXHJcbiAgICAgIGxldCBpID0gMDtcclxuICAgICAgaWYgKGFwcGx5RHJvcG91dCkge1xyXG4gICAgICAgIGZvciAoOyBpIDwgZGltOyBpKyspIHtcclxuICAgICAgICAgIGlmIChNYXRoLnJhbmRvbSgpID4gdGhpcy5jb25maWcuZHJvcG91dCkge1xyXG4gICAgICAgICAgICBzdW0gKz0gaW5wdXRbaV0gKiBsb3JhQUNvbFtpXVtyXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yICg7IGkgKyAzIDwgZGltOyBpICs9IDQpIHtcclxuICAgICAgICAgIHN1bSArPSBpbnB1dFtpXSAqIGxvcmFBQ29sW2ldW3JdICtcclxuICAgICAgICAgICAgICAgICBpbnB1dFtpICsgMV0gKiBsb3JhQUNvbFtpICsgMV1bcl0gK1xyXG4gICAgICAgICAgICAgICAgIGlucHV0W2kgKyAyXSAqIGxvcmFBQ29sW2kgKyAyXVtyXSArXHJcbiAgICAgICAgICAgICAgICAgaW5wdXRbaSArIDNdICogbG9yYUFDb2xbaSArIDNdW3JdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKDsgaSA8IGRpbTsgaSsrKSB7XHJcbiAgICAgICAgICBzdW0gKz0gaW5wdXRbaV0gKiBsb3JhQUNvbFtpXVtyXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaGlkZGVuW3JdID0gc3VtO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGhpZGRlbiBAIEIgKHIgLT4gZCkgKyByZXNpZHVhbFxyXG4gICAgY29uc3Qgb3V0cHV0ID0gbmV3IEFycmF5KHRoaXMub3V0cHV0RGltKTtcclxuICAgIGNvbnN0IGxvcmFCID0gdGhpcy53ZWlnaHRzLmxvcmFCO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm91dHB1dERpbTsgaSsrKSB7XHJcbiAgICAgIGxldCBkZWx0YSA9IDA7XHJcbiAgICAgIGZvciAobGV0IHIgPSAwOyByIDwgcmFuazsgcisrKSB7XHJcbiAgICAgICAgZGVsdGEgKz0gaGlkZGVuW3JdICogbG9yYUJbcl1baV07XHJcbiAgICAgIH1cclxuICAgICAgLy8gQWRkIHNjYWxlZCBkZWx0YSB0byBpbnB1dCAocmVzaWR1YWwgY29ubmVjdGlvbilcclxuICAgICAgb3V0cHV0W2ldID0gKGlucHV0W2ldIHx8IDApICsgc2NhbGluZyAqIGRlbHRhO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvdXRwdXQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGb3J3YXJkIHdpdGggYmF0Y2ggcHJvY2Vzc2luZ1xyXG4gICAqL1xyXG4gIGZvcndhcmRCYXRjaChpbnB1dHM6IG51bWJlcltdW10pOiBudW1iZXJbXVtdIHtcclxuICAgIHJldHVybiBpbnB1dHMubWFwKGlucHV0ID0+IHRoaXMuZm9yd2FyZChpbnB1dCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmFja3dhcmQgcGFzcyBhbmQgd2VpZ2h0IHVwZGF0ZVxyXG4gICAqL1xyXG4gIGJhY2t3YXJkKGlucHV0OiBudW1iZXJbXSwgZ3JhZE91dHB1dDogbnVtYmVyW10sIGxlYXJuaW5nUmF0ZTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGlmICh0aGlzLmZyb3plbikgcmV0dXJuIDA7XHJcblxyXG4gICAgY29uc3QgcmFuayA9IHRoaXMuY29uZmlnLnJhbms7XHJcbiAgICBjb25zdCBkaW0gPSBNYXRoLm1pbihpbnB1dC5sZW5ndGgsIHRoaXMuaW5wdXREaW0pO1xyXG5cclxuICAgIC8vIENvbXB1dGUgaGlkZGVuIGFjdGl2YXRpb25zIChmb3IgZ3JhZGllbnQpXHJcbiAgICBjb25zdCBoaWRkZW4gPSBuZXcgQXJyYXkocmFuaykuZmlsbCgwKTtcclxuICAgIGZvciAobGV0IHIgPSAwOyByIDwgcmFuazsgcisrKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltOyBpKyspIHtcclxuICAgICAgICBoaWRkZW5bcl0gKz0gaW5wdXRbaV0gKiB0aGlzLndlaWdodHMubG9yYUFbaV1bcl07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBHcmFkaWVudCBmb3IgQjogaGlkZGVuXlQgQCBncmFkT3V0cHV0XHJcbiAgICBjb25zdCBncmFkQjogbnVtYmVyW11bXSA9IEFycmF5KHJhbmspLmZpbGwobnVsbCkubWFwKCgpID0+IEFycmF5KHRoaXMub3V0cHV0RGltKS5maWxsKDApKTtcclxuICAgIGZvciAobGV0IHIgPSAwOyByIDwgcmFuazsgcisrKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vdXRwdXREaW07IGkrKykge1xyXG4gICAgICAgIGdyYWRCW3JdW2ldID0gaGlkZGVuW3JdICogKGdyYWRPdXRwdXRbaV0gfHwgMCkgKiB0aGlzLndlaWdodHMuc2NhbGluZztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEdyYWRpZW50IGZvciBoaWRkZW46IGdyYWRPdXRwdXQgQCBCXlRcclxuICAgIGNvbnN0IGdyYWRIaWRkZW4gPSBuZXcgQXJyYXkocmFuaykuZmlsbCgwKTtcclxuICAgIGZvciAobGV0IHIgPSAwOyByIDwgcmFuazsgcisrKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vdXRwdXREaW07IGkrKykge1xyXG4gICAgICAgIGdyYWRIaWRkZW5bcl0gKz0gKGdyYWRPdXRwdXRbaV0gfHwgMCkgKiB0aGlzLndlaWdodHMubG9yYUJbcl1baV0gKiB0aGlzLndlaWdodHMuc2NhbGluZztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEdyYWRpZW50IGZvciBBOiBpbnB1dF5UIEAgZ3JhZEhpZGRlblxyXG4gICAgY29uc3QgZ3JhZEE6IG51bWJlcltdW10gPSBBcnJheShkaW0pLmZpbGwobnVsbCkubWFwKCgpID0+IEFycmF5KHJhbmspLmZpbGwoMCkpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW07IGkrKykge1xyXG4gICAgICBmb3IgKGxldCByID0gMDsgciA8IHJhbms7IHIrKykge1xyXG4gICAgICAgIGdyYWRBW2ldW3JdID0gaW5wdXRbaV0gKiBncmFkSGlkZGVuW3JdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVXBkYXRlIHdlaWdodHNcclxuICAgIGxldCB0b3RhbEdyYWQgPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW07IGkrKykge1xyXG4gICAgICBmb3IgKGxldCByID0gMDsgciA8IHJhbms7IHIrKykge1xyXG4gICAgICAgIHRoaXMud2VpZ2h0cy5sb3JhQVtpXVtyXSAtPSBsZWFybmluZ1JhdGUgKiBncmFkQVtpXVtyXTtcclxuICAgICAgICB0b3RhbEdyYWQgKz0gTWF0aC5hYnMoZ3JhZEFbaV1bcl0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCByID0gMDsgciA8IHJhbms7IHIrKykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3V0cHV0RGltOyBpKyspIHtcclxuICAgICAgICB0aGlzLndlaWdodHMubG9yYUJbcl1baV0gLT0gbGVhcm5pbmdSYXRlICogZ3JhZEJbcl1baV07XHJcbiAgICAgICAgdG90YWxHcmFkICs9IE1hdGguYWJzKGdyYWRCW3JdW2ldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFRyYWNrIHRyYWluaW5nIHN0YXRlXHJcbiAgICBpZiAodGhpcy50cmFpbmluZ1N0YXRlKSB7XHJcbiAgICAgIHRoaXMudHJhaW5pbmdTdGF0ZS5zdGVwKys7XHJcbiAgICAgIHRoaXMudHJhaW5pbmdTdGF0ZS5sb3NzSGlzdG9yeS5wdXNoKHRvdGFsR3JhZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRvdGFsR3JhZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXJ0IHRyYWluaW5nIG1vZGVcclxuICAgKi9cclxuICBzdGFydFRyYWluaW5nKGxlYXJuaW5nUmF0ZSA9IDAuMDAxKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYWluaW5nU3RhdGUgPSB7XHJcbiAgICAgIHN0ZXA6IDAsXHJcbiAgICAgIGxlYXJuaW5nUmF0ZSxcclxuICAgICAgZ3JhZEE6IEFycmF5KHRoaXMuaW5wdXREaW0pLmZpbGwobnVsbCkubWFwKCgpID0+IEFycmF5KHRoaXMuY29uZmlnLnJhbmspLmZpbGwoMCkpLFxyXG4gICAgICBncmFkQjogQXJyYXkodGhpcy5jb25maWcucmFuaykuZmlsbChudWxsKS5tYXAoKCkgPT4gQXJyYXkodGhpcy5vdXRwdXREaW0pLmZpbGwoMCkpLFxyXG4gICAgICBsb3NzSGlzdG9yeTogW10sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW5kIHRyYWluaW5nIG1vZGVcclxuICAgKi9cclxuICBlbmRUcmFpbmluZygpOiBMb3JhVHJhaW5pbmdTdGF0ZSB8IG51bGwge1xyXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnRyYWluaW5nU3RhdGU7XHJcbiAgICB0aGlzLnRyYWluaW5nU3RhdGUgPSBudWxsO1xyXG4gICAgcmV0dXJuIHN0YXRlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRnJlZXplIGFkYXB0ZXIgKG5vIG1vcmUgdXBkYXRlcylcclxuICAgKi9cclxuICBmcmVlemUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZyb3plbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVbmZyZWV6ZSBhZGFwdGVyXHJcbiAgICovXHJcbiAgdW5mcmVlemUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZyb3plbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgZnJvemVuXHJcbiAgICovXHJcbiAgaXNGcm96ZW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5mcm96ZW47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYWRhcHRlciBjb25maWdcclxuICAgKi9cclxuICBnZXRDb25maWcoKTogUmVxdWlyZWQ8TG9SQUNvbmZpZz4ge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5jb25maWcgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhZGFwdGVyIHdlaWdodHNcclxuICAgKi9cclxuICBnZXRXZWlnaHRzKCk6IExvcmFXZWlnaHRzIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxvcmFBOiB0aGlzLndlaWdodHMubG9yYUEubWFwKHJvdyA9PiBbLi4ucm93XSksXHJcbiAgICAgIGxvcmFCOiB0aGlzLndlaWdodHMubG9yYUIubWFwKHJvdyA9PiBbLi4ucm93XSksXHJcbiAgICAgIHNjYWxpbmc6IHRoaXMud2VpZ2h0cy5zY2FsaW5nLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBhZGFwdGVyIHdlaWdodHNcclxuICAgKi9cclxuICBzZXRXZWlnaHRzKHdlaWdodHM6IExvcmFXZWlnaHRzKTogdm9pZCB7XHJcbiAgICB0aGlzLndlaWdodHMgPSB7XHJcbiAgICAgIGxvcmFBOiB3ZWlnaHRzLmxvcmFBLm1hcChyb3cgPT4gWy4uLnJvd10pLFxyXG4gICAgICBsb3JhQjogd2VpZ2h0cy5sb3JhQi5tYXAocm93ID0+IFsuLi5yb3ddKSxcclxuICAgICAgc2NhbGluZzogd2VpZ2h0cy5zY2FsaW5nLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1lcmdlIGFkYXB0ZXIgaW50byBiYXNlIHdlaWdodHNcclxuICAgKlxyXG4gICAqIFJldHVybnMgZGVsdGEgdG8gYWRkIHRvIGJhc2UgbW9kZWwgd2VpZ2h0c1xyXG4gICAqL1xyXG4gIG1lcmdlKCk6IG51bWJlcltdW10ge1xyXG4gICAgY29uc3QgZGVsdGE6IG51bWJlcltdW10gPSBBcnJheSh0aGlzLmlucHV0RGltKVxyXG4gICAgICAuZmlsbChudWxsKVxyXG4gICAgICAubWFwKCgpID0+IEFycmF5KHRoaXMub3V0cHV0RGltKS5maWxsKDApKTtcclxuXHJcbiAgICBjb25zdCByYW5rID0gdGhpcy5jb25maWcucmFuaztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pbnB1dERpbTsgaSsrKSB7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5vdXRwdXREaW07IGorKykge1xyXG4gICAgICAgIGZvciAobGV0IHIgPSAwOyByIDwgcmFuazsgcisrKSB7XHJcbiAgICAgICAgICBkZWx0YVtpXVtqXSArPSB0aGlzLndlaWdodHMubG9yYUFbaV1bcl0gKiB0aGlzLndlaWdodHMubG9yYUJbcl1bal07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlbHRhW2ldW2pdICo9IHRoaXMud2VpZ2h0cy5zY2FsaW5nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRlbHRhO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IG51bWJlciBvZiB0cmFpbmFibGUgcGFyYW1ldGVyc1xyXG4gICAqL1xyXG4gIG51bVBhcmFtZXRlcnMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAodGhpcy5pbnB1dERpbSAqIHRoaXMuY29uZmlnLnJhbmspICsgKHRoaXMuY29uZmlnLnJhbmsgKiB0aGlzLm91dHB1dERpbSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCB0byBpbml0aWFsIHdlaWdodHNcclxuICAgKi9cclxuICByZXNldCgpOiB2b2lkIHtcclxuICAgIHRoaXMud2VpZ2h0cyA9IHRoaXMuaW5pdGlhbGl6ZVdlaWdodHMoKTtcclxuICAgIHRoaXMudHJhaW5pbmdTdGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLmZyb3plbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvbmUgYWRhcHRlclxyXG4gICAqL1xyXG4gIGNsb25lKCk6IExvcmFBZGFwdGVyIHtcclxuICAgIGNvbnN0IGFkYXB0ZXIgPSBuZXcgTG9yYUFkYXB0ZXIodGhpcy5jb25maWcsIHRoaXMuaW5wdXREaW0sIHRoaXMub3V0cHV0RGltKTtcclxuICAgIGFkYXB0ZXIuc2V0V2VpZ2h0cyh0aGlzLmdldFdlaWdodHMoKSk7XHJcbiAgICByZXR1cm4gYWRhcHRlcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlcmlhbGl6ZSB0byBKU09OXHJcbiAgICovXHJcbiAgdG9KU09OKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxyXG4gICAgICBpbnB1dERpbTogdGhpcy5pbnB1dERpbSxcclxuICAgICAgb3V0cHV0RGltOiB0aGlzLm91dHB1dERpbSxcclxuICAgICAgd2VpZ2h0czogdGhpcy53ZWlnaHRzLFxyXG4gICAgICBmcm96ZW46IHRoaXMuZnJvemVuLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXNlcmlhbGl6ZSBmcm9tIEpTT05cclxuICAgKi9cclxuICBzdGF0aWMgZnJvbUpTT04oanNvbjogc3RyaW5nKTogTG9yYUFkYXB0ZXIge1xyXG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoanNvbik7XHJcbiAgICBjb25zdCBhZGFwdGVyID0gbmV3IExvcmFBZGFwdGVyKGRhdGEuY29uZmlnLCBkYXRhLmlucHV0RGltLCBkYXRhLm91dHB1dERpbSk7XHJcbiAgICBhZGFwdGVyLnNldFdlaWdodHMoZGF0YS53ZWlnaHRzKTtcclxuICAgIGlmIChkYXRhLmZyb3plbikgYWRhcHRlci5mcmVlemUoKTtcclxuICAgIHJldHVybiBhZGFwdGVyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplV2VpZ2h0cygpOiBMb3JhV2VpZ2h0cyB7XHJcbiAgICBjb25zdCByYW5rID0gdGhpcy5jb25maWcucmFuaztcclxuXHJcbiAgICAvLyBLYWltaW5nIGluaXRpYWxpemF0aW9uIGZvciBBLCB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciBCXHJcbiAgICBjb25zdCBsb3JhQTogbnVtYmVyW11bXSA9IEFycmF5KHRoaXMuaW5wdXREaW0pXHJcbiAgICAgIC5maWxsKG51bGwpXHJcbiAgICAgIC5tYXAoKCkgPT5cclxuICAgICAgICBBcnJheShyYW5rKVxyXG4gICAgICAgICAgLmZpbGwoMClcclxuICAgICAgICAgIC5tYXAoKCkgPT4gKE1hdGgucmFuZG9tKCkgLSAwLjUpICogTWF0aC5zcXJ0KDIgLyB0aGlzLmlucHV0RGltKSlcclxuICAgICAgKTtcclxuXHJcbiAgICBjb25zdCBsb3JhQjogbnVtYmVyW11bXSA9IEFycmF5KHJhbmspXHJcbiAgICAgIC5maWxsKG51bGwpXHJcbiAgICAgIC5tYXAoKCkgPT4gQXJyYXkodGhpcy5vdXRwdXREaW0pLmZpbGwoMCkpO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxvcmFBLFxyXG4gICAgICBsb3JhQixcclxuICAgICAgc2NhbGluZzogdGhpcy5jb25maWcuYWxwaGEgLyB0aGlzLmNvbmZpZy5yYW5rLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBMb1JBIE1hbmFnZXIgZm9yIG11bHRpcGxlIGFkYXB0ZXJzXHJcbiAqXHJcbiAqIE1hbmFnZXMgYSBjb2xsZWN0aW9uIG9mIExvUkEgYWRhcHRlcnMgZm9yIGRpZmZlcmVudCB0YXNrcy9kb21haW5zLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIExvcmFNYW5hZ2VyIHtcclxuICBwcml2YXRlIGFkYXB0ZXJzOiBNYXA8c3RyaW5nLCBMb3JhQWRhcHRlcj4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSBhY3RpdmVBZGFwdGVySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgZGVmYXVsdENvbmZpZzogUmVxdWlyZWQ8TG9SQUNvbmZpZz47XHJcblxyXG4gIGNvbnN0cnVjdG9yKGRlZmF1bHRDb25maWc/OiBQYXJ0aWFsPExvUkFDb25maWc+KSB7XHJcbiAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7IC4uLkRFRkFVTFRfTE9SQV9DT05GSUcsIC4uLmRlZmF1bHRDb25maWcgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdGVyIGEgbmV3IGFkYXB0ZXJcclxuICAgKi9cclxuICByZWdpc3RlcihpZDogc3RyaW5nLCBhZGFwdGVyOiBMb3JhQWRhcHRlcik6IHZvaWQge1xyXG4gICAgdGhpcy5hZGFwdGVycy5zZXQoaWQsIGFkYXB0ZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGFuZCByZWdpc3RlciBhIG5ldyBhZGFwdGVyXHJcbiAgICovXHJcbiAgY3JlYXRlKGlkOiBzdHJpbmcsIGNvbmZpZz86IFBhcnRpYWw8TG9SQUNvbmZpZz4sIGlucHV0RGltPzogbnVtYmVyLCBvdXRwdXREaW0/OiBudW1iZXIpOiBMb3JhQWRhcHRlciB7XHJcbiAgICBjb25zdCBtZXJnZWRDb25maWcgPSB7IC4uLnRoaXMuZGVmYXVsdENvbmZpZywgLi4uY29uZmlnIH07XHJcbiAgICBjb25zdCBhZGFwdGVyID0gbmV3IExvcmFBZGFwdGVyKG1lcmdlZENvbmZpZywgaW5wdXREaW0sIG91dHB1dERpbSk7XHJcbiAgICB0aGlzLnJlZ2lzdGVyKGlkLCBhZGFwdGVyKTtcclxuICAgIHJldHVybiBhZGFwdGVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFkYXB0ZXIgYnkgSURcclxuICAgKi9cclxuICBnZXQoaWQ6IHN0cmluZyk6IExvcmFBZGFwdGVyIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXJzLmdldChpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgYWRhcHRlclxyXG4gICAqL1xyXG4gIHJlbW92ZShpZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVBZGFwdGVySWQgPT09IGlkKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlQWRhcHRlcklkID0gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXJzLmRlbGV0ZShpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBY3RpdmF0ZSBhbiBhZGFwdGVyXHJcbiAgICovXHJcbiAgYWN0aXZhdGUoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuYWRhcHRlcnMuaGFzKGlkKSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZUFkYXB0ZXJJZCA9IGlkO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlYWN0aXZhdGUgY3VycmVudCBhZGFwdGVyXHJcbiAgICovXHJcbiAgZGVhY3RpdmF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlQWRhcHRlcklkID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhY3RpdmUgYWRhcHRlclxyXG4gICAqL1xyXG4gIGdldEFjdGl2ZSgpOiBMb3JhQWRhcHRlciB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlQWRhcHRlcklkID8gdGhpcy5hZGFwdGVycy5nZXQodGhpcy5hY3RpdmVBZGFwdGVySWQpIHx8IG51bGwgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFjdGl2ZSBhZGFwdGVyIElEXHJcbiAgICovXHJcbiAgZ2V0QWN0aXZlSWQoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVBZGFwdGVySWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSBhY3RpdmUgYWRhcHRlclxyXG4gICAqL1xyXG4gIGZvcndhcmQoaW5wdXQ6IG51bWJlcltdKTogbnVtYmVyW10ge1xyXG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcclxuICAgIHJldHVybiBhY3RpdmUgPyBhY3RpdmUuZm9yd2FyZChpbnB1dCkgOiBbLi4uaW5wdXRdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdCBhbGwgYWRhcHRlciBJRHNcclxuICAgKi9cclxuICBsaXN0KCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuYWRhcHRlcnMua2V5cygpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhZGFwdGVyIGNvdW50XHJcbiAgICovXHJcbiAgY291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXJzLnNpemU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGcmVlemUgYWxsIGFkYXB0ZXJzXHJcbiAgICovXHJcbiAgZnJlZXplQWxsKCk6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBhZGFwdGVyIG9mIHRoaXMuYWRhcHRlcnMudmFsdWVzKCkpIHtcclxuICAgICAgYWRhcHRlci5mcmVlemUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVuZnJlZXplIGFsbCBhZGFwdGVyc1xyXG4gICAqL1xyXG4gIHVuZnJlZXplQWxsKCk6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBhZGFwdGVyIG9mIHRoaXMuYWRhcHRlcnMudmFsdWVzKCkpIHtcclxuICAgICAgYWRhcHRlci51bmZyZWV6ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWVyZ2UgbXVsdGlwbGUgYWRhcHRlcnMgaW50byBvbmVcclxuICAgKi9cclxuICBtZXJnZUFkYXB0ZXJzKGlkczogc3RyaW5nW10sIG91dHB1dElkOiBzdHJpbmcpOiBMb3JhQWRhcHRlciB8IG51bGwge1xyXG4gICAgY29uc3QgYWRhcHRlcnMgPSBpZHMubWFwKGlkID0+IHRoaXMuYWRhcHRlcnMuZ2V0KGlkKSkuZmlsdGVyKEJvb2xlYW4pIGFzIExvcmFBZGFwdGVyW107XHJcbiAgICBpZiAoYWRhcHRlcnMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAvLyBVc2UgZmlyc3QgYWRhcHRlciBhcyBiYXNlXHJcbiAgICBjb25zdCBtZXJnZWQgPSBhZGFwdGVyc1swXS5jbG9uZSgpO1xyXG4gICAgY29uc3Qgd2VpZ2h0cyA9IG1lcmdlZC5nZXRXZWlnaHRzKCk7XHJcblxyXG4gICAgLy8gQXZlcmFnZSB3ZWlnaHRzIGZyb20gb3RoZXIgYWRhcHRlcnNcclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgYWRhcHRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qgb3RoZXJXZWlnaHRzID0gYWRhcHRlcnNbaV0uZ2V0V2VpZ2h0cygpO1xyXG5cclxuICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgd2VpZ2h0cy5sb3JhQS5sZW5ndGggJiYgcm93IDwgb3RoZXJXZWlnaHRzLmxvcmFBLmxlbmd0aDsgcm93KyspIHtcclxuICAgICAgICBmb3IgKGxldCBjb2wgPSAwOyBjb2wgPCB3ZWlnaHRzLmxvcmFBW3Jvd10ubGVuZ3RoICYmIGNvbCA8IG90aGVyV2VpZ2h0cy5sb3JhQVtyb3ddLmxlbmd0aDsgY29sKyspIHtcclxuICAgICAgICAgIHdlaWdodHMubG9yYUFbcm93XVtjb2xdID0gKHdlaWdodHMubG9yYUFbcm93XVtjb2xdICsgb3RoZXJXZWlnaHRzLmxvcmFBW3Jvd11bY29sXSkgLyAyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB3ZWlnaHRzLmxvcmFCLmxlbmd0aCAmJiByb3cgPCBvdGhlcldlaWdodHMubG9yYUIubGVuZ3RoOyByb3crKykge1xyXG4gICAgICAgIGZvciAobGV0IGNvbCA9IDA7IGNvbCA8IHdlaWdodHMubG9yYUJbcm93XS5sZW5ndGggJiYgY29sIDwgb3RoZXJXZWlnaHRzLmxvcmFCW3Jvd10ubGVuZ3RoOyBjb2wrKykge1xyXG4gICAgICAgICAgd2VpZ2h0cy5sb3JhQltyb3ddW2NvbF0gPSAod2VpZ2h0cy5sb3JhQltyb3ddW2NvbF0gKyBvdGhlcldlaWdodHMubG9yYUJbcm93XVtjb2xdKSAvIDI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbWVyZ2VkLnNldFdlaWdodHMod2VpZ2h0cyk7XHJcbiAgICB0aGlzLnJlZ2lzdGVyKG91dHB1dElkLCBtZXJnZWQpO1xyXG4gICAgcmV0dXJuIG1lcmdlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBzdGF0aXN0aWNzXHJcbiAgICovXHJcbiAgc3RhdHMoKToge1xyXG4gICAgdG90YWxBZGFwdGVyczogbnVtYmVyO1xyXG4gICAgYWN0aXZlQWRhcHRlcjogc3RyaW5nIHwgbnVsbDtcclxuICAgIHRvdGFsUGFyYW1ldGVyczogbnVtYmVyO1xyXG4gICAgZnJvemVuQ291bnQ6IG51bWJlcjtcclxuICB9IHtcclxuICAgIGxldCB0b3RhbFBhcmFtcyA9IDA7XHJcbiAgICBsZXQgZnJvemVuQ291bnQgPSAwO1xyXG5cclxuICAgIGZvciAoY29uc3QgYWRhcHRlciBvZiB0aGlzLmFkYXB0ZXJzLnZhbHVlcygpKSB7XHJcbiAgICAgIHRvdGFsUGFyYW1zICs9IGFkYXB0ZXIubnVtUGFyYW1ldGVycygpO1xyXG4gICAgICBpZiAoYWRhcHRlci5pc0Zyb3plbigpKSBmcm96ZW5Db3VudCsrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRvdGFsQWRhcHRlcnM6IHRoaXMuYWRhcHRlcnMuc2l6ZSxcclxuICAgICAgYWN0aXZlQWRhcHRlcjogdGhpcy5hY3RpdmVBZGFwdGVySWQsXHJcbiAgICAgIHRvdGFsUGFyYW1ldGVyczogdG90YWxQYXJhbXMsXHJcbiAgICAgIGZyb3plbkNvdW50LFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIGFsbCBhZGFwdGVyc1xyXG4gICAqL1xyXG4gIGNsZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hZGFwdGVycy5jbGVhcigpO1xyXG4gICAgdGhpcy5hY3RpdmVBZGFwdGVySWQgPSBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=
489
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9yYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb3JhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUlIOztHQUVHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBeUI7SUFDaEQsSUFBSSxFQUFFLENBQUM7SUFDUCxLQUFLLEVBQUUsRUFBRTtJQUNULE9BQU8sRUFBRSxHQUFHO0lBQ1osYUFBYSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztDQUNsQyxDQUFDO0FBOEJGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQVF0QixZQUFZLE1BQTRCLEVBQUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxTQUFTLEdBQUcsR0FBRztRQUhqRSxrQkFBYSxHQUE2QixJQUFJLENBQUM7UUFDL0MsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUc5QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxtQkFBbUIsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTNCLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxLQUFlO1FBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFFckMsbURBQW1EO1FB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T0FFRztJQUNILEtBQUs7UUFNSCxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRXBCLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzdDLFdBQVcsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFFRCxPQUFPO1lBQ0wsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUNqQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDbkMsZUFBZSxFQUFFLFdBQVc7WUFDNUIsV0FBVztTQUNaLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIExvUkEgKExvdy1SYW5rIEFkYXB0YXRpb24pIFJ1bnRpbWVcbiAqXG4gKiBFZmZpY2llbnQgcGFyYW1ldGVyLWVmZmljaWVudCBmaW5lLXR1bmluZyBhZGFwdGVycyBmb3IgTExNcy5cbiAqIFN1cHBvcnRzIG1pY3JvLUxvUkEgKGZhc3QsIHNtYWxsIHVwZGF0ZXMpIGFuZCBiYXNlLUxvUkEgKGRlZXBlciBhZGFwdGF0aW9uKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgTG9yYUFkYXB0ZXIsIExvcmFNYW5hZ2VyIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XG4gKlxuICogLy8gQ3JlYXRlIGFkYXB0ZXJcbiAqIGNvbnN0IGFkYXB0ZXIgPSBuZXcgTG9yYUFkYXB0ZXIoe1xuICogICByYW5rOiA4LFxuICogICBhbHBoYTogMTYsXG4gKiAgIGRyb3BvdXQ6IDAuMSxcbiAqICAgdGFyZ2V0TW9kdWxlczogWydxdWVyeScsICd2YWx1ZSddLFxuICogfSk7XG4gKlxuICogLy8gQXBwbHkgdG8gaGlkZGVuIHN0YXRlc1xuICogY29uc3Qgb3V0cHV0ID0gYWRhcHRlci5mb3J3YXJkKGhpZGRlblN0YXRlcyk7XG4gKlxuICogLy8gTWFuYWdlIG11bHRpcGxlIGFkYXB0ZXJzXG4gKiBjb25zdCBtYW5hZ2VyID0gbmV3IExvcmFNYW5hZ2VyKCk7XG4gKiBtYW5hZ2VyLnJlZ2lzdGVyKCd0YXNrLTEnLCBhZGFwdGVyKTtcbiAqIG1hbmFnZXIuYWN0aXZhdGUoJ3Rhc2stMScpO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgTG9SQUNvbmZpZywgRW1iZWRkaW5nIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRGVmYXVsdCBMb1JBIGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgREVGQVVMVF9MT1JBX0NPTkZJRzogUmVxdWlyZWQ8TG9SQUNvbmZpZz4gPSB7XG4gIHJhbms6IDgsXG4gIGFscGhhOiAxNixcbiAgZHJvcG91dDogMC4xLFxuICB0YXJnZXRNb2R1bGVzOiBbJ3F1ZXJ5JywgJ3ZhbHVlJ10sXG59O1xuXG4vKipcbiAqIExvUkEgYWRhcHRlciB3ZWlnaHRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9yYVdlaWdodHMge1xuICAvKiogRG93biBwcm9qZWN0aW9uIG1hdHJpeCAoZCB4IHIpICovXG4gIGxvcmFBOiBudW1iZXJbXVtdO1xuICAvKiogVXAgcHJvamVjdGlvbiBtYXRyaXggKHIgeCBkKSAqL1xuICBsb3JhQjogbnVtYmVyW11bXTtcbiAgLyoqIFNjYWxpbmcgZmFjdG9yICovXG4gIHNjYWxpbmc6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBMb1JBIHRyYWluaW5nIHN0YXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9yYVRyYWluaW5nU3RhdGUge1xuICAvKiogQ3VycmVudCBzdGVwICovXG4gIHN0ZXA6IG51bWJlcjtcbiAgLyoqIExlYXJuaW5nIHJhdGUgKi9cbiAgbGVhcm5pbmdSYXRlOiBudW1iZXI7XG4gIC8qKiBBY2N1bXVsYXRlZCBncmFkaWVudHMgZm9yIEEgKi9cbiAgZ3JhZEE6IG51bWJlcltdW107XG4gIC8qKiBBY2N1bXVsYXRlZCBncmFkaWVudHMgZm9yIEIgKi9cbiAgZ3JhZEI6IG51bWJlcltdW107XG4gIC8qKiBMb3NzIGhpc3RvcnkgKi9cbiAgbG9zc0hpc3Rvcnk6IG51bWJlcltdO1xufVxuXG4vKipcbiAqIExvUkEgQWRhcHRlclxuICpcbiAqIEltcGxlbWVudHMgbG93LXJhbmsgZGVjb21wb3NpdGlvbiBmb3IgcGFyYW1ldGVyLWVmZmljaWVudCBmaW5lLXR1bmluZy5cbiAqIFcnID0gVyArIEJBIHdoZXJlIEEgaXMgKGQgeCByKSBhbmQgQiBpcyAociB4IGQpLCByIDw8IGRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYWRhcHRlciA9IG5ldyBMb3JhQWRhcHRlcih7XG4gKiAgIHJhbms6IDgsXG4gKiAgIGFscGhhOiAxNixcbiAqICAgaW5wdXREaW06IDc2OCxcbiAqICAgb3V0cHV0RGltOiA3NjgsXG4gKiB9KTtcbiAqXG4gKiAvLyBGb3J3YXJkIHBhc3NcbiAqIGNvbnN0IG91dHB1dCA9IGFkYXB0ZXIuZm9yd2FyZChpbnB1dCk7XG4gKlxuICogLy8gVHJhaW5pbmcgc3RlcFxuICogYWRhcHRlci5iYWNrd2FyZChpbnB1dCwgZ3JhZE91dHB1dCwgMC4wMDEpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBMb3JhQWRhcHRlciB7XG4gIHByaXZhdGUgY29uZmlnOiBSZXF1aXJlZDxMb1JBQ29uZmlnPjtcbiAgcHJpdmF0ZSBpbnB1dERpbTogbnVtYmVyO1xuICBwcml2YXRlIG91dHB1dERpbTogbnVtYmVyO1xuICBwcml2YXRlIHdlaWdodHM6IExvcmFXZWlnaHRzO1xuICBwcml2YXRlIHRyYWluaW5nU3RhdGU6IExvcmFUcmFpbmluZ1N0YXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgZnJvemVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnPzogUGFydGlhbDxMb1JBQ29uZmlnPiwgaW5wdXREaW0gPSAyNTYsIG91dHB1dERpbSA9IDI1Nikge1xuICAgIHRoaXMuY29uZmlnID0geyAuLi5ERUZBVUxUX0xPUkFfQ09ORklHLCAuLi5jb25maWcgfTtcbiAgICB0aGlzLmlucHV0RGltID0gaW5wdXREaW07XG4gICAgdGhpcy5vdXRwdXREaW0gPSBvdXRwdXREaW07XG5cbiAgICAvLyBJbml0aWFsaXplIHdlaWdodHNcbiAgICB0aGlzLndlaWdodHMgPSB0aGlzLmluaXRpYWxpemVXZWlnaHRzKCk7XG4gIH1cblxuICAvKipcbiAgICogRm9yd2FyZCBwYXNzIHRocm91Z2ggTG9SQSBhZGFwdGVyXG4gICAqIE9QVElNSVpFRDogVXNlcyBGbG9hdDY0QXJyYXkgYW5kIGxvb3AgdW5yb2xsaW5nXG4gICAqXG4gICAqIG91dHB1dCA9IGlucHV0ICsgc2NhbGluZyAqIChpbnB1dCBAIEEgQCBCKVxuICAgKi9cbiAgZm9yd2FyZChpbnB1dDogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gICAgY29uc3QgcmFuayA9IHRoaXMuY29uZmlnLnJhbms7XG4gICAgY29uc3QgZGltID0gTWF0aC5taW4oaW5wdXQubGVuZ3RoLCB0aGlzLmlucHV0RGltKTtcbiAgICBjb25zdCBzY2FsaW5nID0gdGhpcy53ZWlnaHRzLnNjYWxpbmc7XG5cbiAgICAvLyBBcHBseSBkcm9wb3V0IGR1cmluZyB0cmFpbmluZyAoc2ltcGxpZmllZCBjaGVjaylcbiAgICBjb25zdCBhcHBseURyb3BvdXQgPSB0aGlzLnRyYWluaW5nU3RhdGUgIT09IG51bGwgJiYgdGhpcy5jb25maWcuZHJvcG91dCA+IDA7XG5cbiAgICAvLyBpbnB1dCBAIEEgKGQgLT4gcikgLSB1c2UgdHlwZWQgYXJyYXkgZm9yIGhpZGRlblxuICAgIGNvbnN0IGhpZGRlbiA9IG5ldyBGbG9hdDY0QXJyYXkocmFuayk7XG4gICAgZm9yIChsZXQgciA9IDA7IHIgPCByYW5rOyByKyspIHtcbiAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgY29uc3QgbG9yYUFDb2wgPSB0aGlzLndlaWdodHMubG9yYUE7XG4gICAgICAvLyBVbnJvbGwgbG9vcCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlXG4gICAgICBsZXQgaSA9IDA7XG4gICAgICBpZiAoYXBwbHlEcm9wb3V0KSB7XG4gICAgICAgIGZvciAoOyBpIDwgZGltOyBpKyspIHtcbiAgICAgICAgICBpZiAoTWF0aC5yYW5kb20oKSA+IHRoaXMuY29uZmlnLmRyb3BvdXQpIHtcbiAgICAgICAgICAgIHN1bSArPSBpbnB1dFtpXSAqIGxvcmFBQ29sW2ldW3JdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICg7IGkgKyAzIDwgZGltOyBpICs9IDQpIHtcbiAgICAgICAgICBzdW0gKz0gaW5wdXRbaV0gKiBsb3JhQUNvbFtpXVtyXSArXG4gICAgICAgICAgICAgICAgIGlucHV0W2kgKyAxXSAqIGxvcmFBQ29sW2kgKyAxXVtyXSArXG4gICAgICAgICAgICAgICAgIGlucHV0W2kgKyAyXSAqIGxvcmFBQ29sW2kgKyAyXVtyXSArXG4gICAgICAgICAgICAgICAgIGlucHV0W2kgKyAzXSAqIGxvcmFBQ29sW2kgKyAzXVtyXTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKDsgaSA8IGRpbTsgaSsrKSB7XG4gICAgICAgICAgc3VtICs9IGlucHV0W2ldICogbG9yYUFDb2xbaV1bcl07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGhpZGRlbltyXSA9IHN1bTtcbiAgICB9XG5cbiAgICAvLyBoaWRkZW4gQCBCIChyIC0+IGQpICsgcmVzaWR1YWxcbiAgICBjb25zdCBvdXRwdXQgPSBuZXcgQXJyYXkodGhpcy5vdXRwdXREaW0pO1xuICAgIGNvbnN0IGxvcmFCID0gdGhpcy53ZWlnaHRzLmxvcmFCO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vdXRwdXREaW07IGkrKykge1xuICAgICAgbGV0IGRlbHRhID0gMDtcbiAgICAgIGZvciAobGV0IHIgPSAwOyByIDwgcmFuazsgcisrKSB7XG4gICAgICAgIGRlbHRhICs9IGhpZGRlbltyXSAqIGxvcmFCW3JdW2ldO1xuICAgICAgfVxuICAgICAgLy8gQWRkIHNjYWxlZCBkZWx0YSB0byBpbnB1dCAocmVzaWR1YWwgY29ubmVjdGlvbilcbiAgICAgIG91dHB1dFtpXSA9IChpbnB1dFtpXSB8fCAwKSArIHNjYWxpbmcgKiBkZWx0YTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcndhcmQgd2l0aCBiYXRjaCBwcm9jZXNzaW5nXG4gICAqL1xuICBmb3J3YXJkQmF0Y2goaW5wdXRzOiBudW1iZXJbXVtdKTogbnVtYmVyW11bXSB7XG4gICAgcmV0dXJuIGlucHV0cy5tYXAoaW5wdXQgPT4gdGhpcy5mb3J3YXJkKGlucHV0KSk7XG4gIH1cblxuICAvKipcbiAgICogQmFja3dhcmQgcGFzcyBhbmQgd2VpZ2h0IHVwZGF0ZVxuICAgKi9cbiAgYmFja3dhcmQoaW5wdXQ6IG51bWJlcltdLCBncmFkT3V0cHV0OiBudW1iZXJbXSwgbGVhcm5pbmdSYXRlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmZyb3plbikgcmV0dXJuIDA7XG5cbiAgICBjb25zdCByYW5rID0gdGhpcy5jb25maWcucmFuaztcbiAgICBjb25zdCBkaW0gPSBNYXRoLm1pbihpbnB1dC5sZW5ndGgsIHRoaXMuaW5wdXREaW0pO1xuXG4gICAgLy8gQ29tcHV0ZSBoaWRkZW4gYWN0aXZhdGlvbnMgKGZvciBncmFkaWVudClcbiAgICBjb25zdCBoaWRkZW4gPSBuZXcgQXJyYXkocmFuaykuZmlsbCgwKTtcbiAgICBmb3IgKGxldCByID0gMDsgciA8IHJhbms7IHIrKykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW07IGkrKykge1xuICAgICAgICBoaWRkZW5bcl0gKz0gaW5wdXRbaV0gKiB0aGlzLndlaWdodHMubG9yYUFbaV1bcl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR3JhZGllbnQgZm9yIEI6IGhpZGRlbl5UIEAgZ3JhZE91dHB1dFxuICAgIGNvbnN0IGdyYWRCOiBudW1iZXJbXVtdID0gQXJyYXkocmFuaykuZmlsbChudWxsKS5tYXAoKCkgPT4gQXJyYXkodGhpcy5vdXRwdXREaW0pLmZpbGwoMCkpO1xuICAgIGZvciAobGV0IHIgPSAwOyByIDwgcmFuazsgcisrKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3V0cHV0RGltOyBpKyspIHtcbiAgICAgICAgZ3JhZEJbcl1baV0gPSBoaWRkZW5bcl0gKiAoZ3JhZE91dHB1dFtpXSB8fCAwKSAqIHRoaXMud2VpZ2h0cy5zY2FsaW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdyYWRpZW50IGZvciBoaWRkZW46IGdyYWRPdXRwdXQgQCBCXlRcbiAgICBjb25zdCBncmFkSGlkZGVuID0gbmV3IEFycmF5KHJhbmspLmZpbGwoMCk7XG4gICAgZm9yIChsZXQgciA9IDA7IHIgPCByYW5rOyByKyspIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vdXRwdXREaW07IGkrKykge1xuICAgICAgICBncmFkSGlkZGVuW3JdICs9IChncmFkT3V0cHV0W2ldIHx8IDApICogdGhpcy53ZWlnaHRzLmxvcmFCW3JdW2ldICogdGhpcy53ZWlnaHRzLnNjYWxpbmc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR3JhZGllbnQgZm9yIEE6IGlucHV0XlQgQCBncmFkSGlkZGVuXG4gICAgY29uc3QgZ3JhZEE6IG51bWJlcltdW10gPSBBcnJheShkaW0pLmZpbGwobnVsbCkubWFwKCgpID0+IEFycmF5KHJhbmspLmZpbGwoMCkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltOyBpKyspIHtcbiAgICAgIGZvciAobGV0IHIgPSAwOyByIDwgcmFuazsgcisrKSB7XG4gICAgICAgIGdyYWRBW2ldW3JdID0gaW5wdXRbaV0gKiBncmFkSGlkZGVuW3JdO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB3ZWlnaHRzXG4gICAgbGV0IHRvdGFsR3JhZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW07IGkrKykge1xuICAgICAgZm9yIChsZXQgciA9IDA7IHIgPCByYW5rOyByKyspIHtcbiAgICAgICAgdGhpcy53ZWlnaHRzLmxvcmFBW2ldW3JdIC09IGxlYXJuaW5nUmF0ZSAqIGdyYWRBW2ldW3JdO1xuICAgICAgICB0b3RhbEdyYWQgKz0gTWF0aC5hYnMoZ3JhZEFbaV1bcl0pO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCByID0gMDsgciA8IHJhbms7IHIrKykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm91dHB1dERpbTsgaSsrKSB7XG4gICAgICAgIHRoaXMud2VpZ2h0cy5sb3JhQltyXVtpXSAtPSBsZWFybmluZ1JhdGUgKiBncmFkQltyXVtpXTtcbiAgICAgICAgdG90YWxHcmFkICs9IE1hdGguYWJzKGdyYWRCW3JdW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUcmFjayB0cmFpbmluZyBzdGF0ZVxuICAgIGlmICh0aGlzLnRyYWluaW5nU3RhdGUpIHtcbiAgICAgIHRoaXMudHJhaW5pbmdTdGF0ZS5zdGVwKys7XG4gICAgICB0aGlzLnRyYWluaW5nU3RhdGUubG9zc0hpc3RvcnkucHVzaCh0b3RhbEdyYWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0b3RhbEdyYWQ7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgdHJhaW5pbmcgbW9kZVxuICAgKi9cbiAgc3RhcnRUcmFpbmluZyhsZWFybmluZ1JhdGUgPSAwLjAwMSk6IHZvaWQge1xuICAgIHRoaXMudHJhaW5pbmdTdGF0ZSA9IHtcbiAgICAgIHN0ZXA6IDAsXG4gICAgICBsZWFybmluZ1JhdGUsXG4gICAgICBncmFkQTogQXJyYXkodGhpcy5pbnB1dERpbSkuZmlsbChudWxsKS5tYXAoKCkgPT4gQXJyYXkodGhpcy5jb25maWcucmFuaykuZmlsbCgwKSksXG4gICAgICBncmFkQjogQXJyYXkodGhpcy5jb25maWcucmFuaykuZmlsbChudWxsKS5tYXAoKCkgPT4gQXJyYXkodGhpcy5vdXRwdXREaW0pLmZpbGwoMCkpLFxuICAgICAgbG9zc0hpc3Rvcnk6IFtdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRW5kIHRyYWluaW5nIG1vZGVcbiAgICovXG4gIGVuZFRyYWluaW5nKCk6IExvcmFUcmFpbmluZ1N0YXRlIHwgbnVsbCB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnRyYWluaW5nU3RhdGU7XG4gICAgdGhpcy50cmFpbmluZ1N0YXRlID0gbnVsbDtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogRnJlZXplIGFkYXB0ZXIgKG5vIG1vcmUgdXBkYXRlcylcbiAgICovXG4gIGZyZWV6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZyb3plbiA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogVW5mcmVlemUgYWRhcHRlclxuICAgKi9cbiAgdW5mcmVlemUoKTogdm9pZCB7XG4gICAgdGhpcy5mcm96ZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBmcm96ZW5cbiAgICovXG4gIGlzRnJvemVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZyb3plbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWRhcHRlciBjb25maWdcbiAgICovXG4gIGdldENvbmZpZygpOiBSZXF1aXJlZDxMb1JBQ29uZmlnPiB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5jb25maWcgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWRhcHRlciB3ZWlnaHRzXG4gICAqL1xuICBnZXRXZWlnaHRzKCk6IExvcmFXZWlnaHRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9yYUE6IHRoaXMud2VpZ2h0cy5sb3JhQS5tYXAocm93ID0+IFsuLi5yb3ddKSxcbiAgICAgIGxvcmFCOiB0aGlzLndlaWdodHMubG9yYUIubWFwKHJvdyA9PiBbLi4ucm93XSksXG4gICAgICBzY2FsaW5nOiB0aGlzLndlaWdodHMuc2NhbGluZyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhZGFwdGVyIHdlaWdodHNcbiAgICovXG4gIHNldFdlaWdodHMod2VpZ2h0czogTG9yYVdlaWdodHMpOiB2b2lkIHtcbiAgICB0aGlzLndlaWdodHMgPSB7XG4gICAgICBsb3JhQTogd2VpZ2h0cy5sb3JhQS5tYXAocm93ID0+IFsuLi5yb3ddKSxcbiAgICAgIGxvcmFCOiB3ZWlnaHRzLmxvcmFCLm1hcChyb3cgPT4gWy4uLnJvd10pLFxuICAgICAgc2NhbGluZzogd2VpZ2h0cy5zY2FsaW5nLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgYWRhcHRlciBpbnRvIGJhc2Ugd2VpZ2h0c1xuICAgKlxuICAgKiBSZXR1cm5zIGRlbHRhIHRvIGFkZCB0byBiYXNlIG1vZGVsIHdlaWdodHNcbiAgICovXG4gIG1lcmdlKCk6IG51bWJlcltdW10ge1xuICAgIGNvbnN0IGRlbHRhOiBudW1iZXJbXVtdID0gQXJyYXkodGhpcy5pbnB1dERpbSlcbiAgICAgIC5maWxsKG51bGwpXG4gICAgICAubWFwKCgpID0+IEFycmF5KHRoaXMub3V0cHV0RGltKS5maWxsKDApKTtcblxuICAgIGNvbnN0IHJhbmsgPSB0aGlzLmNvbmZpZy5yYW5rO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pbnB1dERpbTsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMub3V0cHV0RGltOyBqKyspIHtcbiAgICAgICAgZm9yIChsZXQgciA9IDA7IHIgPCByYW5rOyByKyspIHtcbiAgICAgICAgICBkZWx0YVtpXVtqXSArPSB0aGlzLndlaWdodHMubG9yYUFbaV1bcl0gKiB0aGlzLndlaWdodHMubG9yYUJbcl1bal07XG4gICAgICAgIH1cbiAgICAgICAgZGVsdGFbaV1bal0gKj0gdGhpcy53ZWlnaHRzLnNjYWxpbmc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbHRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBudW1iZXIgb2YgdHJhaW5hYmxlIHBhcmFtZXRlcnNcbiAgICovXG4gIG51bVBhcmFtZXRlcnMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuaW5wdXREaW0gKiB0aGlzLmNvbmZpZy5yYW5rKSArICh0aGlzLmNvbmZpZy5yYW5rICogdGhpcy5vdXRwdXREaW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRvIGluaXRpYWwgd2VpZ2h0c1xuICAgKi9cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy53ZWlnaHRzID0gdGhpcy5pbml0aWFsaXplV2VpZ2h0cygpO1xuICAgIHRoaXMudHJhaW5pbmdTdGF0ZSA9IG51bGw7XG4gICAgdGhpcy5mcm96ZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9uZSBhZGFwdGVyXG4gICAqL1xuICBjbG9uZSgpOiBMb3JhQWRhcHRlciB7XG4gICAgY29uc3QgYWRhcHRlciA9IG5ldyBMb3JhQWRhcHRlcih0aGlzLmNvbmZpZywgdGhpcy5pbnB1dERpbSwgdGhpcy5vdXRwdXREaW0pO1xuICAgIGFkYXB0ZXIuc2V0V2VpZ2h0cyh0aGlzLmdldFdlaWdodHMoKSk7XG4gICAgcmV0dXJuIGFkYXB0ZXI7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplIHRvIEpTT05cbiAgICovXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgaW5wdXREaW06IHRoaXMuaW5wdXREaW0sXG4gICAgICBvdXRwdXREaW06IHRoaXMub3V0cHV0RGltLFxuICAgICAgd2VpZ2h0czogdGhpcy53ZWlnaHRzLFxuICAgICAgZnJvemVuOiB0aGlzLmZyb3plbixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZSBmcm9tIEpTT05cbiAgICovXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uOiBzdHJpbmcpOiBMb3JhQWRhcHRlciB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoanNvbik7XG4gICAgY29uc3QgYWRhcHRlciA9IG5ldyBMb3JhQWRhcHRlcihkYXRhLmNvbmZpZywgZGF0YS5pbnB1dERpbSwgZGF0YS5vdXRwdXREaW0pO1xuICAgIGFkYXB0ZXIuc2V0V2VpZ2h0cyhkYXRhLndlaWdodHMpO1xuICAgIGlmIChkYXRhLmZyb3plbikgYWRhcHRlci5mcmVlemUoKTtcbiAgICByZXR1cm4gYWRhcHRlcjtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVdlaWdodHMoKTogTG9yYVdlaWdodHMge1xuICAgIGNvbnN0IHJhbmsgPSB0aGlzLmNvbmZpZy5yYW5rO1xuXG4gICAgLy8gS2FpbWluZyBpbml0aWFsaXphdGlvbiBmb3IgQSwgemVybyBpbml0aWFsaXphdGlvbiBmb3IgQlxuICAgIGNvbnN0IGxvcmFBOiBudW1iZXJbXVtdID0gQXJyYXkodGhpcy5pbnB1dERpbSlcbiAgICAgIC5maWxsKG51bGwpXG4gICAgICAubWFwKCgpID0+XG4gICAgICAgIEFycmF5KHJhbmspXG4gICAgICAgICAgLmZpbGwoMClcbiAgICAgICAgICAubWFwKCgpID0+IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIE1hdGguc3FydCgyIC8gdGhpcy5pbnB1dERpbSkpXG4gICAgICApO1xuXG4gICAgY29uc3QgbG9yYUI6IG51bWJlcltdW10gPSBBcnJheShyYW5rKVxuICAgICAgLmZpbGwobnVsbClcbiAgICAgIC5tYXAoKCkgPT4gQXJyYXkodGhpcy5vdXRwdXREaW0pLmZpbGwoMCkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxvcmFBLFxuICAgICAgbG9yYUIsXG4gICAgICBzY2FsaW5nOiB0aGlzLmNvbmZpZy5hbHBoYSAvIHRoaXMuY29uZmlnLnJhbmssXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIExvUkEgTWFuYWdlciBmb3IgbXVsdGlwbGUgYWRhcHRlcnNcbiAqXG4gKiBNYW5hZ2VzIGEgY29sbGVjdGlvbiBvZiBMb1JBIGFkYXB0ZXJzIGZvciBkaWZmZXJlbnQgdGFza3MvZG9tYWlucy5cbiAqL1xuZXhwb3J0IGNsYXNzIExvcmFNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBhZGFwdGVyczogTWFwPHN0cmluZywgTG9yYUFkYXB0ZXI+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGFjdGl2ZUFkYXB0ZXJJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgZGVmYXVsdENvbmZpZzogUmVxdWlyZWQ8TG9SQUNvbmZpZz47XG5cbiAgY29uc3RydWN0b3IoZGVmYXVsdENvbmZpZz86IFBhcnRpYWw8TG9SQUNvbmZpZz4pIHtcbiAgICB0aGlzLmRlZmF1bHRDb25maWcgPSB7IC4uLkRFRkFVTFRfTE9SQV9DT05GSUcsIC4uLmRlZmF1bHRDb25maWcgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIG5ldyBhZGFwdGVyXG4gICAqL1xuICByZWdpc3RlcihpZDogc3RyaW5nLCBhZGFwdGVyOiBMb3JhQWRhcHRlcik6IHZvaWQge1xuICAgIHRoaXMuYWRhcHRlcnMuc2V0KGlkLCBhZGFwdGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW5kIHJlZ2lzdGVyIGEgbmV3IGFkYXB0ZXJcbiAgICovXG4gIGNyZWF0ZShpZDogc3RyaW5nLCBjb25maWc/OiBQYXJ0aWFsPExvUkFDb25maWc+LCBpbnB1dERpbT86IG51bWJlciwgb3V0cHV0RGltPzogbnVtYmVyKTogTG9yYUFkYXB0ZXIge1xuICAgIGNvbnN0IG1lcmdlZENvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCAuLi5jb25maWcgfTtcbiAgICBjb25zdCBhZGFwdGVyID0gbmV3IExvcmFBZGFwdGVyKG1lcmdlZENvbmZpZywgaW5wdXREaW0sIG91dHB1dERpbSk7XG4gICAgdGhpcy5yZWdpc3RlcihpZCwgYWRhcHRlcik7XG4gICAgcmV0dXJuIGFkYXB0ZXI7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFkYXB0ZXIgYnkgSURcbiAgICovXG4gIGdldChpZDogc3RyaW5nKTogTG9yYUFkYXB0ZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXJzLmdldChpZCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFkYXB0ZXJcbiAgICovXG4gIHJlbW92ZShpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuYWN0aXZlQWRhcHRlcklkID09PSBpZCkge1xuICAgICAgdGhpcy5hY3RpdmVBZGFwdGVySWQgPSBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hZGFwdGVycy5kZWxldGUoaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIGFuIGFkYXB0ZXJcbiAgICovXG4gIGFjdGl2YXRlKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5hZGFwdGVycy5oYXMoaWQpKSB7XG4gICAgICB0aGlzLmFjdGl2ZUFkYXB0ZXJJZCA9IGlkO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWFjdGl2YXRlIGN1cnJlbnQgYWRhcHRlclxuICAgKi9cbiAgZGVhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUFkYXB0ZXJJZCA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFjdGl2ZSBhZGFwdGVyXG4gICAqL1xuICBnZXRBY3RpdmUoKTogTG9yYUFkYXB0ZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVBZGFwdGVySWQgPyB0aGlzLmFkYXB0ZXJzLmdldCh0aGlzLmFjdGl2ZUFkYXB0ZXJJZCkgfHwgbnVsbCA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFjdGl2ZSBhZGFwdGVyIElEXG4gICAqL1xuICBnZXRBY3RpdmVJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVBZGFwdGVySWQ7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgYWN0aXZlIGFkYXB0ZXJcbiAgICovXG4gIGZvcndhcmQoaW5wdXQ6IG51bWJlcltdKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuZ2V0QWN0aXZlKCk7XG4gICAgcmV0dXJuIGFjdGl2ZSA/IGFjdGl2ZS5mb3J3YXJkKGlucHV0KSA6IFsuLi5pbnB1dF07XG4gIH1cblxuICAvKipcbiAgICogTGlzdCBhbGwgYWRhcHRlciBJRHNcbiAgICovXG4gIGxpc3QoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuYWRhcHRlcnMua2V5cygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWRhcHRlciBjb3VudFxuICAgKi9cbiAgY291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVycy5zaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIEZyZWV6ZSBhbGwgYWRhcHRlcnNcbiAgICovXG4gIGZyZWV6ZUFsbCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGFkYXB0ZXIgb2YgdGhpcy5hZGFwdGVycy52YWx1ZXMoKSkge1xuICAgICAgYWRhcHRlci5mcmVlemUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVW5mcmVlemUgYWxsIGFkYXB0ZXJzXG4gICAqL1xuICB1bmZyZWV6ZUFsbCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGFkYXB0ZXIgb2YgdGhpcy5hZGFwdGVycy52YWx1ZXMoKSkge1xuICAgICAgYWRhcHRlci51bmZyZWV6ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZSBtdWx0aXBsZSBhZGFwdGVycyBpbnRvIG9uZVxuICAgKi9cbiAgbWVyZ2VBZGFwdGVycyhpZHM6IHN0cmluZ1tdLCBvdXRwdXRJZDogc3RyaW5nKTogTG9yYUFkYXB0ZXIgfCBudWxsIHtcbiAgICBjb25zdCBhZGFwdGVycyA9IGlkcy5tYXAoaWQgPT4gdGhpcy5hZGFwdGVycy5nZXQoaWQpKS5maWx0ZXIoQm9vbGVhbikgYXMgTG9yYUFkYXB0ZXJbXTtcbiAgICBpZiAoYWRhcHRlcnMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICAgIC8vIFVzZSBmaXJzdCBhZGFwdGVyIGFzIGJhc2VcbiAgICBjb25zdCBtZXJnZWQgPSBhZGFwdGVyc1swXS5jbG9uZSgpO1xuICAgIGNvbnN0IHdlaWdodHMgPSBtZXJnZWQuZ2V0V2VpZ2h0cygpO1xuXG4gICAgLy8gQXZlcmFnZSB3ZWlnaHRzIGZyb20gb3RoZXIgYWRhcHRlcnNcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGFkYXB0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBvdGhlcldlaWdodHMgPSBhZGFwdGVyc1tpXS5nZXRXZWlnaHRzKCk7XG5cbiAgICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHdlaWdodHMubG9yYUEubGVuZ3RoICYmIHJvdyA8IG90aGVyV2VpZ2h0cy5sb3JhQS5sZW5ndGg7IHJvdysrKSB7XG4gICAgICAgIGZvciAobGV0IGNvbCA9IDA7IGNvbCA8IHdlaWdodHMubG9yYUFbcm93XS5sZW5ndGggJiYgY29sIDwgb3RoZXJXZWlnaHRzLmxvcmFBW3Jvd10ubGVuZ3RoOyBjb2wrKykge1xuICAgICAgICAgIHdlaWdodHMubG9yYUFbcm93XVtjb2xdID0gKHdlaWdodHMubG9yYUFbcm93XVtjb2xdICsgb3RoZXJXZWlnaHRzLmxvcmFBW3Jvd11bY29sXSkgLyAyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB3ZWlnaHRzLmxvcmFCLmxlbmd0aCAmJiByb3cgPCBvdGhlcldlaWdodHMubG9yYUIubGVuZ3RoOyByb3crKykge1xuICAgICAgICBmb3IgKGxldCBjb2wgPSAwOyBjb2wgPCB3ZWlnaHRzLmxvcmFCW3Jvd10ubGVuZ3RoICYmIGNvbCA8IG90aGVyV2VpZ2h0cy5sb3JhQltyb3ddLmxlbmd0aDsgY29sKyspIHtcbiAgICAgICAgICB3ZWlnaHRzLmxvcmFCW3Jvd11bY29sXSA9ICh3ZWlnaHRzLmxvcmFCW3Jvd11bY29sXSArIG90aGVyV2VpZ2h0cy5sb3JhQltyb3ddW2NvbF0pIC8gMjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIG1lcmdlZC5zZXRXZWlnaHRzKHdlaWdodHMpO1xuICAgIHRoaXMucmVnaXN0ZXIob3V0cHV0SWQsIG1lcmdlZCk7XG4gICAgcmV0dXJuIG1lcmdlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgc3RhdGlzdGljc1xuICAgKi9cbiAgc3RhdHMoKToge1xuICAgIHRvdGFsQWRhcHRlcnM6IG51bWJlcjtcbiAgICBhY3RpdmVBZGFwdGVyOiBzdHJpbmcgfCBudWxsO1xuICAgIHRvdGFsUGFyYW1ldGVyczogbnVtYmVyO1xuICAgIGZyb3plbkNvdW50OiBudW1iZXI7XG4gIH0ge1xuICAgIGxldCB0b3RhbFBhcmFtcyA9IDA7XG4gICAgbGV0IGZyb3plbkNvdW50ID0gMDtcblxuICAgIGZvciAoY29uc3QgYWRhcHRlciBvZiB0aGlzLmFkYXB0ZXJzLnZhbHVlcygpKSB7XG4gICAgICB0b3RhbFBhcmFtcyArPSBhZGFwdGVyLm51bVBhcmFtZXRlcnMoKTtcbiAgICAgIGlmIChhZGFwdGVyLmlzRnJvemVuKCkpIGZyb3plbkNvdW50Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRvdGFsQWRhcHRlcnM6IHRoaXMuYWRhcHRlcnMuc2l6ZSxcbiAgICAgIGFjdGl2ZUFkYXB0ZXI6IHRoaXMuYWN0aXZlQWRhcHRlcklkLFxuICAgICAgdG90YWxQYXJhbWV0ZXJzOiB0b3RhbFBhcmFtcyxcbiAgICAgIGZyb3plbkNvdW50LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYWxsIGFkYXB0ZXJzXG4gICAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmFkYXB0ZXJzLmNsZWFyKCk7XG4gICAgdGhpcy5hY3RpdmVBZGFwdGVySWQgPSBudWxsO1xuICB9XG59XG4iXX0=
@@ -279,4 +279,4 @@ export class ModelDownloader {
279
279
  }
280
280
  }
281
281
  export default ModelDownloader;
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxJQUFJLEVBQVcsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQTJEN0IsNkJBQTZCO0FBQzdCLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUM5QixNQUFNLFdBQVcsR0FBRywwQkFBMEIsT0FBTyxlQUFlLENBQUM7QUFFckUsK0JBQStCO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBOEI7SUFDdkQsYUFBYSxFQUFFO1FBQ2IsRUFBRSxFQUFFLGFBQWE7UUFDakIsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixRQUFRLEVBQUUsc0NBQXNDO1FBQ2hELFNBQVMsRUFBRSxTQUFXO1FBQ3RCLElBQUksRUFBRSxRQUFRO1FBQ2QsVUFBVSxFQUFFLE1BQU07UUFDbEIsT0FBTyxFQUFFLHVDQUF1QztRQUNoRCxZQUFZLEVBQUUsUUFBUTtRQUN0QixhQUFhLEVBQUUsSUFBSTtRQUNuQixHQUFHLEVBQUUsR0FBRyxXQUFXLHVDQUF1QztLQUMzRDtJQUNELE9BQU8sRUFBRTtRQUNQLEVBQUUsRUFBRSxPQUFPO1FBQ1gsSUFBSSxFQUFFLGVBQWU7UUFDckIsUUFBUSxFQUFFLGdDQUFnQztRQUMxQyxTQUFTLEVBQUUsU0FBVztRQUN0QixJQUFJLEVBQUUsUUFBUTtRQUNkLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE9BQU8sRUFBRSxzREFBc0Q7UUFDL0QsWUFBWSxFQUFFLFFBQVE7UUFDdEIsYUFBYSxFQUFFLElBQUk7UUFDbkIsR0FB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LE1BQU0sS0FBSyxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsY0FBc0I7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUztRQUNQLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLEtBQUssTUFBTSxLQUFLLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLEtBQUssRUFBRSxDQUFDO1lBQ1YsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQUVELGVBQWUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFJ1dkxUUkEgTW9kZWwgUmVnaXN0cnkgYW5kIERvd25sb2FkZXJcclxuICpcclxuICogQXV0b21hdGljYWxseSBkb3dubG9hZHMgR0dVRiBtb2RlbHMgZnJvbSBIdWdnaW5nRmFjZSBIdWIuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaW1wb3J0IHsgTW9kZWxEb3dubG9hZGVyLCBSVVZMVFJBX01PREVMUyB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xyXG4gKlxyXG4gKiAvLyBEb3dubG9hZCB0aGUgQ2xhdWRlIENvZGUgb3B0aW1pemVkIG1vZGVsXHJcbiAqIGNvbnN0IGRvd25sb2FkZXIgPSBuZXcgTW9kZWxEb3dubG9hZGVyKCk7XHJcbiAqIGNvbnN0IG1vZGVsUGF0aCA9IGF3YWl0IGRvd25sb2FkZXIuZG93bmxvYWQoJ2NsYXVkZS1jb2RlJyk7XHJcbiAqXHJcbiAqIC8vIE9yIGRvd25sb2FkIGFsbCBtb2RlbHNcclxuICogYXdhaXQgZG93bmxvYWRlci5kb3dubG9hZEFsbCgpO1xyXG4gKiBgYGBcclxuICovXHJcblxyXG5pbXBvcnQgeyBjcmVhdGVXcml0ZVN0cmVhbSwgZXhpc3RzU3luYywgbWtkaXJTeW5jLCBzdGF0U3luYywgdW5saW5rU3luYywgcmVuYW1lU3luYyB9IGZyb20gJ2ZzJztcclxuaW1wb3J0IHsgam9pbiwgZGlybmFtZSB9IGZyb20gJ3BhdGgnO1xyXG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnb3MnO1xyXG5pbXBvcnQgeyBwaXBlbGluZSB9IGZyb20gJ3N0cmVhbS9wcm9taXNlcyc7XHJcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xyXG5cclxuLyoqIE1vZGVsIGluZm9ybWF0aW9uIGZyb20gSHVnZ2luZ0ZhY2UgKi9cclxuZXhwb3J0IGludGVyZmFjZSBNb2RlbEluZm8ge1xyXG4gIC8qKiBNb2RlbCBpZGVudGlmaWVyICovXHJcbiAgaWQ6IHN0cmluZztcclxuICAvKiogRGlzcGxheSBuYW1lICovXHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIC8qKiBNb2RlbCBmaWxlbmFtZSBvbiBIdWdnaW5nRmFjZSAqL1xyXG4gIGZpbGVuYW1lOiBzdHJpbmc7XHJcbiAgLyoqIE1vZGVsIHNpemUgaW4gYnl0ZXMgKi9cclxuICBzaXplQnl0ZXM6IG51bWJlcjtcclxuICAvKiogTW9kZWwgc2l6ZSAoaHVtYW4gcmVhZGFibGUpICovXHJcbiAgc2l6ZTogc3RyaW5nO1xyXG4gIC8qKiBQYXJhbWV0ZXIgY291bnQgKi9cclxuICBwYXJhbWV0ZXJzOiBzdHJpbmc7XHJcbiAgLyoqIFVzZSBjYXNlIGRlc2NyaXB0aW9uICovXHJcbiAgdXNlQ2FzZTogc3RyaW5nO1xyXG4gIC8qKiBRdWFudGl6YXRpb24gdHlwZSAqL1xyXG4gIHF1YW50aXphdGlvbjogc3RyaW5nO1xyXG4gIC8qKiBDb250ZXh0IHdpbmRvdyBzaXplICovXHJcbiAgY29udGV4dExlbmd0aDogbnVtYmVyO1xyXG4gIC8qKiBIdWdnaW5nRmFjZSBkb3dubG9hZCBVUkwgKi9cclxuICB1cmw6IHN0cmluZztcclxufVxyXG5cclxuLyoqIERvd25sb2FkIHByb2dyZXNzIGNhbGxiYWNrICovXHJcbmV4cG9ydCB0eXBlIFByb2dyZXNzQ2FsbGJhY2sgPSAocHJvZ3Jlc3M6IERvd25sb2FkUHJvZ3Jlc3MpID0+IHZvaWQ7XHJcblxyXG4vKiogRG93bmxvYWQgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gKi9cclxuZXhwb3J0IGludGVyZmFjZSBEb3dubG9hZFByb2dyZXNzIHtcclxuICAvKiogTW9kZWwgYmVpbmcgZG93bmxvYWRlZCAqL1xyXG4gIG1vZGVsSWQ6IHN0cmluZztcclxuICAvKiogQnl0ZXMgZG93bmxvYWRlZCBzbyBmYXIgKi9cclxuICBkb3dubG9hZGVkOiBudW1iZXI7XHJcbiAgLyoqIFRvdGFsIGJ5dGVzIHRvIGRvd25sb2FkICovXHJcbiAgdG90YWw6IG51bWJlcjtcclxuICAvKiogRG93bmxvYWQgcGVyY2VudGFnZSAoMC0xMDApICovXHJcbiAgcGVyY2VudDogbnVtYmVyO1xyXG4gIC8qKiBEb3dubG9hZCBzcGVlZCBpbiBieXRlcyBwZXIgc2Vjb25kICovXHJcbiAgc3BlZWRCcHM6IG51bWJlcjtcclxuICAvKiogRXN0aW1hdGVkIHRpbWUgcmVtYWluaW5nIGluIHNlY29uZHMgKi9cclxuICBldGFTZWNvbmRzOiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKiBEb3dubG9hZCBvcHRpb25zICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgRG93bmxvYWRPcHRpb25zIHtcclxuICAvKiogRGlyZWN0b3J5IHRvIHNhdmUgbW9kZWxzIChkZWZhdWx0OiB+Ly5ydXZsbG0vbW9kZWxzKSAqL1xyXG4gIG1vZGVsc0Rpcj86IHN0cmluZztcclxuICAvKiogRm9yY2UgcmUtZG93bmxvYWQgZXZlbiBpZiBmaWxlIGV4aXN0cyAqL1xyXG4gIGZvcmNlPzogYm9vbGVhbjtcclxuICAvKiogUHJvZ3Jlc3MgY2FsbGJhY2sgKi9cclxuICBvblByb2dyZXNzPzogUHJvZ3Jlc3NDYWxsYmFjaztcclxuICAvKiogVmVyaWZ5IGZpbGUgaW50ZWdyaXR5IGFmdGVyIGRvd25sb2FkICovXHJcbiAgdmVyaWZ5PzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqIEh1Z2dpbmdGYWNlIHJlcG9zaXRvcnkgKi9cclxuY29uc3QgSEZfUkVQTyA9ICdydXYvcnV2bHRyYSc7XHJcbmNvbnN0IEhGX0JBU0VfVVJMID0gYGh0dHBzOi8vaHVnZ2luZ2ZhY2UuY28vJHtIRl9SRVBPfS9yZXNvbHZlL21haW5gO1xyXG5cclxuLyoqIEF2YWlsYWJsZSBSdXZMVFJBIG1vZGVscyAqL1xyXG5leHBvcnQgY29uc3QgUlVWTFRSQV9NT0RFTFM6IFJlY29yZDxzdHJpbmcsIE1vZGVsSW5mbz4gPSB7XHJcbiAgJ2NsYXVkZS1jb2RlJzoge1xyXG4gICAgaWQ6ICdjbGF1ZGUtY29kZScsXHJcbiAgICBuYW1lOiAnUnV2TFRSQSBDbGF1ZGUgQ29kZScsXHJcbiAgICBmaWxlbmFtZTogJ3J1dmx0cmEtY2xhdWRlLWNvZGUtMC41Yi1xNF9rX20uZ2d1ZicsXHJcbiAgICBzaXplQnl0ZXM6IDM5OF8wMDBfMDAwLFxyXG4gICAgc2l6ZTogJzM5OCBNQicsXHJcbiAgICBwYXJhbWV0ZXJzOiAnMC41QicsXHJcbiAgICB1c2VDYXNlOiAnQ2xhdWRlIENvZGUgd29ya2Zsb3dzLCBhZ2VudGljIGNvZGluZycsXHJcbiAgICBxdWFudGl6YXRpb246ICdRNF9LX00nLFxyXG4gICAgY29udGV4dExlbmd0aDogNDA5NixcclxuICAgIHVybDogYCR7SEZfQkFTRV9VUkx9L3J1dmx0cmEtY2xhdWRlLWNvZGUtMC41Yi1xNF9rX20uZ2d1ZmAsXHJcbiAgfSxcclxuICAnc21hbGwnOiB7XHJcbiAgICBpZDogJ3NtYWxsJyxcclxuICAgIG5hbWU6ICdSdXZMVFJBIFNtYWxsJyxcclxuICAgIGZpbGVuYW1lOiAncnV2bHRyYS1zbWFsbC0wLjViLXE0X2tfbS5nZ3VmJyxcclxuICAgIHNpemVCeXRlczogMzk4XzAwMF8wMDAsXHJcbiAgICBzaXplOiAnMzk4IE1CJyxcclxuICAgIHBhcmFtZXRlcnM6ICcwLjVCJyxcclxuICAgIHVzZUNhc2U6ICdFZGdlIGRldmljZXMsIElvVCwgcmVzb3VyY2UtY29uc3RyYWluZWQgZW52aXJvbm1lbnRzJyxcclxuICAgIHF1YW50aXphdGlvbjogJ1E0X0tfTScsXHJcbiAgICBjb250ZXh0TGVuZ3RoOiA0MDk2LFxyXG4gICAgdXJsOiBgJHtIRl9CQVNFX1VSTH0vcnV2bHRyYS1zbWFsbC0wLjViLXE0X2tfbS5nZ3VmYCxcclxuICB9LFxyXG4gICdtZWRpdW0nOiB7XHJcbiAgICBpZDogJ21lZGl1bScsXHJcbiAgICBuYW1lOiAnUnV2TFRSQSBNZWRpdW0nLFxyXG4gICAgZmlsZW5hbWU6ICdydXZsdHJhLW1lZGl1bS0xLjFiLXE0X2tfbS5nZ3VmJyxcclxuICAgIHNpemVCeXRlczogNjY5XzAwMF8wMDAsXHJcbiAgICBzaXplOiAnNjY5IE1CJyxcclxuICAgIHBhcmFtZXRlcnM6ICcxLjFCJyxcclxuICAgIHVzZUNhc2U6ICdHZW5lcmFsIHB1cnBvc2UsIGJhbGFuY2VkIHBlcmZvcm1hbmNlJyxcclxuICAgIHF1YW50aXphdGlvbjogJ1E0X0tfTScsXHJcbiAgICBjb250ZXh0TGVuZ3RoOiA4MTkyLFxyXG4gICAgdXJsOiBgJHtIRl9CQVNFX1VSTH0vcnV2bHRyYS1tZWRpdW0tMS4xYi1xNF9rX20uZ2d1ZmAsXHJcbiAgfSxcclxufTtcclxuXHJcbi8qKiBNb2RlbCBhbGlhc2VzIGZvciBjb252ZW5pZW5jZSAqL1xyXG5leHBvcnQgY29uc3QgTU9ERUxfQUxJQVNFUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAnY2MnOiAnY2xhdWRlLWNvZGUnLFxyXG4gICdjbGF1ZGVjb2RlJzogJ2NsYXVkZS1jb2RlJyxcclxuICAnY2xhdWRlJzogJ2NsYXVkZS1jb2RlJyxcclxuICAncyc6ICdzbWFsbCcsXHJcbiAgJ3NtJzogJ3NtYWxsJyxcclxuICAnbSc6ICdtZWRpdW0nLFxyXG4gICdtZWQnOiAnbWVkaXVtJyxcclxuICAnZGVmYXVsdCc6ICdjbGF1ZGUtY29kZScsXHJcbn07XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBkZWZhdWx0IG1vZGVscyBkaXJlY3RvcnlcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0TW9kZWxzRGlyKCk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIGpvaW4oaG9tZWRpcigpLCAnLnJ1dmxsbScsICdtb2RlbHMnKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlc29sdmUgbW9kZWwgSUQgZnJvbSBhbGlhcyBvciBkaXJlY3QgSURcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTW9kZWxJZChtb2RlbElkT3JBbGlhczogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG1vZGVsSWRPckFsaWFzLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xyXG5cclxuICAvLyBEaXJlY3QgbWF0Y2hcclxuICBpZiAoUlVWTFRSQV9NT0RFTFNbbm9ybWFsaXplZF0pIHtcclxuICAgIHJldHVybiBub3JtYWxpemVkO1xyXG4gIH1cclxuXHJcbiAgLy8gQWxpYXMgbWF0Y2hcclxuICBpZiAoTU9ERUxfQUxJQVNFU1tub3JtYWxpemVkXSkge1xyXG4gICAgcmV0dXJuIE1PREVMX0FMSUFTRVNbbm9ybWFsaXplZF07XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbnVsbDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldCBtb2RlbCBpbmZvIGJ5IElEIG9yIGFsaWFzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kZWxJbmZvKG1vZGVsSWRPckFsaWFzOiBzdHJpbmcpOiBNb2RlbEluZm8gfCBudWxsIHtcclxuICBjb25zdCBpZCA9IHJlc29sdmVNb2RlbElkKG1vZGVsSWRPckFsaWFzKTtcclxuICByZXR1cm4gaWQgPyBSVVZMVFJBX01PREVMU1tpZF0gOiBudWxsO1xyXG59XHJcblxyXG4vKipcclxuICogTGlzdCBhbGwgYXZhaWxhYmxlIG1vZGVsc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RNb2RlbHMoKTogTW9kZWxJbmZvW10ge1xyXG4gIHJldHVybiBPYmplY3QudmFsdWVzKFJVVkxUUkFfTU9ERUxTKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1vZGVsIGRvd25sb2FkZXIgZm9yIFJ1dkxUUkEgR0dVRiBtb2RlbHNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBNb2RlbERvd25sb2FkZXIge1xyXG4gIHByaXZhdGUgbW9kZWxzRGlyOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKG1vZGVsc0Rpcj86IHN0cmluZykge1xyXG4gICAgdGhpcy5tb2RlbHNEaXIgPSBtb2RlbHNEaXIgfHwgZ2V0RGVmYXVsdE1vZGVsc0RpcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBwYXRoIHdoZXJlIGEgbW9kZWwgd291bGQgYmUgc2F2ZWRcclxuICAgKi9cclxuICBnZXRNb2RlbFBhdGgobW9kZWxJZE9yQWxpYXM6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3QgbW9kZWwgPSBnZXRNb2RlbEluZm8obW9kZWxJZE9yQWxpYXMpO1xyXG4gICAgaWYgKCFtb2RlbCkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gam9pbih0aGlzLm1vZGVsc0RpciwgbW9kZWwuZmlsZW5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgYSBtb2RlbCBpcyBhbHJlYWR5IGRvd25sb2FkZWRcclxuICAgKi9cclxuICBpc0Rvd25sb2FkZWQobW9kZWxJZE9yQWxpYXM6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuZ2V0TW9kZWxQYXRoKG1vZGVsSWRPckFsaWFzKTtcclxuICAgIGlmICghcGF0aCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmICghZXhpc3RzU3luYyhwYXRoKSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIC8vIFZlcmlmeSBzaXplIG1hdGNoZXMgZXhwZWN0ZWRcclxuICAgIGNvbnN0IG1vZGVsID0gZ2V0TW9kZWxJbmZvKG1vZGVsSWRPckFsaWFzKTtcclxuICAgIGlmICghbW9kZWwpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBzdGF0cyA9IHN0YXRTeW5jKHBhdGgpO1xyXG4gICAgLy8gQWxsb3cgNSUgdmFyaWFuY2UgZm9yIHNpemUgY2hlY2tcclxuICAgIGNvbnN0IG1pblNpemUgPSBtb2RlbC5zaXplQnl0ZXMgKiAwLjk1O1xyXG4gICAgcmV0dXJuIHN0YXRzLnNpemUgPj0gbWluU2l6ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBkb3dubG9hZCBzdGF0dXMgZm9yIGFsbCBtb2RlbHNcclxuICAgKi9cclxuICBnZXRTdGF0dXMoKTogeyBtb2RlbDogTW9kZWxJbmZvOyBkb3dubG9hZGVkOiBib29sZWFuOyBwYXRoOiBzdHJpbmcgfVtdIHtcclxuICAgIHJldHVybiBsaXN0TW9kZWxzKCkubWFwKG1vZGVsID0+ICh7XHJcbiAgICAgIG1vZGVsLFxyXG4gICAgICBkb3dubG9hZGVkOiB0aGlzLmlzRG93bmxvYWRlZChtb2RlbC5pZCksXHJcbiAgICAgIHBhdGg6IHRoaXMuZ2V0TW9kZWxQYXRoKG1vZGVsLmlkKSEsXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEb3dubG9hZCBhIG1vZGVsIGZyb20gSHVnZ2luZ0ZhY2VcclxuICAgKi9cclxuICBhc3luYyBkb3dubG9hZChcclxuICAgIG1vZGVsSWRPckFsaWFzOiBzdHJpbmcsXHJcbiAgICBvcHRpb25zOiBEb3dubG9hZE9wdGlvbnMgPSB7fVxyXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCBtb2RlbCA9IGdldE1vZGVsSW5mbyhtb2RlbElkT3JBbGlhcyk7XHJcbiAgICBpZiAoIW1vZGVsKSB7XHJcbiAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IGxpc3RNb2RlbHMoKS5tYXAobSA9PiBtLmlkKS5qb2luKCcsICcpO1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgYFVua25vd24gbW9kZWw6ICR7bW9kZWxJZE9yQWxpYXN9LiBBdmFpbGFibGUgbW9kZWxzOiAke2F2YWlsYWJsZX1gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGVzdERpciA9IG9wdGlvbnMubW9kZWxzRGlyIHx8IHRoaXMubW9kZWxzRGlyO1xyXG4gICAgY29uc3QgZGVzdFBhdGggPSBqb2luKGRlc3REaXIsIG1vZGVsLmZpbGVuYW1lKTtcclxuXHJcbiAgICAvLyBDaGVjayBpZiBhbHJlYWR5IGRvd25sb2FkZWRcclxuICAgIGlmICghb3B0aW9ucy5mb3JjZSAmJiB0aGlzLmlzRG93bmxvYWRlZChtb2RlbC5pZCkpIHtcclxuICAgICAgcmV0dXJuIGRlc3RQYXRoO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEVuc3VyZSBkaXJlY3RvcnkgZXhpc3RzXHJcbiAgICBpZiAoIWV4aXN0c1N5bmMoZGVzdERpcikpIHtcclxuICAgICAgbWtkaXJTeW5jKGRlc3REaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIERvd25sb2FkIHdpdGggcHJvZ3Jlc3MgdHJhY2tpbmdcclxuICAgIGNvbnN0IHRlbXBQYXRoID0gYCR7ZGVzdFBhdGh9LnRtcGA7XHJcbiAgICBsZXQgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgIGxldCBsYXN0UHJvZ3Jlc3NUaW1lID0gc3RhcnRUaW1lO1xyXG4gICAgbGV0IGxhc3REb3dubG9hZGVkID0gMDtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBVc2UgZHluYW1pYyBpbXBvcnQgZm9yIG5vZGUtZmV0Y2ggaWYgbmF0aXZlIGZldGNoIG5vdCBhdmFpbGFibGVcclxuICAgICAgY29uc3QgZmV0Y2hGbiA9IGdsb2JhbFRoaXMuZmV0Y2ggfHwgKGF3YWl0IGltcG9ydCgnbm9kZTpodHRwcycpKS5kZWZhdWx0O1xyXG5cclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChtb2RlbC51cmwsIHtcclxuICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAnVXNlci1BZ2VudCc6ICdSdXZMTE0vMi4zLjAnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSFRUUCAke3Jlc3BvbnNlLnN0YXR1c306ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgY29udGVudExlbmd0aCA9IHBhcnNlSW50KFxyXG4gICAgICAgIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LWxlbmd0aCcpIHx8IFN0cmluZyhtb2RlbC5zaXplQnl0ZXMpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyBDcmVhdGUgd3JpdGUgc3RyZWFtXHJcbiAgICAgIGNvbnN0IGZpbGVTdHJlYW0gPSBjcmVhdGVXcml0ZVN0cmVhbSh0ZW1wUGF0aCk7XHJcbiAgICAgIGxldCBkb3dubG9hZGVkID0gMDtcclxuXHJcbiAgICAgIC8vIFN0cmVhbSB3aXRoIHByb2dyZXNzXHJcbiAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpO1xyXG4gICAgICBpZiAoIXJlYWRlcikge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUmVzcG9uc2UgYm9keSBpcyBub3QgcmVhZGFibGUnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpO1xyXG4gICAgICAgIGlmIChkb25lKSBicmVhaztcclxuXHJcbiAgICAgICAgZG93bmxvYWRlZCArPSB2YWx1ZS5sZW5ndGg7XHJcbiAgICAgICAgZmlsZVN0cmVhbS53cml0ZSh2YWx1ZSk7XHJcblxyXG4gICAgICAgIC8vIFJlcG9ydCBwcm9ncmVzc1xyXG4gICAgICAgIGlmIChvcHRpb25zLm9uUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICBjb25zdCBlbGFwc2VkID0gKG5vdyAtIGxhc3RQcm9ncmVzc1RpbWUpIC8gMTAwMDtcclxuICAgICAgICAgIGNvbnN0IGJ5dGVzVGhpc0ludGVydmFsID0gZG93bmxvYWRlZCAtIGxhc3REb3dubG9hZGVkO1xyXG4gICAgICAgICAgY29uc3Qgc3BlZWRCcHMgPSBlbGFwc2VkID4gMCA/IGJ5dGVzVGhpc0ludGVydmFsIC8gZWxhcHNlZCA6IDA7XHJcbiAgICAgICAgICBjb25zdCByZW1haW5pbmcgPSBjb250ZW50TGVuZ3RoIC0gZG93bmxvYWRlZDtcclxuICAgICAgICAgIGNvbnN0IGV0YVNlY29uZHMgPSBzcGVlZEJwcyA+IDAgPyByZW1haW5pbmcgLyBzcGVlZEJwcyA6IDA7XHJcblxyXG4gICAgICAgICAgb3B0aW9ucy5vblByb2dyZXNzKHtcclxuICAgICAgICAgICAgbW9kZWxJZDogbW9kZWwuaWQsXHJcbiAgICAgICAgICAgIGRvd25sb2FkZWQsXHJcbiAgICAgICAgICAgIHRvdGFsOiBjb250ZW50TGVuZ3RoLFxyXG4gICAgICAgICAgICBwZXJjZW50OiBNYXRoLnJvdW5kKChkb3dubG9hZGVkIC8gY29udGVudExlbmd0aCkgKiAxMDApLFxyXG4gICAgICAgICAgICBzcGVlZEJwcyxcclxuICAgICAgICAgICAgZXRhU2Vjb25kcyxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGxhc3RQcm9ncmVzc1RpbWUgPSBub3c7XHJcbiAgICAgICAgICBsYXN0RG93bmxvYWRlZCA9IGRvd25sb2FkZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBmaWxlU3RyZWFtLmVuZCgpO1xyXG5cclxuICAgICAgLy8gV2FpdCBmb3IgZmlsZSB0byBiZSBmdWxseSB3cml0dGVuXHJcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICBmaWxlU3RyZWFtLm9uKCdmaW5pc2gnLCByZXNvbHZlKTtcclxuICAgICAgICBmaWxlU3RyZWFtLm9uKCdlcnJvcicsIHJlamVjdCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gTW92ZSB0ZW1wIGZpbGUgdG8gZmluYWwgZGVzdGluYXRpb25cclxuICAgICAgaWYgKGV4aXN0c1N5bmMoZGVzdFBhdGgpKSB7XHJcbiAgICAgICAgdW5saW5rU3luYyhkZXN0UGF0aCk7XHJcbiAgICAgIH1cclxuICAgICAgcmVuYW1lU3luYyh0ZW1wUGF0aCwgZGVzdFBhdGgpO1xyXG5cclxuICAgICAgcmV0dXJuIGRlc3RQYXRoO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgLy8gQ2xlYW4gdXAgdGVtcCBmaWxlIG9uIGVycm9yXHJcbiAgICAgIGlmIChleGlzdHNTeW5jKHRlbXBQYXRoKSkge1xyXG4gICAgICAgIHRyeSB7IHVubGlua1N5bmModGVtcFBhdGgpOyB9IGNhdGNoIHt9XHJcbiAgICAgIH1cclxuICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEb3dubG9hZCBhbGwgYXZhaWxhYmxlIG1vZGVsc1xyXG4gICAqL1xyXG4gIGFzeW5jIGRvd25sb2FkQWxsKG9wdGlvbnM6IERvd25sb2FkT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxzdHJpbmdbXT4ge1xyXG4gICAgY29uc3QgcGF0aHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIGxpc3RNb2RlbHMoKSkge1xyXG4gICAgICBjb25zdCBwYXRoID0gYXdhaXQgdGhpcy5kb3dubG9hZChtb2RlbC5pZCwgb3B0aW9ucyk7XHJcbiAgICAgIHBhdGhzLnB1c2gocGF0aCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGF0aHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGUgYSBkb3dubG9hZGVkIG1vZGVsXHJcbiAgICovXHJcbiAgZGVsZXRlKG1vZGVsSWRPckFsaWFzOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldE1vZGVsUGF0aChtb2RlbElkT3JBbGlhcyk7XHJcbiAgICBpZiAoIXBhdGggfHwgIWV4aXN0c1N5bmMocGF0aCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdW5saW5rU3luYyhwYXRoKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlIGFsbCBkb3dubG9hZGVkIG1vZGVsc1xyXG4gICAqL1xyXG4gIGRlbGV0ZUFsbCgpOiBudW1iZXIge1xyXG4gICAgbGV0IGNvdW50ID0gMDtcclxuICAgIGZvciAoY29uc3QgbW9kZWwgb2YgbGlzdE1vZGVscygpKSB7XHJcbiAgICAgIGlmICh0aGlzLmRlbGV0ZShtb2RlbC5pZCkpIHtcclxuICAgICAgICBjb3VudCsrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY291bnQ7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNb2RlbERvd25sb2FkZXI7XHJcbiJdfQ==
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxJQUFJLEVBQVcsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQTJEN0IsNkJBQTZCO0FBQzdCLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUM5QixNQUFNLFdBQVcsR0FBRywwQkFBMEIsT0FBTyxlQUFlLENBQUM7QUFFckUsK0JBQStCO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBOEI7SUFDdkQsYUFBYSxFQUFFO1FBQ2IsRUFBRSxFQUFFLGFBQWE7UUFDakIsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixRQUFRLEVBQUUsc0NBQXNDO1FBQ2hELFNBQVMsRUFBRSxTQUFXO1FBQ3RCLElBQUksRUFBRSxRQUFRO1FBQ2QsVUFBVSxFQUFFLE1BQU07UUFDbEIsT0FBTyxFQUFFLHVDQUF1QztRQUNoRCxZQUFZLEVBQUUsUUFBUTtRQUN0QixhQUFhLEVBQUUsSUFBSTtRQUNuQixHQUFHLEVBQUUsR0FBRyxXQUFXLHVDQUF1QztLQUMzRDtJQUNELE9BQU8sRUFBRTtRQUNQLEVBQUUsRUFBRSxPQUFPO1FBQ1gsSUFBSSxFQUFFLGVBQWU7UUFDckIsUUFBUSxFQUFFLGdDQUFnQztRQUMxQyxTQUFTLEVBQUUsU0FBVztRQUN0QixJQUFJLEVBQUUsUUFBUTtRQUNkLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE9BQU8sRUFBRSxzREFBc0Q7UUFDL0QsWUFBWSxFQUFFLFFBQVE7UUFDdEIsYUFBYSxFQUFFLElBQUk7UUFDbkIsR0FB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LE1BQU0sS0FBSyxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsY0FBc0I7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUztRQUNQLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLEtBQUssTUFBTSxLQUFLLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNqQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLEtBQUssRUFBRSxDQUFDO1lBQ1YsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQUVELGVBQWUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSdXZMVFJBIE1vZGVsIFJlZ2lzdHJ5IGFuZCBEb3dubG9hZGVyXG4gKlxuICogQXV0b21hdGljYWxseSBkb3dubG9hZHMgR0dVRiBtb2RlbHMgZnJvbSBIdWdnaW5nRmFjZSBIdWIuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IE1vZGVsRG93bmxvYWRlciwgUlVWTFRSQV9NT0RFTFMgfSBmcm9tICdAcnV2ZWN0b3IvcnV2bGxtJztcbiAqXG4gKiAvLyBEb3dubG9hZCB0aGUgQ2xhdWRlIENvZGUgb3B0aW1pemVkIG1vZGVsXG4gKiBjb25zdCBkb3dubG9hZGVyID0gbmV3IE1vZGVsRG93bmxvYWRlcigpO1xuICogY29uc3QgbW9kZWxQYXRoID0gYXdhaXQgZG93bmxvYWRlci5kb3dubG9hZCgnY2xhdWRlLWNvZGUnKTtcbiAqXG4gKiAvLyBPciBkb3dubG9hZCBhbGwgbW9kZWxzXG4gKiBhd2FpdCBkb3dubG9hZGVyLmRvd25sb2FkQWxsKCk7XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVXcml0ZVN0cmVhbSwgZXhpc3RzU3luYywgbWtkaXJTeW5jLCBzdGF0U3luYywgdW5saW5rU3luYywgcmVuYW1lU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGpvaW4sIGRpcm5hbWUgfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBwaXBlbGluZSB9IGZyb20gJ3N0cmVhbS9wcm9taXNlcyc7XG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcblxuLyoqIE1vZGVsIGluZm9ybWF0aW9uIGZyb20gSHVnZ2luZ0ZhY2UgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxJbmZvIHtcbiAgLyoqIE1vZGVsIGlkZW50aWZpZXIgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBNb2RlbCBmaWxlbmFtZSBvbiBIdWdnaW5nRmFjZSAqL1xuICBmaWxlbmFtZTogc3RyaW5nO1xuICAvKiogTW9kZWwgc2l6ZSBpbiBieXRlcyAqL1xuICBzaXplQnl0ZXM6IG51bWJlcjtcbiAgLyoqIE1vZGVsIHNpemUgKGh1bWFuIHJlYWRhYmxlKSAqL1xuICBzaXplOiBzdHJpbmc7XG4gIC8qKiBQYXJhbWV0ZXIgY291bnQgKi9cbiAgcGFyYW1ldGVyczogc3RyaW5nO1xuICAvKiogVXNlIGNhc2UgZGVzY3JpcHRpb24gKi9cbiAgdXNlQ2FzZTogc3RyaW5nO1xuICAvKiogUXVhbnRpemF0aW9uIHR5cGUgKi9cbiAgcXVhbnRpemF0aW9uOiBzdHJpbmc7XG4gIC8qKiBDb250ZXh0IHdpbmRvdyBzaXplICovXG4gIGNvbnRleHRMZW5ndGg6IG51bWJlcjtcbiAgLyoqIEh1Z2dpbmdGYWNlIGRvd25sb2FkIFVSTCAqL1xuICB1cmw6IHN0cmluZztcbn1cblxuLyoqIERvd25sb2FkIHByb2dyZXNzIGNhbGxiYWNrICovXG5leHBvcnQgdHlwZSBQcm9ncmVzc0NhbGxiYWNrID0gKHByb2dyZXNzOiBEb3dubG9hZFByb2dyZXNzKSA9PiB2b2lkO1xuXG4vKiogRG93bmxvYWQgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG93bmxvYWRQcm9ncmVzcyB7XG4gIC8qKiBNb2RlbCBiZWluZyBkb3dubG9hZGVkICovXG4gIG1vZGVsSWQ6IHN0cmluZztcbiAgLyoqIEJ5dGVzIGRvd25sb2FkZWQgc28gZmFyICovXG4gIGRvd25sb2FkZWQ6IG51bWJlcjtcbiAgLyoqIFRvdGFsIGJ5dGVzIHRvIGRvd25sb2FkICovXG4gIHRvdGFsOiBudW1iZXI7XG4gIC8qKiBEb3dubG9hZCBwZXJjZW50YWdlICgwLTEwMCkgKi9cbiAgcGVyY2VudDogbnVtYmVyO1xuICAvKiogRG93bmxvYWQgc3BlZWQgaW4gYnl0ZXMgcGVyIHNlY29uZCAqL1xuICBzcGVlZEJwczogbnVtYmVyO1xuICAvKiogRXN0aW1hdGVkIHRpbWUgcmVtYWluaW5nIGluIHNlY29uZHMgKi9cbiAgZXRhU2Vjb25kczogbnVtYmVyO1xufVxuXG4vKiogRG93bmxvYWQgb3B0aW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBEb3dubG9hZE9wdGlvbnMge1xuICAvKiogRGlyZWN0b3J5IHRvIHNhdmUgbW9kZWxzIChkZWZhdWx0OiB+Ly5ydXZsbG0vbW9kZWxzKSAqL1xuICBtb2RlbHNEaXI/OiBzdHJpbmc7XG4gIC8qKiBGb3JjZSByZS1kb3dubG9hZCBldmVuIGlmIGZpbGUgZXhpc3RzICovXG4gIGZvcmNlPzogYm9vbGVhbjtcbiAgLyoqIFByb2dyZXNzIGNhbGxiYWNrICovXG4gIG9uUHJvZ3Jlc3M/OiBQcm9ncmVzc0NhbGxiYWNrO1xuICAvKiogVmVyaWZ5IGZpbGUgaW50ZWdyaXR5IGFmdGVyIGRvd25sb2FkICovXG4gIHZlcmlmeT86IGJvb2xlYW47XG59XG5cbi8qKiBIdWdnaW5nRmFjZSByZXBvc2l0b3J5ICovXG5jb25zdCBIRl9SRVBPID0gJ3J1di9ydXZsdHJhJztcbmNvbnN0IEhGX0JBU0VfVVJMID0gYGh0dHBzOi8vaHVnZ2luZ2ZhY2UuY28vJHtIRl9SRVBPfS9yZXNvbHZlL21haW5gO1xuXG4vKiogQXZhaWxhYmxlIFJ1dkxUUkEgbW9kZWxzICovXG5leHBvcnQgY29uc3QgUlVWTFRSQV9NT0RFTFM6IFJlY29yZDxzdHJpbmcsIE1vZGVsSW5mbz4gPSB7XG4gICdjbGF1ZGUtY29kZSc6IHtcbiAgICBpZDogJ2NsYXVkZS1jb2RlJyxcbiAgICBuYW1lOiAnUnV2TFRSQSBDbGF1ZGUgQ29kZScsXG4gICAgZmlsZW5hbWU6ICdydXZsdHJhLWNsYXVkZS1jb2RlLTAuNWItcTRfa19tLmdndWYnLFxuICAgIHNpemVCeXRlczogMzk4XzAwMF8wMDAsXG4gICAgc2l6ZTogJzM5OCBNQicsXG4gICAgcGFyYW1ldGVyczogJzAuNUInLFxuICAgIHVzZUNhc2U6ICdDbGF1ZGUgQ29kZSB3b3JrZmxvd3MsIGFnZW50aWMgY29kaW5nJyxcbiAgICBxdWFudGl6YXRpb246ICdRNF9LX00nLFxuICAgIGNvbnRleHRMZW5ndGg6IDQwOTYsXG4gICAgdXJsOiBgJHtIRl9CQVNFX1VSTH0vcnV2bHRyYS1jbGF1ZGUtY29kZS0wLjViLXE0X2tfbS5nZ3VmYCxcbiAgfSxcbiAgJ3NtYWxsJzoge1xuICAgIGlkOiAnc21hbGwnLFxuICAgIG5hbWU6ICdSdXZMVFJBIFNtYWxsJyxcbiAgICBmaWxlbmFtZTogJ3J1dmx0cmEtc21hbGwtMC41Yi1xNF9rX20uZ2d1ZicsXG4gICAgc2l6ZUJ5dGVzOiAzOThfMDAwXzAwMCxcbiAgICBzaXplOiAnMzk4IE1CJyxcbiAgICBwYXJhbWV0ZXJzOiAnMC41QicsXG4gICAgdXNlQ2FzZTogJ0VkZ2UgZGV2aWNlcywgSW9ULCByZXNvdXJjZS1jb25zdHJhaW5lZCBlbnZpcm9ubWVudHMnLFxuICAgIHF1YW50aXphdGlvbjogJ1E0X0tfTScsXG4gICAgY29udGV4dExlbmd0aDogNDA5NixcbiAgICB1cmw6IGAke0hGX0JBU0VfVVJMfS9ydXZsdHJhLXNtYWxsLTAuNWItcTRfa19tLmdndWZgLFxuICB9LFxuICAnbWVkaXVtJzoge1xuICAgIGlkOiAnbWVkaXVtJyxcbiAgICBuYW1lOiAnUnV2TFRSQSBNZWRpdW0nLFxuICAgIGZpbGVuYW1lOiAncnV2bHRyYS1tZWRpdW0tMS4xYi1xNF9rX20uZ2d1ZicsXG4gICAgc2l6ZUJ5dGVzOiA2NjlfMDAwXzAwMCxcbiAgICBzaXplOiAnNjY5IE1CJyxcbiAgICBwYXJhbWV0ZXJzOiAnMS4xQicsXG4gICAgdXNlQ2FzZTogJ0dlbmVyYWwgcHVycG9zZSwgYmFsYW5jZWQgcGVyZm9ybWFuY2UnLFxuICAgIHF1YW50aXphdGlvbjogJ1E0X0tfTScsXG4gICAgY29udGV4dExlbmd0aDogODE5MixcbiAgICB1cmw6IGAke0hGX0JBU0VfVVJMfS9ydXZsdHJhLW1lZGl1bS0xLjFiLXE0X2tfbS5nZ3VmYCxcbiAgfSxcbn07XG5cbi8qKiBNb2RlbCBhbGlhc2VzIGZvciBjb252ZW5pZW5jZSAqL1xuZXhwb3J0IGNvbnN0IE1PREVMX0FMSUFTRVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdjYyc6ICdjbGF1ZGUtY29kZScsXG4gICdjbGF1ZGVjb2RlJzogJ2NsYXVkZS1jb2RlJyxcbiAgJ2NsYXVkZSc6ICdjbGF1ZGUtY29kZScsXG4gICdzJzogJ3NtYWxsJyxcbiAgJ3NtJzogJ3NtYWxsJyxcbiAgJ20nOiAnbWVkaXVtJyxcbiAgJ21lZCc6ICdtZWRpdW0nLFxuICAnZGVmYXVsdCc6ICdjbGF1ZGUtY29kZScsXG59O1xuXG4vKipcbiAqIEdldCB0aGUgZGVmYXVsdCBtb2RlbHMgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0TW9kZWxzRGlyKCk6IHN0cmluZyB7XG4gIHJldHVybiBqb2luKGhvbWVkaXIoKSwgJy5ydXZsbG0nLCAnbW9kZWxzJyk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBtb2RlbCBJRCBmcm9tIGFsaWFzIG9yIGRpcmVjdCBJRFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU1vZGVsSWQobW9kZWxJZE9yQWxpYXM6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBub3JtYWxpemVkID0gbW9kZWxJZE9yQWxpYXMudG9Mb3dlckNhc2UoKS50cmltKCk7XG5cbiAgLy8gRGlyZWN0IG1hdGNoXG4gIGlmIChSVVZMVFJBX01PREVMU1tub3JtYWxpemVkXSkge1xuICAgIHJldHVybiBub3JtYWxpemVkO1xuICB9XG5cbiAgLy8gQWxpYXMgbWF0Y2hcbiAgaWYgKE1PREVMX0FMSUFTRVNbbm9ybWFsaXplZF0pIHtcbiAgICByZXR1cm4gTU9ERUxfQUxJQVNFU1tub3JtYWxpemVkXTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEdldCBtb2RlbCBpbmZvIGJ5IElEIG9yIGFsaWFzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb2RlbEluZm8obW9kZWxJZE9yQWxpYXM6IHN0cmluZyk6IE1vZGVsSW5mbyB8IG51bGwge1xuICBjb25zdCBpZCA9IHJlc29sdmVNb2RlbElkKG1vZGVsSWRPckFsaWFzKTtcbiAgcmV0dXJuIGlkID8gUlVWTFRSQV9NT0RFTFNbaWRdIDogbnVsbDtcbn1cblxuLyoqXG4gKiBMaXN0IGFsbCBhdmFpbGFibGUgbW9kZWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0TW9kZWxzKCk6IE1vZGVsSW5mb1tdIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoUlVWTFRSQV9NT0RFTFMpO1xufVxuXG4vKipcbiAqIE1vZGVsIGRvd25sb2FkZXIgZm9yIFJ1dkxUUkEgR0dVRiBtb2RlbHNcbiAqL1xuZXhwb3J0IGNsYXNzIE1vZGVsRG93bmxvYWRlciB7XG4gIHByaXZhdGUgbW9kZWxzRGlyOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobW9kZWxzRGlyPzogc3RyaW5nKSB7XG4gICAgdGhpcy5tb2RlbHNEaXIgPSBtb2RlbHNEaXIgfHwgZ2V0RGVmYXVsdE1vZGVsc0RpcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcGF0aCB3aGVyZSBhIG1vZGVsIHdvdWxkIGJlIHNhdmVkXG4gICAqL1xuICBnZXRNb2RlbFBhdGgobW9kZWxJZE9yQWxpYXM6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IG1vZGVsID0gZ2V0TW9kZWxJbmZvKG1vZGVsSWRPckFsaWFzKTtcbiAgICBpZiAoIW1vZGVsKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gam9pbih0aGlzLm1vZGVsc0RpciwgbW9kZWwuZmlsZW5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbW9kZWwgaXMgYWxyZWFkeSBkb3dubG9hZGVkXG4gICAqL1xuICBpc0Rvd25sb2FkZWQobW9kZWxJZE9yQWxpYXM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldE1vZGVsUGF0aChtb2RlbElkT3JBbGlhcyk7XG4gICAgaWYgKCFwYXRoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAoIWV4aXN0c1N5bmMocGF0aCkpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIFZlcmlmeSBzaXplIG1hdGNoZXMgZXhwZWN0ZWRcbiAgICBjb25zdCBtb2RlbCA9IGdldE1vZGVsSW5mbyhtb2RlbElkT3JBbGlhcyk7XG4gICAgaWYgKCFtb2RlbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdHMgPSBzdGF0U3luYyhwYXRoKTtcbiAgICAvLyBBbGxvdyA1JSB2YXJpYW5jZSBmb3Igc2l6ZSBjaGVja1xuICAgIGNvbnN0IG1pblNpemUgPSBtb2RlbC5zaXplQnl0ZXMgKiAwLjk1O1xuICAgIHJldHVybiBzdGF0cy5zaXplID49IG1pblNpemU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRvd25sb2FkIHN0YXR1cyBmb3IgYWxsIG1vZGVsc1xuICAgKi9cbiAgZ2V0U3RhdHVzKCk6IHsgbW9kZWw6IE1vZGVsSW5mbzsgZG93bmxvYWRlZDogYm9vbGVhbjsgcGF0aDogc3RyaW5nIH1bXSB7XG4gICAgcmV0dXJuIGxpc3RNb2RlbHMoKS5tYXAobW9kZWwgPT4gKHtcbiAgICAgIG1vZGVsLFxuICAgICAgZG93bmxvYWRlZDogdGhpcy5pc0Rvd25sb2FkZWQobW9kZWwuaWQpLFxuICAgICAgcGF0aDogdGhpcy5nZXRNb2RlbFBhdGgobW9kZWwuaWQpISxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRG93bmxvYWQgYSBtb2RlbCBmcm9tIEh1Z2dpbmdGYWNlXG4gICAqL1xuICBhc3luYyBkb3dubG9hZChcbiAgICBtb2RlbElkT3JBbGlhczogc3RyaW5nLFxuICAgIG9wdGlvbnM6IERvd25sb2FkT3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgbW9kZWwgPSBnZXRNb2RlbEluZm8obW9kZWxJZE9yQWxpYXMpO1xuICAgIGlmICghbW9kZWwpIHtcbiAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IGxpc3RNb2RlbHMoKS5tYXAobSA9PiBtLmlkKS5qb2luKCcsICcpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5rbm93biBtb2RlbDogJHttb2RlbElkT3JBbGlhc30uIEF2YWlsYWJsZSBtb2RlbHM6ICR7YXZhaWxhYmxlfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVzdERpciA9IG9wdGlvbnMubW9kZWxzRGlyIHx8IHRoaXMubW9kZWxzRGlyO1xuICAgIGNvbnN0IGRlc3RQYXRoID0gam9pbihkZXN0RGlyLCBtb2RlbC5maWxlbmFtZSk7XG5cbiAgICAvLyBDaGVjayBpZiBhbHJlYWR5IGRvd25sb2FkZWRcbiAgICBpZiAoIW9wdGlvbnMuZm9yY2UgJiYgdGhpcy5pc0Rvd25sb2FkZWQobW9kZWwuaWQpKSB7XG4gICAgICByZXR1cm4gZGVzdFBhdGg7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIGRpcmVjdG9yeSBleGlzdHNcbiAgICBpZiAoIWV4aXN0c1N5bmMoZGVzdERpcikpIHtcbiAgICAgIG1rZGlyU3luYyhkZXN0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvLyBEb3dubG9hZCB3aXRoIHByb2dyZXNzIHRyYWNraW5nXG4gICAgY29uc3QgdGVtcFBhdGggPSBgJHtkZXN0UGF0aH0udG1wYDtcbiAgICBsZXQgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgbGFzdFByb2dyZXNzVGltZSA9IHN0YXJ0VGltZTtcbiAgICBsZXQgbGFzdERvd25sb2FkZWQgPSAwO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBkeW5hbWljIGltcG9ydCBmb3Igbm9kZS1mZXRjaCBpZiBuYXRpdmUgZmV0Y2ggbm90IGF2YWlsYWJsZVxuICAgICAgY29uc3QgZmV0Y2hGbiA9IGdsb2JhbFRoaXMuZmV0Y2ggfHwgKGF3YWl0IGltcG9ydCgnbm9kZTpodHRwcycpKS5kZWZhdWx0O1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKG1vZGVsLnVybCwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ1VzZXItQWdlbnQnOiAnUnV2TExNLzIuMy4wJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSFRUUCAke3Jlc3BvbnNlLnN0YXR1c306ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudExlbmd0aCA9IHBhcnNlSW50KFxuICAgICAgICByZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC1sZW5ndGgnKSB8fCBTdHJpbmcobW9kZWwuc2l6ZUJ5dGVzKVxuICAgICAgKTtcblxuICAgICAgLy8gQ3JlYXRlIHdyaXRlIHN0cmVhbVxuICAgICAgY29uc3QgZmlsZVN0cmVhbSA9IGNyZWF0ZVdyaXRlU3RyZWFtKHRlbXBQYXRoKTtcbiAgICAgIGxldCBkb3dubG9hZGVkID0gMDtcblxuICAgICAgLy8gU3RyZWFtIHdpdGggcHJvZ3Jlc3NcbiAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpO1xuICAgICAgaWYgKCFyZWFkZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXNwb25zZSBib2R5IGlzIG5vdCByZWFkYWJsZScpO1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuICAgICAgICBpZiAoZG9uZSkgYnJlYWs7XG5cbiAgICAgICAgZG93bmxvYWRlZCArPSB2YWx1ZS5sZW5ndGg7XG4gICAgICAgIGZpbGVTdHJlYW0ud3JpdGUodmFsdWUpO1xuXG4gICAgICAgIC8vIFJlcG9ydCBwcm9ncmVzc1xuICAgICAgICBpZiAob3B0aW9ucy5vblByb2dyZXNzKSB7XG4gICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICBjb25zdCBlbGFwc2VkID0gKG5vdyAtIGxhc3RQcm9ncmVzc1RpbWUpIC8gMTAwMDtcbiAgICAgICAgICBjb25zdCBieXRlc1RoaXNJbnRlcnZhbCA9IGRvd25sb2FkZWQgLSBsYXN0RG93bmxvYWRlZDtcbiAgICAgICAgICBjb25zdCBzcGVlZEJwcyA9IGVsYXBzZWQgPiAwID8gYnl0ZXNUaGlzSW50ZXJ2YWwgLyBlbGFwc2VkIDogMDtcbiAgICAgICAgICBjb25zdCByZW1haW5pbmcgPSBjb250ZW50TGVuZ3RoIC0gZG93bmxvYWRlZDtcbiAgICAgICAgICBjb25zdCBldGFTZWNvbmRzID0gc3BlZWRCcHMgPiAwID8gcmVtYWluaW5nIC8gc3BlZWRCcHMgOiAwO1xuXG4gICAgICAgICAgb3B0aW9ucy5vblByb2dyZXNzKHtcbiAgICAgICAgICAgIG1vZGVsSWQ6IG1vZGVsLmlkLFxuICAgICAgICAgICAgZG93bmxvYWRlZCxcbiAgICAgICAgICAgIHRvdGFsOiBjb250ZW50TGVuZ3RoLFxuICAgICAgICAgICAgcGVyY2VudDogTWF0aC5yb3VuZCgoZG93bmxvYWRlZCAvIGNvbnRlbnRMZW5ndGgpICogMTAwKSxcbiAgICAgICAgICAgIHNwZWVkQnBzLFxuICAgICAgICAgICAgZXRhU2Vjb25kcyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGxhc3RQcm9ncmVzc1RpbWUgPSBub3c7XG4gICAgICAgICAgbGFzdERvd25sb2FkZWQgPSBkb3dubG9hZGVkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZpbGVTdHJlYW0uZW5kKCk7XG5cbiAgICAgIC8vIFdhaXQgZm9yIGZpbGUgdG8gYmUgZnVsbHkgd3JpdHRlblxuICAgICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBmaWxlU3RyZWFtLm9uKCdmaW5pc2gnLCByZXNvbHZlKTtcbiAgICAgICAgZmlsZVN0cmVhbS5vbignZXJyb3InLCByZWplY3QpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIE1vdmUgdGVtcCBmaWxlIHRvIGZpbmFsIGRlc3RpbmF0aW9uXG4gICAgICBpZiAoZXhpc3RzU3luYyhkZXN0UGF0aCkpIHtcbiAgICAgICAgdW5saW5rU3luYyhkZXN0UGF0aCk7XG4gICAgICB9XG4gICAgICByZW5hbWVTeW5jKHRlbXBQYXRoLCBkZXN0UGF0aCk7XG5cbiAgICAgIHJldHVybiBkZXN0UGF0aDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gQ2xlYW4gdXAgdGVtcCBmaWxlIG9uIGVycm9yXG4gICAgICBpZiAoZXhpc3RzU3luYyh0ZW1wUGF0aCkpIHtcbiAgICAgICAgdHJ5IHsgdW5saW5rU3luYyh0ZW1wUGF0aCk7IH0gY2F0Y2gge31cbiAgICAgIH1cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEb3dubG9hZCBhbGwgYXZhaWxhYmxlIG1vZGVsc1xuICAgKi9cbiAgYXN5bmMgZG93bmxvYWRBbGwob3B0aW9uczogRG93bmxvYWRPcHRpb25zID0ge30pOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgcGF0aHM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiBsaXN0TW9kZWxzKCkpIHtcbiAgICAgIGNvbnN0IHBhdGggPSBhd2FpdCB0aGlzLmRvd25sb2FkKG1vZGVsLmlkLCBvcHRpb25zKTtcbiAgICAgIHBhdGhzLnB1c2gocGF0aCk7XG4gICAgfVxuICAgIHJldHVybiBwYXRocztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYSBkb3dubG9hZGVkIG1vZGVsXG4gICAqL1xuICBkZWxldGUobW9kZWxJZE9yQWxpYXM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldE1vZGVsUGF0aChtb2RlbElkT3JBbGlhcyk7XG4gICAgaWYgKCFwYXRoIHx8ICFleGlzdHNTeW5jKHBhdGgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHVubGlua1N5bmMocGF0aCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGFsbCBkb3dubG9hZGVkIG1vZGVsc1xuICAgKi9cbiAgZGVsZXRlQWxsKCk6IG51bWJlciB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIGxpc3RNb2RlbHMoKSkge1xuICAgICAgaWYgKHRoaXMuZGVsZXRlKG1vZGVsLmlkKSkge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTW9kZWxEb3dubG9hZGVyO1xuIl19
@@ -69,4 +69,4 @@ export function hasSimdSupport() {
69
69
  const mod = loadNativeModule();
70
70
  return mod?.hasSimdSupport() ?? false;
71
71
  }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QixnQ0FBZ0M7QUFDaEMsSUFBSSxZQUFZLEdBQXdCLElBQUksQ0FBQztBQThGN0Msa0NBQWtDO0FBQ2xDLE1BQU0saUJBQWlCLEdBQTJCO0lBQ2hELFlBQVksRUFBRSw2QkFBNkI7SUFDM0MsY0FBYyxFQUFFLCtCQUErQjtJQUMvQyxXQUFXLEVBQUUsZ0NBQWdDO0lBQzdDLGFBQWEsRUFBRSxrQ0FBa0M7SUFDakQsV0FBVyxFQUFFLGlDQUFpQztDQUMvQyxDQUFDO0FBRUYsU0FBUyxjQUFjO0lBQ3JCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDbEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUMxQixPQUFPLEdBQUcsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFFRCxTQUFTLGdCQUFnQjtJQUN2QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxjQUFjLEVBQUUsQ0FBQztJQUNyQyxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVuRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsMkNBQTJDO1FBQzNDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxNQUFNLFFBQVEsR0FBRztRQUNmLG9DQUFvQztRQUNwQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQzFCLGdEQUFnRDtRQUNoRCxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3pELDJDQUEyQztRQUMzQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDcEQsQ0FBQztJQUVGLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFxQixDQUFDO1lBQ3pDLG9FQUFvRTtZQUNwRSxZQUFZLEdBQUc7Z0JBQ2IsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDLFlBQWE7Z0JBQ25ELGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztnQkFDbEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO2dCQUNwQixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7YUFDbkMsQ0FBQztZQUNGLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwyQkFBMkI7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sZ0JBQWdCLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU87SUFDckIsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUMvQixPQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjO0lBQzVCLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDL0IsT0FBTyxHQUFHLEVBQUUsY0FBYyxFQUFFLElBQUksS0FBSyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogTmF0aXZlIGJpbmRpbmdzIGxvYWRlciBmb3IgUnV2TExNXHJcbiAqXHJcbiAqIEF1dG9tYXRpY2FsbHkgbG9hZHMgdGhlIGNvcnJlY3QgbmF0aXZlIGJpbmFyeSBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0uXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xyXG5cclxuLy8gVHJ5IHRvIGxvYWQgdGhlIG5hdGl2ZSBtb2R1bGVcclxubGV0IG5hdGl2ZU1vZHVsZTogTmF0aXZlUnV2TExNIHwgbnVsbCA9IG51bGw7XHJcblxyXG5pbnRlcmZhY2UgTmF0aXZlUnV2TExNIHtcclxuICAvLyBOYXRpdmUgZXhwb3J0cyBSdXZMbG1FbmdpbmUgKGNhbWVsQ2FzZSksIHdlIG5vcm1hbGl6ZSB0byBSdXZMTE1FbmdpbmVcclxuICBSdXZMTE1FbmdpbmU6IG5ldyAoY29uZmlnPzogTmF0aXZlQ29uZmlnKSA9PiBOYXRpdmVFbmdpbmU7XHJcbiAgU2ltZE9wZXJhdGlvbnM6IG5ldyAoKSA9PiBOYXRpdmVTaW1kT3BzO1xyXG4gIHZlcnNpb246ICgpID0+IHN0cmluZztcclxuICBoYXNTaW1kU3VwcG9ydDogKCkgPT4gYm9vbGVhbjtcclxufVxyXG5cclxuLy8gUmF3IG5hdGl2ZSBtb2R1bGUgaW50ZXJmYWNlIChhY3R1YWwgZXhwb3J0IG5hbWVzKVxyXG5pbnRlcmZhY2UgUmF3TmF0aXZlTW9kdWxlIHtcclxuICBSdXZMbG1FbmdpbmU/OiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xyXG4gIFJ1dkxMTUVuZ2luZT86IG5ldyAoY29uZmlnPzogTmF0aXZlQ29uZmlnKSA9PiBOYXRpdmVFbmdpbmU7XHJcbiAgU2ltZE9wZXJhdGlvbnM6IG5ldyAoKSA9PiBOYXRpdmVTaW1kT3BzO1xyXG4gIHZlcnNpb246ICgpID0+IHN0cmluZztcclxuICBoYXNTaW1kU3VwcG9ydDogKCkgPT4gYm9vbGVhbjtcclxufVxyXG5cclxuaW50ZXJmYWNlIE5hdGl2ZUNvbmZpZyB7XHJcbiAgZW1iZWRkaW5nX2RpbT86IG51bWJlcjtcclxuICByb3V0ZXJfaGlkZGVuX2RpbT86IG51bWJlcjtcclxuICBobnN3X20/OiBudW1iZXI7XHJcbiAgaG5zd19lZl9jb25zdHJ1Y3Rpb24/OiBudW1iZXI7XHJcbiAgaG5zd19lZl9zZWFyY2g/OiBudW1iZXI7XHJcbiAgbGVhcm5pbmdfZW5hYmxlZD86IGJvb2xlYW47XHJcbiAgcXVhbGl0eV90aHJlc2hvbGQ/OiBudW1iZXI7XHJcbiAgZXdjX2xhbWJkYT86IG51bWJlcjtcclxufVxyXG5cclxuaW50ZXJmYWNlIE5hdGl2ZUVuZ2luZSB7XHJcbiAgcXVlcnkodGV4dDogc3RyaW5nLCBjb25maWc/OiBOYXRpdmVHZW5Db25maWcpOiBOYXRpdmVRdWVyeVJlc3BvbnNlO1xyXG4gIGdlbmVyYXRlKHByb21wdDogc3RyaW5nLCBjb25maWc/OiBOYXRpdmVHZW5Db25maWcpOiBzdHJpbmc7XHJcbiAgcm91dGUodGV4dDogc3RyaW5nKTogTmF0aXZlUm91dGluZ0RlY2lzaW9uO1xyXG4gIHNlYXJjaE1lbW9yeSh0ZXh0OiBzdHJpbmcsIGs/OiBudW1iZXIpOiBOYXRpdmVNZW1vcnlSZXN1bHRbXTtcclxuICBhZGRNZW1vcnkoY29udGVudDogc3RyaW5nLCBtZXRhZGF0YT86IHN0cmluZyk6IG51bWJlcjtcclxuICBmZWVkYmFjayhyZXF1ZXN0SWQ6IHN0cmluZywgcmF0aW5nOiBudW1iZXIsIGNvcnJlY3Rpb24/OiBzdHJpbmcpOiBib29sZWFuO1xyXG4gIHN0YXRzKCk6IE5hdGl2ZVN0YXRzO1xyXG4gIGZvcmNlTGVhcm4oKTogc3RyaW5nO1xyXG4gIGVtYmVkKHRleHQ6IHN0cmluZyk6IG51bWJlcltdO1xyXG4gIHNpbWlsYXJpdHkodGV4dDE6IHN0cmluZywgdGV4dDI6IHN0cmluZyk6IG51bWJlcjtcclxuICBoYXNTaW1kKCk6IGJvb2xlYW47XHJcbiAgc2ltZENhcGFiaWxpdGllcygpOiBzdHJpbmdbXTtcclxufVxyXG5cclxuaW50ZXJmYWNlIE5hdGl2ZUdlbkNvbmZpZyB7XHJcbiAgbWF4X3Rva2Vucz86IG51bWJlcjtcclxuICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcclxuICB0b3BfcD86IG51bWJlcjtcclxuICB0b3Bfaz86IG51bWJlcjtcclxuICByZXBldGl0aW9uX3BlbmFsdHk/OiBudW1iZXI7XHJcbn1cclxuXHJcbmludGVyZmFjZSBOYXRpdmVRdWVyeVJlc3BvbnNlIHtcclxuICB0ZXh0OiBzdHJpbmc7XHJcbiAgY29uZmlkZW5jZTogbnVtYmVyO1xyXG4gIG1vZGVsOiBzdHJpbmc7XHJcbiAgY29udGV4dF9zaXplOiBudW1iZXI7XHJcbiAgbGF0ZW5jeV9tczogbnVtYmVyO1xyXG4gIHJlcXVlc3RfaWQ6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIE5hdGl2ZVJvdXRpbmdEZWNpc2lvbiB7XHJcbiAgbW9kZWw6IHN0cmluZztcclxuICBjb250ZXh0X3NpemU6IG51bWJlcjtcclxuICB0ZW1wZXJhdHVyZTogbnVtYmVyO1xyXG4gIHRvcF9wOiBudW1iZXI7XHJcbiAgY29uZmlkZW5jZTogbnVtYmVyO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTmF0aXZlTWVtb3J5UmVzdWx0IHtcclxuICBpZDogbnVtYmVyO1xyXG4gIHNjb3JlOiBudW1iZXI7XHJcbiAgY29udGVudDogc3RyaW5nO1xyXG4gIG1ldGFkYXRhOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBOYXRpdmVTdGF0cyB7XHJcbiAgdG90YWxfcXVlcmllczogbnVtYmVyO1xyXG4gIG1lbW9yeV9ub2RlczogbnVtYmVyO1xyXG4gIHBhdHRlcm5zX2xlYXJuZWQ6IG51bWJlcjtcclxuICBhdmdfbGF0ZW5jeV9tczogbnVtYmVyO1xyXG4gIGNhY2hlX2hpdF9yYXRlOiBudW1iZXI7XHJcbiAgcm91dGVyX2FjY3VyYWN5OiBudW1iZXI7XHJcbn1cclxuXHJcbmludGVyZmFjZSBOYXRpdmVTaW1kT3BzIHtcclxuICBkb3RQcm9kdWN0KGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlcjtcclxuICBjb3NpbmVTaW1pbGFyaXR5KGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlcjtcclxuICBsMkRpc3RhbmNlKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlcjtcclxuICBtYXR2ZWMobWF0cml4OiBudW1iZXJbXVtdLCB2ZWN0b3I6IG51bWJlcltdKTogbnVtYmVyW107XHJcbiAgc29mdG1heChpbnB1dDogbnVtYmVyW10pOiBudW1iZXJbXTtcclxufVxyXG5cclxuLy8gUGxhdGZvcm0tc3BlY2lmaWMgcGFja2FnZSBuYW1lc1xyXG5jb25zdCBQTEFURk9STV9QQUNLQUdFUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAnZGFyd2luLXg2NCc6ICdAcnV2ZWN0b3IvcnV2bGxtLWRhcndpbi14NjQnLFxyXG4gICdkYXJ3aW4tYXJtNjQnOiAnQHJ1dmVjdG9yL3J1dmxsbS1kYXJ3aW4tYXJtNjQnLFxyXG4gICdsaW51eC14NjQnOiAnQHJ1dmVjdG9yL3J1dmxsbS1saW51eC14NjQtZ251JyxcclxuICAnbGludXgtYXJtNjQnOiAnQHJ1dmVjdG9yL3J1dmxsbS1saW51eC1hcm02NC1nbnUnLFxyXG4gICd3aW4zMi14NjQnOiAnQHJ1dmVjdG9yL3J1dmxsbS13aW4zMi14NjQtbXN2YycsXHJcbn07XHJcblxyXG5mdW5jdGlvbiBnZXRQbGF0Zm9ybUtleSgpOiBzdHJpbmcge1xyXG4gIGNvbnN0IHBsYXRmb3JtID0gcHJvY2Vzcy5wbGF0Zm9ybTtcclxuICBjb25zdCBhcmNoID0gcHJvY2Vzcy5hcmNoO1xyXG4gIHJldHVybiBgJHtwbGF0Zm9ybX0tJHthcmNofWA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGxvYWROYXRpdmVNb2R1bGUoKTogTmF0aXZlUnV2TExNIHwgbnVsbCB7XHJcbiAgaWYgKG5hdGl2ZU1vZHVsZSkge1xyXG4gICAgcmV0dXJuIG5hdGl2ZU1vZHVsZTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHBsYXRmb3JtS2V5ID0gZ2V0UGxhdGZvcm1LZXkoKTtcclxuICBjb25zdCBwYWNrYWdlTmFtZSA9IFBMQVRGT1JNX1BBQ0tBR0VTW3BsYXRmb3JtS2V5XTtcclxuXHJcbiAgaWYgKCFwYWNrYWdlTmFtZSkge1xyXG4gICAgLy8gU2lsZW50bHkgZmFpbCAtIEpTIGZhbGxiYWNrIHdpbGwgYmUgdXNlZFxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBUcnkgbG9hZGluZyBmcm9tIG9wdGlvbmFsIGRlcGVuZGVuY2llc1xyXG4gIGNvbnN0IGF0dGVtcHRzID0gW1xyXG4gICAgLy8gVHJ5IHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBwYWNrYWdlXHJcbiAgICAoKSA9PiByZXF1aXJlKHBhY2thZ2VOYW1lKSxcclxuICAgIC8vIFRyeSBsb2FkaW5nIGZyb20gbG9jYWwgLm5vZGUgZmlsZSAoQ0pTIGJ1aWxkKVxyXG4gICAgKCkgPT4gcmVxdWlyZShqb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ3J1dmxsbS5ub2RlJykpLFxyXG4gICAgLy8gVHJ5IGxvYWRpbmcgZnJvbSBsb2NhbCAubm9kZSBmaWxlIChyb290KVxyXG4gICAgKCkgPT4gcmVxdWlyZShqb2luKF9fZGlybmFtZSwgJy4uJywgJ3J1dmxsbS5ub2RlJykpLFxyXG4gIF07XHJcblxyXG4gIGZvciAoY29uc3QgYXR0ZW1wdCBvZiBhdHRlbXB0cykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcmF3ID0gYXR0ZW1wdCgpIGFzIFJhd05hdGl2ZU1vZHVsZTtcclxuICAgICAgLy8gTm9ybWFsaXplOiBuYXRpdmUgZXhwb3J0cyBSdXZMbG1FbmdpbmUsIHdlIGV4cG9zZSBhcyBSdXZMTE1FbmdpbmVcclxuICAgICAgbmF0aXZlTW9kdWxlID0ge1xyXG4gICAgICAgIFJ1dkxMTUVuZ2luZTogcmF3LlJ1dkxMTUVuZ2luZSA/PyByYXcuUnV2TGxtRW5naW5lISxcclxuICAgICAgICBTaW1kT3BlcmF0aW9uczogcmF3LlNpbWRPcGVyYXRpb25zLFxyXG4gICAgICAgIHZlcnNpb246IHJhdy52ZXJzaW9uLFxyXG4gICAgICAgIGhhc1NpbWRTdXBwb3J0OiByYXcuaGFzU2ltZFN1cHBvcnQsXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiBuYXRpdmVNb2R1bGU7XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgLy8gQ29udGludWUgdG8gbmV4dCBhdHRlbXB0XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBTaWxlbnRseSBmYWxsIGJhY2sgdG8gSlMgaW1wbGVtZW50YXRpb25cclxuICByZXR1cm4gbnVsbDtcclxufVxyXG5cclxuLy8gRXhwb3J0IGZ1bmN0aW9ucyB0byBnZXQgbmF0aXZlIGJpbmRpbmdzXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXROYXRpdmVNb2R1bGUoKTogTmF0aXZlUnV2TExNIHwgbnVsbCB7XHJcbiAgcmV0dXJuIGxvYWROYXRpdmVNb2R1bGUoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHZlcnNpb24oKTogc3RyaW5nIHtcclxuICBjb25zdCBtb2QgPSBsb2FkTmF0aXZlTW9kdWxlKCk7XHJcbiAgcmV0dXJuIG1vZD8udmVyc2lvbigpID8/ICcwLjEuMC1qcyc7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBoYXNTaW1kU3VwcG9ydCgpOiBib29sZWFuIHtcclxuICBjb25zdCBtb2QgPSBsb2FkTmF0aXZlTW9kdWxlKCk7XHJcbiAgcmV0dXJuIG1vZD8uaGFzU2ltZFN1cHBvcnQoKSA/PyBmYWxzZTtcclxufVxyXG5cclxuLy8gRXhwb3J0IHR5cGVzIGZvciBpbnRlcm5hbCB1c2VcclxuZXhwb3J0IHR5cGUge1xyXG4gIE5hdGl2ZVJ1dkxMTSxcclxuICBOYXRpdmVDb25maWcsXHJcbiAgTmF0aXZlRW5naW5lLFxyXG4gIE5hdGl2ZUdlbkNvbmZpZyxcclxuICBOYXRpdmVRdWVyeVJlc3BvbnNlLFxyXG4gIE5hdGl2ZVJvdXRpbmdEZWNpc2lvbixcclxuICBOYXRpdmVNZW1vcnlSZXN1bHQsXHJcbiAgTmF0aXZlU3RhdHMsXHJcbiAgTmF0aXZlU2ltZE9wcyxcclxufTtcclxuIl19
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QixnQ0FBZ0M7QUFDaEMsSUFBSSxZQUFZLEdBQXdCLElBQUksQ0FBQztBQThGN0Msa0NBQWtDO0FBQ2xDLE1BQU0saUJBQWlCLEdBQTJCO0lBQ2hELFlBQVksRUFBRSw2QkFBNkI7SUFDM0MsY0FBYyxFQUFFLCtCQUErQjtJQUMvQyxXQUFXLEVBQUUsZ0NBQWdDO0lBQzdDLGFBQWEsRUFBRSxrQ0FBa0M7SUFDakQsV0FBVyxFQUFFLGlDQUFpQztDQUMvQyxDQUFDO0FBRUYsU0FBUyxjQUFjO0lBQ3JCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDbEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUMxQixPQUFPLEdBQUcsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFFRCxTQUFTLGdCQUFnQjtJQUN2QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxjQUFjLEVBQUUsQ0FBQztJQUNyQyxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVuRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsMkNBQTJDO1FBQzNDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxNQUFNLFFBQVEsR0FBRztRQUNmLG9DQUFvQztRQUNwQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQzFCLGdEQUFnRDtRQUNoRCxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3pELDJDQUEyQztRQUMzQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDcEQsQ0FBQztJQUVGLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFxQixDQUFDO1lBQ3pDLG9FQUFvRTtZQUNwRSxZQUFZLEdBQUc7Z0JBQ2IsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDLFlBQWE7Z0JBQ25ELGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztnQkFDbEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO2dCQUNwQixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7YUFDbkMsQ0FBQztZQUNGLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwyQkFBMkI7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sZ0JBQWdCLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU87SUFDckIsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUMvQixPQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjO0lBQzVCLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDL0IsT0FBTyxHQUFHLEVBQUUsY0FBYyxFQUFFLElBQUksS0FBSyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE5hdGl2ZSBiaW5kaW5ncyBsb2FkZXIgZm9yIFJ1dkxMTVxuICpcbiAqIEF1dG9tYXRpY2FsbHkgbG9hZHMgdGhlIGNvcnJlY3QgbmF0aXZlIGJpbmFyeSBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0uXG4gKi9cblxuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuXG4vLyBUcnkgdG8gbG9hZCB0aGUgbmF0aXZlIG1vZHVsZVxubGV0IG5hdGl2ZU1vZHVsZTogTmF0aXZlUnV2TExNIHwgbnVsbCA9IG51bGw7XG5cbmludGVyZmFjZSBOYXRpdmVSdXZMTE0ge1xuICAvLyBOYXRpdmUgZXhwb3J0cyBSdXZMbG1FbmdpbmUgKGNhbWVsQ2FzZSksIHdlIG5vcm1hbGl6ZSB0byBSdXZMTE1FbmdpbmVcbiAgUnV2TExNRW5naW5lOiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xuICBTaW1kT3BlcmF0aW9uczogbmV3ICgpID0+IE5hdGl2ZVNpbWRPcHM7XG4gIHZlcnNpb246ICgpID0+IHN0cmluZztcbiAgaGFzU2ltZFN1cHBvcnQ6ICgpID0+IGJvb2xlYW47XG59XG5cbi8vIFJhdyBuYXRpdmUgbW9kdWxlIGludGVyZmFjZSAoYWN0dWFsIGV4cG9ydCBuYW1lcylcbmludGVyZmFjZSBSYXdOYXRpdmVNb2R1bGUge1xuICBSdXZMbG1FbmdpbmU/OiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xuICBSdXZMTE1FbmdpbmU/OiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xuICBTaW1kT3BlcmF0aW9uczogbmV3ICgpID0+IE5hdGl2ZVNpbWRPcHM7XG4gIHZlcnNpb246ICgpID0+IHN0cmluZztcbiAgaGFzU2ltZFN1cHBvcnQ6ICgpID0+IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBOYXRpdmVDb25maWcge1xuICBlbWJlZGRpbmdfZGltPzogbnVtYmVyO1xuICByb3V0ZXJfaGlkZGVuX2RpbT86IG51bWJlcjtcbiAgaG5zd19tPzogbnVtYmVyO1xuICBobnN3X2VmX2NvbnN0cnVjdGlvbj86IG51bWJlcjtcbiAgaG5zd19lZl9zZWFyY2g/OiBudW1iZXI7XG4gIGxlYXJuaW5nX2VuYWJsZWQ/OiBib29sZWFuO1xuICBxdWFsaXR5X3RocmVzaG9sZD86IG51bWJlcjtcbiAgZXdjX2xhbWJkYT86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZUVuZ2luZSB7XG4gIHF1ZXJ5KHRleHQ6IHN0cmluZywgY29uZmlnPzogTmF0aXZlR2VuQ29uZmlnKTogTmF0aXZlUXVlcnlSZXNwb25zZTtcbiAgZ2VuZXJhdGUocHJvbXB0OiBzdHJpbmcsIGNvbmZpZz86IE5hdGl2ZUdlbkNvbmZpZyk6IHN0cmluZztcbiAgcm91dGUodGV4dDogc3RyaW5nKTogTmF0aXZlUm91dGluZ0RlY2lzaW9uO1xuICBzZWFyY2hNZW1vcnkodGV4dDogc3RyaW5nLCBrPzogbnVtYmVyKTogTmF0aXZlTWVtb3J5UmVzdWx0W107XG4gIGFkZE1lbW9yeShjb250ZW50OiBzdHJpbmcsIG1ldGFkYXRhPzogc3RyaW5nKTogbnVtYmVyO1xuICBmZWVkYmFjayhyZXF1ZXN0SWQ6IHN0cmluZywgcmF0aW5nOiBudW1iZXIsIGNvcnJlY3Rpb24/OiBzdHJpbmcpOiBib29sZWFuO1xuICBzdGF0cygpOiBOYXRpdmVTdGF0cztcbiAgZm9yY2VMZWFybigpOiBzdHJpbmc7XG4gIGVtYmVkKHRleHQ6IHN0cmluZyk6IG51bWJlcltdO1xuICBzaW1pbGFyaXR5KHRleHQxOiBzdHJpbmcsIHRleHQyOiBzdHJpbmcpOiBudW1iZXI7XG4gIGhhc1NpbWQoKTogYm9vbGVhbjtcbiAgc2ltZENhcGFiaWxpdGllcygpOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZUdlbkNvbmZpZyB7XG4gIG1heF90b2tlbnM/OiBudW1iZXI7XG4gIHRlbXBlcmF0dXJlPzogbnVtYmVyO1xuICB0b3BfcD86IG51bWJlcjtcbiAgdG9wX2s/OiBudW1iZXI7XG4gIHJlcGV0aXRpb25fcGVuYWx0eT86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVF1ZXJ5UmVzcG9uc2Uge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbiAgbW9kZWw6IHN0cmluZztcbiAgY29udGV4dF9zaXplOiBudW1iZXI7XG4gIGxhdGVuY3lfbXM6IG51bWJlcjtcbiAgcmVxdWVzdF9pZDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTmF0aXZlUm91dGluZ0RlY2lzaW9uIHtcbiAgbW9kZWw6IHN0cmluZztcbiAgY29udGV4dF9zaXplOiBudW1iZXI7XG4gIHRlbXBlcmF0dXJlOiBudW1iZXI7XG4gIHRvcF9wOiBudW1iZXI7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZU1lbW9yeVJlc3VsdCB7XG4gIGlkOiBudW1iZXI7XG4gIHNjb3JlOiBudW1iZXI7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgbWV0YWRhdGE6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVN0YXRzIHtcbiAgdG90YWxfcXVlcmllczogbnVtYmVyO1xuICBtZW1vcnlfbm9kZXM6IG51bWJlcjtcbiAgcGF0dGVybnNfbGVhcm5lZDogbnVtYmVyO1xuICBhdmdfbGF0ZW5jeV9tczogbnVtYmVyO1xuICBjYWNoZV9oaXRfcmF0ZTogbnVtYmVyO1xuICByb3V0ZXJfYWNjdXJhY3k6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVNpbWRPcHMge1xuICBkb3RQcm9kdWN0KGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlcjtcbiAgY29zaW5lU2ltaWxhcml0eShhOiBudW1iZXJbXSwgYjogbnVtYmVyW10pOiBudW1iZXI7XG4gIGwyRGlzdGFuY2UoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKTogbnVtYmVyO1xuICBtYXR2ZWMobWF0cml4OiBudW1iZXJbXVtdLCB2ZWN0b3I6IG51bWJlcltdKTogbnVtYmVyW107XG4gIHNvZnRtYXgoaW5wdXQ6IG51bWJlcltdKTogbnVtYmVyW107XG59XG5cbi8vIFBsYXRmb3JtLXNwZWNpZmljIHBhY2thZ2UgbmFtZXNcbmNvbnN0IFBMQVRGT1JNX1BBQ0tBR0VTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnZGFyd2luLXg2NCc6ICdAcnV2ZWN0b3IvcnV2bGxtLWRhcndpbi14NjQnLFxuICAnZGFyd2luLWFybTY0JzogJ0BydXZlY3Rvci9ydXZsbG0tZGFyd2luLWFybTY0JyxcbiAgJ2xpbnV4LXg2NCc6ICdAcnV2ZWN0b3IvcnV2bGxtLWxpbnV4LXg2NC1nbnUnLFxuICAnbGludXgtYXJtNjQnOiAnQHJ1dmVjdG9yL3J1dmxsbS1saW51eC1hcm02NC1nbnUnLFxuICAnd2luMzIteDY0JzogJ0BydXZlY3Rvci9ydXZsbG0td2luMzIteDY0LW1zdmMnLFxufTtcblxuZnVuY3Rpb24gZ2V0UGxhdGZvcm1LZXkoKTogc3RyaW5nIHtcbiAgY29uc3QgcGxhdGZvcm0gPSBwcm9jZXNzLnBsYXRmb3JtO1xuICBjb25zdCBhcmNoID0gcHJvY2Vzcy5hcmNoO1xuICByZXR1cm4gYCR7cGxhdGZvcm19LSR7YXJjaH1gO1xufVxuXG5mdW5jdGlvbiBsb2FkTmF0aXZlTW9kdWxlKCk6IE5hdGl2ZVJ1dkxMTSB8IG51bGwge1xuICBpZiAobmF0aXZlTW9kdWxlKSB7XG4gICAgcmV0dXJuIG5hdGl2ZU1vZHVsZTtcbiAgfVxuXG4gIGNvbnN0IHBsYXRmb3JtS2V5ID0gZ2V0UGxhdGZvcm1LZXkoKTtcbiAgY29uc3QgcGFja2FnZU5hbWUgPSBQTEFURk9STV9QQUNLQUdFU1twbGF0Zm9ybUtleV07XG5cbiAgaWYgKCFwYWNrYWdlTmFtZSkge1xuICAgIC8vIFNpbGVudGx5IGZhaWwgLSBKUyBmYWxsYmFjayB3aWxsIGJlIHVzZWRcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFRyeSBsb2FkaW5nIGZyb20gb3B0aW9uYWwgZGVwZW5kZW5jaWVzXG4gIGNvbnN0IGF0dGVtcHRzID0gW1xuICAgIC8vIFRyeSB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgcGFja2FnZVxuICAgICgpID0+IHJlcXVpcmUocGFja2FnZU5hbWUpLFxuICAgIC8vIFRyeSBsb2FkaW5nIGZyb20gbG9jYWwgLm5vZGUgZmlsZSAoQ0pTIGJ1aWxkKVxuICAgICgpID0+IHJlcXVpcmUoam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICdydXZsbG0ubm9kZScpKSxcbiAgICAvLyBUcnkgbG9hZGluZyBmcm9tIGxvY2FsIC5ub2RlIGZpbGUgKHJvb3QpXG4gICAgKCkgPT4gcmVxdWlyZShqb2luKF9fZGlybmFtZSwgJy4uJywgJ3J1dmxsbS5ub2RlJykpLFxuICBdO1xuXG4gIGZvciAoY29uc3QgYXR0ZW1wdCBvZiBhdHRlbXB0cykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXcgPSBhdHRlbXB0KCkgYXMgUmF3TmF0aXZlTW9kdWxlO1xuICAgICAgLy8gTm9ybWFsaXplOiBuYXRpdmUgZXhwb3J0cyBSdXZMbG1FbmdpbmUsIHdlIGV4cG9zZSBhcyBSdXZMTE1FbmdpbmVcbiAgICAgIG5hdGl2ZU1vZHVsZSA9IHtcbiAgICAgICAgUnV2TExNRW5naW5lOiByYXcuUnV2TExNRW5naW5lID8/IHJhdy5SdXZMbG1FbmdpbmUhLFxuICAgICAgICBTaW1kT3BlcmF0aW9uczogcmF3LlNpbWRPcGVyYXRpb25zLFxuICAgICAgICB2ZXJzaW9uOiByYXcudmVyc2lvbixcbiAgICAgICAgaGFzU2ltZFN1cHBvcnQ6IHJhdy5oYXNTaW1kU3VwcG9ydCxcbiAgICAgIH07XG4gICAgICByZXR1cm4gbmF0aXZlTW9kdWxlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQ29udGludWUgdG8gbmV4dCBhdHRlbXB0XG4gICAgfVxuICB9XG5cbiAgLy8gU2lsZW50bHkgZmFsbCBiYWNrIHRvIEpTIGltcGxlbWVudGF0aW9uXG4gIHJldHVybiBudWxsO1xufVxuXG4vLyBFeHBvcnQgZnVuY3Rpb25zIHRvIGdldCBuYXRpdmUgYmluZGluZ3NcbmV4cG9ydCBmdW5jdGlvbiBnZXROYXRpdmVNb2R1bGUoKTogTmF0aXZlUnV2TExNIHwgbnVsbCB7XG4gIHJldHVybiBsb2FkTmF0aXZlTW9kdWxlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJzaW9uKCk6IHN0cmluZyB7XG4gIGNvbnN0IG1vZCA9IGxvYWROYXRpdmVNb2R1bGUoKTtcbiAgcmV0dXJuIG1vZD8udmVyc2lvbigpID8/ICcwLjEuMC1qcyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNTaW1kU3VwcG9ydCgpOiBib29sZWFuIHtcbiAgY29uc3QgbW9kID0gbG9hZE5hdGl2ZU1vZHVsZSgpO1xuICByZXR1cm4gbW9kPy5oYXNTaW1kU3VwcG9ydCgpID8/IGZhbHNlO1xufVxuXG4vLyBFeHBvcnQgdHlwZXMgZm9yIGludGVybmFsIHVzZVxuZXhwb3J0IHR5cGUge1xuICBOYXRpdmVSdXZMTE0sXG4gIE5hdGl2ZUNvbmZpZyxcbiAgTmF0aXZlRW5naW5lLFxuICBOYXRpdmVHZW5Db25maWcsXG4gIE5hdGl2ZVF1ZXJ5UmVzcG9uc2UsXG4gIE5hdGl2ZVJvdXRpbmdEZWNpc2lvbixcbiAgTmF0aXZlTWVtb3J5UmVzdWx0LFxuICBOYXRpdmVTdGF0cyxcbiAgTmF0aXZlU2ltZE9wcyxcbn07XG4iXX0=
@@ -196,4 +196,4 @@ export class SessionManager {
196
196
  return contextParts.join('\n\n');
197
197
  }
198
198
  }
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBU0g7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQVksR0FBc0o7UUFIMUosYUFBUSxHQUFxQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBSTdELElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxRQUFrQztRQUN2QyxNQUFNLEVBQUUsR0FBRyxXQUFXLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RSxNQUFNLE9BQU8sR0FBd0I7WUFDbkMsRUFBRTtZQUNGLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNyQixZQUFZLEVBQUUsQ0FBQztZQUNmLFFBQVEsRUFBRSxFQUFFO1lBQ1osT0FBTyxFQUFFLEVBQUU7WUFDWCxlQUFlLEVBQUUsRUFBRTtZQUNuQixRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7U0FDekIsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvQixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHLENBQUMsU0FBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLENBQUMsU0FBaUIsRUFBRSxPQUFlLEVBQUUsTUFBeUI7UUFDaEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFD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QUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQzFGLE9BQU8sR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVkLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFNlc3Npb24gTWFuYWdlbWVudCBmb3IgbXVsdGktdHVybiBjb252ZXJzYXRpb25zXHJcbiAqL1xyXG5cclxuaW1wb3J0IHtcclxuICBDb252ZXJzYXRpb25TZXNzaW9uLFxyXG4gIENvbnZlcnNhdGlvbk1lc3NhZ2UsXHJcbiAgUXVlcnlSZXNwb25zZSxcclxuICBHZW5lcmF0aW9uQ29uZmlnLFxyXG59IGZyb20gJy4vdHlwZXMnO1xyXG5cclxuLyoqXHJcbiAqIFNlc3Npb24gTWFuYWdlciBmb3IgbXVsdGktdHVybiBjb252ZXJzYXRpb25zXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaW1wb3J0IHsgUnV2TExNLCBTZXNzaW9uTWFuYWdlciB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xyXG4gKlxyXG4gKiBjb25zdCBsbG0gPSBuZXcgUnV2TExNKCk7XHJcbiAqIGNvbnN0IHNlc3Npb25zID0gbmV3IFNlc3Npb25NYW5hZ2VyKGxsbSk7XHJcbiAqXHJcbiAqIC8vIENyZWF0ZSBhIG5ldyBzZXNzaW9uXHJcbiAqIGNvbnN0IHNlc3Npb24gPSBzZXNzaW9ucy5jcmVhdGUoKTtcclxuICpcclxuICogLy8gQ2hhdCB3aXRoIGNvbnRleHRcclxuICogY29uc3QgcmVzcG9uc2UxID0gc2Vzc2lvbnMuY2hhdChzZXNzaW9uLmlkLCAnV2hhdCBpcyBQeXRob24/Jyk7XHJcbiAqIGNvbnN0IHJlc3BvbnNlMiA9IHNlc3Npb25zLmNoYXQoc2Vzc2lvbi5pZCwgJ0hvdyBkbyBJIGluc3RhbGwgaXQ/Jyk7XHJcbiAqIC8vIFNlY29uZCBxdWVyeSBhdXRvbWF0aWNhbGx5IGhhcyBjb250ZXh0IGZyb20gZmlyc3RcclxuICogYGBgXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU2Vzc2lvbk1hbmFnZXIge1xyXG4gIHByaXZhdGUgc2Vzc2lvbnM6IE1hcDxzdHJpbmcsIENvbnZlcnNhdGlvblNlc3Npb24+ID0gbmV3IE1hcCgpO1xyXG4gIHByaXZhdGUgbGxtOiB7IHF1ZXJ5OiAodGV4dDogc3RyaW5nLCBjb25maWc/OiBHZW5lcmF0aW9uQ29uZmlnKSA9PiBRdWVyeVJlc3BvbnNlOyBhZGRNZW1vcnk6IChjb250ZW50OiBzdHJpbmcsIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IG51bWJlciB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihsbG06IHsgcXVlcnk6ICh0ZXh0OiBzdHJpbmcsIGNvbmZpZz86IEdlbmVyYXRpb25Db25maWcpID0+IFF1ZXJ5UmVzcG9uc2U7IGFkZE1lbW9yeTogKGNvbnRlbnQ6IHN0cmluZywgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gbnVtYmVyIH0pIHtcclxuICAgIHRoaXMubGxtID0gbGxtO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgbmV3IGNvbnZlcnNhdGlvbiBzZXNzaW9uXHJcbiAgICovXHJcbiAgY3JlYXRlKG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBDb252ZXJzYXRpb25TZXNzaW9uIHtcclxuICAgIGNvbnN0IGlkID0gYHNlc3Npb24tJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDgpfWA7XHJcbiAgICBjb25zdCBzZXNzaW9uOiBDb252ZXJzYXRpb25TZXNzaW9uID0ge1xyXG4gICAgICBpZCxcclxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxyXG4gICAgICBtZXNzYWdlQ291bnQ6IDAsXHJcbiAgICAgIG1lc3NhZ2VzOiBbXSxcclxuICAgICAgY29udGV4dDogW10sXHJcbiAgICAgIGFjdGl2ZU1lbW9yeUlkczogW10sXHJcbiAgICAgIG1ldGFkYXRhOiBtZXRhZGF0YSA/PyB7fSxcclxuICAgIH07XHJcbiAgICB0aGlzLnNlc3Npb25zLnNldChpZCwgc2Vzc2lvbik7XHJcbiAgICByZXR1cm4gc2Vzc2lvbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBzZXNzaW9uIGJ5IElEXHJcbiAgICovXHJcbiAgZ2V0KHNlc3Npb25JZDogc3RyaW5nKTogQ29udmVyc2F0aW9uU2Vzc2lvbiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9ucy5nZXQoc2Vzc2lvbklkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoYXQgd2l0aGluIGEgc2Vzc2lvbiAobWFpbnRhaW5zIGNvbnRleHQpXHJcbiAgICovXHJcbiAgY2hhdChzZXNzaW9uSWQ6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBjb25maWc/OiBHZW5lcmF0aW9uQ29uZmlnKTogUXVlcnlSZXNwb25zZSB7XHJcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5nZXQoc2Vzc2lvbklkKTtcclxuICAgIGlmICghc2Vzc2lvbikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlc3Npb24gbm90IGZvdW5kOiAke3Nlc3Npb25JZH1gKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBZGQgdXNlciBtZXNzYWdlXHJcbiAgICBzZXNzaW9uLm1lc3NhZ2VzLnB1c2goe1xyXG4gICAgICByb2xlOiAndXNlcicsXHJcbiAgICAgIGNvbnRlbnQ6IG1lc3NhZ2UsXHJcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEJ1aWxkIGNvbnRleHQgZnJvbSByZWNlbnQgbWVzc2FnZXNcclxuICAgIGNvbnN0IGNvbnRleHRXaW5kb3cgPSB0aGlzLmJ1aWxkQ29udGV4dChzZXNzaW9uKTtcclxuXHJcbiAgICAvLyBRdWVyeSB3aXRoIGNvbnRleHRcclxuICAgIGNvbnN0IHByb21wdCA9IGNvbnRleHRXaW5kb3cgPyBgJHtjb250ZXh0V2luZG93fVxcblxcblVzZXI6ICR7bWVzc2FnZX1gIDogbWVzc2FnZTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5sbG0ucXVlcnkocHJvbXB0LCBjb25maWcpO1xyXG5cclxuICAgIC8vIEFkZCBhc3Npc3RhbnQgcmVzcG9uc2VcclxuICAgIHNlc3Npb24ubWVzc2FnZXMucHVzaCh7XHJcbiAgICAgIHJvbGU6ICdhc3Npc3RhbnQnLFxyXG4gICAgICBjb250ZW50OiByZXNwb25zZS50ZXh0LFxyXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXHJcbiAgICAgIHJlcXVlc3RJZDogcmVzcG9uc2UucmVxdWVzdElkLFxyXG4gICAgfSk7XHJcblxyXG4gICAgc2Vzc2lvbi5tZXNzYWdlQ291bnQgPSBzZXNzaW9uLm1lc3NhZ2VzLmxlbmd0aDtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgc3lzdGVtIG1lc3NhZ2UgdG8gc2Vzc2lvblxyXG4gICAqL1xyXG4gIGFkZFN5c3RlbU1lc3NhZ2Uoc2Vzc2lvbklkOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHNlc3Npb25JZCk7XHJcbiAgICBpZiAoIXNlc3Npb24pIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXNzaW9uIG5vdCBmb3VuZDogJHtzZXNzaW9uSWR9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2Vzc2lvbi5tZXNzYWdlcy5wdXNoKHtcclxuICAgICAgcm9sZTogJ3N5c3RlbScsXHJcbiAgICAgIGNvbnRlbnQsXHJcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcclxuICAgIH0pO1xyXG4gICAgc2Vzc2lvbi5tZXNzYWdlQ291bnQgPSBzZXNzaW9uLm1lc3NhZ2VzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBjb250ZXh0IHRvIHNlc3Npb24gKHBlcnNpc3RlZCB0byBtZW1vcnkpXHJcbiAgICovXHJcbiAgYWRkQ29udGV4dChzZXNzaW9uSWQ6IHN0cmluZywgY29udGV4dDogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmdldChzZXNzaW9uSWQpO1xyXG4gICAgaWYgKCFzZXNzaW9uKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2Vzc2lvbiBub3QgZm91bmQ6ICR7c2Vzc2lvbklkfWApO1xyXG4gICAgfVxyXG5cclxuICAgIHNlc3Npb24uY29udGV4dC5wdXNoKGNvbnRleHQpO1xyXG5cclxuICAgIC8vIEFsc28gc3RvcmUgaW4gbWVtb3J5IGZvciByZXRyaWV2YWxcclxuICAgIGNvbnN0IG1lbW9yeUlkID0gdGhpcy5sbG0uYWRkTWVtb3J5KGNvbnRleHQsIHtcclxuICAgICAgc2Vzc2lvbklkLFxyXG4gICAgICB0eXBlOiAnY29udGV4dCcsXHJcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgc2Vzc2lvbi5hY3RpdmVNZW1vcnlJZHMucHVzaChtZW1vcnlJZCk7XHJcbiAgICByZXR1cm4gbWVtb3J5SWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgY29udmVyc2F0aW9uIGhpc3RvcnlcclxuICAgKi9cclxuICBnZXRIaXN0b3J5KHNlc3Npb25JZDogc3RyaW5nLCBsaW1pdD86IG51bWJlcik6IENvbnZlcnNhdGlvbk1lc3NhZ2VbXSB7XHJcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5nZXQoc2Vzc2lvbklkKTtcclxuICAgIGlmICghc2Vzc2lvbikge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWVzc2FnZXMgPSBzZXNzaW9uLm1lc3NhZ2VzO1xyXG4gICAgcmV0dXJuIGxpbWl0ID8gbWVzc2FnZXMuc2xpY2UoLWxpbWl0KSA6IG1lc3NhZ2VzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgc2Vzc2lvbiBoaXN0b3J5IChrZWVwIHNlc3Npb24gYWN0aXZlKVxyXG4gICAqL1xyXG4gIGNsZWFySGlzdG9yeShzZXNzaW9uSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHNlc3Npb25JZCk7XHJcbiAgICBpZiAoc2Vzc2lvbikge1xyXG4gICAgICBzZXNzaW9uLm1lc3NhZ2VzID0gW107XHJcbiAgICAgIHNlc3Npb24uY29udGV4dCA9IFtdO1xyXG4gICAgICBzZXNzaW9uLm1lc3NhZ2VDb3VudCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbmQgYW5kIGRlbGV0ZSBzZXNzaW9uXHJcbiAgICovXHJcbiAgZW5kKHNlc3Npb25JZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9ucy5kZWxldGUoc2Vzc2lvbklkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3QgYWxsIGFjdGl2ZSBzZXNzaW9uc1xyXG4gICAqL1xyXG4gIGxpc3QoKTogQ29udmVyc2F0aW9uU2Vzc2lvbltdIHtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuc2Vzc2lvbnMudmFsdWVzKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhwb3J0IHNlc3Npb24gYXMgSlNPTlxyXG4gICAqL1xyXG4gIGV4cG9ydChzZXNzaW9uSWQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHNlc3Npb25JZCk7XHJcbiAgICBpZiAoIXNlc3Npb24pIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHNlc3Npb24sIG51bGwsIDIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW1wb3J0IHNlc3Npb24gZnJvbSBKU09OXHJcbiAgICovXHJcbiAgaW1wb3J0KGpzb246IHN0cmluZyk6IENvbnZlcnNhdGlvblNlc3Npb24ge1xyXG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoanNvbik7XHJcbiAgICBjb25zdCBzZXNzaW9uOiBDb252ZXJzYXRpb25TZXNzaW9uID0ge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKGRhdGEuY3JlYXRlZEF0KSxcclxuICAgICAgbWVzc2FnZXM6IGRhdGEubWVzc2FnZXMubWFwKChtOiBDb252ZXJzYXRpb25NZXNzYWdlKSA9PiAoe1xyXG4gICAgICAgIC4uLm0sXHJcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZShtLnRpbWVzdGFtcCksXHJcbiAgICAgIH0pKSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5zZXNzaW9ucy5zZXQoc2Vzc2lvbi5pZCwgc2Vzc2lvbik7XHJcbiAgICByZXR1cm4gc2Vzc2lvbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJ1aWxkIGNvbnRleHQgc3RyaW5nIGZyb20gcmVjZW50IG1lc3NhZ2VzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBidWlsZENvbnRleHQoc2Vzc2lvbjogQ29udmVyc2F0aW9uU2Vzc2lvbiwgbWF4TWVzc2FnZXMgPSAxMCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByZWNlbnQgPSBzZXNzaW9uLm1lc3NhZ2VzLnNsaWNlKC1tYXhNZXNzYWdlcyk7XHJcbiAgICBpZiAocmVjZW50Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGV4dFBhcnRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIC8vIEFkZCBwZXJzaXN0ZW50IGNvbnRleHRcclxuICAgIGlmIChzZXNzaW9uLmNvbnRleHQubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb250ZXh0UGFydHMucHVzaCgnQ29udGV4dDpcXG4nICsgc2Vzc2lvbi5jb250ZXh0LmpvaW4oJ1xcbicpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBZGQgY29udmVyc2F0aW9uIGhpc3RvcnlcclxuICAgIGNvbnN0IGhpc3RvcnkgPSByZWNlbnRcclxuICAgICAgLm1hcChtID0+IHtcclxuICAgICAgICBjb25zdCByb2xlID0gbS5yb2xlID09PSAndXNlcicgPyAnVXNlcicgOiBtLnJvbGUgPT09ICdhc3Npc3RhbnQnID8gJ0Fzc2lzdGFudCcgOiAnU3lzdGVtJztcclxuICAgICAgICByZXR1cm4gYCR7cm9sZX06ICR7bS5jb250ZW50fWA7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5qb2luKCdcXG4nKTtcclxuXHJcbiAgICBpZiAoaGlzdG9yeSkge1xyXG4gICAgICBjb250ZXh0UGFydHMucHVzaCgnQ29udmVyc2F0aW9uOlxcbicgKyBoaXN0b3J5KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29udGV4dFBhcnRzLmpvaW4oJ1xcblxcbicpO1xyXG4gIH1cclxufVxyXG4iXX0=
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBU0g7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQVksR0FBc0o7UUFIMUosYUFBUSxHQUFxQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBSTdELElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxRQUFrQztRQUN2QyxNQUFNLEVBQUUsR0FBRyxXQUFXLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RSxNQUFNLE9BQU8sR0FBd0I7WUFDbkMsRUFBRTtZQUNGLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNyQixZQUFZLEVBQUUsQ0FBQztZQUNmLFFBQVEsRUFBRSxFQUFFO1lBQ1osT0FBTyxFQUFFLEVBQUU7WUFDWCxlQUFlLEVBQUUsRUFBRTtZQUNuQixRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7U0FDekIsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvQixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHLENBQUMsU0FBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLENBQUMsU0FBaUIsRUFBRSxPQUFlLEVBQUUsTUFBeUI7UUFDaEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFD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QUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQzFGLE9BQU8sR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVkLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZXNzaW9uIE1hbmFnZW1lbnQgZm9yIG11bHRpLXR1cm4gY29udmVyc2F0aW9uc1xuICovXG5cbmltcG9ydCB7XG4gIENvbnZlcnNhdGlvblNlc3Npb24sXG4gIENvbnZlcnNhdGlvbk1lc3NhZ2UsXG4gIFF1ZXJ5UmVzcG9uc2UsXG4gIEdlbmVyYXRpb25Db25maWcsXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNlc3Npb24gTWFuYWdlciBmb3IgbXVsdGktdHVybiBjb252ZXJzYXRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IFJ1dkxMTSwgU2Vzc2lvbk1hbmFnZXIgfSBmcm9tICdAcnV2ZWN0b3IvcnV2bGxtJztcbiAqXG4gKiBjb25zdCBsbG0gPSBuZXcgUnV2TExNKCk7XG4gKiBjb25zdCBzZXNzaW9ucyA9IG5ldyBTZXNzaW9uTWFuYWdlcihsbG0pO1xuICpcbiAqIC8vIENyZWF0ZSBhIG5ldyBzZXNzaW9uXG4gKiBjb25zdCBzZXNzaW9uID0gc2Vzc2lvbnMuY3JlYXRlKCk7XG4gKlxuICogLy8gQ2hhdCB3aXRoIGNvbnRleHRcbiAqIGNvbnN0IHJlc3BvbnNlMSA9IHNlc3Npb25zLmNoYXQoc2Vzc2lvbi5pZCwgJ1doYXQgaXMgUHl0aG9uPycpO1xuICogY29uc3QgcmVzcG9uc2UyID0gc2Vzc2lvbnMuY2hhdChzZXNzaW9uLmlkLCAnSG93IGRvIEkgaW5zdGFsbCBpdD8nKTtcbiAqIC8vIFNlY29uZCBxdWVyeSBhdXRvbWF0aWNhbGx5IGhhcyBjb250ZXh0IGZyb20gZmlyc3RcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2Vzc2lvbk1hbmFnZXIge1xuICBwcml2YXRlIHNlc3Npb25zOiBNYXA8c3RyaW5nLCBDb252ZXJzYXRpb25TZXNzaW9uPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBsbG06IHsgcXVlcnk6ICh0ZXh0OiBzdHJpbmcsIGNvbmZpZz86IEdlbmVyYXRpb25Db25maWcpID0+IFF1ZXJ5UmVzcG9uc2U7IGFkZE1lbW9yeTogKGNvbnRlbnQ6IHN0cmluZywgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gbnVtYmVyIH07XG5cbiAgY29uc3RydWN0b3IobGxtOiB7IHF1ZXJ5OiAodGV4dDogc3RyaW5nLCBjb25maWc/OiBHZW5lcmF0aW9uQ29uZmlnKSA9PiBRdWVyeVJlc3BvbnNlOyBhZGRNZW1vcnk6IChjb250ZW50OiBzdHJpbmcsIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IG51bWJlciB9KSB7XG4gICAgdGhpcy5sbG0gPSBsbG07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGNvbnZlcnNhdGlvbiBzZXNzaW9uXG4gICAqL1xuICBjcmVhdGUobWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IENvbnZlcnNhdGlvblNlc3Npb24ge1xuICAgIGNvbnN0IGlkID0gYHNlc3Npb24tJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDgpfWA7XG4gICAgY29uc3Qgc2Vzc2lvbjogQ29udmVyc2F0aW9uU2Vzc2lvbiA9IHtcbiAgICAgIGlkLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgbWVzc2FnZUNvdW50OiAwLFxuICAgICAgbWVzc2FnZXM6IFtdLFxuICAgICAgY29udGV4dDogW10sXG4gICAgICBhY3RpdmVNZW1vcnlJZHM6IFtdLFxuICAgICAgbWV0YWRhdGE6IG1ldGFkYXRhID8/IHt9LFxuICAgIH07XG4gICAgdGhpcy5zZXNzaW9ucy5zZXQoaWQsIHNlc3Npb24pO1xuICAgIHJldHVybiBzZXNzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzZXNzaW9uIGJ5IElEXG4gICAqL1xuICBnZXQoc2Vzc2lvbklkOiBzdHJpbmcpOiBDb252ZXJzYXRpb25TZXNzaW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9ucy5nZXQoc2Vzc2lvbklkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGF0IHdpdGhpbiBhIHNlc3Npb24gKG1haW50YWlucyBjb250ZXh0KVxuICAgKi9cbiAgY2hhdChzZXNzaW9uSWQ6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBjb25maWc/OiBHZW5lcmF0aW9uQ29uZmlnKTogUXVlcnlSZXNwb25zZSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHNlc3Npb25JZCk7XG4gICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlc3Npb24gbm90IGZvdW5kOiAke3Nlc3Npb25JZH1gKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdXNlciBtZXNzYWdlXG4gICAgc2Vzc2lvbi5tZXNzYWdlcy5wdXNoKHtcbiAgICAgIHJvbGU6ICd1c2VyJyxcbiAgICAgIGNvbnRlbnQ6IG1lc3NhZ2UsXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgfSk7XG5cbiAgICAvLyBCdWlsZCBjb250ZXh0IGZyb20gcmVjZW50IG1lc3NhZ2VzXG4gICAgY29uc3QgY29udGV4dFdpbmRvdyA9IHRoaXMuYnVpbGRDb250ZXh0KHNlc3Npb24pO1xuXG4gICAgLy8gUXVlcnkgd2l0aCBjb250ZXh0XG4gICAgY29uc3QgcHJvbXB0ID0gY29udGV4dFdpbmRvdyA/IGAke2NvbnRleHRXaW5kb3d9XFxuXFxuVXNlcjogJHttZXNzYWdlfWAgOiBtZXNzYWdlO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5sbG0ucXVlcnkocHJvbXB0LCBjb25maWcpO1xuXG4gICAgLy8gQWRkIGFzc2lzdGFudCByZXNwb25zZVxuICAgIHNlc3Npb24ubWVzc2FnZXMucHVzaCh7XG4gICAgICByb2xlOiAnYXNzaXN0YW50JyxcbiAgICAgIGNvbnRlbnQ6IHJlc3BvbnNlLnRleHQsXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICByZXF1ZXN0SWQ6IHJlc3BvbnNlLnJlcXVlc3RJZCxcbiAgICB9KTtcblxuICAgIHNlc3Npb24ubWVzc2FnZUNvdW50ID0gc2Vzc2lvbi5tZXNzYWdlcy5sZW5ndGg7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHN5c3RlbSBtZXNzYWdlIHRvIHNlc3Npb25cbiAgICovXG4gIGFkZFN5c3RlbU1lc3NhZ2Uoc2Vzc2lvbklkOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmdldChzZXNzaW9uSWQpO1xuICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXNzaW9uIG5vdCBmb3VuZDogJHtzZXNzaW9uSWR9YCk7XG4gICAgfVxuXG4gICAgc2Vzc2lvbi5tZXNzYWdlcy5wdXNoKHtcbiAgICAgIHJvbGU6ICdzeXN0ZW0nLFxuICAgICAgY29udGVudCxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICB9KTtcbiAgICBzZXNzaW9uLm1lc3NhZ2VDb3VudCA9IHNlc3Npb24ubWVzc2FnZXMubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBjb250ZXh0IHRvIHNlc3Npb24gKHBlcnNpc3RlZCB0byBtZW1vcnkpXG4gICAqL1xuICBhZGRDb250ZXh0KHNlc3Npb25JZDogc3RyaW5nLCBjb250ZXh0OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmdldChzZXNzaW9uSWQpO1xuICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXNzaW9uIG5vdCBmb3VuZDogJHtzZXNzaW9uSWR9YCk7XG4gICAgfVxuXG4gICAgc2Vzc2lvbi5jb250ZXh0LnB1c2goY29udGV4dCk7XG5cbiAgICAvLyBBbHNvIHN0b3JlIGluIG1lbW9yeSBmb3IgcmV0cmlldmFsXG4gICAgY29uc3QgbWVtb3J5SWQgPSB0aGlzLmxsbS5hZGRNZW1vcnkoY29udGV4dCwge1xuICAgICAgc2Vzc2lvbklkLFxuICAgICAgdHlwZTogJ2NvbnRleHQnLFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfSk7XG5cbiAgICBzZXNzaW9uLmFjdGl2ZU1lbW9yeUlkcy5wdXNoKG1lbW9yeUlkKTtcbiAgICByZXR1cm4gbWVtb3J5SWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvbnZlcnNhdGlvbiBoaXN0b3J5XG4gICAqL1xuICBnZXRIaXN0b3J5KHNlc3Npb25JZDogc3RyaW5nLCBsaW1pdD86IG51bWJlcik6IENvbnZlcnNhdGlvbk1lc3NhZ2VbXSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHNlc3Npb25JZCk7XG4gICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgbWVzc2FnZXMgPSBzZXNzaW9uLm1lc3NhZ2VzO1xuICAgIHJldHVybiBsaW1pdCA/IG1lc3NhZ2VzLnNsaWNlKC1saW1pdCkgOiBtZXNzYWdlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBzZXNzaW9uIGhpc3RvcnkgKGtlZXAgc2Vzc2lvbiBhY3RpdmUpXG4gICAqL1xuICBjbGVhckhpc3Rvcnkoc2Vzc2lvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5nZXQoc2Vzc2lvbklkKTtcbiAgICBpZiAoc2Vzc2lvbikge1xuICAgICAgc2Vzc2lvbi5tZXNzYWdlcyA9IFtdO1xuICAgICAgc2Vzc2lvbi5jb250ZXh0ID0gW107XG4gICAgICBzZXNzaW9uLm1lc3NhZ2VDb3VudCA9IDA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVuZCBhbmQgZGVsZXRlIHNlc3Npb25cbiAgICovXG4gIGVuZChzZXNzaW9uSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb25zLmRlbGV0ZShzZXNzaW9uSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgYWxsIGFjdGl2ZSBzZXNzaW9uc1xuICAgKi9cbiAgbGlzdCgpOiBDb252ZXJzYXRpb25TZXNzaW9uW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuc2Vzc2lvbnMudmFsdWVzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCBzZXNzaW9uIGFzIEpTT05cbiAgICovXG4gIGV4cG9ydChzZXNzaW9uSWQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmdldChzZXNzaW9uSWQpO1xuICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHNlc3Npb24sIG51bGwsIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBzZXNzaW9uIGZyb20gSlNPTlxuICAgKi9cbiAgaW1wb3J0KGpzb246IHN0cmluZyk6IENvbnZlcnNhdGlvblNlc3Npb24ge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGpzb24pO1xuICAgIGNvbnN0IHNlc3Npb246IENvbnZlcnNhdGlvblNlc3Npb24gPSB7XG4gICAgICAuLi5kYXRhLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZShkYXRhLmNyZWF0ZWRBdCksXG4gICAgICBtZXNzYWdlczogZGF0YS5tZXNzYWdlcy5tYXAoKG06IENvbnZlcnNhdGlvbk1lc3NhZ2UpID0+ICh7XG4gICAgICAgIC4uLm0sXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUobS50aW1lc3RhbXApLFxuICAgICAgfSkpLFxuICAgIH07XG5cbiAgICB0aGlzLnNlc3Npb25zLnNldChzZXNzaW9uLmlkLCBzZXNzaW9uKTtcbiAgICByZXR1cm4gc2Vzc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBjb250ZXh0IHN0cmluZyBmcm9tIHJlY2VudCBtZXNzYWdlc1xuICAgKi9cbiAgcHJpdmF0ZSBidWlsZENvbnRleHQoc2Vzc2lvbjogQ29udmVyc2F0aW9uU2Vzc2lvbiwgbWF4TWVzc2FnZXMgPSAxMCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVjZW50ID0gc2Vzc2lvbi5tZXNzYWdlcy5zbGljZSgtbWF4TWVzc2FnZXMpO1xuICAgIGlmIChyZWNlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dFBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gQWRkIHBlcnNpc3RlbnQgY29udGV4dFxuICAgIGlmIChzZXNzaW9uLmNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgY29udGV4dFBhcnRzLnB1c2goJ0NvbnRleHQ6XFxuJyArIHNlc3Npb24uY29udGV4dC5qb2luKCdcXG4nKSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGNvbnZlcnNhdGlvbiBoaXN0b3J5XG4gICAgY29uc3QgaGlzdG9yeSA9IHJlY2VudFxuICAgICAgLm1hcChtID0+IHtcbiAgICAgICAgY29uc3Qgcm9sZSA9IG0ucm9sZSA9PT0gJ3VzZXInID8gJ1VzZXInIDogbS5yb2xlID09PSAnYXNzaXN0YW50JyA/ICdBc3Npc3RhbnQnIDogJ1N5c3RlbSc7XG4gICAgICAgIHJldHVybiBgJHtyb2xlfTogJHttLmNvbnRlbnR9YDtcbiAgICAgIH0pXG4gICAgICAuam9pbignXFxuJyk7XG5cbiAgICBpZiAoaGlzdG9yeSkge1xuICAgICAgY29udGV4dFBhcnRzLnB1c2goJ0NvbnZlcnNhdGlvbjpcXG4nICsgaGlzdG9yeSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRleHRQYXJ0cy5qb2luKCdcXG5cXG4nKTtcbiAgfVxufVxuIl19
package/dist/esm/simd.js CHANGED
@@ -202,4 +202,4 @@ export class SimdOps {
202
202
  return ['JavaScript (scalar)'];
203
203
  }
204
204
  }
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaW1kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLGVBQWUsRUFBaUIsTUFBTSxVQUFVLENBQUM7QUFFMUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBR2xCO1FBRlEsV0FBTSxHQUF5QixJQUFJLENBQUM7UUFHMUMsTUFBTSxHQUFHLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFDOUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQztnQkFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pDLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsaUNBQWlDO1lBQ25DLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLENBQVcsRUFBRSxDQUFXO1FBQ2pDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDN0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2Is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QUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRUQsb0RBQW9EO1FBQ3BELE1BQU0sR0FBRyxHQUFHLGVBQWUsRUFBRSxDQUFDO1FBQzlCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbkMsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBTSU1EIE9wZXJhdGlvbnMgZm9yIHZlY3RvciBjb21wdXRhdGlvbnNcclxuICpcclxuICogVXNlcyBuYXRpdmUgU0lNRCBpbnN0cnVjdGlvbnMgKEFWWDIvQVZYNTEyL1NTRTQuMS9ORU9OKSB3aGVuIGF2YWlsYWJsZSxcclxuICogZmFsbHMgYmFjayB0byBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9ucyBvdGhlcndpc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgZ2V0TmF0aXZlTW9kdWxlLCBOYXRpdmVTaW1kT3BzIH0gZnJvbSAnLi9uYXRpdmUnO1xyXG5cclxuLyoqXHJcbiAqIFNJTUQgT3BlcmF0aW9ucyBjbGFzc1xyXG4gKlxyXG4gKiBQcm92aWRlcyBoYXJkd2FyZS1hY2NlbGVyYXRlZCB2ZWN0b3Igb3BlcmF0aW9ucyB3aGVuIG5hdGl2ZSBtb2R1bGUgaXMgYXZhaWxhYmxlLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGltcG9ydCB7IFNpbWRPcHMgfSBmcm9tICdAcnV2ZWN0b3IvcnV2bGxtJztcclxuICpcclxuICogY29uc3Qgc2ltZCA9IG5ldyBTaW1kT3BzKCk7XHJcbiAqXHJcbiAqIC8vIENvbXB1dGUgZG90IHByb2R1Y3RcclxuICogY29uc3QgcmVzdWx0ID0gc2ltZC5kb3RQcm9kdWN0KFsxLCAyLCAzXSwgWzQsIDUsIDZdKTtcclxuICogY29uc29sZS5sb2cocmVzdWx0KTsgLy8gMzJcclxuICpcclxuICogLy8gQ2hlY2sgY2FwYWJpbGl0aWVzXHJcbiAqIGNvbnNvbGUubG9nKHNpbWQuY2FwYWJpbGl0aWVzKCkpOyAvLyBbJ0FWWDInLCAnRk1BJ11cclxuICogYGBgXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU2ltZE9wcyB7XHJcbiAgcHJpdmF0ZSBuYXRpdmU6IE5hdGl2ZVNpbWRPcHMgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBtb2QgPSBnZXROYXRpdmVNb2R1bGUoKTtcclxuICAgIGlmIChtb2QpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLm5hdGl2ZSA9IG5ldyBtb2QuU2ltZE9wZXJhdGlvbnMoKTtcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgLy8gRmFsbCBiYWNrIHRvIEpTIGltcGxlbWVudGF0aW9uXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbXB1dGUgZG90IHByb2R1Y3Qgb2YgdHdvIHZlY3RvcnNcclxuICAgKi9cclxuICBkb3RQcm9kdWN0KGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5uYXRpdmUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmRvdFByb2R1Y3QoYSwgYik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSmF2YVNjcmlwdCBmYWxsYmFja1xyXG4gICAgbGV0IHN1bSA9IDA7XHJcbiAgICBjb25zdCBsZW4gPSBNYXRoLm1pbihhLmxlbmd0aCwgYi5sZW5ndGgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBzdW0gKz0gYVtpXSAqIGJbaV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VtO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcHV0ZSBjb3NpbmUgc2ltaWxhcml0eSBiZXR3ZWVuIHR3byB2ZWN0b3JzXHJcbiAgICovXHJcbiAgY29zaW5lU2ltaWxhcml0eShhOiBudW1iZXJbXSwgYjogbnVtYmVyW10pOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMubmF0aXZlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5jb3NpbmVTaW1pbGFyaXR5KGEsIGIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEphdmFTY3JpcHQgZmFsbGJhY2tcclxuICAgIGxldCBkb3QgPSAwO1xyXG4gICAgbGV0IG5vcm1BID0gMDtcclxuICAgIGxldCBub3JtQiA9IDA7XHJcblxyXG4gICAgY29uc3QgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgZG90ICs9IGFbaV0gKiBiW2ldO1xyXG4gICAgICBub3JtQSArPSBhW2ldICogYVtpXTtcclxuICAgICAgbm9ybUIgKz0gYltpXSAqIGJbaV07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGVub20gPSBNYXRoLnNxcnQobm9ybUEpICogTWF0aC5zcXJ0KG5vcm1CKTtcclxuICAgIHJldHVybiBkZW5vbSA+IDAgPyBkb3QgLyBkZW5vbSA6IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb21wdXRlIEwyIChFdWNsaWRlYW4pIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlY3RvcnNcclxuICAgKi9cclxuICBsMkRpc3RhbmNlKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5uYXRpdmUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmwyRGlzdGFuY2UoYSwgYik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSmF2YVNjcmlwdCBmYWxsYmFja1xyXG4gICAgbGV0IHN1bSA9IDA7XHJcbiAgICBjb25zdCBsZW4gPSBNYXRoLm1pbihhLmxlbmd0aCwgYi5sZW5ndGgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBjb25zdCBkaWZmID0gYVtpXSAtIGJbaV07XHJcbiAgICAgIHN1bSArPSBkaWZmICogZGlmZjtcclxuICAgIH1cclxuICAgIHJldHVybiBNYXRoLnNxcnQoc3VtKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hdHJpeC12ZWN0b3IgbXVsdGlwbGljYXRpb25cclxuICAgKi9cclxuICBtYXR2ZWMobWF0cml4OiBudW1iZXJbXVtdLCB2ZWN0b3I6IG51bWJlcltdKTogbnVtYmVyW10ge1xyXG4gICAgaWYgKHRoaXMubmF0aXZlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5tYXR2ZWMobWF0cml4LCB2ZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEphdmFTY3JpcHQgZmFsbGJhY2tcclxuICAgIHJldHVybiBtYXRyaXgubWFwKHJvdyA9PiB0aGlzLmRvdFByb2R1Y3Qocm93LCB2ZWN0b3IpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNvZnRtYXggYWN0aXZhdGlvbiBmdW5jdGlvblxyXG4gICAqL1xyXG4gIHNvZnRtYXgoaW5wdXQ6IG51bWJlcltdKTogbnVtYmVyW10ge1xyXG4gICAgaWYgKHRoaXMubmF0aXZlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5zb2Z0bWF4KGlucHV0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBKYXZhU2NyaXB0IGZhbGxiYWNrXHJcbiAgICBjb25zdCBtYXggPSBNYXRoLm1heCguLi5pbnB1dCk7XHJcbiAgICBjb25zdCBleHBzID0gaW5wdXQubWFwKHggPT4gTWF0aC5leHAoeCAtIG1heCkpO1xyXG4gICAgY29uc3Qgc3VtID0gZXhwcy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcclxuICAgIHJldHVybiBleHBzLm1hcCh4ID0+IHggLyBzdW0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRWxlbWVudC13aXNlIGFkZGl0aW9uXHJcbiAgICovXHJcbiAgYWRkKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IGxlbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aCk7XHJcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXkobGVuKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgcmVzdWx0W2ldID0gYVtpXSArIGJbaV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRWxlbWVudC13aXNlIG11bHRpcGxpY2F0aW9uXHJcbiAgICovXHJcbiAgbXVsKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IGxlbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aCk7XHJcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXkobGVuKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgcmVzdWx0W2ldID0gYVtpXSAqIGJbaV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2NhbGUgdmVjdG9yIGJ5IHNjYWxhclxyXG4gICAqL1xyXG4gIHNjYWxlKGE6IG51bWJlcltdLCBzY2FsYXI6IG51bWJlcik6IG51bWJlcltdIHtcclxuICAgIHJldHVybiBhLm1hcCh4ID0+IHggKiBzY2FsYXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTm9ybWFsaXplIHZlY3RvciB0byB1bml0IGxlbmd0aFxyXG4gICAqL1xyXG4gIG5vcm1hbGl6ZShhOiBudW1iZXJbXSk6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IG5vcm0gPSBNYXRoLnNxcnQoYS5yZWR1Y2UoKHN1bSwgeCkgPT4gc3VtICsgeCAqIHgsIDApKTtcclxuICAgIHJldHVybiBub3JtID4gMCA/IGEubWFwKHggPT4geCAvIG5vcm0pIDogYTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlTFUgYWN0aXZhdGlvblxyXG4gICAqL1xyXG4gIHJlbHUoaW5wdXQ6IG51bWJlcltdKTogbnVtYmVyW10ge1xyXG4gICAgcmV0dXJuIGlucHV0Lm1hcCh4ID0+IE1hdGgubWF4KDAsIHgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdFTFUgYWN0aXZhdGlvbiAoYXBwcm94aW1hdGUpXHJcbiAgICovXHJcbiAgZ2VsdShpbnB1dDogbnVtYmVyW10pOiBudW1iZXJbXSB7XHJcbiAgICByZXR1cm4gaW5wdXQubWFwKHggPT4ge1xyXG4gICAgICByZXR1cm4gMC41ICogeCAqICgxICsgTWF0aC50YW5oKE1hdGguc3FydCgyIC8gTWF0aC5QSSkgKiAoeCArIDAuMDQ0NzE1ICogeCAqIHggKiB4KSkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaWdtb2lkIGFjdGl2YXRpb25cclxuICAgKi9cclxuICBzaWdtb2lkKGlucHV0OiBudW1iZXJbXSk6IG51bWJlcltdIHtcclxuICAgIHJldHVybiBpbnB1dC5tYXAoeCA9PiAxIC8gKDEgKyBNYXRoLmV4cCgteCkpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExheWVyIG5vcm1hbGl6YXRpb25cclxuICAgKi9cclxuICBsYXllck5vcm0oaW5wdXQ6IG51bWJlcltdLCBlcHMgPSAxZS01KTogbnVtYmVyW10ge1xyXG4gICAgY29uc3QgbWVhbiA9IGlucHV0LnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApIC8gaW5wdXQubGVuZ3RoO1xyXG4gICAgY29uc3QgdmFyaWFuY2UgPSBpbnB1dC5yZWR1Y2UoKHN1bSwgeCkgPT4gc3VtICsgKHggLSBtZWFuKSAqKiAyLCAwKSAvIGlucHV0Lmxlbmd0aDtcclxuICAgIGNvbnN0IHN0ZCA9IE1hdGguc3FydCh2YXJpYW5jZSArIGVwcyk7XHJcbiAgICByZXR1cm4gaW5wdXQubWFwKHggPT4gKHggLSBtZWFuKSAvIHN0ZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBuYXRpdmUgU0lNRCBpcyBhdmFpbGFibGVcclxuICAgKi9cclxuICBpc05hdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm5hdGl2ZSAhPT0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhdmFpbGFibGUgU0lNRCBjYXBhYmlsaXRpZXNcclxuICAgKi9cclxuICBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xyXG4gICAgaWYgKCF0aGlzLm5hdGl2ZSkge1xyXG4gICAgICByZXR1cm4gWydKYXZhU2NyaXB0IChzY2FsYXIpJ107XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGhlIG5hdGl2ZSBtb2R1bGUgd2lsbCByZXBvcnQgYWN0dWFsIGNhcGFiaWxpdGllc1xyXG4gICAgY29uc3QgbW9kID0gZ2V0TmF0aXZlTW9kdWxlKCk7XHJcbiAgICBpZiAobW9kKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgZW5naW5lID0gbmV3IG1vZC5SdXZMTE1FbmdpbmUoKTtcclxuICAgICAgICByZXR1cm4gZW5naW5lLnNpbWRDYXBhYmlsaXRpZXMoKTtcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgcmV0dXJuIFsnTmF0aXZlICh1bmtub3duKSddO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFsnSmF2YVNjcmlwdCAoc2NhbGFyKSddO1xyXG4gIH1cclxufVxyXG4iXX0=
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaW1kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLGVBQWUsRUFBaUIsTUFBTSxVQUFVLENBQUM7QUFFMUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBR2xCO1FBRlEsV0FBTSxHQUF5QixJQUFJLENBQUM7UUFHMUMsTUFBTSxHQUFHLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFDOUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQztnQkFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pDLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsaUNBQWlDO1lBQ25DLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLENBQVcsRUFBRSxDQUFXO1FBQ2pDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDN0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2Is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QUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRUQsb0RBQW9EO1FBQ3BELE1BQU0sR0FBRyxHQUFHLGVBQWUsRUFBRSxDQUFDO1FBQzlCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbkMsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU0lNRCBPcGVyYXRpb25zIGZvciB2ZWN0b3IgY29tcHV0YXRpb25zXG4gKlxuICogVXNlcyBuYXRpdmUgU0lNRCBpbnN0cnVjdGlvbnMgKEFWWDIvQVZYNTEyL1NTRTQuMS9ORU9OKSB3aGVuIGF2YWlsYWJsZSxcbiAqIGZhbGxzIGJhY2sgdG8gSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbnMgb3RoZXJ3aXNlLlxuICovXG5cbmltcG9ydCB7IGdldE5hdGl2ZU1vZHVsZSwgTmF0aXZlU2ltZE9wcyB9IGZyb20gJy4vbmF0aXZlJztcblxuLyoqXG4gKiBTSU1EIE9wZXJhdGlvbnMgY2xhc3NcbiAqXG4gKiBQcm92aWRlcyBoYXJkd2FyZS1hY2NlbGVyYXRlZCB2ZWN0b3Igb3BlcmF0aW9ucyB3aGVuIG5hdGl2ZSBtb2R1bGUgaXMgYXZhaWxhYmxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBTaW1kT3BzIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XG4gKlxuICogY29uc3Qgc2ltZCA9IG5ldyBTaW1kT3BzKCk7XG4gKlxuICogLy8gQ29tcHV0ZSBkb3QgcHJvZHVjdFxuICogY29uc3QgcmVzdWx0ID0gc2ltZC5kb3RQcm9kdWN0KFsxLCAyLCAzXSwgWzQsIDUsIDZdKTtcbiAqIGNvbnNvbGUubG9nKHJlc3VsdCk7IC8vIDMyXG4gKlxuICogLy8gQ2hlY2sgY2FwYWJpbGl0aWVzXG4gKiBjb25zb2xlLmxvZyhzaW1kLmNhcGFiaWxpdGllcygpKTsgLy8gWydBVlgyJywgJ0ZNQSddXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFNpbWRPcHMge1xuICBwcml2YXRlIG5hdGl2ZTogTmF0aXZlU2ltZE9wcyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG1vZCA9IGdldE5hdGl2ZU1vZHVsZSgpO1xuICAgIGlmIChtb2QpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMubmF0aXZlID0gbmV3IG1vZC5TaW1kT3BlcmF0aW9ucygpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIEZhbGwgYmFjayB0byBKUyBpbXBsZW1lbnRhdGlvblxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlIGRvdCBwcm9kdWN0IG9mIHR3byB2ZWN0b3JzXG4gICAqL1xuICBkb3RQcm9kdWN0KGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMubmF0aXZlKSB7XG4gICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZG90UHJvZHVjdChhLCBiKTtcbiAgICB9XG5cbiAgICAvLyBKYXZhU2NyaXB0IGZhbGxiYWNrXG4gICAgbGV0IHN1bSA9IDA7XG4gICAgY29uc3QgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBzdW0gKz0gYVtpXSAqIGJbaV07XG4gICAgfVxuICAgIHJldHVybiBzdW07XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZSBjb3NpbmUgc2ltaWxhcml0eSBiZXR3ZWVuIHR3byB2ZWN0b3JzXG4gICAqL1xuICBjb3NpbmVTaW1pbGFyaXR5KGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMubmF0aXZlKSB7XG4gICAgICByZXR1cm4gdGhpcy5uYXRpdmUuY29zaW5lU2ltaWxhcml0eShhLCBiKTtcbiAgICB9XG5cbiAgICAvLyBKYXZhU2NyaXB0IGZhbGxiYWNrXG4gICAgbGV0IGRvdCA9IDA7XG4gICAgbGV0IG5vcm1BID0gMDtcbiAgICBsZXQgbm9ybUIgPSAwO1xuXG4gICAgY29uc3QgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBkb3QgKz0gYVtpXSAqIGJbaV07XG4gICAgICBub3JtQSArPSBhW2ldICogYVtpXTtcbiAgICAgIG5vcm1CICs9IGJbaV0gKiBiW2ldO1xuICAgIH1cblxuICAgIGNvbnN0IGRlbm9tID0gTWF0aC5zcXJ0KG5vcm1BKSAqIE1hdGguc3FydChub3JtQik7XG4gICAgcmV0dXJuIGRlbm9tID4gMCA/IGRvdCAvIGRlbm9tIDogMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlIEwyIChFdWNsaWRlYW4pIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlY3RvcnNcbiAgICovXG4gIGwyRGlzdGFuY2UoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5uYXRpdmUpIHtcbiAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5sMkRpc3RhbmNlKGEsIGIpO1xuICAgIH1cblxuICAgIC8vIEphdmFTY3JpcHQgZmFsbGJhY2tcbiAgICBsZXQgc3VtID0gMDtcbiAgICBjb25zdCBsZW4gPSBNYXRoLm1pbihhLmxlbmd0aCwgYi5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGRpZmYgPSBhW2ldIC0gYltpXTtcbiAgICAgIHN1bSArPSBkaWZmICogZGlmZjtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGguc3FydChzdW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdHJpeC12ZWN0b3IgbXVsdGlwbGljYXRpb25cbiAgICovXG4gIG1hdHZlYyhtYXRyaXg6IG51bWJlcltdW10sIHZlY3RvcjogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gICAgaWYgKHRoaXMubmF0aXZlKSB7XG4gICAgICByZXR1cm4gdGhpcy5uYXRpdmUubWF0dmVjKG1hdHJpeCwgdmVjdG9yKTtcbiAgICB9XG5cbiAgICAvLyBKYXZhU2NyaXB0IGZhbGxiYWNrXG4gICAgcmV0dXJuIG1hdHJpeC5tYXAocm93ID0+IHRoaXMuZG90UHJvZHVjdChyb3csIHZlY3RvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvZnRtYXggYWN0aXZhdGlvbiBmdW5jdGlvblxuICAgKi9cbiAgc29mdG1heChpbnB1dDogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gICAgaWYgKHRoaXMubmF0aXZlKSB7XG4gICAgICByZXR1cm4gdGhpcy5uYXRpdmUuc29mdG1heChpbnB1dCk7XG4gICAgfVxuXG4gICAgLy8gSmF2YVNjcmlwdCBmYWxsYmFja1xuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLmlucHV0KTtcbiAgICBjb25zdCBleHBzID0gaW5wdXQubWFwKHggPT4gTWF0aC5leHAoeCAtIG1heCkpO1xuICAgIGNvbnN0IHN1bSA9IGV4cHMucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCk7XG4gICAgcmV0dXJuIGV4cHMubWFwKHggPT4geCAvIHN1bSk7XG4gIH1cblxuICAvKipcbiAgICogRWxlbWVudC13aXNlIGFkZGl0aW9uXG4gICAqL1xuICBhZGQoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IGxlbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgcmVzdWx0W2ldID0gYVtpXSArIGJbaV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogRWxlbWVudC13aXNlIG11bHRpcGxpY2F0aW9uXG4gICAqL1xuICBtdWwoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IGxlbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgcmVzdWx0W2ldID0gYVtpXSAqIGJbaV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogU2NhbGUgdmVjdG9yIGJ5IHNjYWxhclxuICAgKi9cbiAgc2NhbGUoYTogbnVtYmVyW10sIHNjYWxhcjogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIHJldHVybiBhLm1hcCh4ID0+IHggKiBzY2FsYXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZSB2ZWN0b3IgdG8gdW5pdCBsZW5ndGhcbiAgICovXG4gIG5vcm1hbGl6ZShhOiBudW1iZXJbXSk6IG51bWJlcltdIHtcbiAgICBjb25zdCBub3JtID0gTWF0aC5zcXJ0KGEucmVkdWNlKChzdW0sIHgpID0+IHN1bSArIHggKiB4LCAwKSk7XG4gICAgcmV0dXJuIG5vcm0gPiAwID8gYS5tYXAoeCA9PiB4IC8gbm9ybSkgOiBhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlTFUgYWN0aXZhdGlvblxuICAgKi9cbiAgcmVsdShpbnB1dDogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIGlucHV0Lm1hcCh4ID0+IE1hdGgubWF4KDAsIHgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHRUxVIGFjdGl2YXRpb24gKGFwcHJveGltYXRlKVxuICAgKi9cbiAgZ2VsdShpbnB1dDogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIGlucHV0Lm1hcCh4ID0+IHtcbiAgICAgIHJldHVybiAwLjUgKiB4ICogKDEgKyBNYXRoLnRhbmgoTWF0aC5zcXJ0KDIgLyBNYXRoLlBJKSAqICh4ICsgMC4wNDQ3MTUgKiB4ICogeCAqIHgpKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbW9pZCBhY3RpdmF0aW9uXG4gICAqL1xuICBzaWdtb2lkKGlucHV0OiBudW1iZXJbXSk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gaW5wdXQubWFwKHggPT4gMSAvICgxICsgTWF0aC5leHAoLXgpKSk7XG4gIH1cblxuICAvKipcbiAgICogTGF5ZXIgbm9ybWFsaXphdGlvblxuICAgKi9cbiAgbGF5ZXJOb3JtKGlucHV0OiBudW1iZXJbXSwgZXBzID0gMWUtNSk6IG51bWJlcltdIHtcbiAgICBjb25zdCBtZWFuID0gaW5wdXQucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCkgLyBpbnB1dC5sZW5ndGg7XG4gICAgY29uc3QgdmFyaWFuY2UgPSBpbnB1dC5yZWR1Y2UoKHN1bSwgeCkgPT4gc3VtICsgKHggLSBtZWFuKSAqKiAyLCAwKSAvIGlucHV0Lmxlbmd0aDtcbiAgICBjb25zdCBzdGQgPSBNYXRoLnNxcnQodmFyaWFuY2UgKyBlcHMpO1xuICAgIHJldHVybiBpbnB1dC5tYXAoeCA9PiAoeCAtIG1lYW4pIC8gc3RkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBuYXRpdmUgU0lNRCBpcyBhdmFpbGFibGVcbiAgICovXG4gIGlzTmF0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hdGl2ZSAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYXZhaWxhYmxlIFNJTUQgY2FwYWJpbGl0aWVzXG4gICAqL1xuICBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIGlmICghdGhpcy5uYXRpdmUpIHtcbiAgICAgIHJldHVybiBbJ0phdmFTY3JpcHQgKHNjYWxhciknXTtcbiAgICB9XG5cbiAgICAvLyBUaGUgbmF0aXZlIG1vZHVsZSB3aWxsIHJlcG9ydCBhY3R1YWwgY2FwYWJpbGl0aWVzXG4gICAgY29uc3QgbW9kID0gZ2V0TmF0aXZlTW9kdWxlKCk7XG4gICAgaWYgKG1vZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZW5naW5lID0gbmV3IG1vZC5SdXZMTE1FbmdpbmUoKTtcbiAgICAgICAgcmV0dXJuIGVuZ2luZS5zaW1kQ2FwYWJpbGl0aWVzKCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIFsnTmF0aXZlICh1bmtub3duKSddO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbJ0phdmFTY3JpcHQgKHNjYWxhciknXTtcbiAgfVxufVxuIl19