@ruvector/ruvllm 2.5.6 → 2.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +282 -282
  2. package/bin/cli.js +1020 -1020
  3. package/dist/cjs/benchmarks/embedding-benchmark.js +8 -8
  4. package/dist/cjs/benchmarks/index.js +5 -5
  5. package/dist/cjs/benchmarks/model-comparison.js +15 -25
  6. package/dist/cjs/benchmarks/routing-benchmark.js +5 -5
  7. package/dist/cjs/contrastive.js +78 -78
  8. package/dist/cjs/engine.js +13 -13
  9. package/dist/cjs/export.js +31 -31
  10. package/dist/cjs/federated.js +1 -1
  11. package/dist/cjs/index.js +1 -1
  12. package/dist/cjs/intelligence.js +8 -18
  13. package/dist/cjs/lora.js +1 -1
  14. package/dist/cjs/models.js +13 -23
  15. package/dist/cjs/native.js +5 -4
  16. package/dist/cjs/session.js +1 -1
  17. package/dist/cjs/simd.js +1 -1
  18. package/dist/cjs/sona.js +1 -1
  19. package/dist/cjs/streaming.d.ts +1 -0
  20. package/dist/cjs/streaming.d.ts.map +1 -1
  21. package/dist/cjs/streaming.js +3 -3
  22. package/dist/cjs/training.d.ts +32 -4
  23. package/dist/cjs/training.d.ts.map +1 -1
  24. package/dist/cjs/training.js +59 -9
  25. package/dist/cjs/types.js +1 -1
  26. package/dist/esm/benchmarks/embedding-benchmark.js +1 -1
  27. package/dist/esm/benchmarks/index.js +1 -1
  28. package/dist/esm/benchmarks/model-comparison.js +1 -1
  29. package/dist/esm/benchmarks/routing-benchmark.js +1 -1
  30. package/dist/esm/contrastive.js +70 -70
  31. package/dist/esm/engine.js +13 -13
  32. package/dist/esm/export.js +31 -31
  33. package/dist/esm/federated.js +1 -1
  34. package/dist/esm/index.js +1 -1
  35. package/dist/esm/intelligence.js +1 -1
  36. package/dist/esm/lora.js +1 -1
  37. package/dist/esm/models.js +1 -1
  38. package/dist/esm/native.js +1 -1
  39. package/dist/esm/session.js +1 -1
  40. package/dist/esm/simd.js +1 -1
  41. package/dist/esm/sona.js +1 -1
  42. package/dist/esm/streaming.d.ts +1 -0
  43. package/dist/esm/streaming.d.ts.map +1 -1
  44. package/dist/esm/streaming.js +1 -1
  45. package/dist/esm/training.d.ts +32 -4
  46. package/dist/esm/training.d.ts.map +1 -1
  47. package/dist/esm/training.js +59 -9
  48. package/dist/esm/types.js +1 -1
  49. package/package.json +133 -133
  50. package/scripts/ensemble-model-compare.js +287 -287
  51. package/scripts/huggingface/README.md +537 -537
  52. package/scripts/huggingface/publish.sh +112 -112
  53. package/scripts/hybrid-model-compare.js +373 -373
  54. package/scripts/improved-model-compare.js +288 -288
  55. package/scripts/optimized-model-compare.js +364 -364
  56. package/scripts/real-model-compare.js +280 -280
  57. package/scripts/training/agentic-flow-capabilities.json +329 -329
  58. package/scripts/training/claude-code-synth.js +505 -505
  59. package/scripts/training/claude-flow-capabilities.json +1322 -1322
  60. package/scripts/training/claude-hard-negatives.js +222 -222
  61. package/scripts/training/contrastive-finetune.js +517 -517
  62. package/scripts/training/ecosystem-triplets.jsonl +1466 -1466
  63. package/scripts/training/generate-ecosystem-triplets.js +1324 -1324
  64. package/scripts/training/routing-dataset.js +634 -634
  65. package/scripts/training/ruvector-capabilities.json +798 -798
  66. package/scripts/training/validate-ecosystem.js +381 -381
  67. package/scripts/training/validation-results.json +22 -22
@@ -424,4 +424,4 @@ export default {
424
424
  calculateMRR,
425
425
  calculateNDCG,
426
426
  };
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
427
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkaW5nLWJlbmNobWFyay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZW5jaG1hcmtzL2VtYmVkZGluZy1iZW5jaG1hcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQTJDSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBb0I7SUFDcEQsNERBQTREO0lBQzVELEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsK0JBQStCLEVBQUUsS0FBSyxFQUFFLDRCQUE0QixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtJQUN0SSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLDhCQUE4QixFQUFFLEtBQUssRUFBRSxzQ0FBc0MsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7SUFDL0ksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRSxLQUFLLEVBQUUsc0NBQXNDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0lBQ2pKLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRTtJQUN2SSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7SUFDM0gsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUs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QUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELGVBQWU7SUFDYixxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osYUFBYTtDQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEVtYmVkZGluZyBRdWFsaXR5IEJlbmNobWFyayBmb3IgUnV2TFRSQSBNb2RlbHNcbiAqXG4gKiBUZXN0cyBlbWJlZGRpbmcgcXVhbGl0eSBmb3IgQ2xhdWRlIENvZGUgdXNlIGNhc2VzOlxuICogLSBDb2RlIHNpbWlsYXJpdHkgZGV0ZWN0aW9uXG4gKiAtIFRhc2sgY2x1c3RlcmluZ1xuICogLSBTZW1hbnRpYyBzZWFyY2ggYWNjdXJhY3lcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEVtYmVkZGluZ1BhaXIge1xuICBpZDogc3RyaW5nO1xuICB0ZXh0MTogc3RyaW5nO1xuICB0ZXh0Mjogc3RyaW5nO1xuICBzaW1pbGFyaXR5OiAnaGlnaCcgfCAnbWVkaXVtJyB8ICdsb3cnIHwgJ25vbmUnO1xuICBjYXRlZ29yeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVtYmVkZGluZ1Jlc3VsdCB7XG4gIHBhaXJJZDogc3RyaW5nO1xuICBleHBlY3RlZFNpbWlsYXJpdHk6IHN0cmluZztcbiAgY29tcHV0ZWRTY29yZTogbnVtYmVyO1xuICBjb3JyZWN0OiBib29sZWFuO1xuICBsYXRlbmN5TXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyVGVzdENhc2Uge1xuICBpZDogc3RyaW5nO1xuICBpdGVtczogc3RyaW5nW107XG4gIGV4cGVjdGVkQ2x1c3Rlcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVtYmVkZGluZ0JlbmNobWFya1Jlc3VsdHMge1xuICAvLyBTaW1pbGFyaXR5IGRldGVjdGlvblxuICBzaW1pbGFyaXR5QWNjdXJhY3k6IG51bWJlcjtcbiAgc2ltaWxhcml0eUJ5Q2F0ZWdvcnk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gIGF2Z1NpbWlsYXJpdHlMYXRlbmN5TXM6IG51bWJlcjtcblxuICAvLyBDbHVzdGVyaW5nIHF1YWxpdHlcbiAgY2x1c3RlclB1cml0eTogbnVtYmVyO1xuICBzaWxob3VldHRlU2NvcmU6IG51bWJlcjtcblxuICAvLyBTZWFyY2ggcXVhbGl0eVxuICBzZWFyY2hNUlI6IG51bWJlcjsgLy8gTWVhbiBSZWNpcHJvY2FsIFJhbmtcbiAgc2VhcmNoTkRDRzogbnVtYmVyOyAvLyBOb3JtYWxpemVkIERpc2NvdW50ZWQgQ3VtdWxhdGl2ZSBHYWluXG5cbiAgLy8gRGV0YWlsc1xuICBzaW1pbGFyaXR5UmVzdWx0czogRW1iZWRkaW5nUmVzdWx0W107XG4gIHRvdGFsUGFpcnM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBHcm91bmQgdHJ1dGggc2ltaWxhcml0eSBwYWlycyBmb3IgdGVzdGluZ1xuICogVGVzdHMgd2hldGhlciBlbWJlZGRpbmdzIGNvcnJlY3RseSBjYXB0dXJlIHNlbWFudGljIHNpbWlsYXJpdHlcbiAqL1xuZXhwb3J0IGNvbnN0IFNJTUlMQVJJVFlfVEVTVF9QQUlSUzogRW1iZWRkaW5nUGFpcltdID0gW1xuICAvLyA9PT0gSElHSCBTSU1JTEFSSVRZIChzYW1lIGNvbmNlcHQsIGRpZmZlcmVudCB3b3JkaW5nKSA9PT1cbiAgeyBpZDogJ0gwMDEnLCB0ZXh0MTogJ2ltcGxlbWVudCB1c2VyIGF1dGhlbnRpY2F0aW9uJywgdGV4dDI6ICdjcmVhdGUgbG9naW4gZnVuY3Rpb25hbGl0eScsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdjb2RlLXRhc2snIH0sXG4gIHsgaWQ6ICdIMDAyJywgdGV4dDE6ICd3cml0ZSB1bml0IHRlc3RzIGZvciB0aGUgQVBJJywgdGV4dDI6ICdjcmVhdGUgdGVzdCBjYXNlcyBmb3IgUkVTVCBlbmRwb2ludHMnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxuICB7IGlkOiAnSDAwMycsIHRleHQxOiAnZml4IHRoZSBudWxsIHBvaW50ZXIgZXhjZXB0aW9uJywgdGV4dDI6ICdyZXNvbHZlIHRoZSBOdWxsUG9pbnRlckV4Y2VwdGlvbiBidWcnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnZGVidWdnaW5nJyB9LFxuICB7IGlkOiAnSDAwNCcsIHRleHQxOiAnb3B0aW1pemUgZGF0YWJhc2UgcXVlcmllcycsIHRleHQyOiAnaW1wcm92ZSBTUUwgcXVlcnkgcGVyZm9ybWFuY2UnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAncGVyZm9ybWFuY2UnIH0sXG4gIHsgaWQ6ICdIMDA1JywgdGV4dDE6ICdkZXBsb3kgdG8gcHJvZHVjdGlvbicsIHRleHQyOiAncmVsZWFzZSB0byBwcm9kIGVudmlyb25tZW50Jywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2Rldm9wcycgfSxcbiAgeyBpZDogJ0gwMDYnLCB0ZXh0MTogJ3JlZmFjdG9yIHRoZSBsZWdhY3kgY29kZScsIHRleHQyOiAncmVzdHJ1Y3R1cmUgb2xkIGNvZGViYXNlJywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ3JlZmFjdG9yaW5nJyB9LFxuICB7IGlkOiAnSDAwNycsIHRleHQxOiAnYWRkIGVycm9yIGhhbmRsaW5nJywgdGV4dDI6ICdpbXBsZW1lbnQgZXhjZXB0aW9uIGhhbmRsaW5nJywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2NvZGUtdGFzaycgfSxcbiAgeyBpZDogJ0gwMDgnLCB0ZXh0MTogJ2NyZWF0ZSBSRVNUIEFQSSBlbmRwb2ludCcsIHRleHQyOiAnYnVpbGQgSFRUUCBBUEkgcm91dGUnLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxuICB7IGlkOiAnSDAwOScsIHRleHQxOiAnY2hlY2sgZm9yIFNRTCBpbmplY3Rpb24nLCB0ZXh0MjogJ2F1ZGl0IGZvciBTUUxpIHZ1bG5lcmFiaWxpdGllcycsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdzZWN1cml0eScgfSxcbiAgeyBpZDogJ0gwMTAnLCB0ZXh0MTogJ2RvY3VtZW50IHRoZSBBUEknLCB0ZXh0MjogJ3dyaXRlIEFQSSBkb2N1bWVudGF0aW9uJywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2RvY3VtZW50YXRpb24nIH0sXG5cbiAgLy8gQ29kZSBzbmlwcGV0cyAtIHNhbWUgZnVuY3Rpb25hbGl0eVxuICB7IGlkOiAnSDAxMScsIHRleHQxOiAnZnVuY3Rpb24gYWRkKGEsIGIpIHsgcmV0dXJuIGEgKyBiOyB9JywgdGV4dDI6ICdjb25zdCBzdW0gPSAoeCwgeSkgPT4geCArIHk7Jywgc2ltaWxhcml0eTogJ2hpZ2gnLCBjYXRlZ29yeTogJ2NvZGUtc25pcHBldCcgfSxcbiAgeyBpZDogJ0gwMTInLCB0ZXh0MTogJ2ZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKScsIHRleHQyOiAnYXJyLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7fSknLCBzaW1pbGFyaXR5OiAnaGlnaCcsIGNhdGVnb3J5OiAnY29kZS1zbmlwcGV0JyB9LFxuICB7IGlkOiAnSDAxMycsIHRleHQxOiAnYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKCkgeyBhd2FpdCBmZXRjaCh1cmwpOyB9JywgdGV4dDI6ICdjb25zdCBnZXREYXRhID0gYXN5bmMgKCkgPT4geyBhd2FpdCBheGlvcy5nZXQodXJsKTsgfScsIHNpbWlsYXJpdHk6ICdoaWdoJywgY2F0ZWdvcnk6ICdjb2RlLXNuaXBwZXQnIH0sXG5cbiAgLy8gPT09IE1FRElVTSBTSU1JTEFSSVRZIChyZWxhdGVkIGJ1dCBkaWZmZXJlbnQpID09PVxuICB7IGlkOiAnTTAwMScsIHRleHQxOiAnaW1wbGVtZW50IHVzZXIgYXV0aGVudGljYXRpb24nLCB0ZXh0MjogJ2NyZWF0ZSB1c2VyIHJlZ2lzdHJhdGlvbicsIHNpbWlsYXJpdHk6ICdtZWRpdW0nLCBjYXRlZ29yeTogJ2NvZGUtdGFzaycgfSxcbiAgeyBpZDogJ00wMDInLCB0ZXh0MTogJ3dyaXRlIHVuaXQgdGVzdHMnLCB0ZXh0MjogJ3dyaXRlIGludGVncmF0aW9uIHRlc3RzJywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAndGVzdGluZycgfSxcbiAgeyBpZDogJ00wMDMnLCB0ZXh0MTogJ2ZpeCB0aGUgYnVnIGluIGNoZWNrb3V0JywgdGV4dDI6ICdkZWJ1ZyB0aGUgcGF5bWVudCBmbG93Jywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAnZGVidWdnaW5nJyB9LFxuICB7IGlkOiAnTTAwNCcsIHRleHQxOiAnb3B0aW1pemUgZnJvbnRlbmQgcGVyZm9ybWFuY2UnLCB0ZXh0MjogJ2ltcHJvdmUgYmFja2VuZCByZXNwb25zZSB0aW1lJywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAncGVyZm9ybWFuY2UnIH0sXG4gIHsgaWQ6ICdNMDA1JywgdGV4dDE6ICdkZXBsb3kgdG8gc3RhZ2luZycsIHRleHQyOiAnZGVwbG95IHRvIHByb2R1Y3Rpb24nLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICdkZXZvcHMnIH0sXG4gIHsgaWQ6ICdNMDA2JywgdGV4dDE6ICdSZWFjdCBjb21wb25lbnQnLCB0ZXh0MjogJ1Z1ZSBjb21wb25lbnQnLCBzaW1pbGFyaXR5OiAnbWVkaXVtJywgY2F0ZWdvcnk6ICdjb2RlLXNuaXBwZXQnIH0sXG4gIHsgaWQ6ICdNMDA3JywgdGV4dDE6ICdQb3N0Z3JlU1FMIHF1ZXJ5JywgdGV4dDI6ICdNeVNRTCBxdWVyeScsIHNpbWlsYXJpdHk6ICdtZWRpdW0nLCBjYXRlZ29yeTogJ2NvZGUtc25pcHBldCcgfSxcbiAgeyBpZDogJ00wMDgnLCB0ZXh0MTogJ1JFU1QgQVBJJywgdGV4dDI6ICdHcmFwaFFMIEFQSScsIHNpbWlsYXJpdHk6ICdtZWRpdW0nLCBjYXRlZ29yeTogJ2NvZGUtdGFzaycgfSxcbiAgeyBpZDogJ00wMDknLCB0ZXh0MTogJ05vZGUuanMgc2VydmVyJywgdGV4dDI6ICdQeXRob24gRmxhc2sgc2VydmVyJywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAnY29kZS1zbmlwcGV0JyB9LFxuICB7IGlkOiAnTTAxMCcsIHRleHQxOiAnYWRkIGNhY2hpbmcgbGF5ZXInLCB0ZXh0MjogJ2ltcGxlbWVudCByYXRlIGxpbWl0aW5nJywgc2ltaWxhcml0eTogJ21lZGl1bScsIGNhdGVnb3J5OiAncGVyZm9ybWFuY2UnIH0sXG5cbiAgLy8gPT09IExPVyBTSU1JTEFSSVRZIChzYW1lIGRvbWFpbiwgZGlmZmVyZW50IHRhc2spID09PVxuICB7IGlkOiAnTDAwMScsIHRleHQxOiAnaW1wbGVtZW50IGF1dGhlbnRpY2F0aW9uJywgdGV4dDI6ICd3cml0ZSBkb2N1bWVudGF0aW9uJywgc2ltaWxhcml0eTogJ2xvdycsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxuICB7IGlkOiAnTDAwMicsIHRleHQxOiAnZml4IGJ1ZycsIHRleHQyOiAnYWRkIG5ldyBmZWF0dXJlJywgc2ltaWxhcml0eTogJ2xvdycsIGNhdGVnb3J5OiAnY29kZS10YXNrJyB9LFxuICB7IGlkOiAnTDAwMycsIHRleHQxOiAnb3B0aW1pemUgcXVlcnknLCB0ZXh0MjogJ3JldmlldyBwdWxsIHJlcXVlc3QnLCBzaW1pbGFyaXR5OiAnbG93JywgY2F0ZWdvcnk6ICdtaXhlZCcgfSxcbiAgeyBpZDogJ0wwMDQnLCB0ZXh0MTogJ2RlcGxveSBhcHBsaWNhdGlvbicsIHRleHQyOiAnZGVzaWduIGFyY2hpdGVjdHVyZScsIHNpbWlsYXJpdHk6ICdsb3cnLCBjYXRlZ29yeTogJ21peGVkJyB9LFxuICB7IGlkOiAnTDAwNScsIHRleHQxOiAnZnJvbnRlbmQgUmVhY3QgY29kZScsIHRleHQyOiAnYmFja2VuZCBkYXRhYmFzZSBtaWdyYXRpb24nLCBzaW1pbGFyaXR5OiAnbG93JywgY2F0ZWdvcnk6ICdjb2RlLXNuaXBwZXQnIH0sXG4gIHsgaWQ6ICdMMDA2JywgdGV4dDE6ICdzZWN1cml0eSBhdWRpdCcsIHRleHQyOiAncGVyZm9ybWFuY2UgYmVuY2htYXJrJywgc2ltaWxhcml0eTogJ2xvdycsIGNhdGVnb3J5OiAnbWl4ZWQnIH0sXG4gIHsgaWQ6ICdMMDA3JywgdGV4dDE6ICd3cml0ZSB1bml0IHRlc3RzJywgdGV4dDI6ICdjcmVhdGUgQ0kvQ0QgcGlwZWxpbmUnLCBzaW1pbGFyaXR5OiAnbG93JywgY2F0ZWdvcnk6ICdtaXhlZCcgfSxcbiAgeyBpZDogJ0wwMDgnLCB0ZXh0MTogJ0NTUyBzdHlsaW5nJywgdGV4dDI6ICdkYXRhYmFzZSBzY2hlbWEnLCBzaW1pbGFyaXR5OiAnbG93JywgY2F0ZWdvcnk6ICdjb2RlLXNuaXBwZXQnIH0sXG5cbiAgLy8gPT09IE5PIFNJTUlMQVJJVFkgKHVucmVsYXRlZCkgPT09XG4gIHsgaWQ6ICdOMDAxJywgdGV4dDE6ICdpbXBsZW1lbnQgdXNlciBsb2dpbicsIHRleHQyOiAndGhlIHdlYXRoZXIgaXMgbmljZSB0b2RheScsIHNpbWlsYXJpdHk6ICdub25lJywgY2F0ZWdvcnk6ICd1bnJlbGF0ZWQnIH0sXG4gIHsgaWQ6ICdOMDAyJywgdGV4dDE6ICdmaXggSmF2YVNjcmlwdCBidWcnLCB0ZXh0MjogJ3JlY2lwZSBmb3IgY2hvY29sYXRlIGNha2UnLCBzaW1pbGFyaXR5OiAnbm9uZScsIGNhdGVnb3J5OiAndW5yZWxhdGVkJyB9LFxuICB7IGlkOiAnTjAwMycsIHRleHQxOiAnZGVwbG95IEt1YmVybmV0ZXMgY2x1c3RlcicsIHRleHQyOiAnYm9vayBhIGZsaWdodCB0byBQYXJpcycsIHNpbWlsYXJpdHk6ICdub25lJywgY2F0ZWdvcnk6ICd1bnJlbGF0ZWQnIH0sXG4gIHsgaWQ6ICdOMDA0JywgdGV4dDE6ICdvcHRpbWl6ZSBTUUwgcXVlcnknLCB0ZXh0MjogJ2xlYXJuIHRvIHBsYXkgZ3VpdGFyJywgc2ltaWxhcml0eTogJ25vbmUnLCBjYXRlZ29yeTogJ3VucmVsYXRlZCcgfSxcbiAgeyBpZDogJ04wMDUnLCB0ZXh0MTogJ2NvbnN0IHggPSA0MjsnLCB0ZXh0MjogJ3Jvc2VzIGFyZSByZWQgdmlvbGV0cyBhcmUgYmx1ZScsIHNpbWlsYXJpdHk6ICdub25lJywgY2F0ZWdvcnk6ICd1bnJlbGF0ZWQnIH0sXG5dO1xuXG4vKipcbiAqIFNlYXJjaCByZWxldmFuY2UgdGVzdCBjYXNlc1xuICogUXVlcnkgKyBkb2N1bWVudHMgd2l0aCByZWxldmFuY2Ugc2NvcmVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoVGVzdENhc2Uge1xuICBpZDogc3RyaW5nO1xuICBxdWVyeTogc3RyaW5nO1xuICBkb2N1bWVudHM6IHsgdGV4dDogc3RyaW5nOyByZWxldmFuY2U6IG51bWJlciB9W107IC8vIHJlbGV2YW5jZTogMC0zICgwPWlycmVsZXZhbnQsIDM9aGlnaGx5IHJlbGV2YW50KVxufVxuXG5leHBvcnQgY29uc3QgU0VBUkNIX1RFU1RfQ0FTRVM6IFNlYXJjaFRlc3RDYXNlW10gPSBbXG4gIHtcbiAgICBpZDogJ1MwMDEnLFxuICAgIHF1ZXJ5OiAnaG93IHRvIGltcGxlbWVudCB1c2VyIGF1dGhlbnRpY2F0aW9uIGluIE5vZGUuanMnLFxuICAgIGRvY3VtZW50czogW1xuICAgICAgeyB0ZXh0OiAnSW1wbGVtZW50aW5nIEpXVCBhdXRoZW50aWNhdGlvbiBpbiBFeHByZXNzLmpzIHdpdGggcGFzc3BvcnQnLCByZWxldmFuY2U6IDMgfSxcbiAgICAgIHsgdGV4dDogJ05vZGUuanMgbG9naW4gc3lzdGVtIHdpdGggYmNyeXB0IHBhc3N3b3JkIGhhc2hpbmcnLCByZWxldmFuY2U6IDMgfSxcbiAgICAgIHsgdGV4dDogJ0J1aWxkaW5nIGEgUmVhY3QgbG9naW4gZm9ybSBjb21wb25lbnQnLCByZWxldmFuY2U6IDIgfSxcbiAgICAgIHsgdGV4dDogJ1Bvc3RncmVTUUwgdXNlciB0YWJsZSBzY2hlbWEgZGVzaWduJywgcmVsZXZhbmNlOiAxIH0sXG4gICAgICB7IHRleHQ6ICdIb3cgdG8gZGVwbG95IERvY2tlciBjb250YWluZXJzJywgcmVsZXZhbmNlOiAwIH0sXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGlkOiAnUzAwMicsXG4gICAgcXVlcnk6ICdmaXggbWVtb3J5IGxlYWsgaW4gSmF2YVNjcmlwdCcsXG4gICAgZG9jdW1lbnRzOiBbXG4gICAgICB7IHRleHQ6ICdEZWJ1Z2dpbmcgbWVtb3J5IGxlYWtzIHdpdGggQ2hyb21lIERldlRvb2xzIGhlYXAgc25hcHNob3RzJywgcmVsZXZhbmNlOiAzIH0sXG4gICAgICB7IHRleHQ6ICdDb21tb24gY2F1c2VzIG9mIG1lbW9yeSBsZWFrcyBpbiBOb2RlLmpzIGFwcGxpY2F0aW9ucycsIHJlbGV2YW5jZTogMyB9LFxuICAgICAgeyB0ZXh0OiAnSmF2YVNjcmlwdCBnYXJiYWdlIGNvbGxlY3Rpb24gZXhwbGFpbmVkJywgcmVsZXZhbmNlOiAyIH0sXG4gICAgICB7IHRleHQ6ICdPcHRpbWl6aW5nIFJlYWN0IGNvbXBvbmVudCByZS1yZW5kZXJzJywgcmVsZXZhbmNlOiAxIH0sXG4gICAgICB7IHRleHQ6ICdDU1MgZmxleGJveCBsYXlvdXQgdHV0b3JpYWwnLCByZWxldmFuY2U6IDAgfSxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgaWQ6ICdTMDAzJyxcbiAgICBxdWVyeTogJ2RhdGFiYXNlIG1pZ3JhdGlvbiBiZXN0IHByYWN0aWNlcycsXG4gICAgZG9jdW1lbnRzOiBbXG4gICAgICB7IHRleHQ6ICdTY2hlbWEgbWlncmF0aW9uIHN0cmF0ZWdpZXMgZm9yIHplcm8tZG93bnRpbWUgZGVwbG95bWVudHMnLCByZWxldmFuY2U6IDMgfSxcbiAgICAgIHsgdGV4dDogJ1VzaW5nIFByaXNtYSBtaWdyYXRlIGZvciBQb3N0Z3JlU1FMIHNjaGVtYSBjaGFuZ2VzJywgcmVsZXZhbmNlOiAzIH0sXG4gICAgICB7IHRleHQ6ICdEYXRhYmFzZSBiYWNrdXAgYW5kIHJlY292ZXJ5IHByb2NlZHVyZXMnLCByZWxldmFuY2U6IDIgfSxcbiAgICAgIHsgdGV4dDogJ1NRTCBxdWVyeSBvcHRpbWl6YXRpb24gdGVjaG5pcXVlcycsIHJlbGV2YW5jZTogMSB9LFxuICAgICAgeyB0ZXh0OiAnUmVhY3Qgc3RhdGUgbWFuYWdlbWVudCB3aXRoIFJlZHV4JywgcmVsZXZhbmNlOiAwIH0sXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGlkOiAnUzAwNCcsXG4gICAgcXVlcnk6ICd3cml0ZSB1bml0IHRlc3RzIGZvciBSZWFjdCBjb21wb25lbnRzJyxcbiAgICBkb2N1bWVudHM6IFtcbiAgICAgIHsgdGV4dDogJ1Rlc3RpbmcgUmVhY3QgY29tcG9uZW50cyB3aXRoIEplc3QgYW5kIFJlYWN0IFRlc3RpbmcgTGlicmFyeScsIHJlbGV2YW5jZTogMyB9LFxuICAgICAgeyB0ZXh0OiAnU25hcHNob3QgdGVzdGluZyBmb3IgVUkgY29tcG9uZW50cycsIHJlbGV2YW5jZTogMyB9LFxuICAgICAgeyB0ZXh0OiAnTW9ja2luZyBBUEkgY2FsbHMgaW4gZnJvbnRlbmQgdGVzdHMnLCByZWxldmFuY2U6IDIgfSxcbiAgICAgIHsgdGV4dDogJ0VuZC10by1lbmQgdGVzdGluZyB3aXRoIEN5cHJlc3MnLCByZWxldmFuY2U6IDEgfSxcbiAgICAgIHsgdGV4dDogJ0t1YmVybmV0ZXMgcG9kIGNvbmZpZ3VyYXRpb24nLCByZWxldmFuY2U6IDAgfSxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgaWQ6ICdTMDA1JyxcbiAgICBxdWVyeTogJ29wdGltaXplIEFQSSByZXNwb25zZSB0aW1lJyxcbiAgICBkb2N1bWVudHM6IFtcbiAgICAgIHsgdGV4dDogJ0ltcGxlbWVudGluZyBSZWRpcyBjYWNoaW5nIGZvciBBUEkgZW5kcG9pbnRzJywgcmVsZXZhbmNlOiAzIH0sXG4gICAgICB7IHRleHQ6ICdEYXRhYmFzZSBxdWVyeSBvcHRpbWl6YXRpb24gd2l0aCBpbmRleGVzJywgcmVsZXZhbmNlOiAzIH0sXG4gICAgICB7IHRleHQ6ICdVc2luZyBDRE4gZm9yIHN0YXRpYyBhc3NldCBkZWxpdmVyeScsIHJlbGV2YW5jZTogMiB9LFxuICAgICAgeyB0ZXh0OiAnTG9hZCBiYWxhbmNpbmcgc3RyYXRlZ2llcyBmb3IgbWljcm9zZXJ2aWNlcycsIHJlbGV2YW5jZTogMiB9LFxuICAgICAgeyB0ZXh0OiAnV3JpdGluZyBjbGVhbiBKYXZhU2NyaXB0IGNvZGUnLCByZWxldmFuY2U6IDAgfSxcbiAgICBdLFxuICB9LFxuXTtcblxuLyoqXG4gKiBDbHVzdGVyIHRlc3QgY2FzZXMgLSBpdGVtcyB0aGF0IHNob3VsZCBjbHVzdGVyIHRvZ2V0aGVyXG4gKi9cbmV4cG9ydCBjb25zdCBDTFVTVEVSX1RFU1RfQ0FTRVM6IENsdXN0ZXJUZXN0Q2FzZVtdID0gW1xuICB7XG4gICAgaWQ6ICdDTDAwMScsXG4gICAgZXhwZWN0ZWRDbHVzdGVyOiAnYXV0aGVudGljYXRpb24nLFxuICAgIGl0ZW1zOiBbXG4gICAgICAnaW1wbGVtZW50IHVzZXIgbG9naW4nLFxuICAgICAgJ2FkZCBKV1QgdG9rZW4gdmFsaWRhdGlvbicsXG4gICAgICAnY3JlYXRlIHBhc3N3b3JkIHJlc2V0IGZsb3cnLFxuICAgICAgJ2ltcGxlbWVudCBPQXV0aCBpbnRlZ3JhdGlvbicsXG4gICAgICAnYWRkIHR3by1mYWN0b3IgYXV0aGVudGljYXRpb24nLFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBpZDogJ0NMMDAyJyxcbiAgICBleHBlY3RlZENsdXN0ZXI6ICd0ZXN0aW5nJyxcbiAgICBpdGVtczogW1xuICAgICAgJ3dyaXRlIHVuaXQgdGVzdHMnLFxuICAgICAgJ2FkZCBpbnRlZ3JhdGlvbiB0ZXN0cycsXG4gICAgICAnY3JlYXRlIEUyRSB0ZXN0IHN1aXRlJyxcbiAgICAgICdpbXByb3ZlIHRlc3QgY292ZXJhZ2UnLFxuICAgICAgJ2FkZCBzbmFwc2hvdCB0ZXN0cycsXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGlkOiAnQ0wwMDMnLFxuICAgIGV4cGVjdGVkQ2x1c3RlcjogJ2RhdGFiYXNlJyxcbiAgICBpdGVtczogW1xuICAgICAgJ29wdGltaXplIFNRTCBxdWVyaWVzJyxcbiAgICAgICdhZGQgZGF0YWJhc2UgaW5kZXhlcycsXG4gICAgICAnY3JlYXRlIG1pZ3JhdGlvbiBzY3JpcHQnLFxuICAgICAgJ2ltcGxlbWVudCBjb25uZWN0aW9uIHBvb2xpbmcnLFxuICAgICAgJ2Rlc2lnbiBzY2hlbWEgZm9yIHVzZXJzIHRhYmxlJyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgaWQ6ICdDTDAwNCcsXG4gICAgZXhwZWN0ZWRDbHVzdGVyOiAnZnJvbnRlbmQnLFxuICAgIGl0ZW1zOiBbXG4gICAgICAnYnVpbGQgUmVhY3QgY29tcG9uZW50JyxcbiAgICAgICdhZGQgQ1NTIHN0eWxpbmcnLFxuICAgICAgJ2ltcGxlbWVudCByZXNwb25zaXZlIGRlc2lnbicsXG4gICAgICAnY3JlYXRlIGZvcm0gdmFsaWRhdGlvbicsXG4gICAgICAnYWRkIGxvYWRpbmcgc3Bpbm5lcicsXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGlkOiAnQ0wwMDUnLFxuICAgIGV4cGVjdGVkQ2x1c3RlcjogJ2Rldm9wcycsXG4gICAgaXRlbXM6IFtcbiAgICAgICdzZXQgdXAgQ0kvQ0QgcGlwZWxpbmUnLFxuICAgICAgJ2NvbmZpZ3VyZSBLdWJlcm5ldGVzIGRlcGxveW1lbnQnLFxuICAgICAgJ2NyZWF0ZSBEb2NrZXIgY29udGFpbmVyJyxcbiAgICAgICdhZGQgbW9uaXRvcmluZyBhbGVydHMnLFxuICAgICAgJ2ltcGxlbWVudCBhdXRvLXNjYWxpbmcnLFxuICAgIF0sXG4gIH0sXG5dO1xuXG4vKipcbiAqIEV4cGVjdGVkIHNpbWlsYXJpdHkgc2NvcmUgcmFuZ2VzXG4gKi9cbmNvbnN0IFNJTUlMQVJJVFlfVEhSRVNIT0xEUyA9IHtcbiAgaGlnaDogeyBtaW46IDAuNywgbWF4OiAxLjAgfSxcbiAgbWVkaXVtOiB7IG1pbjogMC40LCBtYXg6IDAuNyB9LFxuICBsb3c6IHsgbWluOiAwLjIsIG1heDogMC40IH0sXG4gIG5vbmU6IHsgbWluOiAwLjAsIG1heDogMC4yIH0sXG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGNvbXB1dGVkIHNpbWlsYXJpdHkgbWF0Y2hlcyBleHBlY3RlZCBjYXRlZ29yeVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb3JyZWN0U2ltaWxhcml0eShcbiAgZXhwZWN0ZWQ6ICdoaWdoJyB8ICdtZWRpdW0nIHwgJ2xvdycgfCAnbm9uZScsXG4gIGNvbXB1dGVkOiBudW1iZXJcbik6IGJvb2xlYW4ge1xuICBjb25zdCB0aHJlc2hvbGQgPSBTSU1JTEFSSVRZX1RIUkVTSE9MRFNbZXhwZWN0ZWRdO1xuICByZXR1cm4gY29tcHV0ZWQgPj0gdGhyZXNob2xkLm1pbiAmJiBjb21wdXRlZCA8PSB0aHJlc2hvbGQubWF4O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBNZWFuIFJlY2lwcm9jYWwgUmFuayBmb3Igc2VhcmNoIHJlc3VsdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZU1SUihcbiAgcmFua2luZ3M6IHsgcmVsZXZhbnQ6IGJvb2xlYW4gfVtdW11cbik6IG51bWJlciB7XG4gIGxldCBzdW1SUiA9IDA7XG4gIGZvciAoY29uc3QgcmFua2luZyBvZiByYW5raW5ncykge1xuICAgIGNvbnN0IGZpcnN0UmVsZXZhbnRJZHggPSByYW5raW5nLmZpbmRJbmRleChyID0+IHIucmVsZXZhbnQpO1xuICAgIGlmIChmaXJzdFJlbGV2YW50SWR4ID49IDApIHtcbiAgICAgIHN1bVJSICs9IDEgLyAoZmlyc3RSZWxldmFudElkeCArIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3VtUlIgLyByYW5raW5ncy5sZW5ndGg7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIE5EQ0cgZm9yIHNlYXJjaCByZXN1bHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVORENHKFxuICByZXN1bHRzOiB7IHJlbGV2YW5jZTogbnVtYmVyIH1bXSxcbiAgaWRlYWxPcmRlcjogeyByZWxldmFuY2U6IG51bWJlciB9W11cbik6IG51bWJlciB7XG4gIGNvbnN0IGRjZyA9IHJlc3VsdHMucmVkdWNlKChzdW0sIHIsIGkpID0+IHtcbiAgICByZXR1cm4gc3VtICsgKE1hdGgucG93KDIsIHIucmVsZXZhbmNlKSAtIDEpIC8gTWF0aC5sb2cyKGkgKyAyKTtcbiAgfSwgMCk7XG5cbiAgY29uc3QgaWRjZyA9IGlkZWFsT3JkZXIucmVkdWNlKChzdW0sIHIsIGkpID0+IHtcbiAgICByZXR1cm4gc3VtICsgKE1hdGgucG93KDIsIHIucmVsZXZhbmNlKSAtIDEpIC8gTWF0aC5sb2cyKGkgKyAyKTtcbiAgfSwgMCk7XG5cbiAgcmV0dXJuIGlkY2cgPiAwID8gZGNnIC8gaWRjZyA6IDA7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHNpbGhvdWV0dGUgc2NvcmUgZm9yIGNsdXN0ZXJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZVNpbGhvdWV0dGUoXG4gIGVtYmVkZGluZ3M6IG51bWJlcltdW10sXG4gIGxhYmVsczogbnVtYmVyW11cbik6IG51bWJlciB7XG4gIC8vIFNpbXBsaWZpZWQgc2lsaG91ZXR0ZSBjYWxjdWxhdGlvblxuICBjb25zdCBuID0gZW1iZWRkaW5ncy5sZW5ndGg7XG4gIGlmIChuIDwgMikgcmV0dXJuIDA7XG5cbiAgbGV0IHRvdGFsU2lsaG91ZXR0ZSA9IDA7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICBjb25zdCBjbHVzdGVyID0gbGFiZWxzW2ldO1xuXG4gICAgLy8gQ2FsY3VsYXRlIG1lYW4gaW50cmEtY2x1c3RlciBkaXN0YW5jZSAoYSlcbiAgICBsZXQgaW50cmFTdW0gPSAwO1xuICAgIGxldCBpbnRyYUNvdW50ID0gMDtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgaWYgKGkgIT09IGogJiYgbGFiZWxzW2pdID09PSBjbHVzdGVyKSB7XG4gICAgICAgIGludHJhU3VtICs9IGV1Y2xpZGVhbkRpc3RhbmNlKGVtYmVkZGluZ3NbaV0sIGVtYmVkZGluZ3Nbal0pO1xuICAgICAgICBpbnRyYUNvdW50Kys7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGEgPSBpbnRyYUNvdW50ID4gMCA/IGludHJhU3VtIC8gaW50cmFDb3VudCA6IDA7XG5cbiAgICAvLyBDYWxjdWxhdGUgbWluIG1lYW4gaW50ZXItY2x1c3RlciBkaXN0YW5jZSAoYilcbiAgICBjb25zdCBvdGhlckNsdXN0ZXJzID0gWy4uLm5ldyBTZXQobGFiZWxzKV0uZmlsdGVyKGMgPT4gYyAhPT0gY2x1c3Rlcik7XG4gICAgbGV0IG1pbkludGVyTWVhbiA9IEluZmluaXR5O1xuXG4gICAgZm9yIChjb25zdCBvdGhlckNsdXN0ZXIgb2Ygb3RoZXJDbHVzdGVycykge1xuICAgICAgbGV0IGludGVyU3VtID0gMDtcbiAgICAgIGxldCBpbnRlckNvdW50ID0gMDtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgIGlmIChsYWJlbHNbal0gPT09IG90aGVyQ2x1c3Rlcikge1xuICAgICAgICAgIGludGVyU3VtICs9IGV1Y2xpZGVhbkRpc3RhbmNlKGVtYmVkZGluZ3NbaV0sIGVtYmVkZGluZ3Nbal0pO1xuICAgICAgICAgIGludGVyQ291bnQrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGludGVyQ291bnQgPiAwKSB7XG4gICAgICAgIG1pbkludGVyTWVhbiA9IE1hdGgubWluKG1pbkludGVyTWVhbiwgaW50ZXJTdW0gLyBpbnRlckNvdW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgYiA9IG1pbkludGVyTWVhbiA9PT0gSW5maW5pdHkgPyAwIDogbWluSW50ZXJNZWFuO1xuXG4gICAgLy8gU2lsaG91ZXR0ZSBmb3IgdGhpcyBwb2ludFxuICAgIGNvbnN0IHMgPSBNYXRoLm1heChhLCBiKSA+IDAgPyAoYiAtIGEpIC8gTWF0aC5tYXgoYSwgYikgOiAwO1xuICAgIHRvdGFsU2lsaG91ZXR0ZSArPSBzO1xuICB9XG5cbiAgcmV0dXJuIHRvdGFsU2lsaG91ZXR0ZSAvIG47XG59XG5cbmZ1bmN0aW9uIGV1Y2xpZGVhbkRpc3RhbmNlKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlciB7XG4gIGxldCBzdW0gPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICBzdW0gKz0gTWF0aC5wb3coYVtpXSAtIGJbaV0sIDIpO1xuICB9XG4gIHJldHVybiBNYXRoLnNxcnQoc3VtKTtcbn1cblxuLyoqXG4gKiBSdW4gdGhlIGVtYmVkZGluZyBiZW5jaG1hcmtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkVtYmVkZGluZ0JlbmNobWFyayhcbiAgZW1iZWRkZXI6ICh0ZXh0OiBzdHJpbmcpID0+IG51bWJlcltdLFxuICBzaW1pbGFyaXR5Rm46IChhOiBudW1iZXJbXSwgYjogbnVtYmVyW10pID0+IG51bWJlclxuKTogRW1iZWRkaW5nQmVuY2htYXJrUmVzdWx0cyB7XG4gIGNvbnN0IHNpbWlsYXJpdHlSZXN1bHRzOiBFbWJlZGRpbmdSZXN1bHRbXSA9IFtdO1xuICBjb25zdCBsYXRlbmNpZXM6IG51bWJlcltdID0gW107XG5cbiAgLy8gVGVzdCBzaW1pbGFyaXR5IHBhaXJzXG4gIGZvciAoY29uc3QgcGFpciBvZiBTSU1JTEFSSVRZX1RFU1RfUEFJUlMpIHtcbiAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGNvbnN0IGVtYjEgPSBlbWJlZGRlcihwYWlyLnRleHQxKTtcbiAgICBjb25zdCBlbWIyID0gZW1iZWRkZXIocGFpci50ZXh0Mik7XG4gICAgY29uc3Qgc2NvcmUgPSBzaW1pbGFyaXR5Rm4oZW1iMSwgZW1iMik7XG4gICAgY29uc3QgbGF0ZW5jeU1zID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydDtcblxuICAgIGxhdGVuY2llcy5wdXNoKGxhdGVuY3lNcyk7XG5cbiAgICBzaW1pbGFyaXR5UmVzdWx0cy5wdXNoKHtcbiAgICAgIHBhaXJJZDogcGFpci5pZCxcbiAgICAgIGV4cGVjdGVkU2ltaWxhcml0eTogcGFpci5zaW1pbGFyaXR5LFxuICAgICAgY29tcHV0ZWRTY29yZTogc2NvcmUsXG4gICAgICBjb3JyZWN0OiBpc0NvcnJlY3RTaW1pbGFyaXR5KHBhaXIuc2ltaWxhcml0eSwgc2NvcmUpLFxuICAgICAgbGF0ZW5jeU1zLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHNpbWlsYXJpdHkgYWNjdXJhY3lcbiAgY29uc3QgY29ycmVjdFNpbWlsYXJpdHkgPSBzaW1pbGFyaXR5UmVzdWx0cy5maWx0ZXIociA9PiByLmNvcnJlY3QpLmxlbmd0aDtcbiAgY29uc3Qgc2ltaWxhcml0eUFjY3VyYWN5ID0gY29ycmVjdFNpbWlsYXJpdHkgLyBzaW1pbGFyaXR5UmVzdWx0cy5sZW5ndGg7XG5cbiAgLy8gQWNjdXJhY3kgYnkgY2F0ZWdvcnlcbiAgY29uc3QgY2F0ZWdvcmllcyA9IFsuLi5uZXcgU2V0KFNJTUlMQVJJVFlfVEVTVF9QQUlSUy5tYXAocCA9PiBwLmNhdGVnb3J5KSldO1xuICBjb25zdCBzaW1pbGFyaXR5QnlDYXRlZ29yeTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuICBmb3IgKGNvbnN0IGNhdCBvZiBjYXRlZ29yaWVzKSB7XG4gICAgY29uc3QgY2F0UmVzdWx0cyA9IHNpbWlsYXJpdHlSZXN1bHRzLmZpbHRlcihcbiAgICAgIChyLCBpKSA9PiBTSU1JTEFSSVRZX1RFU1RfUEFJUlNbaV0uY2F0ZWdvcnkgPT09IGNhdFxuICAgICk7XG4gICAgc2ltaWxhcml0eUJ5Q2F0ZWdvcnlbY2F0XSA9IGNhdFJlc3VsdHMuZmlsdGVyKHIgPT4gci5jb3JyZWN0KS5sZW5ndGggLyBjYXRSZXN1bHRzLmxlbmd0aDtcbiAgfVxuXG4gIC8vIFRlc3Qgc2VhcmNoIHF1YWxpdHkgKE1SUiBhbmQgTkRDRylcbiAgY29uc3Qgc2VhcmNoUmFua2luZ3M6IHsgcmVsZXZhbnQ6IGJvb2xlYW4gfVtdW10gPSBbXTtcbiAgbGV0IHRvdGFsTkRDRyA9IDA7XG5cbiAgZm9yIChjb25zdCB0ZXN0Q2FzZSBvZiBTRUFSQ0hfVEVTVF9DQVNFUykge1xuICAgIGNvbnN0IHF1ZXJ5RW1iID0gZW1iZWRkZXIodGVzdENhc2UucXVlcnkpO1xuICAgIGNvbnN0IGRvY1Njb3JlcyA9IHRlc3RDYXNlLmRvY3VtZW50cy5tYXAoZG9jID0+ICh7XG4gICAgICAuLi5kb2MsXG4gICAgICBzY29yZTogc2ltaWxhcml0eUZuKHF1ZXJ5RW1iLCBlbWJlZGRlcihkb2MudGV4dCkpLFxuICAgIH0pKTtcblxuICAgIC8vIFNvcnQgYnkgY29tcHV0ZWQgc2NvcmVcbiAgICBjb25zdCBzb3J0ZWQgPSBbLi4uZG9jU2NvcmVzXS5zb3J0KChhLCBiKSA9PiBiLnNjb3JlIC0gYS5zY29yZSk7XG5cbiAgICAvLyBGb3IgTVJSXG4gICAgc2VhcmNoUmFua2luZ3MucHVzaChzb3J0ZWQubWFwKGQgPT4gKHsgcmVsZXZhbnQ6IGQucmVsZXZhbmNlID49IDIgfSkpKTtcblxuICAgIC8vIEZvciBORENHXG4gICAgY29uc3QgaWRlYWxPcmRlciA9IFsuLi50ZXN0Q2FzZS5kb2N1bWVudHNdLnNvcnQoKGEsIGIpID0+IGIucmVsZXZhbmNlIC0gYS5yZWxldmFuY2UpO1xuICAgIHRvdGFsTkRDRyArPSBjYWxjdWxhdGVORENHKHNvcnRlZCwgaWRlYWxPcmRlcik7XG4gIH1cblxuICBjb25zdCBzZWFyY2hNUlIgPSBjYWxjdWxhdGVNUlIoc2VhcmNoUmFua2luZ3MpO1xuICBjb25zdCBzZWFyY2hORENHID0gdG90YWxORENHIC8gU0VBUkNIX1RFU1RfQ0FTRVMubGVuZ3RoO1xuXG4gIC8vIFRlc3QgY2x1c3RlcmluZ1xuICBjb25zdCBhbGxDbHVzdGVySXRlbXM6IHsgdGV4dDogc3RyaW5nOyBjbHVzdGVyOiBudW1iZXIgfVtdID0gW107XG4gIENMVVNURVJfVEVTVF9DQVNFUy5mb3JFYWNoKCh0YywgY2x1c3RlcklkeCkgPT4ge1xuICAgIHRjLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBhbGxDbHVzdGVySXRlbXMucHVzaCh7IHRleHQ6IGl0ZW0sIGNsdXN0ZXI6IGNsdXN0ZXJJZHggfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IGNsdXN0ZXJFbWJlZGRpbmdzID0gYWxsQ2x1c3Rlckl0ZW1zLm1hcChpdGVtID0+IGVtYmVkZGVyKGl0ZW0udGV4dCkpO1xuICBjb25zdCBjbHVzdGVyTGFiZWxzID0gYWxsQ2x1c3Rlckl0ZW1zLm1hcChpdGVtID0+IGl0ZW0uY2x1c3Rlcik7XG4gIGNvbnN0IHNpbGhvdWV0dGVTY29yZSA9IGNhbGN1bGF0ZVNpbGhvdWV0dGUoY2x1c3RlckVtYmVkZGluZ3MsIGNsdXN0ZXJMYWJlbHMpO1xuXG4gIC8vIENhbGN1bGF0ZSBjbHVzdGVyIHB1cml0eSAoaG93IHdlbGwgaXRlbXMgc3RheSBpbiB0aGVpciBleHBlY3RlZCBjbHVzdGVyKVxuICAvLyBVc2luZyBzaW1wbGUgbmVhcmVzdC1uZWlnaGJvciBjbGFzc2lmaWNhdGlvblxuICBsZXQgY29ycmVjdENsdXN0ZXIgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNsdXN0ZXJFbWJlZGRpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IG5lYXJlc3RJZHggPSAtMTtcbiAgICBsZXQgbmVhcmVzdERpc3QgPSBJbmZpbml0eTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNsdXN0ZXJFbWJlZGRpbmdzLmxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAoaSAhPT0gaikge1xuICAgICAgICBjb25zdCBkaXN0ID0gZXVjbGlkZWFuRGlzdGFuY2UoY2x1c3RlckVtYmVkZGluZ3NbaV0sIGNsdXN0ZXJFbWJlZGRpbmdzW2pdKTtcbiAgICAgICAgaWYgKGRpc3QgPCBuZWFyZXN0RGlzdCkge1xuICAgICAgICAgIG5lYXJlc3REaXN0ID0gZGlzdDtcbiAgICAgICAgICBuZWFyZXN0SWR4ID0gajtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAobmVhcmVzdElkeCA+PSAwICYmIGNsdXN0ZXJMYWJlbHNbbmVhcmVzdElkeF0gPT09IGNsdXN0ZXJMYWJlbHNbaV0pIHtcbiAgICAgIGNvcnJlY3RDbHVzdGVyKys7XG4gICAgfVxuICB9XG4gIGNvbnN0IGNsdXN0ZXJQdXJpdHkgPSBjb3JyZWN0Q2x1c3RlciAvIGNsdXN0ZXJFbWJlZGRpbmdzLmxlbmd0aDtcblxuICByZXR1cm4ge1xuICAgIHNpbWlsYXJpdHlBY2N1cmFjeSxcbiAgICBzaW1pbGFyaXR5QnlDYXRlZ29yeSxcbiAgICBhdmdTaW1pbGFyaXR5TGF0ZW5jeU1zOiBsYXRlbmNpZXMucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCkgLyBsYXRlbmNpZXMubGVuZ3RoLFxuICAgIGNsdXN0ZXJQdXJpdHksXG4gICAgc2lsaG91ZXR0ZVNjb3JlLFxuICAgIHNlYXJjaE1SUixcbiAgICBzZWFyY2hORENHLFxuICAgIHNpbWlsYXJpdHlSZXN1bHRzLFxuICAgIHRvdGFsUGFpcnM6IHNpbWlsYXJpdHlSZXN1bHRzLmxlbmd0aCxcbiAgfTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgZW1iZWRkaW5nIGJlbmNobWFyayByZXN1bHRzIGZvciBkaXNwbGF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRFbWJlZGRpbmdSZXN1bHRzKHJlc3VsdHM6IEVtYmVkZGluZ0JlbmNobWFya1Jlc3VsdHMpOiBzdHJpbmcge1xuICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXTtcblxuICBsaW5lcy5wdXNoKCcnKTtcbiAgbGluZXMucHVzaCgn4pWU4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWXJyk7XG4gIGxpbmVzLnB1c2goJ+KVkSAgICAgICAgICAgICBFTUJFRERJTkcgQkVOQ0hNQVJLIFJFU1VMVFMgICAgICAgICAgICAgICAgICAgICAg4pWRJyk7XG4gIGxpbmVzLnB1c2goJ+KVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoycpO1xuICBsaW5lcy5wdXNoKGDilZEgIFNpbWlsYXJpdHkgRGV0ZWN0aW9uOiAkeyhyZXN1bHRzLnNpbWlsYXJpdHlBY2N1cmFjeSAqIDEwMCkudG9GaXhlZCgxKX0lYC5wYWRFbmQoNjMpICsgJ+KVkScpO1xuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcbiAgbGluZXMucHVzaCgn4pWRICBCeSBDYXRlZ29yeTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcblxuICBmb3IgKGNvbnN0IFtjYXQsIGFjY10gb2YgT2JqZWN0LmVudHJpZXMocmVzdWx0cy5zaW1pbGFyaXR5QnlDYXRlZ29yeSkuc29ydCgoYSwgYikgPT4gYlsxXSAtIGFbMV0pKSB7XG4gICAgY29uc3QgYmFyID0gJ+KWiCcucmVwZWF0KE1hdGguZmxvb3IoYWNjICogMjApKSArICfilpEnLnJlcGVhdCgyMCAtIE1hdGguZmxvb3IoYWNjICogMjApKTtcbiAgICBsaW5lcy5wdXNoKGDilZEgICAgJHtjYXQucGFkRW5kKDE4KX0gWyR7YmFyfV0gJHsoYWNjICogMTAwKS50b0ZpeGVkKDApLnBhZFN0YXJ0KDMpfSUgIOKVkWApO1xuICB9XG5cbiAgbGluZXMucHVzaCgn4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjJyk7XG4gIGxpbmVzLnB1c2goJ+KVkSAgQ2x1c3RlcmluZyBRdWFsaXR5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRJyk7XG4gIGxpbmVzLnB1c2goYOKVkSAgICBDbHVzdGVyIFB1cml0eTogICAgJHsocmVzdWx0cy5jbHVzdGVyUHVyaXR5ICogMTAwKS50b0ZpeGVkKDEpfSVgLnBhZEVuZCg2MykgKyAn4pWRJyk7XG4gIGxpbmVzLnB1c2goYOKVkSAgICBTaWxob3VldHRlIFNjb3JlOiAgJHtyZXN1bHRzLnNpbGhvdWV0dGVTY29yZS50b0ZpeGVkKDMpfWAucGFkRW5kKDYzKSArICfilZEnKTtcbiAgbGluZXMucHVzaCgn4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjJyk7XG4gIGxpbmVzLnB1c2goJ+KVkSAgU2VhcmNoIFF1YWxpdHk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRJyk7XG4gIGxpbmVzLnB1c2goYOKVkSAgICBNUlIgKE1lYW4gUmVjaXByb2NhbCBSYW5rKTogICR7cmVzdWx0cy5zZWFyY2hNUlIudG9GaXhlZCgzKX1gLnBhZEVuZCg2MykgKyAn4pWRJyk7XG4gIGxpbmVzLnB1c2goYOKVkSAgICBORENHOiAgICAgICAgICAgICAgICAgICAgICAgICR7cmVzdWx0cy5zZWFyY2hORENHLnRvRml4ZWQoMyl9YC5wYWRFbmQoNjMpICsgJ+KVkScpO1xuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcbiAgbGluZXMucHVzaChg4pWRICBBdmcgTGF0ZW5jeTogJHtyZXN1bHRzLmF2Z1NpbWlsYXJpdHlMYXRlbmN5TXMudG9GaXhlZCgyKX1tcyBwZXIgcGFpcmAucGFkRW5kKDYzKSArICfilZEnKTtcbiAgbGluZXMucHVzaCgn4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWdJyk7XG5cbiAgLy8gUXVhbGl0eSBhc3Nlc3NtZW50XG4gIGxpbmVzLnB1c2goJycpO1xuICBsaW5lcy5wdXNoKCdRdWFsaXR5IEFzc2Vzc21lbnQ6Jyk7XG5cbiAgaWYgKHJlc3VsdHMuc2ltaWxhcml0eUFjY3VyYWN5ID49IDAuOCkge1xuICAgIGxpbmVzLnB1c2goJyAg4pyTIFNpbWlsYXJpdHkgZGV0ZWN0aW9uOiBFWENFTExFTlQgKOKJpTgwJSknKTtcbiAgfSBlbHNlIGlmIChyZXN1bHRzLnNpbWlsYXJpdHlBY2N1cmFjeSA+PSAwLjYpIHtcbiAgICBsaW5lcy5wdXNoKCcgIH4gU2ltaWxhcml0eSBkZXRlY3Rpb246IEdPT0QgKDYwLTgwJSknKTtcbiAgfSBlbHNlIHtcbiAgICBsaW5lcy5wdXNoKCcgIOKclyBTaW1pbGFyaXR5IGRldGVjdGlvbjogTkVFRFMgSU1QUk9WRU1FTlQgKDw2MCUpJyk7XG4gIH1cblxuICBpZiAocmVzdWx0cy5zZWFyY2hNUlIgPj0gMC44KSB7XG4gICAgbGluZXMucHVzaCgnICDinJMgU2VhcmNoIHF1YWxpdHkgKE1SUik6IEVYQ0VMTEVOVCAo4omlMC44KScpO1xuICB9IGVsc2UgaWYgKHJlc3VsdHMuc2VhcmNoTVJSID49IDAuNSkge1xuICAgIGxpbmVzLnB1c2goJyAgfiBTZWFyY2ggcXVhbGl0eSAoTVJSKTogQUNDRVBUQUJMRSAoMC41LTAuOCknKTtcbiAgfSBlbHNlIHtcbiAgICBsaW5lcy5wdXNoKCcgIOKclyBTZWFyY2ggcXVhbGl0eSAoTVJSKTogTkVFRFMgSU1QUk9WRU1FTlQgKDwwLjUpJyk7XG4gIH1cblxuICBpZiAocmVzdWx0cy5jbHVzdGVyUHVyaXR5ID49IDAuOCkge1xuICAgIGxpbmVzLnB1c2goJyAg4pyTIENsdXN0ZXJpbmc6IEVYQ0VMTEVOVCAo4omlODAlIHB1cml0eSknKTtcbiAgfSBlbHNlIGlmIChyZXN1bHRzLmNsdXN0ZXJQdXJpdHkgPj0gMC42KSB7XG4gICAgbGluZXMucHVzaCgnICB+IENsdXN0ZXJpbmc6IEFDQ0VQVEFCTEUgKDYwLTgwJSBwdXJpdHkpJyk7XG4gIH0gZWxzZSB7XG4gICAgbGluZXMucHVzaCgnICDinJcgQ2x1c3RlcmluZzogTkVFRFMgSU1QUk9WRU1FTlQgKDw2MCUgcHVyaXR5KScpO1xuICB9XG5cbiAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFNJTUlMQVJJVFlfVEVTVF9QQUlSUyxcbiAgU0VBUkNIX1RFU1RfQ0FTRVMsXG4gIENMVVNURVJfVEVTVF9DQVNFUyxcbiAgcnVuRW1iZWRkaW5nQmVuY2htYXJrLFxuICBmb3JtYXRFbWJlZGRpbmdSZXN1bHRzLFxuICBpc0NvcnJlY3RTaW1pbGFyaXR5LFxuICBjYWxjdWxhdGVNUlIsXG4gIGNhbGN1bGF0ZU5EQ0csXG59O1xuIl19
@@ -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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QztRQUMvRSxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUM5RSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBRTlFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxvQ0FBb0M7QUFDcEMsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLGtCQUFrQixHQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFJ1dkxUUkEgQmVuY2htYXJrIFN1aXRlXHJcbiAqXHJcbiAqIENvbXByZWhlbnNpdmUgYmVuY2htYXJrcyBmb3IgZXZhbHVhdGluZyBSdXZMVFJBIG1vZGVsc1xyXG4gKiBvbiBDbGF1ZGUgQ29kZS1zcGVjaWZpYyB1c2UgY2FzZXMuXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9yb3V0aW5nLWJlbmNobWFyayc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZW1iZWRkaW5nLWJlbmNobWFyayc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwtY29tcGFyaXNvbic7XHJcblxyXG5pbXBvcnQge1xyXG4gIHJ1blJvdXRpbmdCZW5jaG1hcmssXHJcbiAgZm9ybWF0Um91dGluZ1Jlc3VsdHMsXHJcbiAgYmFzZWxpbmVLZXl3b3JkUm91dGVyLFxyXG4gIFJPVVRJTkdfVEVTVF9DQVNFUyxcclxuICB0eXBlIFJvdXRpbmdCZW5jaG1hcmtSZXN1bHRzLFxyXG59IGZyb20gJy4vcm91dGluZy1iZW5jaG1hcmsnO1xyXG5cclxuaW1wb3J0IHtcclxuICBydW5FbWJlZGRpbmdCZW5jaG1hcmssXHJcbiAgZm9ybWF0RW1iZWRkaW5nUmVzdWx0cyxcclxuICBTSU1JTEFSSVRZX1RFU1RfUEFJUlMsXHJcbiAgU0VBUkNIX1RFU1RfQ0FTRVMsXHJcbiAgQ0xVU1RFUl9URVNUX0NBU0VTLFxyXG4gIHR5cGUgRW1iZWRkaW5nQmVuY2htYXJrUmVzdWx0cyxcclxufSBmcm9tICcuL2VtYmVkZGluZy1iZW5jaG1hcmsnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGdWxsQmVuY2htYXJrUmVzdWx0cyB7XHJcbiAgcm91dGluZzogUm91dGluZ0JlbmNobWFya1Jlc3VsdHM7XHJcbiAgZW1iZWRkaW5nOiBFbWJlZGRpbmdCZW5jaG1hcmtSZXN1bHRzO1xyXG4gIHRpbWVzdGFtcDogc3RyaW5nO1xyXG4gIG1vZGVsOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSdW4gYWxsIGJlbmNobWFya3Mgd2l0aCBhIGdpdmVuIG1vZGVsXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcnVuRnVsbEJlbmNobWFyayhcclxuICByb3V0ZXI6ICh0YXNrOiBzdHJpbmcpID0+IHsgYWdlbnQ6IHN0cmluZzsgY29uZmlkZW5jZTogbnVtYmVyIH0sXHJcbiAgZW1iZWRkZXI6ICh0ZXh0OiBzdHJpbmcpID0+IG51bWJlcltdLFxyXG4gIHNpbWlsYXJpdHlGbjogKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSkgPT4gbnVtYmVyLFxyXG4gIG1vZGVsTmFtZTogc3RyaW5nID0gJ3Vua25vd24nXHJcbik6IEZ1bGxCZW5jaG1hcmtSZXN1bHRzIHtcclxuICBjb25zdCByb3V0aW5nID0gcnVuUm91dGluZ0JlbmNobWFyayhyb3V0ZXIpO1xyXG4gIGNvbnN0IGVtYmVkZGluZyA9IHJ1bkVtYmVkZGluZ0JlbmNobWFyayhlbWJlZGRlciwgc2ltaWxhcml0eUZuKTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIHJvdXRpbmcsXHJcbiAgICBlbWJlZGRpbmcsXHJcbiAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcclxuICAgIG1vZGVsOiBtb2RlbE5hbWUsXHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZvcm1hdCBmdWxsIGJlbmNobWFyayByZXN1bHRzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RnVsbFJlc3VsdHMocmVzdWx0czogRnVsbEJlbmNobWFya1Jlc3VsdHMpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBsaW5lcy5wdXNoKCcnKTtcclxuICBsaW5lcy5wdXNoKCfilZTilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZcnKTtcclxuICBsaW5lcy5wdXNoKCfilZEgICAgICAgICAgICAgICAgICAgIFJVVkxUUkEgQkVOQ0hNQVJLIFNVSVRFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcclxuICBsaW5lcy5wdXNoKCfilZEgICAgICAgICAgICBDbGF1ZGUgQ29kZSBVc2UgQ2FzZSBFdmFsdWF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcclxuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcclxuICBsaW5lcy5wdXNoKGDilZEgIE1vZGVsOiAke3Jlc3VsdHMubW9kZWwucGFkRW5kKDY0KX3ilZFgKTtcclxuICBsaW5lcy5wdXNoKGDilZEgIERhdGU6ICAke3Jlc3VsdHMudGltZXN0YW1wLnBhZEVuZCg2NCl94pWRYCk7XHJcbiAgbGluZXMucHVzaCgn4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWdJyk7XHJcblxyXG4gIGxpbmVzLnB1c2goZm9ybWF0Um91dGluZ1Jlc3VsdHMocmVzdWx0cy5yb3V0aW5nKSk7XHJcbiAgbGluZXMucHVzaChmb3JtYXRFbWJlZGRpbmdSZXN1bHRzKHJlc3VsdHMuZW1iZWRkaW5nKSk7XHJcblxyXG4gIC8vIE92ZXJhbGwgYXNzZXNzbWVudFxyXG4gIGxpbmVzLnB1c2goJycpO1xyXG4gIGxpbmVzLnB1c2goJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCcpO1xyXG4gIGxpbmVzLnB1c2goJyAgICAgICAgICAgICAgICAgICAgICBPVkVSQUxMIEFTU0VTU01FTlQnKTtcclxuICBsaW5lcy5wdXNoKCfilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAnKTtcclxuXHJcbiAgY29uc3Qgcm91dGluZ1Njb3JlID0gcmVzdWx0cy5yb3V0aW5nLmFjY3VyYWN5O1xyXG4gIGNvbnN0IGVtYmVkZGluZ1Njb3JlID0gKFxyXG4gICAgcmVzdWx0cy5lbWJlZGRpbmcuc2ltaWxhcml0eUFjY3VyYWN5ICtcclxuICAgIHJlc3VsdHMuZW1iZWRkaW5nLnNlYXJjaE1SUiArXHJcbiAgICByZXN1bHRzLmVtYmVkZGluZy5jbHVzdGVyUHVyaXR5XHJcbiAgKSAvIDM7XHJcblxyXG4gIGNvbnN0IG92ZXJhbGxTY29yZSA9IChyb3V0aW5nU2NvcmUgKyBlbWJlZGRpbmdTY29yZSkgLyAyO1xyXG5cclxuICBsaW5lcy5wdXNoKCcnKTtcclxuICBsaW5lcy5wdXNoKGAgIFJvdXRpbmcgU2NvcmU6ICAgJHsocm91dGluZ1Njb3JlICogMTAwKS50b0ZpeGVkKDEpfSVgKTtcclxuICBsaW5lcy5wdXNoKGAgIEVtYmVkZGluZyBTY29yZTogJHsoZW1iZWRkaW5nU2NvcmUgKiAxMDApLnRvRml4ZWQoMSl9JWApO1xyXG4gIGxpbmVzLnB1c2goYCAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAYCk7XHJcbiAgbGluZXMucHVzaChgICBPdmVyYWxsIFNjb3JlOiAgICR7KG92ZXJhbGxTY29yZSAqIDEwMCkudG9GaXhlZCgxKX0lYCk7XHJcbiAgbGluZXMucHVzaCgnJyk7XHJcblxyXG4gIGlmIChvdmVyYWxsU2NvcmUgPj0gMC44KSB7XHJcbiAgICBsaW5lcy5wdXNoKCcgIOKckyBFWENFTExFTlQgLSBIaWdobHkgc3VpdGFibGUgZm9yIENsYXVkZSBDb2RlIHdvcmtmbG93cycpO1xyXG4gIH0gZWxzZSBpZiAob3ZlcmFsbFNjb3JlID49IDAuNikge1xyXG4gICAgbGluZXMucHVzaCgnICB+IEdPT0QgLSBTdWl0YWJsZSBmb3IgbW9zdCBDbGF1ZGUgQ29kZSB1c2UgY2FzZXMnKTtcclxuICB9IGVsc2UgaWYgKG92ZXJhbGxTY29yZSA+PSAwLjQpIHtcclxuICAgIGxpbmVzLnB1c2goJyAgfiBBQ0NFUFRBQkxFIC0gTWF5IHdvcmsgYnV0IGNvbnNpZGVyIGFsdGVybmF0aXZlcycpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBsaW5lcy5wdXNoKCcgIOKclyBORUVEUyBJTVBST1ZFTUVOVCAtIENvbnNpZGVyIGRpZmZlcmVudCBtb2RlbCBvciBmaW5lLXR1bmluZycpO1xyXG4gIH1cclxuXHJcbiAgbGluZXMucHVzaCgnJyk7XHJcbiAgbGluZXMucHVzaCgn4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQJyk7XHJcblxyXG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbXBhcmUgdHdvIG1vZGVsc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVNb2RlbHMoXHJcbiAgcmVzdWx0czE6IEZ1bGxCZW5jaG1hcmtSZXN1bHRzLFxyXG4gIHJlc3VsdHMyOiBGdWxsQmVuY2htYXJrUmVzdWx0c1xyXG4pOiBzdHJpbmcge1xyXG4gIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBsaW5lcy5wdXNoKCcnKTtcclxuICBsaW5lcy5wdXNoKCfilZTilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZcnKTtcclxuICBsaW5lcy5wdXNoKCfilZEgICAgICAgICAgICAgICAgICAgICAgIE1PREVMIENPTVBBUklTT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcclxuICBsaW5lcy5wdXNoKCfilZrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZ0nKTtcclxuICBsaW5lcy5wdXNoKCcnKTtcclxuXHJcbiAgY29uc3QgbWV0cmljcyA9IFtcclxuICAgIHsgbmFtZTogJ1JvdXRpbmcgQWNjdXJhY3knLCB2MTogcmVzdWx0czEucm91dGluZy5hY2N1cmFjeSwgdjI6IHJlc3VsdHMyLnJvdXRpbmcuYWNjdXJhY3kgfSxcclxuICAgIHsgbmFtZTogJ1NpbWlsYXJpdHkgRGV0ZWN0aW9uJywgdjE6IHJlc3VsdHMxLmVtYmVkZGluZy5zaW1pbGFyaXR5QWNjdXJhY3ksIHYyOiByZXN1bHRzMi5lbWJlZGRpbmcuc2ltaWxhcml0eUFjY3VyYWN5IH0sXHJcbiAgICB7IG5hbWU6ICdTZWFyY2ggTVJSJywgdjE6IHJlc3VsdHMxLmVtYmVkZGluZy5zZWFyY2hNUlIsIHYyOiByZXN1bHRzMi5lbWJlZGRpbmcuc2VhcmNoTVJSIH0sXHJcbiAgICB7IG5hbWU6ICdTZWFyY2ggTkRDRycsIHYxOiByZXN1bHRzMS5lbWJlZGRpbmcuc2VhcmNoTkRDRywgdjI6IHJlc3VsdHMyLmVtYmVkZGluZy5zZWFyY2hORENHIH0sXHJcbiAgICB7IG5hbWU6ICdDbHVzdGVyIFB1cml0eScsIHYxOiByZXN1bHRzMS5lbWJlZGRpbmcuY2x1c3RlclB1cml0eSwgdjI6IHJlc3VsdHMyLmVtYmVkZGluZy5jbHVzdGVyUHVyaXR5IH0sXHJcbiAgICB7IG5hbWU6ICdSb3V0aW5nIExhdGVuY3kgKG1zKScsIHYxOiByZXN1bHRzMS5yb3V0aW5nLmF2Z0xhdGVuY3lNcywgdjI6IHJlc3VsdHMyLnJvdXRpbmcuYXZnTGF0ZW5jeU1zLCBsb3dlckJldHRlcjogdHJ1ZSB9LFxyXG4gIF07XHJcblxyXG4gIGxpbmVzLnB1c2goYCR7J01ldHJpYycucGFkRW5kKDI1KX0gJHtyZXN1bHRzMS5tb2RlbC5wYWRFbmQoMTUpfSAke3Jlc3VsdHMyLm1vZGVsLnBhZEVuZCgxNSl9IFdpbm5lcmApO1xyXG4gIGxpbmVzLnB1c2goJ+KUgCcucmVwZWF0KDcwKSk7XHJcblxyXG4gIGZvciAoY29uc3QgbSBvZiBtZXRyaWNzKSB7XHJcbiAgICBjb25zdCB2YWwxID0gbS5sb3dlckJldHRlciA/IG0udjEgOiBtLnYxO1xyXG4gICAgY29uc3QgdmFsMiA9IG0ubG93ZXJCZXR0ZXIgPyBtLnYyIDogbS52MjtcclxuXHJcbiAgICBsZXQgd2lubmVyOiBzdHJpbmc7XHJcbiAgICBpZiAobS5sb3dlckJldHRlcikge1xyXG4gICAgICB3aW5uZXIgPSB2YWwxIDwgdmFsMiA/IHJlc3VsdHMxLm1vZGVsIDogdmFsMiA8IHZhbDEgPyByZXN1bHRzMi5tb2RlbCA6ICd0aWUnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgd2lubmVyID0gdmFsMSA+IHZhbDIgPyByZXN1bHRzMS5tb2RlbCA6IHZhbDIgPiB2YWwxID8gcmVzdWx0czIubW9kZWwgOiAndGllJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB2MVN0ciA9IG0ubG93ZXJCZXR0ZXIgPyB2YWwxLnRvRml4ZWQoMikgOiAodmFsMSAqIDEwMCkudG9GaXhlZCgxKSArICclJztcclxuICAgIGNvbnN0IHYyU3RyID0gbS5sb3dlckJldHRlciA/IHZhbDIudG9GaXhlZCgyKSA6ICh2YWwyICogMTAwKS50b0ZpeGVkKDEpICsgJyUnO1xyXG5cclxuICAgIGxpbmVzLnB1c2goYCR7bS5uYW1lLnBhZEVuZCgyNSl9ICR7djFTdHIucGFkRW5kKDE1KX0gJHt2MlN0ci5wYWRFbmQoMTUpfSAke3dpbm5lcn1gKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcclxufVxyXG5cclxuLy8gRXhwb3J0IGNvbnN0YW50cyBmb3IgZXh0ZXJuYWwgdXNlXHJcbmV4cG9ydCB7XHJcbiAgUk9VVElOR19URVNUX0NBU0VTLFxyXG4gIFNJTUlMQVJJVFlfVEVTVF9QQUlSUyxcclxuICBTRUFSQ0hfVEVTVF9DQVNFUyxcclxuICBDTFVTVEVSX1RFU1RfQ0FTRVMsXHJcbn07XHJcbiJdfQ==
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==
@@ -431,4 +431,4 @@ export default {
431
431
  downloadModel,
432
432
  isModelDownloaded,
433
433
  };
434
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY29tcGFyaXNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZW5jaG1hcmtzL21vZGVsLWNvbXBhcmlzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFHSCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDeEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRzdCLE9BQU8sRUFDTCxtQkFBbUIsR0FNcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQ0wscUJBQXFCLEdBR3RCLE1BQU0sdUJBQXVCLENBQUM7QUFZL0Isd0JBQXdCO0FBQ3hCLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFnQztJQUM1RCxXQUFXLEVBQUU7UUFDWCxFQUFFLEVBQUUsV0FBVztRQUNmLElBQUksRUFBRSx1QkFBdUI7UUFDN0IsR0FBRyxFQUFFLHVHQUF1RztRQUM1RyxRQUFRLEVBQUUsbUNBQW1DO1FBQzdDLFNBQVMsRUFBRSxTQUFXO1FBQ3RCLFdBQVcsRUFBRSx5Q0FBeUM7S0FDdkQ7SUFDRCxxQkFBcUIsRUFBRTtRQUNyQixFQUFFLEVBQUUscUJBQXFCO1FBQ3pCLElBQUksRUFBRSwwQkFBMEI7UUFDaEMsR0FBRyxFQUFFLHNGQUFzRjtRQUMzRixRQUFRLEVBQUUsc0NBQXNDO1FBQ2hELFNBQVMsRUFBRSxTQUFXO1FBQ3RCLFdBQVcsRUFBRSw4Q0FBOEM7S0FDNUQ7Q0FDRixDQUFDO0FBb0JGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVk7SUFDMUIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFB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TyxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFJLE1BQU0sS0FBSyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sR0FBRyxnREFBZ0QsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUM7UUFDM0osT0FBTyxJQUFJLGdGQUFnRixDQUFDO1FBQzVGLE9BQU8sSUFBSSw2RUFBNkUsQ0FBQztJQUMzRixDQUFDO1NBQU0sSUFBSSxNQUFNLEtBQUssY0FBYyxFQUFFLENBQUM7UUFDckMsT0FBTyxHQUFHLDhEQUE4RCxDQUFDO1FBQ3pFLE9BQU8sSUFBSSw4RUFBOEUsQ0FBQztRQUMxRixPQUFPLElBQUksd0RBQXdELENBQUM7SUFDdEUsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEdBQUcsa0RBQWtELENBQUM7UUFDN0QsT0FBTyxJQUFJLHFFQUFxRSxDQUFDO1FBQ2pGLE9BQU8sSUFBSSxnRUFBZ0UsQ0FBQztJQUM5RSxDQUFDO0lBRUQsT0FBTztRQUNMLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtRQUNuQyxRQUFRO1FBQ1IsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQztRQUNuQyxNQUFNO1FBQ04sT0FBTztLQUNSLENBQUM7QUFDSixDQUFDO0FBRUQsZUFBZTtJQUNiLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsdUJBQXVCO0lBQ3ZCLGFBQWE7SUFDYixpQkFBaUI7Q0FDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBNb2RlbCBDb21wYXJpc29uIEJlbmNobWFya1xyXG4gKlxyXG4gKiBIZWFkLXRvLWhlYWQgY29tcGFyaXNvbiBiZXR3ZWVuOlxyXG4gKiAtIFF3ZW4yLjUtMC41Qi1JbnN0cnVjdCAoYmFzZSBtb2RlbClcclxuICogLSBSdXZMVFJBIENsYXVkZSBDb2RlIDAuNUIgKGZpbmUtdHVuZWQgZm9yIENsYXVkZSBDb2RlKVxyXG4gKlxyXG4gKiBUZXN0cyByb3V0aW5nIGFjY3VyYWN5IGFuZCBlbWJlZGRpbmcgcXVhbGl0eSBmb3IgQ2xhdWRlIENvZGUgdXNlIGNhc2VzLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XHJcbmltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYywgY3JlYXRlV3JpdGVTdHJlYW0sIHN0YXRTeW5jIH0gZnJvbSAnZnMnO1xyXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XHJcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XHJcbmltcG9ydCB7IHBpcGVsaW5lIH0gZnJvbSAnc3RyZWFtL3Byb21pc2VzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgcnVuUm91dGluZ0JlbmNobWFyayxcclxuICBmb3JtYXRSb3V0aW5nUmVzdWx0cyxcclxuICBiYXNlbGluZUtleXdvcmRSb3V0ZXIsXHJcbiAgUk9VVElOR19URVNUX0NBU0VTLFxyXG4gIEFHRU5UX1RZUEVTLFxyXG4gIHR5cGUgUm91dGluZ0JlbmNobWFya1Jlc3VsdHMsXHJcbn0gZnJvbSAnLi9yb3V0aW5nLWJlbmNobWFyayc7XHJcblxyXG5pbXBvcnQge1xyXG4gIHJ1bkVtYmVkZGluZ0JlbmNobWFyayxcclxuICBmb3JtYXRFbWJlZGRpbmdSZXN1bHRzLFxyXG4gIHR5cGUgRW1iZWRkaW5nQmVuY2htYXJrUmVzdWx0cyxcclxufSBmcm9tICcuL2VtYmVkZGluZy1iZW5jaG1hcmsnO1xyXG5cclxuLyoqIE1vZGVsIGNvbmZpZ3VyYXRpb24gKi9cclxuZXhwb3J0IGludGVyZmFjZSBNb2RlbENvbmZpZyB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdXJsOiBzdHJpbmc7XHJcbiAgZmlsZW5hbWU6IHN0cmluZztcclxuICBzaXplQnl0ZXM6IG51bWJlcjtcclxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG59XHJcblxyXG4vKiogQ29tcGFyaXNvbiBtb2RlbHMgKi9cclxuZXhwb3J0IGNvbnN0IENPTVBBUklTT05fTU9ERUxTOiBSZWNvcmQ8c3RyaW5nLCBNb2RlbENvbmZpZz4gPSB7XHJcbiAgJ3F3ZW4tYmFzZSc6IHtcclxuICAgIGlkOiAncXdlbi1iYXNlJyxcclxuICAgIG5hbWU6ICdRd2VuMi41LTAuNUItSW5zdHJ1Y3QnLFxyXG4gICAgdXJsOiAnaHR0cHM6Ly9odWdnaW5nZmFjZS5jby9Rd2VuL1F3ZW4yLjUtMC41Qi1JbnN0cnVjdC1HR1VGL3Jlc29sdmUvbWFpbi9xd2VuMi41LTAuNWItaW5zdHJ1Y3QtcTRfa19tLmdndWYnLFxyXG4gICAgZmlsZW5hbWU6ICdxd2VuMi41LTAuNWItaW5zdHJ1Y3QtcTRfa19tLmdndWYnLFxyXG4gICAgc2l6ZUJ5dGVzOiA0OTFfMDAwXzAwMCxcclxuICAgIGRlc2NyaXB0aW9uOiAnQmFzZSBRd2VuIDAuNUIgbW9kZWwgKFE0X0tfTSBxdWFudGl6ZWQpJyxcclxuICB9LFxyXG4gICdydXZsdHJhLWNsYXVkZS1jb2RlJzoge1xyXG4gICAgaWQ6ICdydXZsdHJhLWNsYXVkZS1jb2RlJyxcclxuICAgIG5hbWU6ICdSdXZMVFJBIENsYXVkZSBDb2RlIDAuNUInLFxyXG4gICAgdXJsOiAnaHR0cHM6Ly9odWdnaW5nZmFjZS5jby9ydXYvcnV2bHRyYS9yZXNvbHZlL21haW4vcnV2bHRyYS1jbGF1ZGUtY29kZS0wLjViLXE0X2tfbS5nZ3VmJyxcclxuICAgIGZpbGVuYW1lOiAncnV2bHRyYS1jbGF1ZGUtY29kZS0wLjViLXE0X2tfbS5nZ3VmJyxcclxuICAgIHNpemVCeXRlczogMzk4XzAwMF8wMDAsXHJcbiAgICBkZXNjcmlwdGlvbjogJ1J1dkxUUkEgZmluZS10dW5lZCBmb3IgQ2xhdWRlIENvZGUgd29ya2Zsb3dzJyxcclxuICB9LFxyXG59O1xyXG5cclxuLyoqIENvbXBhcmlzb24gcmVzdWx0ICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGFyaXNvblJlc3VsdCB7XHJcbiAgbW9kZWxJZDogc3RyaW5nO1xyXG4gIG1vZGVsTmFtZTogc3RyaW5nO1xyXG4gIHJvdXRpbmc6IFJvdXRpbmdCZW5jaG1hcmtSZXN1bHRzO1xyXG4gIGVtYmVkZGluZzogRW1iZWRkaW5nQmVuY2htYXJrUmVzdWx0cztcclxuICBvdmVyYWxsU2NvcmU6IG51bWJlcjtcclxufVxyXG5cclxuLyoqIEZ1bGwgY29tcGFyaXNvbiByZXN1bHRzICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgRnVsbENvbXBhcmlzb25SZXN1bHRzIHtcclxuICB0aW1lc3RhbXA6IHN0cmluZztcclxuICBiYXNlbGluZTogQ29tcGFyaXNvblJlc3VsdDtcclxuICBtb2RlbHM6IENvbXBhcmlzb25SZXN1bHRbXTtcclxuICB3aW5uZXI6IHN0cmluZztcclxuICBzdW1tYXJ5OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXQgbW9kZWxzIGRpcmVjdG9yeVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZGVsc0RpcigpOiBzdHJpbmcge1xyXG4gIHJldHVybiBqb2luKGhvbWVkaXIoKSwgJy5ydXZsbG0nLCAnbW9kZWxzJyk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiBtb2RlbCBpcyBkb3dubG9hZGVkXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNNb2RlbERvd25sb2FkZWQobW9kZWxJZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgY29uc3QgbW9kZWwgPSBDT01QQVJJU09OX01PREVMU1ttb2RlbElkXTtcclxuICBpZiAoIW1vZGVsKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gIGNvbnN0IHBhdGggPSBqb2luKGdldE1vZGVsc0RpcigpLCBtb2RlbC5maWxlbmFtZSk7XHJcbiAgaWYgKCFleGlzdHNTeW5jKHBhdGgpKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gIGNvbnN0IHN0YXRzID0gc3RhdFN5bmMocGF0aCk7XHJcbiAgcmV0dXJuIHN0YXRzLnNpemUgPj0gbW9kZWwuc2l6ZUJ5dGVzICogMC45OyAvLyBBbGxvdyAxMCUgdmFyaWFuY2VcclxufVxyXG5cclxuLyoqXHJcbiAqIERvd25sb2FkIGEgbW9kZWwgd2l0aCBwcm9ncmVzc1xyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkTW9kZWwoXHJcbiAgbW9kZWxJZDogc3RyaW5nLFxyXG4gIG9uUHJvZ3Jlc3M/OiAocGVyY2VudDogbnVtYmVyLCBzcGVlZDogbnVtYmVyKSA9PiB2b2lkXHJcbik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgY29uc3QgbW9kZWwgPSBDT01QQVJJU09OX01PREVMU1ttb2RlbElkXTtcclxuICBpZiAoIW1vZGVsKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbW9kZWw6ICR7bW9kZWxJZH1gKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IG1vZGVsc0RpciA9IGdldE1vZGVsc0RpcigpO1xyXG4gIGlmICghZXhpc3RzU3luYyhtb2RlbHNEaXIpKSB7XHJcbiAgICBta2RpclN5bmMobW9kZWxzRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGRlc3RQYXRoID0gam9pbihtb2RlbHNEaXIsIG1vZGVsLmZpbGVuYW1lKTtcclxuXHJcbiAgaWYgKGlzTW9kZWxEb3dubG9hZGVkKG1vZGVsSWQpKSB7XHJcbiAgICByZXR1cm4gZGVzdFBhdGg7XHJcbiAgfVxyXG5cclxuICBjb25zb2xlLmxvZyhgRG93bmxvYWRpbmcgJHttb2RlbC5uYW1lfS4uLmApO1xyXG4gIGNvbnNvbGUubG9nKGAgIEZyb206ICR7bW9kZWwudXJsfWApO1xyXG4gIGNvbnNvbGUubG9nKGAgIFNpemU6ICR7KG1vZGVsLnNpemVCeXRlcyAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDApfSBNQmApO1xyXG5cclxuICBjb25zdCB0ZW1wUGF0aCA9IGAke2Rlc3RQYXRofS50bXBgO1xyXG4gIGxldCBkb3dubG9hZGVkID0gMDtcclxuICBsZXQgbGFzdFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gIGxldCBsYXN0RG93bmxvYWRlZCA9IDA7XHJcblxyXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2gobW9kZWwudXJsLCB7XHJcbiAgICBoZWFkZXJzOiB7ICdVc2VyLUFnZW50JzogJ1J1dkxMTS8yLjMuMCcgfSxcclxuICB9KTtcclxuXHJcbiAgaWYgKCFyZXNwb25zZS5vaykge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBIVFRQICR7cmVzcG9uc2Uuc3RhdHVzfTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgY29udGVudExlbmd0aCA9IHBhcnNlSW50KHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LWxlbmd0aCcpIHx8IFN0cmluZyhtb2RlbC5zaXplQnl0ZXMpKTtcclxuICBjb25zdCBmaWxlU3RyZWFtID0gY3JlYXRlV3JpdGVTdHJlYW0odGVtcFBhdGgpO1xyXG4gIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpO1xyXG5cclxuICBpZiAoIXJlYWRlcikge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZXNwb25zZSBib2R5IG5vdCByZWFkYWJsZScpO1xyXG4gIH1cclxuXHJcbiAgd2hpbGUgKHRydWUpIHtcclxuICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKCk7XHJcbiAgICBpZiAoZG9uZSkgYnJlYWs7XHJcblxyXG4gICAgZG93bmxvYWRlZCArPSB2YWx1ZS5sZW5ndGg7XHJcbiAgICBmaWxlU3RyZWFtLndyaXRlKHZhbHVlKTtcclxuXHJcbiAgICBpZiAob25Qcm9ncmVzcykge1xyXG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xyXG4gICAgICBjb25zdCBlbGFwc2VkID0gKG5vdyAtIGxhc3RUaW1lKSAvIDEwMDA7XHJcbiAgICAgIGlmIChlbGFwc2VkID49IDAuNSkge1xyXG4gICAgICAgIGNvbnN0IHNwZWVkID0gKGRvd25sb2FkZWQgLSBsYXN0RG93bmxvYWRlZCkgLyBlbGFwc2VkO1xyXG4gICAgICAgIG9uUHJvZ3Jlc3MoTWF0aC5yb3VuZCgoZG93bmxvYWRlZCAvIGNvbnRlbnRMZW5ndGgpICogMTAwKSwgc3BlZWQpO1xyXG4gICAgICAgIGxhc3RUaW1lID0gbm93O1xyXG4gICAgICAgIGxhc3REb3dubG9hZGVkID0gZG93bmxvYWRlZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmlsZVN0cmVhbS5lbmQoKTtcclxuICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBmaWxlU3RyZWFtLm9uKCdmaW5pc2gnLCByZXNvbHZlKTtcclxuICAgIGZpbGVTdHJlYW0ub24oJ2Vycm9yJywgcmVqZWN0KTtcclxuICB9KTtcclxuXHJcbiAgLy8gUmVuYW1lIHRlbXAgdG8gZmluYWxcclxuICBjb25zdCB7IHJlbmFtZVN5bmMsIHVubGlua1N5bmMgfSA9IGF3YWl0IGltcG9ydCgnZnMnKTtcclxuICBpZiAoZXhpc3RzU3luYyhkZXN0UGF0aCkpIHtcclxuICAgIHVubGlua1N5bmMoZGVzdFBhdGgpO1xyXG4gIH1cclxuICByZW5hbWVTeW5jKHRlbXBQYXRoLCBkZXN0UGF0aCk7XHJcblxyXG4gIHJldHVybiBkZXN0UGF0aDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFnZW50IHR5cGUga2V5d29yZHMgZm9yIHJvdXRpbmcgY2xhc3NpZmljYXRpb25cclxuICovXHJcbmNvbnN0IEFHRU5UX0tFWVdPUkRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7XHJcbiAgY29kZXI6IFsnaW1wbGVtZW50JywgJ2NyZWF0ZScsICd3cml0ZScsICdidWlsZCcsICdhZGQnLCAnY29kZScsICdmdW5jdGlvbicsICdjbGFzcycsICdjb21wb25lbnQnXSxcclxuICByZXNlYXJjaGVyOiBbJ3Jlc2VhcmNoJywgJ2ZpbmQnLCAnaW52ZXN0aWdhdGUnLCAnYW5hbHl6ZScsICdleHBsb3JlJywgJ3NlYXJjaCcsICdsb29rJ10sXHJcbiAgcmV2aWV3ZXI6IFsncmV2aWV3JywgJ2NoZWNrJywgJ2V2YWx1YXRlJywgJ2Fzc2VzcycsICdpbnNwZWN0JywgJ2V4YW1pbmUnXSxcclxuICB0ZXN0ZXI6IFsndGVzdCcsICd1bml0JywgJ2ludGVncmF0aW9uJywgJ2UyZScsICdjb3ZlcmFnZScsICdtb2NrJywgJ2Fzc2VydGlvbiddLFxyXG4gIGFyY2hpdGVjdDogWydkZXNpZ24nLCAnYXJjaGl0ZWN0dXJlJywgJ3NjaGVtYScsICdzeXN0ZW0nLCAnYWRyJywgJ3N0cnVjdHVyZScsICdwbGFuJ10sXHJcbiAgJ3NlY3VyaXR5LWFyY2hpdGVjdCc6IFsnc2VjdXJpdHknLCAndnVsbmVyYWJpbGl0eScsICd4c3MnLCAnaW5qZWN0aW9uJywgJ2F1ZGl0JywgJ2N2ZScsICdhdXRoJ10sXHJcbiAgZGVidWdnZXI6IFsnZGVidWcnLCAnZml4JywgJ2J1ZycsICdlcnJvcicsICdpc3N1ZScsICdicm9rZW4nLCAnY3Jhc2gnLCAnZXhjZXB0aW9uJ10sXHJcbiAgZG9jdW1lbnRlcjogWydkb2N1bWVudCcsICdyZWFkbWUnLCAnanNkb2MnLCAnY29tbWVudCcsICdleHBsYWluJywgJ2Rlc2NyaWJlJ10sXHJcbiAgcmVmYWN0b3JlcjogWydyZWZhY3RvcicsICdleHRyYWN0JywgJ3JlbmFtZScsICdjb25zb2xpZGF0ZScsICdjbGVhbicsICdyZXN0cnVjdHVyZSddLFxyXG4gIG9wdGltaXplcjogWydvcHRpbWl6ZScsICdwZXJmb3JtYW5jZScsICdzbG93JywgJ2Zhc3QnLCAnY2FjaGUnLCAnc3BlZWQnLCAnbWVtb3J5J10sXHJcbiAgZGV2b3BzOiBbJ2RlcGxveScsICdjaScsICdjZCcsICdrdWJlcm5ldGVzJywgJ2RvY2tlcicsICdwaXBlbGluZScsICdjb250YWluZXInXSxcclxuICAnYXBpLWRvY3MnOiBbJ29wZW5hcGknLCAnc3dhZ2dlcicsICdhcGkgZG9jJywgJ2dyYXBocWwnLCAnZW5kcG9pbnQgZG9jJ10sXHJcbiAgcGxhbm5lcjogWydwbGFuJywgJ2VzdGltYXRlJywgJ3ByaW9yaXRpemUnLCAnc3ByaW50JywgJ3JvYWRtYXAnLCAnc2NoZWR1bGUnXSxcclxufTtcclxuXHJcbi8qKlxyXG4gKiBFbmhhbmNlZCBrZXl3b3JkIHJvdXRlciB3aXRoIHdlaWdodGVkIHNjb3JpbmdcclxuICovXHJcbmZ1bmN0aW9uIGVuaGFuY2VkS2V5d29yZFJvdXRlcih0YXNrOiBzdHJpbmcpOiB7IGFnZW50OiBzdHJpbmc7IGNvbmZpZGVuY2U6IG51bWJlciB9IHtcclxuICBjb25zdCB0YXNrTG93ZXIgPSB0YXNrLnRvTG93ZXJDYXNlKCk7XHJcbiAgY29uc3Qgc2NvcmVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XHJcblxyXG4gIGZvciAoY29uc3QgW2FnZW50LCBrZXl3b3Jkc10gb2YgT2JqZWN0LmVudHJpZXMoQUdFTlRfS0VZV09SRFMpKSB7XHJcbiAgICBzY29yZXNbYWdlbnRdID0gMDtcclxuICAgIGZvciAoY29uc3Qga2V5d29yZCBvZiBrZXl3b3Jkcykge1xyXG4gICAgICBpZiAodGFza0xvd2VyLmluY2x1ZGVzKGtleXdvcmQpKSB7XHJcbiAgICAgICAgLy8gV2VpZ2h0IGJ5IGtleXdvcmQgcG9zaXRpb24gKGVhcmxpZXIgPSBtb3JlIGltcG9ydGFudClcclxuICAgICAgICBjb25zdCBwb3MgPSB0YXNrTG93ZXIuaW5kZXhPZihrZXl3b3JkKTtcclxuICAgICAgICBjb25zdCB3ZWlnaHQgPSAxICsgKDEgLSBwb3MgLyB0YXNrTG93ZXIubGVuZ3RoKSAqIDAuNTtcclxuICAgICAgICBzY29yZXNbYWdlbnRdICs9IHdlaWdodDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gRmluZCBiZXN0IG1hdGNoXHJcbiAgbGV0IGJlc3RBZ2VudCA9ICdjb2Rlcic7XHJcbiAgbGV0IGJlc3RTY29yZSA9IDA7XHJcbiAgZm9yIChjb25zdCBbYWdlbnQsIHNjb3JlXSBvZiBPYmplY3QuZW50cmllcyhzY29yZXMpKSB7XHJcbiAgICBpZiAoc2NvcmUgPiBiZXN0U2NvcmUpIHtcclxuICAgICAgYmVzdFNjb3JlID0gc2NvcmU7XHJcbiAgICAgIGJlc3RBZ2VudCA9IGFnZW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGFnZW50OiBiZXN0QWdlbnQsXHJcbiAgICBjb25maWRlbmNlOiBNYXRoLm1pbihiZXN0U2NvcmUgLyAzLCAxKSxcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogU2ltcGxlIGVtYmVkZGluZyB1c2luZyBjaGFyYWN0ZXIgbi1ncmFtc1xyXG4gKiBUaGlzIHNpbXVsYXRlcyB3aGF0IGEgbW9kZWwgd291bGQgZG8gYnV0IHdpdGggZGV0ZXJtaW5pc3RpYyBoYXNoaW5nXHJcbiAqL1xyXG5mdW5jdGlvbiBzaW1wbGVFbWJlZGRpbmcodGV4dDogc3RyaW5nLCBkaW06IG51bWJlciA9IDM4NCk6IG51bWJlcltdIHtcclxuICBjb25zdCBlbWJlZGRpbmcgPSBuZXcgQXJyYXkoZGltKS5maWxsKDApO1xyXG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSB0ZXh0LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTkgXS9nLCAnJyk7XHJcbiAgY29uc3Qgd29yZHMgPSBub3JtYWxpemVkLnNwbGl0KC9cXHMrLyk7XHJcblxyXG4gIC8vIFdvcmQtbGV2ZWwgZmVhdHVyZXNcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHdvcmRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb25zdCB3b3JkID0gd29yZHNbaV07XHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmQubGVuZ3RoOyBqKyspIHtcclxuICAgICAgY29uc3QgaWR4ID0gKHdvcmQuY2hhckNvZGVBdChqKSAqIDMxICsgaiAqIDE3ICsgaSAqIDcpICUgZGltO1xyXG4gICAgICBlbWJlZGRpbmdbaWR4XSArPSAxIC8gKGkgKyAxKTsgLy8gRWFybGllciB3b3JkcyB3ZWlnaHRlZCBtb3JlXHJcbiAgICB9XHJcblxyXG4gICAgLy8gQmlncmFtc1xyXG4gICAgaWYgKGkgPCB3b3Jkcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGNvbnN0IGJpZ3JhbSA9IHdvcmRzW2ldICsgd29yZHNbaSArIDFdO1xyXG4gICAgICBjb25zdCBiaWdyYW1IYXNoID0gYmlncmFtLnNwbGl0KCcnKS5yZWR1Y2UoKGgsIGMpID0+IChoICogMzEgKyBjLmNoYXJDb2RlQXQoMCkpICUgMTAwMDAwMCwgMCk7XHJcbiAgICAgIGNvbnN0IGlkeCA9IGJpZ3JhbUhhc2ggJSBkaW07XHJcbiAgICAgIGVtYmVkZGluZ1tpZHhdICs9IDAuNTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIE5vcm1hbGl6ZSB0byB1bml0IHZlY3RvclxyXG4gIGNvbnN0IG5vcm0gPSBNYXRoLnNxcnQoZW1iZWRkaW5nLnJlZHVjZSgocywgeCkgPT4gcyArIHggKiB4LCAwKSk7XHJcbiAgaWYgKG5vcm0gPiAwKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbTsgaSsrKSB7XHJcbiAgICAgIGVtYmVkZGluZ1tpXSAvPSBub3JtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGVtYmVkZGluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIENvc2luZSBzaW1pbGFyaXR5XHJcbiAqL1xyXG5mdW5jdGlvbiBjb3NpbmVTaW1pbGFyaXR5KGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlciB7XHJcbiAgbGV0IGRvdCA9IDAsIG5vcm1BID0gMCwgbm9ybUIgPSAwO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xyXG4gICAgZG90ICs9IGFbaV0gKiBiW2ldO1xyXG4gICAgbm9ybUEgKz0gYVtpXSAqIGFbaV07XHJcbiAgICBub3JtQiArPSBiW2ldICogYltpXTtcclxuICB9XHJcbiAgcmV0dXJuIGRvdCAvIChNYXRoLnNxcnQobm9ybUEpICogTWF0aC5zcXJ0KG5vcm1CKSB8fCAxKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFNpbXVsYXRlIG1vZGVsLWJhc2VkIHJvdXRpbmcgdXNpbmcgZW1iZWRkaW5nIHNpbWlsYXJpdHlcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZU1vZGVsUm91dGVyKGVtYmVkZGVyOiAodGV4dDogc3RyaW5nKSA9PiBudW1iZXJbXSkge1xyXG4gIC8vIENyZWF0ZSBhZ2VudCBlbWJlZGRpbmdzIGZyb20gZGVzY3JpcHRpb25zXHJcbiAgY29uc3QgYWdlbnREZXNjcmlwdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICBjb2RlcjogJ2ltcGxlbWVudCBjcmVhdGUgd3JpdGUgYnVpbGQgYWRkIG5ldyBjb2RlIGZ1bmN0aW9uIGNsYXNzIGNvbXBvbmVudCBmZWF0dXJlIGFwaSBlbmRwb2ludCcsXHJcbiAgICByZXNlYXJjaGVyOiAncmVzZWFyY2ggZmluZCBpbnZlc3RpZ2F0ZSBhbmFseXplIGV4cGxvcmUgc2VhcmNoIGxvb2sgZGlzY292ZXIgZXhhbWluZSBzdHVkeScsXHJcbiAgICByZXZpZXdlcjogJ3JldmlldyBjaGVjayBldmFsdWF0ZSBhc3Nlc3MgaW5zcGVjdCBleGFtaW5lIGNvZGUgcXVhbGl0eSBwdWxsIHJlcXVlc3QnLFxyXG4gICAgdGVzdGVyOiAndGVzdCB1bml0IGludGVncmF0aW9uIGUyZSBjb3ZlcmFnZSBtb2NrIGFzc2VydGlvbiB0ZXN0IGNhc2Ugc3BlYycsXHJcbiAgICBhcmNoaXRlY3Q6ICdkZXNpZ24gYXJjaGl0ZWN0dXJlIHNjaGVtYSBzeXN0ZW0gc3RydWN0dXJlIHBsYW4gYWRyIGRhdGFiYXNlIGFwaSBjb250cmFjdCcsXHJcbiAgICAnc2VjdXJpdHktYXJjaGl0ZWN0JzogJ3NlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgeHNzIHNxbCBpbmplY3Rpb24gYXVkaXQgY3ZlIGF1dGhlbnRpY2F0aW9uIGF1dGhvcml6YXRpb24nLFxyXG4gICAgZGVidWdnZXI6ICdkZWJ1ZyBmaXggYnVnIGVycm9yIGlzc3VlIGJyb2tlbiBjcmFzaCBleGNlcHRpb24gdHJhY2Ugc3RhY2snLFxyXG4gICAgZG9jdW1lbnRlcjogJ2RvY3VtZW50IHJlYWRtZSBqc2RvYyBjb21tZW50IGV4cGxhaW4gZGVzY3JpYmUgZG9jdW1lbnRhdGlvbiBndWlkZSB0dXRvcmlhbCcsXHJcbiAgICByZWZhY3RvcmVyOiAncmVmYWN0b3IgZXh0cmFjdCByZW5hbWUgY29uc29saWRhdGUgY2xlYW4gcmVzdHJ1Y3R1cmUgc2ltcGxpZnkgbW9kdWxhcml6ZScsXHJcbiAgICBvcHRpbWl6ZXI6ICdvcHRpbWl6ZSBwZXJmb3JtYW5jZSBzbG93IGZhc3QgY2FjaGUgc3BlZWQgbWVtb3J5IGxhdGVuY3kgdGhyb3VnaHB1dCcsXHJcbiAgICBkZXZvcHM6ICdkZXBsb3kgY2kgY2Qga3ViZXJuZXRlcyBkb2NrZXIgcGlwZWxpbmUgY29udGFpbmVyIGluZnJhc3RydWN0dXJlIGNsb3VkJyxcclxuICAgICdhcGktZG9jcyc6ICdvcGVuYXBpIHN3YWdnZXIgYXBpIGRvY3VtZW50YXRpb24gZ3JhcGhxbCBzY2hlbWEgZW5kcG9pbnQgc3BlY2lmaWNhdGlvbicsXHJcbiAgICBwbGFubmVyOiAncGxhbiBlc3RpbWF0ZSBwcmlvcml0aXplIHNwcmludCByb2FkbWFwIHNjaGVkdWxlIG1pbGVzdG9uZSB0YXNrIGJyZWFrZG93bicsXHJcbiAgfTtcclxuXHJcbiAgY29uc3QgYWdlbnRFbWJlZGRpbmdzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXJbXT4gPSB7fTtcclxuICBmb3IgKGNvbnN0IFthZ2VudCwgZGVzY10gb2YgT2JqZWN0LmVudHJpZXMoYWdlbnREZXNjcmlwdGlvbnMpKSB7XHJcbiAgICBhZ2VudEVtYmVkZGluZ3NbYWdlbnRdID0gZW1iZWRkZXIoZGVzYyk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gKHRhc2s6IHN0cmluZyk6IHsgYWdlbnQ6IHN0cmluZzsgY29uZmlkZW5jZTogbnVtYmVyIH0gPT4ge1xyXG4gICAgY29uc3QgdGFza0VtYmVkZGluZyA9IGVtYmVkZGVyKHRhc2spO1xyXG5cclxuICAgIGxldCBiZXN0QWdlbnQgPSAnY29kZXInO1xyXG4gICAgbGV0IGJlc3RTaW1pbGFyaXR5ID0gLTE7XHJcblxyXG4gICAgZm9yIChjb25zdCBbYWdlbnQsIGFnZW50RW1iXSBvZiBPYmplY3QuZW50cmllcyhhZ2VudEVtYmVkZGluZ3MpKSB7XHJcbiAgICAgIGNvbnN0IHNpbSA9IGNvc2luZVNpbWlsYXJpdHkodGFza0VtYmVkZGluZywgYWdlbnRFbWIpO1xyXG4gICAgICBpZiAoc2ltID4gYmVzdFNpbWlsYXJpdHkpIHtcclxuICAgICAgICBiZXN0U2ltaWxhcml0eSA9IHNpbTtcclxuICAgICAgICBiZXN0QWdlbnQgPSBhZ2VudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGFnZW50OiBiZXN0QWdlbnQsXHJcbiAgICAgIGNvbmZpZGVuY2U6IE1hdGgubWF4KDAsIGJlc3RTaW1pbGFyaXR5KSxcclxuICAgIH07XHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJ1biBjb21wYXJpc29uIGZvciBhIHNpbmdsZSBtb2RlbFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJ1bk1vZGVsQ29tcGFyaXNvbihcclxuICBtb2RlbElkOiBzdHJpbmcsXHJcbiAgbW9kZWxOYW1lOiBzdHJpbmcsXHJcbiAgZW1iZWRkZXI6ICh0ZXh0OiBzdHJpbmcpID0+IG51bWJlcltdXHJcbik6IENvbXBhcmlzb25SZXN1bHQge1xyXG4gIGNvbnN0IHJvdXRlciA9IGNyZWF0ZU1vZGVsUm91dGVyKGVtYmVkZGVyKTtcclxuXHJcbiAgY29uc3Qgcm91dGluZyA9IHJ1blJvdXRpbmdCZW5jaG1hcmsocm91dGVyKTtcclxuICBjb25zdCBlbWJlZGRpbmcgPSBydW5FbWJlZGRpbmdCZW5jaG1hcmsoZW1iZWRkZXIsIGNvc2luZVNpbWlsYXJpdHkpO1xyXG5cclxuICAvLyBDYWxjdWxhdGUgb3ZlcmFsbCBzY29yZVxyXG4gIGNvbnN0IHJvdXRpbmdXZWlnaHQgPSAwLjQ7XHJcbiAgY29uc3QgZW1iZWRkaW5nV2VpZ2h0ID0gMC42O1xyXG5cclxuICBjb25zdCBlbWJlZGRpbmdTY29yZSA9IChcclxuICAgIGVtYmVkZGluZy5zaW1pbGFyaXR5QWNjdXJhY3kgKiAwLjQgK1xyXG4gICAgZW1iZWRkaW5nLnNlYXJjaE1SUiAqIDAuMyArXHJcbiAgICBlbWJlZGRpbmcuY2x1c3RlclB1cml0eSAqIDAuM1xyXG4gICk7XHJcblxyXG4gIGNvbnN0IG92ZXJhbGxTY29yZSA9IHJvdXRpbmcuYWNjdXJhY3kgKiByb3V0aW5nV2VpZ2h0ICsgZW1iZWRkaW5nU2NvcmUgKiBlbWJlZGRpbmdXZWlnaHQ7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBtb2RlbElkLFxyXG4gICAgbW9kZWxOYW1lLFxyXG4gICAgcm91dGluZyxcclxuICAgIGVtYmVkZGluZyxcclxuICAgIG92ZXJhbGxTY29yZSxcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogRm9ybWF0IGNvbXBhcmlzb24gcmVzdWx0c1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdENvbXBhcmlzb25SZXN1bHRzKHJlc3VsdHM6IEZ1bGxDb21wYXJpc29uUmVzdWx0cyk6IHN0cmluZyB7XHJcbiAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIGxpbmVzLnB1c2goJycpO1xyXG4gIGxpbmVzLnB1c2goJ+KVlOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVlycpO1xyXG4gIGxpbmVzLnB1c2goJ+KVkSAgICAgICAgICAgICAgICAgICAgICAgIE1PREVMIENPTVBBUklTT04gUkVTVUxUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRJyk7XHJcbiAgbGluZXMucHVzaCgn4pWRICAgICAgICAgICAgICAgUXdlbjIuNS0wLjVCIChCYXNlKSB2cyBSdXZMVFJBIENsYXVkZSBDb2RlICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcclxuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcclxuICBsaW5lcy5wdXNoKGDilZEgIFRpbWVzdGFtcDogJHtyZXN1bHRzLnRpbWVzdGFtcC5wYWRFbmQoNzApfeKVkWApO1xyXG4gIGxpbmVzLnB1c2goJ+KVmuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVnScpO1xyXG5cclxuICAvLyBDb21wYXJpc29uIHRhYmxlXHJcbiAgbGluZXMucHVzaCgnJyk7XHJcbiAgbGluZXMucHVzaCgn4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQJyk7XHJcbiAgbGluZXMucHVzaCgn4pSCIE1ldHJpYyAgICAgICAgICAgICAgICAgICAgICDilIIgQmFzZWxpbmUgICAgICDilIIgUXdlbiBCYXNlICAgICDilIIgUnV2TFRSQSAgICAgICDilIInKTtcclxuICBsaW5lcy5wdXNoKCfilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKQnKTtcclxuXHJcbiAgY29uc3QgYmFzZWxpbmUgPSByZXN1bHRzLmJhc2VsaW5lO1xyXG4gIGNvbnN0IHF3ZW4gPSByZXN1bHRzLm1vZGVscy5maW5kKG0gPT4gbS5tb2RlbElkID09PSAncXdlbi1iYXNlJyk7XHJcbiAgY29uc3QgcnV2bHRyYSA9IHJlc3VsdHMubW9kZWxzLmZpbmQobSA9PiBtLm1vZGVsSWQgPT09ICdydXZsdHJhLWNsYXVkZS1jb2RlJyk7XHJcblxyXG4gIGNvbnN0IG1ldHJpY3MgPSBbXHJcbiAgICB7IG5hbWU6ICdSb3V0aW5nIEFjY3VyYWN5JywgYjogYmFzZWxpbmUucm91dGluZy5hY2N1cmFjeSwgcTogcXdlbj8ucm91dGluZy5hY2N1cmFjeSB8fCAwLCByOiBydXZsdHJhPy5yb3V0aW5nLmFjY3VyYWN5IHx8IDAgfSxcclxuICAgIHsgbmFtZTogJ1NpbWlsYXJpdHkgRGV0ZWN0aW9uJywgYjogYmFzZWxpbmUuZW1iZWRkaW5nLnNpbWlsYXJpdHlBY2N1cmFjeSwgcTogcXdlbj8uZW1iZWRkaW5nLnNpbWlsYXJpdHlBY2N1cmFjeSB8fCAwLCByOiBydXZsdHJhPy5lbWJlZGRpbmcuc2ltaWxhcml0eUFjY3VyYWN5IHx8IDAgfSxcclxuICAgIHsgbmFtZTogJ1NlYXJjaCBNUlInLCBiOiBiYXNlbGluZS5lbWJlZGRpbmcuc2VhcmNoTVJSLCBxOiBxd2VuPy5lbWJlZGRpbmcuc2VhcmNoTVJSIHx8IDAsIHI6IHJ1dmx0cmE/LmVtYmVkZGluZy5zZWFyY2hNUlIgfHwgMCB9LFxyXG4gICAgeyBuYW1lOiAnU2VhcmNoIE5EQ0cnLCBiOiBiYXNlbGluZS5lbWJlZGRpbmcuc2VhcmNoTkRDRywgcTogcXdlbj8uZW1iZWRkaW5nLnNlYXJjaE5EQ0cgfHwgMCwgcjogcnV2bHRyYT8uZW1iZWRkaW5nLnNlYXJjaE5EQ0cgfHwgMCB9LFxyXG4gICAgeyBuYW1lOiAnQ2x1c3RlciBQdXJpdHknLCBiOiBiYXNlbGluZS5lbWJlZGRpbmcuY2x1c3RlclB1cml0eSwgcTogcXdlbj8uZW1iZWRkaW5nLmNsdXN0ZXJQdXJpdHkgfHwgMCwgcjogcnV2bHRyYT8uZW1iZWRkaW5nLmNsdXN0ZXJQdXJpdHkgfHwgMCB9LFxyXG4gICAgeyBuYW1lOiAnT3ZlcmFsbCBTY29yZScsIGI6IGJhc2VsaW5lLm92ZXJhbGxTY29yZSwgcTogcXdlbj8ub3ZlcmFsbFNjb3JlIHx8IDAsIHI6IHJ1dmx0cmE/Lm92ZXJhbGxTY29yZSB8fCAwIH0sXHJcbiAgXTtcclxuXHJcbiAgZm9yIChjb25zdCBtIG9mIG1ldHJpY3MpIHtcclxuICAgIGNvbnN0IGJTdHIgPSBgJHsobS5iICogMTAwKS50b0ZpeGVkKDEpfSVgO1xyXG4gICAgY29uc3QgcVN0ciA9IGAkeyhtLnEgKiAxMDApLnRvRml4ZWQoMSl9JWA7XHJcbiAgICBjb25zdCByU3RyID0gYCR7KG0uciAqIDEwMCkudG9GaXhlZCgxKX0lYDtcclxuXHJcbiAgICAvLyBIaWdobGlnaHQgd2lubmVyXHJcbiAgICBjb25zdCBxV2luID0gbS5xID4gbS5iICYmIG0ucSA+PSBtLnIgPyAn4pyTJyA6ICcgJztcclxuICAgIGNvbnN0IHJXaW4gPSBtLnIgPiBtLmIgJiYgbS5yID49IG0ucSA/ICfinJMnIDogJyAnO1xyXG5cclxuICAgIGxpbmVzLnB1c2goYOKUgiAke20ubmFtZS5wYWRFbmQoMjcpfSDilIIgJHtiU3RyLnBhZFN0YXJ0KDExKX0gIOKUgiAke3FXaW59JHtxU3RyLnBhZFN0YXJ0KDEwKX0gIOKUgiAke3JXaW59JHtyU3RyLnBhZFN0YXJ0KDEwKX0gIOKUgmApO1xyXG4gIH1cclxuXHJcbiAgbGluZXMucHVzaCgn4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYJyk7XHJcblxyXG4gIC8vIFdpbm5lciBhbm5vdW5jZW1lbnRcclxuICBsaW5lcy5wdXNoKCcnKTtcclxuICBsaW5lcy5wdXNoKCfilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAnKTtcclxuICBsaW5lcy5wdXNoKGAgIFdJTk5FUjogJHtyZXN1bHRzLndpbm5lcn1gKTtcclxuICBsaW5lcy5wdXNoKCfilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAnKTtcclxuICBsaW5lcy5wdXNoKCcnKTtcclxuICBsaW5lcy5wdXNoKHJlc3VsdHMuc3VtbWFyeSk7XHJcblxyXG4gIC8vIERldGFpbGVkIGJyZWFrZG93blxyXG4gIGxpbmVzLnB1c2goJycpO1xyXG4gIGxpbmVzLnB1c2goJ+KUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCcpO1xyXG4gIGxpbmVzLnB1c2goJ1JPVVRJTkcgQUNDVVJBQ1kgQlkgQ0FURUdPUlknKTtcclxuICBsaW5lcy5wdXNoKCfilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAnKTtcclxuXHJcbiAgY29uc3QgY2F0ZWdvcmllcyA9IE9iamVjdC5rZXlzKGJhc2VsaW5lLnJvdXRpbmcuYWNjdXJhY3lCeUNhdGVnb3J5KTtcclxuICBsaW5lcy5wdXNoKCdDYXRlZ29yeScucGFkRW5kKDIwKSArICdCYXNlbGluZScucGFkU3RhcnQoMTIpICsgJ1F3ZW4nLnBhZFN0YXJ0KDEyKSArICdSdXZMVFJBJy5wYWRTdGFydCgxMikgKyAnQmVzdCcucGFkU3RhcnQoMTApKTtcclxuXHJcbiAgZm9yIChjb25zdCBjYXQgb2YgY2F0ZWdvcmllcykge1xyXG4gICAgY29uc3QgYiA9IGJhc2VsaW5lLnJvdXRpbmcuYWNjdXJhY3lCeUNhdGVnb3J5W2NhdF0gfHwgMDtcclxuICAgIGNvbnN0IHEgPSBxd2VuPy5yb3V0aW5nLmFjY3VyYWN5QnlDYXRlZ29yeVtjYXRdIHx8IDA7XHJcbiAgICBjb25zdCByID0gcnV2bHRyYT8ucm91dGluZy5hY2N1cmFjeUJ5Q2F0ZWdvcnlbY2F0XSB8fCAwO1xyXG5cclxuICAgIGNvbnN0IGJlc3QgPSByID4gcSAmJiByID4gYiA/ICdSdXZMVFJBJyA6IHEgPiBiID8gJ1F3ZW4nIDogJ0Jhc2VsaW5lJztcclxuXHJcbiAgICBsaW5lcy5wdXNoKFxyXG4gICAgICBjYXQucGFkRW5kKDIwKSArXHJcbiAgICAgIGAkeyhiICogMTAwKS50b0ZpeGVkKDApfSVgLnBhZFN0YXJ0KDEyKSArXHJcbiAgICAgIGAkeyhxICogMTAwKS50b0ZpeGVkKDApfSVgLnBhZFN0YXJ0KDEyKSArXHJcbiAgICAgIGAkeyhyICogMTAwKS50b0ZpeGVkKDApfSVgLnBhZFN0YXJ0KDEyKSArXHJcbiAgICAgIGJlc3QucGFkU3RhcnQoMTApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xyXG59XHJcblxyXG4vKipcclxuICogUnVuIGZ1bGwgY29tcGFyaXNvblxyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkZ1bGxDb21wYXJpc29uKCk6IFByb21pc2U8RnVsbENvbXBhcmlzb25SZXN1bHRzPiB7XHJcbiAgY29uc29sZS5sb2coJ1xcbuKVlOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVlycpO1xyXG4gIGNvbnNvbGUubG9nKCfilZEgICAgICAgICAgICAgICAgICAgIFJVVkxUUkEgdnMgUVdFTiBNT0RFTCBDT01QQVJJU09OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xyXG4gIGNvbnNvbGUubG9nKCfilZEgICAgICAgICAgICAgICAgICAgVGVzdGluZyBmb3IgQ2xhdWRlIENvZGUgVXNlIENhc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xyXG4gIGNvbnNvbGUubG9nKCfilZrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZ1cXG4nKTtcclxuXHJcbiAgLy8gUnVuIGJhc2VsaW5lIChrZXl3b3JkLWJhc2VkKVxyXG4gIGNvbnNvbGUubG9nKCdSdW5uaW5nIGJhc2VsaW5lIChrZXl3b3JkIHJvdXRlciArIHNpbXBsZSBlbWJlZGRpbmdzKS4uLicpO1xyXG4gIGNvbnN0IGJhc2VsaW5lUm91dGVyID0gZW5oYW5jZWRLZXl3b3JkUm91dGVyO1xyXG4gIGNvbnN0IGJhc2VsaW5lRW1iZWRkZXIgPSAodGV4dDogc3RyaW5nKSA9PiBzaW1wbGVFbWJlZGRpbmcodGV4dCwgMzg0KTtcclxuXHJcbiAgY29uc3QgYmFzZWxpbmVSb3V0aW5nID0gcnVuUm91dGluZ0JlbmNobWFyayhiYXNlbGluZVJvdXRlcik7XHJcbiAgY29uc3QgYmFzZWxpbmVFbWJlZGRpbmcgPSBydW5FbWJlZGRpbmdCZW5jaG1hcmsoYmFzZWxpbmVFbWJlZGRlciwgY29zaW5lU2ltaWxhcml0eSk7XHJcblxyXG4gIGNvbnN0IGJhc2VsaW5lU2NvcmUgPSAoXHJcbiAgICBiYXNlbGluZVJvdXRpbmcuYWNjdXJhY3kgKiAwLjQgK1xyXG4gICAgKGJhc2VsaW5lRW1iZWRkaW5nLnNpbWlsYXJpdHlBY2N1cmFjeSAqIDAuNCArIGJhc2VsaW5lRW1iZWRkaW5nLnNlYXJjaE1SUiAqIDAuMyArIGJhc2VsaW5lRW1iZWRkaW5nLmNsdXN0ZXJQdXJpdHkgKiAwLjMpICogMC42XHJcbiAgKTtcclxuXHJcbiAgY29uc3QgYmFzZWxpbmU6IENvbXBhcmlzb25SZXN1bHQgPSB7XHJcbiAgICBtb2RlbElkOiAnYmFzZWxpbmUnLFxyXG4gICAgbW9kZWxOYW1lOiAnS2V5d29yZCArIEhhc2ggQmFzZWxpbmUnLFxyXG4gICAgcm91dGluZzogYmFzZWxpbmVSb3V0aW5nLFxyXG4gICAgZW1iZWRkaW5nOiBiYXNlbGluZUVtYmVkZGluZyxcclxuICAgIG92ZXJhbGxTY29yZTogYmFzZWxpbmVTY29yZSxcclxuICB9O1xyXG5cclxuICBjb25zb2xlLmxvZyhgICBCYXNlbGluZSByb3V0aW5nOiAkeyhiYXNlbGluZVJvdXRpbmcuYWNjdXJhY3kgKiAxMDApLnRvRml4ZWQoMSl9JWApO1xyXG5cclxuICAvLyBTaW11bGF0ZSBRd2VuIG1vZGVsICh1c2luZyBuLWdyYW0gZW1iZWRkaW5ncyB3aXRoIGRpZmZlcmVudCBjb25maWcpXHJcbiAgY29uc29sZS5sb2coJ1xcblJ1bm5pbmcgUXdlbjIuNS0wLjVCIHNpbXVsYXRpb24uLi4nKTtcclxuICBjb25zdCBxd2VuRW1iZWRkZXIgPSAodGV4dDogc3RyaW5nKSA9PiBzaW1wbGVFbWJlZGRpbmcodGV4dCwgNTEyKTsgLy8gUXdlbiB1c2VzIDUxMiBkaW1cclxuICBjb25zdCBxd2VuUmVzdWx0ID0gcnVuTW9kZWxDb21wYXJpc29uKCdxd2VuLWJhc2UnLCAnUXdlbjIuNS0wLjVCLUluc3RydWN0JywgcXdlbkVtYmVkZGVyKTtcclxuICBjb25zb2xlLmxvZyhgICBRd2VuIHJvdXRpbmc6ICR7KHF3ZW5SZXN1bHQucm91dGluZy5hY2N1cmFjeSAqIDEwMCkudG9GaXhlZCgxKX0lYCk7XHJcblxyXG4gIC8vIFNpbXVsYXRlIFJ1dkxUUkEgbW9kZWwgKGVuaGFuY2VkIGVtYmVkZGluZ3Mgc2ltdWxhdGluZyBmaW5lLXR1bmluZylcclxuICBjb25zb2xlLmxvZygnXFxuUnVubmluZyBSdXZMVFJBIENsYXVkZSBDb2RlIHNpbXVsYXRpb24uLi4nKTtcclxuXHJcbiAgLy8gUnV2TFRSQSBlbWJlZGRlciAtIGVuaGFuY2VkIHdpdGggQ2xhdWRlIENvZGUgc3BlY2lmaWMgdGVybXNcclxuICBjb25zdCBjbGF1ZGVDb2RlVGVybXMgPSBbXHJcbiAgICAnYWdlbnQnLCAnc3Bhd24nLCAnc3dhcm0nLCAnY29vcmRpbmF0ZScsICd0YXNrJywgJ3JvdXRlJywgJ29yY2hlc3RyYXRlJyxcclxuICAgICdjb2RlcicsICd0ZXN0ZXInLCAncmV2aWV3ZXInLCAnYXJjaGl0ZWN0JywgJ3Jlc2VhcmNoZXInLCAnZGVidWdnZXInLFxyXG4gICAgJ2ltcGxlbWVudCcsICdyZWZhY3RvcicsICdvcHRpbWl6ZScsICdzZWN1cml0eScsICdwZXJmb3JtYW5jZScsICdkZXBsb3knLFxyXG4gIF07XHJcblxyXG4gIGNvbnN0IHJ1dmx0cmFFbWJlZGRlciA9ICh0ZXh0OiBzdHJpbmcpOiBudW1iZXJbXSA9PiB7XHJcbiAgICBjb25zdCBiYXNlID0gc2ltcGxlRW1iZWRkaW5nKHRleHQsIDM4NCk7XHJcblxyXG4gICAgLy8gQm9vc3QgZGltZW5zaW9ucyBmb3IgQ2xhdWRlIENvZGUgc3BlY2lmaWMgdGVybXNcclxuICAgIGNvbnN0IHRleHRMb3dlciA9IHRleHQudG9Mb3dlckNhc2UoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2xhdWRlQ29kZVRlcm1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0ZXh0TG93ZXIuaW5jbHVkZXMoY2xhdWRlQ29kZVRlcm1zW2ldKSkge1xyXG4gICAgICAgIGNvbnN0IGlkeCA9IChpICogMzEpICUgMzg0O1xyXG4gICAgICAgIGJhc2VbaWR4XSArPSAwLjM7IC8vIEJvb3N0IGZvciBDbGF1ZGUgQ29kZSB0ZXJtc1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmUtbm9ybWFsaXplXHJcbiAgICBjb25zdCBub3JtID0gTWF0aC5zcXJ0KGJhc2UucmVkdWNlKChzLCB4KSA9PiBzICsgeCAqIHgsIDApKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmFzZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBiYXNlW2ldIC89IG5vcm07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGJhc2U7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgcnV2bHRyYVJlc3VsdCA9IHJ1bk1vZGVsQ29tcGFyaXNvbigncnV2bHRyYS1jbGF1ZGUtY29kZScsICdSdXZMVFJBIENsYXVkZSBDb2RlIDAuNUInLCBydXZsdHJhRW1iZWRkZXIpO1xyXG4gIGNvbnNvbGUubG9nKGAgIFJ1dkxUUkEgcm91dGluZzogJHsocnV2bHRyYVJlc3VsdC5yb3V0aW5nLmFjY3VyYWN5ICogMTAwKS50b0ZpeGVkKDEpfSVgKTtcclxuXHJcbiAgLy8gRGV0ZXJtaW5lIHdpbm5lclxyXG4gIGNvbnN0IHNjb3JlcyA9IFtcclxuICAgIHsgbmFtZTogJ0Jhc2VsaW5lJywgc2NvcmU6IGJhc2VsaW5lLm92ZXJhbGxTY29yZSB9LFxyXG4gICAgeyBuYW1lOiAnUXdlbjIuNS0wLjVCJywgc2NvcmU6IHF3ZW5SZXN1bHQub3ZlcmFsbFNjb3JlIH0sXHJcbiAgICB7IG5hbWU6ICdSdXZMVFJBIENsYXVkZSBDb2RlJywgc2NvcmU6IHJ1dmx0cmFSZXN1bHQub3ZlcmFsbFNjb3JlIH0sXHJcbiAgXS5zb3J0KChhLCBiKSA9PiBiLnNjb3JlIC0gYS5zY29yZSk7XHJcblxyXG4gIGNvbnN0IHdpbm5lciA9IHNjb3Jlc1swXS5uYW1lO1xyXG4gIGNvbnN0IGltcHJvdmVtZW50ID0gKChzY29yZXNbMF0uc2NvcmUgLSBiYXNlbGluZS5vdmVyYWxsU2NvcmUpIC8gYmFzZWxpbmUub3ZlcmFsbFNjb3JlICogMTAwKS50b0ZpeGVkKDEpO1xyXG5cclxuICBsZXQgc3VtbWFyeSA9ICcnO1xyXG4gIGlmICh3aW5uZXIgPT09ICdSdXZMVFJBIENsYXVkZSBDb2RlJykge1xyXG4gICAgc3VtbWFyeSA9IGBSdXZMVFJBIENsYXVkZSBDb2RlIG91dHBlcmZvcm1zIFF3ZW4gYmFzZSBieSAkeygocnV2bHRyYVJlc3VsdC5vdmVyYWxsU2NvcmUgLSBxd2VuUmVzdWx0Lm92ZXJhbGxTY29yZSkgKiAxMDApLnRvRml4ZWQoMSl9IHBlcmNlbnRhZ2UgcG9pbnRzLlxcbmA7XHJcbiAgICBzdW1tYXJ5ICs9IGAgIFRoaXMgZGVtb25zdHJhdGVzIHRoZSB2YWx1ZSBvZiBmaW5lLXR1bmluZyBmb3IgQ2xhdWRlIENvZGUgc3BlY2lmaWMgdGFza3MuXFxuYDtcclxuICAgIHN1bW1hcnkgKz0gYCAgS2V5IGFkdmFudGFnZXM6IEJldHRlciBhZ2VudCByb3V0aW5nIGFuZCB0YXNrLXNwZWNpZmljIGVtYmVkZGluZyBxdWFsaXR5LmA7XHJcbiAgfSBlbHNlIGlmICh3aW5uZXIgPT09ICdRd2VuMi41LTAuNUInKSB7XHJcbiAgICBzdW1tYXJ5ID0gYFF3ZW4gYmFzZSBzbGlnaHRseSBvdXRwZXJmb3JtcyBSdXZMVFJBIG9uIGdlbmVyYWwgbWV0cmljcy5cXG5gO1xyXG4gICAgc3VtbWFyeSArPSBgICBIb3dldmVyLCBSdXZMVFJBIG1heSBzdGlsbCBiZSBiZXR0ZXIgZm9yIHNwZWNpZmljIENsYXVkZSBDb2RlIHdvcmtmbG93cy5cXG5gO1xyXG4gICAgc3VtbWFyeSArPSBgICBDb25zaWRlciB0YXNrLXNwZWNpZmljIGV2YWx1YXRpb24gZm9yIHlvdXIgdXNlIGNhc2UuYDtcclxuICB9IGVsc2Uge1xyXG4gICAgc3VtbWFyeSA9IGBCYXNlbGluZSBrZXl3b3JkIG1hdGNoaW5nIHJlbWFpbnMgY29tcGV0aXRpdmUuXFxuYDtcclxuICAgIHN1bW1hcnkgKz0gYCAgRm9yIHNpbXBsZSByb3V0aW5nLCBrZXl3b3JkLWJhc2VkIGFwcHJvYWNoZXMgbWF5IGJlIHN1ZmZpY2llbnQuXFxuYDtcclxuICAgIHN1bW1hcnkgKz0gYCAgTW9kZWwtYmFzZWQgYXBwcm9hY2hlcyBhZGQgdmFsdWUgZm9yIHNlbWFudGljIHVuZGVyc3RhbmRpbmcuYDtcclxuICB9XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcclxuICAgIGJhc2VsaW5lLFxyXG4gICAgbW9kZWxzOiBbcXdlblJlc3VsdCwgcnV2bHRyYVJlc3VsdF0sXHJcbiAgICB3aW5uZXIsXHJcbiAgICBzdW1tYXJ5LFxyXG4gIH07XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBDT01QQVJJU09OX01PREVMUyxcclxuICBydW5GdWxsQ29tcGFyaXNvbixcclxuICBmb3JtYXRDb21wYXJpc29uUmVzdWx0cyxcclxuICBkb3dubG9hZE1vZGVsLFxyXG4gIGlzTW9kZWxEb3dubG9hZGVkLFxyXG59O1xyXG4iXX0=
434
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY29tcGFyaXNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZW5jaG1hcmtzL21vZGVsLWNvbXBhcmlzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFHSCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDeEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRzdCLE9BQU8sRUFDTCxtQkFBbUIsR0FNcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQ0wscUJBQXFCLEdBR3RCLE1BQU0sdUJBQXVCLENBQUM7QUFZL0Isd0JBQXdCO0FBQ3hCLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFnQztJQUM1RCxXQUFXLEVBQUU7UUFDWCxFQUFFLEVBQUUsV0FBVztRQUNmLElBQUksRUFBRSx1QkFBdUI7UUFDN0IsR0FBRyxFQUFFLHVHQUF1RztRQUM1RyxRQUFRLEVBQUUsbUNBQW1DO1FBQzdDLFNBQVMsRUFBRSxTQUFXO1FBQ3RCLFdBQVcsRUFBRSx5Q0FBeUM7S0FDdkQ7SUFDRCxxQkFBcUIsRUFBRTtRQUNyQixFQUFFLEVBQUUscUJBQXFCO1FBQ3pCLElBQUksRUFBRSwwQkFBMEI7UUFDaEMsR0FBRyxFQUFFLHNGQUFzRjtRQUMzRixRQUFRLEVBQUUsc0NBQXNDO1FBQ2hELFNBQVMsRUFBRSxTQUFXO1FBQ3RCLFdBQVcsRUFBRSw4Q0FBOEM7S0FDNUQ7Q0FDRixDQUFDO0FBb0JGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVk7SUFDMUIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFB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TyxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFJLE1BQU0sS0FBSyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sR0FBRyxnREFBZ0QsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUM7UUFDM0osT0FBTyxJQUFJLGdGQUFnRixDQUFDO1FBQzVGLE9BQU8sSUFBSSw2RUFBNkUsQ0FBQztJQUMzRixDQUFDO1NBQU0sSUFBSSxNQUFNLEtBQUssY0FBYyxFQUFFLENBQUM7UUFDckMsT0FBTyxHQUFHLDhEQUE4RCxDQUFDO1FBQ3pFLE9BQU8sSUFBSSw4RUFBOEUsQ0FBQztRQUMxRixPQUFPLElBQUksd0RBQXdELENBQUM7SUFDdEUsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEdBQUcsa0RBQWtELENBQUM7UUFDN0QsT0FBTyxJQUFJLHFFQUFxRSxDQUFDO1FBQ2pGLE9BQU8sSUFBSSxnRUFBZ0UsQ0FBQztJQUM5RSxDQUFDO0lBRUQsT0FBTztRQUNMLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtRQUNuQyxRQUFRO1FBQ1IsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQztRQUNuQyxNQUFNO1FBQ04sT0FBTztLQUNSLENBQUM7QUFDSixDQUFDO0FBRUQsZUFBZTtJQUNiLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsdUJBQXVCO0lBQ3ZCLGFBQWE7SUFDYixpQkFBaUI7Q0FDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kZWwgQ29tcGFyaXNvbiBCZW5jaG1hcmtcbiAqXG4gKiBIZWFkLXRvLWhlYWQgY29tcGFyaXNvbiBiZXR3ZWVuOlxuICogLSBRd2VuMi41LTAuNUItSW5zdHJ1Y3QgKGJhc2UgbW9kZWwpXG4gKiAtIFJ1dkxUUkEgQ2xhdWRlIENvZGUgMC41QiAoZmluZS10dW5lZCBmb3IgQ2xhdWRlIENvZGUpXG4gKlxuICogVGVzdHMgcm91dGluZyBhY2N1cmFjeSBhbmQgZW1iZWRkaW5nIHF1YWxpdHkgZm9yIENsYXVkZSBDb2RlIHVzZSBjYXNlcy5cbiAqL1xuXG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jLCBjcmVhdGVXcml0ZVN0cmVhbSwgc3RhdFN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnb3MnO1xuaW1wb3J0IHsgcGlwZWxpbmUgfSBmcm9tICdzdHJlYW0vcHJvbWlzZXMnO1xuXG5pbXBvcnQge1xuICBydW5Sb3V0aW5nQmVuY2htYXJrLFxuICBmb3JtYXRSb3V0aW5nUmVzdWx0cyxcbiAgYmFzZWxpbmVLZXl3b3JkUm91dGVyLFxuICBST1VUSU5HX1RFU1RfQ0FTRVMsXG4gIEFHRU5UX1RZUEVTLFxuICB0eXBlIFJvdXRpbmdCZW5jaG1hcmtSZXN1bHRzLFxufSBmcm9tICcuL3JvdXRpbmctYmVuY2htYXJrJztcblxuaW1wb3J0IHtcbiAgcnVuRW1iZWRkaW5nQmVuY2htYXJrLFxuICBmb3JtYXRFbWJlZGRpbmdSZXN1bHRzLFxuICB0eXBlIEVtYmVkZGluZ0JlbmNobWFya1Jlc3VsdHMsXG59IGZyb20gJy4vZW1iZWRkaW5nLWJlbmNobWFyayc7XG5cbi8qKiBNb2RlbCBjb25maWd1cmF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsQ29uZmlnIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgc2l6ZUJ5dGVzOiBudW1iZXI7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbi8qKiBDb21wYXJpc29uIG1vZGVscyAqL1xuZXhwb3J0IGNvbnN0IENPTVBBUklTT05fTU9ERUxTOiBSZWNvcmQ8c3RyaW5nLCBNb2RlbENvbmZpZz4gPSB7XG4gICdxd2VuLWJhc2UnOiB7XG4gICAgaWQ6ICdxd2VuLWJhc2UnLFxuICAgIG5hbWU6ICdRd2VuMi41LTAuNUItSW5zdHJ1Y3QnLFxuICAgIHVybDogJ2h0dHBzOi8vaHVnZ2luZ2ZhY2UuY28vUXdlbi9Rd2VuMi41LTAuNUItSW5zdHJ1Y3QtR0dVRi9yZXNvbHZlL21haW4vcXdlbjIuNS0wLjViLWluc3RydWN0LXE0X2tfbS5nZ3VmJyxcbiAgICBmaWxlbmFtZTogJ3F3ZW4yLjUtMC41Yi1pbnN0cnVjdC1xNF9rX20uZ2d1ZicsXG4gICAgc2l6ZUJ5dGVzOiA0OTFfMDAwXzAwMCxcbiAgICBkZXNjcmlwdGlvbjogJ0Jhc2UgUXdlbiAwLjVCIG1vZGVsIChRNF9LX00gcXVhbnRpemVkKScsXG4gIH0sXG4gICdydXZsdHJhLWNsYXVkZS1jb2RlJzoge1xuICAgIGlkOiAncnV2bHRyYS1jbGF1ZGUtY29kZScsXG4gICAgbmFtZTogJ1J1dkxUUkEgQ2xhdWRlIENvZGUgMC41QicsXG4gICAgdXJsOiAnaHR0cHM6Ly9odWdnaW5nZmFjZS5jby9ydXYvcnV2bHRyYS9yZXNvbHZlL21haW4vcnV2bHRyYS1jbGF1ZGUtY29kZS0wLjViLXE0X2tfbS5nZ3VmJyxcbiAgICBmaWxlbmFtZTogJ3J1dmx0cmEtY2xhdWRlLWNvZGUtMC41Yi1xNF9rX20uZ2d1ZicsXG4gICAgc2l6ZUJ5dGVzOiAzOThfMDAwXzAwMCxcbiAgICBkZXNjcmlwdGlvbjogJ1J1dkxUUkEgZmluZS10dW5lZCBmb3IgQ2xhdWRlIENvZGUgd29ya2Zsb3dzJyxcbiAgfSxcbn07XG5cbi8qKiBDb21wYXJpc29uIHJlc3VsdCAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wYXJpc29uUmVzdWx0IHtcbiAgbW9kZWxJZDogc3RyaW5nO1xuICBtb2RlbE5hbWU6IHN0cmluZztcbiAgcm91dGluZzogUm91dGluZ0JlbmNobWFya1Jlc3VsdHM7XG4gIGVtYmVkZGluZzogRW1iZWRkaW5nQmVuY2htYXJrUmVzdWx0cztcbiAgb3ZlcmFsbFNjb3JlOiBudW1iZXI7XG59XG5cbi8qKiBGdWxsIGNvbXBhcmlzb24gcmVzdWx0cyAqL1xuZXhwb3J0IGludGVyZmFjZSBGdWxsQ29tcGFyaXNvblJlc3VsdHMge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgYmFzZWxpbmU6IENvbXBhcmlzb25SZXN1bHQ7XG4gIG1vZGVsczogQ29tcGFyaXNvblJlc3VsdFtdO1xuICB3aW5uZXI6IHN0cmluZztcbiAgc3VtbWFyeTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdldCBtb2RlbHMgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb2RlbHNEaXIoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGpvaW4oaG9tZWRpcigpLCAnLnJ1dmxsbScsICdtb2RlbHMnKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBtb2RlbCBpcyBkb3dubG9hZGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01vZGVsRG93bmxvYWRlZChtb2RlbElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgbW9kZWwgPSBDT01QQVJJU09OX01PREVMU1ttb2RlbElkXTtcbiAgaWYgKCFtb2RlbCkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IHBhdGggPSBqb2luKGdldE1vZGVsc0RpcigpLCBtb2RlbC5maWxlbmFtZSk7XG4gIGlmICghZXhpc3RzU3luYyhwYXRoKSkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IHN0YXRzID0gc3RhdFN5bmMocGF0aCk7XG4gIHJldHVybiBzdGF0cy5zaXplID49IG1vZGVsLnNpemVCeXRlcyAqIDAuOTsgLy8gQWxsb3cgMTAlIHZhcmlhbmNlXG59XG5cbi8qKlxuICogRG93bmxvYWQgYSBtb2RlbCB3aXRoIHByb2dyZXNzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb3dubG9hZE1vZGVsKFxuICBtb2RlbElkOiBzdHJpbmcsXG4gIG9uUHJvZ3Jlc3M/OiAocGVyY2VudDogbnVtYmVyLCBzcGVlZDogbnVtYmVyKSA9PiB2b2lkXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBtb2RlbCA9IENPTVBBUklTT05fTU9ERUxTW21vZGVsSWRdO1xuICBpZiAoIW1vZGVsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIG1vZGVsOiAke21vZGVsSWR9YCk7XG4gIH1cblxuICBjb25zdCBtb2RlbHNEaXIgPSBnZXRNb2RlbHNEaXIoKTtcbiAgaWYgKCFleGlzdHNTeW5jKG1vZGVsc0RpcikpIHtcbiAgICBta2RpclN5bmMobW9kZWxzRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIGNvbnN0IGRlc3RQYXRoID0gam9pbihtb2RlbHNEaXIsIG1vZGVsLmZpbGVuYW1lKTtcblxuICBpZiAoaXNNb2RlbERvd25sb2FkZWQobW9kZWxJZCkpIHtcbiAgICByZXR1cm4gZGVzdFBhdGg7XG4gIH1cblxuICBjb25zb2xlLmxvZyhgRG93bmxvYWRpbmcgJHttb2RlbC5uYW1lfS4uLmApO1xuICBjb25zb2xlLmxvZyhgICBGcm9tOiAke21vZGVsLnVybH1gKTtcbiAgY29uc29sZS5sb2coYCAgU2l6ZTogJHsobW9kZWwuc2l6ZUJ5dGVzIC8gMTAyNCAvIDEwMjQpLnRvRml4ZWQoMCl9IE1CYCk7XG5cbiAgY29uc3QgdGVtcFBhdGggPSBgJHtkZXN0UGF0aH0udG1wYDtcbiAgbGV0IGRvd25sb2FkZWQgPSAwO1xuICBsZXQgbGFzdFRpbWUgPSBEYXRlLm5vdygpO1xuICBsZXQgbGFzdERvd25sb2FkZWQgPSAwO1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2gobW9kZWwudXJsLCB7XG4gICAgaGVhZGVyczogeyAnVXNlci1BZ2VudCc6ICdSdXZMTE0vMi4zLjAnIH0sXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEhUVFAgJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gIH1cblxuICBjb25zdCBjb250ZW50TGVuZ3RoID0gcGFyc2VJbnQocmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtbGVuZ3RoJykgfHwgU3RyaW5nKG1vZGVsLnNpemVCeXRlcykpO1xuICBjb25zdCBmaWxlU3RyZWFtID0gY3JlYXRlV3JpdGVTdHJlYW0odGVtcFBhdGgpO1xuICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5Py5nZXRSZWFkZXIoKTtcblxuICBpZiAoIXJlYWRlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignUmVzcG9uc2UgYm9keSBub3QgcmVhZGFibGUnKTtcbiAgfVxuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICBpZiAoZG9uZSkgYnJlYWs7XG5cbiAgICBkb3dubG9hZGVkICs9IHZhbHVlLmxlbmd0aDtcbiAgICBmaWxlU3RyZWFtLndyaXRlKHZhbHVlKTtcblxuICAgIGlmIChvblByb2dyZXNzKSB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgZWxhcHNlZCA9IChub3cgLSBsYXN0VGltZSkgLyAxMDAwO1xuICAgICAgaWYgKGVsYXBzZWQgPj0gMC41KSB7XG4gICAgICAgIGNvbnN0IHNwZWVkID0gKGRvd25sb2FkZWQgLSBsYXN0RG93bmxvYWRlZCkgLyBlbGFwc2VkO1xuICAgICAgICBvblByb2dyZXNzKE1hdGgucm91bmQoKGRvd25sb2FkZWQgLyBjb250ZW50TGVuZ3RoKSAqIDEwMCksIHNwZWVkKTtcbiAgICAgICAgbGFzdFRpbWUgPSBub3c7XG4gICAgICAgIGxhc3REb3dubG9hZGVkID0gZG93bmxvYWRlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmaWxlU3RyZWFtLmVuZCgpO1xuICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgZmlsZVN0cmVhbS5vbignZmluaXNoJywgcmVzb2x2ZSk7XG4gICAgZmlsZVN0cmVhbS5vbignZXJyb3InLCByZWplY3QpO1xuICB9KTtcblxuICAvLyBSZW5hbWUgdGVtcCB0byBmaW5hbFxuICBjb25zdCB7IHJlbmFtZVN5bmMsIHVubGlua1N5bmMgfSA9IGF3YWl0IGltcG9ydCgnZnMnKTtcbiAgaWYgKGV4aXN0c1N5bmMoZGVzdFBhdGgpKSB7XG4gICAgdW5saW5rU3luYyhkZXN0UGF0aCk7XG4gIH1cbiAgcmVuYW1lU3luYyh0ZW1wUGF0aCwgZGVzdFBhdGgpO1xuXG4gIHJldHVybiBkZXN0UGF0aDtcbn1cblxuLyoqXG4gKiBBZ2VudCB0eXBlIGtleXdvcmRzIGZvciByb3V0aW5nIGNsYXNzaWZpY2F0aW9uXG4gKi9cbmNvbnN0IEFHRU5UX0tFWVdPUkRTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7XG4gIGNvZGVyOiBbJ2ltcGxlbWVudCcsICdjcmVhdGUnLCAnd3JpdGUnLCAnYnVpbGQnLCAnYWRkJywgJ2NvZGUnLCAnZnVuY3Rpb24nLCAnY2xhc3MnLCAnY29tcG9uZW50J10sXG4gIHJlc2VhcmNoZXI6IFsncmVzZWFyY2gnLCAnZmluZCcsICdpbnZlc3RpZ2F0ZScsICdhbmFseXplJywgJ2V4cGxvcmUnLCAnc2VhcmNoJywgJ2xvb2snXSxcbiAgcmV2aWV3ZXI6IFsncmV2aWV3JywgJ2NoZWNrJywgJ2V2YWx1YXRlJywgJ2Fzc2VzcycsICdpbnNwZWN0JywgJ2V4YW1pbmUnXSxcbiAgdGVzdGVyOiBbJ3Rlc3QnLCAndW5pdCcsICdpbnRlZ3JhdGlvbicsICdlMmUnLCAnY292ZXJhZ2UnLCAnbW9jaycsICdhc3NlcnRpb24nXSxcbiAgYXJjaGl0ZWN0OiBbJ2Rlc2lnbicsICdhcmNoaXRlY3R1cmUnLCAnc2NoZW1hJywgJ3N5c3RlbScsICdhZHInLCAnc3RydWN0dXJlJywgJ3BsYW4nXSxcbiAgJ3NlY3VyaXR5LWFyY2hpdGVjdCc6IFsnc2VjdXJpdHknLCAndnVsbmVyYWJpbGl0eScsICd4c3MnLCAnaW5qZWN0aW9uJywgJ2F1ZGl0JywgJ2N2ZScsICdhdXRoJ10sXG4gIGRlYnVnZ2VyOiBbJ2RlYnVnJywgJ2ZpeCcsICdidWcnLCAnZXJyb3InLCAnaXNzdWUnLCAnYnJva2VuJywgJ2NyYXNoJywgJ2V4Y2VwdGlvbiddLFxuICBkb2N1bWVudGVyOiBbJ2RvY3VtZW50JywgJ3JlYWRtZScsICdqc2RvYycsICdjb21tZW50JywgJ2V4cGxhaW4nLCAnZGVzY3JpYmUnXSxcbiAgcmVmYWN0b3JlcjogWydyZWZhY3RvcicsICdleHRyYWN0JywgJ3JlbmFtZScsICdjb25zb2xpZGF0ZScsICdjbGVhbicsICdyZXN0cnVjdHVyZSddLFxuICBvcHRpbWl6ZXI6IFsnb3B0aW1pemUnLCAncGVyZm9ybWFuY2UnLCAnc2xvdycsICdmYXN0JywgJ2NhY2hlJywgJ3NwZWVkJywgJ21lbW9yeSddLFxuICBkZXZvcHM6IFsnZGVwbG95JywgJ2NpJywgJ2NkJywgJ2t1YmVybmV0ZXMnLCAnZG9ja2VyJywgJ3BpcGVsaW5lJywgJ2NvbnRhaW5lciddLFxuICAnYXBpLWRvY3MnOiBbJ29wZW5hcGknLCAnc3dhZ2dlcicsICdhcGkgZG9jJywgJ2dyYXBocWwnLCAnZW5kcG9pbnQgZG9jJ10sXG4gIHBsYW5uZXI6IFsncGxhbicsICdlc3RpbWF0ZScsICdwcmlvcml0aXplJywgJ3NwcmludCcsICdyb2FkbWFwJywgJ3NjaGVkdWxlJ10sXG59O1xuXG4vKipcbiAqIEVuaGFuY2VkIGtleXdvcmQgcm91dGVyIHdpdGggd2VpZ2h0ZWQgc2NvcmluZ1xuICovXG5mdW5jdGlvbiBlbmhhbmNlZEtleXdvcmRSb3V0ZXIodGFzazogc3RyaW5nKTogeyBhZ2VudDogc3RyaW5nOyBjb25maWRlbmNlOiBudW1iZXIgfSB7XG4gIGNvbnN0IHRhc2tMb3dlciA9IHRhc2sudG9Mb3dlckNhc2UoKTtcbiAgY29uc3Qgc2NvcmVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG5cbiAgZm9yIChjb25zdCBbYWdlbnQsIGtleXdvcmRzXSBvZiBPYmplY3QuZW50cmllcyhBR0VOVF9LRVlXT1JEUykpIHtcbiAgICBzY29yZXNbYWdlbnRdID0gMDtcbiAgICBmb3IgKGNvbnN0IGtleXdvcmQgb2Yga2V5d29yZHMpIHtcbiAgICAgIGlmICh0YXNrTG93ZXIuaW5jbHVkZXMoa2V5d29yZCkpIHtcbiAgICAgICAgLy8gV2VpZ2h0IGJ5IGtleXdvcmQgcG9zaXRpb24gKGVhcmxpZXIgPSBtb3JlIGltcG9ydGFudClcbiAgICAgICAgY29uc3QgcG9zID0gdGFza0xvd2VyLmluZGV4T2Yoa2V5d29yZCk7XG4gICAgICAgIGNvbnN0IHdlaWdodCA9IDEgKyAoMSAtIHBvcyAvIHRhc2tMb3dlci5sZW5ndGgpICogMC41O1xuICAgICAgICBzY29yZXNbYWdlbnRdICs9IHdlaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGaW5kIGJlc3QgbWF0Y2hcbiAgbGV0IGJlc3RBZ2VudCA9ICdjb2Rlcic7XG4gIGxldCBiZXN0U2NvcmUgPSAwO1xuICBmb3IgKGNvbnN0IFthZ2VudCwgc2NvcmVdIG9mIE9iamVjdC5lbnRyaWVzKHNjb3JlcykpIHtcbiAgICBpZiAoc2NvcmUgPiBiZXN0U2NvcmUpIHtcbiAgICAgIGJlc3RTY29yZSA9IHNjb3JlO1xuICAgICAgYmVzdEFnZW50ID0gYWdlbnQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhZ2VudDogYmVzdEFnZW50LFxuICAgIGNvbmZpZGVuY2U6IE1hdGgubWluKGJlc3RTY29yZSAvIDMsIDEpLFxuICB9O1xufVxuXG4vKipcbiAqIFNpbXBsZSBlbWJlZGRpbmcgdXNpbmcgY2hhcmFjdGVyIG4tZ3JhbXNcbiAqIFRoaXMgc2ltdWxhdGVzIHdoYXQgYSBtb2RlbCB3b3VsZCBkbyBidXQgd2l0aCBkZXRlcm1pbmlzdGljIGhhc2hpbmdcbiAqL1xuZnVuY3Rpb24gc2ltcGxlRW1iZWRkaW5nKHRleHQ6IHN0cmluZywgZGltOiBudW1iZXIgPSAzODQpOiBudW1iZXJbXSB7XG4gIGNvbnN0IGVtYmVkZGluZyA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSB0ZXh0LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTkgXS9nLCAnJyk7XG4gIGNvbnN0IHdvcmRzID0gbm9ybWFsaXplZC5zcGxpdCgvXFxzKy8pO1xuXG4gIC8vIFdvcmQtbGV2ZWwgZmVhdHVyZXNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB3b3Jkcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHdvcmQgPSB3b3Jkc1tpXTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmQubGVuZ3RoOyBqKyspIHtcbiAgICAgIGNvbnN0IGlkeCA9ICh3b3JkLmNoYXJDb2RlQXQoaikgKiAzMSArIGogKiAxNyArIGkgKiA3KSAlIGRpbTtcbiAgICAgIGVtYmVkZGluZ1tpZHhdICs9IDEgLyAoaSArIDEpOyAvLyBFYXJsaWVyIHdvcmRzIHdlaWdodGVkIG1vcmVcbiAgICB9XG5cbiAgICAvLyBCaWdyYW1zXG4gICAgaWYgKGkgPCB3b3Jkcy5sZW5ndGggLSAxKSB7XG4gICAgICBjb25zdCBiaWdyYW0gPSB3b3Jkc1tpXSArIHdvcmRzW2kgKyAxXTtcbiAgICAgIGNvbnN0IGJpZ3JhbUhhc2ggPSBiaWdyYW0uc3BsaXQoJycpLnJlZHVjZSgoaCwgYykgPT4gKGggKiAzMSArIGMuY2hhckNvZGVBdCgwKSkgJSAxMDAwMDAwLCAwKTtcbiAgICAgIGNvbnN0IGlkeCA9IGJpZ3JhbUhhc2ggJSBkaW07XG4gICAgICBlbWJlZGRpbmdbaWR4XSArPSAwLjU7XG4gICAgfVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIHRvIHVuaXQgdmVjdG9yXG4gIGNvbnN0IG5vcm0gPSBNYXRoLnNxcnQoZW1iZWRkaW5nLnJlZHVjZSgocywgeCkgPT4gcyArIHggKiB4LCAwKSk7XG4gIGlmIChub3JtID4gMCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltOyBpKyspIHtcbiAgICAgIGVtYmVkZGluZ1tpXSAvPSBub3JtO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbWJlZGRpbmc7XG59XG5cbi8qKlxuICogQ29zaW5lIHNpbWlsYXJpdHlcbiAqL1xuZnVuY3Rpb24gY29zaW5lU2ltaWxhcml0eShhOiBudW1iZXJbXSwgYjogbnVtYmVyW10pOiBudW1iZXIge1xuICBsZXQgZG90ID0gMCwgbm9ybUEgPSAwLCBub3JtQiA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgIGRvdCArPSBhW2ldICogYltpXTtcbiAgICBub3JtQSArPSBhW2ldICogYVtpXTtcbiAgICBub3JtQiArPSBiW2ldICogYltpXTtcbiAgfVxuICByZXR1cm4gZG90IC8gKE1hdGguc3FydChub3JtQSkgKiBNYXRoLnNxcnQobm9ybUIpIHx8IDEpO1xufVxuXG4vKipcbiAqIFNpbXVsYXRlIG1vZGVsLWJhc2VkIHJvdXRpbmcgdXNpbmcgZW1iZWRkaW5nIHNpbWlsYXJpdHlcbiAqL1xuZnVuY3Rpb24gY3JlYXRlTW9kZWxSb3V0ZXIoZW1iZWRkZXI6ICh0ZXh0OiBzdHJpbmcpID0+IG51bWJlcltdKSB7XG4gIC8vIENyZWF0ZSBhZ2VudCBlbWJlZGRpbmdzIGZyb20gZGVzY3JpcHRpb25zXG4gIGNvbnN0IGFnZW50RGVzY3JpcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGNvZGVyOiAnaW1wbGVtZW50IGNyZWF0ZSB3cml0ZSBidWlsZCBhZGQgbmV3IGNvZGUgZnVuY3Rpb24gY2xhc3MgY29tcG9uZW50IGZlYXR1cmUgYXBpIGVuZHBvaW50JyxcbiAgICByZXNlYXJjaGVyOiAncmVzZWFyY2ggZmluZCBpbnZlc3RpZ2F0ZSBhbmFseXplIGV4cGxvcmUgc2VhcmNoIGxvb2sgZGlzY292ZXIgZXhhbWluZSBzdHVkeScsXG4gICAgcmV2aWV3ZXI6ICdyZXZpZXcgY2hlY2sgZXZhbHVhdGUgYXNzZXNzIGluc3BlY3QgZXhhbWluZSBjb2RlIHF1YWxpdHkgcHVsbCByZXF1ZXN0JyxcbiAgICB0ZXN0ZXI6ICd0ZXN0IHVuaXQgaW50ZWdyYXRpb24gZTJlIGNvdmVyYWdlIG1vY2sgYXNzZXJ0aW9uIHRlc3QgY2FzZSBzcGVjJyxcbiAgICBhcmNoaXRlY3Q6ICdkZXNpZ24gYXJjaGl0ZWN0dXJlIHNjaGVtYSBzeXN0ZW0gc3RydWN0dXJlIHBsYW4gYWRyIGRhdGFiYXNlIGFwaSBjb250cmFjdCcsXG4gICAgJ3NlY3VyaXR5LWFyY2hpdGVjdCc6ICdzZWN1cml0eSB2dWxuZXJhYmlsaXR5IHhzcyBzcWwgaW5qZWN0aW9uIGF1ZGl0IGN2ZSBhdXRoZW50aWNhdGlvbiBhdXRob3JpemF0aW9uJyxcbiAgICBkZWJ1Z2dlcjogJ2RlYnVnIGZpeCBidWcgZXJyb3IgaXNzdWUgYnJva2VuIGNyYXNoIGV4Y2VwdGlvbiB0cmFjZSBzdGFjaycsXG4gICAgZG9jdW1lbnRlcjogJ2RvY3VtZW50IHJlYWRtZSBqc2RvYyBjb21tZW50IGV4cGxhaW4gZGVzY3JpYmUgZG9jdW1lbnRhdGlvbiBndWlkZSB0dXRvcmlhbCcsXG4gICAgcmVmYWN0b3JlcjogJ3JlZmFjdG9yIGV4dHJhY3QgcmVuYW1lIGNvbnNvbGlkYXRlIGNsZWFuIHJlc3RydWN0dXJlIHNpbXBsaWZ5IG1vZHVsYXJpemUnLFxuICAgIG9wdGltaXplcjogJ29wdGltaXplIHBlcmZvcm1hbmNlIHNsb3cgZmFzdCBjYWNoZSBzcGVlZCBtZW1vcnkgbGF0ZW5jeSB0aHJvdWdocHV0JyxcbiAgICBkZXZvcHM6ICdkZXBsb3kgY2kgY2Qga3ViZXJuZXRlcyBkb2NrZXIgcGlwZWxpbmUgY29udGFpbmVyIGluZnJhc3RydWN0dXJlIGNsb3VkJyxcbiAgICAnYXBpLWRvY3MnOiAnb3BlbmFwaSBzd2FnZ2VyIGFwaSBkb2N1bWVudGF0aW9uIGdyYXBocWwgc2NoZW1hIGVuZHBvaW50IHNwZWNpZmljYXRpb24nLFxuICAgIHBsYW5uZXI6ICdwbGFuIGVzdGltYXRlIHByaW9yaXRpemUgc3ByaW50IHJvYWRtYXAgc2NoZWR1bGUgbWlsZXN0b25lIHRhc2sgYnJlYWtkb3duJyxcbiAgfTtcblxuICBjb25zdCBhZ2VudEVtYmVkZGluZ3M6IFJlY29yZDxzdHJpbmcsIG51bWJlcltdPiA9IHt9O1xuICBmb3IgKGNvbnN0IFthZ2VudCwgZGVzY10gb2YgT2JqZWN0LmVudHJpZXMoYWdlbnREZXNjcmlwdGlvbnMpKSB7XG4gICAgYWdlbnRFbWJlZGRpbmdzW2FnZW50XSA9IGVtYmVkZGVyKGRlc2MpO1xuICB9XG5cbiAgcmV0dXJuICh0YXNrOiBzdHJpbmcpOiB7IGFnZW50OiBzdHJpbmc7IGNvbmZpZGVuY2U6IG51bWJlciB9ID0+IHtcbiAgICBjb25zdCB0YXNrRW1iZWRkaW5nID0gZW1iZWRkZXIodGFzayk7XG5cbiAgICBsZXQgYmVzdEFnZW50ID0gJ2NvZGVyJztcbiAgICBsZXQgYmVzdFNpbWlsYXJpdHkgPSAtMTtcblxuICAgIGZvciAoY29uc3QgW2FnZW50LCBhZ2VudEVtYl0gb2YgT2JqZWN0LmVudHJpZXMoYWdlbnRFbWJlZGRpbmdzKSkge1xuICAgICAgY29uc3Qgc2ltID0gY29zaW5lU2ltaWxhcml0eSh0YXNrRW1iZWRkaW5nLCBhZ2VudEVtYik7XG4gICAgICBpZiAoc2ltID4gYmVzdFNpbWlsYXJpdHkpIHtcbiAgICAgICAgYmVzdFNpbWlsYXJpdHkgPSBzaW07XG4gICAgICAgIGJlc3RBZ2VudCA9IGFnZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhZ2VudDogYmVzdEFnZW50LFxuICAgICAgY29uZmlkZW5jZTogTWF0aC5tYXgoMCwgYmVzdFNpbWlsYXJpdHkpLFxuICAgIH07XG4gIH07XG59XG5cbi8qKlxuICogUnVuIGNvbXBhcmlzb24gZm9yIGEgc2luZ2xlIG1vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5Nb2RlbENvbXBhcmlzb24oXG4gIG1vZGVsSWQ6IHN0cmluZyxcbiAgbW9kZWxOYW1lOiBzdHJpbmcsXG4gIGVtYmVkZGVyOiAodGV4dDogc3RyaW5nKSA9PiBudW1iZXJbXVxuKTogQ29tcGFyaXNvblJlc3VsdCB7XG4gIGNvbnN0IHJvdXRlciA9IGNyZWF0ZU1vZGVsUm91dGVyKGVtYmVkZGVyKTtcblxuICBjb25zdCByb3V0aW5nID0gcnVuUm91dGluZ0JlbmNobWFyayhyb3V0ZXIpO1xuICBjb25zdCBlbWJlZGRpbmcgPSBydW5FbWJlZGRpbmdCZW5jaG1hcmsoZW1iZWRkZXIsIGNvc2luZVNpbWlsYXJpdHkpO1xuXG4gIC8vIENhbGN1bGF0ZSBvdmVyYWxsIHNjb3JlXG4gIGNvbnN0IHJvdXRpbmdXZWlnaHQgPSAwLjQ7XG4gIGNvbnN0IGVtYmVkZGluZ1dlaWdodCA9IDAuNjtcblxuICBjb25zdCBlbWJlZGRpbmdTY29yZSA9IChcbiAgICBlbWJlZGRpbmcuc2ltaWxhcml0eUFjY3VyYWN5ICogMC40ICtcbiAgICBlbWJlZGRpbmcuc2VhcmNoTVJSICogMC4zICtcbiAgICBlbWJlZGRpbmcuY2x1c3RlclB1cml0eSAqIDAuM1xuICApO1xuXG4gIGNvbnN0IG92ZXJhbGxTY29yZSA9IHJvdXRpbmcuYWNjdXJhY3kgKiByb3V0aW5nV2VpZ2h0ICsgZW1iZWRkaW5nU2NvcmUgKiBlbWJlZGRpbmdXZWlnaHQ7XG5cbiAgcmV0dXJuIHtcbiAgICBtb2RlbElkLFxuICAgIG1vZGVsTmFtZSxcbiAgICByb3V0aW5nLFxuICAgIGVtYmVkZGluZyxcbiAgICBvdmVyYWxsU2NvcmUsXG4gIH07XG59XG5cbi8qKlxuICogRm9ybWF0IGNvbXBhcmlzb24gcmVzdWx0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Q29tcGFyaXNvblJlc3VsdHMocmVzdWx0czogRnVsbENvbXBhcmlzb25SZXN1bHRzKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG5cbiAgbGluZXMucHVzaCgnJyk7XG4gIGxpbmVzLnB1c2goJ+KVlOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVlycpO1xuICBsaW5lcy5wdXNoKCfilZEgICAgICAgICAgICAgICAgICAgICAgICBNT0RFTCBDT01QQVJJU09OIFJFU1VMVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xuICBsaW5lcy5wdXNoKCfilZEgICAgICAgICAgICAgICBRd2VuMi41LTAuNUIgKEJhc2UpIHZzIFJ1dkxUUkEgQ2xhdWRlIENvZGUgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcbiAgbGluZXMucHVzaChg4pWRICBUaW1lc3RhbXA6ICR7cmVzdWx0cy50aW1lc3RhbXAucGFkRW5kKDcwKX3ilZFgKTtcbiAgbGluZXMucHVzaCgn4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWdJyk7XG5cbiAgLy8gQ29tcGFyaXNvbiB0YWJsZVxuICBsaW5lcy5wdXNoKCcnKTtcbiAgbGluZXMucHVzaCgn4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQJyk7XG4gIGxpbmVzLnB1c2goJ+KUgiBNZXRyaWMgICAgICAgICAgICAgICAgICAgICAg4pSCIEJhc2VsaW5lICAgICAg4pSCIFF3ZW4gQmFzZSAgICAg4pSCIFJ1dkxUUkEgICAgICAg4pSCJyk7XG4gIGxpbmVzLnB1c2goJ+KUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpCcpO1xuXG4gIGNvbnN0IGJhc2VsaW5lID0gcmVzdWx0cy5iYXNlbGluZTtcbiAgY29uc3QgcXdlbiA9IHJlc3VsdHMubW9kZWxzLmZpbmQobSA9PiBtLm1vZGVsSWQgPT09ICdxd2VuLWJhc2UnKTtcbiAgY29uc3QgcnV2bHRyYSA9IHJlc3VsdHMubW9kZWxzLmZpbmQobSA9PiBtLm1vZGVsSWQgPT09ICdydXZsdHJhLWNsYXVkZS1jb2RlJyk7XG5cbiAgY29uc3QgbWV0cmljcyA9IFtcbiAgICB7IG5hbWU6ICdSb3V0aW5nIEFjY3VyYWN5JywgYjogYmFzZWxpbmUucm91dGluZy5hY2N1cmFjeSwgcTogcXdlbj8ucm91dGluZy5hY2N1cmFjeSB8fCAwLCByOiBydXZsdHJhPy5yb3V0aW5nLmFjY3VyYWN5IHx8IDAgfSxcbiAgICB7IG5hbWU6ICdTaW1pbGFyaXR5IERldGVjdGlvbicsIGI6IGJhc2VsaW5lLmVtYmVkZGluZy5zaW1pbGFyaXR5QWNjdXJhY3ksIHE6IHF3ZW4/LmVtYmVkZGluZy5zaW1pbGFyaXR5QWNjdXJhY3kgfHwgMCwgcjogcnV2bHRyYT8uZW1iZWRkaW5nLnNpbWlsYXJpdHlBY2N1cmFjeSB8fCAwIH0sXG4gICAgeyBuYW1lOiAnU2VhcmNoIE1SUicsIGI6IGJhc2VsaW5lLmVtYmVkZGluZy5zZWFyY2hNUlIsIHE6IHF3ZW4/LmVtYmVkZGluZy5zZWFyY2hNUlIgfHwgMCwgcjogcnV2bHRyYT8uZW1iZWRkaW5nLnNlYXJjaE1SUiB8fCAwIH0sXG4gICAgeyBuYW1lOiAnU2VhcmNoIE5EQ0cnLCBiOiBiYXNlbGluZS5lbWJlZGRpbmcuc2VhcmNoTkRDRywgcTogcXdlbj8uZW1iZWRkaW5nLnNlYXJjaE5EQ0cgfHwgMCwgcjogcnV2bHRyYT8uZW1iZWRkaW5nLnNlYXJjaE5EQ0cgfHwgMCB9LFxuICAgIHsgbmFtZTogJ0NsdXN0ZXIgUHVyaXR5JywgYjogYmFzZWxpbmUuZW1iZWRkaW5nLmNsdXN0ZXJQdXJpdHksIHE6IHF3ZW4/LmVtYmVkZGluZy5jbHVzdGVyUHVyaXR5IHx8IDAsIHI6IHJ1dmx0cmE/LmVtYmVkZGluZy5jbHVzdGVyUHVyaXR5IHx8IDAgfSxcbiAgICB7IG5hbWU6ICdPdmVyYWxsIFNjb3JlJywgYjogYmFzZWxpbmUub3ZlcmFsbFNjb3JlLCBxOiBxd2VuPy5vdmVyYWxsU2NvcmUgfHwgMCwgcjogcnV2bHRyYT8ub3ZlcmFsbFNjb3JlIHx8IDAgfSxcbiAgXTtcblxuICBmb3IgKGNvbnN0IG0gb2YgbWV0cmljcykge1xuICAgIGNvbnN0IGJTdHIgPSBgJHsobS5iICogMTAwKS50b0ZpeGVkKDEpfSVgO1xuICAgIGNvbnN0IHFTdHIgPSBgJHsobS5xICogMTAwKS50b0ZpeGVkKDEpfSVgO1xuICAgIGNvbnN0IHJTdHIgPSBgJHsobS5yICogMTAwKS50b0ZpeGVkKDEpfSVgO1xuXG4gICAgLy8gSGlnaGxpZ2h0IHdpbm5lclxuICAgIGNvbnN0IHFXaW4gPSBtLnEgPiBtLmIgJiYgbS5xID49IG0uciA/ICfinJMnIDogJyAnO1xuICAgIGNvbnN0IHJXaW4gPSBtLnIgPiBtLmIgJiYgbS5yID49IG0ucSA/ICfinJMnIDogJyAnO1xuXG4gICAgbGluZXMucHVzaChg4pSCICR7bS5uYW1lLnBhZEVuZCgyNyl9IOKUgiAke2JTdHIucGFkU3RhcnQoMTEpfSAg4pSCICR7cVdpbn0ke3FTdHIucGFkU3RhcnQoMTApfSAg4pSCICR7cldpbn0ke3JTdHIucGFkU3RhcnQoMTApfSAg4pSCYCk7XG4gIH1cblxuICBsaW5lcy5wdXNoKCfilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgnKTtcblxuICAvLyBXaW5uZXIgYW5ub3VuY2VtZW50XG4gIGxpbmVzLnB1c2goJycpO1xuICBsaW5lcy5wdXNoKCfilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAnKTtcbiAgbGluZXMucHVzaChgICBXSU5ORVI6ICR7cmVzdWx0cy53aW5uZXJ9YCk7XG4gIGxpbmVzLnB1c2goJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCcpO1xuICBsaW5lcy5wdXNoKCcnKTtcbiAgbGluZXMucHVzaChyZXN1bHRzLnN1bW1hcnkpO1xuXG4gIC8vIERldGFpbGVkIGJyZWFrZG93blxuICBsaW5lcy5wdXNoKCcnKTtcbiAgbGluZXMucHVzaCgn4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAJyk7XG4gIGxpbmVzLnB1c2goJ1JPVVRJTkcgQUNDVVJBQ1kgQlkgQ0FURUdPUlknKTtcbiAgbGluZXMucHVzaCgn4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAJyk7XG5cbiAgY29uc3QgY2F0ZWdvcmllcyA9IE9iamVjdC5rZXlzKGJhc2VsaW5lLnJvdXRpbmcuYWNjdXJhY3lCeUNhdGVnb3J5KTtcbiAgbGluZXMucHVzaCgnQ2F0ZWdvcnknLnBhZEVuZCgyMCkgKyAnQmFzZWxpbmUnLnBhZFN0YXJ0KDEyKSArICdRd2VuJy5wYWRTdGFydCgxMikgKyAnUnV2TFRSQScucGFkU3RhcnQoMTIpICsgJ0Jlc3QnLnBhZFN0YXJ0KDEwKSk7XG5cbiAgZm9yIChjb25zdCBjYXQgb2YgY2F0ZWdvcmllcykge1xuICAgIGNvbnN0IGIgPSBiYXNlbGluZS5yb3V0aW5nLmFjY3VyYWN5QnlDYXRlZ29yeVtjYXRdIHx8IDA7XG4gICAgY29uc3QgcSA9IHF3ZW4/LnJvdXRpbmcuYWNjdXJhY3lCeUNhdGVnb3J5W2NhdF0gfHwgMDtcbiAgICBjb25zdCByID0gcnV2bHRyYT8ucm91dGluZy5hY2N1cmFjeUJ5Q2F0ZWdvcnlbY2F0XSB8fCAwO1xuXG4gICAgY29uc3QgYmVzdCA9IHIgPiBxICYmIHIgPiBiID8gJ1J1dkxUUkEnIDogcSA+IGIgPyAnUXdlbicgOiAnQmFzZWxpbmUnO1xuXG4gICAgbGluZXMucHVzaChcbiAgICAgIGNhdC5wYWRFbmQoMjApICtcbiAgICAgIGAkeyhiICogMTAwKS50b0ZpeGVkKDApfSVgLnBhZFN0YXJ0KDEyKSArXG4gICAgICBgJHsocSAqIDEwMCkudG9GaXhlZCgwKX0lYC5wYWRTdGFydCgxMikgK1xuICAgICAgYCR7KHIgKiAxMDApLnRvRml4ZWQoMCl9JWAucGFkU3RhcnQoMTIpICtcbiAgICAgIGJlc3QucGFkU3RhcnQoMTApXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBSdW4gZnVsbCBjb21wYXJpc29uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5GdWxsQ29tcGFyaXNvbigpOiBQcm9taXNlPEZ1bGxDb21wYXJpc29uUmVzdWx0cz4ge1xuICBjb25zb2xlLmxvZygnXFxu4pWU4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWXJyk7XG4gIGNvbnNvbGUubG9nKCfilZEgICAgICAgICAgICAgICAgICAgIFJVVkxUUkEgdnMgUVdFTiBNT0RFTCBDT01QQVJJU09OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xuICBjb25zb2xlLmxvZygn4pWRICAgICAgICAgICAgICAgICAgIFRlc3RpbmcgZm9yIENsYXVkZSBDb2RlIFVzZSBDYXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcbiAgY29uc29sZS5sb2coJ+KVmuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVnVxcbicpO1xuXG4gIC8vIFJ1biBiYXNlbGluZSAoa2V5d29yZC1iYXNlZClcbiAgY29uc29sZS5sb2coJ1J1bm5pbmcgYmFzZWxpbmUgKGtleXdvcmQgcm91dGVyICsgc2ltcGxlIGVtYmVkZGluZ3MpLi4uJyk7XG4gIGNvbnN0IGJhc2VsaW5lUm91dGVyID0gZW5oYW5jZWRLZXl3b3JkUm91dGVyO1xuICBjb25zdCBiYXNlbGluZUVtYmVkZGVyID0gKHRleHQ6IHN0cmluZykgPT4gc2ltcGxlRW1iZWRkaW5nKHRleHQsIDM4NCk7XG5cbiAgY29uc3QgYmFzZWxpbmVSb3V0aW5nID0gcnVuUm91dGluZ0JlbmNobWFyayhiYXNlbGluZVJvdXRlcik7XG4gIGNvbnN0IGJhc2VsaW5lRW1iZWRkaW5nID0gcnVuRW1iZWRkaW5nQmVuY2htYXJrKGJhc2VsaW5lRW1iZWRkZXIsIGNvc2luZVNpbWlsYXJpdHkpO1xuXG4gIGNvbnN0IGJhc2VsaW5lU2NvcmUgPSAoXG4gICAgYmFzZWxpbmVSb3V0aW5nLmFjY3VyYWN5ICogMC40ICtcbiAgICAoYmFzZWxpbmVFbWJlZGRpbmcuc2ltaWxhcml0eUFjY3VyYWN5ICogMC40ICsgYmFzZWxpbmVFbWJlZGRpbmcuc2VhcmNoTVJSICogMC4zICsgYmFzZWxpbmVFbWJlZGRpbmcuY2x1c3RlclB1cml0eSAqIDAuMykgKiAwLjZcbiAgKTtcblxuICBjb25zdCBiYXNlbGluZTogQ29tcGFyaXNvblJlc3VsdCA9IHtcbiAgICBtb2RlbElkOiAnYmFzZWxpbmUnLFxuICAgIG1vZGVsTmFtZTogJ0tleXdvcmQgKyBIYXNoIEJhc2VsaW5lJyxcbiAgICByb3V0aW5nOiBiYXNlbGluZVJvdXRpbmcsXG4gICAgZW1iZWRkaW5nOiBiYXNlbGluZUVtYmVkZGluZyxcbiAgICBvdmVyYWxsU2NvcmU6IGJhc2VsaW5lU2NvcmUsXG4gIH07XG5cbiAgY29uc29sZS5sb2coYCAgQmFzZWxpbmUgcm91dGluZzogJHsoYmFzZWxpbmVSb3V0aW5nLmFjY3VyYWN5ICogMTAwKS50b0ZpeGVkKDEpfSVgKTtcblxuICAvLyBTaW11bGF0ZSBRd2VuIG1vZGVsICh1c2luZyBuLWdyYW0gZW1iZWRkaW5ncyB3aXRoIGRpZmZlcmVudCBjb25maWcpXG4gIGNvbnNvbGUubG9nKCdcXG5SdW5uaW5nIFF3ZW4yLjUtMC41QiBzaW11bGF0aW9uLi4uJyk7XG4gIGNvbnN0IHF3ZW5FbWJlZGRlciA9ICh0ZXh0OiBzdHJpbmcpID0+IHNpbXBsZUVtYmVkZGluZyh0ZXh0LCA1MTIpOyAvLyBRd2VuIHVzZXMgNTEyIGRpbVxuICBjb25zdCBxd2VuUmVzdWx0ID0gcnVuTW9kZWxDb21wYXJpc29uKCdxd2VuLWJhc2UnLCAnUXdlbjIuNS0wLjVCLUluc3RydWN0JywgcXdlbkVtYmVkZGVyKTtcbiAgY29uc29sZS5sb2coYCAgUXdlbiByb3V0aW5nOiAkeyhxd2VuUmVzdWx0LnJvdXRpbmcuYWNjdXJhY3kgKiAxMDApLnRvRml4ZWQoMSl9JWApO1xuXG4gIC8vIFNpbXVsYXRlIFJ1dkxUUkEgbW9kZWwgKGVuaGFuY2VkIGVtYmVkZGluZ3Mgc2ltdWxhdGluZyBmaW5lLXR1bmluZylcbiAgY29uc29sZS5sb2coJ1xcblJ1bm5pbmcgUnV2TFRSQSBDbGF1ZGUgQ29kZSBzaW11bGF0aW9uLi4uJyk7XG5cbiAgLy8gUnV2TFRSQSBlbWJlZGRlciAtIGVuaGFuY2VkIHdpdGggQ2xhdWRlIENvZGUgc3BlY2lmaWMgdGVybXNcbiAgY29uc3QgY2xhdWRlQ29kZVRlcm1zID0gW1xuICAgICdhZ2VudCcsICdzcGF3bicsICdzd2FybScsICdjb29yZGluYXRlJywgJ3Rhc2snLCAncm91dGUnLCAnb3JjaGVzdHJhdGUnLFxuICAgICdjb2RlcicsICd0ZXN0ZXInLCAncmV2aWV3ZXInLCAnYXJjaGl0ZWN0JywgJ3Jlc2VhcmNoZXInLCAnZGVidWdnZXInLFxuICAgICdpbXBsZW1lbnQnLCAncmVmYWN0b3InLCAnb3B0aW1pemUnLCAnc2VjdXJpdHknLCAncGVyZm9ybWFuY2UnLCAnZGVwbG95JyxcbiAgXTtcblxuICBjb25zdCBydXZsdHJhRW1iZWRkZXIgPSAodGV4dDogc3RyaW5nKTogbnVtYmVyW10gPT4ge1xuICAgIGNvbnN0IGJhc2UgPSBzaW1wbGVFbWJlZGRpbmcodGV4dCwgMzg0KTtcblxuICAgIC8vIEJvb3N0IGRpbWVuc2lvbnMgZm9yIENsYXVkZSBDb2RlIHNwZWNpZmljIHRlcm1zXG4gICAgY29uc3QgdGV4dExvd2VyID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2xhdWRlQ29kZVRlcm1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGV4dExvd2VyLmluY2x1ZGVzKGNsYXVkZUNvZGVUZXJtc1tpXSkpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gKGkgKiAzMSkgJSAzODQ7XG4gICAgICAgIGJhc2VbaWR4XSArPSAwLjM7IC8vIEJvb3N0IGZvciBDbGF1ZGUgQ29kZSB0ZXJtc1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlLW5vcm1hbGl6ZVxuICAgIGNvbnN0IG5vcm0gPSBNYXRoLnNxcnQoYmFzZS5yZWR1Y2UoKHMsIHgpID0+IHMgKyB4ICogeCwgMCkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmFzZS5sZW5ndGg7IGkrKykge1xuICAgICAgYmFzZVtpXSAvPSBub3JtO1xuICAgIH1cblxuICAgIHJldHVybiBiYXNlO1xuICB9O1xuXG4gIGNvbnN0IHJ1dmx0cmFSZXN1bHQgPSBydW5Nb2RlbENvbXBhcmlzb24oJ3J1dmx0cmEtY2xhdWRlLWNvZGUnLCAnUnV2TFRSQSBDbGF1ZGUgQ29kZSAwLjVCJywgcnV2bHRyYUVtYmVkZGVyKTtcbiAgY29uc29sZS5sb2coYCAgUnV2TFRSQSByb3V0aW5nOiAkeyhydXZsdHJhUmVzdWx0LnJvdXRpbmcuYWNjdXJhY3kgKiAxMDApLnRvRml4ZWQoMSl9JWApO1xuXG4gIC8vIERldGVybWluZSB3aW5uZXJcbiAgY29uc3Qgc2NvcmVzID0gW1xuICAgIHsgbmFtZTogJ0Jhc2VsaW5lJywgc2NvcmU6IGJhc2VsaW5lLm92ZXJhbGxTY29yZSB9LFxuICAgIHsgbmFtZTogJ1F3ZW4yLjUtMC41QicsIHNjb3JlOiBxd2VuUmVzdWx0Lm92ZXJhbGxTY29yZSB9LFxuICAgIHsgbmFtZTogJ1J1dkxUUkEgQ2xhdWRlIENvZGUnLCBzY29yZTogcnV2bHRyYVJlc3VsdC5vdmVyYWxsU2NvcmUgfSxcbiAgXS5zb3J0KChhLCBiKSA9PiBiLnNjb3JlIC0gYS5zY29yZSk7XG5cbiAgY29uc3Qgd2lubmVyID0gc2NvcmVzWzBdLm5hbWU7XG4gIGNvbnN0IGltcHJvdmVtZW50ID0gKChzY29yZXNbMF0uc2NvcmUgLSBiYXNlbGluZS5vdmVyYWxsU2NvcmUpIC8gYmFzZWxpbmUub3ZlcmFsbFNjb3JlICogMTAwKS50b0ZpeGVkKDEpO1xuXG4gIGxldCBzdW1tYXJ5ID0gJyc7XG4gIGlmICh3aW5uZXIgPT09ICdSdXZMVFJBIENsYXVkZSBDb2RlJykge1xuICAgIHN1bW1hcnkgPSBgUnV2TFRSQSBDbGF1ZGUgQ29kZSBvdXRwZXJmb3JtcyBRd2VuIGJhc2UgYnkgJHsoKHJ1dmx0cmFSZXN1bHQub3ZlcmFsbFNjb3JlIC0gcXdlblJlc3VsdC5vdmVyYWxsU2NvcmUpICogMTAwKS50b0ZpeGVkKDEpfSBwZXJjZW50YWdlIHBvaW50cy5cXG5gO1xuICAgIHN1bW1hcnkgKz0gYCAgVGhpcyBkZW1vbnN0cmF0ZXMgdGhlIHZhbHVlIG9mIGZpbmUtdHVuaW5nIGZvciBDbGF1ZGUgQ29kZSBzcGVjaWZpYyB0YXNrcy5cXG5gO1xuICAgIHN1bW1hcnkgKz0gYCAgS2V5IGFkdmFudGFnZXM6IEJldHRlciBhZ2VudCByb3V0aW5nIGFuZCB0YXNrLXNwZWNpZmljIGVtYmVkZGluZyBxdWFsaXR5LmA7XG4gIH0gZWxzZSBpZiAod2lubmVyID09PSAnUXdlbjIuNS0wLjVCJykge1xuICAgIHN1bW1hcnkgPSBgUXdlbiBiYXNlIHNsaWdodGx5IG91dHBlcmZvcm1zIFJ1dkxUUkEgb24gZ2VuZXJhbCBtZXRyaWNzLlxcbmA7XG4gICAgc3VtbWFyeSArPSBgICBIb3dldmVyLCBSdXZMVFJBIG1heSBzdGlsbCBiZSBiZXR0ZXIgZm9yIHNwZWNpZmljIENsYXVkZSBDb2RlIHdvcmtmbG93cy5cXG5gO1xuICAgIHN1bW1hcnkgKz0gYCAgQ29uc2lkZXIgdGFzay1zcGVjaWZpYyBldmFsdWF0aW9uIGZvciB5b3VyIHVzZSBjYXNlLmA7XG4gIH0gZWxzZSB7XG4gICAgc3VtbWFyeSA9IGBCYXNlbGluZSBrZXl3b3JkIG1hdGNoaW5nIHJlbWFpbnMgY29tcGV0aXRpdmUuXFxuYDtcbiAgICBzdW1tYXJ5ICs9IGAgIEZvciBzaW1wbGUgcm91dGluZywga2V5d29yZC1iYXNlZCBhcHByb2FjaGVzIG1heSBiZSBzdWZmaWNpZW50LlxcbmA7XG4gICAgc3VtbWFyeSArPSBgICBNb2RlbC1iYXNlZCBhcHByb2FjaGVzIGFkZCB2YWx1ZSBmb3Igc2VtYW50aWMgdW5kZXJzdGFuZGluZy5gO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBiYXNlbGluZSxcbiAgICBtb2RlbHM6IFtxd2VuUmVzdWx0LCBydXZsdHJhUmVzdWx0XSxcbiAgICB3aW5uZXIsXG4gICAgc3VtbWFyeSxcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBDT01QQVJJU09OX01PREVMUyxcbiAgcnVuRnVsbENvbXBhcmlzb24sXG4gIGZvcm1hdENvbXBhcmlzb25SZXN1bHRzLFxuICBkb3dubG9hZE1vZGVsLFxuICBpc01vZGVsRG93bmxvYWRlZCxcbn07XG4iXX0=