@ruvector/ruvllm 2.5.5 → 2.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +282 -282
  2. package/bin/cli.js +1020 -1020
  3. package/dist/cjs/benchmarks/embedding-benchmark.js +1 -1
  4. package/dist/cjs/benchmarks/index.js +1 -1
  5. package/dist/cjs/benchmarks/model-comparison.js +1 -1
  6. package/dist/cjs/benchmarks/routing-benchmark.js +1 -1
  7. package/dist/cjs/contrastive.js +70 -70
  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 +1 -1
  13. package/dist/cjs/lora.js +1 -1
  14. package/dist/cjs/models.js +1 -1
  15. package/dist/cjs/native.js +1 -1
  16. package/dist/cjs/session.js +1 -1
  17. package/dist/cjs/simd.js +1 -1
  18. package/dist/cjs/sona.d.ts +36 -0
  19. package/dist/cjs/sona.d.ts.map +1 -1
  20. package/dist/cjs/sona.js +66 -4
  21. package/dist/cjs/streaming.js +1 -1
  22. package/dist/cjs/training.js +1 -1
  23. package/dist/cjs/types.js +1 -1
  24. package/dist/esm/benchmarks/embedding-benchmark.js +1 -1
  25. package/dist/esm/benchmarks/index.js +1 -1
  26. package/dist/esm/benchmarks/model-comparison.js +1 -1
  27. package/dist/esm/benchmarks/routing-benchmark.js +1 -1
  28. package/dist/esm/contrastive.js +70 -70
  29. package/dist/esm/engine.js +13 -13
  30. package/dist/esm/export.js +31 -31
  31. package/dist/esm/federated.js +1 -1
  32. package/dist/esm/index.js +1 -1
  33. package/dist/esm/intelligence.js +1 -1
  34. package/dist/esm/lora.js +1 -1
  35. package/dist/esm/models.js +1 -1
  36. package/dist/esm/native.js +1 -1
  37. package/dist/esm/session.js +1 -1
  38. package/dist/esm/simd.js +1 -1
  39. package/dist/esm/sona.d.ts +36 -0
  40. package/dist/esm/sona.d.ts.map +1 -1
  41. package/dist/esm/sona.js +66 -4
  42. package/dist/esm/streaming.js +1 -1
  43. package/dist/esm/training.js +1 -1
  44. package/dist/esm/types.js +1 -1
  45. package/package.json +133 -133
  46. package/scripts/ensemble-model-compare.js +287 -287
  47. package/scripts/huggingface/README.md +537 -537
  48. package/scripts/huggingface/publish.sh +112 -112
  49. package/scripts/hybrid-model-compare.js +373 -373
  50. package/scripts/improved-model-compare.js +288 -288
  51. package/scripts/optimized-model-compare.js +364 -364
  52. package/scripts/real-model-compare.js +280 -280
  53. package/scripts/training/agentic-flow-capabilities.json +329 -329
  54. package/scripts/training/claude-code-synth.js +505 -505
  55. package/scripts/training/claude-flow-capabilities.json +1322 -1322
  56. package/scripts/training/claude-hard-negatives.js +222 -222
  57. package/scripts/training/contrastive-finetune.js +517 -517
  58. package/scripts/training/ecosystem-triplets.jsonl +1466 -1466
  59. package/scripts/training/generate-ecosystem-triplets.js +1324 -1324
  60. package/scripts/training/routing-dataset.js +634 -634
  61. package/scripts/training/ruvector-capabilities.json +798 -798
  62. package/scripts/training/validate-ecosystem.js +381 -381
  63. package/scripts/training/validation-results.json +22 -22
package/dist/cjs/types.js CHANGED
@@ -3,4 +3,4 @@
3
3
  * RuvLLM Type Definitions
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSdXZMTE0gVHlwZSBEZWZpbml0aW9uc1xuICovXG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgUnV2TExNIGVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1dkxMTUNvbmZpZyB7XG4gIC8qKiBFbWJlZGRpbmcgZGltZW5zaW9uIChkZWZhdWx0OiA3NjgpICovXG4gIGVtYmVkZGluZ0RpbT86IG51bWJlcjtcbiAgLyoqIFJvdXRlciBoaWRkZW4gZGltZW5zaW9uIChkZWZhdWx0OiAxMjgpICovXG4gIHJvdXRlckhpZGRlbkRpbT86IG51bWJlcjtcbiAgLyoqIEhOU1cgTSBwYXJhbWV0ZXIgKGRlZmF1bHQ6IDE2KSAqL1xuICBobnN3TT86IG51bWJlcjtcbiAgLyoqIEhOU1cgZWZfY29uc3RydWN0aW9uIChkZWZhdWx0OiAxMDApICovXG4gIGhuc3dFZkNvbnN0cnVjdGlvbj86IG51bWJlcjtcbiAgLyoqIEhOU1cgZWZfc2VhcmNoIChkZWZhdWx0OiA2NCkgKi9cbiAgaG5zd0VmU2VhcmNoPzogbnVtYmVyO1xuICAvKiogRW5hYmxlIGxlYXJuaW5nIChkZWZhdWx0OiB0cnVlKSAqL1xuICBsZWFybmluZ0VuYWJsZWQ/OiBib29sZWFuO1xuICAvKiogUXVhbGl0eSB0aHJlc2hvbGQgZm9yIGxlYXJuaW5nIChkZWZhdWx0OiAwLjcpICovXG4gIHF1YWxpdHlUaHJlc2hvbGQ/OiBudW1iZXI7XG4gIC8qKiBFV0MgbGFtYmRhIChkZWZhdWx0OiAyMDAwKSAqL1xuICBld2NMYW1iZGE/OiBudW1iZXI7XG59XG5cbi8qKlxuICogR2VuZXJhdGlvbiBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGlvbkNvbmZpZyB7XG4gIC8qKiBNYXhpbXVtIHRva2VucyB0byBnZW5lcmF0ZSAqL1xuICBtYXhUb2tlbnM/OiBudW1iZXI7XG4gIC8qKiBUZW1wZXJhdHVyZSBmb3Igc2FtcGxpbmcgKDAuMCAtIDIuMCkgKi9cbiAgdGVtcGVyYXR1cmU/OiBudW1iZXI7XG4gIC8qKiBUb3AtcCBudWNsZXVzIHNhbXBsaW5nICgwLjAgLSAxLjApICovXG4gIHRvcFA/OiBudW1iZXI7XG4gIC8qKiBUb3AtayBzYW1wbGluZyAqL1xuICB0b3BLPzogbnVtYmVyO1xuICAvKiogUmVwZXRpdGlvbiBwZW5hbHR5ICovXG4gIHJlcGV0aXRpb25QZW5hbHR5PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFF1ZXJ5IHJlc3BvbnNlIGZyb20gdGhlIExMTVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5UmVzcG9uc2Uge1xuICAvKiogR2VuZXJhdGVkIHRleHQgKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogQ29uZmlkZW5jZSBzY29yZSAoMC4wIC0gMS4wKSAqL1xuICBjb25maWRlbmNlOiBudW1iZXI7XG4gIC8qKiBTZWxlY3RlZCBtb2RlbCAqL1xuICBtb2RlbDogc3RyaW5nO1xuICAvKiogQ29udGV4dCBzaXplIHVzZWQgKi9cbiAgY29udGV4dFNpemU6IG51bWJlcjtcbiAgLyoqIExhdGVuY3kgaW4gbWlsbGlzZWNvbmRzICovXG4gIGxhdGVuY3lNczogbnVtYmVyO1xuICAvKiogUmVxdWVzdCBJRCBmb3IgZmVlZGJhY2sgKi9cbiAgcmVxdWVzdElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUm91dGluZyBkZWNpc2lvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRpbmdEZWNpc2lvbiB7XG4gIC8qKiBTZWxlY3RlZCBtb2RlbCBzaXplICovXG4gIG1vZGVsOiBNb2RlbFNpemU7XG4gIC8qKiBSZWNvbW1lbmRlZCBjb250ZXh0IHNpemUgKi9cbiAgY29udGV4dFNpemU6IG51bWJlcjtcbiAgLyoqIFRlbXBlcmF0dXJlICovXG4gIHRlbXBlcmF0dXJlOiBudW1iZXI7XG4gIC8qKiBUb3AtcCAqL1xuICB0b3BQOiBudW1iZXI7XG4gIC8qKiBDb25maWRlbmNlICovXG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBNZW1vcnkgc2VhcmNoIHJlc3VsdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbW9yeVJlc3VsdCB7XG4gIC8qKiBOb2RlIElEICovXG4gIGlkOiBudW1iZXI7XG4gIC8qKiBTaW1pbGFyaXR5IHNjb3JlICovXG4gIHNjb3JlOiBudW1iZXI7XG4gIC8qKiBDb250ZW50IHRleHQgKi9cbiAgY29udGVudDogc3RyaW5nO1xuICAvKiogTWV0YWRhdGEgKi9cbiAgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIEVuZ2luZSBzdGF0aXN0aWNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnV2TExNU3RhdHMge1xuICAvKiogVG90YWwgcXVlcmllcyBwcm9jZXNzZWQgKi9cbiAgdG90YWxRdWVyaWVzOiBudW1iZXI7XG4gIC8qKiBNZW1vcnkgbm9kZXMgc3RvcmVkICovXG4gIG1lbW9yeU5vZGVzOiBudW1iZXI7XG4gIC8qKiBQYXR0ZXJucyBsZWFybmVkICovXG4gIHBhdHRlcm5zTGVhcm5lZDogbnVtYmVyO1xuICAvKiogQXZlcmFnZSBsYXRlbmN5IGluIG1zICovXG4gIGF2Z0xhdGVuY3lNczogbnVtYmVyO1xuICAvKiogQ2FjaGUgaGl0IHJhdGUgKDAuMCAtIDEuMCkgKi9cbiAgY2FjaGVIaXRSYXRlOiBudW1iZXI7XG4gIC8qKiBSb3V0ZXIgYWNjdXJhY3kgKDAuMCAtIDEuMCkgKi9cbiAgcm91dGVyQWNjdXJhY3k6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBNb2RlbCBzaXplIG9wdGlvbnNcbiAqL1xuZXhwb3J0IHR5cGUgTW9kZWxTaXplID0gJ00zNTAnIHwgJ003MDAnIHwgJ0IxXzInIHwgJ0IyXzYnO1xuXG4vKipcbiAqIEZlZWRiYWNrIGZvciBsZWFybmluZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZlZWRiYWNrIHtcbiAgLyoqIFJlcXVlc3QgSUQgZnJvbSBxdWVyeSByZXNwb25zZSAqL1xuICByZXF1ZXN0SWQ6IHN0cmluZztcbiAgLyoqIFJhdGluZyAxLTUgKi9cbiAgcmF0aW5nOiBudW1iZXI7XG4gIC8qKiBPcHRpb25hbCBjb3JyZWN0aW9uIHRleHQgKi9cbiAgY29ycmVjdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBTZXNzaW9uIGZvciBtdWx0aS10dXJuIGNvbnZlcnNhdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uIHtcbiAgLyoqIFNlc3Npb24gSUQgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIENyZWF0ZWQgdGltZXN0YW1wICovXG4gIGNyZWF0ZWRBdDogRGF0ZTtcbiAgLyoqIE1lc3NhZ2VzIGluIHNlc3Npb24gKi9cbiAgbWVzc2FnZUNvdW50OiBudW1iZXI7XG59XG5cbi8qKlxuICogU0lNRCBjYXBhYmlsaXRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaW1kQ2FwYWJpbGl0aWVzIHtcbiAgLyoqIEhhcyBhbnkgU0lNRCBzdXBwb3J0ICovXG4gIGhhc1NpbWQ6IGJvb2xlYW47XG4gIC8qKiBBdmFpbGFibGUgU0lNRCBpbnN0cnVjdGlvbnMgKi9cbiAgY2FwYWJpbGl0aWVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBFbWJlZGRpbmcgcmVzdWx0XG4gKi9cbmV4cG9ydCB0eXBlIEVtYmVkZGluZyA9IG51bWJlcltdO1xuXG4vKipcbiAqIEJhdGNoIHF1ZXJ5IHJlcXVlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXRjaFF1ZXJ5UmVxdWVzdCB7XG4gIC8qKiBRdWVyaWVzIHRvIHByb2Nlc3MgKi9cbiAgcXVlcmllczogc3RyaW5nW107XG4gIC8qKiBPcHRpb25hbCBnZW5lcmF0aW9uIGNvbmZpZyAqL1xuICBjb25maWc/OiBHZW5lcmF0aW9uQ29uZmlnO1xufVxuXG4vKipcbiAqIEJhdGNoIHF1ZXJ5IHJlc3BvbnNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmF0Y2hRdWVyeVJlc3BvbnNlIHtcbiAgLyoqIFJlc3BvbnNlcyBmb3IgZWFjaCBxdWVyeSAqL1xuICByZXNwb25zZXM6IFF1ZXJ5UmVzcG9uc2VbXTtcbiAgLyoqIFRvdGFsIHByb2Nlc3NpbmcgdGltZSBpbiBtcyAqL1xuICB0b3RhbExhdGVuY3lNczogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU09OQSBMZWFybmluZyBUeXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBTT05BIENvbmZpZ3VyYXRpb24gZm9yIGFkYXB0aXZlIGxlYXJuaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU29uYUNvbmZpZyB7XG4gIC8qKiBFbmFibGUgaW5zdGFudCBsb29wIChyZWFsLXRpbWUgbGVhcm5pbmcpICovXG4gIGluc3RhbnRMb29wRW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKiBFbmFibGUgYmFja2dyb3VuZCBsb29wIChiYXRjaCBsZWFybmluZykgKi9cbiAgYmFja2dyb3VuZExvb3BFbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqIExlYXJuaW5nIHJhdGUgZm9yIExvUkEgYWRhcHRlcnMgKi9cbiAgbG9yYUxlYXJuaW5nUmF0ZT86IG51bWJlcjtcbiAgLyoqIExvUkEgcmFuayAobG93ZXIgPSBmYXN0ZXIsIGhpZ2hlciA9IG1vcmUgY2FwYWNpdHkpICovXG4gIGxvcmFSYW5rPzogbnVtYmVyO1xuICAvKiogRVdDIGxhbWJkYSBmb3IgbWVtb3J5IHByb3RlY3Rpb24gKi9cbiAgZXdjTGFtYmRhPzogbnVtYmVyO1xuICAvKiogTWF4IHRyYWplY3RvcnkgYnVmZmVyIHNpemUgKi9cbiAgbWF4VHJhamVjdG9yeVNpemU/OiBudW1iZXI7XG4gIC8qKiBQYXR0ZXJuIHNpbWlsYXJpdHkgdGhyZXNob2xkICovXG4gIHBhdHRlcm5UaHJlc2hvbGQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogTGVhcm5pbmcgc2lnbmFsIGZyb20gdXNlciBmZWVkYmFja1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExlYXJuaW5nU2lnbmFsIHtcbiAgLyoqIFJlcXVlc3QgSUQgKi9cbiAgcmVxdWVzdElkOiBzdHJpbmc7XG4gIC8qKiBRdWFsaXR5IHNjb3JlICgwLTEpICovXG4gIHF1YWxpdHk6IG51bWJlcjtcbiAgLyoqIFNpZ25hbCB0eXBlICovXG4gIHR5cGU6IFNpZ25hbFR5cGU7XG4gIC8qKiBPcHRpb25hbCBjb3JyZWN0aW9uICovXG4gIGNvcnJlY3Rpb24/OiBzdHJpbmc7XG4gIC8qKiBUaW1lc3RhbXAgKi9cbiAgdGltZXN0YW1wOiBEYXRlO1xufVxuXG4vKipcbiAqIFNpZ25hbCB0eXBlcyBmb3IgbGVhcm5pbmdcbiAqL1xuZXhwb3J0IHR5cGUgU2lnbmFsVHlwZSA9ICdwb3NpdGl2ZScgfCAnbmVnYXRpdmUnIHwgJ2NvcnJlY3Rpb24nIHwgJ2ltcGxpY2l0JztcblxuLyoqXG4gKiBRdWVyeSB0cmFqZWN0b3J5IGZvciBsZWFybmluZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5VHJhamVjdG9yeSB7XG4gIC8qKiBUcmFqZWN0b3J5IElEICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBTdGVwcyBpbiB0aGUgdHJhamVjdG9yeSAqL1xuICBzdGVwczogVHJhamVjdG9yeVN0ZXBbXTtcbiAgLyoqIEZpbmFsIG91dGNvbWUgKi9cbiAgb3V0Y29tZTogVHJhamVjdG9yeU91dGNvbWU7XG4gIC8qKiBUb3RhbCBkdXJhdGlvbiAqL1xuICBkdXJhdGlvbk1zOiBudW1iZXI7XG59XG5cbi8qKlxuICogU2luZ2xlIHN0ZXAgaW4gYSB0cmFqZWN0b3J5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhamVjdG9yeVN0ZXAge1xuICAvKiogU3RlcCB0eXBlICovXG4gIHR5cGU6ICdxdWVyeScgfCAncm91dGUnIHwgJ2dlbmVyYXRlJyB8ICdtZW1vcnknIHwgJ2ZlZWRiYWNrJztcbiAgLyoqIElucHV0IGRhdGEgKi9cbiAgaW5wdXQ6IHN0cmluZztcbiAgLyoqIE91dHB1dCBkYXRhICovXG4gIG91dHB1dDogc3RyaW5nO1xuICAvKiogRHVyYXRpb24gb2YgdGhpcyBzdGVwICovXG4gIGR1cmF0aW9uTXM6IG51bWJlcjtcbiAgLyoqIENvbmZpZGVuY2UgYXQgdGhpcyBzdGVwICovXG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUcmFqZWN0b3J5IG91dGNvbWVcbiAqL1xuZXhwb3J0IHR5cGUgVHJhamVjdG9yeU91dGNvbWUgPSAnc3VjY2VzcycgfCAncGFydGlhbCcgfCAnZmFpbHVyZScgfCAndW5rbm93bic7XG5cbi8qKlxuICogTGVhcm5lZCBwYXR0ZXJuIGZyb20gUmVhc29uaW5nQmFua1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExlYXJuZWRQYXR0ZXJuIHtcbiAgLyoqIFBhdHRlcm4gSUQgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIFBhdHRlcm4gdHlwZSAqL1xuICB0eXBlOiBQYXR0ZXJuVHlwZTtcbiAgLyoqIFBhdHRlcm4gZW1iZWRkaW5nICovXG4gIGVtYmVkZGluZzogRW1iZWRkaW5nO1xuICAvKiogU3VjY2VzcyByYXRlICgwLTEpICovXG4gIHN1Y2Nlc3NSYXRlOiBudW1iZXI7XG4gIC8qKiBUaW1lcyB1c2VkICovXG4gIHVzZUNvdW50OiBudW1iZXI7XG4gIC8qKiBMYXN0IHVzZWQgdGltZXN0YW1wICovXG4gIGxhc3RVc2VkOiBEYXRlO1xufVxuXG4vKipcbiAqIFR5cGVzIG9mIGxlYXJuZWQgcGF0dGVybnNcbiAqL1xuZXhwb3J0IHR5cGUgUGF0dGVyblR5cGUgPVxuICB8ICdxdWVyeV9yZXNwb25zZScgICAgICAvLyBRJkEgcGF0dGVyblxuICB8ICdyb3V0aW5nJyAgICAgICAgICAgICAvLyBSb3V0aW5nIGRlY2lzaW9uIHBhdHRlcm5cbiAgfCAnY29udGV4dF9yZXRyaWV2YWwnICAgLy8gTWVtb3J5IHJldHJpZXZhbCBwYXR0ZXJuXG4gIHwgJ2NvcnJlY3Rpb24nICAgICAgICAgIC8vIFVzZXIgY29ycmVjdGlvbiBwYXR0ZXJuXG4gIHwgJ2Fic3RyYWN0aW9uJzsgICAgICAgIC8vIENvbXByZXNzZWQgY29uY2VwdFxuXG4vKipcbiAqIExvUkEgYWRhcHRlciBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9SQUNvbmZpZyB7XG4gIC8qKiBBZGFwdGVyIHJhbmsgKDQsIDgsIDE2LCAzMikgKi9cbiAgcmFuazogbnVtYmVyO1xuICAvKiogQWxwaGEgc2NhbGluZyBmYWN0b3IgKi9cbiAgYWxwaGE6IG51bWJlcjtcbiAgLyoqIERyb3BvdXQgcmF0ZSAqL1xuICBkcm9wb3V0OiBudW1iZXI7XG4gIC8qKiBUYXJnZXQgbW9kdWxlcyB0byBhZGFwdCAqL1xuICB0YXJnZXRNb2R1bGVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBFV0MgKEVsYXN0aWMgV2VpZ2h0IENvbnNvbGlkYXRpb24pIHN0YXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXdjU3RhdHMge1xuICAvKiogTnVtYmVyIG9mIHRhc2tzIGxlYXJuZWQgKi9cbiAgdGFza3NMZWFybmVkOiBudW1iZXI7XG4gIC8qKiBGaXNoZXIgaW5mb3JtYXRpb24gY29tcHV0ZWQgKi9cbiAgZmlzaGVyQ29tcHV0ZWQ6IGJvb2xlYW47XG4gIC8qKiBNZW1vcnkgcHJvdGVjdGlvbiBzdHJlbmd0aCAqL1xuICBwcm90ZWN0aW9uU3RyZW5ndGg6IG51bWJlcjtcbiAgLyoqIEVzdGltYXRlZCBmb3JnZXR0aW5nIHJhdGUgKi9cbiAgZm9yZ2V0dGluZ1JhdGU6IG51bWJlcjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlc3Npb24gJiBDb252ZXJzYXRpb24gVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRXh0ZW5kZWQgc2Vzc2lvbiB3aXRoIGNvbnZlcnNhdGlvbiBoaXN0b3J5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udmVyc2F0aW9uU2Vzc2lvbiBleHRlbmRzIFNlc3Npb24ge1xuICAvKiogQ29udmVyc2F0aW9uIG1lc3NhZ2VzICovXG4gIG1lc3NhZ2VzOiBDb252ZXJzYXRpb25NZXNzYWdlW107XG4gIC8qKiBTZXNzaW9uIGNvbnRleHQgKGFjY3VtdWxhdGVkKSAqL1xuICBjb250ZXh0OiBzdHJpbmdbXTtcbiAgLyoqIEFjdGl2ZSBtZW1vcnkgSURzICovXG4gIGFjdGl2ZU1lbW9yeUlkczogbnVtYmVyW107XG4gIC8qKiBTZXNzaW9uIG1ldGFkYXRhICovXG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBTaW5nbGUgbWVzc2FnZSBpbiBjb252ZXJzYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb252ZXJzYXRpb25NZXNzYWdlIHtcbiAgLyoqIE1lc3NhZ2Ugcm9sZSAqL1xuICByb2xlOiAndXNlcicgfCAnYXNzaXN0YW50JyB8ICdzeXN0ZW0nO1xuICAvKiogTWVzc2FnZSBjb250ZW50ICovXG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgLyoqIFRpbWVzdGFtcCAqL1xuICB0aW1lc3RhbXA6IERhdGU7XG4gIC8qKiBBc3NvY2lhdGVkIHJlcXVlc3QgSUQgKGlmIGFzc2lzdGFudCkgKi9cbiAgcmVxdWVzdElkPzogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU3RyZWFtaW5nIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFN0cmVhbWluZyByZXNwb25zZSBjaHVua1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmVhbUNodW5rIHtcbiAgLyoqIENodW5rIHRleHQgKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogSXMgZmluYWwgY2h1bmsgKi9cbiAgZG9uZTogYm9vbGVhbjtcbiAgLyoqIFRva2VuIGNvdW50IHNvIGZhciAqL1xuICB0b2tlbkNvdW50OiBudW1iZXI7XG4gIC8qKiBDdW11bGF0aXZlIGxhdGVuY3kgKi9cbiAgbGF0ZW5jeU1zOiBudW1iZXI7XG59XG5cbi8qKlxuICogU3RyZWFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1PcHRpb25zIGV4dGVuZHMgR2VuZXJhdGlvbkNvbmZpZyB7XG4gIC8qKiBDYWxsYmFjayBmb3IgZWFjaCBjaHVuayAqL1xuICBvbkNodW5rPzogKGNodW5rOiBTdHJlYW1DaHVuaykgPT4gdm9pZDtcbiAgLyoqIENhbGxiYWNrIG9uIGNvbXBsZXRpb24gKi9cbiAgb25Db21wbGV0ZT86IChyZXNwb25zZTogUXVlcnlSZXNwb25zZSkgPT4gdm9pZDtcbiAgLyoqIENhbGxiYWNrIG9uIGVycm9yICovXG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29tcHJlc3Npb24gJiBBcmNoaXZhbCBUeXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBNZW1vcnkgY29tcHJlc3Npb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHJlc3Npb25SZXN1bHQge1xuICAvKiogTm9kZXMgY29tcHJlc3NlZCAqL1xuICBub2Rlc0NvbXByZXNzZWQ6IG51bWJlcjtcbiAgLyoqIE5vZGVzIGFyY2hpdmVkICovXG4gIG5vZGVzQXJjaGl2ZWQ6IG51bWJlcjtcbiAgLyoqIENvbmNlcHRzIGNyZWF0ZWQgKi9cbiAgY29uY2VwdHNDcmVhdGVkOiBudW1iZXI7XG4gIC8qKiBNZW1vcnkgc2F2ZWQgKGJ5dGVzKSAqL1xuICBtZW1vcnlTYXZlZDogbnVtYmVyO1xuICAvKiogRHVyYXRpb24gKi9cbiAgZHVyYXRpb25NczogbnVtYmVyO1xufVxuXG4vKipcbiAqIEFyY2hpdmUgcXVlcnkgcmVzdWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJjaGl2ZVJlc3VsdCB7XG4gIC8qKiBBcmNoaXZlZCBub2RlIElEICovXG4gIGlkOiBudW1iZXI7XG4gIC8qKiBPcmlnaW5hbCBjb250ZW50IChpZiBhdmFpbGFibGUpICovXG4gIGNvbnRlbnQ/OiBzdHJpbmc7XG4gIC8qKiBDb25jZXB0IGl0IGJlbG9uZ3MgdG8gKi9cbiAgY29uY2VwdElkPzogc3RyaW5nO1xuICAvKiogQXJjaGl2ZSB0aW1lc3RhbXAgKi9cbiAgYXJjaGl2ZWRBdDogRGF0ZTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEF0dGVudGlvbiBUeXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBBdHRlbnRpb24gd2VpZ2h0cyBmb3IgaW50ZXJwcmV0YWJpbGl0eVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0dGVudGlvbldlaWdodHMge1xuICAvKiogUXVlcnkta2V5IGF0dGVudGlvbiBzY29yZXMgKi9cbiAgc2NvcmVzOiBudW1iZXJbXVtdO1xuICAvKiogSGVhZCBpbmRleCAqL1xuICBoZWFkSW5kZXg6IG51bWJlcjtcbiAgLyoqIExheWVyIGluZGV4ICovXG4gIGxheWVySW5kZXg6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBdHRlbnRpb24gYW5hbHlzaXMgcmVzdWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0ZW50aW9uQW5hbHlzaXMge1xuICAvKiogTW9zdCBhdHRlbmRlZCB0b2tlbnMgKi9cbiAgdG9wQXR0ZW5kZWQ6IEFycmF5PHsgdG9rZW46IHN0cmluZzsgd2VpZ2h0OiBudW1iZXIgfT47XG4gIC8qKiBBdHRlbnRpb24gZW50cm9weSAodW5jZXJ0YWludHkpICovXG4gIGVudHJvcHk6IG51bWJlcjtcbiAgLyoqIEZvY3VzIHNjb3JlICgwLTEsIGhpZ2hlciA9IG1vcmUgZm9jdXNlZCkgKi9cbiAgZm9jdXNTY29yZTogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRmVkZXJhdGVkIExlYXJuaW5nIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEZlZGVyYXRlZCBsZWFybmluZyBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmVkZXJhdGVkQ29uZmlnIHtcbiAgLyoqIEhpZGRlbiBkaW1lbnNpb24gZm9yIGVtYmVkZGluZ3MgKi9cbiAgaGlkZGVuRGltPzogbnVtYmVyO1xuICAvKiogRW1iZWRkaW5nIGRpbWVuc2lvbiAqL1xuICBlbWJlZGRpbmdEaW0/OiBudW1iZXI7XG4gIC8qKiBNaWNyby1Mb1JBIHJhbmsgKi9cbiAgbWljcm9Mb3JhUmFuaz86IG51bWJlcjtcbiAgLyoqIEJhc2UgTG9SQSByYW5rICovXG4gIGJhc2VMb3JhUmFuaz86IG51bWJlcjtcbiAgLyoqIFRyYWplY3RvcnkgYnVmZmVyIGNhcGFjaXR5ICovXG4gIHRyYWplY3RvcnlDYXBhY2l0eT86IG51bWJlcjtcbiAgLyoqIFBhdHRlcm4gY2x1c3RlciBjb3VudCAqL1xuICBwYXR0ZXJuQ2x1c3RlcnM/OiBudW1iZXI7XG4gIC8qKiBFV0MgbGFtYmRhIGZvciByZWd1bGFyaXphdGlvbiAqL1xuICBld2NMYW1iZGE/OiBudW1iZXI7XG4gIC8qKiBRdWFsaXR5IHRocmVzaG9sZCBmb3IgYWNjZXB0aW5nIHRyYWplY3RvcmllcyAqL1xuICBxdWFsaXR5VGhyZXNob2xkPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRyYWplY3RvcnkgZXhwb3J0IGZvciBmZWRlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhamVjdG9yeUV4cG9ydCB7XG4gIC8qKiBRdWVyeSBlbWJlZGRpbmcgKi9cbiAgZW1iZWRkaW5nOiBFbWJlZGRpbmc7XG4gIC8qKiBRdWFsaXR5IHNjb3JlICovXG4gIHF1YWxpdHk6IG51bWJlcjtcbiAgLyoqIE1vZGVsIHJvdXRlIChpZiBhbnkpICovXG4gIHJvdXRlPzogc3RyaW5nO1xuICAvKiogQ29udGV4dCBpZGVudGlmaWVycyAqL1xuICBjb250ZXh0OiBzdHJpbmdbXTtcbiAgLyoqIFRpbWVzdGFtcCAqL1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBZ2VudCBleHBvcnQgc3RhdGlzdGljc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50RXhwb3J0U3RhdHMge1xuICAvKiogVG90YWwgdHJhamVjdG9yaWVzIHByb2Nlc3NlZCAqL1xuICB0b3RhbFRyYWplY3RvcmllczogbnVtYmVyO1xuICAvKiogQXZlcmFnZSBxdWFsaXR5ICovXG4gIGF2Z1F1YWxpdHk6IG51bWJlcjtcbiAgLyoqIFBhdHRlcm5zIGxlYXJuZWQgbG9jYWxseSAqL1xuICBwYXR0ZXJuc0xlYXJuZWQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBFeHBvcnRlZCBzdGF0ZSBmcm9tIGFuIGVwaGVtZXJhbCBhZ2VudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50RXhwb3J0IHtcbiAgLyoqIEFnZW50IGlkZW50aWZpZXIgKi9cbiAgYWdlbnRJZDogc3RyaW5nO1xuICAvKiogRXhwb3J0ZWQgdHJhamVjdG9yaWVzICovXG4gIHRyYWplY3RvcmllczogVHJhamVjdG9yeUV4cG9ydFtdO1xuICAvKiogQWdlbnQgc3RhdGlzdGljcyAqL1xuICBzdGF0czogQWdlbnRFeHBvcnRTdGF0cztcbiAgLyoqIFNlc3Npb24gZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzICovXG4gIHNlc3Npb25EdXJhdGlvbk1zOiBudW1iZXI7XG4gIC8qKiBFeHBvcnQgdGltZXN0YW1wICovXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEFnZW50IGNvbnRyaWJ1dGlvbiByZWNvcmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2VudENvbnRyaWJ1dGlvbiB7XG4gIC8qKiBOdW1iZXIgb2YgdHJhamVjdG9yaWVzIGNvbnRyaWJ1dGVkICovXG4gIHRyYWplY3RvcnlDb3VudDogbnVtYmVyO1xuICAvKiogQXZlcmFnZSBxdWFsaXR5IG9mIGNvbnRyaWJ1dGlvbnMgKi9cbiAgYXZnUXVhbGl0eTogbnVtYmVyO1xuICAvKiogQ29udHJpYnV0aW9uIHRpbWVzdGFtcCAqL1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgLyoqIFNlc3Npb24gZHVyYXRpb24gKi9cbiAgc2Vzc2lvbkR1cmF0aW9uTXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYWdncmVnYXRpbmcgYW4gYWdlbnQgZXhwb3J0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdncmVnYXRpb25SZXN1bHQge1xuICAvKiogQWdlbnQgSUQgdGhhdCB3YXMgYWdncmVnYXRlZCAqL1xuICBhZ2VudElkOiBzdHJpbmc7XG4gIC8qKiBOdW1iZXIgb2YgdHJhamVjdG9yaWVzIGFjY2VwdGVkICovXG4gIHRyYWplY3Rvcmllc0FjY2VwdGVkOiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2YgdHJhamVjdG9yaWVzIHJlamVjdGVkIChiZWxvdyBxdWFsaXR5IHRocmVzaG9sZCkgKi9cbiAgdHJhamVjdG9yaWVzUmVqZWN0ZWQ6IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgY29uc29saWRhdGlvbiB3YXMgdHJpZ2dlcmVkICovXG4gIGNvbnNvbGlkYXRlZDogYm9vbGVhbjtcbiAgLyoqIFRvdGFsIG51bWJlciBvZiBjb250cmlidXRpbmcgYWdlbnRzICovXG4gIHRvdGFsQWdlbnRzOiBudW1iZXI7XG4gIC8qKiBUb3RhbCB0cmFqZWN0b3JpZXMgaW4gY29vcmRpbmF0b3IgKi9cbiAgdG90YWxUcmFqZWN0b3JpZXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb29yZGluYXRvciBzdGF0aXN0aWNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29vcmRpbmF0b3JTdGF0cyB7XG4gIC8qKiBDb29yZGluYXRvciBpZGVudGlmaWVyICovXG4gIGNvb3JkaW5hdG9ySWQ6IHN0cmluZztcbiAgLyoqIE51bWJlciBvZiBjb250cmlidXRpbmcgYWdlbnRzICovXG4gIHRvdGFsQWdlbnRzOiBudW1iZXI7XG4gIC8qKiBUb3RhbCB0cmFqZWN0b3JpZXMgYWdncmVnYXRlZCAqL1xuICB0b3RhbFRyYWplY3RvcmllczogbnVtYmVyO1xuICAvKiogUGF0dGVybnMgbGVhcm5lZCAqL1xuICBwYXR0ZXJuc0xlYXJuZWQ6IG51bWJlcjtcbiAgLyoqIEF2ZXJhZ2UgcXVhbGl0eSBhY3Jvc3MgYWxsIGNvbnRyaWJ1dGlvbnMgKi9cbiAgYXZnUXVhbGl0eTogbnVtYmVyO1xuICAvKiogUXVhbGl0eSB0aHJlc2hvbGQgKi9cbiAgcXVhbGl0eVRocmVzaG9sZDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEZlZGVyYXRlZCBsZWFybmluZyB0b3BvbG9neVxuICovXG5leHBvcnQgdHlwZSBGZWRlcmF0ZWRUb3BvbG9neSA9XG4gIHwgJ3N0YXInICAgICAgICAgICAvLyBBZ2VudHMg4oaSIENlbnRyYWwgQ29vcmRpbmF0b3JcbiAgfCAnaGllcmFyY2hpY2FsJyAgIC8vIEFnZW50cyDihpIgUmVnaW9uYWwg4oaSIEdsb2JhbFxuICB8ICdwZWVyLXRvLXBlZXInOyAgLy8gQWdlbnRzIHNoYXJlIGRpcmVjdGx5XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUcmFpbmluZyBQaXBlbGluZSBUeXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBUcmFpbmluZyBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhaW5pbmdDb25maWcge1xuICAvKiogSW5pdGlhbCBsZWFybmluZyByYXRlICovXG4gIGxlYXJuaW5nUmF0ZT86IG51bWJlcjtcbiAgLyoqIEJhdGNoIHNpemUgKi9cbiAgYmF0Y2hTaXplPzogbnVtYmVyO1xuICAvKiogTnVtYmVyIG9mIGVwb2NocyAqL1xuICBlcG9jaHM/OiBudW1iZXI7XG4gIC8qKiBMZWFybmluZyByYXRlIHNjaGVkdWxlciAqL1xuICBzY2hlZHVsZXI/OiAnY29uc3RhbnQnIHwgJ2xpbmVhcicgfCAnY29zaW5lJyB8ICd3YXJtdXAnO1xuICAvKiogV2FybXVwIHN0ZXBzIChmb3Igd2FybXVwIHNjaGVkdWxlcikgKi9cbiAgd2FybXVwU3RlcHM/OiBudW1iZXI7XG4gIC8qKiBXZWlnaHQgZGVjYXkgKi9cbiAgd2VpZ2h0RGVjYXk/OiBudW1iZXI7XG4gIC8qKiBHcmFkaWVudCBjbGlwcGluZyB0aHJlc2hvbGQgKi9cbiAgZ3JhZGllbnRDbGlwPzogbnVtYmVyO1xuICAvKiogRWFybHkgc3RvcHBpbmcgcGF0aWVuY2UgKi9cbiAgZWFybHlTdG9wcGluZ1BhdGllbmNlPzogbnVtYmVyO1xuICAvKiogQ2hlY2twb2ludCBpbnRlcnZhbCAoZXBvY2hzKSAqL1xuICBjaGVja3BvaW50SW50ZXJ2YWw/OiBudW1iZXI7XG4gIC8qKiBFV0MgbGFtYmRhIGZvciBjb250aW51YWwgbGVhcm5pbmcgKi9cbiAgZXdjTGFtYmRhPzogbnVtYmVyO1xuICAvKiogVmFsaWRhdGlvbiBzcGxpdCByYXRpbyAqL1xuICB2YWxpZGF0aW9uU3BsaXQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVHJhaW5pbmcgbWV0cmljcyBzbmFwc2hvdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYWluaW5nTWV0cmljc1NuYXBzaG90IHtcbiAgLyoqIEN1cnJlbnQgZXBvY2ggKi9cbiAgZXBvY2g6IG51bWJlcjtcbiAgLyoqIEN1cnJlbnQgc3RlcCAqL1xuICBzdGVwOiBudW1iZXI7XG4gIC8qKiBUcmFpbmluZyBsb3NzICovXG4gIHRyYWluTG9zczogbnVtYmVyO1xuICAvKiogVmFsaWRhdGlvbiBsb3NzICovXG4gIHZhbExvc3M6IG51bWJlcjtcbiAgLyoqIExlYXJuaW5nIHJhdGUgKi9cbiAgbGVhcm5pbmdSYXRlOiBudW1iZXI7XG4gIC8qKiBHcmFkaWVudCBub3JtICovXG4gIGdyYWROb3JtOiBudW1iZXI7XG4gIC8qKiBTdGVwcyBwZXIgc2Vjb25kICovXG4gIHN0ZXBzUGVyU2Vjb25kOiBudW1iZXI7XG4gIC8qKiBFVEEgaW4gc2Vjb25kcyAqL1xuICBldGFTZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogVHJhaW5pbmcgcmVzdWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhaW5pbmdSZXN1bHQge1xuICAvKiogVG90YWwgZXBvY2hzIGNvbXBsZXRlZCAqL1xuICBlcG9jaHM6IG51bWJlcjtcbiAgLyoqIFRvdGFsIHN0ZXBzIGNvbXBsZXRlZCAqL1xuICBzdGVwczogbnVtYmVyO1xuICAvKiogRmluYWwgdHJhaW5pbmcgbG9zcyAqL1xuICBmaW5hbExvc3M6IG51bWJlcjtcbiAgLyoqIEJlc3QgdmFsaWRhdGlvbiBsb3NzICovXG4gIGJlc3RWYWxMb3NzOiBudW1iZXI7XG4gIC8qKiBUcmFpbmluZyBkdXJhdGlvbiBpbiBtcyAqL1xuICBkdXJhdGlvbk1zOiBudW1iZXI7XG4gIC8qKiBMb3NzIGhpc3RvcnkgKi9cbiAgbG9zc0hpc3Rvcnk6IG51bWJlcltdO1xuICAvKiogVmFsaWRhdGlvbiBsb3NzIGhpc3RvcnkgKi9cbiAgdmFsTG9zc0hpc3Rvcnk6IG51bWJlcltdO1xuICAvKiogRWFybHkgc3RvcHBlZCAqL1xuICBlYXJseVN0b3BwZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVHJhaW5pbmcgY2hlY2twb2ludFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYWluaW5nQ2hlY2twb2ludCB7XG4gIC8qKiBFcG9jaCBudW1iZXIgKi9cbiAgZXBvY2g6IG51bWJlcjtcbiAgLyoqIFN0ZXAgbnVtYmVyICovXG4gIHN0ZXA6IG51bWJlcjtcbiAgLyoqIFRyYWluaW5nIGxvc3MgYXQgY2hlY2twb2ludCAqL1xuICBsb3NzOiBudW1iZXI7XG4gIC8qKiBNb2RlbCB3ZWlnaHRzIChzZXJpYWxpemVkKSAqL1xuICB3ZWlnaHRzOiBzdHJpbmc7XG4gIC8qKiBUaW1lc3RhbXAgKi9cbiAgdGltZXN0YW1wOiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFeHBvcnQvU2VyaWFsaXphdGlvbiBUeXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFeHBvcnQgZm9ybWF0IG9wdGlvbnNcbiAqL1xuZXhwb3J0IHR5cGUgRXhwb3J0Rm9ybWF0ID0gJ3NhZmV0ZW5zb3JzJyB8ICdqc29uJyB8ICdiaW5hcnknIHwgJ29ubngnO1xuXG4vKipcbiAqIE1vZGVsIG1ldGFkYXRhIGZvciBleHBvcnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RlbE1ldGFkYXRhIHtcbiAgLyoqIE1vZGVsIG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogTW9kZWwgdmVyc2lvbiAqL1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIC8qKiBBcmNoaXRlY3R1cmUgdHlwZSAqL1xuICBhcmNoaXRlY3R1cmU6IHN0cmluZztcbiAgLyoqIFRyYWluaW5nIGluZm8gKi9cbiAgdHJhaW5pbmc/OiB7XG4gICAgc3RlcHM6IG51bWJlcjtcbiAgICBsb3NzOiBudW1iZXI7XG4gICAgbGVhcm5pbmdSYXRlOiBudW1iZXI7XG4gIH07XG4gIC8qKiBDdXN0b20gbWV0YWRhdGEgKi9cbiAgY3VzdG9tPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG4iXX0=
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFJ1dkxMTSBUeXBlIERlZmluaXRpb25zXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIENvbmZpZ3VyYXRpb24gZm9yIFJ1dkxMTSBlbmdpbmVcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUnV2TExNQ29uZmlnIHtcclxuICAvKiogRW1iZWRkaW5nIGRpbWVuc2lvbiAoZGVmYXVsdDogNzY4KSAqL1xyXG4gIGVtYmVkZGluZ0RpbT86IG51bWJlcjtcclxuICAvKiogUm91dGVyIGhpZGRlbiBkaW1lbnNpb24gKGRlZmF1bHQ6IDEyOCkgKi9cclxuICByb3V0ZXJIaWRkZW5EaW0/OiBudW1iZXI7XHJcbiAgLyoqIEhOU1cgTSBwYXJhbWV0ZXIgKGRlZmF1bHQ6IDE2KSAqL1xyXG4gIGhuc3dNPzogbnVtYmVyO1xyXG4gIC8qKiBITlNXIGVmX2NvbnN0cnVjdGlvbiAoZGVmYXVsdDogMTAwKSAqL1xyXG4gIGhuc3dFZkNvbnN0cnVjdGlvbj86IG51bWJlcjtcclxuICAvKiogSE5TVyBlZl9zZWFyY2ggKGRlZmF1bHQ6IDY0KSAqL1xyXG4gIGhuc3dFZlNlYXJjaD86IG51bWJlcjtcclxuICAvKiogRW5hYmxlIGxlYXJuaW5nIChkZWZhdWx0OiB0cnVlKSAqL1xyXG4gIGxlYXJuaW5nRW5hYmxlZD86IGJvb2xlYW47XHJcbiAgLyoqIFF1YWxpdHkgdGhyZXNob2xkIGZvciBsZWFybmluZyAoZGVmYXVsdDogMC43KSAqL1xyXG4gIHF1YWxpdHlUaHJlc2hvbGQ/OiBudW1iZXI7XHJcbiAgLyoqIEVXQyBsYW1iZGEgKGRlZmF1bHQ6IDIwMDApICovXHJcbiAgZXdjTGFtYmRhPzogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogR2VuZXJhdGlvbiBjb25maWd1cmF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRpb25Db25maWcge1xyXG4gIC8qKiBNYXhpbXVtIHRva2VucyB0byBnZW5lcmF0ZSAqL1xyXG4gIG1heFRva2Vucz86IG51bWJlcjtcclxuICAvKiogVGVtcGVyYXR1cmUgZm9yIHNhbXBsaW5nICgwLjAgLSAyLjApICovXHJcbiAgdGVtcGVyYXR1cmU/OiBudW1iZXI7XHJcbiAgLyoqIFRvcC1wIG51Y2xldXMgc2FtcGxpbmcgKDAuMCAtIDEuMCkgKi9cclxuICB0b3BQPzogbnVtYmVyO1xyXG4gIC8qKiBUb3AtayBzYW1wbGluZyAqL1xyXG4gIHRvcEs/OiBudW1iZXI7XHJcbiAgLyoqIFJlcGV0aXRpb24gcGVuYWx0eSAqL1xyXG4gIHJlcGV0aXRpb25QZW5hbHR5PzogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogUXVlcnkgcmVzcG9uc2UgZnJvbSB0aGUgTExNXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5UmVzcG9uc2Uge1xyXG4gIC8qKiBHZW5lcmF0ZWQgdGV4dCAqL1xyXG4gIHRleHQ6IHN0cmluZztcclxuICAvKiogQ29uZmlkZW5jZSBzY29yZSAoMC4wIC0gMS4wKSAqL1xyXG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcclxuICAvKiogU2VsZWN0ZWQgbW9kZWwgKi9cclxuICBtb2RlbDogc3RyaW5nO1xyXG4gIC8qKiBDb250ZXh0IHNpemUgdXNlZCAqL1xyXG4gIGNvbnRleHRTaXplOiBudW1iZXI7XHJcbiAgLyoqIExhdGVuY3kgaW4gbWlsbGlzZWNvbmRzICovXHJcbiAgbGF0ZW5jeU1zOiBudW1iZXI7XHJcbiAgLyoqIFJlcXVlc3QgSUQgZm9yIGZlZWRiYWNrICovXHJcbiAgcmVxdWVzdElkOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSb3V0aW5nIGRlY2lzaW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRpbmdEZWNpc2lvbiB7XHJcbiAgLyoqIFNlbGVjdGVkIG1vZGVsIHNpemUgKi9cclxuICBtb2RlbDogTW9kZWxTaXplO1xyXG4gIC8qKiBSZWNvbW1lbmRlZCBjb250ZXh0IHNpemUgKi9cclxuICBjb250ZXh0U2l6ZTogbnVtYmVyO1xyXG4gIC8qKiBUZW1wZXJhdHVyZSAqL1xyXG4gIHRlbXBlcmF0dXJlOiBudW1iZXI7XHJcbiAgLyoqIFRvcC1wICovXHJcbiAgdG9wUDogbnVtYmVyO1xyXG4gIC8qKiBDb25maWRlbmNlICovXHJcbiAgY29uZmlkZW5jZTogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogTWVtb3J5IHNlYXJjaCByZXN1bHRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVtb3J5UmVzdWx0IHtcclxuICAvKiogTm9kZSBJRCAqL1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgLyoqIFNpbWlsYXJpdHkgc2NvcmUgKi9cclxuICBzY29yZTogbnVtYmVyO1xyXG4gIC8qKiBDb250ZW50IHRleHQgKi9cclxuICBjb250ZW50OiBzdHJpbmc7XHJcbiAgLyoqIE1ldGFkYXRhICovXHJcbiAgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xyXG59XHJcblxyXG4vKipcclxuICogRW5naW5lIHN0YXRpc3RpY3NcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUnV2TExNU3RhdHMge1xyXG4gIC8qKiBUb3RhbCBxdWVyaWVzIHByb2Nlc3NlZCAqL1xyXG4gIHRvdGFsUXVlcmllczogbnVtYmVyO1xyXG4gIC8qKiBNZW1vcnkgbm9kZXMgc3RvcmVkICovXHJcbiAgbWVtb3J5Tm9kZXM6IG51bWJlcjtcclxuICAvKiogUGF0dGVybnMgbGVhcm5lZCAqL1xyXG4gIHBhdHRlcm5zTGVhcm5lZDogbnVtYmVyO1xyXG4gIC8qKiBBdmVyYWdlIGxhdGVuY3kgaW4gbXMgKi9cclxuICBhdmdMYXRlbmN5TXM6IG51bWJlcjtcclxuICAvKiogQ2FjaGUgaGl0IHJhdGUgKDAuMCAtIDEuMCkgKi9cclxuICBjYWNoZUhpdFJhdGU6IG51bWJlcjtcclxuICAvKiogUm91dGVyIGFjY3VyYWN5ICgwLjAgLSAxLjApICovXHJcbiAgcm91dGVyQWNjdXJhY3k6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1vZGVsIHNpemUgb3B0aW9uc1xyXG4gKi9cclxuZXhwb3J0IHR5cGUgTW9kZWxTaXplID0gJ00zNTAnIHwgJ003MDAnIHwgJ0IxXzInIHwgJ0IyXzYnO1xyXG5cclxuLyoqXHJcbiAqIEZlZWRiYWNrIGZvciBsZWFybmluZ1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBGZWVkYmFjayB7XHJcbiAgLyoqIFJlcXVlc3QgSUQgZnJvbSBxdWVyeSByZXNwb25zZSAqL1xyXG4gIHJlcXVlc3RJZDogc3RyaW5nO1xyXG4gIC8qKiBSYXRpbmcgMS01ICovXHJcbiAgcmF0aW5nOiBudW1iZXI7XHJcbiAgLyoqIE9wdGlvbmFsIGNvcnJlY3Rpb24gdGV4dCAqL1xyXG4gIGNvcnJlY3Rpb24/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTZXNzaW9uIGZvciBtdWx0aS10dXJuIGNvbnZlcnNhdGlvbnNcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbiB7XHJcbiAgLyoqIFNlc3Npb24gSUQgKi9cclxuICBpZDogc3RyaW5nO1xyXG4gIC8qKiBDcmVhdGVkIHRpbWVzdGFtcCAqL1xyXG4gIGNyZWF0ZWRBdDogRGF0ZTtcclxuICAvKiogTWVzc2FnZXMgaW4gc2Vzc2lvbiAqL1xyXG4gIG1lc3NhZ2VDb3VudDogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogU0lNRCBjYXBhYmlsaXRpZXNcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2ltZENhcGFiaWxpdGllcyB7XHJcbiAgLyoqIEhhcyBhbnkgU0lNRCBzdXBwb3J0ICovXHJcbiAgaGFzU2ltZDogYm9vbGVhbjtcclxuICAvKiogQXZhaWxhYmxlIFNJTUQgaW5zdHJ1Y3Rpb25zICovXHJcbiAgY2FwYWJpbGl0aWVzOiBzdHJpbmdbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEVtYmVkZGluZyByZXN1bHRcclxuICovXHJcbmV4cG9ydCB0eXBlIEVtYmVkZGluZyA9IG51bWJlcltdO1xyXG5cclxuLyoqXHJcbiAqIEJhdGNoIHF1ZXJ5IHJlcXVlc3RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQmF0Y2hRdWVyeVJlcXVlc3Qge1xyXG4gIC8qKiBRdWVyaWVzIHRvIHByb2Nlc3MgKi9cclxuICBxdWVyaWVzOiBzdHJpbmdbXTtcclxuICAvKiogT3B0aW9uYWwgZ2VuZXJhdGlvbiBjb25maWcgKi9cclxuICBjb25maWc/OiBHZW5lcmF0aW9uQ29uZmlnO1xyXG59XHJcblxyXG4vKipcclxuICogQmF0Y2ggcXVlcnkgcmVzcG9uc2VcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQmF0Y2hRdWVyeVJlc3BvbnNlIHtcclxuICAvKiogUmVzcG9uc2VzIGZvciBlYWNoIHF1ZXJ5ICovXHJcbiAgcmVzcG9uc2VzOiBRdWVyeVJlc3BvbnNlW107XHJcbiAgLyoqIFRvdGFsIHByb2Nlc3NpbmcgdGltZSBpbiBtcyAqL1xyXG4gIHRvdGFsTGF0ZW5jeU1zOiBudW1iZXI7XHJcbn1cclxuXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vIFNPTkEgTGVhcm5pbmcgVHlwZXNcclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuXHJcbi8qKlxyXG4gKiBTT05BIENvbmZpZ3VyYXRpb24gZm9yIGFkYXB0aXZlIGxlYXJuaW5nXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNvbmFDb25maWcge1xyXG4gIC8qKiBFbmFibGUgaW5zdGFudCBsb29wIChyZWFsLXRpbWUgbGVhcm5pbmcpICovXHJcbiAgaW5zdGFudExvb3BFbmFibGVkPzogYm9vbGVhbjtcclxuICAvKiogRW5hYmxlIGJhY2tncm91bmQgbG9vcCAoYmF0Y2ggbGVhcm5pbmcpICovXHJcbiAgYmFja2dyb3VuZExvb3BFbmFibGVkPzogYm9vbGVhbjtcclxuICAvKiogTGVhcm5pbmcgcmF0ZSBmb3IgTG9SQSBhZGFwdGVycyAqL1xyXG4gIGxvcmFMZWFybmluZ1JhdGU/OiBudW1iZXI7XHJcbiAgLyoqIExvUkEgcmFuayAobG93ZXIgPSBmYXN0ZXIsIGhpZ2hlciA9IG1vcmUgY2FwYWNpdHkpICovXHJcbiAgbG9yYVJhbms/OiBudW1iZXI7XHJcbiAgLyoqIEVXQyBsYW1iZGEgZm9yIG1lbW9yeSBwcm90ZWN0aW9uICovXHJcbiAgZXdjTGFtYmRhPzogbnVtYmVyO1xyXG4gIC8qKiBNYXggdHJhamVjdG9yeSBidWZmZXIgc2l6ZSAqL1xyXG4gIG1heFRyYWplY3RvcnlTaXplPzogbnVtYmVyO1xyXG4gIC8qKiBQYXR0ZXJuIHNpbWlsYXJpdHkgdGhyZXNob2xkICovXHJcbiAgcGF0dGVyblRocmVzaG9sZD86IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIExlYXJuaW5nIHNpZ25hbCBmcm9tIHVzZXIgZmVlZGJhY2tcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGVhcm5pbmdTaWduYWwge1xyXG4gIC8qKiBSZXF1ZXN0IElEICovXHJcbiAgcmVxdWVzdElkOiBzdHJpbmc7XHJcbiAgLyoqIFF1YWxpdHkgc2NvcmUgKDAtMSkgKi9cclxuICBxdWFsaXR5OiBudW1iZXI7XHJcbiAgLyoqIFNpZ25hbCB0eXBlICovXHJcbiAgdHlwZTogU2lnbmFsVHlwZTtcclxuICAvKiogT3B0aW9uYWwgY29ycmVjdGlvbiAqL1xyXG4gIGNvcnJlY3Rpb24/OiBzdHJpbmc7XHJcbiAgLyoqIFRpbWVzdGFtcCAqL1xyXG4gIHRpbWVzdGFtcDogRGF0ZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFNpZ25hbCB0eXBlcyBmb3IgbGVhcm5pbmdcclxuICovXHJcbmV4cG9ydCB0eXBlIFNpZ25hbFR5cGUgPSAncG9zaXRpdmUnIHwgJ25lZ2F0aXZlJyB8ICdjb3JyZWN0aW9uJyB8ICdpbXBsaWNpdCc7XHJcblxyXG4vKipcclxuICogUXVlcnkgdHJhamVjdG9yeSBmb3IgbGVhcm5pbmdcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlUcmFqZWN0b3J5IHtcclxuICAvKiogVHJhamVjdG9yeSBJRCAqL1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgLyoqIFN0ZXBzIGluIHRoZSB0cmFqZWN0b3J5ICovXHJcbiAgc3RlcHM6IFRyYWplY3RvcnlTdGVwW107XHJcbiAgLyoqIEZpbmFsIG91dGNvbWUgKi9cclxuICBvdXRjb21lOiBUcmFqZWN0b3J5T3V0Y29tZTtcclxuICAvKiogVG90YWwgZHVyYXRpb24gKi9cclxuICBkdXJhdGlvbk1zOiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTaW5nbGUgc3RlcCBpbiBhIHRyYWplY3RvcnlcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHJhamVjdG9yeVN0ZXAge1xyXG4gIC8qKiBTdGVwIHR5cGUgKi9cclxuICB0eXBlOiAncXVlcnknIHwgJ3JvdXRlJyB8ICdnZW5lcmF0ZScgfCAnbWVtb3J5JyB8ICdmZWVkYmFjayc7XHJcbiAgLyoqIElucHV0IGRhdGEgKi9cclxuICBpbnB1dDogc3RyaW5nO1xyXG4gIC8qKiBPdXRwdXQgZGF0YSAqL1xyXG4gIG91dHB1dDogc3RyaW5nO1xyXG4gIC8qKiBEdXJhdGlvbiBvZiB0aGlzIHN0ZXAgKi9cclxuICBkdXJhdGlvbk1zOiBudW1iZXI7XHJcbiAgLyoqIENvbmZpZGVuY2UgYXQgdGhpcyBzdGVwICovXHJcbiAgY29uZmlkZW5jZTogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogVHJhamVjdG9yeSBvdXRjb21lXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBUcmFqZWN0b3J5T3V0Y29tZSA9ICdzdWNjZXNzJyB8ICdwYXJ0aWFsJyB8ICdmYWlsdXJlJyB8ICd1bmtub3duJztcclxuXHJcbi8qKlxyXG4gKiBMZWFybmVkIHBhdHRlcm4gZnJvbSBSZWFzb25pbmdCYW5rXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIExlYXJuZWRQYXR0ZXJuIHtcclxuICAvKiogUGF0dGVybiBJRCAqL1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgLyoqIFBhdHRlcm4gdHlwZSAqL1xyXG4gIHR5cGU6IFBhdHRlcm5UeXBlO1xyXG4gIC8qKiBQYXR0ZXJuIGVtYmVkZGluZyAqL1xyXG4gIGVtYmVkZGluZzogRW1iZWRkaW5nO1xyXG4gIC8qKiBTdWNjZXNzIHJhdGUgKDAtMSkgKi9cclxuICBzdWNjZXNzUmF0ZTogbnVtYmVyO1xyXG4gIC8qKiBUaW1lcyB1c2VkICovXHJcbiAgdXNlQ291bnQ6IG51bWJlcjtcclxuICAvKiogTGFzdCB1c2VkIHRpbWVzdGFtcCAqL1xyXG4gIGxhc3RVc2VkOiBEYXRlO1xyXG59XHJcblxyXG4vKipcclxuICogVHlwZXMgb2YgbGVhcm5lZCBwYXR0ZXJuc1xyXG4gKi9cclxuZXhwb3J0IHR5cGUgUGF0dGVyblR5cGUgPVxyXG4gIHwgJ3F1ZXJ5X3Jlc3BvbnNlJyAgICAgIC8vIFEmQSBwYXR0ZXJuXHJcbiAgfCAncm91dGluZycgICAgICAgICAgICAgLy8gUm91dGluZyBkZWNpc2lvbiBwYXR0ZXJuXHJcbiAgfCAnY29udGV4dF9yZXRyaWV2YWwnICAgLy8gTWVtb3J5IHJldHJpZXZhbCBwYXR0ZXJuXHJcbiAgfCAnY29ycmVjdGlvbicgICAgICAgICAgLy8gVXNlciBjb3JyZWN0aW9uIHBhdHRlcm5cclxuICB8ICdhYnN0cmFjdGlvbic7ICAgICAgICAvLyBDb21wcmVzc2VkIGNvbmNlcHRcclxuXHJcbi8qKlxyXG4gKiBMb1JBIGFkYXB0ZXIgY29uZmlndXJhdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBMb1JBQ29uZmlnIHtcclxuICAvKiogQWRhcHRlciByYW5rICg0LCA4LCAxNiwgMzIpICovXHJcbiAgcmFuazogbnVtYmVyO1xyXG4gIC8qKiBBbHBoYSBzY2FsaW5nIGZhY3RvciAqL1xyXG4gIGFscGhhOiBudW1iZXI7XHJcbiAgLyoqIERyb3BvdXQgcmF0ZSAqL1xyXG4gIGRyb3BvdXQ6IG51bWJlcjtcclxuICAvKiogVGFyZ2V0IG1vZHVsZXMgdG8gYWRhcHQgKi9cclxuICB0YXJnZXRNb2R1bGVzOiBzdHJpbmdbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEVXQyAoRWxhc3RpYyBXZWlnaHQgQ29uc29saWRhdGlvbikgc3RhdHNcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXdjU3RhdHMge1xyXG4gIC8qKiBOdW1iZXIgb2YgdGFza3MgbGVhcm5lZCAqL1xyXG4gIHRhc2tzTGVhcm5lZDogbnVtYmVyO1xyXG4gIC8qKiBGaXNoZXIgaW5mb3JtYXRpb24gY29tcHV0ZWQgKi9cclxuICBmaXNoZXJDb21wdXRlZDogYm9vbGVhbjtcclxuICAvKiogTWVtb3J5IHByb3RlY3Rpb24gc3RyZW5ndGggKi9cclxuICBwcm90ZWN0aW9uU3RyZW5ndGg6IG51bWJlcjtcclxuICAvKiogRXN0aW1hdGVkIGZvcmdldHRpbmcgcmF0ZSAqL1xyXG4gIGZvcmdldHRpbmdSYXRlOiBudW1iZXI7XHJcbn1cclxuXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vIFNlc3Npb24gJiBDb252ZXJzYXRpb24gVHlwZXNcclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuXHJcbi8qKlxyXG4gKiBFeHRlbmRlZCBzZXNzaW9uIHdpdGggY29udmVyc2F0aW9uIGhpc3RvcnlcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29udmVyc2F0aW9uU2Vzc2lvbiBleHRlbmRzIFNlc3Npb24ge1xyXG4gIC8qKiBDb252ZXJzYXRpb24gbWVzc2FnZXMgKi9cclxuICBtZXNzYWdlczogQ29udmVyc2F0aW9uTWVzc2FnZVtdO1xyXG4gIC8qKiBTZXNzaW9uIGNvbnRleHQgKGFjY3VtdWxhdGVkKSAqL1xyXG4gIGNvbnRleHQ6IHN0cmluZ1tdO1xyXG4gIC8qKiBBY3RpdmUgbWVtb3J5IElEcyAqL1xyXG4gIGFjdGl2ZU1lbW9yeUlkczogbnVtYmVyW107XHJcbiAgLyoqIFNlc3Npb24gbWV0YWRhdGEgKi9cclxuICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTaW5nbGUgbWVzc2FnZSBpbiBjb252ZXJzYXRpb25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29udmVyc2F0aW9uTWVzc2FnZSB7XHJcbiAgLyoqIE1lc3NhZ2Ugcm9sZSAqL1xyXG4gIHJvbGU6ICd1c2VyJyB8ICdhc3Npc3RhbnQnIHwgJ3N5c3RlbSc7XHJcbiAgLyoqIE1lc3NhZ2UgY29udGVudCAqL1xyXG4gIGNvbnRlbnQ6IHN0cmluZztcclxuICAvKiogVGltZXN0YW1wICovXHJcbiAgdGltZXN0YW1wOiBEYXRlO1xyXG4gIC8qKiBBc3NvY2lhdGVkIHJlcXVlc3QgSUQgKGlmIGFzc2lzdGFudCkgKi9cclxuICByZXF1ZXN0SWQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vIFN0cmVhbWluZyBUeXBlc1xyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5cclxuLyoqXHJcbiAqIFN0cmVhbWluZyByZXNwb25zZSBjaHVua1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1DaHVuayB7XHJcbiAgLyoqIENodW5rIHRleHQgKi9cclxuICB0ZXh0OiBzdHJpbmc7XHJcbiAgLyoqIElzIGZpbmFsIGNodW5rICovXHJcbiAgZG9uZTogYm9vbGVhbjtcclxuICAvKiogVG9rZW4gY291bnQgc28gZmFyICovXHJcbiAgdG9rZW5Db3VudDogbnVtYmVyO1xyXG4gIC8qKiBDdW11bGF0aXZlIGxhdGVuY3kgKi9cclxuICBsYXRlbmN5TXM6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFN0cmVhbSBvcHRpb25zXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFN0cmVhbU9wdGlvbnMgZXh0ZW5kcyBHZW5lcmF0aW9uQ29uZmlnIHtcclxuICAvKiogQ2FsbGJhY2sgZm9yIGVhY2ggY2h1bmsgKi9cclxuICBvbkNodW5rPzogKGNodW5rOiBTdHJlYW1DaHVuaykgPT4gdm9pZDtcclxuICAvKiogQ2FsbGJhY2sgb24gY29tcGxldGlvbiAqL1xyXG4gIG9uQ29tcGxldGU/OiAocmVzcG9uc2U6IFF1ZXJ5UmVzcG9uc2UpID0+IHZvaWQ7XHJcbiAgLyoqIENhbGxiYWNrIG9uIGVycm9yICovXHJcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XHJcbn1cclxuXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vIENvbXByZXNzaW9uICYgQXJjaGl2YWwgVHlwZXNcclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuXHJcbi8qKlxyXG4gKiBNZW1vcnkgY29tcHJlc3Npb24gcmVzdWx0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENvbXByZXNzaW9uUmVzdWx0IHtcclxuICAvKiogTm9kZXMgY29tcHJlc3NlZCAqL1xyXG4gIG5vZGVzQ29tcHJlc3NlZDogbnVtYmVyO1xyXG4gIC8qKiBOb2RlcyBhcmNoaXZlZCAqL1xyXG4gIG5vZGVzQXJjaGl2ZWQ6IG51bWJlcjtcclxuICAvKiogQ29uY2VwdHMgY3JlYXRlZCAqL1xyXG4gIGNvbmNlcHRzQ3JlYXRlZDogbnVtYmVyO1xyXG4gIC8qKiBNZW1vcnkgc2F2ZWQgKGJ5dGVzKSAqL1xyXG4gIG1lbW9yeVNhdmVkOiBudW1iZXI7XHJcbiAgLyoqIER1cmF0aW9uICovXHJcbiAgZHVyYXRpb25NczogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogQXJjaGl2ZSBxdWVyeSByZXN1bHRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXJjaGl2ZVJlc3VsdCB7XHJcbiAgLyoqIEFyY2hpdmVkIG5vZGUgSUQgKi9cclxuICBpZDogbnVtYmVyO1xyXG4gIC8qKiBPcmlnaW5hbCBjb250ZW50IChpZiBhdmFpbGFibGUpICovXHJcbiAgY29udGVudD86IHN0cmluZztcclxuICAvKiogQ29uY2VwdCBpdCBiZWxvbmdzIHRvICovXHJcbiAgY29uY2VwdElkPzogc3RyaW5nO1xyXG4gIC8qKiBBcmNoaXZlIHRpbWVzdGFtcCAqL1xyXG4gIGFyY2hpdmVkQXQ6IERhdGU7XHJcbn1cclxuXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vIEF0dGVudGlvbiBUeXBlc1xyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5cclxuLyoqXHJcbiAqIEF0dGVudGlvbiB3ZWlnaHRzIGZvciBpbnRlcnByZXRhYmlsaXR5XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEF0dGVudGlvbldlaWdodHMge1xyXG4gIC8qKiBRdWVyeS1rZXkgYXR0ZW50aW9uIHNjb3JlcyAqL1xyXG4gIHNjb3JlczogbnVtYmVyW11bXTtcclxuICAvKiogSGVhZCBpbmRleCAqL1xyXG4gIGhlYWRJbmRleDogbnVtYmVyO1xyXG4gIC8qKiBMYXllciBpbmRleCAqL1xyXG4gIGxheWVySW5kZXg6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEF0dGVudGlvbiBhbmFseXNpcyByZXN1bHRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXR0ZW50aW9uQW5hbHlzaXMge1xyXG4gIC8qKiBNb3N0IGF0dGVuZGVkIHRva2VucyAqL1xyXG4gIHRvcEF0dGVuZGVkOiBBcnJheTx7IHRva2VuOiBzdHJpbmc7IHdlaWdodDogbnVtYmVyIH0+O1xyXG4gIC8qKiBBdHRlbnRpb24gZW50cm9weSAodW5jZXJ0YWludHkpICovXHJcbiAgZW50cm9weTogbnVtYmVyO1xyXG4gIC8qKiBGb2N1cyBzY29yZSAoMC0xLCBoaWdoZXIgPSBtb3JlIGZvY3VzZWQpICovXHJcbiAgZm9jdXNTY29yZTogbnVtYmVyO1xyXG59XHJcblxyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4vLyBGZWRlcmF0ZWQgTGVhcm5pbmcgVHlwZXNcclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuXHJcbi8qKlxyXG4gKiBGZWRlcmF0ZWQgbGVhcm5pbmcgY29uZmlndXJhdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBGZWRlcmF0ZWRDb25maWcge1xyXG4gIC8qKiBIaWRkZW4gZGltZW5zaW9uIGZvciBlbWJlZGRpbmdzICovXHJcbiAgaGlkZGVuRGltPzogbnVtYmVyO1xyXG4gIC8qKiBFbWJlZGRpbmcgZGltZW5zaW9uICovXHJcbiAgZW1iZWRkaW5nRGltPzogbnVtYmVyO1xyXG4gIC8qKiBNaWNyby1Mb1JBIHJhbmsgKi9cclxuICBtaWNyb0xvcmFSYW5rPzogbnVtYmVyO1xyXG4gIC8qKiBCYXNlIExvUkEgcmFuayAqL1xyXG4gIGJhc2VMb3JhUmFuaz86IG51bWJlcjtcclxuICAvKiogVHJhamVjdG9yeSBidWZmZXIgY2FwYWNpdHkgKi9cclxuICB0cmFqZWN0b3J5Q2FwYWNpdHk/OiBudW1iZXI7XHJcbiAgLyoqIFBhdHRlcm4gY2x1c3RlciBjb3VudCAqL1xyXG4gIHBhdHRlcm5DbHVzdGVycz86IG51bWJlcjtcclxuICAvKiogRVdDIGxhbWJkYSBmb3IgcmVndWxhcml6YXRpb24gKi9cclxuICBld2NMYW1iZGE/OiBudW1iZXI7XHJcbiAgLyoqIFF1YWxpdHkgdGhyZXNob2xkIGZvciBhY2NlcHRpbmcgdHJhamVjdG9yaWVzICovXHJcbiAgcXVhbGl0eVRocmVzaG9sZD86IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRyYWplY3RvcnkgZXhwb3J0IGZvciBmZWRlcmF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFRyYWplY3RvcnlFeHBvcnQge1xyXG4gIC8qKiBRdWVyeSBlbWJlZGRpbmcgKi9cclxuICBlbWJlZGRpbmc6IEVtYmVkZGluZztcclxuICAvKiogUXVhbGl0eSBzY29yZSAqL1xyXG4gIHF1YWxpdHk6IG51bWJlcjtcclxuICAvKiogTW9kZWwgcm91dGUgKGlmIGFueSkgKi9cclxuICByb3V0ZT86IHN0cmluZztcclxuICAvKiogQ29udGV4dCBpZGVudGlmaWVycyAqL1xyXG4gIGNvbnRleHQ6IHN0cmluZ1tdO1xyXG4gIC8qKiBUaW1lc3RhbXAgKi9cclxuICB0aW1lc3RhbXA6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFnZW50IGV4cG9ydCBzdGF0aXN0aWNzXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50RXhwb3J0U3RhdHMge1xyXG4gIC8qKiBUb3RhbCB0cmFqZWN0b3JpZXMgcHJvY2Vzc2VkICovXHJcbiAgdG90YWxUcmFqZWN0b3JpZXM6IG51bWJlcjtcclxuICAvKiogQXZlcmFnZSBxdWFsaXR5ICovXHJcbiAgYXZnUXVhbGl0eTogbnVtYmVyO1xyXG4gIC8qKiBQYXR0ZXJucyBsZWFybmVkIGxvY2FsbHkgKi9cclxuICBwYXR0ZXJuc0xlYXJuZWQ6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEV4cG9ydGVkIHN0YXRlIGZyb20gYW4gZXBoZW1lcmFsIGFnZW50XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50RXhwb3J0IHtcclxuICAvKiogQWdlbnQgaWRlbnRpZmllciAqL1xyXG4gIGFnZW50SWQ6IHN0cmluZztcclxuICAvKiogRXhwb3J0ZWQgdHJhamVjdG9yaWVzICovXHJcbiAgdHJhamVjdG9yaWVzOiBUcmFqZWN0b3J5RXhwb3J0W107XHJcbiAgLyoqIEFnZW50IHN0YXRpc3RpY3MgKi9cclxuICBzdGF0czogQWdlbnRFeHBvcnRTdGF0cztcclxuICAvKiogU2Vzc2lvbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgKi9cclxuICBzZXNzaW9uRHVyYXRpb25NczogbnVtYmVyO1xyXG4gIC8qKiBFeHBvcnQgdGltZXN0YW1wICovXHJcbiAgdGltZXN0YW1wOiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBZ2VudCBjb250cmlidXRpb24gcmVjb3JkXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50Q29udHJpYnV0aW9uIHtcclxuICAvKiogTnVtYmVyIG9mIHRyYWplY3RvcmllcyBjb250cmlidXRlZCAqL1xyXG4gIHRyYWplY3RvcnlDb3VudDogbnVtYmVyO1xyXG4gIC8qKiBBdmVyYWdlIHF1YWxpdHkgb2YgY29udHJpYnV0aW9ucyAqL1xyXG4gIGF2Z1F1YWxpdHk6IG51bWJlcjtcclxuICAvKiogQ29udHJpYnV0aW9uIHRpbWVzdGFtcCAqL1xyXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xyXG4gIC8qKiBTZXNzaW9uIGR1cmF0aW9uICovXHJcbiAgc2Vzc2lvbkR1cmF0aW9uTXM6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlc3VsdCBvZiBhZ2dyZWdhdGluZyBhbiBhZ2VudCBleHBvcnRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWdncmVnYXRpb25SZXN1bHQge1xyXG4gIC8qKiBBZ2VudCBJRCB0aGF0IHdhcyBhZ2dyZWdhdGVkICovXHJcbiAgYWdlbnRJZDogc3RyaW5nO1xyXG4gIC8qKiBOdW1iZXIgb2YgdHJhamVjdG9yaWVzIGFjY2VwdGVkICovXHJcbiAgdHJhamVjdG9yaWVzQWNjZXB0ZWQ6IG51bWJlcjtcclxuICAvKiogTnVtYmVyIG9mIHRyYWplY3RvcmllcyByZWplY3RlZCAoYmVsb3cgcXVhbGl0eSB0aHJlc2hvbGQpICovXHJcbiAgdHJhamVjdG9yaWVzUmVqZWN0ZWQ6IG51bWJlcjtcclxuICAvKiogV2hldGhlciBjb25zb2xpZGF0aW9uIHdhcyB0cmlnZ2VyZWQgKi9cclxuICBjb25zb2xpZGF0ZWQ6IGJvb2xlYW47XHJcbiAgLyoqIFRvdGFsIG51bWJlciBvZiBjb250cmlidXRpbmcgYWdlbnRzICovXHJcbiAgdG90YWxBZ2VudHM6IG51bWJlcjtcclxuICAvKiogVG90YWwgdHJhamVjdG9yaWVzIGluIGNvb3JkaW5hdG9yICovXHJcbiAgdG90YWxUcmFqZWN0b3JpZXM6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvb3JkaW5hdG9yIHN0YXRpc3RpY3NcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29vcmRpbmF0b3JTdGF0cyB7XHJcbiAgLyoqIENvb3JkaW5hdG9yIGlkZW50aWZpZXIgKi9cclxuICBjb29yZGluYXRvcklkOiBzdHJpbmc7XHJcbiAgLyoqIE51bWJlciBvZiBjb250cmlidXRpbmcgYWdlbnRzICovXHJcbiAgdG90YWxBZ2VudHM6IG51bWJlcjtcclxuICAvKiogVG90YWwgdHJhamVjdG9yaWVzIGFnZ3JlZ2F0ZWQgKi9cclxuICB0b3RhbFRyYWplY3RvcmllczogbnVtYmVyO1xyXG4gIC8qKiBQYXR0ZXJucyBsZWFybmVkICovXHJcbiAgcGF0dGVybnNMZWFybmVkOiBudW1iZXI7XHJcbiAgLyoqIEF2ZXJhZ2UgcXVhbGl0eSBhY3Jvc3MgYWxsIGNvbnRyaWJ1dGlvbnMgKi9cclxuICBhdmdRdWFsaXR5OiBudW1iZXI7XHJcbiAgLyoqIFF1YWxpdHkgdGhyZXNob2xkICovXHJcbiAgcXVhbGl0eVRocmVzaG9sZDogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogRmVkZXJhdGVkIGxlYXJuaW5nIHRvcG9sb2d5XHJcbiAqL1xyXG5leHBvcnQgdHlwZSBGZWRlcmF0ZWRUb3BvbG9neSA9XHJcbiAgfCAnc3RhcicgICAgICAgICAgIC8vIEFnZW50cyDihpIgQ2VudHJhbCBDb29yZGluYXRvclxyXG4gIHwgJ2hpZXJhcmNoaWNhbCcgICAvLyBBZ2VudHMg4oaSIFJlZ2lvbmFsIOKGkiBHbG9iYWxcclxuICB8ICdwZWVyLXRvLXBlZXInOyAgLy8gQWdlbnRzIHNoYXJlIGRpcmVjdGx5XHJcblxyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4vLyBUcmFpbmluZyBQaXBlbGluZSBUeXBlc1xyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5cclxuLyoqXHJcbiAqIFRyYWluaW5nIGNvbmZpZ3VyYXRpb25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHJhaW5pbmdDb25maWcge1xyXG4gIC8qKiBJbml0aWFsIGxlYXJuaW5nIHJhdGUgKi9cclxuICBsZWFybmluZ1JhdGU/OiBudW1iZXI7XHJcbiAgLyoqIEJhdGNoIHNpemUgKi9cclxuICBiYXRjaFNpemU/OiBudW1iZXI7XHJcbiAgLyoqIE51bWJlciBvZiBlcG9jaHMgKi9cclxuICBlcG9jaHM/OiBudW1iZXI7XHJcbiAgLyoqIExlYXJuaW5nIHJhdGUgc2NoZWR1bGVyICovXHJcbiAgc2NoZWR1bGVyPzogJ2NvbnN0YW50JyB8ICdsaW5lYXInIHwgJ2Nvc2luZScgfCAnd2FybXVwJztcclxuICAvKiogV2FybXVwIHN0ZXBzIChmb3Igd2FybXVwIHNjaGVkdWxlcikgKi9cclxuICB3YXJtdXBTdGVwcz86IG51bWJlcjtcclxuICAvKiogV2VpZ2h0IGRlY2F5ICovXHJcbiAgd2VpZ2h0RGVjYXk/OiBudW1iZXI7XHJcbiAgLyoqIEdyYWRpZW50IGNsaXBwaW5nIHRocmVzaG9sZCAqL1xyXG4gIGdyYWRpZW50Q2xpcD86IG51bWJlcjtcclxuICAvKiogRWFybHkgc3RvcHBpbmcgcGF0aWVuY2UgKi9cclxuICBlYXJseVN0b3BwaW5nUGF0aWVuY2U/OiBudW1iZXI7XHJcbiAgLyoqIENoZWNrcG9pbnQgaW50ZXJ2YWwgKGVwb2NocykgKi9cclxuICBjaGVja3BvaW50SW50ZXJ2YWw/OiBudW1iZXI7XHJcbiAgLyoqIEVXQyBsYW1iZGEgZm9yIGNvbnRpbnVhbCBsZWFybmluZyAqL1xyXG4gIGV3Y0xhbWJkYT86IG51bWJlcjtcclxuICAvKiogVmFsaWRhdGlvbiBzcGxpdCByYXRpbyAqL1xyXG4gIHZhbGlkYXRpb25TcGxpdD86IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRyYWluaW5nIG1ldHJpY3Mgc25hcHNob3RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHJhaW5pbmdNZXRyaWNzU25hcHNob3Qge1xyXG4gIC8qKiBDdXJyZW50IGVwb2NoICovXHJcbiAgZXBvY2g6IG51bWJlcjtcclxuICAvKiogQ3VycmVudCBzdGVwICovXHJcbiAgc3RlcDogbnVtYmVyO1xyXG4gIC8qKiBUcmFpbmluZyBsb3NzICovXHJcbiAgdHJhaW5Mb3NzOiBudW1iZXI7XHJcbiAgLyoqIFZhbGlkYXRpb24gbG9zcyAqL1xyXG4gIHZhbExvc3M6IG51bWJlcjtcclxuICAvKiogTGVhcm5pbmcgcmF0ZSAqL1xyXG4gIGxlYXJuaW5nUmF0ZTogbnVtYmVyO1xyXG4gIC8qKiBHcmFkaWVudCBub3JtICovXHJcbiAgZ3JhZE5vcm06IG51bWJlcjtcclxuICAvKiogU3RlcHMgcGVyIHNlY29uZCAqL1xyXG4gIHN0ZXBzUGVyU2Vjb25kOiBudW1iZXI7XHJcbiAgLyoqIEVUQSBpbiBzZWNvbmRzICovXHJcbiAgZXRhU2Vjb25kczogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogVHJhaW5pbmcgcmVzdWx0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFRyYWluaW5nUmVzdWx0IHtcclxuICAvKiogVG90YWwgZXBvY2hzIGNvbXBsZXRlZCAqL1xyXG4gIGVwb2NoczogbnVtYmVyO1xyXG4gIC8qKiBUb3RhbCBzdGVwcyBjb21wbGV0ZWQgKi9cclxuICBzdGVwczogbnVtYmVyO1xyXG4gIC8qKiBGaW5hbCB0cmFpbmluZyBsb3NzICovXHJcbiAgZmluYWxMb3NzOiBudW1iZXI7XHJcbiAgLyoqIEJlc3QgdmFsaWRhdGlvbiBsb3NzICovXHJcbiAgYmVzdFZhbExvc3M6IG51bWJlcjtcclxuICAvKiogVHJhaW5pbmcgZHVyYXRpb24gaW4gbXMgKi9cclxuICBkdXJhdGlvbk1zOiBudW1iZXI7XHJcbiAgLyoqIExvc3MgaGlzdG9yeSAqL1xyXG4gIGxvc3NIaXN0b3J5OiBudW1iZXJbXTtcclxuICAvKiogVmFsaWRhdGlvbiBsb3NzIGhpc3RvcnkgKi9cclxuICB2YWxMb3NzSGlzdG9yeTogbnVtYmVyW107XHJcbiAgLyoqIEVhcmx5IHN0b3BwZWQgKi9cclxuICBlYXJseVN0b3BwZWQ6IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUcmFpbmluZyBjaGVja3BvaW50XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFRyYWluaW5nQ2hlY2twb2ludCB7XHJcbiAgLyoqIEVwb2NoIG51bWJlciAqL1xyXG4gIGVwb2NoOiBudW1iZXI7XHJcbiAgLyoqIFN0ZXAgbnVtYmVyICovXHJcbiAgc3RlcDogbnVtYmVyO1xyXG4gIC8qKiBUcmFpbmluZyBsb3NzIGF0IGNoZWNrcG9pbnQgKi9cclxuICBsb3NzOiBudW1iZXI7XHJcbiAgLyoqIE1vZGVsIHdlaWdodHMgKHNlcmlhbGl6ZWQpICovXHJcbiAgd2VpZ2h0czogc3RyaW5nO1xyXG4gIC8qKiBUaW1lc3RhbXAgKi9cclxuICB0aW1lc3RhbXA6IG51bWJlcjtcclxufVxyXG5cclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuLy8gRXhwb3J0L1NlcmlhbGl6YXRpb24gVHlwZXNcclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuXHJcbi8qKlxyXG4gKiBFeHBvcnQgZm9ybWF0IG9wdGlvbnNcclxuICovXHJcbmV4cG9ydCB0eXBlIEV4cG9ydEZvcm1hdCA9ICdzYWZldGVuc29ycycgfCAnanNvbicgfCAnYmluYXJ5JyB8ICdvbm54JztcclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBtZXRhZGF0YSBmb3IgZXhwb3J0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsTWV0YWRhdGEge1xyXG4gIC8qKiBNb2RlbCBuYW1lICovXHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIC8qKiBNb2RlbCB2ZXJzaW9uICovXHJcbiAgdmVyc2lvbjogc3RyaW5nO1xyXG4gIC8qKiBBcmNoaXRlY3R1cmUgdHlwZSAqL1xyXG4gIGFyY2hpdGVjdHVyZTogc3RyaW5nO1xyXG4gIC8qKiBUcmFpbmluZyBpbmZvICovXHJcbiAgdHJhaW5pbmc/OiB7XHJcbiAgICBzdGVwczogbnVtYmVyO1xyXG4gICAgbG9zczogbnVtYmVyO1xyXG4gICAgbGVhcm5pbmdSYXRlOiBudW1iZXI7XHJcbiAgfTtcclxuICAvKiogQ3VzdG9tIG1ldGFkYXRhICovXHJcbiAgY3VzdG9tPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcbn1cclxuIl19
@@ -424,4 +424,4 @@ export default {
424
424
  calculateMRR,
425
425
  calculateNDCG,
426
426
  };
427
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkaW5nLWJlbmNobWFyay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZW5jaG1hcmtzL2VtYmVkZGluZy1iZW5jaG1hcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQTJDSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBb0I7SUFDcEQsNERBQTREO0lBQzVELEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsK0JBQStCLEVBQUUsS0FBSyxFQUFFLDRCQUE0QixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtJQUN0SSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLDhCQUE4QixFQUFFLEtBQUssRUFBRSxzQ0FBc0MsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7SUFDL0ksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0lBQ2pKLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRTtJQUN2SSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7SUFDM0gsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFO0lBQ2pJLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLDhCQUE4QixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtJQUM3SCxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLDBCQUEwQixFQUFFLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7SUFDM0gsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsZ0NBQWdDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFO0lBQ25JLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLHlCQUF5QixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRTtJQUUxSCxxQ0FBcUM7SUFDckMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxzQ0FBc0MsRUFBRSxLQUFLLEVBQUUsOEJBQThCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFO0lBQ2xKLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsS0FBSyxFQUFFLGtDQUFrQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRTtJQUN0SixFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGtEQUFrRCxFQUFFLEtBQUssRUFBRSx1REFBdUQsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUU7SUFFdkwsb0RBQW9EO0lBQ3BELEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsK0JBQStCLEVBQUUsS0FBSyxFQUFFLDBCQUEwQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtJQUN0SSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUU7SUFDdEgsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0lBQzlILEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsK0JBQStCLEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRTtJQUM3SSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7SUFDbkgsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRTtJQUNoSCxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFO0lBQy9HLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0lBQ3BHLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRTtJQUNySCxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7SUFFM0gsdURBQXVEO0lBQ3ZELEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtJQUN6SCxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0lBQ3BHLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtJQUMzRyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7SUFDL0csRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsNEJBQTRCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFO0lBQzlILEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtJQUM3RyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7SUFDL0csRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRTtJQUUzRyxvQ0FBb0M7SUFDcEMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0lBQzVILEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLDJCQUEyQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtJQUMxSCxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLDJCQUEyQixFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7SUFDOUgsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0lBQ3JILEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7Q0FDM0gsQ0FBQztBQVlGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFxQjtJQUNqRDtRQUNFLEVBQUUsRUFBRSxNQUFNO1FBQ1YsS0FBSyxFQUFFLGlEQUFpRDtRQUN4RCxTQUFTLEVBQUU7WUFDVCxFQUFFLElBQUksRUFBRSw2REFBNkQsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1lBQ3JGLEVBQUUsSUFBSSxFQUFFLG1EQUFtRCxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDM0UsRUFBRSxJQUFJLEVBQUUsdUNBQXVDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUMvRCxFQUFFLElBQUksRUFBRSxxQ0FBcUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1lBQzdELEVBQUUsSUFBSSxFQUFFLGlDQUFpQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7U0FDMUQ7S0FDRjtJQUNEO1FBQ0UsRUFBRSxFQUFFLE1BQU07UUFDVixLQUFLLEVBQUUsK0JBQStCO1FBQ3RDLFNBQVMsRUFBRTtZQUNULEVBQUUsSUFBSSxFQUFFLDREQUE0RCxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDcEYsRUFBRSxJQUFJLEVBQUUsdURBQXVELEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUMvRSxFQUFFLElBQUksRUFBRSx5Q0FBeUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1lBQ2pFLEVBQUUsSUFBSSxFQUFFLHVDQUF1QyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDL0QsRUFBRSxJQUFJLEVBQUUsNkJBQTZCLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtTQUN0RDtLQUNGO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsTUFBTTtRQUNWLEtBQUssRUFBRSxtQ0FBbUM7UUFDMUMsU0FBUyxFQUFFO1lBQ1QsRUFBRSxJQUFJLEVBQUUsMkRBQTJELEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUNuRixFQUFFLElBQUksRUFBRSxvREFBb0QsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1lBQzVFLEVBQUUsSUFBSSxFQUFFLHlDQUF5QyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDakUsRUFBRSxJQUFJLEVBQUUsbUNBQW1DLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUMzRCxFQUFFLElBQUksRUFBRSxtQ0FBbUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1NBQzVEO0tBQ0Y7SUFDRDtRQUNFLEVBQUUsRUFBRSxNQUFNO1FBQ1YsS0FBSyxFQUFFLHVDQUF1QztRQUM5QyxTQUFTLEVBQUU7WUFDVCxFQUFFLElBQUksRUFBRSw4REFBOEQsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1lBQ3RGLEVBQUUsSUFBSSxFQUFFLG9DQUFvQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDNUQsRUFBRSxJQUFJLEVBQUUscUNBQXFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUM3RCxFQUFFLElBQUksRUFBRSxpQ0FBaUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1lBQ3pELEVBQUUsSUFBSSxFQUFFLDhCQUE4QixFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7U0FDdkQ7S0FDRjtJQUNEO1FBQ0UsRUFBRSxFQUFFLE1BQU07UUFDVixLQUFLLEVBQUUsNEJBQTRCO1FBQ25DLFNBQVMsRUFBRTtZQUNULEVBQUUsSUFBSSxFQUFFLDhDQUE4QyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDdEUsRUFBRSxJQUFJLEVBQUUsMENBQTBDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUNsRSxFQUFFLElBQUksRUFBRSxxQ0FBcUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1lBQzdELEVBQUUsSUFBSSxFQUFFLDZDQUE2QyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDckUsRUFBRSxJQUFJLEVBQUUsK0JBQStCLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtTQUN4RDtLQUNGO0NBQ0YsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXNCO0lBQ25EO1FBQ0UsRUFBRSxFQUFFLE9BQU87UUFDWCxlQUFlLEVBQUUsZ0JBQWdCO1FBQ2pDLEtBQUssRUFBRTtZQUNMLHNCQUFzQjtZQUN0QiwwQkFBMEI7WUFDMUIsNEJBQTRCO1lBQzVCLDZCQUE2QjtZQUM3QiwrQkFBK0I7U0FDaEM7S0FDRjtJQUNEO1FBQ0UsRUFBRSxFQUFFLE9BQU87UUFDWCxlQUFlLEVBQUUsU0FBUztRQUMxQixLQUFLLEVBQUU7WUFDTCxrQkFBa0I7WUFDbEIsdUJBQXVCO1lBQ3ZCLHVCQUF1QjtZQUN2Qix1QkFBdUI7WUFDdkIsb0JBQW9CO1NBQ3JCO0tBQ0Y7SUFDRDtRQUNFLEVBQUUsRUFBRSxPQUFPO1FBQ1gsZUFBZSxFQUFFLFVBQVU7UUFDM0IsS0FBSyxFQUFFO1lBQ0wsc0JBQXNCO1lBQ3RCLHNCQUFzQjtZQUN0Qix5QkFBeUI7WUFDekIsOEJBQThCO1lBQzlCLCtCQUErQjtTQUNoQztLQUNGO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsT0FBTztRQUNYLGVBQWUsRUFBRSxVQUFVO1FBQzNCLEtBQUssRUFBRTtZQUNMLHVCQUF1QjtZQUN2QixpQkFBaUI7WUFDakIsNkJBQTZCO1lBQzdCLHdCQUF3QjtZQUN4QixxQkFBcUI7U0FDdEI7S0FDRjtJQUNEO1FBQ0UsRUFBRSxFQUFFLE9BQU87UUFDWCxlQUFlLEVBQUUsUUFBUTtRQUN6QixLQUFLLEVBQUU7WUFDTCx1QkFBdUI7WUFDdkIsaUNBQWlDO1lBQ2pDLHlCQUF5QjtZQUN6Qix1QkFBdUI7WUFDdkIsd0JBQXdCO1NBQ3pCO0tBQ0Y7Q0FDRixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHO0lBQzVCLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUM1QixNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7SUFDOUIsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0lBQzNCLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtDQUM3QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLFFBQTRDLEVBQzVDLFFBQWdCO0lBRWhCLE1BQU0sU0FBUyxHQUFHLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sUUFBUSxJQUFJLFNBQVMsQ0FBQyxHQUFHLElBQUksUUFBUSxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFDaEUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsUUFBbUM7SUFFbkMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMvQixNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUQsSUFBSSxnQkFBZ0IsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ2pDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQzNCLE9BQWdDLEVBQ2hDLFVBQW1DO0lBRW5DLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3ZDLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVOLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzNDLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVOLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsVUFBc0IsRUFDdEIsTUFBZ0I7SUFFaEIsb0NBQW9DO0lBQ3BDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXBCLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztJQUV4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDM0IsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFCLDRDQUE0QztRQUM1QyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDakIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNyQyxRQUFRLElBQUksaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1RCxVQUFVLEVBQUUsQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJELGdEQUFnRDtRQUNoRCxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDdEUsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDO1FBRTVCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFLENBQUM7WUFDekMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztZQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzNCLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksRUFBRSxDQUFDO29CQUMvQixRQUFRLElBQUksaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM1RCxVQUFVLEVBQUUsQ0FBQztnQkFDZixDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNuQixZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxHQUFHLFVBQVUsQ0FBQyxDQUFDO1lBQy9ELENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsWUFBWSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFFdkQsNEJBQTRCO1FBQzVCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RCxlQUFlLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxPQUFPLGVBQWUsR0FBRyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsQ0FBVyxFQUFFLENBQVc7SUFDakQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNsQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxRQUFvQyxFQUNwQyxZQUFrRDtJQUVsRCxNQUFNLGlCQUFpQixHQUFzQixFQUFFLENBQUM7SUFDaEQsTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO0lBRS9CLHdCQUF3QjtJQUN4QixLQUFLLE1BQU0sSUFBSSxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFFNUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUxQixpQkFBaUIsQ0FBQyxJQUFJLENBQUM7WUFDckIsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2Ysa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDbkMsYUFBYSxFQUFFLEtBQUs7WUFDcEIsT0FBTyxFQUFFLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO1lBQ3BELFNBQVM7U0FDVixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLE1BQU0saUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxRSxNQUFNLGtCQUFrQixHQUFHLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztJQUV4RSx1QkFBdUI7SUFDdkIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUUsTUFBTSxvQkFBb0IsR0FBMkIsRUFBRSxDQUFDO0lBQ3hELEtBQUssTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDN0IsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUN6QyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxHQUFHLENBQ3BELENBQUM7UUFDRixvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0lBQzNGLENBQUM7SUFFRCxxQ0FBcUM7SUFDckMsTUFBTSxjQUFjLEdBQThCLEVBQUUsQ0FBQztJQUNyRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFFbEIsS0FBSyxNQUFNLFFBQVEsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLEdBQUcsR0FBRztZQUNOLEtBQUssRUFBRSxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEQsQ0FBQyxDQUFDLENBQUM7UUFFSix5QkFBeUI7UUFDekIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhFLFVBQVU7UUFDVixjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkUsV0FBVztRQUNYLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckYsU0FBUyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvQyxNQUFNLFVBQVUsR0FBRyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDO0lBRXhELGtCQUFrQjtJQUNsQixNQUFNLGVBQWUsR0FBd0MsRUFBRSxDQUFDO0lBQ2hFLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRTtRQUM1QyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QixlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEUsTUFBTSxlQUFlLEdBQUcsbUJBQW1CLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFOUUsMkVBQTJFO0lBQzNFLCtDQUErQztJQUMvQyxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2xELElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQztRQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ1osTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0UsSUFBSSxJQUFJLEdBQUcsV0FBVyxFQUFFLENBQUM7b0JBQ3ZCLFdBQVcsR0FBRyxJQUFJLENBQUM7b0JBQ25CLFVBQVUsR0FBRyxDQUFDLENBQUM7Z0JBQ2pCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksVUFBVSxJQUFJLENBQUMsSUFBSSxhQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdEUsY0FBYyxFQUFFLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLGFBQWEsR0FBRyxjQUFjLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDO0lBRWhFLE9BQU87UUFDTCxrQkFBa0I7UUFDbEIsb0JBQW9CO1FBQ3BCLHNCQUFzQixFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNO1FBQy9FLGFBQWE7UUFDYixlQUFlO1FBQ2YsU0FBUztRQUNULFVBQVU7UUFDVixpQkFBaUI7UUFDakIsVUFBVSxFQUFFLGlCQUFpQixDQUFDLE1BQU07S0FDckMsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxPQUFrQztJQUN2RSxNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7SUFFM0IsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNmLEtBQUssQ0FBQyxJQUFJLENBQUMsa0VBQWtFLENBQUMsQ0FBQztJQUMvRSxLQUFLLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxDQUFDLENBQUM7SUFDL0UsS0FBSyxDQUFDLElBQUksQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO0lBQy9FLEtBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUMxRyxLQUFLLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxDQUFDLENBQUM7SUFDL0UsS0FBSyxDQUFDLElBQUksQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO0lBRS9FLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xHLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO0lBQy9FLEtBQUssQ0FBQyxJQUFJLENBQUMsa0VBQWtFLENBQUMsQ0FBQztJQUMvRSxLQUFLLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3BHLEtBQUssQ0FBQyxJQUFJLENBQUMsMkJBQTJCLE9BQU8sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQzdGLEtBQUssQ0FBQyxJQUFJLENBQUMsa0VBQWtFLENBQUMsQ0FBQztJQUMvRSxLQUFLLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxDQUFDLENBQUM7SUFDL0UsS0FBSyxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakcsS0FBSyxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDbEcsS0FBSyxDQUFDLElBQUksQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO0lBQy9FLEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQW1CLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDdkcsS0FBSyxDQUFDLElBQUksQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO0lBRS9FLHFCQUFxQjtJQUNyQixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRWxDLElBQUksT0FBTyxDQUFDLGtCQUFrQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxJQUFJLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUMzRCxDQUFDO1NBQU0sSUFBSSxPQUFPLENBQUMsa0JBQWtCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDN0MsS0FBSyxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7U0FBTSxDQUFDO1FBQ04sS0FBSyxDQUFDLElBQUksQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksR0FBRyxFQUFFLENBQUM7UUFDN0IsS0FBSyxDQUFDLElBQUksQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQzNELENBQUM7U0FBTSxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksR0FBRyxFQUFFLENBQUM7UUFDcEMsS0FBSyxDQUFDLElBQUksQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBQy9ELENBQUM7U0FBTSxDQUFDO1FBQ04sS0FBSyxDQUFDLElBQUksQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLElBQUksR0FBRyxFQUFFLENBQUM7UUFDakMsS0FBSyxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7U0FBTSxJQUFJLE9BQU8sQ0FBQyxhQUFhLElBQUksR0FBRyxFQUFFLENBQUM7UUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQzNELENBQUM7U0FBTSxDQUFDO1FBQ04sS0FBSyxDQUFDLElBQUksQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELGVBQWU7SUFDYixxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osYUFBYTtDQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEVtYmVkZGluZyBRdWFsaXR5IEJlbmNobWFyayBmb3IgUnV2TFRSQSBNb2RlbHNcbiAqXG4gKiBUZXN0cyBlbWJlZGRpbmcgcXVhbGl0eSBmb3IgQ2xhdWRlIENvZGUgdXNlIGNhc2VzOlxuICogLSBDb2RlIHNpbWlsYXJpdHkgZGV0ZWN0aW9uXG4gKiAtIFRhc2sgY2x1c3RlcmluZ1xuICogLSBTZW1hbnRpYyBzZWFyY2ggYWNjdXJhY3lcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEVtYmVkZGluZ1BhaXIge1xuICBpZDogc3RyaW5nO1xuICB0ZXh0MTogc3RyaW5nO1xuICB0ZXh0Mjogc3RyaW5nO1xuICBzaW1pbGFyaXR5OiAnaGlnaCcgfCAnbWVkaXVtJyB8ICdsb3cnIHwgJ25vbmUnO1xuICBjYXRlZ29yeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVtYmVkZGluZ1Jlc3VsdCB7XG4gIHBhaXJJZDogc3RyaW5nO1xuICBleHBlY3RlZFNpbWlsYXJpdHk6IHN0cmluZztcbiAgY29tcHV0ZWRTY29yZTogbnVtYmVyO1xuICBjb3JyZWN0OiBib29sZWFuO1xuICBsYXRlbmN5TXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyVGVzdENhc2Uge1xuICBpZDogc3RyaW5nO1xuICBpdGVtczogc3RyaW5nW107XG4gIGV4cGVjdGVkQ2x1c3Rlcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVtYmVkZGluZ0JlbmNobWFya1Jlc3VsdHMge1xuICAvLyBTaW1pbGFyaXR5IGRldGVjdGlvblxuICBzaW1pbGFyaXR5QWNjdXJhY3k6IG51bWJlcjtcbiAgc2ltaWxhcml0eUJ5Q2F0ZWdvcnk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gIGF2Z1NpbWlsYXJpdHlMYXRlbmN5TXM6IG51bWJlcjtcblxuICAvLyBDbHVzdGVyaW5nIHF1YWxpdHlcbiAgY2x1c3RlclB1cml0eTogbnVtYmVyO1xuICBzaWxob3VldHRlU2NvcmU6IG51bWJlcjtcblxuICAvLyBTZWFyY2ggcXVhbGl0eVxuICBzZWFyY2hNUlI6IG51bWJlcjsgLy8gTWVhbiBSZWNpcHJvY2FsIFJhbmtcbiAgc2VhcmNoTkRDRzogbnVtYmVyOyAvLyBOb3JtYWxpemVkIERpc2NvdW50ZWQgQ3VtdWxhdGl2ZSBHYWluXG5cbiAgLy8gRGV0YWlsc1xuICBzaW1pbGFyaXR5UmVzdWx0czogRW1iZWRkaW5nUmVzdWx0W107XG4gIHRvdGFsUGFpcnM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBHcm91bmQgdHJ1dGggc2ltaWxhcml0eSBwYWlycyBmb3IgdGVzdGluZ1xuICogVGVzdHMgd2hldGhlciBlbWJlZGRpbmdzIGNvcnJlY3RseSBjYXB0dXJlIHNlbWFudGljIHNpbWlsYXJpdHlcbiAqL1xuZXhwb3J0IGNvbnN0IFNJTUlMQVJJVFlfVEVTVF9QQUlSUzogRW1iZWRkaW5nUGFpcltdID0gW1xuICAvLyA9PT0gSElHSCBTSU1JTEFSSVRZIChzYW1lIGNvbmNlcHQsIGRpZmZlcmVudCB3b3JkaW5nKSA9PT1cbiAgeyBpZDogJ0gwMDEnLCB0ZXh0MTogJ2ltcGxlbWVudCB1c2VyIGF1dGhlbnRpY2F0aW9uJywgdGV4dDI6ICdjcmVhdGUgbG9naW4gZnVuY3Rpb25hbGl0eScsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdjb2RlLXRhc2snIH0sXG4gIHsgaWQ6ICdIMDAyJywgdGV4dDE6ICd3cml0ZSB1bml0IHRlc3RzIGZvciB0aGUgQVBJJywgdGV4dDI6ICdjcmVhdGUgdGVzdCBjYXNlcyBmb3IgUkVTVCBlbmRwb2ludHMnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxuICB7IGlkOiAnSDAwMycsIHRleHQxOiAnZml4IHRoZSBudWxsIHBvaW50ZXIgZXhjZXB0aW9uJywgdGV4dDI6ICdyZXNvbHZlIHRoZSBOdWxsUG9pbnRlckV4Y2VwdGlvbiBidWcnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnZGVidWdnaW5nJyB9LFxuICB7IGlkOiAnSDAwNCcsIHRleHQxOiAnb3B0aW1pemUgZGF0YWJhc2UgcXVlcmllcycsIHRleHQyOiAnaW1wcm92ZSBTUUwgcXVlcnkgcGVyZm9ybWFuY2UnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAncGVyZm9ybWFuY2UnIH0sXG4gIHsgaWQ6ICdIMDA1JywgdGV4dDE6ICdkZXBsb3kgdG8gcHJvZHVjdGlvbicsIHRleHQyOiAncmVsZWFzZSB0byBwcm9kIGVudmlyb25tZW50Jywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2Rldm9wcycgfSxcbiAgeyBpZDogJ0gwMDYnLCB0ZXh0MTogJ3JlZmFjdG9yIHRoZSBsZWdhY3kgY29kZScsIHRleHQyOiAncmVzdHJ1Y3R1cmUgb2xkIGNvZGViYXNlJywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ3JlZmFjdG9yaW5nJyB9LFxuICB7IGlkOiAnSDAwNycsIHRleHQxOiAnYWRkIGVycm9yIGhhbmRsaW5nJywgdGV4dDI6ICdpbXBsZW1lbnQgZXhjZXB0aW9uIGhhbmRsaW5nJywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2NvZGUtdGFzaycgfSxcbiAgeyBpZDogJ0gwMDgnLCB0ZXh0MTogJ2NyZWF0ZSBSRVNUIEFQSSBlbmRwb2ludCcsIHRleHQyOiAnYnVpbGQgSFRUUCBBUEkgcm91dGUnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxuICB7IGlkOiAnSDAwOScsIHRleHQxOiAnY2hlY2sgZm9yIFNRTCBpbmplY3Rpb24nLCB0ZXh0MjogJ2F1ZGl0IGZvciBTUUxpIHZ1bG5lcmFiaWxpdGllcycsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdzZWN1cml0eScgfSxcbiAgeyBpZDogJ0gwMTAnLCB0ZXh0MTogJ2RvY3VtZW50IHRoZSBBUEknLCB0ZXh0MjogJ3dyaXRlIEFQSSBkb2N1bWVudGF0aW9uJywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2RvY3VtZW50YXRpb24nIH0sXG5cbiAgLy8gQ29kZSBzbmlwcGV0cyAtIHNhbWUgZnVuY3Rpb25hbGl0eVxuICB7IGlkOiAnSDAxMScsIHRleHQxOiAnZnVuY3Rpb24gYWRkKGEsIGIpIHsgcmV0dXJuIGEgKyBiOyB9JywgdGV4dDI6ICdjb25zdCBzdW0gPSAoeCwgeSkgPT4geCArIHk7Jywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2NvZGUtc25pcHBldCcgfSxcbiAgeyBpZDogJ0gwMTInLCB0ZXh0MTogJ2ZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKScsIHRleHQyOiAnYXJyLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7fSknLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnY29kZS1zbmlwcGV0JyB9LFxuICB7IGlkOiAnSDAxMycsIHRleHQxOiAnYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKCkgeyBhd2FpdCBmZXRjaCh1cmwpOyB9JywgdGV4dDI6ICdjb25zdCBnZXREYXRhID0gYXN5bmMgKCkgPT4geyBhd2FpdCBheGlvcy5nZXQodXJsKTsgfScsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdjb2RlLXNuaXBwZXQnIH0sXG5cbiAgLy8gPT09IE1FRElVTSBTSU1JTEFSSVRZIChyZWxhdGVkIGJ1dCBkaWZmZXJlbnQpID09PVxuICB7IGlkOiAnTTAwMScsIHRleHQxOiAnaW1wbGVtZW50IHVzZXIgYXV0aGVudGljYXRpb24nLCB0ZXh0MjogJ2NyZWF0ZSB1c2VyIHJlZ2lzdHJhdGlvbicsIHNpbWlsYXJpdHk6ICdtZWRpdW0nLCBjYXRlZ29yeTogJ2NvZGUtdGFzaycgfSxcbiAgeyBpZDogJ00wMDInLCB0ZXh0MTogJ3dyaXRlIHVuaXQgdGVzdHMnLCB0ZXh0MjogJ3dyaXRlIGludGVncmF0aW9uIHRlc3RzJywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAndGVzdGluZycgfSxcbiAgeyBpZDogJ00wMDMnLCB0ZXh0MTogJ2ZpeCB0aGUgYnVnIGluIGNoZWNrb3V0JywgdGV4dDI6ICdkZWJ1ZyB0aGUgcGF5bWVudCBmbG93Jywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAnZGVidWdnaW5nJyB9LFxuICB7IGlkOiAnTTAwNCcsIHRleHQxOiAnb3B0aW1pemUgZnJvbnRlbmQgcGVyZm9ybWFuY2UnLCB0ZXh0MjogJ2ltcHJvdmUgYmFja2VuZCByZXNwb25zZSB0aW1lJywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAncGVyZm9ybWFuY2UnIH0sXG4gIHsgaWQ6ICdNMDA1JywgdGV4dDE6ICdkZXBsb3kgdG8gc3RhZ2luZycsIHRleHQyOiAnZGVwbG95IHRvIHByb2R1Y3Rpb24nLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICdkZXZvcHMnIH0sXG4gIHsgaWQ6ICdNMDA2JywgdGV4dDE6ICdSZWFjdCBjb21wb25lbnQnLCB0ZXh0MjogJ1Z1ZSBjb21wb25lbnQnLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICdjb2RlLXNuaXBwZXQnIH0sXG4gIHsgaWQ6ICdNMDA3JywgdGV4dDE6ICdQb3N0Z3JlU1FMIHF1ZXJ5JywgdGV4dDI6ICdNeVNRTCBxdWVyeScsIHNpbWlsYXJpdHk6ICdtZWRpdW0nLCBjYXRlZ29yeTogJ2NvZGUtc25pcHBldCcgfSxcbiAgeyBpZDogJ00wMDgnLCB0ZXh0MTogJ1JFU1QgQVBJJywgdGV4dDI6ICdHcmFwaFFMIEFQSScsIHNpbWlsYXJpdHk6ICdtZWRpdW0nLCBjYXRlZ29yeTogJ2NvZGUtdGFzaycgfSxcbiAgeyBpZDogJ00wMDknLCB0ZXh0MTogJ05vZGUuanMgc2VydmVyJywgdGV4dDI6ICdQeXRob24gRmxhc2sgc2VydmVyJywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAnY29kZS1zbmlwcGV0JyB9LFxuICB7IGlkOiAnTTAxMCcsIHRleHQxOiAnYWRkIGNhY2hpbmcgbGF5ZXInLCB0ZXh0MjogJ2ltcGxlbWVudCByYXRlIGxpbWl0aW5nJywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAncGVyZm9ybWFuY2UnIH0sXG5cbiAgLy8gPT09IExPVyBTSU1JTEFSSVRZIChzYW1lIGRvbWFpbiwgZGlmZmVyZW50IHRhc2spID09PVxuICB7IGlkOiAnTDAwMScsIHRleHQxOiAnaW1wbGVtZW50IGF1dGhlbnRpY2F0aW9uJywgdGV4dDI6ICd3cml0ZSBkb2N1bWVudGF0aW9uJywgc2ltaWxhcml0eTogJ2xvdycsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxuICB7IGlkOiAnTDAwMicsIHRleHQxOiAnZml4IGJ1ZycsIHRleHQyOiAnYWRkIG5ldyBmZWF0dXJlJywgc2ltaWxhcml0eTogJ2xvdycsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxuICB7IGlkOiAnTDAwMycsIHRleHQxOiAnb3B0aW1pemUgcXVlcnknLCB0ZXh0MjogJ3JldmlldyBwdWxsIHJlcXVlc3QnLCBzaW1pbGFyaXR5OiAnbG93JywgY2F0ZWdvcnk6ICdtaXhlZCcgfSxcbiAgeyBpZDogJ0wwMDQnLCB0ZXh0MTogJ2RlcGxveSBhcHBsaWNhdGlvbicsIHRleHQyOiAnZGVzaWduIGFyY2hpdGVjdHVyZScsIHNpbWlsYXJpdHk6ICdsb3cnLCBjYXRlZ29yeTogJ21peGVkJyB9LFxuICB7IGlkOiAnTDAwNScsIHRleHQxOiAnZnJvbnRlbmQgUmVhY3QgY29kZScsIHRleHQyOiAnYmFja2VuZCBkYXRhYmFzZSBtaWdyYXRpb24nLCBzaW1pbGFyaXR5OiAnbG93JywgY2F0ZWdvcnk6ICdjb2RlLXNuaXBwZXQnIH0sXG4gIHsgaWQ6ICdMMDA2JywgdGV4dDE6ICdzZWN1cml0eSBhdWRpdCcsIHRleHQyOiAncGVyZm9ybWFuY2UgYmVuY2htYXJrJywgc2ltaWxhcml0eTogJ2xvdycsIGNhdGVnb3J5OiAnbWl4ZWQnIH0sXG4gIHsgaWQ6ICdMMDA3JywgdGV4dDE6ICd3cml0ZSB1bml0IHRlc3RzJywgdGV4dDI6ICdjcmVhdGUgQ0kvQ0QgcGlwZWxpbmUnLCBzaW1pbGFyaXR5OiAnbG93JywgY2F0ZWdvcnk6ICdtaXhlZCcgfSxcbiAgeyBpZDogJ0wwMDgnLCB0ZXh0MTogJ0NTUyBzdHlsaW5nJywgdGV4dDI6ICdkYXRhYmFzZSBzY2hlbWEnLCBzaW1pbGFyaXR5OiAnbG93JywgY2F0ZWdvcnk6ICdjb2RlLXNuaXBwZXQnIH0sXG5cbiAgLy8gPT09IE5PIFNJTUlMQVJJVFkgKHVucmVsYXRlZCkgPT09XG4gIHsgaWQ6ICdOMDAxJywgdGV4dDE6ICdpbXBsZW1lbnQgdXNlciBsb2dpbicsIHRleHQyOiAndGhlIHdlYXRoZXIgaXMgbmljZSB0b2RheScsIHNpbWlsYXJpdHk6ICdub25lJywgY2F0ZWdvcnk6ICd1bnJlbGF0ZWQnIH0sXG4gIHsgaWQ6ICdOMDAyJywgdGV4dDE6ICdmaXggSmF2YVNjcmlwdCBidWcnLCB0ZXh0MjogJ3JlY2lwZSBmb3IgY2hvY29sYXRlIGNha2UnLCBzaW1pbGFyaXR5OiAnbm9uZScsIGNhdGVnb3J5OiAndW5yZWxhdGVkJyB9LFxuICB7IGlkOiAnTjAwMycsIHRleHQxOiAnZGVwbG95IEt1YmVybmV0ZXMgY2x1c3RlcicsIHRleHQyOiAnYm9vayBhIGZsaWdodCB0byBQYXJpcycsIHNpbWlsYXJpdHk6ICdub25lJywgY2F0ZWdvcnk6ICd1bnJlbGF0ZWQnIH0sXG4gIHsgaWQ6ICdOMDA0JywgdGV4dDE6ICdvcHRpbWl6ZSBTUUwgcXVlcnknLCB0ZXh0MjogJ2xlYXJuIHRvIHBsYXkgZ3VpdGFyJywgc2ltaWxhcml0eTogJ25vbmUnLCBjYXRlZ29yeTogJ3VucmVsYXRlZCcgfSxcbiAgeyBpZDogJ04wMDUnLCB0ZXh0MTogJ2NvbnN0IHggPSA0MjsnLCB0ZXh0MjogJ3Jvc2VzIGFyZSByZWQgdmlvbGV0cyBhcmUgYmx1ZScsIHNpbWlsYXJpdHk6ICdub25lJywgY2F0ZWdvcnk6ICd1bnJlbGF0ZWQnIH0sXG5dO1xuXG4vKipcbiAqIFNlYXJjaCByZWxldmFuY2UgdGVzdCBjYXNlc1xuICogUXVlcnkgKyBkb2N1bWVudHMgd2l0aCByZWxldmFuY2Ugc2NvcmVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoVGVzdENhc2Uge1xuICBpZDogc3RyaW5nO1xuICBxdWVyeTogc3RyaW5nO1xuICBkb2N1bWVudHM6IHsgdGV4dDogc3RyaW5nOyByZWxldmFuY2U6IG51bWJlciB9W107IC8vIHJlbGV2YW5jZTogMC0zICgwPWlycmVsZXZhbnQsIDM9aGlnaGx5IHJlbGV2YW50KVxufVxuXG5leHBvcnQgY29uc3QgU0VBUkNIX1RFU1RfQ0FTRVM6IFNlYXJjaFRlc3RDYXNlW10gPSBbXG4gIHtcbiAgICBpZDogJ1MwMDEnLFxuICAgIHF1ZXJ5OiAnaG93IHRvIGltcGxlbWVudCB1c2VyIGF1dGhlbnRpY2F0aW9uIGluIE5vZGUuanMnLFxuICAgIGRvY3VtZW50czogW1xuICAgICAgeyB0ZXh0OiAnSW1wbGVtZW50aW5nIEpXVCBhdXRoZW50aWNhdGlvbiBpbiBFeHByZXNzLmpzIHdpdGggcGFzc3BvcnQnLCByZWxldmFuY2U6IDMgfSxcbiAgICAgIHsgdGV4dDogJ05vZGUuanMgbG9naW4gc3lzdGVtIHdpdGggYmNyeXB0IHBhc3N3b3JkIGhhc2hpbmcnLCByZWxldmFuY2U6IDMgfSxcbiAgICAgIHsgdGV4dDogJ0J1aWxkaW5nIGEgUmVhY3QgbG9naW4gZm9ybSBjb21wb25lbnQnLCByZWxldmFuY2U6IDIgfSxcbiAgICAgIHsgdGV4dDogJ1Bvc3RncmVTUUwgdXNlciB0YWJsZSBzY2hlbWEgZGVzaWduJywgcmVsZXZhbmNlOiAxIH0sXG4gICAgICB7IHRleHQ6ICdIb3cgdG8gZGVwbG95IERvY2tlciBjb250YWluZXJzJywgcmVsZXZhbmNlOiAwIH0sXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGlkOiAnUzAwMicsXG4gICAgcXVlcnk6ICdmaXggbWVtb3J5IGxlYWsgaW4gSmF2YVNjcmlwdCcsXG4gICAgZG9jdW1lbnRzOiBbXG4gICAgICB7IHRleHQ6ICdEZWJ1Z2dpbmcgbWVtb3J5IGxlYWtzIHdpdGggQ2hyb21lIERldlRvb2xzIGhlYXAgc25hcHNob3RzJywgcmVsZXZhbmNlOiAzIH0sXG4gICAgICB7IHRleHQ6ICdDb21tb24gY2F1c2VzIG9mIG1lbW9yeSBsZWFrcyBpbiBOb2RlLmpzIGFwcGxpY2F0aW9ucycsIHJlbGV2YW5jZTogMyB9LFxuICAgICAgeyB0ZXh0OiAnSmF2YVNjcmlwdCBnYXJiYWdlIGNvbGxlY3Rpb24gZXhwbGFpbmVkJywgcmVsZXZhbmNlOiAyIH0sXG4gICAgICB7IHRleHQ6ICdPcHRpbWl6aW5nIFJlYWN0IGNvbXBvbmVudCByZS1yZW5kZXJzJywgcmVsZXZhbmNlOiAxIH0sXG4gICAgICB7IHRleHQ6ICdDU1MgZmxleGJveCBsYXlvdXQgdHV0b3JpYWwnLCByZWxldmFuY2U6IDAgfSxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgaWQ6ICdTMDAzJyxcbiAgICBxdWVyeTogJ2RhdGFiYXNlIG1pZ3JhdGlvbiBiZXN0IHByYWN0aWNlcycsXG4gICAgZG9jdW1lbnRzOiBbXG4gICAgICB7IHRleHQ6ICdTY2hlbWEgbWlncmF0aW9uIHN0cmF0ZWdpZXMgZm9yIHplcm8tZG93bnRpbWUgZGVwbG95bWVudHMnLCByZWxldmFuY2U6IDMgfSxcbiAgICAgIHsgdGV4dDogJ1VzaW5nIFByaXNtYSBtaWdyYXRlIGZvciBQb3N0Z3JlU1FMIHNjaGVtYSBjaGFuZ2VzJywgcmVsZXZhbmNlOiAzIH0sXG4gICAgICB7IHRleHQ6ICdEYXRhYmFzZSBiYWNrdXAgYW5kIHJlY292ZXJ5IHByb2NlZHVyZXMnLCByZWxldmFuY2U6IDIgfSxcbiAgICAgIHsgdGV4dDogJ1NRTCBxdWVyeSBvcHRpbWl6YXRpb24gdGVjaG5pcXVlcycsIHJlbGV2YW5jZTogMSB9LFxuICAgICAgeyB0ZXh0OiAnUmVhY3Qgc3RhdGUgbWFuYWdlbWVudCB3aXRoIFJlZHV4JywgcmVsZXZhbmNlOiAwIH0sXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGlkOiAnUzAwNCcsXG4gICAgcXVlcnk6ICd3cml0ZSB1bml0IHRlc3RzIGZvciBSZWFjdCBjb21wb25lbnRzJyxcbiAgICBkb2N1bWVudHM6IFtcbiAgICAgIHsgdGV4dDogJ1Rlc3RpbmcgUmVhY3QgY29tcG9uZW50cyB3aXRoIEplc3QgYW5kIFJlYWN0IFRlc3RpbmcgTGlicmFyeScsIHJlbGV2YW5jZTogMyB9LFxuICAgICAgeyB0ZXh0OiAnU25hcHNob3QgdGVzdGluZyBmb3IgVUkgY29tcG9uZW50cycsIHJlbGV2YW5jZTogMyB9LFxuICAgICAgeyB0ZXh0OiAnTW9ja2luZyBBUEkgY2FsbHMgaW4gZnJvbnRlbmQgdGVzdHMnLCByZWxldmFuY2U6IDIgfSxcbiAgICAgIHsgdGV4dDogJ0VuZC10by1lbmQgdGVzdGluZyB3aXRoIEN5cHJlc3MnLCByZWxldmFuY2U6IDEgfSxcbiAgICAgIHsgdGV4dDogJ0t1YmVybmV0ZXMgcG9kIGNvbmZpZ3VyYXRpb24nLCByZWxldmFuY2U6IDAgfSxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgaWQ6ICdTMDA1JyxcbiAgICBxdWVyeTogJ29wdGltaXplIEFQSSByZXNwb25zZSB0aW1lJyxcbiAgICBkb2N1bWVudHM6IFtcbiAgICAgIHsgdGV4dDogJ0ltcGxlbWVudGluZyBSZWRpcyBjYWNoaW5nIGZvciBBUEkgZW5kcG9pbnRzJywgcmVsZXZhbmNlOiAzIH0sXG4gICAgICB7IHRleHQ6ICdEYXRhYmFzZSBxdWVyeSBvcHRpbWl6YXRpb24gd2l0aCBpbmRleGVzJywgcmVsZXZhbmNlOiAzIH0sXG4gICAgICB7IHRleHQ6ICdVc2luZyBDRE4gZm9yIHN0YXRpYyBhc3NldCBkZWxpdmVyeScsIHJlbGV2YW5jZTogMiB9LFxuICAgICAgeyB0ZXh0OiAnTG9hZCBiYWxhbmNpbmcgc3RyYXRlZ2llcyBmb3IgbWljcm9zZXJ2aWNlcycsIHJlbGV2YW5jZTogMiB9LFxuICAgICAgeyB0ZXh0OiAnV3JpdGluZyBjbGVhbiBKYXZhU2NyaXB0IGNvZGUnLCByZWxldmFuY2U6IDAgfSxcbiAgICBdLFxuICB9LFxuXTtcblxuLyoqXG4gKiBDbHVzdGVyIHRlc3QgY2FzZXMgLSBpdGVtcyB0aGF0IHNob3VsZCBjbHVzdGVyIHRvZ2V0aGVyXG4gKi9cbmV4cG9ydCBjb25zdCBDTFVTVEVSX1RFU1RfQ0FTRVM6IENsdXN0ZXJUZXN0Q2FzZVtdID0gW1xuICB7XG4gICAgaWQ6ICdDTDAwMScsXG4gICAgZXhwZWN0ZWRDbHVzdGVyOiAnYXV0aGVudGljYXRpb24nLFxuICAgIGl0ZW1zOiBbXG4gICAgICAnaW1wbGVtZW50IHVzZXIgbG9naW4nLFxuICAgICAgJ2FkZCBKV1QgdG9rZW4gdmFsaWRhdGlvbicsXG4gICAgICAnY3JlYXRlIHBhc3N3b3JkIHJlc2V0IGZsb3cnLFxuICAgICAgJ2ltcGxlbWVudCBPQXV0aCBpbnRlZ3JhdGlvbicsXG4gICAgICAnYWRkIHR3by1mYWN0b3IgYXV0aGVudGljYXRpb24nLFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBpZDogJ0NMMDAyJyxcbiAgICBleHBlY3RlZENsdXN0ZXI6ICd0ZXN0aW5nJyxcbiAgICBpdGVtczogW1xuICAgICAgJ3dyaXRlIHVuaXQgdGVzdHMnLFxuICAgICAgJ2FkZCBpbnRlZ3JhdGlvbiB0ZXN0cycsXG4gICAgICAnY3JlYXRlIEUyRSB0ZXN0IHN1aXRlJyxcbiAgICAgICdpbXByb3ZlIHRlc3QgY292ZXJhZ2UnLFxuICAgICAgJ2FkZCBzbmFwc2hvdCB0ZXN0cycsXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGlkOiAnQ0wwMDMnLFxuICAgIGV4cGVjdGVkQ2x1c3RlcjogJ2RhdGFiYXNlJyxcbiAgICBpdGVtczogW1xuICAgICAgJ29wdGltaXplIFNRTCBxdWVyaWVzJyxcbiAgICAgICdhZGQgZGF0YWJhc2UgaW5kZXhlcycsXG4gICAgICAnY3JlYXRlIG1pZ3JhdGlvbiBzY3JpcHQnLFxuICAgICAgJ2ltcGxlbWVudCBjb25uZWN0aW9uIHBvb2xpbmcnLFxuICAgICAgJ2Rlc2lnbiBzY2hlbWEgZm9yIHVzZXJzIHRhYmxlJyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgaWQ6ICdDTDAwNCcsXG4gICAgZXhwZWN0ZWRDbHVzdGVyOiAnZnJvbnRlbmQnLFxuICAgIGl0ZW1zOiBbXG4gICAgICAnYnVpbGQgUmVhY3QgY29tcG9uZW50JyxcbiAgICAgICdhZGQgQ1NTIHN0eWxpbmcnLFxuICAgICAgJ2ltcGxlbWVudCByZXNwb25zaXZlIGRlc2lnbicsXG4gICAgICAnY3JlYXRlIGZvcm0gdmFsaWRhdGlvbicsXG4gICAgICAnYWRkIGxvYWRpbmcgc3Bpbm5lcicsXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGlkOiAnQ0wwMDUnLFxuICAgIGV4cGVjdGVkQ2x1c3RlcjogJ2Rldm9wcycsXG4gICAgaXRlbXM6IFtcbiAgICAgICdzZXQgdXAgQ0kvQ0QgcGlwZWxpbmUnLFxuICAgICAgJ2NvbmZpZ3VyZSBLdWJlcm5ldGVzIGRlcGxveW1lbnQnLFxuICAgICAgJ2NyZWF0ZSBEb2NrZXIgY29udGFpbmVyJyxcbiAgICAgICdhZGQgbW9uaXRvcmluZyBhbGVydHMnLFxuICAgICAgJ2ltcGxlbWVudCBhdXRvLXNjYWxpbmcnLFxuICAgIF0sXG4gIH0sXG5dO1xuXG4vKipcbiAqIEV4cGVjdGVkIHNpbWlsYXJpdHkgc2NvcmUgcmFuZ2VzXG4gKi9cbmNvbnN0IFNJTUlMQVJJVFlfVEhSRVNIT0xEUyA9IHtcbiAgaGlnaDogeyBtaW46IDAuNywgbWF4OiAxLjAgfSxcbiAgbWVkaXVtOiB7IG1pbjogMC40LCBtYXg6IDAuNyB9LFxuICBsb3c6IHsgbWluOiAwLjIsIG1heDogMC40IH0sXG4gIG5vbmU6IHsgbWluOiAwLjAsIG1heDogMC4yIH0sXG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGNvbXB1dGVkIHNpbWlsYXJpdHkgbWF0Y2hlcyBleHBlY3RlZCBjYXRlZ29yeVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb3JyZWN0U2ltaWxhcml0eShcbiAgZXhwZWN0ZWQ6ICdoaWdoJyB8ICdtZWRpdW0nIHwgJ2xvdycgfCAnbm9uZScsXG4gIGNvbXB1dGVkOiBudW1iZXJcbik6IGJvb2xlYW4ge1xuICBjb25zdCB0aHJlc2hvbGQgPSBTSU1JTEFSSVRZX1RIUkVTSE9MRFNbZXhwZWN0ZWRdO1xuICByZXR1cm4gY29tcHV0ZWQgPj0gdGhyZXNob2xkLm1pbiAmJiBjb21wdXRlZCA8PSB0aHJlc2hvbGQubWF4O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBNZWFuIFJlY2lwcm9jYWwgUmFuayBmb3Igc2VhcmNoIHJlc3VsdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZU1SUihcbiAgcmFua2luZ3M6IHsgcmVsZXZhbnQ6IGJvb2xlYW4gfVtdW11cbik6IG51bWJlciB7XG4gIGxldCBzdW1SUiA9IDA7XG4gIGZvciAoY29uc3QgcmFua2luZyBvZiByYW5raW5ncykge1xuICAgIGNvbnN0IGZpcnN0UmVsZXZhbnRJZHggPSByYW5raW5nLmZpbmRJbmRleChyID0+IHIucmVsZXZhbnQpO1xuICAgIGlmIChmaXJzdFJlbGV2YW50SWR4ID49IDApIHtcbiAgICAgIHN1bVJSICs9IDEgLyAoZmlyc3RSZWxldmFudElkeCArIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3VtUlIgLyByYW5raW5ncy5sZW5ndGg7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIE5EQ0cgZm9yIHNlYXJjaCByZXN1bHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVORENHKFxuICByZXN1bHRzOiB7IHJlbGV2YW5jZTogbnVtYmVyIH1bXSxcbiAgaWRlYWxPcmRlcjogeyByZWxldmFuY2U6IG51bWJlciB9W11cbik6IG51bWJlciB7XG4gIGNvbnN0IGRjZyA9IHJlc3VsdHMucmVkdWNlKChzdW0sIHIsIGkpID0+IHtcbiAgICByZXR1cm4gc3VtICsgKE1hdGgucG93KDIsIHIucmVsZXZhbmNlKSAtIDEpIC8gTWF0aC5sb2cyKGkgKyAyKTtcbiAgfSwgMCk7XG5cbiAgY29uc3QgaWRjZyA9IGlkZWFsT3JkZXIucmVkdWNlKChzdW0sIHIsIGkpID0+IHtcbiAgICByZXR1cm4gc3VtICsgKE1hdGgucG93KDIsIHIucmVsZXZhbmNlKSAtIDEpIC8gTWF0aC5sb2cyKGkgKyAyKTtcbiAgfSwgMCk7XG5cbiAgcmV0dXJuIGlkY2cgPiAwID8gZGNnIC8gaWRjZyA6IDA7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHNpbGhvdWV0dGUgc2NvcmUgZm9yIGNsdXN0ZXJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZVNpbGhvdWV0dGUoXG4gIGVtYmVkZGluZ3M6IG51bWJlcltdW10sXG4gIGxhYmVsczogbnVtYmVyW11cbik6IG51bWJlciB7XG4gIC8vIFNpbXBsaWZpZWQgc2lsaG91ZXR0ZSBjYWxjdWxhdGlvblxuICBjb25zdCBuID0gZW1iZWRkaW5ncy5sZW5ndGg7XG4gIGlmIChuIDwgMikgcmV0dXJuIDA7XG5cbiAgbGV0IHRvdGFsU2lsaG91ZXR0ZSA9IDA7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICBjb25zdCBjbHVzdGVyID0gbGFiZWxzW2ldO1xuXG4gICAgLy8gQ2FsY3VsYXRlIG1lYW4gaW50cmEtY2x1c3RlciBkaXN0YW5jZSAoYSlcbiAgICBsZXQgaW50cmFTdW0gPSAwO1xuICAgIGxldCBpbnRyYUNvdW50ID0gMDtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgaWYgKGkgIT09IGogJiYgbGFiZWxzW2pdID09PSBjbHVzdGVyKSB7XG4gICAgICAgIGludHJhU3VtICs9IGV1Y2xpZGVhbkRpc3RhbmNlKGVtYmVkZGluZ3NbaV0sIGVtYmVkZGluZ3Nbal0pO1xuICAgICAgICBpbnRyYUNvdW50Kys7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGEgPSBpbnRyYUNvdW50ID4gMCA/IGludHJhU3VtIC8gaW50cmFDb3VudCA6IDA7XG5cbiAgICAvLyBDYWxjdWxhdGUgbWluIG1lYW4gaW50ZXItY2x1c3RlciBkaXN0YW5jZSAoYilcbiAgICBjb25zdCBvdGhlckNsdXN0ZXJzID0gWy4uLm5ldyBTZXQobGFiZWxzKV0uZmlsdGVyKGMgPT4gYyAhPT0gY2x1c3Rlcik7XG4gICAgbGV0IG1pbkludGVyTWVhbiA9IEluZmluaXR5O1xuXG4gICAgZm9yIChjb25zdCBvdGhlckNsdXN0ZXIgb2Ygb3RoZXJDbHVzdGVycykge1xuICAgICAgbGV0IGludGVyU3VtID0gMDtcbiAgICAgIGxldCBpbnRlckNvdW50ID0gMDtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgIGlmIChsYWJlbHNbal0gPT09IG90aGVyQ2x1c3Rlcikge1xuICAgICAgICAgIGludGVyU3VtICs9IGV1Y2xpZGVhbkRpc3RhbmNlKGVtYmVkZGluZ3NbaV0sIGVtYmVkZGluZ3Nbal0pO1xuICAgICAgICAgIGludGVyQ291bnQrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGludGVyQ291bnQgPiAwKSB7XG4gICAgICAgIG1pbkludGVyTWVhbiA9IE1hdGgubWluKG1pbkludGVyTWVhbiwgaW50ZXJTdW0gLyBpbnRlckNvdW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgYiA9IG1pbkludGVyTWVhbiA9PT0gSW5maW5pdHkgPyAwIDogbWluSW50ZXJNZWFuO1xuXG4gICAgLy8gU2lsaG91ZXR0ZSBmb3IgdGhpcyBwb2ludFxuICAgIGNvbnN0IHMgPSBNYXRoLm1heChhLCBiKSA+IDAgPyAoYiAtIGEpIC8gTWF0aC5tYXgoYSwgYikgOiAwO1xuICAgIHRvdGFsU2lsaG91ZXR0ZSArPSBzO1xuICB9XG5cbiAgcmV0dXJuIHRvdGFsU2lsaG91ZXR0ZSAvIG47XG59XG5cbmZ1bmN0aW9uIGV1Y2xpZGVhbkRpc3RhbmNlKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlciB7XG4gIGxldCBzdW0gPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICBzdW0gKz0gTWF0aC5wb3coYVtpXSAtIGJbaV0sIDIpO1xuICB9XG4gIHJldHVybiBNYXRoLnNxcnQoc3VtKTtcbn1cblxuLyoqXG4gKiBSdW4gdGhlIGVtYmVkZGluZyBiZW5jaG1hcmtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkVtYmVkZGluZ0JlbmNobWFyayhcbiAgZW1iZWRkZXI6ICh0ZXh0OiBzdHJpbmcpID0+IG51bWJlcltdLFxuICBzaW1pbGFyaXR5Rm46IChhOiBudW1iZXJbXSwgYjogbnVtYmVyW10pID0+IG51bWJlclxuKTogRW1iZWRkaW5nQmVuY2htYXJrUmVzdWx0cyB7XG4gIGNvbnN0IHNpbWlsYXJpdHlSZXN1bHRzOiBFbWJlZGRpbmdSZXN1bHRbXSA9IFtdO1xuICBjb25zdCBsYXRlbmNpZXM6IG51bWJlcltdID0gW107XG5cbiAgLy8gVGVzdCBzaW1pbGFyaXR5IHBhaXJzXG4gIGZvciAoY29uc3QgcGFpciBvZiBTSU1JTEFSSVRZX1RFU1RfUEFJUlMpIHtcbiAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGNvbnN0IGVtYjEgPSBlbWJlZGRlcihwYWlyLnRleHQxKTtcbiAgICBjb25zdCBlbWIyID0gZW1iZWRkZXIocGFpci50ZXh0Mik7XG4gICAgY29uc3Qgc2NvcmUgPSBzaW1pbGFyaXR5Rm4oZW1iMSwgZW1iMik7XG4gICAgY29uc3QgbGF0ZW5jeU1zID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydDtcblxuICAgIGxhdGVuY2llcy5wdXNoKGxhdGVuY3lNcyk7XG5cbiAgICBzaW1pbGFyaXR5UmVzdWx0cy5wdXNoKHtcbiAgICAgIHBhaXJJZDogcGFpci5pZCxcbiAgICAgIGV4cGVjdGVkU2ltaWxhcml0eTogcGFpci5zaW1pbGFyaXR5LFxuICAgICAgY29tcHV0ZWRTY29yZTogc2NvcmUsXG4gICAgICBjb3JyZWN0OiBpc0NvcnJlY3RTaW1pbGFyaXR5KHBhaXIuc2ltaWxhcml0eSwgc2NvcmUpLFxuICAgICAgbGF0ZW5jeU1zLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHNpbWlsYXJpdHkgYWNjdXJhY3lcbiAgY29uc3QgY29ycmVjdFNpbWlsYXJpdHkgPSBzaW1pbGFyaXR5UmVzdWx0cy5maWx0ZXIociA9PiByLmNvcnJlY3QpLmxlbmd0aDtcbiAgY29uc3Qgc2ltaWxhcml0eUFjY3VyYWN5ID0gY29ycmVjdFNpbWlsYXJpdHkgLyBzaW1pbGFyaXR5UmVzdWx0cy5sZW5ndGg7XG5cbiAgLy8gQWNjdXJhY3kgYnkgY2F0ZWdvcnlcbiAgY29uc3QgY2F0ZWdvcmllcyA9IFsuLi5uZXcgU2V0KFNJTUlMQVJJVFlfVEVTVF9QQUlSUy5tYXAocCA9PiBwLmNhdGVnb3J5KSldO1xuICBjb25zdCBzaW1pbGFyaXR5QnlDYXRlZ29yeTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuICBmb3IgKGNvbnN0IGNhdCBvZiBjYXRlZ29yaWVzKSB7XG4gICAgY29uc3QgY2F0UmVzdWx0cyA9IHNpbWlsYXJpdHlSZXN1bHRzLmZpbHRlcihcbiAgICAgIChyLCBpKSA9PiBTSU1JTEFSSVRZX1RFU1RfUEFJUlNbaV0uY2F0ZWdvcnkgPT09IGNhdFxuICAgICk7XG4gICAgc2ltaWxhcml0eUJ5Q2F0ZWdvcnlbY2F0XSA9IGNhdFJlc3VsdHMuZmlsdGVyKHIgPT4gci5jb3JyZWN0KS5sZW5ndGggLyBjYXRSZXN1bHRzLmxlbmd0aDtcbiAgfVxuXG4gIC8vIFRlc3Qgc2VhcmNoIHF1YWxpdHkgKE1SUiBhbmQgTkRDRylcbiAgY29uc3Qgc2VhcmNoUmFua2luZ3M6IHsgcmVsZXZhbnQ6IGJvb2xlYW4gfVtdW10gPSBbXTtcbiAgbGV0IHRvdGFsTkRDRyA9IDA7XG5cbiAgZm9yIChjb25zdCB0ZXN0Q2FzZSBvZiBTRUFSQ0hfVEVTVF9DQVNFUykge1xuICAgIGNvbnN0IHF1ZXJ5RW1iID0gZW1iZWRkZXIodGVzdENhc2UucXVlcnkpO1xuICAgIGNvbnN0IGRvY1Njb3JlcyA9IHRlc3RDYXNlLmRvY3VtZW50cy5tYXAoZG9jID0+ICh7XG4gICAgICAuLi5kb2MsXG4gICAgICBzY29yZTogc2ltaWxhcml0eUZuKHF1ZXJ5RW1iLCBlbWJlZGRlcihkb2MudGV4dCkpLFxuICAgIH0pKTtcblxuICAgIC8vIFNvcnQgYnkgY29tcHV0ZWQgc2NvcmVcbiAgICBjb25zdCBzb3J0ZWQgPSBbLi4uZG9jU2NvcmVzXS5zb3J0KChhLCBiKSA9PiBiLnNjb3JlIC0gYS5zY29yZSk7XG5cbiAgICAvLyBGb3IgTVJSXG4gICAgc2VhcmNoUmFua2luZ3MucHVzaChzb3J0ZWQubWFwKGQgPT4gKHsgcmVsZXZhbnQ6IGQucmVsZXZhbmNlID49IDIgfSkpKTtcblxuICAgIC8vIEZvciBORENHXG4gICAgY29uc3QgaWRlYWxPcmRlciA9IFsuLi50ZXN0Q2FzZS5kb2N1bWVudHNdLnNvcnQoKGEsIGIpID0+IGIucmVsZXZhbmNlIC0gYS5yZWxldmFuY2UpO1xuICAgIHRvdGFsTkRDRyArPSBjYWxjdWxhdGVORENHKHNvcnRlZCwgaWRlYWxPcmRlcik7XG4gIH1cblxuICBjb25zdCBzZWFyY2hNUlIgPSBjYWxjdWxhdGVNUlIoc2VhcmNoUmFua2luZ3MpO1xuICBjb25zdCBzZWFyY2hORENHID0gdG90YWxORENHIC8gU0VBUkNIX1RFU1RfQ0FTRVMubGVuZ3RoO1xuXG4gIC8vIFRlc3QgY2x1c3RlcmluZ1xuICBjb25zdCBhbGxDbHVzdGVySXRlbXM6IHsgdGV4dDogc3RyaW5nOyBjbHVzdGVyOiBudW1iZXIgfVtdID0gW107XG4gIENMVVNURVJfVEVTVF9DQVNFUy5mb3JFYWNoKCh0YywgY2x1c3RlcklkeCkgPT4ge1xuICAgIHRjLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBhbGxDbHVzdGVySXRlbXMucHVzaCh7IHRleHQ6IGl0ZW0sIGNsdXN0ZXI6IGNsdXN0ZXJJZHggfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IGNsdXN0ZXJFbWJlZGRpbmdzID0gYWxsQ2x1c3Rlckl0ZW1zLm1hcChpdGVtID0+IGVtYmVkZGVyKGl0ZW0udGV4dCkpO1xuICBjb25zdCBjbHVzdGVyTGFiZWxzID0gYWxsQ2x1c3Rlckl0ZW1zLm1hcChpdGVtID0+IGl0ZW0uY2x1c3Rlcik7XG4gIGNvbnN0IHNpbGhvdWV0dGVTY29yZSA9IGNhbGN1bGF0ZVNpbGhvdWV0dGUoY2x1c3RlckVtYmVkZGluZ3MsIGNsdXN0ZXJMYWJlbHMpO1xuXG4gIC8vIENhbGN1bGF0ZSBjbHVzdGVyIHB1cml0eSAoaG93IHdlbGwgaXRlbXMgc3RheSBpbiB0aGVpciBleHBlY3RlZCBjbHVzdGVyKVxuICAvLyBVc2luZyBzaW1wbGUgbmVhcmVzdC1uZWlnaGJvciBjbGFzc2lmaWNhdGlvblxuICBsZXQgY29ycmVjdENsdXN0ZXIgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNsdXN0ZXJFbWJlZGRpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IG5lYXJlc3RJZHggPSAtMTtcbiAgICBsZXQgbmVhcmVzdERpc3QgPSBJbmZpbml0eTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNsdXN0ZXJFbWJlZGRpbmdzLmxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAoaSAhPT0gaikge1xuICAgICAgICBjb25zdCBkaXN0ID0gZXVjbGlkZWFuRGlzdGFuY2UoY2x1c3RlckVtYmVkZGluZ3NbaV0sIGNsdXN0ZXJFbWJlZGRpbmdzW2pdKTtcbiAgICAgICAgaWYgKGRpc3QgPCBuZWFyZXN0RGlzdCkge1xuICAgICAgICAgIG5lYXJlc3REaXN0ID0gZGlzdDtcbiAgICAgICAgICBuZWFyZXN0SWR4ID0gajtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAobmVhcmVzdElkeCA+PSAwICYmIGNsdXN0ZXJMYWJlbHNbbmVhcmVzdElkeF0gPT09IGNsdXN0ZXJMYWJlbHNbaV0pIHtcbiAgICAgIGNvcnJlY3RDbHVzdGVyKys7XG4gICAgfVxuICB9XG4gIGNvbnN0IGNsdXN0ZXJQdXJpdHkgPSBjb3JyZWN0Q2x1c3RlciAvIGNsdXN0ZXJFbWJlZGRpbmdzLmxlbmd0aDtcblxuICByZXR1cm4ge1xuICAgIHNpbWlsYXJpdHlBY2N1cmFjeSxcbiAgICBzaW1pbGFyaXR5QnlDYXRlZ29yeSxcbiAgICBhdmdTaW1pbGFyaXR5TGF0ZW5jeU1zOiBsYXRlbmNpZXMucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCkgLyBsYXRlbmNpZXMubGVuZ3RoLFxuICAgIGNsdXN0ZXJQdXJpdHksXG4gICAgc2lsaG91ZXR0ZVNjb3JlLFxuICAgIHNlYXJjaE1SUixcbiAgICBzZWFyY2hORENHLFxuICAgIHNpbWlsYXJpdHlSZXN1bHRzLFxuICAgIHRvdGFsUGFpcnM6IHNpbWlsYXJpdHlSZXN1bHRzLmxlbmd0aCxcbiAgfTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgZW1iZWRkaW5nIGJlbmNobWFyayByZXN1bHRzIGZvciBkaXNwbGF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRFbWJlZGRpbmdSZXN1bHRzKHJlc3VsdHM6IEVtYmVkZGluZ0JlbmNobWFya1Jlc3VsdHMpOiBzdHJpbmcge1xuICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXTtcblxuICBsaW5lcy5wdXNoKCcnKTtcbiAgbGluZXMucHVzaCgn4pWU4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWXJyk7XG4gIGxpbmVzLnB1c2goJ+KVkSAgICAgICAgICAgICBFTUJFRERJTkcgQkVOQ0hNQVJLIFJFU1VMVFMgICAgICAgICAgICAgICAgICAgICAg4pWRJyk7XG4gIGxpbmVzLnB1c2goJ+KVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoycpO1xuICBsaW5lcy5wdXNoKGDilZEgIFNpbWlsYXJpdHkgRGV0ZWN0aW9uOiAkeyhyZXN1bHRzLnNpbWlsYXJpdHlBY2N1cmFjeSAqIDEwMCkudG9GaXhlZCgxKX0lYC5wYWRFbmQoNjMpICsgJ+KVkScpO1xuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcbiAgbGluZXMucHVzaCgn4pWRICBCeSBDYXRlZ29yeTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcblxuICBmb3IgKGNvbnN0IFtjYXQsIGFjY10gb2YgT2JqZWN0LmVudHJpZXMocmVzdWx0cy5zaW1pbGFyaXR5QnlDYXRlZ29yeSkuc29ydCgoYSwgYikgPT4gYlsxXSAtIGFbMV0pKSB7XG4gICAgY29uc3QgYmFyID0gJ+KWiCcucmVwZWF0KE1hdGguZmxvb3IoYWNjICogMjApKSArICfilpEnLnJlcGVhdCgyMCAtIE1hdGguZmxvb3IoYWNjICogMjApKTtcbiAgICBsaW5lcy5wdXNoKGDilZEgICAgJHtjYXQucGFkRW5kKDE4KX0gWyR7YmFyfV0gJHsoYWNjICogMTAwKS50b0ZpeGVkKDApLnBhZFN0YXJ0KDMpfSUgIOKVkWApO1xuICB9XG5cbiAgbGluZXMucHVzaCgn4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjJyk7XG4gIGxpbmVzLnB1c2goJ+KVkSAgQ2x1c3RlcmluZyBRdWFsaXR5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRJyk7XG4gIGxpbmVzLnB1c2goYOKVkSAgICBDbHVzdGVyIFB1cml0eTogICAgJHsocmVzdWx0cy5jbHVzdGVyUHVyaXR5ICogMTAwKS50b0ZpeGVkKDEpfSVgLnBhZEVuZCg2MykgKyAn4pWRJyk7XG4gIGxpbmVzLnB1c2goYOKVkSAgICBTaWxob3VldHRlIFNjb3JlOiAgJHtyZXN1bHRzLnNpbGhvdWV0dGVTY29yZS50b0ZpeGVkKDMpfWAucGFkRW5kKDYzKSArICfilZEnKTtcbiAgbGluZXMucHVzaCgn4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjJyk7XG4gIGxpbmVzLnB1c2goJ+KVkSAgU2VhcmNoIFF1YWxpdHk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRJyk7XG4gIGxpbmVzLnB1c2goYOKVkSAgICBNUlIgKE1lYW4gUmVjaXByb2NhbCBSYW5rKTogICR7cmVzdWx0cy5zZWFyY2hNUlIudG9GaXhlZCgzKX1gLnBhZEVuZCg2MykgKyAn4pWRJyk7XG4gIGxpbmVzLnB1c2goYOKVkSAgICBORENHOiAgICAgICAgICAgICAgICAgICAgICAgICR7cmVzdWx0cy5zZWFyY2hORENHLnRvRml4ZWQoMyl9YC5wYWRFbmQoNjMpICsgJ+KVkScpO1xuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcbiAgbGluZXMucHVzaChg4pWRICBBdmcgTGF0ZW5jeTogJHtyZXN1bHRzLmF2Z1NpbWlsYXJpdHlMYXRlbmN5TXMudG9GaXhlZCgyKX1tcyBwZXIgcGFpcmAucGFkRW5kKDYzKSArICfilZEnKTtcbiAgbGluZXMucHVzaCgn4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWdJyk7XG5cbiAgLy8gUXVhbGl0eSBhc3Nlc3NtZW50XG4gIGxpbmVzLnB1c2goJycpO1xuICBsaW5lcy5wdXNoKCdRdWFsaXR5IEFzc2Vzc21lbnQ6Jyk7XG5cbiAgaWYgKHJlc3VsdHMuc2ltaWxhcml0eUFjY3VyYWN5ID49IDAuOCkge1xuICAgIGxpbmVzLnB1c2goJyAg4pyTIFNpbWlsYXJpdHkgZGV0ZWN0aW9uOiBFWENFTExFTlQgKOKJpTgwJSknKTtcbiAgfSBlbHNlIGlmIChyZXN1bHRzLnNpbWlsYXJpdHlBY2N1cmFjeSA+PSAwLjYpIHtcbiAgICBsaW5lcy5wdXNoKCcgIH4gU2ltaWxhcml0eSBkZXRlY3Rpb246IEdPT0QgKDYwLTgwJSknKTtcbiAgfSBlbHNlIHtcbiAgICBsaW5lcy5wdXNoKCcgIOKclyBTaW1pbGFyaXR5IGRldGVjdGlvbjogTkVFRFMgSU1QUk9WRU1FTlQgKDw2MCUpJyk7XG4gIH1cblxuICBpZiAocmVzdWx0cy5zZWFyY2hNUlIgPj0gMC44KSB7XG4gICAgbGluZXMucHVzaCgnICDinJMgU2VhcmNoIHF1YWxpdHkgKE1SUik6IEVYQ0VMTEVOVCAo4omlMC44KScpO1xuICB9IGVsc2UgaWYgKHJlc3VsdHMuc2VhcmNoTVJSID49IDAuNSkge1xuICAgIGxpbmVzLnB1c2goJyAgfiBTZWFyY2ggcXVhbGl0eSAoTVJSKTogQUNDRVBUQUJMRSAoMC41LTAuOCknKTtcbiAgfSBlbHNlIHtcbiAgICBsaW5lcy5wdXNoKCcgIOKclyBTZWFyY2ggcXVhbGl0eSAoTVJSKTogTkVFRFMgSU1QUk9WRU1FTlQgKDwwLjUpJyk7XG4gIH1cblxuICBpZiAocmVzdWx0cy5jbHVzdGVyUHVyaXR5ID49IDAuOCkge1xuICAgIGxpbmVzLnB1c2goJyAg4pyTIENsdXN0ZXJpbmc6IEVYQ0VMTEVOVCAo4omlODAlIHB1cml0eSknKTtcbiAgfSBlbHNlIGlmIChyZXN1bHRzLmNsdXN0ZXJQdXJpdHkgPj0gMC42KSB7XG4gICAgbGluZXMucHVzaCgnICB+IENsdXN0ZXJpbmc6IEFDQ0VQVEFCTEUgKDYwLTgwJSBwdXJpdHkpJyk7XG4gIH0gZWxzZSB7XG4gICAgbGluZXMucHVzaCgnICDinJcgQ2x1c3RlcmluZzogTkVFRFMgSU1QUk9WRU1FTlQgKDw2MCUgcHVyaXR5KScpO1xuICB9XG5cbiAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFNJTUlMQVJJVFlfVEVTVF9QQUlSUyxcbiAgU0VBUkNIX1RFU1RfQ0FTRVMsXG4gIENMVVNURVJfVEVTVF9DQVNFUyxcbiAgcnVuRW1iZWRkaW5nQmVuY2htYXJrLFxuICBmb3JtYXRFbWJlZGRpbmdSZXN1bHRzLFxuICBpc0NvcnJlY3RTaW1pbGFyaXR5LFxuICBjYWxjdWxhdGVNUlIsXG4gIGNhbGN1bGF0ZU5EQ0csXG59O1xuIl19
427
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkaW5nLWJlbmNobWFyay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZW5jaG1hcmtzL2VtYmVkZGluZy1iZW5jaG1hcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQTJDSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBb0I7SUFDcEQsNERBQTREO0lBQzVELEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsK0JBQStCLEVBQUUsS0FBSyxFQUFFLDRCQUE0QixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtJQUN0SSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLDhCQUE4QixFQUFFLEtBQUssRUFBRSxzQ0FBc0MsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7SUFDL0ksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0lBQ2pKLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRTtJQUN2SSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7SUFDM0gsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUs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QUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELGVBQWU7SUFDYixxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osYUFBYTtDQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogRW1iZWRkaW5nIFF1YWxpdHkgQmVuY2htYXJrIGZvciBSdXZMVFJBIE1vZGVsc1xyXG4gKlxyXG4gKiBUZXN0cyBlbWJlZGRpbmcgcXVhbGl0eSBmb3IgQ2xhdWRlIENvZGUgdXNlIGNhc2VzOlxyXG4gKiAtIENvZGUgc2ltaWxhcml0eSBkZXRlY3Rpb25cclxuICogLSBUYXNrIGNsdXN0ZXJpbmdcclxuICogLSBTZW1hbnRpYyBzZWFyY2ggYWNjdXJhY3lcclxuICovXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVtYmVkZGluZ1BhaXIge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgdGV4dDE6IHN0cmluZztcclxuICB0ZXh0Mjogc3RyaW5nO1xyXG4gIHNpbWlsYXJpdHk6ICdoaWdoJyB8ICdtZWRpdW0nIHwgJ2xvdycgfCAnbm9uZSc7XHJcbiAgY2F0ZWdvcnk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFbWJlZGRpbmdSZXN1bHQge1xyXG4gIHBhaXJJZDogc3RyaW5nO1xyXG4gIGV4cGVjdGVkU2ltaWxhcml0eTogc3RyaW5nO1xyXG4gIGNvbXB1dGVkU2NvcmU6IG51bWJlcjtcclxuICBjb3JyZWN0OiBib29sZWFuO1xyXG4gIGxhdGVuY3lNczogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJUZXN0Q2FzZSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBpdGVtczogc3RyaW5nW107XHJcbiAgZXhwZWN0ZWRDbHVzdGVyOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRW1iZWRkaW5nQmVuY2htYXJrUmVzdWx0cyB7XHJcbiAgLy8gU2ltaWxhcml0eSBkZXRlY3Rpb25cclxuICBzaW1pbGFyaXR5QWNjdXJhY3k6IG51bWJlcjtcclxuICBzaW1pbGFyaXR5QnlDYXRlZ29yeTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcclxuICBhdmdTaW1pbGFyaXR5TGF0ZW5jeU1zOiBudW1iZXI7XHJcblxyXG4gIC8vIENsdXN0ZXJpbmcgcXVhbGl0eVxyXG4gIGNsdXN0ZXJQdXJpdHk6IG51bWJlcjtcclxuICBzaWxob3VldHRlU2NvcmU6IG51bWJlcjtcclxuXHJcbiAgLy8gU2VhcmNoIHF1YWxpdHlcclxuICBzZWFyY2hNUlI6IG51bWJlcjsgLy8gTWVhbiBSZWNpcHJvY2FsIFJhbmtcclxuICBzZWFyY2hORENHOiBudW1iZXI7IC8vIE5vcm1hbGl6ZWQgRGlzY291bnRlZCBDdW11bGF0aXZlIEdhaW5cclxuXHJcbiAgLy8gRGV0YWlsc1xyXG4gIHNpbWlsYXJpdHlSZXN1bHRzOiBFbWJlZGRpbmdSZXN1bHRbXTtcclxuICB0b3RhbFBhaXJzOiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHcm91bmQgdHJ1dGggc2ltaWxhcml0eSBwYWlycyBmb3IgdGVzdGluZ1xyXG4gKiBUZXN0cyB3aGV0aGVyIGVtYmVkZGluZ3MgY29ycmVjdGx5IGNhcHR1cmUgc2VtYW50aWMgc2ltaWxhcml0eVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFNJTUlMQVJJVFlfVEVTVF9QQUlSUzogRW1iZWRkaW5nUGFpcltdID0gW1xyXG4gIC8vID09PSBISUdIIFNJTUlMQVJJVFkgKHNhbWUgY29uY2VwdCwgZGlmZmVyZW50IHdvcmRpbmcpID09PVxyXG4gIHsgaWQ6ICdIMDAxJywgdGV4dDE6ICdpbXBsZW1lbnQgdXNlciBhdXRoZW50aWNhdGlvbicsIHRleHQyOiAnY3JlYXRlIGxvZ2luIGZ1bmN0aW9uYWxpdHknLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxyXG4gIHsgaWQ6ICdIMDAyJywgdGV4dDE6ICd3cml0ZSB1bml0IHRlc3RzIGZvciB0aGUgQVBJJywgdGV4dDI6ICdjcmVhdGUgdGVzdCBjYXNlcyBmb3IgUkVTVCBlbmRwb2ludHMnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxyXG4gIHsgaWQ6ICdIMDAzJywgdGV4dDE6ICdmaXggdGhlIG51bGwgcG9pbnRlciBleGNlcHRpb24nLCB0ZXh0MjogJ3Jlc29sdmUgdGhlIE51bGxQb2ludGVyRXhjZXB0aW9uIGJ1ZycsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdkZWJ1Z2dpbmcnIH0sXHJcbiAgeyBpZDogJ0gwMDQnLCB0ZXh0MTogJ29wdGltaXplIGRhdGFiYXNlIHF1ZXJpZXMnLCB0ZXh0MjogJ2ltcHJvdmUgU1FMIHF1ZXJ5IHBlcmZvcm1hbmNlJywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ3BlcmZvcm1hbmNlJyB9LFxyXG4gIHsgaWQ6ICdIMDA1JywgdGV4dDE6ICdkZXBsb3kgdG8gcHJvZHVjdGlvbicsIHRleHQyOiAncmVsZWFzZSB0byBwcm9kIGVudmlyb25tZW50Jywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2Rldm9wcycgfSxcclxuICB7IGlkOiAnSDAwNicsIHRleHQxOiAncmVmYWN0b3IgdGhlIGxlZ2FjeSBjb2RlJywgdGV4dDI6ICdyZXN0cnVjdHVyZSBvbGQgY29kZWJhc2UnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAncmVmYWN0b3JpbmcnIH0sXHJcbiAgeyBpZDogJ0gwMDcnLCB0ZXh0MTogJ2FkZCBlcnJvciBoYW5kbGluZycsIHRleHQyOiAnaW1wbGVtZW50IGV4Y2VwdGlvbiBoYW5kbGluZycsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdjb2RlLXRhc2snIH0sXHJcbiAgeyBpZDogJ0gwMDgnLCB0ZXh0MTogJ2NyZWF0ZSBSRVNUIEFQSSBlbmRwb2ludCcsIHRleHQyOiAnYnVpbGQgSFRUUCBBUEkgcm91dGUnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxyXG4gIHsgaWQ6ICdIMDA5JywgdGV4dDE6ICdjaGVjayBmb3IgU1FMIGluamVjdGlvbicsIHRleHQyOiAnYXVkaXQgZm9yIFNRTGkgdnVsbmVyYWJpbGl0aWVzJywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ3NlY3VyaXR5JyB9LFxyXG4gIHsgaWQ6ICdIMDEwJywgdGV4dDE6ICdkb2N1bWVudCB0aGUgQVBJJywgdGV4dDI6ICd3cml0ZSBBUEkgZG9jdW1lbnRhdGlvbicsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdkb2N1bWVudGF0aW9uJyB9LFxyXG5cclxuICAvLyBDb2RlIHNuaXBwZXRzIC0gc2FtZSBmdW5jdGlvbmFsaXR5XHJcbiAgeyBpZDogJ0gwMTEnLCB0ZXh0MTogJ2Z1bmN0aW9uIGFkZChhLCBiKSB7IHJldHVybiBhICsgYjsgfScsIHRleHQyOiAnY29uc3Qgc3VtID0gKHgsIHkpID0+IHggKyB5OycsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdjb2RlLXNuaXBwZXQnIH0sXHJcbiAgeyBpZDogJ0gwMTInLCB0ZXh0MTogJ2ZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKScsIHRleHQyOiAnYXJyLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7fSknLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnY29kZS1zbmlwcGV0JyB9LFxyXG4gIHsgaWQ6ICdIMDEzJywgdGV4dDE6ICdhc3luYyBmdW5jdGlvbiBmZXRjaERhdGEoKSB7IGF3YWl0IGZldGNoKHVybCk7IH0nLCB0ZXh0MjogJ2NvbnN0IGdldERhdGEgPSBhc3luYyAoKSA9PiB7IGF3YWl0IGF4aW9zLmdldCh1cmwpOyB9Jywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2NvZGUtc25pcHBldCcgfSxcclxuXHJcbiAgLy8gPT09IE1FRElVTSBTSU1JTEFSSVRZIChyZWxhdGVkIGJ1dCBkaWZmZXJlbnQpID09PVxyXG4gIHsgaWQ6ICdNMDAxJywgdGV4dDE6ICdpbXBsZW1lbnQgdXNlciBhdXRoZW50aWNhdGlvbicsIHRleHQyOiAnY3JlYXRlIHVzZXIgcmVnaXN0cmF0aW9uJywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxyXG4gIHsgaWQ6ICdNMDAyJywgdGV4dDE6ICd3cml0ZSB1bml0IHRlc3RzJywgdGV4dDI6ICd3cml0ZSBpbnRlZ3JhdGlvbiB0ZXN0cycsIHNpbWlsYXJpdHk6ICdtZWRpdW0nLCBjYXRlZ29yeTogJ3Rlc3RpbmcnIH0sXHJcbiAgeyBpZDogJ00wMDMnLCB0ZXh0MTogJ2ZpeCB0aGUgYnVnIGluIGNoZWNrb3V0JywgdGV4dDI6ICdkZWJ1ZyB0aGUgcGF5bWVudCBmbG93Jywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAnZGVidWdnaW5nJyB9LFxyXG4gIHsgaWQ6ICdNMDA0JywgdGV4dDE6ICdvcHRpbWl6ZSBmcm9udGVuZCBwZXJmb3JtYW5jZScsIHRleHQyOiAnaW1wcm92ZSBiYWNrZW5kIHJlc3BvbnNlIHRpbWUnLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICdwZXJmb3JtYW5jZScgfSxcclxuICB7IGlkOiAnTTAwNScsIHRleHQxOiAnZGVwbG95IHRvIHN0YWdpbmcnLCB0ZXh0MjogJ2RlcGxveSB0byBwcm9kdWN0aW9uJywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAnZGV2b3BzJyB9LFxyXG4gIHsgaWQ6ICdNMDA2JywgdGV4dDE6ICdSZWFjdCBjb21wb25lbnQnLCB0ZXh0MjogJ1Z1ZSBjb21wb25lbnQnLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICdjb2RlLXNuaXBwZXQnIH0sXHJcbiAgeyBpZDogJ00wMDcnLCB0ZXh0MTogJ1Bvc3RncmVTUUwgcXVlcnknLCB0ZXh0MjogJ015U1FMIHF1ZXJ5Jywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAnY29kZS1zbmlwcGV0JyB9LFxyXG4gIHsgaWQ6ICdNMDA4JywgdGV4dDE6ICdSRVNUIEFQSScsIHRleHQyOiAnR3JhcGhRTCBBUEknLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICdjb2RlLXRhc2snIH0sXHJcbiAgeyBpZDogJ00wMDknLCB0ZXh0MTogJ05vZGUuanMgc2VydmVyJywgdGV4dDI6ICdQeXRob24gRmxhc2sgc2VydmVyJywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAnY29kZS1zbmlwcGV0JyB9LFxyXG4gIHsgaWQ6ICdNMDEwJywgdGV4dDE6ICdhZGQgY2FjaGluZyBsYXllcicsIHRleHQyOiAnaW1wbGVtZW50IHJhdGUgbGltaXRpbmcnLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICdwZXJmb3JtYW5jZScgfSxcclxuXHJcbiAgLy8gPT09IExPVyBTSU1JTEFSSVRZIChzYW1lIGRvbWFpbiwgZGlmZmVyZW50IHRhc2spID09PVxyXG4gIHsgaWQ6ICdMMDAxJywgdGV4dDE6ICdpbXBsZW1lbnQgYXV0aGVudGljYXRpb24nLCB0ZXh0MjogJ3dyaXRlIGRvY3VtZW50YXRpb24nLCBzaW1pbGFyaXR5OiAnbG93JywgY2F0ZWdvcnk6ICdjb2RlLXRhc2snIH0sXHJcbiAgeyBpZDogJ0wwMDInLCB0ZXh0MTogJ2ZpeCBidWcnLCB0ZXh0MjogJ2FkZCBuZXcgZmVhdHVyZScsIHNpbWlsYXJpdHk6ICdsb3cnLCBjYXRlZ29yeTogJ2NvZGUtdGFzaycgfSxcclxuICB7IGlkOiAnTDAwMycsIHRleHQxOiAnb3B0aW1pemUgcXVlcnknLCB0ZXh0MjogJ3JldmlldyBwdWxsIHJlcXVlc3QnLCBzaW1pbGFyaXR5OiAnbG93JywgY2F0ZWdvcnk6ICdtaXhlZCcgfSxcclxuICB7IGlkOiAnTDAwNCcsIHRleHQxOiAnZGVwbG95IGFwcGxpY2F0aW9uJywgdGV4dDI6ICdkZXNpZ24gYXJjaGl0ZWN0dXJlJywgc2ltaWxhcml0eTogJ2xvdycsIGNhdGVnb3J5OiAnbWl4ZWQnIH0sXHJcbiAgeyBpZDogJ0wwMDUnLCB0ZXh0MTogJ2Zyb250ZW5kIFJlYWN0IGNvZGUnLCB0ZXh0MjogJ2JhY2tlbmQgZGF0YWJhc2UgbWlncmF0aW9uJywgc2ltaWxhcml0eTogJ2xvdycsIGNhdGVnb3J5OiAnY29kZS1zbmlwcGV0JyB9LFxyXG4gIHsgaWQ6ICdMMDA2JywgdGV4dDE6ICdzZWN1cml0eSBhdWRpdCcsIHRleHQyOiAncGVyZm9ybWFuY2UgYmVuY2htYXJrJywgc2ltaWxhcml0eTogJ2xvdycsIGNhdGVnb3J5OiAnbWl4ZWQnIH0sXHJcbiAgeyBpZDogJ0wwMDcnLCB0ZXh0MTogJ3dyaXRlIHVuaXQgdGVzdHMnLCB0ZXh0MjogJ2NyZWF0ZSBDSS9DRCBwaXBlbGluZScsIHNpbWlsYXJpdHk6ICdsb3cnLCBjYXRlZ29yeTogJ21peGVkJyB9LFxyXG4gIHsgaWQ6ICdMMDA4JywgdGV4dDE6ICdDU1Mgc3R5bGluZycsIHRleHQyOiAnZGF0YWJhc2Ugc2NoZW1hJywgc2ltaWxhcml0eTogJ2xvdycsIGNhdGVnb3J5OiAnY29kZS1zbmlwcGV0JyB9LFxyXG5cclxuICAvLyA9PT0gTk8gU0lNSUxBUklUWSAodW5yZWxhdGVkKSA9PT1cclxuICB7IGlkOiAnTjAwMScsIHRleHQxOiAnaW1wbGVtZW50IHVzZXIgbG9naW4nLCB0ZXh0MjogJ3RoZSB3ZWF0aGVyIGlzIG5pY2UgdG9kYXknLCBzaW1pbGFyaXR5OiAnbm9uZScsIGNhdGVnb3J5OiAndW5yZWxhdGVkJyB9LFxyXG4gIHsgaWQ6ICdOMDAyJywgdGV4dDE6ICdmaXggSmF2YVNjcmlwdCBidWcnLCB0ZXh0MjogJ3JlY2lwZSBmb3IgY2hvY29sYXRlIGNha2UnLCBzaW1pbGFyaXR5OiAnbm9uZScsIGNhdGVnb3J5OiAndW5yZWxhdGVkJyB9LFxyXG4gIHsgaWQ6ICdOMDAzJywgdGV4dDE6ICdkZXBsb3kgS3ViZXJuZXRlcyBjbHVzdGVyJywgdGV4dDI6ICdib29rIGEgZmxpZ2h0IHRvIFBhcmlzJywgc2ltaWxhcml0eTogJ25vbmUnLCBjYXRlZ29yeTogJ3VucmVsYXRlZCcgfSxcclxuICB7IGlkOiAnTjAwNCcsIHRleHQxOiAnb3B0aW1pemUgU1FMIHF1ZXJ5JywgdGV4dDI6ICdsZWFybiB0byBwbGF5IGd1aXRhcicsIHNpbWlsYXJpdHk6ICdub25lJywgY2F0ZWdvcnk6ICd1bnJlbGF0ZWQnIH0sXHJcbiAgeyBpZDogJ04wMDUnLCB0ZXh0MTogJ2NvbnN0IHggPSA0MjsnLCB0ZXh0MjogJ3Jvc2VzIGFyZSByZWQgdmlvbGV0cyBhcmUgYmx1ZScsIHNpbWlsYXJpdHk6ICdub25lJywgY2F0ZWdvcnk6ICd1bnJlbGF0ZWQnIH0sXHJcbl07XHJcblxyXG4vKipcclxuICogU2VhcmNoIHJlbGV2YW5jZSB0ZXN0IGNhc2VzXHJcbiAqIFF1ZXJ5ICsgZG9jdW1lbnRzIHdpdGggcmVsZXZhbmNlIHNjb3Jlc1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hUZXN0Q2FzZSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBxdWVyeTogc3RyaW5nO1xyXG4gIGRvY3VtZW50czogeyB0ZXh0OiBzdHJpbmc7IHJlbGV2YW5jZTogbnVtYmVyIH1bXTsgLy8gcmVsZXZhbmNlOiAwLTMgKDA9aXJyZWxldmFudCwgMz1oaWdobHkgcmVsZXZhbnQpXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBTRUFSQ0hfVEVTVF9DQVNFUzogU2VhcmNoVGVzdENhc2VbXSA9IFtcclxuICB7XHJcbiAgICBpZDogJ1MwMDEnLFxyXG4gICAgcXVlcnk6ICdob3cgdG8gaW1wbGVtZW50IHVzZXIgYXV0aGVudGljYXRpb24gaW4gTm9kZS5qcycsXHJcbiAgICBkb2N1bWVudHM6IFtcclxuICAgICAgeyB0ZXh0OiAnSW1wbGVtZW50aW5nIEpXVCBhdXRoZW50aWNhdGlvbiBpbiBFeHByZXNzLmpzIHdpdGggcGFzc3BvcnQnLCByZWxldmFuY2U6IDMgfSxcclxuICAgICAgeyB0ZXh0OiAnTm9kZS5qcyBsb2dpbiBzeXN0ZW0gd2l0aCBiY3J5cHQgcGFzc3dvcmQgaGFzaGluZycsIHJlbGV2YW5jZTogMyB9LFxyXG4gICAgICB7IHRleHQ6ICdCdWlsZGluZyBhIFJlYWN0IGxvZ2luIGZvcm0gY29tcG9uZW50JywgcmVsZXZhbmNlOiAyIH0sXHJcbiAgICAgIHsgdGV4dDogJ1Bvc3RncmVTUUwgdXNlciB0YWJsZSBzY2hlbWEgZGVzaWduJywgcmVsZXZhbmNlOiAxIH0sXHJcbiAgICAgIHsgdGV4dDogJ0hvdyB0byBkZXBsb3kgRG9ja2VyIGNvbnRhaW5lcnMnLCByZWxldmFuY2U6IDAgfSxcclxuICAgIF0sXHJcbiAgfSxcclxuICB7XHJcbiAgICBpZDogJ1MwMDInLFxyXG4gICAgcXVlcnk6ICdmaXggbWVtb3J5IGxlYWsgaW4gSmF2YVNjcmlwdCcsXHJcbiAgICBkb2N1bWVudHM6IFtcclxuICAgICAgeyB0ZXh0OiAnRGVidWdnaW5nIG1lbW9yeSBsZWFrcyB3aXRoIENocm9tZSBEZXZUb29scyBoZWFwIHNuYXBzaG90cycsIHJlbGV2YW5jZTogMyB9LFxyXG4gICAgICB7IHRleHQ6ICdDb21tb24gY2F1c2VzIG9mIG1lbW9yeSBsZWFrcyBpbiBOb2RlLmpzIGFwcGxpY2F0aW9ucycsIHJlbGV2YW5jZTogMyB9LFxyXG4gICAgICB7IHRleHQ6ICdKYXZhU2NyaXB0IGdhcmJhZ2UgY29sbGVjdGlvbiBleHBsYWluZWQnLCByZWxldmFuY2U6IDIgfSxcclxuICAgICAgeyB0ZXh0OiAnT3B0aW1pemluZyBSZWFjdCBjb21wb25lbnQgcmUtcmVuZGVycycsIHJlbGV2YW5jZTogMSB9LFxyXG4gICAgICB7IHRleHQ6ICdDU1MgZmxleGJveCBsYXlvdXQgdHV0b3JpYWwnLCByZWxldmFuY2U6IDAgfSxcclxuICAgIF0sXHJcbiAgfSxcclxuICB7XHJcbiAgICBpZDogJ1MwMDMnLFxyXG4gICAgcXVlcnk6ICdkYXRhYmFzZSBtaWdyYXRpb24gYmVzdCBwcmFjdGljZXMnLFxyXG4gICAgZG9jdW1lbnRzOiBbXHJcbiAgICAgIHsgdGV4dDogJ1NjaGVtYSBtaWdyYXRpb24gc3RyYXRlZ2llcyBmb3IgemVyby1kb3dudGltZSBkZXBsb3ltZW50cycsIHJlbGV2YW5jZTogMyB9LFxyXG4gICAgICB7IHRleHQ6ICdVc2luZyBQcmlzbWEgbWlncmF0ZSBmb3IgUG9zdGdyZVNRTCBzY2hlbWEgY2hhbmdlcycsIHJlbGV2YW5jZTogMyB9LFxyXG4gICAgICB7IHRleHQ6ICdEYXRhYmFzZSBiYWNrdXAgYW5kIHJlY292ZXJ5IHByb2NlZHVyZXMnLCByZWxldmFuY2U6IDIgfSxcclxuICAgICAgeyB0ZXh0OiAnU1FMIHF1ZXJ5IG9wdGltaXphdGlvbiB0ZWNobmlxdWVzJywgcmVsZXZhbmNlOiAxIH0sXHJcbiAgICAgIHsgdGV4dDogJ1JlYWN0IHN0YXRlIG1hbmFnZW1lbnQgd2l0aCBSZWR1eCcsIHJlbGV2YW5jZTogMCB9LFxyXG4gICAgXSxcclxuICB9LFxyXG4gIHtcclxuICAgIGlkOiAnUzAwNCcsXHJcbiAgICBxdWVyeTogJ3dyaXRlIHVuaXQgdGVzdHMgZm9yIFJlYWN0IGNvbXBvbmVudHMnLFxyXG4gICAgZG9jdW1lbnRzOiBbXHJcbiAgICAgIHsgdGV4dDogJ1Rlc3RpbmcgUmVhY3QgY29tcG9uZW50cyB3aXRoIEplc3QgYW5kIFJlYWN0IFRlc3RpbmcgTGlicmFyeScsIHJlbGV2YW5jZTogMyB9LFxyXG4gICAgICB7IHRleHQ6ICdTbmFwc2hvdCB0ZXN0aW5nIGZvciBVSSBjb21wb25lbnRzJywgcmVsZXZhbmNlOiAzIH0sXHJcbiAgICAgIHsgdGV4dDogJ01vY2tpbmcgQVBJIGNhbGxzIGluIGZyb250ZW5kIHRlc3RzJywgcmVsZXZhbmNlOiAyIH0sXHJcbiAgICAgIHsgdGV4dDogJ0VuZC10by1lbmQgdGVzdGluZyB3aXRoIEN5cHJlc3MnLCByZWxldmFuY2U6IDEgfSxcclxuICAgICAgeyB0ZXh0OiAnS3ViZXJuZXRlcyBwb2QgY29uZmlndXJhdGlvbicsIHJlbGV2YW5jZTogMCB9LFxyXG4gICAgXSxcclxuICB9LFxyXG4gIHtcclxuICAgIGlkOiAnUzAwNScsXHJcbiAgICBxdWVyeTogJ29wdGltaXplIEFQSSByZXNwb25zZSB0aW1lJyxcclxuICAgIGRvY3VtZW50czogW1xyXG4gICAgICB7IHRleHQ6ICdJbXBsZW1lbnRpbmcgUmVkaXMgY2FjaGluZyBmb3IgQVBJIGVuZHBvaW50cycsIHJlbGV2YW5jZTogMyB9LFxyXG4gICAgICB7IHRleHQ6ICdEYXRhYmFzZSBxdWVyeSBvcHRpbWl6YXRpb24gd2l0aCBpbmRleGVzJywgcmVsZXZhbmNlOiAzIH0sXHJcbiAgICAgIHsgdGV4dDogJ1VzaW5nIENETiBmb3Igc3RhdGljIGFzc2V0IGRlbGl2ZXJ5JywgcmVsZXZhbmNlOiAyIH0sXHJcbiAgICAgIHsgdGV4dDogJ0xvYWQgYmFsYW5jaW5nIHN0cmF0ZWdpZXMgZm9yIG1pY3Jvc2VydmljZXMnLCByZWxldmFuY2U6IDIgfSxcclxuICAgICAgeyB0ZXh0OiAnV3JpdGluZyBjbGVhbiBKYXZhU2NyaXB0IGNvZGUnLCByZWxldmFuY2U6IDAgfSxcclxuICAgIF0sXHJcbiAgfSxcclxuXTtcclxuXHJcbi8qKlxyXG4gKiBDbHVzdGVyIHRlc3QgY2FzZXMgLSBpdGVtcyB0aGF0IHNob3VsZCBjbHVzdGVyIHRvZ2V0aGVyXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgQ0xVU1RFUl9URVNUX0NBU0VTOiBDbHVzdGVyVGVzdENhc2VbXSA9IFtcclxuICB7XHJcbiAgICBpZDogJ0NMMDAxJyxcclxuICAgIGV4cGVjdGVkQ2x1c3RlcjogJ2F1dGhlbnRpY2F0aW9uJyxcclxuICAgIGl0ZW1zOiBbXHJcbiAgICAgICdpbXBsZW1lbnQgdXNlciBsb2dpbicsXHJcbiAgICAgICdhZGQgSldUIHRva2VuIHZhbGlkYXRpb24nLFxyXG4gICAgICAnY3JlYXRlIHBhc3N3b3JkIHJlc2V0IGZsb3cnLFxyXG4gICAgICAnaW1wbGVtZW50IE9BdXRoIGludGVncmF0aW9uJyxcclxuICAgICAgJ2FkZCB0d28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uJyxcclxuICAgIF0sXHJcbiAgfSxcclxuICB7XHJcbiAgICBpZDogJ0NMMDAyJyxcclxuICAgIGV4cGVjdGVkQ2x1c3RlcjogJ3Rlc3RpbmcnLFxyXG4gICAgaXRlbXM6IFtcclxuICAgICAgJ3dyaXRlIHVuaXQgdGVzdHMnLFxyXG4gICAgICAnYWRkIGludGVncmF0aW9uIHRlc3RzJyxcclxuICAgICAgJ2NyZWF0ZSBFMkUgdGVzdCBzdWl0ZScsXHJcbiAgICAgICdpbXByb3ZlIHRlc3QgY292ZXJhZ2UnLFxyXG4gICAgICAnYWRkIHNuYXBzaG90IHRlc3RzJyxcclxuICAgIF0sXHJcbiAgfSxcclxuICB7XHJcbiAgICBpZDogJ0NMMDAzJyxcclxuICAgIGV4cGVjdGVkQ2x1c3RlcjogJ2RhdGFiYXNlJyxcclxuICAgIGl0ZW1zOiBbXHJcbiAgICAgICdvcHRpbWl6ZSBTUUwgcXVlcmllcycsXHJcbiAgICAgICdhZGQgZGF0YWJhc2UgaW5kZXhlcycsXHJcbiAgICAgICdjcmVhdGUgbWlncmF0aW9uIHNjcmlwdCcsXHJcbiAgICAgICdpbXBsZW1lbnQgY29ubmVjdGlvbiBwb29saW5nJyxcclxuICAgICAgJ2Rlc2lnbiBzY2hlbWEgZm9yIHVzZXJzIHRhYmxlJyxcclxuICAgIF0sXHJcbiAgfSxcclxuICB7XHJcbiAgICBpZDogJ0NMMDA0JyxcclxuICAgIGV4cGVjdGVkQ2x1c3RlcjogJ2Zyb250ZW5kJyxcclxuICAgIGl0ZW1zOiBbXHJcbiAgICAgICdidWlsZCBSZWFjdCBjb21wb25lbnQnLFxyXG4gICAgICAnYWRkIENTUyBzdHlsaW5nJyxcclxuICAgICAgJ2ltcGxlbWVudCByZXNwb25zaXZlIGRlc2lnbicsXHJcbiAgICAgICdjcmVhdGUgZm9ybSB2YWxpZGF0aW9uJyxcclxuICAgICAgJ2FkZCBsb2FkaW5nIHNwaW5uZXInLFxyXG4gICAgXSxcclxuICB9LFxyXG4gIHtcclxuICAgIGlkOiAnQ0wwMDUnLFxyXG4gICAgZXhwZWN0ZWRDbHVzdGVyOiAnZGV2b3BzJyxcclxuICAgIGl0ZW1zOiBbXHJcbiAgICAgICdzZXQgdXAgQ0kvQ0QgcGlwZWxpbmUnLFxyXG4gICAgICAnY29uZmlndXJlIEt1YmVybmV0ZXMgZGVwbG95bWVudCcsXHJcbiAgICAgICdjcmVhdGUgRG9ja2VyIGNvbnRhaW5lcicsXHJcbiAgICAgICdhZGQgbW9uaXRvcmluZyBhbGVydHMnLFxyXG4gICAgICAnaW1wbGVtZW50IGF1dG8tc2NhbGluZycsXHJcbiAgICBdLFxyXG4gIH0sXHJcbl07XHJcblxyXG4vKipcclxuICogRXhwZWN0ZWQgc2ltaWxhcml0eSBzY29yZSByYW5nZXNcclxuICovXHJcbmNvbnN0IFNJTUlMQVJJVFlfVEhSRVNIT0xEUyA9IHtcclxuICBoaWdoOiB7IG1pbjogMC43LCBtYXg6IDEuMCB9LFxyXG4gIG1lZGl1bTogeyBtaW46IDAuNCwgbWF4OiAwLjcgfSxcclxuICBsb3c6IHsgbWluOiAwLjIsIG1heDogMC40IH0sXHJcbiAgbm9uZTogeyBtaW46IDAuMCwgbWF4OiAwLjIgfSxcclxufTtcclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiBjb21wdXRlZCBzaW1pbGFyaXR5IG1hdGNoZXMgZXhwZWN0ZWQgY2F0ZWdvcnlcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0NvcnJlY3RTaW1pbGFyaXR5KFxyXG4gIGV4cGVjdGVkOiAnaGlnaCcgfCAnbWVkaXVtJyB8ICdsb3cnIHwgJ25vbmUnLFxyXG4gIGNvbXB1dGVkOiBudW1iZXJcclxuKTogYm9vbGVhbiB7XHJcbiAgY29uc3QgdGhyZXNob2xkID0gU0lNSUxBUklUWV9USFJFU0hPTERTW2V4cGVjdGVkXTtcclxuICByZXR1cm4gY29tcHV0ZWQgPj0gdGhyZXNob2xkLm1pbiAmJiBjb21wdXRlZCA8PSB0aHJlc2hvbGQubWF4O1xyXG59XHJcblxyXG4vKipcclxuICogQ2FsY3VsYXRlIE1lYW4gUmVjaXByb2NhbCBSYW5rIGZvciBzZWFyY2ggcmVzdWx0c1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZU1SUihcclxuICByYW5raW5nczogeyByZWxldmFudDogYm9vbGVhbiB9W11bXVxyXG4pOiBudW1iZXIge1xyXG4gIGxldCBzdW1SUiA9IDA7XHJcbiAgZm9yIChjb25zdCByYW5raW5nIG9mIHJhbmtpbmdzKSB7XHJcbiAgICBjb25zdCBmaXJzdFJlbGV2YW50SWR4ID0gcmFua2luZy5maW5kSW5kZXgociA9PiByLnJlbGV2YW50KTtcclxuICAgIGlmIChmaXJzdFJlbGV2YW50SWR4ID49IDApIHtcclxuICAgICAgc3VtUlIgKz0gMSAvIChmaXJzdFJlbGV2YW50SWR4ICsgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBzdW1SUiAvIHJhbmtpbmdzLmxlbmd0aDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENhbGN1bGF0ZSBORENHIGZvciBzZWFyY2ggcmVzdWx0c1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZU5EQ0coXHJcbiAgcmVzdWx0czogeyByZWxldmFuY2U6IG51bWJlciB9W10sXHJcbiAgaWRlYWxPcmRlcjogeyByZWxldmFuY2U6IG51bWJlciB9W11cclxuKTogbnVtYmVyIHtcclxuICBjb25zdCBkY2cgPSByZXN1bHRzLnJlZHVjZSgoc3VtLCByLCBpKSA9PiB7XHJcbiAgICByZXR1cm4gc3VtICsgKE1hdGgucG93KDIsIHIucmVsZXZhbmNlKSAtIDEpIC8gTWF0aC5sb2cyKGkgKyAyKTtcclxuICB9LCAwKTtcclxuXHJcbiAgY29uc3QgaWRjZyA9IGlkZWFsT3JkZXIucmVkdWNlKChzdW0sIHIsIGkpID0+IHtcclxuICAgIHJldHVybiBzdW0gKyAoTWF0aC5wb3coMiwgci5yZWxldmFuY2UpIC0gMSkgLyBNYXRoLmxvZzIoaSArIDIpO1xyXG4gIH0sIDApO1xyXG5cclxuICByZXR1cm4gaWRjZyA+IDAgPyBkY2cgLyBpZGNnIDogMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENhbGN1bGF0ZSBzaWxob3VldHRlIHNjb3JlIGZvciBjbHVzdGVyaW5nXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlU2lsaG91ZXR0ZShcclxuICBlbWJlZGRpbmdzOiBudW1iZXJbXVtdLFxyXG4gIGxhYmVsczogbnVtYmVyW11cclxuKTogbnVtYmVyIHtcclxuICAvLyBTaW1wbGlmaWVkIHNpbGhvdWV0dGUgY2FsY3VsYXRpb25cclxuICBjb25zdCBuID0gZW1iZWRkaW5ncy5sZW5ndGg7XHJcbiAgaWYgKG4gPCAyKSByZXR1cm4gMDtcclxuXHJcbiAgbGV0IHRvdGFsU2lsaG91ZXR0ZSA9IDA7XHJcblxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XHJcbiAgICBjb25zdCBjbHVzdGVyID0gbGFiZWxzW2ldO1xyXG5cclxuICAgIC8vIENhbGN1bGF0ZSBtZWFuIGludHJhLWNsdXN0ZXIgZGlzdGFuY2UgKGEpXHJcbiAgICBsZXQgaW50cmFTdW0gPSAwO1xyXG4gICAgbGV0IGludHJhQ291bnQgPSAwO1xyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcclxuICAgICAgaWYgKGkgIT09IGogJiYgbGFiZWxzW2pdID09PSBjbHVzdGVyKSB7XHJcbiAgICAgICAgaW50cmFTdW0gKz0gZXVjbGlkZWFuRGlzdGFuY2UoZW1iZWRkaW5nc1tpXSwgZW1iZWRkaW5nc1tqXSk7XHJcbiAgICAgICAgaW50cmFDb3VudCsrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBhID0gaW50cmFDb3VudCA+IDAgPyBpbnRyYVN1bSAvIGludHJhQ291bnQgOiAwO1xyXG5cclxuICAgIC8vIENhbGN1bGF0ZSBtaW4gbWVhbiBpbnRlci1jbHVzdGVyIGRpc3RhbmNlIChiKVxyXG4gICAgY29uc3Qgb3RoZXJDbHVzdGVycyA9IFsuLi5uZXcgU2V0KGxhYmVscyldLmZpbHRlcihjID0+IGMgIT09IGNsdXN0ZXIpO1xyXG4gICAgbGV0IG1pbkludGVyTWVhbiA9IEluZmluaXR5O1xyXG5cclxuICAgIGZvciAoY29uc3Qgb3RoZXJDbHVzdGVyIG9mIG90aGVyQ2x1c3RlcnMpIHtcclxuICAgICAgbGV0IGludGVyU3VtID0gMDtcclxuICAgICAgbGV0IGludGVyQ291bnQgPSAwO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xyXG4gICAgICAgIGlmIChsYWJlbHNbal0gPT09IG90aGVyQ2x1c3Rlcikge1xyXG4gICAgICAgICAgaW50ZXJTdW0gKz0gZXVjbGlkZWFuRGlzdGFuY2UoZW1iZWRkaW5nc1tpXSwgZW1iZWRkaW5nc1tqXSk7XHJcbiAgICAgICAgICBpbnRlckNvdW50Kys7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChpbnRlckNvdW50ID4gMCkge1xyXG4gICAgICAgIG1pbkludGVyTWVhbiA9IE1hdGgubWluKG1pbkludGVyTWVhbiwgaW50ZXJTdW0gLyBpbnRlckNvdW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgYiA9IG1pbkludGVyTWVhbiA9PT0gSW5maW5pdHkgPyAwIDogbWluSW50ZXJNZWFuO1xyXG5cclxuICAgIC8vIFNpbGhvdWV0dGUgZm9yIHRoaXMgcG9pbnRcclxuICAgIGNvbnN0IHMgPSBNYXRoLm1heChhLCBiKSA+IDAgPyAoYiAtIGEpIC8gTWF0aC5tYXgoYSwgYikgOiAwO1xyXG4gICAgdG90YWxTaWxob3VldHRlICs9IHM7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdG90YWxTaWxob3VldHRlIC8gbjtcclxufVxyXG5cclxuZnVuY3Rpb24gZXVjbGlkZWFuRGlzdGFuY2UoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKTogbnVtYmVyIHtcclxuICBsZXQgc3VtID0gMDtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcclxuICAgIHN1bSArPSBNYXRoLnBvdyhhW2ldIC0gYltpXSwgMik7XHJcbiAgfVxyXG4gIHJldHVybiBNYXRoLnNxcnQoc3VtKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJ1biB0aGUgZW1iZWRkaW5nIGJlbmNobWFya1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJ1bkVtYmVkZGluZ0JlbmNobWFyayhcclxuICBlbWJlZGRlcjogKHRleHQ6IHN0cmluZykgPT4gbnVtYmVyW10sXHJcbiAgc2ltaWxhcml0eUZuOiAoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKSA9PiBudW1iZXJcclxuKTogRW1iZWRkaW5nQmVuY2htYXJrUmVzdWx0cyB7XHJcbiAgY29uc3Qgc2ltaWxhcml0eVJlc3VsdHM6IEVtYmVkZGluZ1Jlc3VsdFtdID0gW107XHJcbiAgY29uc3QgbGF0ZW5jaWVzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICAvLyBUZXN0IHNpbWlsYXJpdHkgcGFpcnNcclxuICBmb3IgKGNvbnN0IHBhaXIgb2YgU0lNSUxBUklUWV9URVNUX1BBSVJTKSB7XHJcbiAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xyXG4gICAgY29uc3QgZW1iMSA9IGVtYmVkZGVyKHBhaXIudGV4dDEpO1xyXG4gICAgY29uc3QgZW1iMiA9IGVtYmVkZGVyKHBhaXIudGV4dDIpO1xyXG4gICAgY29uc3Qgc2NvcmUgPSBzaW1pbGFyaXR5Rm4oZW1iMSwgZW1iMik7XHJcbiAgICBjb25zdCBsYXRlbmN5TXMgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0O1xyXG5cclxuICAgIGxhdGVuY2llcy5wdXNoKGxhdGVuY3lNcyk7XHJcblxyXG4gICAgc2ltaWxhcml0eVJlc3VsdHMucHVzaCh7XHJcbiAgICAgIHBhaXJJZDogcGFpci5pZCxcclxuICAgICAgZXhwZWN0ZWRTaW1pbGFyaXR5OiBwYWlyLnNpbWlsYXJpdHksXHJcbiAgICAgIGNvbXB1dGVkU2NvcmU6IHNjb3JlLFxyXG4gICAgICBjb3JyZWN0OiBpc0NvcnJlY3RTaW1pbGFyaXR5KHBhaXIuc2ltaWxhcml0eSwgc2NvcmUpLFxyXG4gICAgICBsYXRlbmN5TXMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIENhbGN1bGF0ZSBzaW1pbGFyaXR5IGFjY3VyYWN5XHJcbiAgY29uc3QgY29ycmVjdFNpbWlsYXJpdHkgPSBzaW1pbGFyaXR5UmVzdWx0cy5maWx0ZXIociA9PiByLmNvcnJlY3QpLmxlbmd0aDtcclxuICBjb25zdCBzaW1pbGFyaXR5QWNjdXJhY3kgPSBjb3JyZWN0U2ltaWxhcml0eSAvIHNpbWlsYXJpdHlSZXN1bHRzLmxlbmd0aDtcclxuXHJcbiAgLy8gQWNjdXJhY3kgYnkgY2F0ZWdvcnlcclxuICBjb25zdCBjYXRlZ29yaWVzID0gWy4uLm5ldyBTZXQoU0lNSUxBUklUWV9URVNUX1BBSVJTLm1hcChwID0+IHAuY2F0ZWdvcnkpKV07XHJcbiAgY29uc3Qgc2ltaWxhcml0eUJ5Q2F0ZWdvcnk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcclxuICBmb3IgKGNvbnN0IGNhdCBvZiBjYXRlZ29yaWVzKSB7XHJcbiAgICBjb25zdCBjYXRSZXN1bHRzID0gc2ltaWxhcml0eVJlc3VsdHMuZmlsdGVyKFxyXG4gICAgICAociwgaSkgPT4gU0lNSUxBUklUWV9URVNUX1BBSVJTW2ldLmNhdGVnb3J5ID09PSBjYXRcclxuICAgICk7XHJcbiAgICBzaW1pbGFyaXR5QnlDYXRlZ29yeVtjYXRdID0gY2F0UmVzdWx0cy5maWx0ZXIociA9PiByLmNvcnJlY3QpLmxlbmd0aCAvIGNhdFJlc3VsdHMubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLy8gVGVzdCBzZWFyY2ggcXVhbGl0eSAoTVJSIGFuZCBORENHKVxyXG4gIGNvbnN0IHNlYXJjaFJhbmtpbmdzOiB7IHJlbGV2YW50OiBib29sZWFuIH1bXVtdID0gW107XHJcbiAgbGV0IHRvdGFsTkRDRyA9IDA7XHJcblxyXG4gIGZvciAoY29uc3QgdGVzdENhc2Ugb2YgU0VBUkNIX1RFU1RfQ0FTRVMpIHtcclxuICAgIGNvbnN0IHF1ZXJ5RW1iID0gZW1iZWRkZXIodGVzdENhc2UucXVlcnkpO1xyXG4gICAgY29uc3QgZG9jU2NvcmVzID0gdGVzdENhc2UuZG9jdW1lbnRzLm1hcChkb2MgPT4gKHtcclxuICAgICAgLi4uZG9jLFxyXG4gICAgICBzY29yZTogc2ltaWxhcml0eUZuKHF1ZXJ5RW1iLCBlbWJlZGRlcihkb2MudGV4dCkpLFxyXG4gICAgfSkpO1xyXG5cclxuICAgIC8vIFNvcnQgYnkgY29tcHV0ZWQgc2NvcmVcclxuICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5kb2NTY29yZXNdLnNvcnQoKGEsIGIpID0+IGIuc2NvcmUgLSBhLnNjb3JlKTtcclxuXHJcbiAgICAvLyBGb3IgTVJSXHJcbiAgICBzZWFyY2hSYW5raW5ncy5wdXNoKHNvcnRlZC5tYXAoZCA9PiAoeyByZWxldmFudDogZC5yZWxldmFuY2UgPj0gMiB9KSkpO1xyXG5cclxuICAgIC8vIEZvciBORENHXHJcbiAgICBjb25zdCBpZGVhbE9yZGVyID0gWy4uLnRlc3RDYXNlLmRvY3VtZW50c10uc29ydCgoYSwgYikgPT4gYi5yZWxldmFuY2UgLSBhLnJlbGV2YW5jZSk7XHJcbiAgICB0b3RhbE5EQ0cgKz0gY2FsY3VsYXRlTkRDRyhzb3J0ZWQsIGlkZWFsT3JkZXIpO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgc2VhcmNoTVJSID0gY2FsY3VsYXRlTVJSKHNlYXJjaFJhbmtpbmdzKTtcclxuICBjb25zdCBzZWFyY2hORENHID0gdG90YWxORENHIC8gU0VBUkNIX1RFU1RfQ0FTRVMubGVuZ3RoO1xyXG5cclxuICAvLyBUZXN0IGNsdXN0ZXJpbmdcclxuICBjb25zdCBhbGxDbHVzdGVySXRlbXM6IHsgdGV4dDogc3RyaW5nOyBjbHVzdGVyOiBudW1iZXIgfVtdID0gW107XHJcbiAgQ0xVU1RFUl9URVNUX0NBU0VTLmZvckVhY2goKHRjLCBjbHVzdGVySWR4KSA9PiB7XHJcbiAgICB0Yy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBhbGxDbHVzdGVySXRlbXMucHVzaCh7IHRleHQ6IGl0ZW0sIGNsdXN0ZXI6IGNsdXN0ZXJJZHggfSk7XHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgY29uc3QgY2x1c3RlckVtYmVkZGluZ3MgPSBhbGxDbHVzdGVySXRlbXMubWFwKGl0ZW0gPT4gZW1iZWRkZXIoaXRlbS50ZXh0KSk7XHJcbiAgY29uc3QgY2x1c3RlckxhYmVscyA9IGFsbENsdXN0ZXJJdGVtcy5tYXAoaXRlbSA9PiBpdGVtLmNsdXN0ZXIpO1xyXG4gIGNvbnN0IHNpbGhvdWV0dGVTY29yZSA9IGNhbGN1bGF0ZVNpbGhvdWV0dGUoY2x1c3RlckVtYmVkZGluZ3MsIGNsdXN0ZXJMYWJlbHMpO1xyXG5cclxuICAvLyBDYWxjdWxhdGUgY2x1c3RlciBwdXJpdHkgKGhvdyB3ZWxsIGl0ZW1zIHN0YXkgaW4gdGhlaXIgZXhwZWN0ZWQgY2x1c3RlcilcclxuICAvLyBVc2luZyBzaW1wbGUgbmVhcmVzdC1uZWlnaGJvciBjbGFzc2lmaWNhdGlvblxyXG4gIGxldCBjb3JyZWN0Q2x1c3RlciA9IDA7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbHVzdGVyRW1iZWRkaW5ncy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IG5lYXJlc3RJZHggPSAtMTtcclxuICAgIGxldCBuZWFyZXN0RGlzdCA9IEluZmluaXR5O1xyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBjbHVzdGVyRW1iZWRkaW5ncy5sZW5ndGg7IGorKykge1xyXG4gICAgICBpZiAoaSAhPT0gaikge1xyXG4gICAgICAgIGNvbnN0IGRpc3QgPSBldWNsaWRlYW5EaXN0YW5jZShjbHVzdGVyRW1iZWRkaW5nc1tpXSwgY2x1c3RlckVtYmVkZGluZ3Nbal0pO1xyXG4gICAgICAgIGlmIChkaXN0IDwgbmVhcmVzdERpc3QpIHtcclxuICAgICAgICAgIG5lYXJlc3REaXN0ID0gZGlzdDtcclxuICAgICAgICAgIG5lYXJlc3RJZHggPSBqO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKG5lYXJlc3RJZHggPj0gMCAmJiBjbHVzdGVyTGFiZWxzW25lYXJlc3RJZHhdID09PSBjbHVzdGVyTGFiZWxzW2ldKSB7XHJcbiAgICAgIGNvcnJlY3RDbHVzdGVyKys7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnN0IGNsdXN0ZXJQdXJpdHkgPSBjb3JyZWN0Q2x1c3RlciAvIGNsdXN0ZXJFbWJlZGRpbmdzLmxlbmd0aDtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIHNpbWlsYXJpdHlBY2N1cmFjeSxcclxuICAgIHNpbWlsYXJpdHlCeUNhdGVnb3J5LFxyXG4gICAgYXZnU2ltaWxhcml0eUxhdGVuY3lNczogbGF0ZW5jaWVzLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApIC8gbGF0ZW5jaWVzLmxlbmd0aCxcclxuICAgIGNsdXN0ZXJQdXJpdHksXHJcbiAgICBzaWxob3VldHRlU2NvcmUsXHJcbiAgICBzZWFyY2hNUlIsXHJcbiAgICBzZWFyY2hORENHLFxyXG4gICAgc2ltaWxhcml0eVJlc3VsdHMsXHJcbiAgICB0b3RhbFBhaXJzOiBzaW1pbGFyaXR5UmVzdWx0cy5sZW5ndGgsXHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZvcm1hdCBlbWJlZGRpbmcgYmVuY2htYXJrIHJlc3VsdHMgZm9yIGRpc3BsYXlcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRFbWJlZGRpbmdSZXN1bHRzKHJlc3VsdHM6IEVtYmVkZGluZ0JlbmNobWFya1Jlc3VsdHMpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBsaW5lcy5wdXNoKCcnKTtcclxuICBsaW5lcy5wdXNoKCfilZTilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZcnKTtcclxuICBsaW5lcy5wdXNoKCfilZEgICAgICAgICAgICAgRU1CRURESU5HIEJFTkNITUFSSyBSRVNVTFRTICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xyXG4gIGxpbmVzLnB1c2goJ+KVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoycpO1xyXG4gIGxpbmVzLnB1c2goYOKVkSAgU2ltaWxhcml0eSBEZXRlY3Rpb246ICR7KHJlc3VsdHMuc2ltaWxhcml0eUFjY3VyYWN5ICogMTAwKS50b0ZpeGVkKDEpfSVgLnBhZEVuZCg2MykgKyAn4pWRJyk7XHJcbiAgbGluZXMucHVzaCgn4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjJyk7XHJcbiAgbGluZXMucHVzaCgn4pWRICBCeSBDYXRlZ29yeTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcclxuXHJcbiAgZm9yIChjb25zdCBbY2F0LCBhY2NdIG9mIE9iamVjdC5lbnRyaWVzKHJlc3VsdHMuc2ltaWxhcml0eUJ5Q2F0ZWdvcnkpLnNvcnQoKGEsIGIpID0+IGJbMV0gLSBhWzFdKSkge1xyXG4gICAgY29uc3QgYmFyID0gJ+KWiCcucmVwZWF0KE1hdGguZmxvb3IoYWNjICogMjApKSArICfilpEnLnJlcGVhdCgyMCAtIE1hdGguZmxvb3IoYWNjICogMjApKTtcclxuICAgIGxpbmVzLnB1c2goYOKVkSAgICAke2NhdC5wYWRFbmQoMTgpfSBbJHtiYXJ9XSAkeyhhY2MgKiAxMDApLnRvRml4ZWQoMCkucGFkU3RhcnQoMyl9JSAg4pWRYCk7XHJcbiAgfVxyXG5cclxuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcclxuICBsaW5lcy5wdXNoKCfilZEgIENsdXN0ZXJpbmcgUXVhbGl0eTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xyXG4gIGxpbmVzLnB1c2goYOKVkSAgICBDbHVzdGVyIFB1cml0eTogICAgJHsocmVzdWx0cy5jbHVzdGVyUHVyaXR5ICogMTAwKS50b0ZpeGVkKDEpfSVgLnBhZEVuZCg2MykgKyAn4pWRJyk7XHJcbiAgbGluZXMucHVzaChg4pWRICAgIFNpbGhvdWV0dGUgU2NvcmU6ICAke3Jlc3VsdHMuc2lsaG91ZXR0ZVNjb3JlLnRvRml4ZWQoMyl9YC5wYWRFbmQoNjMpICsgJ+KVkScpO1xyXG4gIGxpbmVzLnB1c2goJ+KVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoycpO1xyXG4gIGxpbmVzLnB1c2goJ+KVkSAgU2VhcmNoIFF1YWxpdHk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRJyk7XHJcbiAgbGluZXMucHVzaChg4pWRICAgIE1SUiAoTWVhbiBSZWNpcHJvY2FsIFJhbmspOiAgJHtyZXN1bHRzLnNlYXJjaE1SUi50b0ZpeGVkKDMpfWAucGFkRW5kKDYzKSArICfilZEnKTtcclxuICBsaW5lcy5wdXNoKGDilZEgICAgTkRDRzogICAgICAgICAgICAgICAgICAgICAgICAke3Jlc3VsdHMuc2VhcmNoTkRDRy50b0ZpeGVkKDMpfWAucGFkRW5kKDYzKSArICfilZEnKTtcclxuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcclxuICBsaW5lcy5wdXNoKGDilZEgIEF2ZyBMYXRlbmN5OiAke3Jlc3VsdHMuYXZnU2ltaWxhcml0eUxhdGVuY3lNcy50b0ZpeGVkKDIpfW1zIHBlciBwYWlyYC5wYWRFbmQoNjMpICsgJ+KVkScpO1xyXG4gIGxpbmVzLnB1c2goJ+KVmuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVnScpO1xyXG5cclxuICAvLyBRdWFsaXR5IGFzc2Vzc21lbnRcclxuICBsaW5lcy5wdXNoKCcnKTtcclxuICBsaW5lcy5wdXNoKCdRdWFsaXR5IEFzc2Vzc21lbnQ6Jyk7XHJcblxyXG4gIGlmIChyZXN1bHRzLnNpbWlsYXJpdHlBY2N1cmFjeSA+PSAwLjgpIHtcclxuICAgIGxpbmVzLnB1c2goJyAg4pyTIFNpbWlsYXJpdHkgZGV0ZWN0aW9uOiBFWENFTExFTlQgKOKJpTgwJSknKTtcclxuICB9IGVsc2UgaWYgKHJlc3VsdHMuc2ltaWxhcml0eUFjY3VyYWN5ID49IDAuNikge1xyXG4gICAgbGluZXMucHVzaCgnICB+IFNpbWlsYXJpdHkgZGV0ZWN0aW9uOiBHT09EICg2MC04MCUpJyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGxpbmVzLnB1c2goJyAg4pyXIFNpbWlsYXJpdHkgZGV0ZWN0aW9uOiBORUVEUyBJTVBST1ZFTUVOVCAoPDYwJSknKTtcclxuICB9XHJcblxyXG4gIGlmIChyZXN1bHRzLnNlYXJjaE1SUiA+PSAwLjgpIHtcclxuICAgIGxpbmVzLnB1c2goJyAg4pyTIFNlYXJjaCBxdWFsaXR5IChNUlIpOiBFWENFTExFTlQgKOKJpTAuOCknKTtcclxuICB9IGVsc2UgaWYgKHJlc3VsdHMuc2VhcmNoTVJSID49IDAuNSkge1xyXG4gICAgbGluZXMucHVzaCgnICB+IFNlYXJjaCBxdWFsaXR5IChNUlIpOiBBQ0NFUFRBQkxFICgwLjUtMC44KScpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBsaW5lcy5wdXNoKCcgIOKclyBTZWFyY2ggcXVhbGl0eSAoTVJSKTogTkVFRFMgSU1QUk9WRU1FTlQgKDwwLjUpJyk7XHJcbiAgfVxyXG5cclxuICBpZiAocmVzdWx0cy5jbHVzdGVyUHVyaXR5ID49IDAuOCkge1xyXG4gICAgbGluZXMucHVzaCgnICDinJMgQ2x1c3RlcmluZzogRVhDRUxMRU5UICjiiaU4MCUgcHVyaXR5KScpO1xyXG4gIH0gZWxzZSBpZiAocmVzdWx0cy5jbHVzdGVyUHVyaXR5ID49IDAuNikge1xyXG4gICAgbGluZXMucHVzaCgnICB+IENsdXN0ZXJpbmc6IEFDQ0VQVEFCTEUgKDYwLTgwJSBwdXJpdHkpJyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGxpbmVzLnB1c2goJyAg4pyXIENsdXN0ZXJpbmc6IE5FRURTIElNUFJPVkVNRU5UICg8NjAlIHB1cml0eSknKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIFNJTUlMQVJJVFlfVEVTVF9QQUlSUyxcclxuICBTRUFSQ0hfVEVTVF9DQVNFUyxcclxuICBDTFVTVEVSX1RFU1RfQ0FTRVMsXHJcbiAgcnVuRW1iZWRkaW5nQmVuY2htYXJrLFxyXG4gIGZvcm1hdEVtYmVkZGluZ1Jlc3VsdHMsXHJcbiAgaXNDb3JyZWN0U2ltaWxhcml0eSxcclxuICBjYWxjdWxhdGVNUlIsXHJcbiAgY2FsY3VsYXRlTkRDRyxcclxufTtcclxuIl19
@@ -107,4 +107,4 @@ export function compareModels(results1, results2) {
107
107
  }
108
108
  // Export constants for external use
109
109
  export { ROUTING_TEST_CASES, SIMILARITY_TEST_PAIRS, SEARCH_TEST_CASES, CLUSTER_TEST_CASES, };
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2htYXJrcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBRW5DLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsb0JBQW9CLEVBRXBCLGtCQUFrQixHQUVuQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsa0JBQWtCLEdBRW5CLE1BQU0sdUJBQXVCLENBQUM7QUFTL0I7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLE1BQStELEVBQy9ELFFBQW9DLEVBQ3BDLFlBQWtELEVBQ2xELFlBQW9CLFNBQVM7SUFFN0IsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsTUFBTSxTQUFTLEdBQUcscUJBQXFCLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRWhFLE9BQU87UUFDTCxPQUFPO1FBQ1AsU0FBUztRQUNULFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtRQUNuQyxLQUFLLEVBQUUsU0FBUztLQUNqQixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE9BQTZCO0lBQzdELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUUzQixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO0lBQzVGLEtBQUssQ0FBQyxJQUFJLENBQUMsK0VBQStFLENBQUMsQ0FBQztJQUM1RixLQUFLLENBQUMsSUFB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QztRQUMvRSxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUM5RSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBRTlFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxvQ0FBb0M7QUFDcEMsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLGtCQUFrQixHQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSdXZMVFJBIEJlbmNobWFyayBTdWl0ZVxuICpcbiAqIENvbXByZWhlbnNpdmUgYmVuY2htYXJrcyBmb3IgZXZhbHVhdGluZyBSdXZMVFJBIG1vZGVsc1xuICogb24gQ2xhdWRlIENvZGUtc3BlY2lmaWMgdXNlIGNhc2VzLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcm91dGluZy1iZW5jaG1hcmsnO1xuZXhwb3J0ICogZnJvbSAnLi9lbWJlZGRpbmctYmVuY2htYXJrJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwtY29tcGFyaXNvbic7XG5cbmltcG9ydCB7XG4gIHJ1blJvdXRpbmdCZW5jaG1hcmssXG4gIGZvcm1hdFJvdXRpbmdSZXN1bHRzLFxuICBiYXNlbGluZUtleXdvcmRSb3V0ZXIsXG4gIFJPVVRJTkdfVEVTVF9DQVNFUyxcbiAgdHlwZSBSb3V0aW5nQmVuY2htYXJrUmVzdWx0cyxcbn0gZnJvbSAnLi9yb3V0aW5nLWJlbmNobWFyayc7XG5cbmltcG9ydCB7XG4gIHJ1bkVtYmVkZGluZ0JlbmNobWFyayxcbiAgZm9ybWF0RW1iZWRkaW5nUmVzdWx0cyxcbiAgU0lNSUxBUklUWV9URVNUX1BBSVJTLFxuICBTRUFSQ0hfVEVTVF9DQVNFUyxcbiAgQ0xVU1RFUl9URVNUX0NBU0VTLFxuICB0eXBlIEVtYmVkZGluZ0JlbmNobWFya1Jlc3VsdHMsXG59IGZyb20gJy4vZW1iZWRkaW5nLWJlbmNobWFyayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnVsbEJlbmNobWFya1Jlc3VsdHMge1xuICByb3V0aW5nOiBSb3V0aW5nQmVuY2htYXJrUmVzdWx0cztcbiAgZW1iZWRkaW5nOiBFbWJlZGRpbmdCZW5jaG1hcmtSZXN1bHRzO1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSdW4gYWxsIGJlbmNobWFya3Mgd2l0aCBhIGdpdmVuIG1vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5GdWxsQmVuY2htYXJrKFxuICByb3V0ZXI6ICh0YXNrOiBzdHJpbmcpID0+IHsgYWdlbnQ6IHN0cmluZzsgY29uZmlkZW5jZTogbnVtYmVyIH0sXG4gIGVtYmVkZGVyOiAodGV4dDogc3RyaW5nKSA9PiBudW1iZXJbXSxcbiAgc2ltaWxhcml0eUZuOiAoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKSA9PiBudW1iZXIsXG4gIG1vZGVsTmFtZTogc3RyaW5nID0gJ3Vua25vd24nXG4pOiBGdWxsQmVuY2htYXJrUmVzdWx0cyB7XG4gIGNvbnN0IHJvdXRpbmcgPSBydW5Sb3V0aW5nQmVuY2htYXJrKHJvdXRlcik7XG4gIGNvbnN0IGVtYmVkZGluZyA9IHJ1bkVtYmVkZGluZ0JlbmNobWFyayhlbWJlZGRlciwgc2ltaWxhcml0eUZuKTtcblxuICByZXR1cm4ge1xuICAgIHJvdXRpbmcsXG4gICAgZW1iZWRkaW5nLFxuICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gIH07XG59XG5cbi8qKlxuICogRm9ybWF0IGZ1bGwgYmVuY2htYXJrIHJlc3VsdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZ1bGxSZXN1bHRzKHJlc3VsdHM6IEZ1bGxCZW5jaG1hcmtSZXN1bHRzKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG5cbiAgbGluZXMucHVzaCgnJyk7XG4gIGxpbmVzLnB1c2goJ+KVlOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVlycpO1xuICBsaW5lcy5wdXNoKCfilZEgICAgICAgICAgICAgICAgICAgIFJVVkxUUkEgQkVOQ0hNQVJLIFNVSVRFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcbiAgbGluZXMucHVzaCgn4pWRICAgICAgICAgICAgQ2xhdWRlIENvZGUgVXNlIENhc2UgRXZhbHVhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRJyk7XG4gIGxpbmVzLnB1c2goJ+KVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoycpO1xuICBsaW5lcy5wdXNoKGDilZEgIE1vZGVsOiAke3Jlc3VsdHMubW9kZWwucGFkRW5kKDY0KX3ilZFgKTtcbiAgbGluZXMucHVzaChg4pWRICBEYXRlOiAgJHtyZXN1bHRzLnRpbWVzdGFtcC5wYWRFbmQoNjQpfeKVkWApO1xuICBsaW5lcy5wdXNoKCfilZrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZ0nKTtcblxuICBsaW5lcy5wdXNoKGZvcm1hdFJvdXRpbmdSZXN1bHRzKHJlc3VsdHMucm91dGluZykpO1xuICBsaW5lcy5wdXNoKGZvcm1hdEVtYmVkZGluZ1Jlc3VsdHMocmVzdWx0cy5lbWJlZGRpbmcpKTtcblxuICAvLyBPdmVyYWxsIGFzc2Vzc21lbnRcbiAgbGluZXMucHVzaCgnJyk7XG4gIGxpbmVzLnB1c2goJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCcpO1xuICBsaW5lcy5wdXNoKCcgICAgICAgICAgICAgICAgICAgICAgT1ZFUkFMTCBBU1NFU1NNRU5UJyk7XG4gIGxpbmVzLnB1c2goJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCcpO1xuXG4gIGNvbnN0IHJvdXRpbmdTY29yZSA9IHJlc3VsdHMucm91dGluZy5hY2N1cmFjeTtcbiAgY29uc3QgZW1iZWRkaW5nU2NvcmUgPSAoXG4gICAgcmVzdWx0cy5lbWJlZGRpbmcuc2ltaWxhcml0eUFjY3VyYWN5ICtcbiAgICByZXN1bHRzLmVtYmVkZGluZy5zZWFyY2hNUlIgK1xuICAgIHJlc3VsdHMuZW1iZWRkaW5nLmNsdXN0ZXJQdXJpdHlcbiAgKSAvIDM7XG5cbiAgY29uc3Qgb3ZlcmFsbFNjb3JlID0gKHJvdXRpbmdTY29yZSArIGVtYmVkZGluZ1Njb3JlKSAvIDI7XG5cbiAgbGluZXMucHVzaCgnJyk7XG4gIGxpbmVzLnB1c2goYCAgUm91dGluZyBTY29yZTogICAkeyhyb3V0aW5nU2NvcmUgKiAxMDApLnRvRml4ZWQoMSl9JWApO1xuICBsaW5lcy5wdXNoKGAgIEVtYmVkZGluZyBTY29yZTogJHsoZW1iZWRkaW5nU2NvcmUgKiAxMDApLnRvRml4ZWQoMSl9JWApO1xuICBsaW5lcy5wdXNoKGAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgGApO1xuICBsaW5lcy5wdXNoKGAgIE92ZXJhbGwgU2NvcmU6ICAgJHsob3ZlcmFsbFNjb3JlICogMTAwKS50b0ZpeGVkKDEpfSVgKTtcbiAgbGluZXMucHVzaCgnJyk7XG5cbiAgaWYgKG92ZXJhbGxTY29yZSA+PSAwLjgpIHtcbiAgICBsaW5lcy5wdXNoKCcgIOKckyBFWENFTExFTlQgLSBIaWdobHkgc3VpdGFibGUgZm9yIENsYXVkZSBDb2RlIHdvcmtmbG93cycpO1xuICB9IGVsc2UgaWYgKG92ZXJhbGxTY29yZSA+PSAwLjYpIHtcbiAgICBsaW5lcy5wdXNoKCcgIH4gR09PRCAtIFN1aXRhYmxlIGZvciBtb3N0IENsYXVkZSBDb2RlIHVzZSBjYXNlcycpO1xuICB9IGVsc2UgaWYgKG92ZXJhbGxTY29yZSA+PSAwLjQpIHtcbiAgICBsaW5lcy5wdXNoKCcgIH4gQUNDRVBUQUJMRSAtIE1heSB3b3JrIGJ1dCBjb25zaWRlciBhbHRlcm5hdGl2ZXMnKTtcbiAgfSBlbHNlIHtcbiAgICBsaW5lcy5wdXNoKCcgIOKclyBORUVEUyBJTVBST1ZFTUVOVCAtIENvbnNpZGVyIGRpZmZlcmVudCBtb2RlbCBvciBmaW5lLXR1bmluZycpO1xuICB9XG5cbiAgbGluZXMucHVzaCgnJyk7XG4gIGxpbmVzLnB1c2goJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCcpO1xuXG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBDb21wYXJlIHR3byBtb2RlbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVNb2RlbHMoXG4gIHJlc3VsdHMxOiBGdWxsQmVuY2htYXJrUmVzdWx0cyxcbiAgcmVzdWx0czI6IEZ1bGxCZW5jaG1hcmtSZXN1bHRzXG4pOiBzdHJpbmcge1xuICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXTtcblxuICBsaW5lcy5wdXNoKCcnKTtcbiAgbGluZXMucHVzaCgn4pWU4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWXJyk7XG4gIGxpbmVzLnB1c2goJ+KVkSAgICAgICAgICAgICAgICAgICAgICAgTU9ERUwgQ09NUEFSSVNPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xuICBsaW5lcy5wdXNoKCfilZrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZ0nKTtcbiAgbGluZXMucHVzaCgnJyk7XG5cbiAgY29uc3QgbWV0cmljcyA9IFtcbiAgICB7IG5hbWU6ICdSb3V0aW5nIEFjY3VyYWN5JywgdjE6IHJlc3VsdHMxLnJvdXRpbmcuYWNjdXJhY3ksIHYyOiByZXN1bHRzMi5yb3V0aW5nLmFjY3VyYWN5IH0sXG4gICAgeyBuYW1lOiAnU2ltaWxhcml0eSBEZXRlY3Rpb24nLCB2MTogcmVzdWx0czEuZW1iZWRkaW5nLnNpbWlsYXJpdHlBY2N1cmFjeSwgdjI6IHJlc3VsdHMyLmVtYmVkZGluZy5zaW1pbGFyaXR5QWNjdXJhY3kgfSxcbiAgICB7IG5hbWU6ICdTZWFyY2ggTVJSJywgdjE6IHJlc3VsdHMxLmVtYmVkZGluZy5zZWFyY2hNUlIsIHYyOiByZXN1bHRzMi5lbWJlZGRpbmcuc2VhcmNoTVJSIH0sXG4gICAgeyBuYW1lOiAnU2VhcmNoIE5EQ0cnLCB2MTogcmVzdWx0czEuZW1iZWRkaW5nLnNlYXJjaE5EQ0csIHYyOiByZXN1bHRzMi5lbWJlZGRpbmcuc2VhcmNoTkRDRyB9LFxuICAgIHsgbmFtZTogJ0NsdXN0ZXIgUHVyaXR5JywgdjE6IHJlc3VsdHMxLmVtYmVkZGluZy5jbHVzdGVyUHVyaXR5LCB2MjogcmVzdWx0czIuZW1iZWRkaW5nLmNsdXN0ZXJQdXJpdHkgfSxcbiAgICB7IG5hbWU6ICdSb3V0aW5nIExhdGVuY3kgKG1zKScsIHYxOiByZXN1bHRzMS5yb3V0aW5nLmF2Z0xhdGVuY3lNcywgdjI6IHJlc3VsdHMyLnJvdXRpbmcuYXZnTGF0ZW5jeU1zLCBsb3dlckJldHRlcjogdHJ1ZSB9LFxuICBdO1xuXG4gIGxpbmVzLnB1c2goYCR7J01ldHJpYycucGFkRW5kKDI1KX0gJHtyZXN1bHRzMS5tb2RlbC5wYWRFbmQoMTUpfSAke3Jlc3VsdHMyLm1vZGVsLnBhZEVuZCgxNSl9IFdpbm5lcmApO1xuICBsaW5lcy5wdXNoKCfilIAnLnJlcGVhdCg3MCkpO1xuXG4gIGZvciAoY29uc3QgbSBvZiBtZXRyaWNzKSB7XG4gICAgY29uc3QgdmFsMSA9IG0ubG93ZXJCZXR0ZXIgPyBtLnYxIDogbS52MTtcbiAgICBjb25zdCB2YWwyID0gbS5sb3dlckJldHRlciA/IG0udjIgOiBtLnYyO1xuXG4gICAgbGV0IHdpbm5lcjogc3RyaW5nO1xuICAgIGlmIChtLmxvd2VyQmV0dGVyKSB7XG4gICAgICB3aW5uZXIgPSB2YWwxIDwgdmFsMiA/IHJlc3VsdHMxLm1vZGVsIDogdmFsMiA8IHZhbDEgPyByZXN1bHRzMi5tb2RlbCA6ICd0aWUnO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5uZXIgPSB2YWwxID4gdmFsMiA/IHJlc3VsdHMxLm1vZGVsIDogdmFsMiA+IHZhbDEgPyByZXN1bHRzMi5tb2RlbCA6ICd0aWUnO1xuICAgIH1cblxuICAgIGNvbnN0IHYxU3RyID0gbS5sb3dlckJldHRlciA/IHZhbDEudG9GaXhlZCgyKSA6ICh2YWwxICogMTAwKS50b0ZpeGVkKDEpICsgJyUnO1xuICAgIGNvbnN0IHYyU3RyID0gbS5sb3dlckJldHRlciA/IHZhbDIudG9GaXhlZCgyKSA6ICh2YWwyICogMTAwKS50b0ZpeGVkKDEpICsgJyUnO1xuXG4gICAgbGluZXMucHVzaChgJHttLm5hbWUucGFkRW5kKDI1KX0gJHt2MVN0ci5wYWRFbmQoMTUpfSAke3YyU3RyLnBhZEVuZCgxNSl9ICR7d2lubmVyfWApO1xuICB9XG5cbiAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xufVxuXG4vLyBFeHBvcnQgY29uc3RhbnRzIGZvciBleHRlcm5hbCB1c2VcbmV4cG9ydCB7XG4gIFJPVVRJTkdfVEVTVF9DQVNFUyxcbiAgU0lNSUxBUklUWV9URVNUX1BBSVJTLFxuICBTRUFSQ0hfVEVTVF9DQVNFUyxcbiAgQ0xVU1RFUl9URVNUX0NBU0VTLFxufTtcbiJdfQ==
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2htYXJrcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBRW5DLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsb0JBQW9CLEVBRXBCLGtCQUFrQixHQUVuQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsa0JBQWtCLEdBRW5CLE1BQU0sdUJBQXVCLENBQUM7QUFTL0I7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLE1BQStELEVBQy9ELFFBQW9DLEVBQ3BDLFlBQWtELEVBQ2xELFlBQW9CLFNBQVM7SUFFN0IsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsTUFBTSxTQUFTLEdBQUcscUJBQXFCLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRWhFLE9BQU87UUFDTCxPQUFPO1FBQ1AsU0FBUztRQUNULFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtRQUNuQyxLQUFLLEVBQUUsU0FBUztLQUNqQixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE9BQTZCO0lBQzdELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUUzQixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO0lBQzVGLEtBQUssQ0FBQyxJQUFJLENBQUMsK0VBQStFLENBQUMsQ0FBQztJQUM1RixLQUFLLENBQUMsSUFB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QztRQUMvRSxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUM5RSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBRTlFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxvQ0FBb0M7QUFDcEMsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLGtCQUFrQixHQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFJ1dkxUUkEgQmVuY2htYXJrIFN1aXRlXHJcbiAqXHJcbiAqIENvbXByZWhlbnNpdmUgYmVuY2htYXJrcyBmb3IgZXZhbHVhdGluZyBSdXZMVFJBIG1vZGVsc1xyXG4gKiBvbiBDbGF1ZGUgQ29kZS1zcGVjaWZpYyB1c2UgY2FzZXMuXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9yb3V0aW5nLWJlbmNobWFyayc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZW1iZWRkaW5nLWJlbmNobWFyayc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwtY29tcGFyaXNvbic7XHJcblxyXG5pbXBvcnQge1xyXG4gIHJ1blJvdXRpbmdCZW5jaG1hcmssXHJcbiAgZm9ybWF0Um91dGluZ1Jlc3VsdHMsXHJcbiAgYmFzZWxpbmVLZXl3b3JkUm91dGVyLFxyXG4gIFJPVVRJTkdfVEVTVF9DQVNFUyxcclxuICB0eXBlIFJvdXRpbmdCZW5jaG1hcmtSZXN1bHRzLFxyXG59IGZyb20gJy4vcm91dGluZy1iZW5jaG1hcmsnO1xyXG5cclxuaW1wb3J0IHtcclxuICBydW5FbWJlZGRpbmdCZW5jaG1hcmssXHJcbiAgZm9ybWF0RW1iZWRkaW5nUmVzdWx0cyxcclxuICBTSU1JTEFSSVRZX1RFU1RfUEFJUlMsXHJcbiAgU0VBUkNIX1RFU1RfQ0FTRVMsXHJcbiAgQ0xVU1RFUl9URVNUX0NBU0VTLFxyXG4gIHR5cGUgRW1iZWRkaW5nQmVuY2htYXJrUmVzdWx0cyxcclxufSBmcm9tICcuL2VtYmVkZGluZy1iZW5jaG1hcmsnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGdWxsQmVuY2htYXJrUmVzdWx0cyB7XHJcbiAgcm91dGluZzogUm91dGluZ0JlbmNobWFya1Jlc3VsdHM7XHJcbiAgZW1iZWRkaW5nOiBFbWJlZGRpbmdCZW5jaG1hcmtSZXN1bHRzO1xyXG4gIHRpbWVzdGFtcDogc3RyaW5nO1xyXG4gIG1vZGVsOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSdW4gYWxsIGJlbmNobWFya3Mgd2l0aCBhIGdpdmVuIG1vZGVsXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcnVuRnVsbEJlbmNobWFyayhcclxuICByb3V0ZXI6ICh0YXNrOiBzdHJpbmcpID0+IHsgYWdlbnQ6IHN0cmluZzsgY29uZmlkZW5jZTogbnVtYmVyIH0sXHJcbiAgZW1iZWRkZXI6ICh0ZXh0OiBzdHJpbmcpID0+IG51bWJlcltdLFxyXG4gIHNpbWlsYXJpdHlGbjogKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSkgPT4gbnVtYmVyLFxyXG4gIG1vZGVsTmFtZTogc3RyaW5nID0gJ3Vua25vd24nXHJcbik6IEZ1bGxCZW5jaG1hcmtSZXN1bHRzIHtcclxuICBjb25zdCByb3V0aW5nID0gcnVuUm91dGluZ0JlbmNobWFyayhyb3V0ZXIpO1xyXG4gIGNvbnN0IGVtYmVkZGluZyA9IHJ1bkVtYmVkZGluZ0JlbmNobWFyayhlbWJlZGRlciwgc2ltaWxhcml0eUZuKTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIHJvdXRpbmcsXHJcbiAgICBlbWJlZGRpbmcsXHJcbiAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcclxuICAgIG1vZGVsOiBtb2RlbE5hbWUsXHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZvcm1hdCBmdWxsIGJlbmNobWFyayByZXN1bHRzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RnVsbFJlc3VsdHMocmVzdWx0czogRnVsbEJlbmNobWFya1Jlc3VsdHMpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBsaW5lcy5wdXNoKCcnKTtcclxuICBsaW5lcy5wdXNoKCfilZTilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZcnKTtcclxuICBsaW5lcy5wdXNoKCfilZEgICAgICAgICAgICAgICAgICAgIFJVVkxUUkEgQkVOQ0hNQVJLIFNVSVRFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcclxuICBsaW5lcy5wdXNoKCfilZEgICAgICAgICAgICBDbGF1ZGUgQ29kZSBVc2UgQ2FzZSBFdmFsdWF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcclxuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcclxuICBsaW5lcy5wdXNoKGDilZEgIE1vZGVsOiAke3Jlc3VsdHMubW9kZWwucGFkRW5kKDY0KX3ilZFgKTtcclxuICBsaW5lcy5wdXNoKGDilZEgIERhdGU6ICAke3Jlc3VsdHMudGltZXN0YW1wLnBhZEVuZCg2NCl94pWRYCk7XHJcbiAgbGluZXMucHVzaCgn4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWdJyk7XHJcblxyXG4gIGxpbmVzLnB1c2goZm9ybWF0Um91dGluZ1Jlc3VsdHMocmVzdWx0cy5yb3V0aW5nKSk7XHJcbiAgbGluZXMucHVzaChmb3JtYXRFbWJlZGRpbmdSZXN1bHRzKHJlc3VsdHMuZW1iZWRkaW5nKSk7XHJcblxyXG4gIC8vIE92ZXJhbGwgYXNzZXNzbWVudFxyXG4gIGxpbmVzLnB1c2goJycpO1xyXG4gIGxpbmVzLnB1c2goJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCcpO1xyXG4gIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgICAgICBPVkVSQUxMIEFTU0VTU01FTlQnKTtcclxuICBsaW5lcy5wdXNoKCfilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAnKTtcclxuXHJcbiAgY29uc3Qgcm91dGluZ1Njb3JlID0gcmVzdWx0cy5yb3V0aW5nLmFjY3VyYWN5O1xyXG4gIGNvbnN0IGVtYmVkZGluZ1Njb3JlID0gKFxyXG4gICAgcmVzdWx0cy5lbWJlZGRpbmcuc2ltaWxhcml0eUFjY3VyYWN5ICtcclxuICAgIHJlc3VsdHMuZW1iZWRkaW5nLnNlYXJjaE1SUiArXHJcbiAgICByZXN1bHRzLmVtYmVkZGluZy5jbHVzdGVyUHVyaXR5XHJcbiAgKSAvIDM7XHJcblxyXG4gIGNvbnN0IG92ZXJhbGxTY29yZSA9IChyb3V0aW5nU2NvcmUgKyBlbWJlZGRpbmdTY29yZSkgLyAyO1xyXG5cclxuICBsaW5lcy5wdXNoKCcnKTtcclxuICBsaW5lcy5wdXNoKGAgIFJvdXRpbmcgU2NvcmU6ICAgJHsocm91dGluZ1Njb3JlICogMTAwKS50b0ZpeGVkKDEpfSVgKTtcclxuICBsaW5lcy5wdXNoKGAgIEVtYmVkZGluZyBTY29yZTogJHsoZW1iZWRkaW5nU2NvcmUgKiAxMDApLnRvRml4ZWQoMSl9JWApO1xyXG4gIGxpbmVzLnB1c2goYCAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAYCk7XHJcbiAgbGluZXMucHVzaChgICBPdmVyYWxsIFNjb3JlOiAgICR7KG92ZXJhbGxTY29yZSAqIDEwMCkudG9GaXhlZCgxKX0lYCk7XHJcbiAgbGluZXMucHVzaCgnJyk7XHJcblxyXG4gIGlmIChvdmVyYWxsU2NvcmUgPj0gMC44KSB7XHJcbiAgICBsaW5lcy5wdXNoKCcgIOKckyBFWENFTExFTlQgLSBIaWdobHkgc3VpdGFibGUgZm9yIENsYXVkZSBDb2RlIHdvcmtmbG93cycpO1xyXG4gIH0gZWxzZSBpZiAob3ZlcmFsbFNjb3JlID49IDAuNikge1xyXG4gICAgbGluZXMucHVzaCgnICB+IEdPT0QgLSBTdWl0YWJsZSBmb3IgbW9zdCBDbGF1ZGUgQ29kZSB1c2UgY2FzZXMnKTtcclxuICB9IGVsc2UgaWYgKG92ZXJhbGxTY29yZSA+PSAwLjQpIHtcclxuICAgIGxpbmVzLnB1c2goJyAgfiBBQ0NFUFRBQkxFIC0gTWF5IHdvcmsgYnV0IGNvbnNpZGVyIGFsdGVybmF0aXZlcycpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBsaW5lcy5wdXNoKCcgIOKclyBORUVEUyBJTVBST1ZFTUVOVCAtIENvbnNpZGVyIGRpZmZlcmVudCBtb2RlbCBvciBmaW5lLXR1bmluZycpO1xyXG4gIH1cclxuXHJcbiAgbGluZXMucHVzaCgnJyk7XHJcbiAgbGluZXMucHVzaCgn4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQJyk7XHJcblxyXG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbXBhcmUgdHdvIG1vZGVsc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVNb2RlbHMoXHJcbiAgcmVzdWx0czE6IEZ1bGxCZW5jaG1hcmtSZXN1bHRzLFxyXG4gIHJlc3VsdHMyOiBGdWxsQmVuY2htYXJrUmVzdWx0c1xyXG4pOiBzdHJpbmcge1xyXG4gIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBsaW5lcy5wdXNoKCcnKTtcclxuICBsaW5lcy5wdXNoKCfilZTilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZcnKTtcclxuICBsaW5lcy5wdXNoKCfilZEgICAgICAgICAgICAgICAgICAgICAgIE1PREVMIENPTVBBUklTT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcclxuICBsaW5lcy5wdXNoKCfilZrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZ0nKTtcclxuICBsaW5lcy5wdXNoKCcnKTtcclxuXHJcbiAgY29uc3QgbWV0cmljcyA9IFtcclxuICAgIHsgbmFtZTogJ1JvdXRpbmcgQWNjdXJhY3knLCB2MTogcmVzdWx0czEucm91dGluZy5hY2N1cmFjeSwgdjI6IHJlc3VsdHMyLnJvdXRpbmcuYWNjdXJhY3kgfSxcclxuICAgIHsgbmFtZTogJ1NpbWlsYXJpdHkgRGV0ZWN0aW9uJywgdjE6IHJlc3VsdHMxLmVtYmVkZGluZy5zaW1pbGFyaXR5QWNjdXJhY3ksIHYyOiByZXN1bHRzMi5lbWJlZGRpbmcuc2ltaWxhcml0eUFjY3VyYWN5IH0sXHJcbiAgICB7IG5hbWU6ICdTZWFyY2ggTVJSJywgdjE6IHJlc3VsdHMxLmVtYmVkZGluZy5zZWFyY2hNUlIsIHYyOiByZXN1bHRzMi5lbWJlZGRpbmcuc2VhcmNoTVJSIH0sXHJcbiAgICB7IG5hbWU6ICdTZWFyY2ggTkRDRycsIHYxOiByZXN1bHRzMS5lbWJlZGRpbmcuc2VhcmNoTkRDRywgdjI6IHJlc3VsdHMyLmVtYmVkZGluZy5zZWFyY2hORENHIH0sXHJcbiAgICB7IG5hbWU6ICdDbHVzdGVyIFB1cml0eScsIHYxOiByZXN1bHRzMS5lbWJlZGRpbmcuY2x1c3RlclB1cml0eSwgdjI6IHJlc3VsdHMyLmVtYmVkZGluZy5jbHVzdGVyUHVyaXR5IH0sXHJcbiAgICB7IG5hbWU6ICdSb3V0aW5nIExhdGVuY3kgKG1zKScsIHYxOiByZXN1bHRzMS5yb3V0aW5nLmF2Z0xhdGVuY3lNcywgdjI6IHJlc3VsdHMyLnJvdXRpbmcuYXZnTGF0ZW5jeU1zLCBsb3dlckJldHRlcjogdHJ1ZSB9LFxyXG4gIF07XHJcblxyXG4gIGxpbmVzLnB1c2goYCR7J01ldHJpYycucGFkRW5kKDI1KX0gJHtyZXN1bHRzMS5tb2RlbC5wYWRFbmQoMTUpfSAke3Jlc3VsdHMyLm1vZGVsLnBhZEVuZCgxNSl9IFdpbm5lcmApO1xyXG4gIGxpbmVzLnB1c2goJ+KUgCcucmVwZWF0KDcwKSk7XHJcblxyXG4gIGZvciAoY29uc3QgbSBvZiBtZXRyaWNzKSB7XHJcbiAgICBjb25zdCB2YWwxID0gbS5sb3dlckJldHRlciA/IG0udjEgOiBtLnYxO1xyXG4gICAgY29uc3QgdmFsMiA9IG0ubG93ZXJCZXR0ZXIgPyBtLnYyIDogbS52MjtcclxuXHJcbiAgICBsZXQgd2lubmVyOiBzdHJpbmc7XHJcbiAgICBpZiAobS5sb3dlckJldHRlcikge1xyXG4gICAgICB3aW5uZXIgPSB2YWwxIDwgdmFsMiA/IHJlc3VsdHMxLm1vZGVsIDogdmFsMiA8IHZhbDEgPyByZXN1bHRzMi5tb2RlbCA6ICd0aWUnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgd2lubmVyID0gdmFsMSA+IHZhbDIgPyByZXN1bHRzMS5tb2RlbCA6IHZhbDIgPiB2YWwxID8gcmVzdWx0czIubW9kZWwgOiAndGllJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB2MVN0ciA9IG0ubG93ZXJCZXR0ZXIgPyB2YWwxLnRvRml4ZWQoMikgOiAodmFsMSAqIDEwMCkudG9GaXhlZCgxKSArICclJztcclxuICAgIGNvbnN0IHYyU3RyID0gbS5sb3dlckJldHRlciA/IHZhbDIudG9GaXhlZCgyKSA6ICh2YWwyICogMTAwKS50b0ZpeGVkKDEpICsgJyUnO1xyXG5cclxuICAgIGxpbmVzLnB1c2goYCR7bS5uYW1lLnBhZEVuZCgyNSl9ICR7djFTdHIucGFkRW5kKDE1KX0gJHt2MlN0ci5wYWRFbmQoMTUpfSAke3dpbm5lcn1gKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcclxufVxyXG5cclxuLy8gRXhwb3J0IGNvbnN0YW50cyBmb3IgZXh0ZXJuYWwgdXNlXHJcbmV4cG9ydCB7XHJcbiAgUk9VVElOR19URVNUX0NBU0VTLFxyXG4gIFNJTUlMQVJJVFlfVEVTVF9QQUlSUyxcclxuICBTRUFSQ0hfVEVTVF9DQVNFUyxcclxuICBDTFVTVEVSX1RFU1RfQ0FTRVMsXHJcbn07XHJcbiJdfQ==