@dollhousemcp/mcp-server 2.0.17 → 2.0.19

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 (78) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/elements/BaseElement.d.ts +1 -0
  3. package/dist/elements/BaseElement.d.ts.map +1 -1
  4. package/dist/elements/BaseElement.js +7 -1
  5. package/dist/elements/agents/AgentManager.js +2 -2
  6. package/dist/elements/base/ElementFileOperations.js +2 -2
  7. package/dist/elements/ensembles/EnsembleManager.js +3 -3
  8. package/dist/elements/memories/MemoryManager.js +2 -2
  9. package/dist/elements/skills/SkillManager.js +2 -2
  10. package/dist/elements/templates/TemplateManager.js +2 -2
  11. package/dist/generated/version.d.ts +2 -2
  12. package/dist/generated/version.js +3 -3
  13. package/dist/handlers/ElementCRUDHandler.d.ts +30 -0
  14. package/dist/handlers/ElementCRUDHandler.d.ts.map +1 -1
  15. package/dist/handlers/ElementCRUDHandler.js +142 -2
  16. package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts +4 -0
  17. package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
  18. package/dist/handlers/mcp-aql/MCPAQLHandler.js +132 -14
  19. package/dist/handlers/mcp-aql/OperationRouter.d.ts.map +1 -1
  20. package/dist/handlers/mcp-aql/OperationRouter.js +6 -1
  21. package/dist/handlers/mcp-aql/OperationSchema.d.ts.map +1 -1
  22. package/dist/handlers/mcp-aql/OperationSchema.js +17 -1
  23. package/dist/handlers/mcp-aql/policies/AgentToolPolicyTranslator.d.ts.map +1 -1
  24. package/dist/handlers/mcp-aql/policies/AgentToolPolicyTranslator.js +2 -1
  25. package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts +9 -1
  26. package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts.map +1 -1
  27. package/dist/handlers/mcp-aql/policies/ElementPolicies.js +64 -4
  28. package/dist/handlers/mcp-aql/policies/OperationPolicies.d.ts.map +1 -1
  29. package/dist/handlers/mcp-aql/policies/OperationPolicies.js +6 -1
  30. package/dist/handlers/mcp-aql/policies/ToolClassification.d.ts.map +1 -1
  31. package/dist/handlers/mcp-aql/policies/ToolClassification.js +2 -1
  32. package/dist/handlers/strategies/AgentActivationStrategy.d.ts.map +1 -1
  33. package/dist/handlers/strategies/AgentActivationStrategy.js +5 -1
  34. package/dist/handlers/strategies/BaseActivationStrategy.d.ts +1 -0
  35. package/dist/handlers/strategies/BaseActivationStrategy.d.ts.map +1 -1
  36. package/dist/handlers/strategies/BaseActivationStrategy.js +15 -1
  37. package/dist/handlers/strategies/EnsembleActivationStrategy.d.ts.map +1 -1
  38. package/dist/handlers/strategies/EnsembleActivationStrategy.js +5 -1
  39. package/dist/handlers/strategies/MemoryActivationStrategy.d.ts.map +1 -1
  40. package/dist/handlers/strategies/MemoryActivationStrategy.js +5 -1
  41. package/dist/handlers/strategies/PersonaActivationStrategy.d.ts.map +1 -1
  42. package/dist/handlers/strategies/PersonaActivationStrategy.js +5 -1
  43. package/dist/handlers/strategies/SkillActivationStrategy.d.ts.map +1 -1
  44. package/dist/handlers/strategies/SkillActivationStrategy.js +5 -1
  45. package/dist/handlers/strategies/TemplateActivationStrategy.d.ts.map +1 -1
  46. package/dist/handlers/strategies/TemplateActivationStrategy.js +7 -2
  47. package/dist/persona/PersonaElement.js +2 -2
  48. package/dist/server/tools/MCPAQLTools.js +2 -1
  49. package/dist/services/SerializationService.d.ts.map +1 -1
  50. package/dist/services/SerializationService.js +7 -1
  51. package/dist/types/elements/IElement.d.ts +9 -0
  52. package/dist/types/elements/IElement.d.ts.map +1 -1
  53. package/dist/types/elements/IElement.js +1 -1
  54. package/dist/web/console/IngestRoutes.d.ts +6 -0
  55. package/dist/web/console/IngestRoutes.d.ts.map +1 -1
  56. package/dist/web/console/IngestRoutes.js +38 -9
  57. package/dist/web/console/LeaderElection.d.ts +39 -0
  58. package/dist/web/console/LeaderElection.d.ts.map +1 -1
  59. package/dist/web/console/LeaderElection.js +147 -29
  60. package/dist/web/console/LeaderForwardingSink.d.ts.map +1 -1
  61. package/dist/web/console/LeaderForwardingSink.js +5 -1
  62. package/dist/web/console/PromotionManager.d.ts.map +1 -1
  63. package/dist/web/console/PromotionManager.js +3 -11
  64. package/dist/web/public/app.js +62 -1
  65. package/dist/web/public/index.html +19 -17
  66. package/dist/web/public/permissions.css +190 -2
  67. package/dist/web/public/permissions.js +171 -30
  68. package/dist/web/public/sessions.js +111 -0
  69. package/dist/web/public/setup.js +131 -60
  70. package/dist/web/routes/permissionRoutes.d.ts.map +1 -1
  71. package/dist/web/routes/permissionRoutes.js +77 -5
  72. package/dist/web/routes/setupRoutes.d.ts.map +1 -1
  73. package/dist/web/routes/setupRoutes.js +16 -2
  74. package/dist/web/server.d.ts.map +1 -1
  75. package/dist/web/server.js +12 -10
  76. package/package.json +1 -1
  77. package/scripts/pretooluse-dollhouse.sh +39 -1
  78. package/server.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ToolClassification.d.ts","sourceRoot":"","sources":["../../../../src/handlers/mcp-aql/policies/ToolClassification.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAE1E,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,aAAa,CAAC;IACzB,wFAAwF;IACxF,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,EAAE,KAAK,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,eAAe,GAAG,iBAAiB,GAAG,cAAc,CAAC;QAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,uBAAuB,CAAC;CACzC;AAiPD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,wBAAwB,CAsC1B;AAiHD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,cAAc,EAAE,wBAAwB,GACvC,cAAc,CA0ChB;AAID;;;;;GAKG;AACH,wBAAgB,mBAAmB;;;;;;;;;;;;EAYlC;AAID;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,cAAc,EAAE,aAAa,EAAE,GAC9B,mBAAmB,CA2JrB"}
1
+ {"version":3,"file":"ToolClassification.d.ts","sourceRoot":"","sources":["../../../../src/handlers/mcp-aql/policies/ToolClassification.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAE1E,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,aAAa,CAAC;IACzB,wFAAwF;IACxF,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,EAAE,KAAK,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,eAAe,GAAG,iBAAiB,GAAG,cAAc,CAAC;QAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,uBAAuB,CAAC;CACzC;AAkPD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,wBAAwB,CAsC1B;AAiHD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,cAAc,EAAE,wBAAwB,GACvC,cAAc,CA0ChB;AAID;;;;;GAKG;AACH,wBAAgB,mBAAmB;;;;;;;;;;;;EAYlC;AAID;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,cAAc,EAAE,aAAa,EAAE,GAC9B,mBAAmB,CA2JrB"}
@@ -23,6 +23,7 @@ import { logger } from '../../../utils/logger.js';
23
23
  const GATEKEEPER_ESSENTIAL_OPERATIONS = new Set([
24
24
  'confirm_operation',
25
25
  'verify_challenge',
26
+ 'release_deadlock',
26
27
  'permission_prompt',
27
28
  'introspect',
28
29
  'get_active_elements',
@@ -665,4 +666,4 @@ function buildMatchTargets(toolName, toolInput) {
665
666
  }
666
667
  return targets;
667
668
  }
668
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9vbENsYXNzaWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2hhbmRsZXJzL21jcC1hcWwvcG9saWNpZXMvVG9vbENsYXNzaWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFFSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBaUNsRCx3RUFBd0U7QUFFeEU7Ozs7Ozs7R0FPRztBQUNILE1BQU0sK0JBQStCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDOUMsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIsWUFBWTtJQUNaLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLHdCQUF3QixFQUFRLHFCQUFxQjtJQUNyRCwyQkFBMkIsRUFBSyxxQkFBcUI7Q0FDdEQsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7R0FPRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDbEMsZUFBZTtJQUNmLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixxQkFBcUI7SUFDckIsa0JBQWtCO0lBQ2xCLFFBQVE7SUFDUixnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQiw0QkFBNEI7SUFDNUIsd0JBQXdCO0lBQ3hCLDZCQUE2QjtJQUM3QixrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixZQUFZO0lBQ1osbUJBQW1CO0lBQ25CLHFCQUFxQjtJQUNyQixrQkFBa0I7SUFDbEIsZ0JBQWdCO0lBQ2hCLHlCQUF5QjtJQUN6QixZQUFZO0lBQ1osZUFBZTtJQUNmLHVCQUF1QjtJQUN2QiwyQkFBMkI7SUFDM0IsZ0JBQWdCO0lBQ2hCLHdCQUF3QjtJQUN4Qiw0QkFBNEI7SUFDNUIsMkJBQTJCO0NBQzVCLENBQUMsQ0FBQztBQUVILHNFQUFzRTtBQUV0RTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDO0lBQ3pCLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7SUFDWixTQUFTO0lBQ1QsVUFBVTtJQUNWLFlBQVk7SUFDWixpQkFBaUI7SUFDakIsZUFBZTtJQUNmLGNBQWM7SUFDZCxVQUFVO0lBQ1YsV0FBVztDQUNaLENBQUMsQ0FBQztBQUVILG1EQUFtRDtBQUNuRCxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLGFBQWE7SUFDYixVQUFVO0lBQ1YsV0FBVztJQUNYLGFBQWE7SUFDYixXQUFXO0lBQ1gsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixLQUFLO0lBQ0wsS0FBSztJQUNMLE9BQU87SUFDUCxRQUFRO0lBQ1IsUUFBUTtJQUNSLE1BQU07SUFDTixRQUFRO0lBQ1IsV0FBVztJQUNYLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixvQkFBb0I7SUFDcEIsaUJBQWlCO0lBQ2pCLFNBQVM7SUFDVCxXQUFXO0lBQ1gsZUFBZTtJQUNmLFdBQVc7SUFDWCxtQkFBbUI7SUFDbkIsaUJBQWlCO0lBQ2pCLFNBQVM7SUFDVCxRQUFRO0lBQ1IsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsYUFBYTtJQUNiLGVBQWU7Q0FDaEIsQ0FBQztBQUVGLCtDQUErQztBQUMvQyxNQUFNLHVCQUF1QixHQUFHO0lBQzlCLFVBQVU7SUFDVixVQUFVO0lBQ1YsbUJBQW1CO0lBQ25CLGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsZUFBZTtJQUNmLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsWUFBWTtJQUNaLGVBQWU7SUFDZixZQUFZO0lBQ1osY0FBYztJQUNkLFFBQVE7SUFDUixRQUFRO0lBQ1IsT0FBTztJQUNQLFFBQVE7SUFDUix3RUFBd0U7SUFDeEUsYUFBYTtJQUNiLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZUFBZTtJQUNmLFdBQVc7SUFDWCxXQUFXO0lBQ1gsb0VBQW9FO0lBQ3BFLE9BQU87SUFDUCxTQUFTO0lBQ1QsTUFBTTtJQUNOLFFBQVE7SUFDUixTQUFTO0lBQ1QsV0FBVztJQUNYLFFBQVE7SUFDUixVQUFVO0lBQ1YsUUFBUTtJQUNSLE9BQU87SUFDUCxZQUFZO0lBQ1osWUFBWTtJQUNaLHdFQUF3RTtJQUN4RSxlQUFlO0lBQ2YsYUFBYTtJQUNiLFNBQVM7SUFDVCxPQUFPO0lBQ1AsWUFBWTtJQUNaLGVBQWU7SUFDZixlQUFlO0lBQ2YsZUFBZTtJQUNmLHFGQUFxRjtJQUNyRixlQUFlO0lBQ2YscUJBQXFCO0lBQ3JCLDBCQUEwQjtJQUMxQixVQUFVO0lBQ1YsU0FBUztJQUNULDZEQUE2RDtJQUM3RCxRQUFRO0lBQ1IsU0FBUztJQUNULFNBQVM7SUFDVCxXQUFXO0lBQ1gsK0NBQStDO0lBQy9DLE1BQU07SUFDTixPQUFPO0lBQ1AsVUFBVTtJQUNWLFFBQVE7SUFDUixTQUFTO0lBQ1QsNkVBQTZFO0lBQzdFLFdBQVc7SUFDWCxVQUFVO0lBQ1YsWUFBWTtJQUNaLDhDQUE4QztJQUM5QyxhQUFhO0lBQ2IsY0FBYztJQUNkLGNBQWM7SUFDZCxXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7SUFDWixXQUFXO0lBQ1gsWUFBWTtJQUNaLHNFQUFzRTtJQUN0RSxXQUFXO0lBQ1gsU0FBUztJQUNULFVBQVU7SUFDVixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLDZEQUE2RDtJQUM3RCxNQUFNO0lBQ04sMkRBQTJEO0lBQzNELGVBQWU7SUFDZixxQkFBcUI7SUFDckIsZUFBZTtDQUNoQixDQUFDO0FBRUYsb0RBQW9EO0FBQ3BELE1BQU0scUJBQXFCLEdBQUc7SUFDNUIsT0FBTztJQUNQLFNBQVM7SUFDVCxhQUFhO0lBQ2IsVUFBVTtJQUNWLFFBQVE7Q0FDVCxDQUFDO0FBRUYsc0VBQXNFO0FBRXRFOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsUUFBZ0IsRUFDaEIsU0FBa0M7SUFFbEMsK0JBQStCO0lBQy9CLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsUUFBUSxzQkFBc0IsRUFBRSxDQUFDO0lBQzdGLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsSUFBSSxRQUFRLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDeEIsT0FBTyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsaUdBQWlHO0lBQ2pHLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sU0FBUyxHQUFHLE9BQU8sU0FBUyxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyRixJQUFJLFNBQVMsSUFBSSwrQkFBK0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxPQUFPO2dCQUNMLFNBQVMsRUFBRSxNQUFNO2dCQUNqQixRQUFRLEVBQUUsT0FBTztnQkFDakIsTUFBTSxFQUFFLG1DQUFtQyxTQUFTLDRDQUE0QzthQUNqRyxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksU0FBUyxJQUFJLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BELE9BQU87Z0JBQ0wsU0FBUyxFQUFFLE1BQU07Z0JBQ2pCLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixNQUFNLEVBQUUsNEJBQTRCLFNBQVMsR0FBRzthQUNqRCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLDBDQUEwQyxFQUFFLENBQUM7SUFDN0csQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxRQUFRLDZDQUE2QyxFQUFFLENBQUM7SUFDM0gsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsUUFBUSwrQkFBK0IsRUFBRSxDQUFDO0FBQzNILENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsbUJBQW1CLENBQzFCLFNBQWtDO0lBRWxDLE1BQU0sT0FBTyxHQUFHLE9BQU8sU0FBUyxDQUFDLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUV0RixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsS0FBSyxNQUFNLE9BQU8sSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQzVDLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLDRCQUE0QixPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ25HLENBQUM7SUFDSCxDQUFDO0lBRUQsMkJBQTJCO0lBQzNCLEtBQUssTUFBTSxPQUFPLElBQUksdUJBQXVCLEVBQUUsQ0FBQztRQUM5QyxJQUFJLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSw4QkFBOEIsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUN2RyxDQUFDO0lBQ0gsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixLQUFLLE1BQU0sT0FBTyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDekMsSUFBSSxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUseUJBQXlCLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDOUYsQ0FBQztJQUNILENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsd0NBQXdDLEVBQUUsQ0FBQztBQUMzRyxDQUFDO0FBRUQscUVBQXFFO0FBRXJFOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxXQUFXLEdBQTJCO0lBQzFDLElBQUksRUFBRSxDQUFDO0lBQ1AsUUFBUSxFQUFFLEVBQUU7SUFDWixTQUFTLEVBQUUsRUFBRTtJQUNiLE9BQU8sRUFBRSxHQUFHO0NBQ2IsQ0FBQztBQUVGLG9EQUFvRDtBQUNwRCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUUxRCwrREFBK0Q7QUFDL0QsTUFBTSx1QkFBdUIsR0FBRztJQUM5QixTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZO0lBQy9DLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVTtJQUNoQyxhQUFhLEVBQUUsYUFBYSxFQUFFLGNBQWM7SUFDNUMsUUFBUSxFQUFFLE9BQU87Q0FDbEIsQ0FBQztBQUVGOzs7R0FHRztBQUNILFNBQVMsZ0JBQWdCLENBQUMsVUFBa0I7SUFDMUMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFbEQsMkJBQTJCO0lBQzNCLEtBQUssTUFBTSxNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztRQUM3QyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN2RSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsd0VBQXdFO0lBQ3hFLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN2RyxnRUFBZ0U7UUFDaEUsc0VBQXNFO1FBQ3RFLG1FQUFtRTtRQUNuRSxJQUFJLG9IQUFvSCxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztJQUN6SixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsa0RBQWtEO0FBQ2xELE1BQU0scUJBQXFCLEdBQUc7SUFDNUIsVUFBVTtJQUNWLFVBQVU7SUFDVixtQkFBbUI7SUFDbkIsZUFBZTtJQUNmLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsT0FBTztJQUNQLFNBQVM7SUFDVCxRQUFRO0lBQ1IsWUFBWTtDQUNiLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FDeEIsUUFBZ0IsRUFDaEIsU0FBa0MsRUFDbEMsY0FBd0M7SUFFeEMsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEQsTUFBTSxPQUFPLEdBQWEsQ0FBQyxTQUFTLGNBQWMsQ0FBQyxTQUFTLEtBQUssV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pILElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztJQUV6QixtREFBbUQ7SUFDbkQsSUFBSSxRQUFRLEtBQUssTUFBTSxJQUFJLE9BQU8sU0FBUyxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNqRSxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pDLEtBQUssTUFBTSxPQUFPLElBQUkscUJBQXFCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDckMsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDcEIsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsT0FBTyxRQUFRLENBQUMsQ0FBQztnQkFDdkQsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO1FBRUQsbUNBQW1DO1FBQ25DLElBQUksNENBQTRDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDL0QsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDekIsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGlFQUFpRTtJQUNqRSx1RUFBdUU7SUFDdkUscURBQXFEO0lBQ3JELElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLENBQUMsU0FBUyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBVyxDQUFDO1FBQzNFLElBQUksVUFBVSxJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDL0MsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUMxQyxDQUFDO0FBRUQscUVBQXFFO0FBRXJFOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPO1FBQ0wsVUFBVSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDM0Isa0JBQWtCLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQUFDO1FBQzNDLHVCQUF1QixFQUFFLENBQUMsR0FBRyx1QkFBdUIsQ0FBQztRQUNyRCxxQkFBcUIsRUFBRSxDQUFDLEdBQUcscUJBQXFCLENBQUM7UUFDakQscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLHFCQUFxQixDQUFDO1FBQ2pELHVCQUF1QixFQUFFLENBQUMsR0FBRyx1QkFBdUIsQ0FBQztRQUNyRCwrQkFBK0IsRUFBRSxDQUFDLEdBQUcsK0JBQStCLENBQUM7UUFDckUsbUJBQW1CLEVBQUUsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO1FBQzdDLFdBQVcsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFO0tBQ2hDLENBQUM7QUFDSixDQUFDO0FBRUQsc0VBQXNFO0FBRXRFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxRQUFnQixFQUNoQixTQUFrQyxFQUNsQyxjQUErQjtJQUUvQixNQUFNLGlCQUFpQixHQUFpRCxFQUFFLENBQUM7SUFDM0UsTUFBTSxhQUFhLEdBQWEsRUFBRSxDQUFDO0lBRW5DLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUVwQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNCLGFBQWEsQ0FBQyxJQUFJLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUNuRSxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsUUFBUSwrQ0FBK0MsQ0FBQyxDQUFDO1FBQ3JGLE9BQU87WUFDTCxRQUFRLEVBQUUsVUFBVTtZQUNwQixhQUFhLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUU7U0FDcEQsQ0FBQztJQUNKLENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsTUFBTSxZQUFZLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVELE1BQU0sa0JBQWtCLEdBQUcscUJBQXFCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakUsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsUUFBUSxZQUFZLGNBQWMsQ0FBQyxNQUFNLGNBQWMsa0JBQWtCLHFCQUFxQixZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVqSyxJQUFJLDBCQUEwQixHQUFHLEtBQUssQ0FBQztJQUN2QyxJQUFJLHVCQUF1QixHQUFHLEtBQUssQ0FBQztJQUNwQyxNQUFNLHlCQUF5QixHQUFhLEVBQUUsQ0FBQztJQUUvQyxLQUFLLE1BQU0sT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixDQUFDO1FBQ3hFLE1BQU0sWUFBWSxHQUFHLFlBQVksRUFBRSxZQUFZLENBQUM7UUFDaEQsTUFBTSxlQUFlLEdBQUcsWUFBWSxFQUFFLGVBQWUsQ0FBQztRQUN0RCxNQUFNLGFBQWEsR0FBRyxZQUFZLEVBQUUsYUFBYSxDQUFDO1FBRWxELE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztlQUMzRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7ZUFDOUQsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFaEUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNuRSxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSSw0QkFBNEIsQ0FBQyxDQUFDO1lBQ2pGLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxJQUFJLHNDQUFzQyxDQUFDLENBQUM7WUFDakcsU0FBUztRQUNYLENBQUM7UUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSSx3QkFBd0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWhTLGdEQUFnRDtRQUNoRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxLQUFLLE1BQU0sT0FBTyxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNuQyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVE7b0JBQUUsU0FBUztnQkFDMUMsS0FBSyxNQUFNLE1BQU0sSUFBSSxZQUFZLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7d0JBQ3BDLGlCQUFpQixDQUFDLElBQUksQ0FBQzs0QkFDckIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJOzRCQUNsQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7NEJBQ2xCLE9BQU8sRUFBRSxjQUFjOzRCQUN2QixjQUFjLEVBQUUsT0FBTzs0QkFDdkIsYUFBYSxFQUFFLE1BQU07eUJBQ3RCLENBQUMsQ0FBQzt3QkFDSCxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSSxrQkFBa0IsT0FBTyxjQUFjLE1BQU0sR0FBRyxDQUFDLENBQUM7d0JBQzNHLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLElBQUksa0JBQWtCLE9BQU8sY0FBYyxNQUFNLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDekksT0FBTzs0QkFDTCxRQUFRLEVBQUUsTUFBTTs0QkFDaEIsT0FBTyxFQUFFLGFBQWEsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSSxzQkFBc0IsT0FBTyxjQUFjLE1BQU0sR0FBRzs0QkFDdkcsYUFBYSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFO3lCQUNwRCxDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsb0VBQW9FO1FBQ3BFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pFLEtBQUssTUFBTSxPQUFPLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUTtvQkFBRSxTQUFTO2dCQUMxQyxLQUFLLE1BQU0sTUFBTSxJQUFJLFlBQVksRUFBRSxDQUFDO29CQUNsQyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQzt3QkFDcEMsaUJBQWlCLENBQUMsSUFBSSxDQUFDOzRCQUNyQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7NEJBQ2xCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTs0QkFDbEIsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsY0FBYyxFQUFFLE9BQU87NEJBQ3ZCLGFBQWEsRUFBRSxNQUFNO3lCQUN0QixDQUFDLENBQUM7d0JBQ0gsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLElBQUkscUJBQXFCLE9BQU8sY0FBYyxNQUFNLEdBQUcsQ0FBQyxDQUFDO3dCQUNqSCxNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxJQUFJLHFCQUFxQixPQUFPLGNBQWMsTUFBTSxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQy9JLE9BQU87NEJBQ0wsUUFBUSxFQUFFLFNBQWtCOzRCQUM1QixPQUFPLEVBQUUsc0JBQXNCLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLElBQUksK0NBQStDLE9BQU8sR0FBRzs0QkFDckgsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFOzRCQUNoRCxhQUFhLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUU7eUJBQ3BELENBQUM7b0JBQ0osQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCw4QkFBOEI7UUFDOUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0QsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO1lBQ2xDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7WUFDcEUsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBRXpCLEtBQUssTUFBTSxPQUFPLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUTtvQkFBRSxTQUFTO2dCQUMxQyxLQUFLLE1BQU0sTUFBTSxJQUFJLFlBQVksRUFBRSxDQUFDO29CQUNsQyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQzt3QkFDcEMsaUJBQWlCLENBQUMsSUFBSSxDQUFDOzRCQUNyQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7NEJBQ2xCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTs0QkFDbEIsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLGNBQWMsRUFBRSxPQUFPOzRCQUN2QixhQUFhLEVBQUUsTUFBTTt5QkFDdEIsQ0FBQyxDQUFDO3dCQUNILGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxJQUFJLG9CQUFvQixPQUFPLGNBQWMsTUFBTSxHQUFHLENBQUMsQ0FBQzt3QkFDdkcsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSSxtQkFBbUIsT0FBTyxjQUFjLE1BQU0sR0FBRyxDQUFDLENBQUM7d0JBQ25ILHVCQUF1QixHQUFHLElBQUksQ0FBQzt3QkFDL0IsWUFBWSxHQUFHLElBQUksQ0FBQzt3QkFDcEIsTUFBTTtvQkFDUixDQUFDO2dCQUNILENBQUM7Z0JBQ0QsSUFBSSxZQUFZO29CQUFFLE1BQU07WUFDMUIsQ0FBQztZQUVELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbEIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRSxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSSx1Q0FBdUMsQ0FBQyxDQUFDO1lBQzlGLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNuRSxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSSxtQ0FBbUMsQ0FBQyxDQUFDO1FBQzFGLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0ZBQWdGO0lBQ2hGLElBQUksMEJBQTBCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQzNELE1BQU0sV0FBVyxHQUFHLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RCxhQUFhLENBQUMsSUFBSSxDQUFDLDJEQUEyRCxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQzlGLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLFFBQVEseUNBQXlDLFdBQVcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNILE9BQU87WUFDTCxRQUFRLEVBQUUsTUFBTTtZQUNoQixPQUFPLEVBQUUsU0FBUyxRQUFRLDZDQUE2QyxXQUFXLDZFQUE2RTtZQUMvSixhQUFhLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUU7U0FDcEQsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLDBCQUEwQixFQUFFLENBQUM7UUFDL0IsYUFBYSxDQUFDLElBQUksQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxRQUFRLGlEQUFpRCxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlHLENBQUM7U0FBTSxDQUFDO1FBQ04sYUFBYSxDQUFDLElBQUksQ0FBQyx1RUFBdUUsQ0FBQyxDQUFDO1FBQzVGLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxRQUFRLHdEQUF3RCxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JILENBQUM7SUFFRCxPQUFPO1FBQ0wsUUFBUSxFQUFFLFVBQVU7UUFDcEIsYUFBYSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFO0tBQ3BELENBQUM7QUFDSixDQUFDO0FBRUQsMkRBQTJEO0FBQzNELFNBQVMsT0FBTyxDQUFDLFNBQWlCO0lBQ2hDLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMzRCxDQUFDO0FBRUQsbUdBQW1HO0FBQ25HLFNBQVMscUJBQXFCLENBQUMsUUFBeUI7SUFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDekMsS0FBSyxNQUFNLEVBQUUsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMxQixNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVHLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQztBQUVwQzs7Ozs7R0FLRztBQUNILFNBQVMsa0JBQWtCLENBQUMsS0FBYTtJQUN2Qyx1RUFBdUU7SUFDdkUsZ0ZBQWdGO0lBQ2hGLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsNENBQTRDO0lBQzVDLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FDeEIsUUFBZ0IsRUFDaEIsU0FBa0M7SUFFbEMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUUzQixJQUFJLFFBQVEsS0FBSyxNQUFNLElBQUksT0FBTyxTQUFTLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2pFLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7UUFDekYsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztTQUFNLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxJQUFJLFFBQVEsS0FBSyxPQUFPLENBQUMsSUFBSSxPQUFPLFNBQVMsQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDcEcsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUMzRixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRvb2wgQ2xhc3NpZmljYXRpb24gZm9yIENMSS1MZXZlbCBQZXJtaXNzaW9uIFByb21wdHNcbiAqXG4gKiBQcm92aWRlcyBzdGF0aWMgY2xhc3NpZmljYXRpb24gb2YgQ2xhdWRlIENvZGUgQ0xJIHRvb2wgY2FsbHMgYW5kXG4gKiBldmFsdWF0aW9uIGFnYWluc3QgYWN0aXZlIGVsZW1lbnQgZ2F0ZWtlZXBlciBwb2xpY2llcy5cbiAqXG4gKiBVc2VkIGJ5IHRoZSBwZXJtaXNzaW9uX3Byb21wdCBvcGVyYXRpb24gKElzc3VlICM2MjUpIHRvIGV2YWx1YXRlXG4gKiAtLXBlcm1pc3Npb24tcHJvbXB0LXRvb2wgcmVxdWVzdHMgd2l0aG91dCByZXF1aXJpbmcgTExNIGV2YWx1YXRpb24uXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IG1hdGNoZXNQYXR0ZXJuIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcGF0dGVybk1hdGNoZXIuanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB0eXBlIHsgQWN0aXZlRWxlbWVudCB9IGZyb20gJy4vRWxlbWVudFBvbGljaWVzLmpzJztcbmltcG9ydCB0eXBlIHsgUmlza0Fzc2Vzc21lbnQgfSBmcm9tICcuLi9HYXRla2VlcGVyVHlwZXMuanMnO1xuXG4vLyDilIDilIAgVHlwZXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmV4cG9ydCB0eXBlIFRvb2xSaXNrTGV2ZWwgPSAnc2FmZScgfCAnbW9kZXJhdGUnIHwgJ2Rhbmdlcm91cycgfCAnYmxvY2tlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbENsYXNzaWZpY2F0aW9uUmVzdWx0IHtcbiAgcmlza0xldmVsOiBUb29sUmlza0xldmVsO1xuICAvKiogJ2FsbG93JyA9IGF1dG8tYXBwcm92ZSwgJ2RlbnknID0gYXV0by1yZWplY3QsICdldmFsdWF0ZScgPSBjaGVjayBlbGVtZW50IHBvbGljaWVzICovXG4gIGJlaGF2aW9yOiAnYWxsb3cnIHwgJ2RlbnknIHwgJ2V2YWx1YXRlJztcbiAgcmVhc29uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9saWN5RXZhbHVhdGlvbkNvbnRleHQge1xuICBldmFsdWF0ZWRFbGVtZW50czogQXJyYXk8e1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbWF0Y2hlZD86ICdhbGxvd1BhdHRlcm5zJyB8ICdjb25maXJtUGF0dGVybnMnIHwgJ2RlbnlQYXR0ZXJucyc7XG4gICAgbWF0Y2hlZFBhdHRlcm4/OiBzdHJpbmc7XG4gICAgbWF0Y2hlZFRhcmdldD86IHN0cmluZztcbiAgfT47XG4gIGRlY2lzaW9uQ2hhaW46IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsaVRvb2xQb2xpY3lSZXN1bHQge1xuICBiZWhhdmlvcjogJ2FsbG93JyB8ICdkZW55JyB8ICdldmFsdWF0ZScgfCAnY29uZmlybSc7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIGNvbmZpcm1Tb3VyY2U/OiBzdHJpbmc7XG4gIHBvbGljeUNvbnRleHQ/OiBQb2xpY3lFdmFsdWF0aW9uQ29udGV4dDtcbn1cblxuLy8g4pSA4pSAIEdhdGVrZWVwZXItRXNzZW50aWFsIE9wZXJhdGlvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogTUNQLUFRTCBvcGVyYXRpb25zIHRoYXQgbXVzdCBORVZFUiBiZSBibG9ja2VkIGJ5IHBlcm1pc3Npb25fcHJvbXB0LFxuICogZXZlbiBpZiBlbGVtZW50IGRlbnlQYXR0ZXJucyB3b3VsZCBtYXRjaCB0aGUgTUNQIHRvb2wgbmFtZS5cbiAqXG4gKiBUaGVzZSBhcmUgZXNzZW50aWFsIGZvciB0aGUgR2F0ZWtlZXBlciBmbG93IGl0c2VsZi4gQmxvY2tpbmcgdGhlbVxuICogd291bGQgcHJldmVudCB0aGUgaHVtYW4taW4tdGhlLWxvb3AgYXBwcm92YWwgcGF0aCBmcm9tIGZ1bmN0aW9uaW5nXG4gKiAoZS5nLiwgYSBkZW55UGF0dGVybiBvZiAnbWNwX19Eb2xsaG91c2VNQ1AqJyB3b3VsZCBibG9jayBjb25maXJtX29wZXJhdGlvbikuXG4gKi9cbmNvbnN0IEdBVEVLRUVQRVJfRVNTRU5USUFMX09QRVJBVElPTlMgPSBuZXcgU2V0KFtcbiAgJ2NvbmZpcm1fb3BlcmF0aW9uJyxcbiAgJ3ZlcmlmeV9jaGFsbGVuZ2UnLFxuICAncGVybWlzc2lvbl9wcm9tcHQnLFxuICAnaW50cm9zcGVjdCcsXG4gICdnZXRfYWN0aXZlX2VsZW1lbnRzJyxcbiAgJ2dldF9leGVjdXRpb25fc3RhdGUnLFxuICAnZ2V0X2dhdGhlcmVkX2RhdGEnLFxuICAnYXBwcm92ZV9jbGlfcGVybWlzc2lvbicsICAgICAgIC8vIElzc3VlICM2MjUgUGhhc2UgM1xuICAnZ2V0X3BlbmRpbmdfY2xpX2FwcHJvdmFscycsICAgIC8vIElzc3VlICM2MjUgUGhhc2UgM1xuXSk7XG5cbi8qKlxuICogTUNQLUFRTCBvcGVyYXRpb25zIHRoYXQgYXJlIGluaGVyZW50bHkgcmVhZC1vbmx5LlxuICpcbiAqIFRoZXNlIGF1dG8tYWxsb3cgaW4gcGVybWlzc2lvbl9wcm9tcHQgKG5vIGVsZW1lbnQgcG9saWN5IGV2YWx1YXRpb24pLlxuICogVGhlIEdhdGVrZWVwZXIgKExheWVyIDIpIHN0aWxsIGFwcGxpZXMgaXRzIG93biBwZXItb3BlcmF0aW9uIHBvbGljaWVzLFxuICogc28gdGhpcyBkb2Vzbid0IGJ5cGFzcyBzZXJ2ZXItc2lkZSBhY2Nlc3MgY29udHJvbCDigJQgaXQganVzdCBhdm9pZHNcbiAqIHVubmVjZXNzYXJ5ICdldmFsdWF0ZScgcm91bmQtdHJpcHMgZm9yIG9wZXJhdGlvbnMgdGhhdCBjYW4ndCBtb2RpZnkgc3RhdGUuXG4gKi9cbmNvbnN0IFNBRkVfTUNQX09QRVJBVElPTlMgPSBuZXcgU2V0KFtcbiAgJ2xpc3RfZWxlbWVudHMnLFxuICAnZ2V0X2VsZW1lbnQnLFxuICAnZ2V0X2VsZW1lbnRfZGV0YWlscycsXG4gICdzZWFyY2hfZWxlbWVudHMnLFxuICAncXVlcnlfZWxlbWVudHMnLFxuICAnZ2V0X2FjdGl2ZV9lbGVtZW50cycsXG4gICd2YWxpZGF0ZV9lbGVtZW50JyxcbiAgJ3JlbmRlcicsXG4gICdleHBvcnRfZWxlbWVudCcsXG4gICdpbnRyb3NwZWN0JyxcbiAgJ2dldF9leGVjdXRpb25fc3RhdGUnLFxuICAnZ2V0X2dhdGhlcmVkX2RhdGEnLFxuICAnYnJvd3NlX2NvbGxlY3Rpb24nLFxuICAnc2VhcmNoX2NvbGxlY3Rpb24nLFxuICAnc2VhcmNoX2NvbGxlY3Rpb25fZW5oYW5jZWQnLFxuICAnZ2V0X2NvbGxlY3Rpb25fY29udGVudCcsXG4gICdnZXRfY29sbGVjdGlvbl9jYWNoZV9oZWFsdGgnLFxuICAncG9ydGZvbGlvX3N0YXR1cycsXG4gICdwb3J0Zm9saW9fY29uZmlnJyxcbiAgJ3NlYXJjaF9wb3J0Zm9saW8nLFxuICAnc2VhcmNoX2FsbCcsXG4gICdjaGVja19naXRodWJfYXV0aCcsXG4gICdvYXV0aF9oZWxwZXJfc3RhdHVzJyxcbiAgJ2RvbGxob3VzZV9jb25maWcnLFxuICAnZ2V0X2J1aWxkX2luZm8nLFxuICAnZ2V0X2NhY2hlX2J1ZGdldF9yZXBvcnQnLFxuICAncXVlcnlfbG9ncycsXG4gICdxdWVyeV9tZXRyaWNzJyxcbiAgJ2ZpbmRfc2ltaWxhcl9lbGVtZW50cycsXG4gICdnZXRfZWxlbWVudF9yZWxhdGlvbnNoaXBzJyxcbiAgJ3NlYXJjaF9ieV92ZXJiJyxcbiAgJ2dldF9yZWxhdGlvbnNoaXBfc3RhdHMnLFxuICAnZ2V0X2VmZmVjdGl2ZV9jbGlfcG9saWNpZXMnLFxuICAnZ2V0X3BlbmRpbmdfY2xpX2FwcHJvdmFscycsXG5dKTtcblxuLy8g4pSA4pSAIFN0YXRpYyBDbGFzc2lmaWNhdGlvbiBMaXN0cyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBUb29scyB0aGF0IGFyZSBhbHdheXMgc2FmZSAocmVhZC1vbmx5LCBubyBzaWRlIGVmZmVjdHMpLlxuICpcbiAqIE5PVEU6IFwiU2FmZVwiIGhlcmUgbWVhbnMgbm8gZGVzdHJ1Y3RpdmUgc2lkZSBlZmZlY3RzIOKAlCBpdCBkb2VzIE5PVCBtZWFuXG4gKiB1bnJlc3RyaWN0ZWQuIFJlYWQtb25seSB0b29scyBjYW4gc3RpbGwgcG9zZSBpbmZvcm1hdGlvbi1sZWFrYWdlIG9yXG4gKiBzY29wZS1jcmVlcCByaXNrcyB3aGVuIHVzZWQgdG8gYWNjZXNzIGZpbGVzIG91dHNpZGUgdGhlIHByb2plY3Qgd29ya2luZ1xuICogZGlyZWN0b3J5IChlLmcuLCB+Ly5zc2gvKiwgL2V0Yy9wYXNzd2QsIGNyZWRlbnRpYWxzIGluIGhvbWUgZGlyZWN0b3JpZXMpLlxuICogTW9zdCBMTE0gY2xpZW50cyAoQ2xhdWRlIENvZGUsIEN1cnNvciwgZXRjLikgYWxyZWFkeSBlbmZvcmNlIGRpcmVjdG9yeVxuICogc2NvcGluZyBhdCB0aGUgY2xpZW50IGxldmVsLiBUaGUgYGFzc2Vzc1Jpc2soKWAgZnVuY3Rpb24gYXBwbGllcyBhIHNtYWxsXG4gKiBzY29yZSBidW1wIGZvciByZWFkIG9wZXJhdGlvbnMgdGFyZ2V0aW5nIG91dC1vZi1zY29wZSBwYXRocyBhcyBhblxuICogYWRkaXRpb25hbCBzaWduYWwgZm9yIGFwcHJvdmFsIHBvbGljaWVzLlxuICovXG5jb25zdCBTQUZFX1RPT0xTID0gbmV3IFNldChbXG4gICdSZWFkJyxcbiAgJ0dyZXAnLFxuICAnR2xvYicsXG4gICdXZWJGZXRjaCcsXG4gICdXZWJTZWFyY2gnLFxuICAnVGFza0NyZWF0ZScsXG4gICdUYXNrVXBkYXRlJyxcbiAgJ1Rhc2tHZXQnLFxuICAnVGFza0xpc3QnLFxuICAnVGFza091dHB1dCcsXG4gICdBc2tVc2VyUXVlc3Rpb24nLFxuICAnRW50ZXJQbGFuTW9kZScsXG4gICdFeGl0UGxhbk1vZGUnLFxuICAnVG9kb1JlYWQnLFxuICAnVG9kb1dyaXRlJyxcbl0pO1xuXG4vKiogQmFzaCBjb21tYW5kIHByZWZpeGVzL3BhdHRlcm5zIHRoYXQgYXJlIHNhZmUgKi9cbmNvbnN0IFNBRkVfQkFTSF9QQVRURVJOUyA9IFtcbiAgJ2dpdCBzdGF0dXMqJyxcbiAgJ2dpdCBsb2cqJyxcbiAgJ2dpdCBkaWZmKicsXG4gICdnaXQgYnJhbmNoKicsXG4gICdnaXQgc2hvdyonLFxuICAnZ2l0IHJlbW90ZSonLFxuICAnZ2l0IHN0YXNoIGxpc3QqJyxcbiAgJ2xzKicsXG4gICdwd2QnLFxuICAnY2F0IConLFxuICAnaGVhZCAqJyxcbiAgJ3RhaWwgKicsXG4gICd3YyAqJyxcbiAgJ2VjaG8gKicsXG4gICducG0gdGVzdConLFxuICAnbnBtIHJ1biBsaW50KicsXG4gICducG0gcnVuIGJ1aWxkKicsXG4gICducG0gcnVuIHRlc3QqJyxcbiAgJ25wbSBydW4gY2hlY2sqJyxcbiAgJ25wbSBydW4gdHlwZWNoZWNrKicsXG4gICducG0gcnVuIGZvcm1hdConLFxuICAnbnBtIGxzKicsXG4gICducG0gaW5mbyonLFxuICAnbnBtIG91dGRhdGVkKicsXG4gICducHggamVzdConLFxuICAnbnB4IHRzYyAtLW5vRW1pdConLFxuICAnbm9kZSAtLXZlcnNpb24qJyxcbiAgJ3doaWNoIConLFxuICAndHlwZSAqJyxcbiAgJ2doIGlzc3VlIGxpc3QqJyxcbiAgJ2doIGlzc3VlIHZpZXcqJyxcbiAgJ2doIHByIGxpc3QqJyxcbiAgJ2doIHByIHZpZXcqJyxcbiAgJ2doIHByIGNoZWNrcyonLFxuXTtcblxuLyoqIEJhc2ggY29tbWFuZCBwYXR0ZXJucyB0aGF0IGFyZSBkYW5nZXJvdXMgKi9cbmNvbnN0IERBTkdFUk9VU19CQVNIX1BBVFRFUk5TID0gW1xuICAncm0gLXJmIConLFxuICAncm0gLWZyIConLFxuICAnZ2l0IHB1c2ggLS1mb3JjZSonLFxuICAnZ2l0IHB1c2ggLWYgKicsXG4gICdnaXQgcmVzZXQgLS1oYXJkKicsXG4gICdnaXQgY2xlYW4gLWYqJyxcbiAgJ2dpdCBjaGVja291dCAtLSAqJyxcbiAgJ2dpdCBicmFuY2ggLUQgKicsXG4gICdjaG1vZCA3NzcqJyxcbiAgJ2NobW9kIC1SIDc3NyonLFxuICAnY2htb2QgK3MgKicsXG4gICdjaG93biByb290IConLFxuICAnc3VkbyAqJyxcbiAgJ2RvYXMgKicsXG4gICdzdSAtKicsXG4gICdldmFsIConLFxuICAvLyBJbmxpbmUgaW50ZXJwcmV0ZXIgZXhlY3V0aW9uICgjMTc4Mikg4oCUIGFyYml0cmFyeSBjb2RlIHZpYSAtYy8tZSBmbGFnc1xuICAncHl0aG9uIC1jIConLFxuICAncHl0aG9uMyAtYyAqJyxcbiAgJ25vZGUgLWUgKicsXG4gICdub2RlIC0tZXZhbCAqJyxcbiAgJ3BlcmwgLWUgKicsXG4gICdydWJ5IC1lIConLFxuICAvLyBQaXBlLXRvLXNoZWxsIHBhdHRlcm5zICh3aXRoIGFuZCB3aXRob3V0IHNwYWNlcywgbXVsdGlwbGUgc2hlbGxzKVxuICAnKnwgc2gnLFxuICAnKnwgc2ggKicsXG4gICcqfHNoJyxcbiAgJyp8c2ggKicsXG4gICcqfCBiYXNoJyxcbiAgJyp8IGJhc2ggKicsXG4gICcqfGJhc2gnLFxuICAnKnxiYXNoIConLFxuICAnKnwgenNoJyxcbiAgJyp8enNoJyxcbiAgJ2N1cmwgKiB8IConLFxuICAnd2dldCAqIHwgKicsXG4gIC8vIFBhY2thZ2UgbWFuYWdlciBpbnN0YWxscyAoY2FuIGV4ZWN1dGUgYXJiaXRyYXJ5IHBvc3QtaW5zdGFsbCBzY3JpcHRzKVxuICAnbnBtIGluc3RhbGwgKicsXG4gICducG0gaW5zdGFsbCcsXG4gICducG0gaSAqJyxcbiAgJ25wbSBpJyxcbiAgJ3lhcm4gYWRkIConLFxuICAneWFybiBpbnN0YWxsKicsXG4gICdwaXAgaW5zdGFsbCAqJyxcbiAgJ2dlbSBpbnN0YWxsIConLFxuICAvLyBFbnZpcm9ubWVudCBtYW5pcHVsYXRpb24gKHBhdGggcG9pc29uaW5nLCBsaWJyYXJ5IGluamVjdGlvbiwgdmFyaWFibGUgZGVzdHJ1Y3Rpb24pXG4gICdleHBvcnQgUEFUSD0qJyxcbiAgJ2V4cG9ydCBMRF9QUkVMT0FEPSonLFxuICAnZXhwb3J0IExEX0xJQlJBUllfUEFUSD0qJyxcbiAgJ2VudiAtaSAqJyxcbiAgJ3Vuc2V0IConLFxuICAvLyBQcm9jZXNzIGNvbnRyb2wgKGNhbiB0ZXJtaW5hdGUgYWdlbnRzIG9yIHN5c3RlbSBwcm9jZXNzZXMpXG4gICdraWxsIConLFxuICAna2lsbCAtKicsXG4gICdwa2lsbCAqJyxcbiAgJ2tpbGxhbGwgKicsXG4gIC8vIE5ldHdvcmsgdG9vbHMgKGV4ZmlsdHJhdGlvbiwgcmV2ZXJzZSBzaGVsbHMpXG4gICduYyAqJyxcbiAgJ25jIC0qJyxcbiAgJ25ldGNhdCAqJyxcbiAgJ25jYXQgKicsXG4gICdzb2NhdCAqJyxcbiAgLy8gQXJjaGl2ZSBvcGVyYXRpb25zIChhcmNoaXZlIGJvbWJzLCByb290IGRpcmVjdG9yeSBleGZpbHRyYXRpb24vcmFuc29td2FyZSlcbiAgJ3RhciAteGYgKicsXG4gICd0YXIgeGYgKicsXG4gICd6aXAgLXIgKiAvJyxcbiAgLy8gQ29tbWFuZCBjaGFpbmluZyB3aXRoIGRhbmdlcm91cyBzdWJjb21tYW5kc1xuICAnKjsgcm0gLXJmIConLFxuICAnKiYmIHJtIC1yZiAqJyxcbiAgJyp8fCBybSAtcmYgKicsXG4gICcqOyBzdWRvIConLFxuICAnKiYmIHN1ZG8gKicsXG4gICcqfHwgc3VkbyAqJyxcbiAgJyo7IGV2YWwgKicsXG4gICcqJiYgZXZhbCAqJyxcbiAgLy8gU3VicHJvY2VzcyBleGVjdXRpb24gd3JhcHBlcnMgKGJ5cGFzcyBvdXRlciBjb21tYW5kIGNsYXNzaWZpY2F0aW9uKVxuICAnYmFzaCAtYyAqJyxcbiAgJ3NoIC1jIConLFxuICAnenNoIC1jIConLFxuICAnL2Jpbi9iYXNoIC1jIConLFxuICAnL2Jpbi9zaCAtYyAqJyxcbiAgLy8gUHJvY2VzcyBzdWJzdGl0dXRpb24gKGNhbiBpbmplY3QgYXJiaXRyYXJ5IGNvbW1hbmQgb3V0cHV0KVxuICAnKjwoKicsXG4gIC8vIEVuY29kZWQgcGF5bG9hZCBleGVjdXRpb24gKGJhc2U2NC1kZWNvZGUgcGlwZWQgdG8gc2hlbGwpXG4gICcqYmFzZTY0IC1kKnwqJyxcbiAgJypiYXNlNjQgLS1kZWNvZGUqfConLFxuICAnKmJhc2U2NCAtRCp8KicsXG5dO1xuXG4vKiogQmFzaCBjb21tYW5kIHBhdHRlcm5zIHRoYXQgYXJlIGFsd2F5cyBibG9ja2VkICovXG5jb25zdCBCTE9DS0VEX0JBU0hfUEFUVEVSTlMgPSBbXG4gICdta2ZzKicsXG4gICdkZCBpZj0qJyxcbiAgJzooKXs6fDomfTs6JyxcbiAgJ2Zvcm1hdCAqJyxcbiAgJyooKXsgKicsXG5dO1xuXG4vLyDilIDilIAgU3RhdGljIENsYXNzaWZpY2F0aW9uIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIENsYXNzaWZ5IGEgQ0xJIHRvb2wgY2FsbCBieSByaXNrIGxldmVsIHVzaW5nIHN0YXRpYyBydWxlcy5cbiAqXG4gKiBSZXR1cm5zICdhbGxvdycgZm9yIGtub3duLXNhZmUgdG9vbHMsICdkZW55JyBmb3Iga25vd24tZGFuZ2Vyb3VzIHBhdHRlcm5zLFxuICogYW5kICdldmFsdWF0ZScgZm9yIGFueXRoaW5nIHRoYXQgbmVlZHMgZnVydGhlciBwb2xpY3kgY2hlY2tpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFzc2lmeVRvb2woXG4gIHRvb2xOYW1lOiBzdHJpbmcsXG4gIHRvb2xJbnB1dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbik6IFRvb2xDbGFzc2lmaWNhdGlvblJlc3VsdCB7XG4gIC8vIEtub3duLXNhZmUgdG9vbHM6IGF1dG8tYWxsb3dcbiAgaWYgKFNBRkVfVE9PTFMuaGFzKHRvb2xOYW1lKSkge1xuICAgIHJldHVybiB7IHJpc2tMZXZlbDogJ3NhZmUnLCBiZWhhdmlvcjogJ2FsbG93JywgcmVhc29uOiBgJHt0b29sTmFtZX0gaXMgYSByZWFkLW9ubHkgdG9vbGAgfTtcbiAgfVxuXG4gIC8vIEJhc2g6IHN1Yi1jbGFzc2lmeSBieSBjb21tYW5kIGNvbnRlbnRcbiAgaWYgKHRvb2xOYW1lID09PSAnQmFzaCcpIHtcbiAgICByZXR1cm4gY2xhc3NpZnlCYXNoQ29tbWFuZCh0b29sSW5wdXQpO1xuICB9XG5cbiAgLy8gTUNQIHRvb2wgY2FsbHM6IGF1dG8tYWxsb3cgZ2F0ZWtlZXBlci1lc3NlbnRpYWwgYW5kIHNhZmUgcmVhZC1vbmx5IG9wZXJhdGlvbnMsIGV2YWx1YXRlIG90aGVyc1xuICBpZiAodG9vbE5hbWUuc3RhcnRzV2l0aCgnbWNwX18nKSkge1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHR5cGVvZiB0b29sSW5wdXQub3BlcmF0aW9uID09PSAnc3RyaW5nJyA/IHRvb2xJbnB1dC5vcGVyYXRpb24gOiAnJztcbiAgICBpZiAob3BlcmF0aW9uICYmIEdBVEVLRUVQRVJfRVNTRU5USUFMX09QRVJBVElPTlMuaGFzKG9wZXJhdGlvbikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJpc2tMZXZlbDogJ3NhZmUnLFxuICAgICAgICBiZWhhdmlvcjogJ2FsbG93JyxcbiAgICAgICAgcmVhc29uOiBgR2F0ZWtlZXBlci1lc3NlbnRpYWwgb3BlcmF0aW9uICcke29wZXJhdGlvbn0nIOKAlCBjYW5ub3QgYmUgYmxvY2tlZCBieSBwZXJtaXNzaW9uX3Byb21wdGAsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAob3BlcmF0aW9uICYmIFNBRkVfTUNQX09QRVJBVElPTlMuaGFzKG9wZXJhdGlvbikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJpc2tMZXZlbDogJ3NhZmUnLFxuICAgICAgICBiZWhhdmlvcjogJ2FsbG93JyxcbiAgICAgICAgcmVhc29uOiBgUmVhZC1vbmx5IE1DUCBvcGVyYXRpb24gJyR7b3BlcmF0aW9ufSdgLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgcmlza0xldmVsOiAnbW9kZXJhdGUnLCBiZWhhdmlvcjogJ2V2YWx1YXRlJywgcmVhc29uOiAnTUNQIHRvb2wgY2FsbCByZXF1aXJlcyBwb2xpY3kgZXZhbHVhdGlvbicgfTtcbiAgfVxuXG4gIC8vIEVkaXQsIFdyaXRlLCBBZ2VudCwgTm90ZWJvb2tFZGl0LCBldGMuOiBtb2RlcmF0ZSByaXNrXG4gIGlmIChbJ0VkaXQnLCAnV3JpdGUnLCAnQWdlbnQnLCAnTm90ZWJvb2tFZGl0J10uaW5jbHVkZXModG9vbE5hbWUpKSB7XG4gICAgcmV0dXJuIHsgcmlza0xldmVsOiAnbW9kZXJhdGUnLCBiZWhhdmlvcjogJ2V2YWx1YXRlJywgcmVhc29uOiBgJHt0b29sTmFtZX0gbW9kaWZpZXMgc3RhdGUsIHJlcXVpcmVzIHBvbGljeSBldmFsdWF0aW9uYCB9O1xuICB9XG5cbiAgLy8gVW5rbm93biB0b29sOiBldmFsdWF0ZSAocGVybWlzc2l2ZSBkZWZhdWx0IGZvciBQaGFzZSAxKVxuICByZXR1cm4geyByaXNrTGV2ZWw6ICdtb2RlcmF0ZScsIGJlaGF2aW9yOiAnZXZhbHVhdGUnLCByZWFzb246IGBVbmtub3duIHRvb2wgJyR7dG9vbE5hbWV9JywgcmVxdWlyZXMgcG9saWN5IGV2YWx1YXRpb25gIH07XG59XG5cbi8qKlxuICogU3ViLWNsYXNzaWZ5IEJhc2ggY29tbWFuZHMgYnkgbWF0Y2hpbmcgYWdhaW5zdCBrbm93biBwYXR0ZXJucy5cbiAqL1xuZnVuY3Rpb24gY2xhc3NpZnlCYXNoQ29tbWFuZChcbiAgdG9vbElucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKTogVG9vbENsYXNzaWZpY2F0aW9uUmVzdWx0IHtcbiAgY29uc3QgY29tbWFuZCA9IHR5cGVvZiB0b29sSW5wdXQuY29tbWFuZCA9PT0gJ3N0cmluZycgPyB0b29sSW5wdXQuY29tbWFuZC50cmltKCkgOiAnJztcblxuICBpZiAoIWNvbW1hbmQpIHtcbiAgICByZXR1cm4geyByaXNrTGV2ZWw6ICdtb2RlcmF0ZScsIGJlaGF2aW9yOiAnZXZhbHVhdGUnLCByZWFzb246ICdFbXB0eSBCYXNoIGNvbW1hbmQnIH07XG4gIH1cblxuICAvLyBDaGVjayBibG9ja2VkIHBhdHRlcm5zIGZpcnN0IChoaWdoZXN0IHByaW9yaXR5KVxuICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgQkxPQ0tFRF9CQVNIX1BBVFRFUk5TKSB7XG4gICAgaWYgKG1hdGNoZXNQYXR0ZXJuKGNvbW1hbmQsIHBhdHRlcm4pKSB7XG4gICAgICByZXR1cm4geyByaXNrTGV2ZWw6ICdibG9ja2VkJywgYmVoYXZpb3I6ICdkZW55JywgcmVhc29uOiBgQmxvY2tlZCBjb21tYW5kIHBhdHRlcm46ICR7cGF0dGVybn1gIH07XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgZGFuZ2Vyb3VzIHBhdHRlcm5zXG4gIGZvciAoY29uc3QgcGF0dGVybiBvZiBEQU5HRVJPVVNfQkFTSF9QQVRURVJOUykge1xuICAgIGlmIChtYXRjaGVzUGF0dGVybihjb21tYW5kLCBwYXR0ZXJuKSkge1xuICAgICAgcmV0dXJuIHsgcmlza0xldmVsOiAnZGFuZ2Vyb3VzJywgYmVoYXZpb3I6ICdkZW55JywgcmVhc29uOiBgRGFuZ2Vyb3VzIGNvbW1hbmQgcGF0dGVybjogJHtwYXR0ZXJufWAgfTtcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBzYWZlIHBhdHRlcm5zXG4gIGZvciAoY29uc3QgcGF0dGVybiBvZiBTQUZFX0JBU0hfUEFUVEVSTlMpIHtcbiAgICBpZiAobWF0Y2hlc1BhdHRlcm4oY29tbWFuZCwgcGF0dGVybikpIHtcbiAgICAgIHJldHVybiB7IHJpc2tMZXZlbDogJ3NhZmUnLCBiZWhhdmlvcjogJ2FsbG93JywgcmVhc29uOiBgU2FmZSBjb21tYW5kIHBhdHRlcm46ICR7cGF0dGVybn1gIH07XG4gICAgfVxuICB9XG5cbiAgLy8gVW5jbGFzc2lmaWVkOiBldmFsdWF0ZSBhZ2FpbnN0IGVsZW1lbnQgcG9saWNpZXNcbiAgcmV0dXJuIHsgcmlza0xldmVsOiAnbW9kZXJhdGUnLCBiZWhhdmlvcjogJ2V2YWx1YXRlJywgcmVhc29uOiAnQmFzaCBjb21tYW5kIG5vdCBzdGF0aWNhbGx5IGNsYXNzaWZpZWQnIH07XG59XG5cbi8vIOKUgOKUgCBSaXNrIEFzc2Vzc21lbnQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogQmFzZSByaXNrIHNjb3JlcyBieSBjbGFzc2lmaWNhdGlvbiBsZXZlbCAoMC0xMDAgc2NhbGUpLlxuICpcbiAqIFNjb3JlIHJhbmdlczpcbiAqIC0gIDA6ICAgICBzYWZlIOKAlCByZWFkLW9ubHkgdG9vbHMsIG5vIHNpZGUgZWZmZWN0c1xuICogLSAgMS0zOTogIGxvdyDigJQgbWlub3Igc2lkZSBlZmZlY3RzLCBlYXNpbHkgcmV2ZXJzaWJsZVxuICogLSA0MC01OTogIG1vZGVyYXRlIOKAlCBmaWxlIHdyaXRlcywgcGFja2FnZSBpbnN0YWxscywgdW5jbGFzc2lmaWVkIGNvbW1hbmRzXG4gKiAtIDYwLTc5OiAgZWxldmF0ZWQg4oCUIG1vZGVyYXRlICsgYWdncmF2YXRpbmcgZmFjdG9ycyAobmV0d29yaywgZmlsZSBjcmVhdGlvbilcbiAqIC0gODAtOTk6ICBkYW5nZXJvdXMg4oCUIGRlc3RydWN0aXZlIGNvbW1hbmRzLCBwcml2aWxlZ2UgZXNjYWxhdGlvblxuICogLSAxMDA6ICAgIGJsb2NrZWQg4oCUIGFsd2F5cyBkZW5pZWQgKGUuZy4sIHJldmVyc2Ugc2hlbGxzLCBkaXNrIHdpcGUpXG4gKlxuICogQWRqdXN0bWVudHMgYXBwbGllZCBvbiB0b3Agb2YgYmFzZTogaXJyZXZlcnNpYmxlIHBhdHRlcm4gKCsxMCksXG4gKiBuZXR3b3JrIG9wZXJhdGlvbiAoKzEwKSwgb3V0LW9mLXNjb3BlIHJlYWQgKCsxMCksIGZpbGUgY3JlYXRpb24gKCs1KS5cbiAqIFNjb3JlIGlzIGNhcHBlZCBhdCAxMDAuXG4gKi9cbmNvbnN0IFJJU0tfU0NPUkVTOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xuICBzYWZlOiAwLFxuICBtb2RlcmF0ZTogNDAsXG4gIGRhbmdlcm91czogODAsXG4gIGJsb2NrZWQ6IDEwMCxcbn07XG5cbi8qKiBSZWFkLW9ubHkgdG9vbHMgdGhhdCBtYXkgcmVmZXJlbmNlIGZpbGUgcGF0aHMgKi9cbmNvbnN0IFNBRkVfUkVBRF9UT09MUyA9IG5ldyBTZXQoWydSZWFkJywgJ0dyZXAnLCAnR2xvYiddKTtcblxuLyoqIFNlbnNpdGl2ZSBwYXRoIHByZWZpeGVzIHRoYXQgaW5kaWNhdGUgb3V0LW9mLXNjb3BlIHJlYWRzICovXG5jb25zdCBTRU5TSVRJVkVfUEFUSF9QUkVGSVhFUyA9IFtcbiAgJ34vLnNzaC8nLCAnfi8uZ251cGcvJywgJ34vLmF3cy8nLCAnfi8uY29uZmlnLycsXG4gICd+Ly5lbnYnLCAnfi8ubmV0cmMnLCAnfi8ubnBtcmMnLFxuICAnL2V0Yy9zaGFkb3cnLCAnL2V0Yy9wYXNzd2QnLCAnL2V0Yy9zdWRvZXJzJyxcbiAgJy9wcm9jLycsICcvc3lzLycsXG5dO1xuXG4vKipcbiAqIEhldXJpc3RpYzogZG9lcyBhIHBhdGggbG9vayBsaWtlIGl0IHRhcmdldHMgZmlsZXMgb3V0c2lkZSB0aGUgcHJvamVjdCBzY29wZT9cbiAqIENoZWNrcyBmb3IgaG9tZS1kaXJlY3Rvcnkgc2Vuc2l0aXZlIHBhdGhzLCBzeXN0ZW0gcGF0aHMsIGFuZCBwYXJlbnQgdHJhdmVyc2Fscy5cbiAqL1xuZnVuY3Rpb24gaXNPdXRPZlNjb3BlUGF0aCh0YXJnZXRQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHRhcmdldFBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuXG4gIC8vIEV4cGxpY2l0IHNlbnNpdGl2ZSBwYXRoc1xuICBmb3IgKGNvbnN0IHByZWZpeCBvZiBTRU5TSVRJVkVfUEFUSF9QUkVGSVhFUykge1xuICAgIGlmIChub3JtYWxpemVkLnN0YXJ0c1dpdGgocHJlZml4KSB8fCBub3JtYWxpemVkLmluY2x1ZGVzKGAvJHtwcmVmaXh9YCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhvbWUgZGlyZWN0b3J5IHJlZmVyZW5jZXMgKH4vLi4uKSB0aGF0IGFyZW4ndCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdFxuICBpZiAobm9ybWFsaXplZC5zdGFydHNXaXRoKCd+LycpIHx8IG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnL1VzZXJzLycpIHx8IG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnL2hvbWUvJykpIHtcbiAgICAvLyBIZXVyaXN0aWM6IHJlYWRpbmcgc2Vuc2l0aXZlIGRvdGZpbGVzL2RpcnMgb3V0c2lkZSBhIHByb2plY3QuXG4gICAgLy8gVGFyZ2V0cyBrbm93biBjcmVkZW50aWFsL2NvbmZpZyBzdG9yZXMg4oCUIGF2b2lkcyBmYWxzZSBwb3NpdGl2ZXMgZm9yXG4gICAgLy8gY29tbW9uIHByb2plY3QgZG90ZmlsZXMgbGlrZSAuZ2l0aHViLywgLnZzY29kZS8sIC5lc2xpbnRyYywgZXRjLlxuICAgIGlmICgvXFwvXFwuKHNzaHxnbnVwZ3xhd3N8YXp1cmV8Z2Nsb3VkfGt1YmV8ZG9ja2VyfG5wbXJjfG5ldHJjfGVudnxiYXNoX2hpc3Rvcnl8enNoX2hpc3Rvcnl8Y3JlZGVudGlhbHN8cGFzc3dvcmR8c2VjcmV0KS9pLnRlc3Qobm9ybWFsaXplZCkpIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKiogQmFzaCBjb21tYW5kIHBhdHRlcm5zIHRoYXQgYXJlIGlycmV2ZXJzaWJsZSAqL1xuY29uc3QgSVJSRVZFUlNJQkxFX1BBVFRFUk5TID0gW1xuICAncm0gLXJmIConLFxuICAncm0gLWZyIConLFxuICAnZ2l0IHB1c2ggLS1mb3JjZSonLFxuICAnZ2l0IHB1c2ggLWYgKicsXG4gICdnaXQgcmVzZXQgLS1oYXJkKicsXG4gICdnaXQgY2xlYW4gLWYqJyxcbiAgJ21rZnMqJyxcbiAgJ2RkIGlmPSonLFxuICAnZHJvcCAqJyxcbiAgJ3RydW5jYXRlIConLFxuXTtcblxuLyoqXG4gKiBBc3Nlc3MgdGhlIHJpc2sgb2YgYSBDTEkgdG9vbCBjYWxsLlxuICpcbiAqIFJldHVybnMgYSBudW1lcmljIHNjb3JlICgwLTEwMCkgYW5kIGlycmV2ZXJzaWJpbGl0eSBpbmRpY2F0b3IgYmFzZWQgb25cbiAqIHRoZSBzdGF0aWMgY2xhc3NpZmljYXRpb24gYW5kIHRvb2wtc3BlY2lmaWMgaGV1cmlzdGljcy5cbiAqXG4gKiBAcGFyYW0gdG9vbE5hbWUgLSBUaGUgdG9vbCBiZWluZyBjYWxsZWRcbiAqIEBwYXJhbSB0b29sSW5wdXQgLSBUaGUgdG9vbCBpbnB1dCBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0gY2xhc3NpZmljYXRpb24gLSBUaGUgcmVzdWx0IGZyb20gY2xhc3NpZnlUb29sKClcbiAqIEByZXR1cm5zIFJpc2sgYXNzZXNzbWVudCB3aXRoIHNjb3JlLCBpcnJldmVyc2liaWxpdHksIGFuZCBjb250cmlidXRpbmcgZmFjdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXNzUmlzayhcbiAgdG9vbE5hbWU6IHN0cmluZyxcbiAgdG9vbElucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgY2xhc3NpZmljYXRpb246IFRvb2xDbGFzc2lmaWNhdGlvblJlc3VsdFxuKTogUmlza0Fzc2Vzc21lbnQge1xuICBsZXQgc2NvcmUgPSBSSVNLX1NDT1JFU1tjbGFzc2lmaWNhdGlvbi5yaXNrTGV2ZWxdID8/IDQwO1xuICBjb25zdCBmYWN0b3JzOiBzdHJpbmdbXSA9IFtgQmFzZTogJHtjbGFzc2lmaWNhdGlvbi5yaXNrTGV2ZWx9ICgke1JJU0tfU0NPUkVTW2NsYXNzaWZpY2F0aW9uLnJpc2tMZXZlbF0gPz8gNDB9KWBdO1xuICBsZXQgaXJyZXZlcnNpYmxlID0gZmFsc2U7XG5cbiAgLy8gQ2hlY2sgZm9yIGlycmV2ZXJzaWJsZSBwYXR0ZXJucyBpbiBCYXNoIGNvbW1hbmRzXG4gIGlmICh0b29sTmFtZSA9PT0gJ0Jhc2gnICYmIHR5cGVvZiB0b29sSW5wdXQuY29tbWFuZCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBjb21tYW5kID0gdG9vbElucHV0LmNvbW1hbmQudHJpbSgpO1xuICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBJUlJFVkVSU0lCTEVfUEFUVEVSTlMpIHtcbiAgICAgIGlmIChtYXRjaGVzUGF0dGVybihjb21tYW5kLCBwYXR0ZXJuKSkge1xuICAgICAgICBpcnJldmVyc2libGUgPSB0cnVlO1xuICAgICAgICBzY29yZSA9IE1hdGgubWluKDEwMCwgc2NvcmUgKyAxMCk7XG4gICAgICAgIGZhY3RvcnMucHVzaChgSXJyZXZlcnNpYmxlIHBhdHRlcm46ICR7cGF0dGVybn0gKCsxMClgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTmV0d29yayBvcGVyYXRpb25zIGluY3JlYXNlIHJpc2tcbiAgICBpZiAoL1xcYihjdXJsfHdnZXR8ZmV0Y2h8bmN8bmV0Y2F0fG5jYXR8c29jYXQpXFxiLy50ZXN0KGNvbW1hbmQpKSB7XG4gICAgICBzY29yZSA9IE1hdGgubWluKDEwMCwgc2NvcmUgKyAxMCk7XG4gICAgICBmYWN0b3JzLnB1c2goJ05ldHdvcmsgb3BlcmF0aW9uICgrMTApJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gV3JpdGUvRWRpdCBvcGVyYXRpb25zOiBmaWxlIGNyZWF0aW9uIGluY3JlYXNlcyByaXNrIHNsaWdodGx5XG4gIGlmICh0b29sTmFtZSA9PT0gJ1dyaXRlJykge1xuICAgIHNjb3JlID0gTWF0aC5taW4oMTAwLCBzY29yZSArIDUpO1xuICAgIGZhY3RvcnMucHVzaCgnRmlsZSBjcmVhdGlvbiAoKzUpJyk7XG4gIH1cblxuICAvLyBSZWFkLW9ubHkgdG9vbHMgdGFyZ2V0aW5nIHBhdGhzIG91dHNpZGUgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LlxuICAvLyBNb3N0IGNsaWVudHMgYWxyZWFkeSBlbmZvcmNlIGRpcmVjdG9yeSBzY29waW5nLCBidXQgdGhpcyBwcm92aWRlcyBhblxuICAvLyBhZGRpdGlvbmFsIHNpZ25hbCBmb3IgYXBwcm92YWwgcG9saWNpZXMgdG8gYWN0IG9uLlxuICBpZiAoU0FGRV9SRUFEX1RPT0xTLmhhcyh0b29sTmFtZSkpIHtcbiAgICBjb25zdCB0YXJnZXRQYXRoID0gKHRvb2xJbnB1dC5maWxlX3BhdGggPz8gdG9vbElucHV0LnBhdGggPz8gJycpIGFzIHN0cmluZztcbiAgICBpZiAodGFyZ2V0UGF0aCAmJiBpc091dE9mU2NvcGVQYXRoKHRhcmdldFBhdGgpKSB7XG4gICAgICBzY29yZSA9IE1hdGgubWluKDEwMCwgc2NvcmUgKyAxMCk7XG4gICAgICBmYWN0b3JzLnB1c2goJ091dC1vZi1zY29wZSByZWFkIHBhdGggKCsxMCknKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBzY29yZSwgaXJyZXZlcnNpYmxlLCBmYWN0b3JzIH07XG59XG5cbi8vIOKUgOKUgCBTdGF0aWMgUG9saWN5IERhdGEgRXhwb3J0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIFJldHVybiBhbGwgc3RhdGljIGNsYXNzaWZpY2F0aW9uIGRhdGEgZm9yIGJyaWRnZSBwb2xpY3kgZXhwb3J0LlxuICpcbiAqIFVzZWQgYnkgUG9saWN5RXhwb3J0U2VydmljZSB0byB3cml0ZSB0aGUgYnJpZGdlLWNvbXBhdGlibGUgcG9saWN5IGZpbGUuXG4gKiBBbGwgZGF0YSBpcyByZXR1cm5lZCBhcyBwbGFpbiBhcnJheXMvb2JqZWN0cyAobm8gU2V0cykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0aWNQb2xpY3lEYXRhKCkge1xuICByZXR1cm4ge1xuICAgIHNhZmVfdG9vbHM6IFsuLi5TQUZFX1RPT0xTXSxcbiAgICBzYWZlX2Jhc2hfcGF0dGVybnM6IFsuLi5TQUZFX0JBU0hfUEFUVEVSTlNdLFxuICAgIGRhbmdlcm91c19iYXNoX3BhdHRlcm5zOiBbLi4uREFOR0VST1VTX0JBU0hfUEFUVEVSTlNdLFxuICAgIGJsb2NrZWRfYmFzaF9wYXR0ZXJuczogWy4uLkJMT0NLRURfQkFTSF9QQVRURVJOU10sXG4gICAgaXJyZXZlcnNpYmxlX3BhdHRlcm5zOiBbLi4uSVJSRVZFUlNJQkxFX1BBVFRFUk5TXSxcbiAgICBzZW5zaXRpdmVfcGF0aF9wcmVmaXhlczogWy4uLlNFTlNJVElWRV9QQVRIX1BSRUZJWEVTXSxcbiAgICBnYXRla2VlcGVyX2Vzc2VudGlhbF9vcGVyYXRpb25zOiBbLi4uR0FURUtFRVBFUl9FU1NFTlRJQUxfT1BFUkFUSU9OU10sXG4gICAgc2FmZV9tY3Bfb3BlcmF0aW9uczogWy4uLlNBRkVfTUNQX09QRVJBVElPTlNdLFxuICAgIHJpc2tfc2NvcmVzOiB7IC4uLlJJU0tfU0NPUkVTIH0sXG4gIH07XG59XG5cbi8vIOKUgOKUgCBFbGVtZW50IFBvbGljeSBFdmFsdWF0aW9uIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIEV2YWx1YXRlIGEgQ0xJIHRvb2wgY2FsbCBhZ2FpbnN0IGFjdGl2ZSBlbGVtZW50IGdhdGVrZWVwZXIgcG9saWNpZXMuXG4gKlxuICogRm91ci1zdGVwIGV2YWx1YXRpb24gcGVyIGVsZW1lbnQgKElzc3VlICM2MjUgUGhhc2UgMiwgSXNzdWUgIzE2NjApOlxuICogMS4gZGVueVBhdHRlcm5zIChoaWdoZXN0IHByaW9yaXR5KSDigJQgZmlyc3QgbWF0Y2ggPSBpbW1lZGlhdGUgZGVueVxuICogMS41LiBjb25maXJtUGF0dGVybnMg4oCUIGZpcnN0IG1hdGNoID0gaW1tZWRpYXRlIGNvbmZpcm0gKHJlcXVpcmVzIGFwcHJvdmFsKVxuICogMi4gYWxsb3dQYXR0ZXJucyDigJQgaWYgZWxlbWVudCBkZWZpbmVzIHRoZW0sIHJlY29yZCB3aGV0aGVyIHRvb2wgbWF0Y2hlZFxuICogMy4gQWZ0ZXIgYWxsIGVsZW1lbnRzOiBpZiBhbnkgaGFkIGFsbG93UGF0dGVybnMgYnV0IHRvb2wgd2Fzbid0IGFsbG93ZWQgYnkgYW55ID0gZGVueVxuICpcbiAqIFVuaW9uIHNlbWFudGljczogdG9vbCBtdXN0IG1hdGNoIGF0IGxlYXN0IE9ORSBlbGVtZW50J3MgYWxsb3dQYXR0ZXJucyAobm90IGFsbCkuXG4gKiBFbGVtZW50cyB3aXRob3V0IGFsbG93UGF0dGVybnMgZG9uJ3QgcmVzdHJpY3QuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRvb2wgbWF0Y2hlcyBhbGxvd1BhdHRlcm5zIGluIGVsZW1lbnQgQSBidXQgbm90IEIg4oaSIEFMTE9XRUQgKHVuaW9uIHNlbWFudGljcylcbiAqIC8vIFRvb2wgbWF0Y2hlcyBkZW55UGF0dGVybnMgaW4gYW55IGVsZW1lbnQg4oaSIERFTklFRCAoZGVueSBhbHdheXMgd2lucylcbiAqIC8vIFRvb2wgbWF0Y2hlcyBubyBhbGxvd1BhdHRlcm5zIGJ1dCBzb21lIGV4aXN0IOKGkiBERU5JRUQgKFwibm90IGluIGFueSBhbGxvd2xpc3RcIilcbiAqIC8vIE5vIGFsbG93UGF0dGVybnMgZGVmaW5lZCBhbnl3aGVyZSDihpIgUGhhc2UgMSBiZWhhdmlvciAoZmFsbCB0aHJvdWdoIHRvIGRlZmF1bHQpXG4gKlxuICogQHJldHVybnMgJ2RlbnknIGlmIGJsb2NrZWQsICdldmFsdWF0ZScgaWYgcGVybWl0dGVkIHRvIGZhbGwgdGhyb3VnaCB0byBkZWZhdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBldmFsdWF0ZUNsaVRvb2xQb2xpY3koXG4gIHRvb2xOYW1lOiBzdHJpbmcsXG4gIHRvb2xJbnB1dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGFjdGl2ZUVsZW1lbnRzOiBBY3RpdmVFbGVtZW50W11cbik6IENsaVRvb2xQb2xpY3lSZXN1bHQge1xuICBjb25zdCBldmFsdWF0ZWRFbGVtZW50czogUG9saWN5RXZhbHVhdGlvbkNvbnRleHRbJ2V2YWx1YXRlZEVsZW1lbnRzJ10gPSBbXTtcbiAgY29uc3QgZGVjaXNpb25DaGFpbjogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICBpZiAoIWFjdGl2ZUVsZW1lbnRzLmxlbmd0aCkge1xuICAgIGRlY2lzaW9uQ2hhaW4ucHVzaCgnTm8gYWN0aXZlIGVsZW1lbnRzIOKAlCBmYWxsIHRocm91Z2ggdG8gZGVmYXVsdCcpO1xuICAgIGxvZ2dlci5kZWJ1ZyhgW0NsaVBvbGljeV0gJHt0b29sTmFtZX06IG5vIGFjdGl2ZSBlbGVtZW50cywgZmFsbCB0aHJvdWdoIHRvIGRlZmF1bHRgKTtcbiAgICByZXR1cm4ge1xuICAgICAgYmVoYXZpb3I6ICdldmFsdWF0ZScsXG4gICAgICBwb2xpY3lDb250ZXh0OiB7IGV2YWx1YXRlZEVsZW1lbnRzLCBkZWNpc2lvbkNoYWluIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8vIEJ1aWxkIHRoZSBzdHJpbmdzIHRvIG1hdGNoIGFnYWluc3QgcGF0dGVybnNcbiAgY29uc3QgbWF0Y2hUYXJnZXRzID0gYnVpbGRNYXRjaFRhcmdldHModG9vbE5hbWUsIHRvb2xJbnB1dCk7XG4gIGNvbnN0IGVsZW1lbnRUeXBlU3VtbWFyeSA9IHN1bW1hcml6ZUVsZW1lbnRUeXBlcyhhY3RpdmVFbGVtZW50cyk7XG4gIGxvZ2dlci5kZWJ1ZyhgW0NsaVBvbGljeV0gRXZhbHVhdGluZyAke3Rvb2xOYW1lfSBhZ2FpbnN0ICR7YWN0aXZlRWxlbWVudHMubGVuZ3RofSBlbGVtZW50cyAoJHtlbGVtZW50VHlwZVN1bW1hcnl9KSwgbWF0Y2hUYXJnZXRzOiBbJHttYXRjaFRhcmdldHMuam9pbignLCAnKX1dYCk7XG5cbiAgbGV0IGFueUVsZW1lbnRIYXNBbGxvd1BhdHRlcm5zID0gZmFsc2U7XG4gIGxldCB0b29sQWxsb3dlZEJ5QW55RWxlbWVudCA9IGZhbHNlO1xuICBjb25zdCBlbGVtZW50c1dpdGhBbGxvd1BhdHRlcm5zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBhY3RpdmVFbGVtZW50cykge1xuICAgIGNvbnN0IHJlc3RyaWN0aW9ucyA9IGVsZW1lbnQubWV0YWRhdGE/LmdhdGVrZWVwZXI/LmV4dGVybmFsUmVzdHJpY3Rpb25zO1xuICAgIGNvbnN0IGRlbnlQYXR0ZXJucyA9IHJlc3RyaWN0aW9ucz8uZGVueVBhdHRlcm5zO1xuICAgIGNvbnN0IGNvbmZpcm1QYXR0ZXJucyA9IHJlc3RyaWN0aW9ucz8uY29uZmlybVBhdHRlcm5zO1xuICAgIGNvbnN0IGFsbG93UGF0dGVybnMgPSByZXN0cmljdGlvbnM/LmFsbG93UGF0dGVybnM7XG5cbiAgICBjb25zdCBoYXNSZXN0cmljdGlvbnMgPSAoQXJyYXkuaXNBcnJheShkZW55UGF0dGVybnMpICYmIGRlbnlQYXR0ZXJucy5sZW5ndGggPiAwKVxuICAgICAgfHwgKEFycmF5LmlzQXJyYXkoY29uZmlybVBhdHRlcm5zKSAmJiBjb25maXJtUGF0dGVybnMubGVuZ3RoID4gMClcbiAgICAgIHx8IChBcnJheS5pc0FycmF5KGFsbG93UGF0dGVybnMpICYmIGFsbG93UGF0dGVybnMubGVuZ3RoID4gMCk7XG5cbiAgICBpZiAoIWhhc1Jlc3RyaWN0aW9ucykge1xuICAgICAgZXZhbHVhdGVkRWxlbWVudHMucHVzaCh7IHR5cGU6IGVsZW1lbnQudHlwZSwgbmFtZTogZWxlbWVudC5uYW1lIH0pO1xuICAgICAgZGVjaXNpb25DaGFpbi5wdXNoKGAke2VsZW1lbnQudHlwZX0gJyR7ZWxlbWVudC5uYW1lfSc6IG5vIGV4dGVybmFsUmVzdHJpY3Rpb25zYCk7XG4gICAgICBsb2dnZXIuZGVidWcoYFtDbGlQb2xpY3ldICR7ZWxlbWVudC50eXBlfSAnJHtlbGVtZW50Lm5hbWV9Jzogbm8gZXh0ZXJuYWxSZXN0cmljdGlvbnMsIHNraXBwaW5nYCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBsb2dnZXIuZGVidWcoYFtDbGlQb2xpY3ldICR7ZWxlbWVudC50eXBlfSAnJHtlbGVtZW50Lm5hbWV9JzogZXZhbHVhdGluZyAoZGVueTogJHtBcnJheS5pc0FycmF5KGRlbnlQYXR0ZXJucykgPyBkZW55UGF0dGVybnMubGVuZ3RoIDogMH0sIGNvbmZpcm06ICR7QXJyYXkuaXNBcnJheShjb25maXJtUGF0dGVybnMpID8gY29uZmlybVBhdHRlcm5zLmxlbmd0aCA6IDB9LCBhbGxvdzogJHtBcnJheS5pc0FycmF5KGFsbG93UGF0dGVybnMpID8gYWxsb3dQYXR0ZXJucy5sZW5ndGggOiAwfSBwYXR0ZXJucylgKTtcblxuICAgIC8vIFN0ZXAgMTogQ2hlY2sgZGVueVBhdHRlcm5zIChoaWdoZXN0IHByaW9yaXR5KVxuICAgIGlmIChBcnJheS5pc0FycmF5KGRlbnlQYXR0ZXJucykpIHtcbiAgICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBkZW55UGF0dGVybnMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSAnc3RyaW5nJykgY29udGludWU7XG4gICAgICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIG1hdGNoVGFyZ2V0cykge1xuICAgICAgICAgIGlmIChtYXRjaGVzUGF0dGVybih0YXJnZXQsIHBhdHRlcm4pKSB7XG4gICAgICAgICAgICBldmFsdWF0ZWRFbGVtZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogZWxlbWVudC50eXBlLFxuICAgICAgICAgICAgICBuYW1lOiBlbGVtZW50Lm5hbWUsXG4gICAgICAgICAgICAgIG1hdGNoZWQ6ICdkZW55UGF0dGVybnMnLFxuICAgICAgICAgICAgICBtYXRjaGVkUGF0dGVybjogcGF0dGVybixcbiAgICAgICAgICAgICAgbWF0Y2hlZFRhcmdldDogdGFyZ2V0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkZWNpc2lvbkNoYWluLnB1c2goYERFTlk6ICR7ZWxlbWVudC50eXBlfSAnJHtlbGVtZW50Lm5hbWV9JyBkZW55UGF0dGVybiAnJHtwYXR0ZXJufScgbWF0Y2hlcyAnJHt0YXJnZXR9J2ApO1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBbQ2xpUG9saWN5XSBERU5ZOiAke2VsZW1lbnQudHlwZX0gJyR7ZWxlbWVudC5uYW1lfScgZGVueVBhdHRlcm4gJyR7cGF0dGVybn0nIG1hdGNoZWQgJyR7dGFyZ2V0fScgKCR7ZWxhcHNlZChzdGFydFRpbWUpfSlgKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGJlaGF2aW9yOiAnZGVueScsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGBEZW5pZWQgYnkgJHtlbGVtZW50LnR5cGV9ICcke2VsZW1lbnQubmFtZX0nIHBvbGljeTogcGF0dGVybiAnJHtwYXR0ZXJufScgbWF0Y2hlcyAnJHt0YXJnZXR9J2AsXG4gICAgICAgICAgICAgIHBvbGljeUNvbnRleHQ6IHsgZXZhbHVhdGVkRWxlbWVudHMsIGRlY2lzaW9uQ2hhaW4gfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3RlcCAxLjU6IENoZWNrIGNvbmZpcm1QYXR0ZXJucyAocmVxdWlyZXMgYXBwcm92YWwg4oCUIElzc3VlICMxNjYwKVxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpcm1QYXR0ZXJucykgJiYgY29uZmlybVBhdHRlcm5zLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBjb25maXJtUGF0dGVybnMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSAnc3RyaW5nJykgY29udGludWU7XG4gICAgICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIG1hdGNoVGFyZ2V0cykge1xuICAgICAgICAgIGlmIChtYXRjaGVzUGF0dGVybih0YXJnZXQsIHBhdHRlcm4pKSB7XG4gICAgICAgICAgICBldmFsdWF0ZWRFbGVtZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogZWxlbWVudC50eXBlLFxuICAgICAgICAgICAgICBuYW1lOiBlbGVtZW50Lm5hbWUsXG4gICAgICAgICAgICAgIG1hdGNoZWQ6ICdjb25maXJtUGF0dGVybnMnLFxuICAgICAgICAgICAgICBtYXRjaGVkUGF0dGVybjogcGF0dGVybixcbiAgICAgICAgICAgICAgbWF0Y2hlZFRhcmdldDogdGFyZ2V0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkZWNpc2lvbkNoYWluLnB1c2goYENPTkZJUk06ICR7ZWxlbWVudC50eXBlfSAnJHtlbGVtZW50Lm5hbWV9JyBjb25maXJtUGF0dGVybiAnJHtwYXR0ZXJufScgbWF0Y2hlcyAnJHt0YXJnZXR9J2ApO1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBbQ2xpUG9saWN5XSBDT05GSVJNOiAke2VsZW1lbnQudHlwZX0gJyR7ZWxlbWVudC5uYW1lfScgY29uZmlybVBhdHRlcm4gJyR7cGF0dGVybn0nIG1hdGNoZWQgJyR7dGFyZ2V0fScgKCR7ZWxhcHNlZChzdGFydFRpbWUpfSlgKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGJlaGF2aW9yOiAnY29uZmlybScgYXMgY29uc3QsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGBSZXF1aXJlcyBhcHByb3ZhbDogJHtlbGVtZW50LnR5cGV9ICcke2VsZW1lbnQubmFtZX0nIHBvbGljeSByZXF1aXJlcyBjb25maXJtYXRpb24gZm9yIHBhdHRlcm4gJyR7cGF0dGVybn0nYCxcbiAgICAgICAgICAgICAgY29uZmlybVNvdXJjZTogYCR7ZWxlbWVudC50eXBlfToke2VsZW1lbnQubmFtZX1gLFxuICAgICAgICAgICAgICBwb2xpY3lDb250ZXh0OiB7IGV2YWx1YXRlZEVsZW1lbnRzLCBkZWNpc2lvbkNoYWluIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFN0ZXAgMjogQ2hlY2sgYWxsb3dQYXR0ZXJuc1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFsbG93UGF0dGVybnMpICYmIGFsbG93UGF0dGVybnMubGVuZ3RoID4gMCkge1xuICAgICAgYW55RWxlbWVudEhhc0FsbG93UGF0dGVybnMgPSB0cnVlO1xuICAgICAgZWxlbWVudHNXaXRoQWxsb3dQYXR0ZXJucy5wdXNoKGAke2VsZW1lbnQudHlwZX0gJyR7ZWxlbWVudC5uYW1lfSdgKTtcbiAgICAgIGxldCBtYXRjaGVkQWxsb3cgPSBmYWxzZTtcblxuICAgICAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIGFsbG93UGF0dGVybnMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSAnc3RyaW5nJykgY29udGludWU7XG4gICAgICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIG1hdGNoVGFyZ2V0cykge1xuICAgICAgICAgIGlmIChtYXRjaGVzUGF0dGVybih0YXJnZXQsIHBhdHRlcm4pKSB7XG4gICAgICAgICAgICBldmFsdWF0ZWRFbGVtZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogZWxlbWVudC50eXBlLFxuICAgICAgICAgICAgICBuYW1lOiBlbGVtZW50Lm5hbWUsXG4gICAgICAgICAgICAgIG1hdGNoZWQ6ICdhbGxvd1BhdHRlcm5zJyxcbiAgICAgICAgICAgICAgbWF0Y2hlZFBhdHRlcm46IHBhdHRlcm4sXG4gICAgICAgICAgICAgIG1hdGNoZWRUYXJnZXQ6IHRhcmdldCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZGVjaXNpb25DaGFpbi5wdXNoKGAke2VsZW1lbnQudHlwZX0gJyR7ZWxlbWVudC5uYW1lfSc6IGFsbG93UGF0dGVybiAnJHtwYXR0ZXJufScgbWF0Y2hlcyAnJHt0YXJnZXR9J2ApO1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBbQ2xpUG9saWN5XSBBTExPVzogJHtlbGVtZW50LnR5cGV9ICcke2VsZW1lbnQubmFtZX0nIGFsbG93UGF0dGVybiAnJHtwYXR0ZXJufScgbWF0Y2hlZCAnJHt0YXJnZXR9J2ApO1xuICAgICAgICAgICAgdG9vbEFsbG93ZWRCeUFueUVsZW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgbWF0Y2hlZEFsbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2hlZEFsbG93KSBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKCFtYXRjaGVkQWxsb3cpIHtcbiAgICAgICAgZXZhbHVhdGVkRWxlbWVudHMucHVzaCh7IHR5cGU6IGVsZW1lbnQudHlwZSwgbmFtZTogZWxlbWVudC5uYW1lIH0pO1xuICAgICAgICBkZWNpc2lvbkNoYWluLnB1c2goYCR7ZWxlbWVudC50eXBlfSAnJHtlbGVtZW50Lm5hbWV9JzogYWxsb3dQYXR0ZXJucyBkZWZpbmVkIGJ1dCBubyBtYXRjaGApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBldmFsdWF0ZWRFbGVtZW50cy5wdXNoKHsgdHlwZTogZWxlbWVudC50eXBlLCBuYW1lOiBlbGVtZW50Lm5hbWUgfSk7XG4gICAgICBkZWNpc2lvbkNoYWluLnB1c2goYCR7ZWxlbWVudC50eXBlfSAnJHtlbGVtZW50Lm5hbWV9JzogZGVueVBhdHRlcm5zIGNoZWNrZWQsIG5vIG1hdGNoYCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU3RlcCAzOiBJZiBhbnkgZWxlbWVudCBoYWQgYWxsb3dQYXR0ZXJucywgdG9vbCBtdXN0IGhhdmUgbWF0Y2hlZCBhdCBsZWFzdCBvbmVcbiAgaWYgKGFueUVsZW1lbnRIYXNBbGxvd1BhdHRlcm5zICYmICF0b29sQWxsb3dlZEJ5QW55RWxlbWVudCkge1xuICAgIGNvbnN0IHJlc3RyaWN0b3JzID0gZWxlbWVudHNXaXRoQWxsb3dQYXR0ZXJucy5qb2luKCcsICcpO1xuICAgIGRlY2lzaW9uQ2hhaW4ucHVzaChgREVOWTogdG9vbCBub3QgaW4gYW55IGVsZW1lbnQgYWxsb3dsaXN0IChyZXN0cmljdGVkIGJ5OiAke3Jlc3RyaWN0b3JzfSlgKTtcbiAgICBsb2dnZXIuZGVidWcoYFtDbGlQb2xpY3ldIERFTlk6ICR7dG9vbE5hbWV9IG5vdCBpbiBhbnkgYWxsb3dsaXN0IChyZXN0cmljdGVkIGJ5OiAke3Jlc3RyaWN0b3JzfSkgKCR7ZWxhcHNlZChzdGFydFRpbWUpfSlgKTtcbiAgICByZXR1cm4ge1xuICAgICAgYmVoYXZpb3I6ICdkZW55JyxcbiAgICAgIG1lc3NhZ2U6IGBUb29sICcke3Rvb2xOYW1lfScgbm90IHBlcm1pdHRlZCBieSBhbGxvd2xpc3RzIGRlZmluZWQgaW46ICR7cmVzdHJpY3RvcnN9LiBFaXRoZXIgZGVhY3RpdmF0ZSB0aGVzZSBlbGVtZW50cyBvciBhZGQgYWxsb3dQYXR0ZXJucyB0byBtYXRjaCB0aGlzIHRvb2wuYCxcbiAgICAgIHBvbGljeUNvbnRleHQ6IHsgZXZhbHVhdGVkRWxlbWVudHMsIGRlY2lzaW9uQ2hhaW4gfSxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGFueUVsZW1lbnRIYXNBbGxvd1BhdHRlcm5zKSB7XG4gICAgZGVjaXNpb25DaGFpbi5wdXNoKCdUb29sIG1hdGNoZWQgYWxsb3dsaXN0IOKAlCBmYWxsIHRocm91Z2ggdG8gZGVmYXVsdCcpO1xuICAgIGxvZ2dlci5kZWJ1ZyhgW0NsaVBvbGljeV0gJHt0b29sTmFtZX06IG1hdGNoZWQgYWxsb3dsaXN0LCBmYWxsIHRocm91Z2ggdG8gZGVmYXVsdCAoJHtlbGFwc2VkKHN0YXJ0VGltZSl9KWApO1xuICB9IGVsc2Uge1xuICAgIGRlY2lzaW9uQ2hhaW4ucHVzaCgnTm8gYWxsb3dQYXR0ZXJucyBkZWZpbmVkIOKAlCBmYWxsIHRocm91Z2ggdG8gZGVmYXVsdCAoUGhhc2UgMSBiZWhhdmlvciknKTtcbiAgICBsb2dnZXIuZGVidWcoYFtDbGlQb2xpY3ldICR7dG9vbE5hbWV9OiBubyBhbGxvd1BhdHRlcm5zIGRlZmluZWQsIGZhbGwgdGhyb3VnaCB0byBkZWZhdWx0ICgke2VsYXBzZWQoc3RhcnRUaW1lKX0pYCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJlaGF2aW9yOiAnZXZhbHVhdGUnLFxuICAgIHBvbGljeUNvbnRleHQ6IHsgZXZhbHVhdGVkRWxlbWVudHMsIGRlY2lzaW9uQ2hhaW4gfSxcbiAgfTtcbn1cblxuLyoqIEZvcm1hdCBlbGFwc2VkIHRpbWUgc2luY2Ugc3RhcnRUaW1lIGluIG1pbGxpc2Vjb25kcy4gKi9cbmZ1bmN0aW9uIGVsYXBzZWQoc3RhcnRUaW1lOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7KHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lKS50b0ZpeGVkKDIpfW1zYDtcbn1cblxuLyoqIFN1bW1hcml6ZSBhY3RpdmUgZWxlbWVudCB0eXBlcyBmb3IgdGhlIGVudHJ5IGxvZyAoZS5nLiwgXCIzIHBlcnNvbmFzLCAyIHNraWxscywgMSBlbnNlbWJsZVwiKS4gKi9cbmZ1bmN0aW9uIHN1bW1hcml6ZUVsZW1lbnRUeXBlcyhlbGVtZW50czogQWN0aXZlRWxlbWVudFtdKTogc3RyaW5nIHtcbiAgY29uc3QgY291bnRzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgZm9yIChjb25zdCBlbCBvZiBlbGVtZW50cykge1xuICAgIGNvdW50cy5zZXQoZWwudHlwZSwgKGNvdW50cy5nZXQoZWwudHlwZSkgPz8gMCkgKyAxKTtcbiAgfVxuICByZXR1cm4gWy4uLmNvdW50cy5lbnRyaWVzKCldLm1hcCgoW3R5cGUsIGNvdW50XSkgPT4gYCR7Y291bnR9ICR7dHlwZX0ke2NvdW50ID4gMSA/ICdzJyA6ICcnfWApLmpvaW4oJywgJyk7XG59XG5cbi8qKlxuICogTWF4aW11bSBpbnB1dCBsZW5ndGggZm9yIHBhdHRlcm4gbWF0Y2hpbmcgdGFyZ2V0cy5cbiAqIFRydW5jYXRlcyBsb25nIGNvbW1hbmRzL3BhdGhzIHRvIHByZXZlbnQgRG9TIHZpYSBwYXRob2xvZ2ljYWwgZ2xvYiBtYXRjaGluZy5cbiAqL1xuY29uc3QgTUFYX01BVENIX0lOUFVUX0xFTkdUSCA9IDEwMDA7XG5cbi8qKlxuICogU3RyaXAgbnVsbCBieXRlcywgY29udHJvbCBjaGFyYWN0ZXJzLCBhbmQgbm9ybWFsaXplIFVuaWNvZGUgZm9yIG1hdGNoIGlucHV0LlxuICogUHJlc2VydmVzIHRhYiAoXFx4MDkpLCBuZXdsaW5lIChcXHgwQSksIGNhcnJpYWdlIHJldHVybiAoXFx4MEQpLlxuICogUHJldmVudHMgcGF0dGVybiBieXBhc3MgdmlhIGluamVjdGVkIGNvbnRyb2wgY2hhcmFjdGVycyBvciBVbmljb2RlXG4gKiBub3JtYWxpemF0aW9uIGF0dGFja3MgKGUuZy4sIGNvbWJpbmluZyBjaGFyYWN0ZXJzIHRoYXQgbG9vayBsaWtlIEFTQ0lJKS5cbiAqL1xuZnVuY3Rpb24gc2FuaXRpemVNYXRjaElucHV0KGlucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBOb3JtYWxpemUgVW5pY29kZSB0byBORkMgKGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uIHRoZW4gY29tcG9zaXRpb24pLlxuICAvLyBUaGlzIHByZXZlbnRzIGJ5cGFzcyB2aWEgY29tYmluaW5nIGNoYXJhY3RlcnMgb3IgYWx0ZXJuYXRpdmUgcmVwcmVzZW50YXRpb25zLlxuICBjb25zdCBub3JtYWxpemVkID0gaW5wdXQubm9ybWFsaXplKCdORkMnKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRyb2wtcmVnZXhcbiAgcmV0dXJuIG5vcm1hbGl6ZWQucmVwbGFjZSgvW1xceDAwLVxceDA4XFx4MEJcXHgwQ1xceDBFLVxceDFGXFx4N0YtXFx4OUZdL2csICcnKTtcbn1cblxuLyoqXG4gKiBCdWlsZCBtYXRjaCB0YXJnZXQgc3RyaW5ncyBmb3IgYSB0b29sIGNhbGwuXG4gKlxuICogRm9yIEJhc2g6IG1hdGNoZXMgYWdhaW5zdCB0aGUgdG9vbCBuYW1lIGFuZCBcIkJhc2g6PGNvbW1hbmQ+XCJcbiAqIEZvciBFZGl0L1dyaXRlOiBtYXRjaGVzIGFnYWluc3QgdGhlIHRvb2wgbmFtZSBhbmQgXCJFZGl0OjxmaWxlX3BhdGg+XCJcbiAqIEZvciBNQ1AgdG9vbHM6IG1hdGNoZXMgYWdhaW5zdCB0aGUgZnVsbCB0b29sIG5hbWVcbiAqXG4gKiBJbnB1dHMgYXJlIHRydW5jYXRlZCB0byBNQVhfTUFUQ0hfSU5QVVRfTEVOR1RIIGFuZCBzYW5pdGl6ZWQgdG8gcHJldmVudFxuICogRG9TIHZpYSBwYXRob2xvZ2ljYWwgZ2xvYiBtYXRjaGluZyBhbmQgcGF0dGVybiBieXBhc3MgdmlhIGNvbnRyb2wgY2hhcnMuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTWF0Y2hUYXJnZXRzKFxuICB0b29sTmFtZTogc3RyaW5nLFxuICB0b29sSW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHRhcmdldHMgPSBbdG9vbE5hbWVdO1xuXG4gIGlmICh0b29sTmFtZSA9PT0gJ0Jhc2gnICYmIHR5cGVvZiB0b29sSW5wdXQuY29tbWFuZCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBzYW5pdGl6ZWQgPSBzYW5pdGl6ZU1hdGNoSW5wdXQodG9vbElucHV0LmNvbW1hbmQuc2xpY2UoMCwgTUFYX01BVENIX0lOUFVUX0xFTkdUSCkpO1xuICAgIHRhcmdldHMucHVzaChgQmFzaDoke3Nhbml0aXplZH1gKTtcbiAgfSBlbHNlIGlmICgodG9vbE5hbWUgPT09ICdFZGl0JyB8fCB0b29sTmFtZSA9PT0gJ1dyaXRlJykgJiYgdHlwZW9mIHRvb2xJbnB1dC5maWxlX3BhdGggPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3Qgc2FuaXRpemVkID0gc2FuaXRpemVNYXRjaElucHV0KHRvb2xJbnB1dC5maWxlX3BhdGguc2xpY2UoMCwgTUFYX01BVENIX0lOUFVUX0xFTkdUSCkpO1xuICAgIHRhcmdldHMucHVzaChgJHt0b29sTmFtZX06JHtzYW5pdGl6ZWR9YCk7XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0cztcbn1cbiJdfQ==
669
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9vbENsYXNzaWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2hhbmRsZXJzL21jcC1hcWwvcG9saWNpZXMvVG9vbENsYXNzaWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFFSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBaUNsRCx3RUFBd0U7QUFFeEU7Ozs7Ozs7R0FPRztBQUNILE1BQU0sK0JBQStCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDOUMsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLFlBQVk7SUFDWixxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLG1CQUFtQjtJQUNuQix3QkFBd0IsRUFBUSxxQkFBcUI7SUFDckQsMkJBQTJCLEVBQUsscUJBQXFCO0NBQ3RELENBQUMsQ0FBQztBQUVIOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ2xDLGVBQWU7SUFDZixhQUFhO0lBQ2IscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIscUJBQXFCO0lBQ3JCLGtCQUFrQjtJQUNsQixRQUFRO0lBQ1IsZ0JBQWdCO0lBQ2hCLFlBQVk7SUFDWixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsNEJBQTRCO0lBQzVCLHdCQUF3QjtJQUN4Qiw2QkFBNkI7SUFDN0Isa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIsWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixxQkFBcUI7SUFDckIsa0JBQWtCO0lBQ2xCLGdCQUFnQjtJQUNoQix5QkFBeUI7SUFDekIsWUFBWTtJQUNaLGVBQWU7SUFD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LFFBQVEsRUFBRSxDQUFDO1FBQ3BHLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7UUFDM0YsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUb29sIENsYXNzaWZpY2F0aW9uIGZvciBDTEktTGV2ZWwgUGVybWlzc2lvbiBQcm9tcHRzXG4gKlxuICogUHJvdmlkZXMgc3RhdGljIGNsYXNzaWZpY2F0aW9uIG9mIENsYXVkZSBDb2RlIENMSSB0b29sIGNhbGxzIGFuZFxuICogZXZhbHVhdGlvbiBhZ2FpbnN0IGFjdGl2ZSBlbGVtZW50IGdhdGVrZWVwZXIgcG9saWNpZXMuXG4gKlxuICogVXNlZCBieSB0aGUgcGVybWlzc2lvbl9wcm9tcHQgb3BlcmF0aW9uIChJc3N1ZSAjNjI1KSB0byBldmFsdWF0ZVxuICogLS1wZXJtaXNzaW9uLXByb21wdC10b29sIHJlcXVlc3RzIHdpdGhvdXQgcmVxdWlyaW5nIExMTSBldmFsdWF0aW9uLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBtYXRjaGVzUGF0dGVybiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3BhdHRlcm5NYXRjaGVyLmpzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgdHlwZSB7IEFjdGl2ZUVsZW1lbnQgfSBmcm9tICcuL0VsZW1lbnRQb2xpY2llcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFJpc2tBc3Nlc3NtZW50IH0gZnJvbSAnLi4vR2F0ZWtlZXBlclR5cGVzLmpzJztcblxuLy8g4pSA4pSAIFR5cGVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5leHBvcnQgdHlwZSBUb29sUmlza0xldmVsID0gJ3NhZmUnIHwgJ21vZGVyYXRlJyB8ICdkYW5nZXJvdXMnIHwgJ2Jsb2NrZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xDbGFzc2lmaWNhdGlvblJlc3VsdCB7XG4gIHJpc2tMZXZlbDogVG9vbFJpc2tMZXZlbDtcbiAgLyoqICdhbGxvdycgPSBhdXRvLWFwcHJvdmUsICdkZW55JyA9IGF1dG8tcmVqZWN0LCAnZXZhbHVhdGUnID0gY2hlY2sgZWxlbWVudCBwb2xpY2llcyAqL1xuICBiZWhhdmlvcjogJ2FsbG93JyB8ICdkZW55JyB8ICdldmFsdWF0ZSc7XG4gIHJlYXNvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvbGljeUV2YWx1YXRpb25Db250ZXh0IHtcbiAgZXZhbHVhdGVkRWxlbWVudHM6IEFycmF5PHtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIG1hdGNoZWQ/OiAnYWxsb3dQYXR0ZXJucycgfCAnY29uZmlybVBhdHRlcm5zJyB8ICdkZW55UGF0dGVybnMnO1xuICAgIG1hdGNoZWRQYXR0ZXJuPzogc3RyaW5nO1xuICAgIG1hdGNoZWRUYXJnZXQ/OiBzdHJpbmc7XG4gIH0+O1xuICBkZWNpc2lvbkNoYWluOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGlUb29sUG9saWN5UmVzdWx0IHtcbiAgYmVoYXZpb3I6ICdhbGxvdycgfCAnZGVueScgfCAnZXZhbHVhdGUnIHwgJ2NvbmZpcm0nO1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBjb25maXJtU291cmNlPzogc3RyaW5nO1xuICBwb2xpY3lDb250ZXh0PzogUG9saWN5RXZhbHVhdGlvbkNvbnRleHQ7XG59XG5cbi8vIOKUgOKUgCBHYXRla2VlcGVyLUVzc2VudGlhbCBPcGVyYXRpb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIE1DUC1BUUwgb3BlcmF0aW9ucyB0aGF0IG11c3QgTkVWRVIgYmUgYmxvY2tlZCBieSBwZXJtaXNzaW9uX3Byb21wdCxcbiAqIGV2ZW4gaWYgZWxlbWVudCBkZW55UGF0dGVybnMgd291bGQgbWF0Y2ggdGhlIE1DUCB0b29sIG5hbWUuXG4gKlxuICogVGhlc2UgYXJlIGVzc2VudGlhbCBmb3IgdGhlIEdhdGVrZWVwZXIgZmxvdyBpdHNlbGYuIEJsb2NraW5nIHRoZW1cbiAqIHdvdWxkIHByZXZlbnQgdGhlIGh1bWFuLWluLXRoZS1sb29wIGFwcHJvdmFsIHBhdGggZnJvbSBmdW5jdGlvbmluZ1xuICogKGUuZy4sIGEgZGVueVBhdHRlcm4gb2YgJ21jcF9fRG9sbGhvdXNlTUNQKicgd291bGQgYmxvY2sgY29uZmlybV9vcGVyYXRpb24pLlxuICovXG5jb25zdCBHQVRFS0VFUEVSX0VTU0VOVElBTF9PUEVSQVRJT05TID0gbmV3IFNldChbXG4gICdjb25maXJtX29wZXJhdGlvbicsXG4gICd2ZXJpZnlfY2hhbGxlbmdlJyxcbiAgJ3JlbGVhc2VfZGVhZGxvY2snLFxuICAncGVybWlzc2lvbl9wcm9tcHQnLFxuICAnaW50cm9zcGVjdCcsXG4gICdnZXRfYWN0aXZlX2VsZW1lbnRzJyxcbiAgJ2dldF9leGVjdXRpb25fc3RhdGUnLFxuICAnZ2V0X2dhdGhlcmVkX2RhdGEnLFxuICAnYXBwcm92ZV9jbGlfcGVybWlzc2lvbicsICAgICAgIC8vIElzc3VlICM2MjUgUGhhc2UgM1xuICAnZ2V0X3BlbmRpbmdfY2xpX2FwcHJvdmFscycsICAgIC8vIElzc3VlICM2MjUgUGhhc2UgM1xuXSk7XG5cbi8qKlxuICogTUNQLUFRTCBvcGVyYXRpb25zIHRoYXQgYXJlIGluaGVyZW50bHkgcmVhZC1vbmx5LlxuICpcbiAqIFRoZXNlIGF1dG8tYWxsb3cgaW4gcGVybWlzc2lvbl9wcm9tcHQgKG5vIGVsZW1lbnQgcG9saWN5IGV2YWx1YXRpb24pLlxuICogVGhlIEdhdGVrZWVwZXIgKExheWVyIDIpIHN0aWxsIGFwcGxpZXMgaXRzIG93biBwZXItb3BlcmF0aW9uIHBvbGljaWVzLFxuICogc28gdGhpcyBkb2Vzbid0IGJ5cGFzcyBzZXJ2ZXItc2lkZSBhY2Nlc3MgY29udHJvbCDigJQgaXQganVzdCBhdm9pZHNcbiAqIHVubmVjZXNzYXJ5ICdldmFsdWF0ZScgcm91bmQtdHJpcHMgZm9yIG9wZXJhdGlvbnMgdGhhdCBjYW4ndCBtb2RpZnkgc3RhdGUuXG4gKi9cbmNvbnN0IFNBRkVfTUNQX09QRVJBVElPTlMgPSBuZXcgU2V0KFtcbiAgJ2xpc3RfZWxlbWVudHMnLFxuICAnZ2V0X2VsZW1lbnQnLFxuICAnZ2V0X2VsZW1lbnRfZGV0YWlscycsXG4gICdzZWFyY2hfZWxlbWVudHMnLFxuICAncXVlcnlfZWxlbWVudHMnLFxuICAnZ2V0X2FjdGl2ZV9lbGVtZW50cycsXG4gICd2YWxpZGF0ZV9lbGVtZW50JyxcbiAgJ3JlbmRlcicsXG4gICdleHBvcnRfZWxlbWVudCcsXG4gICdpbnRyb3NwZWN0JyxcbiAgJ2dldF9leGVjdXRpb25fc3RhdGUnLFxuICAnZ2V0X2dhdGhlcmVkX2RhdGEnLFxuICAnYnJvd3NlX2NvbGxlY3Rpb24nLFxuICAnc2VhcmNoX2NvbGxlY3Rpb24nLFxuICAnc2VhcmNoX2NvbGxlY3Rpb25fZW5oYW5jZWQnLFxuICAnZ2V0X2NvbGxlY3Rpb25fY29udGVudCcsXG4gICdnZXRfY29sbGVjdGlvbl9jYWNoZV9oZWFsdGgnLFxuICAncG9ydGZvbGlvX3N0YXR1cycsXG4gICdwb3J0Zm9saW9fY29uZmlnJyxcbiAgJ3NlYXJjaF9wb3J0Zm9saW8nLFxuICAnc2VhcmNoX2FsbCcsXG4gICdjaGVja19naXRodWJfYXV0aCcsXG4gICdvYXV0aF9oZWxwZXJfc3RhdHVzJyxcbiAgJ2RvbGxob3VzZV9jb25maWcnLFxuICAnZ2V0X2J1aWxkX2luZm8nLFxuICAnZ2V0X2NhY2hlX2J1ZGdldF9yZXBvcnQnLFxuICAncXVlcnlfbG9ncycsXG4gICdxdWVyeV9tZXRyaWNzJyxcbiAgJ2ZpbmRfc2ltaWxhcl9lbGVtZW50cycsXG4gICdnZXRfZWxlbWVudF9yZWxhdGlvbnNoaXBzJyxcbiAgJ3NlYXJjaF9ieV92ZXJiJyxcbiAgJ2dldF9yZWxhdGlvbnNoaXBfc3RhdHMnLFxuICAnZ2V0X2VmZmVjdGl2ZV9jbGlfcG9saWNpZXMnLFxuICAnZ2V0X3BlbmRpbmdfY2xpX2FwcHJvdmFscycsXG5dKTtcblxuLy8g4pSA4pSAIFN0YXRpYyBDbGFzc2lmaWNhdGlvbiBMaXN0cyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBUb29scyB0aGF0IGFyZSBhbHdheXMgc2FmZSAocmVhZC1vbmx5LCBubyBzaWRlIGVmZmVjdHMpLlxuICpcbiAqIE5PVEU6IFwiU2FmZVwiIGhlcmUgbWVhbnMgbm8gZGVzdHJ1Y3RpdmUgc2lkZSBlZmZlY3RzIOKAlCBpdCBkb2VzIE5PVCBtZWFuXG4gKiB1bnJlc3RyaWN0ZWQuIFJlYWQtb25seSB0b29scyBjYW4gc3RpbGwgcG9zZSBpbmZvcm1hdGlvbi1sZWFrYWdlIG9yXG4gKiBzY29wZS1jcmVlcCByaXNrcyB3aGVuIHVzZWQgdG8gYWNjZXNzIGZpbGVzIG91dHNpZGUgdGhlIHByb2plY3Qgd29ya2luZ1xuICogZGlyZWN0b3J5IChlLmcuLCB+Ly5zc2gvKiwgL2V0Yy9wYXNzd2QsIGNyZWRlbnRpYWxzIGluIGhvbWUgZGlyZWN0b3JpZXMpLlxuICogTW9zdCBMTE0gY2xpZW50cyAoQ2xhdWRlIENvZGUsIEN1cnNvciwgZXRjLikgYWxyZWFkeSBlbmZvcmNlIGRpcmVjdG9yeVxuICogc2NvcGluZyBhdCB0aGUgY2xpZW50IGxldmVsLiBUaGUgYGFzc2Vzc1Jpc2soKWAgZnVuY3Rpb24gYXBwbGllcyBhIHNtYWxsXG4gKiBzY29yZSBidW1wIGZvciByZWFkIG9wZXJhdGlvbnMgdGFyZ2V0aW5nIG91dC1vZi1zY29wZSBwYXRocyBhcyBhblxuICogYWRkaXRpb25hbCBzaWduYWwgZm9yIGFwcHJvdmFsIHBvbGljaWVzLlxuICovXG5jb25zdCBTQUZFX1RPT0xTID0gbmV3IFNldChbXG4gICdSZWFkJyxcbiAgJ0dyZXAnLFxuICAnR2xvYicsXG4gICdXZWJGZXRjaCcsXG4gICdXZWJTZWFyY2gnLFxuICAnVGFza0NyZWF0ZScsXG4gICdUYXNrVXBkYXRlJyxcbiAgJ1Rhc2tHZXQnLFxuICAnVGFza0xpc3QnLFxuICAnVGFza091dHB1dCcsXG4gICdBc2tVc2VyUXVlc3Rpb24nLFxuICAnRW50ZXJQbGFuTW9kZScsXG4gICdFeGl0UGxhbk1vZGUnLFxuICAnVG9kb1JlYWQnLFxuICAnVG9kb1dyaXRlJyxcbl0pO1xuXG4vKiogQmFzaCBjb21tYW5kIHByZWZpeGVzL3BhdHRlcm5zIHRoYXQgYXJlIHNhZmUgKi9cbmNvbnN0IFNBRkVfQkFTSF9QQVRURVJOUyA9IFtcbiAgJ2dpdCBzdGF0dXMqJyxcbiAgJ2dpdCBsb2cqJyxcbiAgJ2dpdCBkaWZmKicsXG4gICdnaXQgYnJhbmNoKicsXG4gICdnaXQgc2hvdyonLFxuICAnZ2l0IHJlbW90ZSonLFxuICAnZ2l0IHN0YXNoIGxpc3QqJyxcbiAgJ2xzKicsXG4gICdwd2QnLFxuICAnY2F0IConLFxuICAnaGVhZCAqJyxcbiAgJ3RhaWwgKicsXG4gICd3YyAqJyxcbiAgJ2VjaG8gKicsXG4gICducG0gdGVzdConLFxuICAnbnBtIHJ1biBsaW50KicsXG4gICducG0gcnVuIGJ1aWxkKicsXG4gICducG0gcnVuIHRlc3QqJyxcbiAgJ25wbSBydW4gY2hlY2sqJyxcbiAgJ25wbSBydW4gdHlwZWNoZWNrKicsXG4gICducG0gcnVuIGZvcm1hdConLFxuICAnbnBtIGxzKicsXG4gICducG0gaW5mbyonLFxuICAnbnBtIG91dGRhdGVkKicsXG4gICducHggamVzdConLFxuICAnbnB4IHRzYyAtLW5vRW1pdConLFxuICAnbm9kZSAtLXZlcnNpb24qJyxcbiAgJ3doaWNoIConLFxuICAndHlwZSAqJyxcbiAgJ2doIGlzc3VlIGxpc3QqJyxcbiAgJ2doIGlzc3VlIHZpZXcqJyxcbiAgJ2doIHByIGxpc3QqJyxcbiAgJ2doIHByIHZpZXcqJyxcbiAgJ2doIHByIGNoZWNrcyonLFxuXTtcblxuLyoqIEJhc2ggY29tbWFuZCBwYXR0ZXJucyB0aGF0IGFyZSBkYW5nZXJvdXMgKi9cbmNvbnN0IERBTkdFUk9VU19CQVNIX1BBVFRFUk5TID0gW1xuICAncm0gLXJmIConLFxuICAncm0gLWZyIConLFxuICAnZ2l0IHB1c2ggLS1mb3JjZSonLFxuICAnZ2l0IHB1c2ggLWYgKicsXG4gICdnaXQgcmVzZXQgLS1oYXJkKicsXG4gICdnaXQgY2xlYW4gLWYqJyxcbiAgJ2dpdCBjaGVja291dCAtLSAqJyxcbiAgJ2dpdCBicmFuY2ggLUQgKicsXG4gICdjaG1vZCA3NzcqJyxcbiAgJ2NobW9kIC1SIDc3NyonLFxuICAnY2htb2QgK3MgKicsXG4gICdjaG93biByb290IConLFxuICAnc3VkbyAqJyxcbiAgJ2RvYXMgKicsXG4gICdzdSAtKicsXG4gICdldmFsIConLFxuICAvLyBJbmxpbmUgaW50ZXJwcmV0ZXIgZXhlY3V0aW9uICgjMTc4Mikg4oCUIGFyYml0cmFyeSBjb2RlIHZpYSAtYy8tZSBmbGFnc1xuICAncHl0aG9uIC1jIConLFxuICAncHl0aG9uMyAtYyAqJyxcbiAgJ25vZGUgLWUgKicsXG4gICdub2RlIC0tZXZhbCAqJyxcbiAgJ3BlcmwgLWUgKicsXG4gICdydWJ5IC1lIConLFxuICAvLyBQaXBlLXRvLXNoZWxsIHBhdHRlcm5zICh3aXRoIGFuZCB3aXRob3V0IHNwYWNlcywgbXVsdGlwbGUgc2hlbGxzKVxuICAnKnwgc2gnLFxuICAnKnwgc2ggKicsXG4gICcqfHNoJyxcbiAgJyp8c2ggKicsXG4gICcqfCBiYXNoJyxcbiAgJyp8IGJhc2ggKicsXG4gICcqfGJhc2gnLFxuICAnKnxiYXNoIConLFxuICAnKnwgenNoJyxcbiAgJyp8enNoJyxcbiAgJ2N1cmwgKiB8IConLFxuICAnd2dldCAqIHwgKicsXG4gIC8vIFBhY2thZ2UgbWFuYWdlciBpbnN0YWxscyAoY2FuIGV4ZWN1dGUgYXJiaXRyYXJ5IHBvc3QtaW5zdGFsbCBzY3JpcHRzKVxuICAnbnBtIGluc3RhbGwgKicsXG4gICducG0gaW5zdGFsbCcsXG4gICducG0gaSAqJyxcbiAgJ25wbSBpJyxcbiAgJ3lhcm4gYWRkIConLFxuICAneWFybiBpbnN0YWxsKicsXG4gICdwaXAgaW5zdGFsbCAqJyxcbiAgJ2dlbSBpbnN0YWxsIConLFxuICAvLyBFbnZpcm9ubWVudCBtYW5pcHVsYXRpb24gKHBhdGggcG9pc29uaW5nLCBsaWJyYXJ5IGluamVjdGlvbiwgdmFyaWFibGUgZGVzdHJ1Y3Rpb24pXG4gICdleHBvcnQgUEFUSD0qJyxcbiAgJ2V4cG9ydCBMRF9QUkVMT0FEPSonLFxuICAnZXhwb3J0IExEX0xJQlJBUllfUEFUSD0qJyxcbiAgJ2VudiAtaSAqJyxcbiAgJ3Vuc2V0IConLFxuICAvLyBQcm9jZXNzIGNvbnRyb2wgKGNhbiB0ZXJtaW5hdGUgYWdlbnRzIG9yIHN5c3RlbSBwcm9jZXNzZXMpXG4gICdraWxsIConLFxuICAna2lsbCAtKicsXG4gICdwa2lsbCAqJyxcbiAgJ2tpbGxhbGwgKicsXG4gIC8vIE5ldHdvcmsgdG9vbHMgKGV4ZmlsdHJhdGlvbiwgcmV2ZXJzZSBzaGVsbHMpXG4gICduYyAqJyxcbiAgJ25jIC0qJyxcbiAgJ25ldGNhdCAqJyxcbiAgJ25jYXQgKicsXG4gICdzb2NhdCAqJyxcbiAgLy8gQXJjaGl2ZSBvcGVyYXRpb25zIChhcmNoaXZlIGJvbWJzLCByb290IGRpcmVjdG9yeSBleGZpbHRyYXRpb24vcmFuc29td2FyZSlcbiAgJ3RhciAteGYgKicsXG4gICd0YXIgeGYgKicsXG4gICd6aXAgLXIgKiAvJyxcbiAgLy8gQ29tbWFuZCBjaGFpbmluZyB3aXRoIGRhbmdlcm91cyBzdWJjb21tYW5kc1xuICAnKjsgcm0gLXJmIConLFxuICAnKiYmIHJtIC1yZiAqJyxcbiAgJyp8fCBybSAtcmYgKicsXG4gICcqOyBzdWRvIConLFxuICAnKiYmIHN1ZG8gKicsXG4gICcqfHwgc3VkbyAqJyxcbiAgJyo7IGV2YWwgKicsXG4gICcqJiYgZXZhbCAqJyxcbiAgLy8gU3VicHJvY2VzcyBleGVjdXRpb24gd3JhcHBlcnMgKGJ5cGFzcyBvdXRlciBjb21tYW5kIGNsYXNzaWZpY2F0aW9uKVxuICAnYmFzaCAtYyAqJyxcbiAgJ3NoIC1jIConLFxuICAnenNoIC1jIConLFxuICAnL2Jpbi9iYXNoIC1jIConLFxuICAnL2Jpbi9zaCAtYyAqJyxcbiAgLy8gUHJvY2VzcyBzdWJzdGl0dXRpb24gKGNhbiBpbmplY3QgYXJiaXRyYXJ5IGNvbW1hbmQgb3V0cHV0KVxuICAnKjwoKicsXG4gIC8vIEVuY29kZWQgcGF5bG9hZCBleGVjdXRpb24gKGJhc2U2NC1kZWNvZGUgcGlwZWQgdG8gc2hlbGwpXG4gICcqYmFzZTY0IC1kKnwqJyxcbiAgJypiYXNlNjQgLS1kZWNvZGUqfConLFxuICAnKmJhc2U2NCAtRCp8KicsXG5dO1xuXG4vKiogQmFzaCBjb21tYW5kIHBhdHRlcm5zIHRoYXQgYXJlIGFsd2F5cyBibG9ja2VkICovXG5jb25zdCBCTE9DS0VEX0JBU0hfUEFUVEVSTlMgPSBbXG4gICdta2ZzKicsXG4gICdkZCBpZj0qJyxcbiAgJzooKXs6fDomfTs6JyxcbiAgJ2Zvcm1hdCAqJyxcbiAgJyooKXsgKicsXG5dO1xuXG4vLyDilIDilIAgU3RhdGljIENsYXNzaWZpY2F0aW9uIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIENsYXNzaWZ5IGEgQ0xJIHRvb2wgY2FsbCBieSByaXNrIGxldmVsIHVzaW5nIHN0YXRpYyBydWxlcy5cbiAqXG4gKiBSZXR1cm5zICdhbGxvdycgZm9yIGtub3duLXNhZmUgdG9vbHMsICdkZW55JyBmb3Iga25vd24tZGFuZ2Vyb3VzIHBhdHRlcm5zLFxuICogYW5kICdldmFsdWF0ZScgZm9yIGFueXRoaW5nIHRoYXQgbmVlZHMgZnVydGhlciBwb2xpY3kgY2hlY2tpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFzc2lmeVRvb2woXG4gIHRvb2xOYW1lOiBzdHJpbmcsXG4gIHRvb2xJbnB1dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbik6IFRvb2xDbGFzc2lmaWNhdGlvblJlc3VsdCB7XG4gIC8vIEtub3duLXNhZmUgdG9vbHM6IGF1dG8tYWxsb3dcbiAgaWYgKFNBRkVfVE9PTFMuaGFzKHRvb2xOYW1lKSkge1xuICAgIHJldHVybiB7IHJpc2tMZXZlbDogJ3NhZmUnLCBiZWhhdmlvcjogJ2FsbG93JywgcmVhc29uOiBgJHt0b29sTmFtZX0gaXMgYSByZWFkLW9ubHkgdG9vbGAgfTtcbiAgfVxuXG4gIC8vIEJhc2g6IHN1Yi1jbGFzc2lmeSBieSBjb21tYW5kIGNvbnRlbnRcbiAgaWYgKHRvb2xOYW1lID09PSAnQmFzaCcpIHtcbiAgICByZXR1cm4gY2xhc3NpZnlCYXNoQ29tbWFuZCh0b29sSW5wdXQpO1xuICB9XG5cbiAgLy8gTUNQIHRvb2wgY2FsbHM6IGF1dG8tYWxsb3cgZ2F0ZWtlZXBlci1lc3NlbnRpYWwgYW5kIHNhZmUgcmVhZC1vbmx5IG9wZXJhdGlvbnMsIGV2YWx1YXRlIG90aGVyc1xuICBpZiAodG9vbE5hbWUuc3RhcnRzV2l0aCgnbWNwX18nKSkge1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHR5cGVvZiB0b29sSW5wdXQub3BlcmF0aW9uID09PSAnc3RyaW5nJyA/IHRvb2xJbnB1dC5vcGVyYXRpb24gOiAnJztcbiAgICBpZiAob3BlcmF0aW9uICYmIEdBVEVLRUVQRVJfRVNTRU5USUFMX09QRVJBVElPTlMuaGFzKG9wZXJhdGlvbikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJpc2tMZXZlbDogJ3NhZmUnLFxuICAgICAgICBiZWhhdmlvcjogJ2FsbG93JyxcbiAgICAgICAgcmVhc29uOiBgR2F0ZWtlZXBlci1lc3NlbnRpYWwgb3BlcmF0aW9uICcke29wZXJhdGlvbn0nIOKAlCBjYW5ub3QgYmUgYmxvY2tlZCBieSBwZXJtaXNzaW9uX3Byb21wdGAsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAob3BlcmF0aW9uICYmIFNBRkVfTUNQX09QRVJBVElPTlMuaGFzKG9wZXJhdGlvbikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJpc2tMZXZlbDogJ3NhZmUnLFxuICAgICAgICBiZWhhdmlvcjogJ2FsbG93JyxcbiAgICAgICAgcmVhc29uOiBgUmVhZC1vbmx5IE1DUCBvcGVyYXRpb24gJyR7b3BlcmF0aW9ufSdgLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgcmlza0xldmVsOiAnbW9kZXJhdGUnLCBiZWhhdmlvcjogJ2V2YWx1YXRlJywgcmVhc29uOiAnTUNQIHRvb2wgY2FsbCByZXF1aXJlcyBwb2xpY3kgZXZhbHVhdGlvbicgfTtcbiAgfVxuXG4gIC8vIEVkaXQsIFdyaXRlLCBBZ2VudCwgTm90ZWJvb2tFZGl0LCBldGMuOiBtb2RlcmF0ZSByaXNrXG4gIGlmIChbJ0VkaXQnLCAnV3JpdGUnLCAnQWdlbnQnLCAnTm90ZWJvb2tFZGl0J10uaW5jbHVkZXModG9vbE5hbWUpKSB7XG4gICAgcmV0dXJuIHsgcmlza0xldmVsOiAnbW9kZXJhdGUnLCBiZWhhdmlvcjogJ2V2YWx1YXRlJywgcmVhc29uOiBgJHt0b29sTmFtZX0gbW9kaWZpZXMgc3RhdGUsIHJlcXVpcmVzIHBvbGljeSBldmFsdWF0aW9uYCB9O1xuICB9XG5cbiAgLy8gVW5rbm93biB0b29sOiBldmFsdWF0ZSAocGVybWlzc2l2ZSBkZWZhdWx0IGZvciBQaGFzZSAxKVxuICByZXR1cm4geyByaXNrTGV2ZWw6ICdtb2RlcmF0ZScsIGJlaGF2aW9yOiAnZXZhbHVhdGUnLCByZWFzb246IGBVbmtub3duIHRvb2wgJyR7dG9vbE5hbWV9JywgcmVxdWlyZXMgcG9saWN5IGV2YWx1YXRpb25gIH07XG59XG5cbi8qKlxuICogU3ViLWNsYXNzaWZ5IEJhc2ggY29tbWFuZHMgYnkgbWF0Y2hpbmcgYWdhaW5zdCBrbm93biBwYXR0ZXJucy5cbiAqL1xuZnVuY3Rpb24gY2xhc3NpZnlCYXNoQ29tbWFuZChcbiAgdG9vbElucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKTogVG9vbENsYXNzaWZpY2F0aW9uUmVzdWx0IHtcbiAgY29uc3QgY29tbWFuZCA9IHR5cGVvZiB0b29sSW5wdXQuY29tbWFuZCA9PT0gJ3N0cmluZycgPyB0b29sSW5wdXQuY29tbWFuZC50cmltKCkgOiAnJztcblxuICBpZiAoIWNvbW1hbmQpIHtcbiAgICByZXR1cm4geyByaXNrTGV2ZWw6ICdtb2RlcmF0ZScsIGJlaGF2aW9yOiAnZXZhbHVhdGUnLCByZWFzb246ICdFbXB0eSBCYXNoIGNvbW1hbmQnIH07XG4gIH1cblxuICAvLyBDaGVjayBibG9ja2VkIHBhdHRlcm5zIGZpcnN0IChoaWdoZXN0IHByaW9yaXR5KVxuICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgQkxPQ0tFRF9CQVNIX1BBVFRFUk5TKSB7XG4gICAgaWYgKG1hdGNoZXNQYXR0ZXJuKGNvbW1hbmQsIHBhdHRlcm4pKSB7XG4gICAgICByZXR1cm4geyByaXNrTGV2ZWw6ICdibG9ja2VkJywgYmVoYXZpb3I6ICdkZW55JywgcmVhc29uOiBgQmxvY2tlZCBjb21tYW5kIHBhdHRlcm46ICR7cGF0dGVybn1gIH07XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgZGFuZ2Vyb3VzIHBhdHRlcm5zXG4gIGZvciAoY29uc3QgcGF0dGVybiBvZiBEQU5HRVJPVVNfQkFTSF9QQVRURVJOUykge1xuICAgIGlmIChtYXRjaGVzUGF0dGVybihjb21tYW5kLCBwYXR0ZXJuKSkge1xuICAgICAgcmV0dXJuIHsgcmlza0xldmVsOiAnZGFuZ2Vyb3VzJywgYmVoYXZpb3I6ICdkZW55JywgcmVhc29uOiBgRGFuZ2Vyb3VzIGNvbW1hbmQgcGF0dGVybjogJHtwYXR0ZXJufWAgfTtcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBzYWZlIHBhdHRlcm5zXG4gIGZvciAoY29uc3QgcGF0dGVybiBvZiBTQUZFX0JBU0hfUEFUVEVSTlMpIHtcbiAgICBpZiAobWF0Y2hlc1BhdHRlcm4oY29tbWFuZCwgcGF0dGVybikpIHtcbiAgICAgIHJldHVybiB7IHJpc2tMZXZlbDogJ3NhZmUnLCBiZWhhdmlvcjogJ2FsbG93JywgcmVhc29uOiBgU2FmZSBjb21tYW5kIHBhdHRlcm46ICR7cGF0dGVybn1gIH07XG4gICAgfVxuICB9XG5cbiAgLy8gVW5jbGFzc2lmaWVkOiBldmFsdWF0ZSBhZ2FpbnN0IGVsZW1lbnQgcG9saWNpZXNcbiAgcmV0dXJuIHsgcmlza0xldmVsOiAnbW9kZXJhdGUnLCBiZWhhdmlvcjogJ2V2YWx1YXRlJywgcmVhc29uOiAnQmFzaCBjb21tYW5kIG5vdCBzdGF0aWNhbGx5IGNsYXNzaWZpZWQnIH07XG59XG5cbi8vIOKUgOKUgCBSaXNrIEFzc2Vzc21lbnQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogQmFzZSByaXNrIHNjb3JlcyBieSBjbGFzc2lmaWNhdGlvbiBsZXZlbCAoMC0xMDAgc2NhbGUpLlxuICpcbiAqIFNjb3JlIHJhbmdlczpcbiAqIC0gIDA6ICAgICBzYWZlIOKAlCByZWFkLW9ubHkgdG9vbHMsIG5vIHNpZGUgZWZmZWN0c1xuICogLSAgMS0zOTogIGxvdyDigJQgbWlub3Igc2lkZSBlZmZlY3RzLCBlYXNpbHkgcmV2ZXJzaWJsZVxuICogLSA0MC01OTogIG1vZGVyYXRlIOKAlCBmaWxlIHdyaXRlcywgcGFja2FnZSBpbnN0YWxscywgdW5jbGFzc2lmaWVkIGNvbW1hbmRzXG4gKiAtIDYwLTc5OiAgZWxldmF0ZWQg4oCUIG1vZGVyYXRlICsgYWdncmF2YXRpbmcgZmFjdG9ycyAobmV0d29yaywgZmlsZSBjcmVhdGlvbilcbiAqIC0gODAtOTk6ICBkYW5nZXJvdXMg4oCUIGRlc3RydWN0aXZlIGNvbW1hbmRzLCBwcml2aWxlZ2UgZXNjYWxhdGlvblxuICogLSAxMDA6ICAgIGJsb2NrZWQg4oCUIGFsd2F5cyBkZW5pZWQgKGUuZy4sIHJldmVyc2Ugc2hlbGxzLCBkaXNrIHdpcGUpXG4gKlxuICogQWRqdXN0bWVudHMgYXBwbGllZCBvbiB0b3Agb2YgYmFzZTogaXJyZXZlcnNpYmxlIHBhdHRlcm4gKCsxMCksXG4gKiBuZXR3b3JrIG9wZXJhdGlvbiAoKzEwKSwgb3V0LW9mLXNjb3BlIHJlYWQgKCsxMCksIGZpbGUgY3JlYXRpb24gKCs1KS5cbiAqIFNjb3JlIGlzIGNhcHBlZCBhdCAxMDAuXG4gKi9cbmNvbnN0IFJJU0tfU0NPUkVTOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xuICBzYWZlOiAwLFxuICBtb2RlcmF0ZTogNDAsXG4gIGRhbmdlcm91czogODAsXG4gIGJsb2NrZWQ6IDEwMCxcbn07XG5cbi8qKiBSZWFkLW9ubHkgdG9vbHMgdGhhdCBtYXkgcmVmZXJlbmNlIGZpbGUgcGF0aHMgKi9cbmNvbnN0IFNBRkVfUkVBRF9UT09MUyA9IG5ldyBTZXQoWydSZWFkJywgJ0dyZXAnLCAnR2xvYiddKTtcblxuLyoqIFNlbnNpdGl2ZSBwYXRoIHByZWZpeGVzIHRoYXQgaW5kaWNhdGUgb3V0LW9mLXNjb3BlIHJlYWRzICovXG5jb25zdCBTRU5TSVRJVkVfUEFUSF9QUkVGSVhFUyA9IFtcbiAgJ34vLnNzaC8nLCAnfi8uZ251cGcvJywgJ34vLmF3cy8nLCAnfi8uY29uZmlnLycsXG4gICd+Ly5lbnYnLCAnfi8ubmV0cmMnLCAnfi8ubnBtcmMnLFxuICAnL2V0Yy9zaGFkb3cnLCAnL2V0Yy9wYXNzd2QnLCAnL2V0Yy9zdWRvZXJzJyxcbiAgJy9wcm9jLycsICcvc3lzLycsXG5dO1xuXG4vKipcbiAqIEhldXJpc3RpYzogZG9lcyBhIHBhdGggbG9vayBsaWtlIGl0IHRhcmdldHMgZmlsZXMgb3V0c2lkZSB0aGUgcHJvamVjdCBzY29wZT9cbiAqIENoZWNrcyBmb3IgaG9tZS1kaXJlY3Rvcnkgc2Vuc2l0aXZlIHBhdGhzLCBzeXN0ZW0gcGF0aHMsIGFuZCBwYXJlbnQgdHJhdmVyc2Fscy5cbiAqL1xuZnVuY3Rpb24gaXNPdXRPZlNjb3BlUGF0aCh0YXJnZXRQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHRhcmdldFBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuXG4gIC8vIEV4cGxpY2l0IHNlbnNpdGl2ZSBwYXRoc1xuICBmb3IgKGNvbnN0IHByZWZpeCBvZiBTRU5TSVRJVkVfUEFUSF9QUkVGSVhFUykge1xuICAgIGlmIChub3JtYWxpemVkLnN0YXJ0c1dpdGgocHJlZml4KSB8fCBub3JtYWxpemVkLmluY2x1ZGVzKGAvJHtwcmVmaXh9YCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhvbWUgZGlyZWN0b3J5IHJlZmVyZW5jZXMgKH4vLi4uKSB0aGF0IGFyZW4ndCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdFxuICBpZiAobm9ybWFsaXplZC5zdGFydHNXaXRoKCd+LycpIHx8IG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnL1VzZXJzLycpIHx8IG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnL2hvbWUvJykpIHtcbiAgICAvLyBIZXVyaXN0aWM6IHJlYWRpbmcgc2Vuc2l0aXZlIGRvdGZpbGVzL2RpcnMgb3V0c2lkZSBhIHByb2plY3QuXG4gICAgLy8gVGFyZ2V0cyBrbm93biBjcmVkZW50aWFsL2NvbmZpZyBzdG9yZXMg4oCUIGF2b2lkcyBmYWxzZSBwb3NpdGl2ZXMgZm9yXG4gICAgLy8gY29tbW9uIHByb2plY3QgZG90ZmlsZXMgbGlrZSAuZ2l0aHViLywgLnZzY29kZS8sIC5lc2xpbnRyYywgZXRjLlxuICAgIGlmICgvXFwvXFwuKHNzaHxnbnVwZ3xhd3N8YXp1cmV8Z2Nsb3VkfGt1YmV8ZG9ja2VyfG5wbXJjfG5ldHJjfGVudnxiYXNoX2hpc3Rvcnl8enNoX2hpc3Rvcnl8Y3JlZGVudGlhbHN8cGFzc3dvcmR8c2VjcmV0KS9pLnRlc3Qobm9ybWFsaXplZCkpIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKiogQmFzaCBjb21tYW5kIHBhdHRlcm5zIHRoYXQgYXJlIGlycmV2ZXJzaWJsZSAqL1xuY29uc3QgSVJSRVZFUlNJQkxFX1BBVFRFUk5TID0gW1xuICAncm0gLXJmIConLFxuICAncm0gLWZyIConLFxuICAnZ2l0IHB1c2ggLS1mb3JjZSonLFxuICAnZ2l0IHB1c2ggLWYgKicsXG4gICdnaXQgcmVzZXQgLS1oYXJkKicsXG4gICdnaXQgY2xlYW4gLWYqJyxcbiAgJ21rZnMqJyxcbiAgJ2RkIGlmPSonLFxuICAnZHJvcCAqJyxcbiAgJ3RydW5jYXRlIConLFxuXTtcblxuLyoqXG4gKiBBc3Nlc3MgdGhlIHJpc2sgb2YgYSBDTEkgdG9vbCBjYWxsLlxuICpcbiAqIFJldHVybnMgYSBudW1lcmljIHNjb3JlICgwLTEwMCkgYW5kIGlycmV2ZXJzaWJpbGl0eSBpbmRpY2F0b3IgYmFzZWQgb25cbiAqIHRoZSBzdGF0aWMgY2xhc3NpZmljYXRpb24gYW5kIHRvb2wtc3BlY2lmaWMgaGV1cmlzdGljcy5cbiAqXG4gKiBAcGFyYW0gdG9vbE5hbWUgLSBUaGUgdG9vbCBiZWluZyBjYWxsZWRcbiAqIEBwYXJhbSB0b29sSW5wdXQgLSBUaGUgdG9vbCBpbnB1dCBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0gY2xhc3NpZmljYXRpb24gLSBUaGUgcmVzdWx0IGZyb20gY2xhc3NpZnlUb29sKClcbiAqIEByZXR1cm5zIFJpc2sgYXNzZXNzbWVudCB3aXRoIHNjb3JlLCBpcnJldmVyc2liaWxpdHksIGFuZCBjb250cmlidXRpbmcgZmFjdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXNzUmlzayhcbiAgdG9vbE5hbWU6IHN0cmluZyxcbiAgdG9vbElucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgY2xhc3NpZmljYXRpb246IFRvb2xDbGFzc2lmaWNhdGlvblJlc3VsdFxuKTogUmlza0Fzc2Vzc21lbnQge1xuICBsZXQgc2NvcmUgPSBSSVNLX1NDT1JFU1tjbGFzc2lmaWNhdGlvbi5yaXNrTGV2ZWxdID8/IDQwO1xuICBjb25zdCBmYWN0b3JzOiBzdHJpbmdbXSA9IFtgQmFzZTogJHtjbGFzc2lmaWNhdGlvbi5yaXNrTGV2ZWx9ICgke1JJU0tfU0NPUkVTW2NsYXNzaWZpY2F0aW9uLnJpc2tMZXZlbF0gPz8gNDB9KWBdO1xuICBsZXQgaXJyZXZlcnNpYmxlID0gZmFsc2U7XG5cbiAgLy8gQ2hlY2sgZm9yIGlycmV2ZXJzaWJsZSBwYXR0ZXJucyBpbiBCYXNoIGNvbW1hbmRzXG4gIGlmICh0b29sTmFtZSA9PT0gJ0Jhc2gnICYmIHR5cGVvZiB0b29sSW5wdXQuY29tbWFuZCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBjb21tYW5kID0gdG9vbElucHV0LmNvbW1hbmQudHJpbSgpO1xuICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBJUlJFVkVSU0lCTEVfUEFUVEVSTlMpIHtcbiAgICAgIGlmIChtYXRjaGVzUGF0dGVybihjb21tYW5kLCBwYXR0ZXJuKSkge1xuICAgICAgICBpcnJldmVyc2libGUgPSB0cnVlO1xuICAgICAgICBzY29yZSA9IE1hdGgubWluKDEwMCwgc2NvcmUgKyAxMCk7XG4gICAgICAgIGZhY3RvcnMucHVzaChgSXJyZXZlcnNpYmxlIHBhdHRlcm46ICR7cGF0dGVybn0gKCsxMClgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTmV0d29yayBvcGVyYXRpb25zIGluY3JlYXNlIHJpc2tcbiAgICBpZiAoL1xcYihjdXJsfHdnZXR8ZmV0Y2h8bmN8bmV0Y2F0fG5jYXR8c29jYXQpXFxiLy50ZXN0KGNvbW1hbmQpKSB7XG4gICAgICBzY29yZSA9IE1hdGgubWluKDEwMCwgc2NvcmUgKyAxMCk7XG4gICAgICBmYWN0b3JzLnB1c2goJ05ldHdvcmsgb3BlcmF0aW9uICgrMTApJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gV3JpdGUvRWRpdCBvcGVyYXRpb25zOiBmaWxlIGNyZWF0aW9uIGluY3JlYXNlcyByaXNrIHNsaWdodGx5XG4gIGlmICh0b29sTmFtZSA9PT0gJ1dyaXRlJykge1xuICAgIHNjb3JlID0gTWF0aC5taW4oMTAwLCBzY29yZSArIDUpO1xuICAgIGZhY3RvcnMucHVzaCgnRmlsZSBjcmVhdGlvbiAoKzUpJyk7XG4gIH1cblxuICAvLyBSZWFkLW9ubHkgdG9vbHMgdGFyZ2V0aW5nIHBhdGhzIG91dHNpZGUgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LlxuICAvLyBNb3N0IGNsaWVudHMgYWxyZWFkeSBlbmZvcmNlIGRpcmVjdG9yeSBzY29waW5nLCBidXQgdGhpcyBwcm92aWRlcyBhblxuICAvLyBhZGRpdGlvbmFsIHNpZ25hbCBmb3IgYXBwcm92YWwgcG9saWNpZXMgdG8gYWN0IG9uLlxuICBpZiAoU0FGRV9SRUFEX1RPT0xTLmhhcyh0b29sTmFtZSkpIHtcbiAgICBjb25zdCB0YXJnZXRQYXRoID0gKHRvb2xJbnB1dC5maWxlX3BhdGggPz8gdG9vbElucHV0LnBhdGggPz8gJycpIGFzIHN0cmluZztcbiAgICBpZiAodGFyZ2V0UGF0aCAmJiBpc091dE9mU2NvcGVQYXRoKHRhcmdldFBhdGgpKSB7XG4gICAgICBzY29yZSA9IE1hdGgubWluKDEwMCwgc2NvcmUgKyAxMCk7XG4gICAgICBmYWN0b3JzLnB1c2goJ091dC1vZi1zY29wZSByZWFkIHBhdGggKCsxMCknKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBzY29yZSwgaXJyZXZlcnNpYmxlLCBmYWN0b3JzIH07XG59XG5cbi8vIOKUgOKUgCBTdGF0aWMgUG9saWN5IERhdGEgRXhwb3J0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIFJldHVybiBhbGwgc3RhdGljIGNsYXNzaWZpY2F0aW9uIGRhdGEgZm9yIGJyaWRnZSBwb2xpY3kgZXhwb3J0LlxuICpcbiAqIFVzZWQgYnkgUG9saWN5RXhwb3J0U2VydmljZSB0byB3cml0ZSB0aGUgYnJpZGdlLWNvbXBhdGlibGUgcG9saWN5IGZpbGUuXG4gKiBBbGwgZGF0YSBpcyByZXR1cm5lZCBhcyBwbGFpbiBhcnJheXMvb2JqZWN0cyAobm8gU2V0cykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0aWNQb2xpY3lEYXRhKCkge1xuICByZXR1cm4ge1xuICAgIHNhZmVfdG9vbHM6IFsuLi5TQUZFX1RPT0xTXSxcbiAgICBzYWZlX2Jhc2hfcGF0dGVybnM6IFsuLi5TQUZFX0JBU0hfUEFUVEVSTlNdLFxuICAgIGRhbmdlcm91c19iYXNoX3BhdHRlcm5zOiBbLi4uREFOR0VST1VTX0JBU0hfUEFUVEVSTlNdLFxuICAgIGJsb2NrZWRfYmFzaF9wYXR0ZXJuczogWy4uLkJMT0NLRURfQkFTSF9QQVRURVJOU10sXG4gICAgaXJyZXZlcnNpYmxlX3BhdHRlcm5zOiBbLi4uSVJSRVZFUlNJQkxFX1BBVFRFUk5TXSxcbiAgICBzZW5zaXRpdmVfcGF0aF9wcmVmaXhlczogWy4uLlNFTlNJVElWRV9QQVRIX1BSRUZJWEVTXSxcbiAgICBnYXRla2VlcGVyX2Vzc2VudGlhbF9vcGVyYXRpb25zOiBbLi4uR0FURUtFRVBFUl9FU1NFTlRJQUxfT1BFUkFUSU9OU10sXG4gICAgc2FmZV9tY3Bfb3BlcmF0aW9uczogWy4uLlNBRkVfTUNQX09QRVJBVElPTlNdLFxuICAgIHJpc2tfc2NvcmVzOiB7IC4uLlJJU0tfU0NPUkVTIH0sXG4gIH07XG59XG5cbi8vIOKUgOKUgCBFbGVtZW50IFBvbGljeSBFdmFsdWF0aW9uIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIEV2YWx1YXRlIGEgQ0xJIHRvb2wgY2FsbCBhZ2FpbnN0IGFjdGl2ZSBlbGVtZW50IGdhdGVrZWVwZXIgcG9saWNpZXMuXG4gKlxuICogRm91ci1zdGVwIGV2YWx1YXRpb24gcGVyIGVsZW1lbnQgKElzc3VlICM2MjUgUGhhc2UgMiwgSXNzdWUgIzE2NjApOlxuICogMS4gZGVueVBhdHRlcm5zIChoaWdoZXN0IHByaW9yaXR5KSDigJQgZmlyc3QgbWF0Y2ggPSBpbW1lZGlhdGUgZGVueVxuICogMS41LiBjb25maXJtUGF0dGVybnMg4oCUIGZpcnN0IG1hdGNoID0gaW1tZWRpYXRlIGNvbmZpcm0gKHJlcXVpcmVzIGFwcHJvdmFsKVxuICogMi4gYWxsb3dQYXR0ZXJucyDigJQgaWYgZWxlbWVudCBkZWZpbmVzIHRoZW0sIHJlY29yZCB3aGV0aGVyIHRvb2wgbWF0Y2hlZFxuICogMy4gQWZ0ZXIgYWxsIGVsZW1lbnRzOiBpZiBhbnkgaGFkIGFsbG93UGF0dGVybnMgYnV0IHRvb2wgd2Fzbid0IGFsbG93ZWQgYnkgYW55ID0gZGVueVxuICpcbiAqIFVuaW9uIHNlbWFudGljczogdG9vbCBtdXN0IG1hdGNoIGF0IGxlYXN0IE9ORSBlbGVtZW50J3MgYWxsb3dQYXR0ZXJucyAobm90IGFsbCkuXG4gKiBFbGVtZW50cyB3aXRob3V0IGFsbG93UGF0dGVybnMgZG9uJ3QgcmVzdHJpY3QuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRvb2wgbWF0Y2hlcyBhbGxvd1BhdHRlcm5zIGluIGVsZW1lbnQgQSBidXQgbm90IEIg4oaSIEFMTE9XRUQgKHVuaW9uIHNlbWFudGljcylcbiAqIC8vIFRvb2wgbWF0Y2hlcyBkZW55UGF0dGVybnMgaW4gYW55IGVsZW1lbnQg4oaSIERFTklFRCAoZGVueSBhbHdheXMgd2lucylcbiAqIC8vIFRvb2wgbWF0Y2hlcyBubyBhbGxvd1BhdHRlcm5zIGJ1dCBzb21lIGV4aXN0IOKGkiBERU5JRUQgKFwibm90IGluIGFueSBhbGxvd2xpc3RcIilcbiAqIC8vIE5vIGFsbG93UGF0dGVybnMgZGVmaW5lZCBhbnl3aGVyZSDihpIgUGhhc2UgMSBiZWhhdmlvciAoZmFsbCB0aHJvdWdoIHRvIGRlZmF1bHQpXG4gKlxuICogQHJldHVybnMgJ2RlbnknIGlmIGJsb2NrZWQsICdldmFsdWF0ZScgaWYgcGVybWl0dGVkIHRvIGZhbGwgdGhyb3VnaCB0byBkZWZhdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBldmFsdWF0ZUNsaVRvb2xQb2xpY3koXG4gIHRvb2xOYW1lOiBzdHJpbmcsXG4gIHRvb2xJbnB1dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGFjdGl2ZUVsZW1lbnRzOiBBY3RpdmVFbGVtZW50W11cbik6IENsaVRvb2xQb2xpY3lSZXN1bHQge1xuICBjb25zdCBldmFsdWF0ZWRFbGVtZW50czogUG9saWN5RXZhbHVhdGlvbkNvbnRleHRbJ2V2YWx1YXRlZEVsZW1lbnRzJ10gPSBbXTtcbiAgY29uc3QgZGVjaXNpb25DaGFpbjogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICBpZiAoIWFjdGl2ZUVsZW1lbnRzLmxlbmd0aCkge1xuICAgIGRlY2lzaW9uQ2hhaW4ucHVzaCgnTm8gYWN0aXZlIGVsZW1lbnRzIOKAlCBmYWxsIHRocm91Z2ggdG8gZGVmYXVsdCcpO1xuICAgIGxvZ2dlci5kZWJ1ZyhgW0NsaVBvbGljeV0gJHt0b29sTmFtZX06IG5vIGFjdGl2ZSBlbGVtZW50cywgZmFsbCB0aHJvdWdoIHRvIGRlZmF1bHRgKTtcbiAgICByZXR1cm4ge1xuICAgICAgYmVoYXZpb3I6ICdldmFsdWF0ZScsXG4gICAgICBwb2xpY3lDb250ZXh0OiB7IGV2YWx1YXRlZEVsZW1lbnRzLCBkZWNpc2lvbkNoYWluIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8vIEJ1aWxkIHRoZSBzdHJpbmdzIHRvIG1hdGNoIGFnYWluc3QgcGF0dGVybnNcbiAgY29uc3QgbWF0Y2hUYXJnZXRzID0gYnVpbGRNYXRjaFRhcmdldHModG9vbE5hbWUsIHRvb2xJbnB1dCk7XG4gIGNvbnN0IGVsZW1lbnRUeXBlU3VtbWFyeSA9IHN1bW1hcml6ZUVsZW1lbnRUeXBlcyhhY3RpdmVFbGVtZW50cyk7XG4gIGxvZ2dlci5kZWJ1ZyhgW0NsaVBvbGljeV0gRXZhbHVhdGluZyAke3Rvb2xOYW1lfSBhZ2FpbnN0ICR7YWN0aXZlRWxlbWVudHMubGVuZ3RofSBlbGVtZW50cyAoJHtlbGVtZW50VHlwZVN1bW1hcnl9KSwgbWF0Y2hUYXJnZXRzOiBbJHttYXRjaFRhcmdldHMuam9pbignLCAnKX1dYCk7XG5cbiAgbGV0IGFueUVsZW1lbnRIYXNBbGxvd1BhdHRlcm5zID0gZmFsc2U7XG4gIGxldCB0b29sQWxsb3dlZEJ5QW55RWxlbWVudCA9IGZhbHNlO1xuICBjb25zdCBlbGVtZW50c1dpdGhBbGxvd1BhdHRlcm5zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBhY3RpdmVFbGVtZW50cykge1xuICAgIGNvbnN0IHJlc3RyaWN0aW9ucyA9IGVsZW1lbnQubWV0YWRhdGE/LmdhdGVrZWVwZXI/LmV4dGVybmFsUmVzdHJpY3Rpb25zO1xuICAgIGNvbnN0IGRlbnlQYXR0ZXJucyA9IHJlc3RyaWN0aW9ucz8uZGVueVBhdHRlcm5zO1xuICAgIGNvbnN0IGNvbmZpcm1QYXR0ZXJucyA9IHJlc3RyaWN0aW9ucz8uY29uZmlybVBhdHRlcm5zO1xuICAgIGNvbnN0IGFsbG93UGF0dGVybnMgPSByZXN0cmljdGlvbnM/LmFsbG93UGF0dGVybnM7XG5cbiAgICBjb25zdCBoYXNSZXN0cmljdGlvbnMgPSAoQXJyYXkuaXNBcnJheShkZW55UGF0dGVybnMpICYmIGRlbnlQYXR0ZXJucy5sZW5ndGggPiAwKVxuICAgICAgfHwgKEFycmF5LmlzQXJyYXkoY29uZmlybVBhdHRlcm5zKSAmJiBjb25maXJtUGF0dGVybnMubGVuZ3RoID4gMClcbiAgICAgIHx8IChBcnJheS5pc0FycmF5KGFsbG93UGF0dGVybnMpICYmIGFsbG93UGF0dGVybnMubGVuZ3RoID4gMCk7XG5cbiAgICBpZiAoIWhhc1Jlc3RyaWN0aW9ucykge1xuICAgICAgZXZhbHVhdGVkRWxlbWVudHMucHVzaCh7IHR5cGU6IGVsZW1lbnQudHlwZSwgbmFtZTogZWxlbWVudC5uYW1lIH0pO1xuICAgICAgZGVjaXNpb25DaGFpbi5wdXNoKGAke2VsZW1lbnQudHlwZX0gJyR7ZWxlbWVudC5uYW1lfSc6IG5vIGV4dGVybmFsUmVzdHJpY3Rpb25zYCk7XG4gICAgICBsb2dnZXIuZGVidWcoYFtDbGlQb2xpY3ldICR7ZWxlbWVudC50eXBlfSAnJHtlbGVtZW50Lm5hbWV9Jzogbm8gZXh0ZXJuYWxSZXN0cmljdGlvbnMsIHNraXBwaW5nYCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBsb2dnZXIuZGVidWcoYFtDbGlQb2xpY3ldICR7ZWxlbWVudC50eXBlfSAnJHtlbGVtZW50Lm5hbWV9JzogZXZhbHVhdGluZyAoZGVueTogJHtBcnJheS5pc0FycmF5KGRlbnlQYXR0ZXJucykgPyBkZW55UGF0dGVybnMubGVuZ3RoIDogMH0sIGNvbmZpcm06ICR7QXJyYXkuaXNBcnJheShjb25maXJtUGF0dGVybnMpID8gY29uZmlybVBhdHRlcm5zLmxlbmd0aCA6IDB9LCBhbGxvdzogJHtBcnJheS5pc0FycmF5KGFsbG93UGF0dGVybnMpID8gYWxsb3dQYXR0ZXJucy5sZW5ndGggOiAwfSBwYXR0ZXJucylgKTtcblxuICAgIC8vIFN0ZXAgMTogQ2hlY2sgZGVueVBhdHRlcm5zIChoaWdoZXN0IHByaW9yaXR5KVxuICAgIGlmIChBcnJheS5pc0FycmF5KGRlbnlQYXR0ZXJucykpIHtcbiAgICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBkZW55UGF0dGVybnMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSAnc3RyaW5nJykgY29udGludWU7XG4gICAgICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIG1hdGNoVGFyZ2V0cykge1xuICAgICAgICAgIGlmIChtYXRjaGVzUGF0dGVybih0YXJnZXQsIHBhdHRlcm4pKSB7XG4gICAgICAgICAgICBldmFsdWF0ZWRFbGVtZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogZWxlbWVudC50eXBlLFxuICAgICAgICAgICAgICBuYW1lOiBlbGVtZW50Lm5hbWUsXG4gICAgICAgICAgICAgIG1hdGNoZWQ6ICdkZW55UGF0dGVybnMnLFxuICAgICAgICAgICAgICBtYXRjaGVkUGF0dGVybjogcGF0dGVybixcbiAgICAgICAgICAgICAgbWF0Y2hlZFRhcmdldDogdGFyZ2V0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkZWNpc2lvbkNoYWluLnB1c2goYERFTlk6ICR7ZWxlbWVudC50eXBlfSAnJHtlbGVtZW50Lm5hbWV9JyBkZW55UGF0dGVybiAnJHtwYXR0ZXJufScgbWF0Y2hlcyAnJHt0YXJnZXR9J2ApO1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBbQ2xpUG9saWN5XSBERU5ZOiAke2VsZW1lbnQudHlwZX0gJyR7ZWxlbWVudC5uYW1lfScgZGVueVBhdHRlcm4gJyR7cGF0dGVybn0nIG1hdGNoZWQgJyR7dGFyZ2V0fScgKCR7ZWxhcHNlZChzdGFydFRpbWUpfSlgKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGJlaGF2aW9yOiAnZGVueScsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGBEZW5pZWQgYnkgJHtlbGVtZW50LnR5cGV9ICcke2VsZW1lbnQubmFtZX0nIHBvbGljeTogcGF0dGVybiAnJHtwYXR0ZXJufScgbWF0Y2hlcyAnJHt0YXJnZXR9J2AsXG4gICAgICAgICAgICAgIHBvbGljeUNvbnRleHQ6IHsgZXZhbHVhdGVkRWxlbWVudHMsIGRlY2lzaW9uQ2hhaW4gfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3RlcCAxLjU6IENoZWNrIGNvbmZpcm1QYXR0ZXJucyAocmVxdWlyZXMgYXBwcm92YWwg4oCUIElzc3VlICMxNjYwKVxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpcm1QYXR0ZXJucykgJiYgY29uZmlybVBhdHRlcm5zLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBjb25maXJtUGF0dGVybnMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSAnc3RyaW5nJykgY29udGludWU7XG4gICAgICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIG1hdGNoVGFyZ2V0cykge1xuICAgICAgICAgIGlmIChtYXRjaGVzUGF0dGVybih0YXJnZXQsIHBhdHRlcm4pKSB7XG4gICAgICAgICAgICBldmFsdWF0ZWRFbGVtZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogZWxlbWVudC50eXBlLFxuICAgICAgICAgICAgICBuYW1lOiBlbGVtZW50Lm5hbWUsXG4gICAgICAgICAgICAgIG1hdGNoZWQ6ICdjb25maXJtUGF0dGVybnMnLFxuICAgICAgICAgICAgICBtYXRjaGVkUGF0dGVybjogcGF0dGVybixcbiAgICAgICAgICAgICAgbWF0Y2hlZFRhcmdldDogdGFyZ2V0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkZWNpc2lvbkNoYWluLnB1c2goYENPTkZJUk06ICR7ZWxlbWVudC50eXBlfSAnJHtlbGVtZW50Lm5hbWV9JyBjb25maXJtUGF0dGVybiAnJHtwYXR0ZXJufScgbWF0Y2hlcyAnJHt0YXJnZXR9J2ApO1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBbQ2xpUG9saWN5XSBDT05GSVJNOiAke2VsZW1lbnQudHlwZX0gJyR7ZWxlbWVudC5uYW1lfScgY29uZmlybVBhdHRlcm4gJyR7cGF0dGVybn0nIG1hdGNoZWQgJyR7dGFyZ2V0fScgKCR7ZWxhcHNlZChzdGFydFRpbWUpfSlgKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGJlaGF2aW9yOiAnY29uZmlybScgYXMgY29uc3QsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGBSZXF1aXJlcyBhcHByb3ZhbDogJHtlbGVtZW50LnR5cGV9ICcke2VsZW1lbnQubmFtZX0nIHBvbGljeSByZXF1aXJlcyBjb25maXJtYXRpb24gZm9yIHBhdHRlcm4gJyR7cGF0dGVybn0nYCxcbiAgICAgICAgICAgICAgY29uZmlybVNvdXJjZTogYCR7ZWxlbWVudC50eXBlfToke2VsZW1lbnQubmFtZX1gLFxuICAgICAgICAgICAgICBwb2xpY3lDb250ZXh0OiB7IGV2YWx1YXRlZEVsZW1lbnRzLCBkZWNpc2lvbkNoYWluIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFN0ZXAgMjogQ2hlY2sgYWxsb3dQYXR0ZXJuc1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFsbG93UGF0dGVybnMpICYmIGFsbG93UGF0dGVybnMubGVuZ3RoID4gMCkge1xuICAgICAgYW55RWxlbWVudEhhc0FsbG93UGF0dGVybnMgPSB0cnVlO1xuICAgICAgZWxlbWVudHNXaXRoQWxsb3dQYXR0ZXJucy5wdXNoKGAke2VsZW1lbnQudHlwZX0gJyR7ZWxlbWVudC5uYW1lfSdgKTtcbiAgICAgIGxldCBtYXRjaGVkQWxsb3cgPSBmYWxzZTtcblxuICAgICAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIGFsbG93UGF0dGVybnMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSAnc3RyaW5nJykgY29udGludWU7XG4gICAgICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIG1hdGNoVGFyZ2V0cykge1xuICAgICAgICAgIGlmIChtYXRjaGVzUGF0dGVybih0YXJnZXQsIHBhdHRlcm4pKSB7XG4gICAgICAgICAgICBldmFsdWF0ZWRFbGVtZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogZWxlbWVudC50eXBlLFxuICAgICAgICAgICAgICBuYW1lOiBlbGVtZW50Lm5hbWUsXG4gICAgICAgICAgICAgIG1hdGNoZWQ6ICdhbGxvd1BhdHRlcm5zJyxcbiAgICAgICAgICAgICAgbWF0Y2hlZFBhdHRlcm46IHBhdHRlcm4sXG4gICAgICAgICAgICAgIG1hdGNoZWRUYXJnZXQ6IHRhcmdldCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZGVjaXNpb25DaGFpbi5wdXNoKGAke2VsZW1lbnQudHlwZX0gJyR7ZWxlbWVudC5uYW1lfSc6IGFsbG93UGF0dGVybiAnJHtwYXR0ZXJufScgbWF0Y2hlcyAnJHt0YXJnZXR9J2ApO1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBbQ2xpUG9saWN5XSBBTExPVzogJHtlbGVtZW50LnR5cGV9ICcke2VsZW1lbnQubmFtZX0nIGFsbG93UGF0dGVybiAnJHtwYXR0ZXJufScgbWF0Y2hlZCAnJHt0YXJnZXR9J2ApO1xuICAgICAgICAgICAgdG9vbEFsbG93ZWRCeUFueUVsZW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgbWF0Y2hlZEFsbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2hlZEFsbG93KSBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKCFtYXRjaGVkQWxsb3cpIHtcbiAgICAgICAgZXZhbHVhdGVkRWxlbWVudHMucHVzaCh7IHR5cGU6IGVsZW1lbnQudHlwZSwgbmFtZTogZWxlbWVudC5uYW1lIH0pO1xuICAgICAgICBkZWNpc2lvbkNoYWluLnB1c2goYCR7ZWxlbWVudC50eXBlfSAnJHtlbGVtZW50Lm5hbWV9JzogYWxsb3dQYXR0ZXJucyBkZWZpbmVkIGJ1dCBubyBtYXRjaGApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBldmFsdWF0ZWRFbGVtZW50cy5wdXNoKHsgdHlwZTogZWxlbWVudC50eXBlLCBuYW1lOiBlbGVtZW50Lm5hbWUgfSk7XG4gICAgICBkZWNpc2lvbkNoYWluLnB1c2goYCR7ZWxlbWVudC50eXBlfSAnJHtlbGVtZW50Lm5hbWV9JzogZGVueVBhdHRlcm5zIGNoZWNrZWQsIG5vIG1hdGNoYCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU3RlcCAzOiBJZiBhbnkgZWxlbWVudCBoYWQgYWxsb3dQYXR0ZXJucywgdG9vbCBtdXN0IGhhdmUgbWF0Y2hlZCBhdCBsZWFzdCBvbmVcbiAgaWYgKGFueUVsZW1lbnRIYXNBbGxvd1BhdHRlcm5zICYmICF0b29sQWxsb3dlZEJ5QW55RWxlbWVudCkge1xuICAgIGNvbnN0IHJlc3RyaWN0b3JzID0gZWxlbWVudHNXaXRoQWxsb3dQYXR0ZXJucy5qb2luKCcsICcpO1xuICAgIGRlY2lzaW9uQ2hhaW4ucHVzaChgREVOWTogdG9vbCBub3QgaW4gYW55IGVsZW1lbnQgYWxsb3dsaXN0IChyZXN0cmljdGVkIGJ5OiAke3Jlc3RyaWN0b3JzfSlgKTtcbiAgICBsb2dnZXIuZGVidWcoYFtDbGlQb2xpY3ldIERFTlk6ICR7dG9vbE5hbWV9IG5vdCBpbiBhbnkgYWxsb3dsaXN0IChyZXN0cmljdGVkIGJ5OiAke3Jlc3RyaWN0b3JzfSkgKCR7ZWxhcHNlZChzdGFydFRpbWUpfSlgKTtcbiAgICByZXR1cm4ge1xuICAgICAgYmVoYXZpb3I6ICdkZW55JyxcbiAgICAgIG1lc3NhZ2U6IGBUb29sICcke3Rvb2xOYW1lfScgbm90IHBlcm1pdHRlZCBieSBhbGxvd2xpc3RzIGRlZmluZWQgaW46ICR7cmVzdHJpY3RvcnN9LiBFaXRoZXIgZGVhY3RpdmF0ZSB0aGVzZSBlbGVtZW50cyBvciBhZGQgYWxsb3dQYXR0ZXJucyB0byBtYXRjaCB0aGlzIHRvb2wuYCxcbiAgICAgIHBvbGljeUNvbnRleHQ6IHsgZXZhbHVhdGVkRWxlbWVudHMsIGRlY2lzaW9uQ2hhaW4gfSxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGFueUVsZW1lbnRIYXNBbGxvd1BhdHRlcm5zKSB7XG4gICAgZGVjaXNpb25DaGFpbi5wdXNoKCdUb29sIG1hdGNoZWQgYWxsb3dsaXN0IOKAlCBmYWxsIHRocm91Z2ggdG8gZGVmYXVsdCcpO1xuICAgIGxvZ2dlci5kZWJ1ZyhgW0NsaVBvbGljeV0gJHt0b29sTmFtZX06IG1hdGNoZWQgYWxsb3dsaXN0LCBmYWxsIHRocm91Z2ggdG8gZGVmYXVsdCAoJHtlbGFwc2VkKHN0YXJ0VGltZSl9KWApO1xuICB9IGVsc2Uge1xuICAgIGRlY2lzaW9uQ2hhaW4ucHVzaCgnTm8gYWxsb3dQYXR0ZXJucyBkZWZpbmVkIOKAlCBmYWxsIHRocm91Z2ggdG8gZGVmYXVsdCAoUGhhc2UgMSBiZWhhdmlvciknKTtcbiAgICBsb2dnZXIuZGVidWcoYFtDbGlQb2xpY3ldICR7dG9vbE5hbWV9OiBubyBhbGxvd1BhdHRlcm5zIGRlZmluZWQsIGZhbGwgdGhyb3VnaCB0byBkZWZhdWx0ICgke2VsYXBzZWQoc3RhcnRUaW1lKX0pYCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJlaGF2aW9yOiAnZXZhbHVhdGUnLFxuICAgIHBvbGljeUNvbnRleHQ6IHsgZXZhbHVhdGVkRWxlbWVudHMsIGRlY2lzaW9uQ2hhaW4gfSxcbiAgfTtcbn1cblxuLyoqIEZvcm1hdCBlbGFwc2VkIHRpbWUgc2luY2Ugc3RhcnRUaW1lIGluIG1pbGxpc2Vjb25kcy4gKi9cbmZ1bmN0aW9uIGVsYXBzZWQoc3RhcnRUaW1lOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7KHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lKS50b0ZpeGVkKDIpfW1zYDtcbn1cblxuLyoqIFN1bW1hcml6ZSBhY3RpdmUgZWxlbWVudCB0eXBlcyBmb3IgdGhlIGVudHJ5IGxvZyAoZS5nLiwgXCIzIHBlcnNvbmFzLCAyIHNraWxscywgMSBlbnNlbWJsZVwiKS4gKi9cbmZ1bmN0aW9uIHN1bW1hcml6ZUVsZW1lbnRUeXBlcyhlbGVtZW50czogQWN0aXZlRWxlbWVudFtdKTogc3RyaW5nIHtcbiAgY29uc3QgY291bnRzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgZm9yIChjb25zdCBlbCBvZiBlbGVtZW50cykge1xuICAgIGNvdW50cy5zZXQoZWwudHlwZSwgKGNvdW50cy5nZXQoZWwudHlwZSkgPz8gMCkgKyAxKTtcbiAgfVxuICByZXR1cm4gWy4uLmNvdW50cy5lbnRyaWVzKCldLm1hcCgoW3R5cGUsIGNvdW50XSkgPT4gYCR7Y291bnR9ICR7dHlwZX0ke2NvdW50ID4gMSA/ICdzJyA6ICcnfWApLmpvaW4oJywgJyk7XG59XG5cbi8qKlxuICogTWF4aW11bSBpbnB1dCBsZW5ndGggZm9yIHBhdHRlcm4gbWF0Y2hpbmcgdGFyZ2V0cy5cbiAqIFRydW5jYXRlcyBsb25nIGNvbW1hbmRzL3BhdGhzIHRvIHByZXZlbnQgRG9TIHZpYSBwYXRob2xvZ2ljYWwgZ2xvYiBtYXRjaGluZy5cbiAqL1xuY29uc3QgTUFYX01BVENIX0lOUFVUX0xFTkdUSCA9IDEwMDA7XG5cbi8qKlxuICogU3RyaXAgbnVsbCBieXRlcywgY29udHJvbCBjaGFyYWN0ZXJzLCBhbmQgbm9ybWFsaXplIFVuaWNvZGUgZm9yIG1hdGNoIGlucHV0LlxuICogUHJlc2VydmVzIHRhYiAoXFx4MDkpLCBuZXdsaW5lIChcXHgwQSksIGNhcnJpYWdlIHJldHVybiAoXFx4MEQpLlxuICogUHJldmVudHMgcGF0dGVybiBieXBhc3MgdmlhIGluamVjdGVkIGNvbnRyb2wgY2hhcmFjdGVycyBvciBVbmljb2RlXG4gKiBub3JtYWxpemF0aW9uIGF0dGFja3MgKGUuZy4sIGNvbWJpbmluZyBjaGFyYWN0ZXJzIHRoYXQgbG9vayBsaWtlIEFTQ0lJKS5cbiAqL1xuZnVuY3Rpb24gc2FuaXRpemVNYXRjaElucHV0KGlucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBOb3JtYWxpemUgVW5pY29kZSB0byBORkMgKGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uIHRoZW4gY29tcG9zaXRpb24pLlxuICAvLyBUaGlzIHByZXZlbnRzIGJ5cGFzcyB2aWEgY29tYmluaW5nIGNoYXJhY3RlcnMgb3IgYWx0ZXJuYXRpdmUgcmVwcmVzZW50YXRpb25zLlxuICBjb25zdCBub3JtYWxpemVkID0gaW5wdXQubm9ybWFsaXplKCdORkMnKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRyb2wtcmVnZXhcbiAgcmV0dXJuIG5vcm1hbGl6ZWQucmVwbGFjZSgvW1xceDAwLVxceDA4XFx4MEJcXHgwQ1xceDBFLVxceDFGXFx4N0YtXFx4OUZdL2csICcnKTtcbn1cblxuLyoqXG4gKiBCdWlsZCBtYXRjaCB0YXJnZXQgc3RyaW5ncyBmb3IgYSB0b29sIGNhbGwuXG4gKlxuICogRm9yIEJhc2g6IG1hdGNoZXMgYWdhaW5zdCB0aGUgdG9vbCBuYW1lIGFuZCBcIkJhc2g6PGNvbW1hbmQ+XCJcbiAqIEZvciBFZGl0L1dyaXRlOiBtYXRjaGVzIGFnYWluc3QgdGhlIHRvb2wgbmFtZSBhbmQgXCJFZGl0OjxmaWxlX3BhdGg+XCJcbiAqIEZvciBNQ1AgdG9vbHM6IG1hdGNoZXMgYWdhaW5zdCB0aGUgZnVsbCB0b29sIG5hbWVcbiAqXG4gKiBJbnB1dHMgYXJlIHRydW5jYXRlZCB0byBNQVhfTUFUQ0hfSU5QVVRfTEVOR1RIIGFuZCBzYW5pdGl6ZWQgdG8gcHJldmVudFxuICogRG9TIHZpYSBwYXRob2xvZ2ljYWwgZ2xvYiBtYXRjaGluZyBhbmQgcGF0dGVybiBieXBhc3MgdmlhIGNvbnRyb2wgY2hhcnMuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTWF0Y2hUYXJnZXRzKFxuICB0b29sTmFtZTogc3RyaW5nLFxuICB0b29sSW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHRhcmdldHMgPSBbdG9vbE5hbWVdO1xuXG4gIGlmICh0b29sTmFtZSA9PT0gJ0Jhc2gnICYmIHR5cGVvZiB0b29sSW5wdXQuY29tbWFuZCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBzYW5pdGl6ZWQgPSBzYW5pdGl6ZU1hdGNoSW5wdXQodG9vbElucHV0LmNvbW1hbmQuc2xpY2UoMCwgTUFYX01BVENIX0lOUFVUX0xFTkdUSCkpO1xuICAgIHRhcmdldHMucHVzaChgQmFzaDoke3Nhbml0aXplZH1gKTtcbiAgfSBlbHNlIGlmICgodG9vbE5hbWUgPT09ICdFZGl0JyB8fCB0b29sTmFtZSA9PT0gJ1dyaXRlJykgJiYgdHlwZW9mIHRvb2xJbnB1dC5maWxlX3BhdGggPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3Qgc2FuaXRpemVkID0gc2FuaXRpemVNYXRjaElucHV0KHRvb2xJbnB1dC5maWxlX3BhdGguc2xpY2UoMCwgTUFYX01BVENIX0lOUFVUX0xFTkdUSCkpO1xuICAgIHRhcmdldHMucHVzaChgJHt0b29sTmFtZX06JHtzYW5pdGl6ZWR9YCk7XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0cztcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"AgentActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/AgentActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIxF,qBAAa,uBAAwB,SAAQ,sBAAuB,YAAW,yBAAyB;IAC1F,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,YAAY;IAIvD;;;;;OAKG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAuLjF;;;;;OAKG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAUpD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IA2B/C;;;;OAIG;IACH,OAAO,CAAC,cAAc;IA8BtB;;;OAGG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAmJ5D"}
1
+ {"version":3,"file":"AgentActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/AgentActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIxF,qBAAa,uBAAwB,SAAQ,sBAAuB,YAAW,yBAAyB;IAC1F,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,YAAY;IAIvD;;;;;OAKG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IA4LjF;;;;;OAKG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAUpD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IA2B/C;;;;OAIG;IACH,OAAO,CAAC,cAAc;IA8BtB;;;OAGG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAmJ5D"}
@@ -172,6 +172,10 @@ export class AgentActivationStrategy extends BaseActivationStrategy {
172
172
  if (restrictionWarning) {
173
173
  parts.push(restrictionWarning);
174
174
  }
175
+ const gatekeeperWarning = this.formatGatekeeperValidityWarning(agent.metadata);
176
+ if (gatekeeperWarning) {
177
+ parts.push(gatekeeperWarning);
178
+ }
175
179
  return {
176
180
  content: [{
177
181
  type: "text",
@@ -386,4 +390,4 @@ export class AgentActivationStrategy extends BaseActivationStrategy {
386
390
  };
387
391
  }
388
392
  }
389
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWdlbnRBY3RpdmF0aW9uU3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGFuZGxlcnMvc3RyYXRlZ2llcy9BZ2VudEFjdGl2YXRpb25TdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBR0gsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsc0JBQXNCO0lBQ3BDO0lBQTdCLFlBQTZCLFlBQTBCO1FBQ3JELEtBQUssRUFBRSxDQUFDO1FBRG1CLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBRXZELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBWSxFQUFFLE9BQTZCO1FBQ3hELGlFQUFpRTtRQUNqRSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUUzQixxQ0FBcUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsT0FBTyxFQUFFLElBQUksSUFBSSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEQsd0NBQXdDO1FBQ3hDLCtEQUErRDtRQUMvRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxF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QUUsQ0FBQyxDQUFDO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFFLEtBQWEsQ0FBQyxZQUFZLElBQUssS0FBYSxDQUFDLFVBQVUsRUFBRSxZQUFZLElBQUksMkJBQTJCLENBQUMsQ0FBQztRQUVwSCxJQUFLLEtBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMvQixPQUFPLENBQUMsSUFBSSxDQUFFLEtBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUksS0FBYSxDQUFDLEtBQUssQ0FBQztRQUN4QyxJQUFJLFVBQVUsRUFBRSxLQUFLLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztZQUN2QyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO2dCQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUM7b0JBQ1IsSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2lCQUN6QixDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWdlbnRBY3RpdmF0aW9uU3RyYXRlZ3kgLSBTdHJhdGVneSBmb3IgYWdlbnQgZWxlbWVudCBhY3RpdmF0aW9uXG4gKlxuICogSGFuZGxlcyBhY3RpdmF0aW9uLCBkZWFjdGl2YXRpb24sIGFuZCBzdGF0dXMgdHJhY2tpbmcgZm9yIGFnZW50IGVsZW1lbnRzLlxuICogVXNlcyBcImV4ZWN1dGlvblwiIHN0cmF0ZWd5IHdpdGggc3RhdGUgZmlsZSBtYW5hZ2VtZW50LlxuICpcbiAqIFNFQ1VSSVRZICYgQ09OU0lTVEVOQ1kgSU1QUk9WRU1FTlRTOlxuICogLSBTZWN1cml0eSBsb2dnaW5nIGZvciBhY3RpdmF0aW9uIGVycm9ycyAoSXNzdWUgIzI0IC0gTWVkaXVtIFByaW9yaXR5KVxuICogLSBBY3RpdmF0aW9uIHJvbGxiYWNrIG9uIGNyaXRpY2FsIGZhaWx1cmVzIChJc3N1ZSAjMjQgLSBNZWRpdW0gUHJpb3JpdHkpXG4gKiAtIE9wdGltaXN0aWMgbG9ja2luZyBmb3Igc3RhdGUgdXBkYXRlcyAoSXNzdWUgIzI0IC0gTWVkaXVtIFByaW9yaXR5KVxuICovXG5cbmltcG9ydCB7IEFnZW50TWFuYWdlciB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL2FnZW50cy9BZ2VudE1hbmFnZXIuanMnO1xuaW1wb3J0IHsgQmFzZUFjdGl2YXRpb25TdHJhdGVneSB9IGZyb20gJy4vQmFzZUFjdGl2YXRpb25TdHJhdGVneS5qcyc7XG5pbXBvcnQgeyBFbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5LCBNQ1BSZXNwb25zZSB9IGZyb20gJy4vRWxlbWVudEFjdGl2YXRpb25TdHJhdGVneS5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuLi8uLi9zZWN1cml0eS9zZWN1cml0eU1vbml0b3IuanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcblxuZXhwb3J0IGNsYXNzIEFnZW50QWN0aXZhdGlvblN0cmF0ZWd5IGV4dGVuZHMgQmFzZUFjdGl2YXRpb25TdHJhdGVneSBpbXBsZW1lbnRzIEVsZW1lbnRBY3RpdmF0aW9uU3RyYXRlZ3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFnZW50TWFuYWdlcjogQWdlbnRNYW5hZ2VyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSBhbiBhZ2VudCB3aXRoIGV4ZWN1dGlvbiBzdHJhdGVneVxuICAgKiBFeGVjdXRlcyBhZ2VudCBsb2dpYywgdXBkYXRlcyBzdGF0ZSBmaWxlLCBhbmQgdHJhY2tzIGFjdGl2YXRpb25cbiAgICpcbiAgICogSU1QUk9WRU1FTlQ6IEVuaGFuY2VkIGVycm9yIGhhbmRsaW5nIHdpdGggc2VjdXJpdHkgbG9nZ2luZyBhbmQgcm9sbGJhY2sgKElzc3VlICMyNClcbiAgICovXG4gIGFzeW5jIGFjdGl2YXRlKG5hbWU6IHN0cmluZywgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPE1DUFJlc3BvbnNlPiB7XG4gICAgLy8gVXNlIHRoZSBtYW5hZ2VyJ3MgYWN0aXZhdGlvbiBtZXRob2Qgd2hpY2ggdHJhY2tzIGFjdGl2ZSBhZ2VudHNcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFnZW50TWFuYWdlci5hY3RpdmF0ZUFnZW50KG5hbWUpO1xuXG4gICAgaWYgKCFyZXN1bHQuc3VjY2VzcyB8fCAhcmVzdWx0LmFnZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVOb3RGb3VuZFJlc3BvbnNlKG5hbWUsICdBZ2VudCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGFnZW50ID0gcmVzdWx0LmFnZW50O1xuXG4gICAgLy8gRXh0cmFjdCBvcHRpb25hbCBnb2FsIGZyb20gY29udGV4dFxuICAgIGNvbnN0IGdvYWwgPSBjb250ZXh0Py5nb2FsIHx8IGNvbnRleHQ/LmdvYWxzPy5bMF07XG5cbiAgICAvLyBFeGVjdXRlIGFnZW50IGxvZ2ljIChnb2Fscy9kZWNpc2lvbnMpXG4gICAgLy8gRm9yIG5vdywgdGhpcyBpcyBhIHNpZGUtZWZmZWN0IGFjdGl2YXRpb24gdGhhdCB1cGRhdGVzIHN0YXRlXG4gICAgY29uc3Qgc3RhdGUgPSBhZ2VudC5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IGV4ZWN1dGlvblN1bW1hcnk6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBUcmFjayBpZiB3ZSBuZWVkIHRvIHJvbGxiYWNrIGFjdGl2YXRpb24gb24gY3JpdGljYWwgZmFpbHVyZVxuICAgIGxldCBjcml0aWNhbEZhaWx1cmUgPSBmYWxzZTtcblxuICAgIGlmIChnb2FsKSB7XG4gICAgICAvLyBJZiBnb2FsIHByb3ZpZGVkLCBhZGQgaXQgdG8gdGhlIGFnZW50J3MgZ29hbHNcbiAgICAgIHRyeSB7XG4gICAgICAgIGFnZW50LmFkZEdvYWwoe1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiBnb2FsLmRlc2NyaXB0aW9uIHx8IGdvYWwsXG4gICAgICAgICAgcHJpb3JpdHk6IGdvYWwucHJpb3JpdHkgfHwgJ21lZGl1bScsXG4gICAgICAgICAgaW1wb3J0YW5jZTogZ29hbC5pbXBvcnRhbmNlIHx8IDUsXG4gICAgICAgICAgdXJnZW5jeTogZ29hbC51cmdlbmN5IHx8IDVcbiAgICAgICAgfSk7XG4gICAgICAgIGV4ZWN1dGlvblN1bW1hcnkucHVzaChgR29hbCBhZGRlZDogJHtnb2FsLmRlc2NyaXB0aW9uIHx8IGdvYWx9YCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBGSVg6IEVuaGFuY2VkIGVycm9yIGxvZ2dpbmcgd2l0aCBzZWN1cml0eSBtb25pdG9yaW5nIChJc3N1ZSAjMjQpXG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ0NvdWxkIG5vdCBhZGQgZ29hbCc7XG5cbiAgICAgICAgLy8gTG9nIHRvIHNlY3VyaXR5IG1vbml0b3IgZm9yIGF1ZGl0IHRyYWlsXG4gICAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgICB0eXBlOiAnQUdFTlRfQUNUSVZBVElPTl9GQUlMRUQnLFxuICAgICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgICBzb3VyY2U6ICdBZ2VudEFjdGl2YXRpb25TdHJhdGVneS5hY3RpdmF0ZScsXG4gICAgICAgICAgZGV0YWlsczogYEZhaWxlZCB0byBhZGQgZ29hbCBkdXJpbmcgYWdlbnQgYWN0aXZhdGlvbjogJHtlcnJvck1lc3NhZ2V9YCxcbiAgICAgICAgICBhZGRpdGlvbmFsRGF0YToge1xuICAgICAgICAgICAgYWdlbnROYW1lOiBuYW1lLFxuICAgICAgICAgICAgZ29hbERlc2NyaXB0aW9uOiBnb2FsLmRlc2NyaXB0aW9uIHx8IGdvYWwsXG4gICAgICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBMb2cgdG8gc3RhbmRhcmQgbG9nZ2VyIGZvciBkZWJ1Z2dpbmdcbiAgICAgICAgbG9nZ2VyLndhcm4oYEdvYWwgYWRkaXRpb24gZmFpbGVkIGR1cmluZyBhZ2VudCBhY3RpdmF0aW9uYCwge1xuICAgICAgICAgIGFnZW50TmFtZTogbmFtZSxcbiAgICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGV4ZWN1dGlvblN1bW1hcnkucHVzaChgTm90ZTogJHtlcnJvck1lc3NhZ2V9YCk7XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoaXMgaXMgYSBjcml0aWNhbCBmYWlsdXJlIHJlcXVpcmluZyByb2xsYmFja1xuICAgICAgICAvLyBDcml0aWNhbCBmYWlsdXJlczogdmFsaWRhdGlvbiBlcnJvcnMgdGhhdCBpbmRpY2F0ZSBiYWQgaW5wdXQgb3Igc2VjdXJpdHkgaXNzdWVzXG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIChcbiAgICAgICAgICBlcnJvck1lc3NhZ2UuaW5jbHVkZXMoJ2hhcm1mdWwgY29udGVudCcpIHx8XG4gICAgICAgICAgZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCdzZWN1cml0eScpIHx8XG4gICAgICAgICAgZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCdNYXhpbXVtIG51bWJlciBvZiBnb2FscycpXG4gICAgICAgICkpIHtcbiAgICAgICAgICBjcml0aWNhbEZhaWx1cmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRklYOiBSb2xsYmFjayBhY3RpdmF0aW9uIG9uIGNyaXRpY2FsIGZhaWx1cmVzIChJc3N1ZSAjMjQpXG4gICAgaWYgKGNyaXRpY2FsRmFpbHVyZSkge1xuICAgICAgbG9nZ2VyLmVycm9yKGBDcml0aWNhbCBmYWlsdXJlIGR1cmluZyBhZ2VudCBhY3RpdmF0aW9uLCByb2xsaW5nIGJhY2tgLCB7XG4gICAgICAgIGFnZW50TmFtZTogbmFtZVxuICAgICAgfSk7XG5cbiAgICAgIC8vIERlYWN0aXZhdGUgdGhlIGFnZW50IHRvIHJvbGxiYWNrXG4gICAgICBhd2FpdCB0aGlzLmFnZW50TWFuYWdlci5kZWFjdGl2YXRlQWdlbnQobmFtZSk7XG5cbiAgICAgIC8vIExvZyBzZWN1cml0eSBldmVudCBmb3Igcm9sbGJhY2tcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ0FHRU5UX0FDVElWQVRJT05fUk9MTEJBQ0snLFxuICAgICAgICBzZXZlcml0eTogJ0hJR0gnLFxuICAgICAgICBzb3VyY2U6ICdBZ2VudEFjdGl2YXRpb25TdHJhdGVneS5hY3RpdmF0ZScsXG4gICAgICAgIGRldGFpbHM6IGBBZ2VudCBhY3RpdmF0aW9uIHJvbGxlZCBiYWNrIGR1ZSB0byBjcml0aWNhbCBmYWlsdXJlYCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IHtcbiAgICAgICAgICBhZ2VudE5hbWU6IG5hbWUsXG4gICAgICAgICAgcmVhc29uOiAnQ3JpdGljYWwgZ29hbCBhZGRpdGlvbiBmYWlsdXJlJ1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gUmV0dXJuIGVycm9yIHJlc3BvbnNlXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IGDinYwgQWdlbnQgYWN0aXZhdGlvbiBmYWlsZWQgYW5kIHdhcyByb2xsZWQgYmFja1xcblxcbkNyaXRpY2FsIGVycm9yIG9jY3VycmVkIGR1cmluZyBnb2FsIGFkZGl0aW9uLiBQbGVhc2UgcmV2aWV3IHRoZSBnb2FsIHBhcmFtZXRlcnMgYW5kIHRyeSBhZ2Fpbi5gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEZJWDogT3B0aW1pc3RpYyBsb2NraW5nIGZvciBzdGF0ZSB1cGRhdGVzIChJc3N1ZSAjMjQpXG4gICAgLy8gVXNlIHB1YmxpYyBwZXJzaXN0U3RhdGUgQVBJIHdoaWNoIGltcGxlbWVudHMgT3B0aW9uIEMgcGF0dGVybiAoSXNzdWUgIzEyMylcbiAgICBjb25zdCBmaWxlbmFtZSA9IGFnZW50Lm1ldGFkYXRhLm5hbWU7XG5cbiAgICB0cnkge1xuICAgICAgLy8gU2F2ZSBzdGF0ZSB3aXRoIGF0b21pYyB3cml0ZSBhbmQgcHJvcGVyIHZlcnNpb24gaGFuZGxpbmdcbiAgICAgIGF3YWl0IHRoaXMuYWdlbnRNYW5hZ2VyLnBlcnNpc3RTdGF0ZShmaWxlbmFtZSk7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IGFnZW50LmdldFN0YXRlKCk7XG4gICAgICBsb2dnZXIuZGVidWcoYEFnZW50IHN0YXRlIHBlcnNpc3RlZCBzdWNjZXNzZnVsbHlgLCB7XG4gICAgICAgIGFnZW50TmFtZTogbmFtZSxcbiAgICAgICAgc2Vzc2lvbkNvdW50OiBjdXJyZW50U3RhdGUuc2Vzc2lvbkNvdW50LFxuICAgICAgICBnb2FsQ291bnQ6IGN1cnJlbnRTdGF0ZS5nb2Fscy5sZW5ndGhcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTdGF0ZSBzYXZlIGZhaWx1cmUgLSBsb2cgYW5kIGNvbnRpbnVlIChhZ2VudCBpcyBzdGlsbCBhY3RpdmF0ZWQpXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJztcblxuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnTUVNT1JZX1NBVkVfRkFJTEVEJywgLy8gVXNpbmcgZXhpc3RpbmcgZXZlbnQgdHlwZSBmb3Igc3RhdGUgc2F2ZSBmYWlsdXJlc1xuICAgICAgICBzZXZlcml0eTogJ01FRElVTScsXG4gICAgICAgIHNvdXJjZTogJ0FnZW50QWN0aXZhdGlvblN0cmF0ZWd5LmFjdGl2YXRlJyxcbiAgICAgICAgZGV0YWlsczogYEZhaWxlZCB0byBzYXZlIGFnZW50IHN0YXRlIGFmdGVyIGFjdGl2YXRpb246ICR7ZXJyb3JNZXNzYWdlfWAsXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhOiB7XG4gICAgICAgICAgYWdlbnROYW1lOiBuYW1lLFxuICAgICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2VcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGxvZ2dlci53YXJuKGBBZ2VudCBzdGF0ZSBzYXZlIGZhaWxlZCwgYnV0IGFnZW50IHJlbWFpbnMgYWN0aXZhdGVkYCwge1xuICAgICAgICBhZ2VudE5hbWU6IG5hbWUsXG4gICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2VcbiAgICAgIH0pO1xuXG4gICAgICBleGVjdXRpb25TdW1tYXJ5LnB1c2goYFdhcm5pbmc6IFN0YXRlIHBlcnNpc3RlbmNlIGZhaWxlZCAtICR7ZXJyb3JNZXNzYWdlfWApO1xuICAgIH1cblxuICAgIC8vIEJ1aWxkIGV4ZWN1dGlvbiByZXNwb25zZVxuICAgIGNvbnN0IHBhcnRzID0gW1xuICAgICAgZ29hbFxuICAgICAgICA/IGDinIUgQWdlbnQgYWN0aXZhdGVkIGFuZCBleGVjdXRlZCBnb2FsOiAke2dvYWwuZGVzY3JpcHRpb24gfHwgZ29hbH1gXG4gICAgICAgIDogYOKchSBBZ2VudCBhY3RpdmF0ZWQgc3VjY2Vzc2Z1bGx5YCxcbiAgICAgICcnXG4gICAgXTtcblxuICAgIC8vIEFkZCBvdXRjb21lIGRlc2NyaXB0aW9uIGZvciB0ZXN0IGV4cGVjdGF0aW9uc1xuICAgIGlmIChnb2FsKSB7XG4gICAgICBwYXJ0cy5wdXNoKCdBZ2VudCBhY3RpdmF0ZXMgd2l0aCBpbml0aWFsIGdvYWxzIGxvYWRlZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0cy5wdXNoKCdBZ2VudCBiZWNvbWVzIGFjdGl2ZSwgaW5jcmVtZW50cyBzZXNzaW9uIGNvdW50Jyk7XG4gICAgfVxuICAgIHBhcnRzLnB1c2goJycpO1xuXG4gICAgcGFydHMucHVzaChgKipTZXNzaW9uKio6ICMke3N0YXRlLnNlc3Npb25Db3VudCArIDF9YCk7XG4gICAgcGFydHMucHVzaCguLi50aGlzLmZvcm1hdFYxRmllbGRzKGFnZW50Lm1ldGFkYXRhIGFzIGFueSwgYWdlbnQuZXh0ZW5zaW9ucyBhcyBhbnkpKTtcblxuICAgIGlmIChleGVjdXRpb25TdW1tYXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcnRzLnB1c2goJycpO1xuICAgICAgcGFydHMucHVzaCgnKipFeGVjdXRpb24gU3VtbWFyeSoqOicpO1xuICAgICAgZXhlY3V0aW9uU3VtbWFyeS5mb3JFYWNoKGxpbmUgPT4gcGFydHMucHVzaChgLSAke2xpbmV9YCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUdvYWxzID0gYWdlbnQuZ2V0U3RhdGUoKS5nb2Fscy5maWx0ZXIoKGc6IHsgc3RhdHVzOiBzdHJpbmcgfSkgPT4gZy5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycpO1xuICAgIGlmIChhY3RpdmVHb2Fscy5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJ0cy5wdXNoKCcnKTtcbiAgICAgIHBhcnRzLnB1c2goYCoqQWN0aXZlIEdvYWxzKio6ICR7YWN0aXZlR29hbHMubGVuZ3RofWApO1xuICAgIH1cblxuICAgIHBhcnRzLnB1c2goJycpO1xuICAgIHBhcnRzLnB1c2goJ0FnZW50IGV4ZWN1dGlvbiBjb21wbGV0ZWQnKTtcblxuICAgIC8vIElzc3VlICM2NDI6IEZhaWwtc2FmZSB3YXJuaW5nIGZvciBDTEkgcmVzdHJpY3Rpb25zXG4gICAgY29uc3QgcmVzdHJpY3Rpb25XYXJuaW5nID0gdGhpcy5mb3JtYXRSZXN0cmljdGlvbldhcm5pbmcoYWdlbnQubWV0YWRhdGEgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gICAgaWYgKHJlc3RyaWN0aW9uV2FybmluZykge1xuICAgICAgcGFydHMucHVzaChyZXN0cmljdGlvbldhcm5pbmcpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogcGFydHMuam9pbignXFxuJylcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWFjdGl2YXRlIGFuIGFnZW50XG4gICAqXG4gICAqIEB0aHJvd3Mge0VsZW1lbnROb3RGb3VuZEVycm9yfSBXaGVuIGFnZW50IGRvZXMgbm90IGV4aXN0XG4gICAqIEBzZWUgSXNzdWUgIzI3NSAtIEhhbmRsZXJzIHJldHVybiBzdWNjZXNzPXRydWUgZm9yIG1pc3NpbmcgZWxlbWVudHNcbiAgICovXG4gIGFzeW5jIGRlYWN0aXZhdGUobmFtZTogc3RyaW5nKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWdlbnRNYW5hZ2VyLmRlYWN0aXZhdGVBZ2VudChuYW1lKTtcblxuICAgIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHRoaXMudGhyb3dOb3RGb3VuZEVycm9yKG5hbWUsICdBZ2VudCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZVN1Y2Nlc3NSZXNwb25zZShyZXN1bHQubWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBhY3RpdmUgYWdlbnRzXG4gICAqL1xuICBhc3luYyBnZXRBY3RpdmVFbGVtZW50cygpOiBQcm9taXNlPE1DUFJlc3BvbnNlPiB7XG4gICAgLy8gVXNlIHRoZSBtYW5hZ2VyJ3MgbWV0aG9kIHRvIGdldCBhY3RpdmUgYWdlbnRzIGRpcmVjdGx5XG4gICAgY29uc3QgYWN0aXZlQWdlbnRzID0gYXdhaXQgdGhpcy5hZ2VudE1hbmFnZXIuZ2V0QWN0aXZlQWdlbnRzKCk7XG5cbiAgICBpZiAoYWN0aXZlQWdlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICB0ZXh0OiBcIvCfpJYgTm8gYWN0aXZlIGFnZW50c1wiXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGFnZW50TGlzdCA9IGFjdGl2ZUFnZW50cy5tYXAoYSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZSA9IGEuZ2V0U3RhdGUoKTtcbiAgICAgIGNvbnN0IGdvYWxzID0gc3RhdGUuZ29hbHM/Lmxlbmd0aCB8fCAwO1xuICAgICAgcmV0dXJuIGDwn6SWICR7YS5tZXRhZGF0YS5uYW1lfSAoJHtnb2Fsc30gYWN0aXZlIGdvYWxzKWA7XG4gICAgfSkuam9pbignXFxuJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGBBY3RpdmUgYWdlbnRzOlxcbiR7YWdlbnRMaXN0fWBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgdjEgYWdlbnQgZmllbGRzIChzcGVjaWFsaXphdGlvbnMsIGRlY2lzaW9uRnJhbWV3b3JrLCByaXNrVG9sZXJhbmNlKVxuICAgKiBmb3IgZGlzcGxheS4gT25seSBpbmNsdWRlcyBmaWVsZHMgdGhhdCBhcmUgZXhwbGljaXRseSBzZXQg4oCUIGF2b2lkcyBzaG93aW5nXG4gICAqIHBoYW50b20gZGVmYXVsdHMgb24gdjIgYWdlbnRzLiAoSXNzdWUgIzc0OSlcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0VjFGaWVsZHMoXG4gICAgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgZXh0ZW5zaW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogc3RyaW5nW10ge1xuICAgIC8vIElzc3VlICM3NDk6IFYyIGFnZW50cyBzaG91bGQgbm90IHNob3cgVjEgZGVmYXVsdHMuXG4gICAgLy8gYGdvYWxgIChzaW5ndWxhciwgQWdlbnRHb2FsQ29uZmlnKSBpcyB0aGUgZGVmaW5pdGl2ZSBWMiBtYXJrZXIg4oCUIGl0J3NcbiAgICAvLyByZXF1aXJlZCBvbiBBZ2VudE1ldGFkYXRhVjIgYW5kIG5ldmVyIHByZXNlbnQgb24gVjEgYWdlbnRzICh3aGljaCB1c2VcbiAgICAvLyBgZ29hbHNgIHBsdXJhbCkuIFRoZSBBZ2VudCBjb25zdHJ1Y3RvciBhbHdheXMgZGVmYXVsdHMgZGVjaXNpb25GcmFtZXdvcmtcbiAgICAvLyBhbmQgcmlza1RvbGVyYW5jZSwgc28gY2hlY2tpbmcgdHJ1dGhpbmVzcyBhbG9uZSBzaG93cyBwaGFudG9tIHZhbHVlcy5cbiAgICBpZiAobWV0YWRhdGEuZ29hbCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHNwZWNzID0gbWV0YWRhdGEuc3BlY2lhbGl6YXRpb25zO1xuICAgIGNvbnN0IGZyYW1ld29yayA9IGV4dGVuc2lvbnM/LmRlY2lzaW9uRnJhbWV3b3JrID8/IG1ldGFkYXRhLmRlY2lzaW9uRnJhbWV3b3JrO1xuICAgIGNvbnN0IHJpc2sgPSBleHRlbnNpb25zPy5yaXNrVG9sZXJhbmNlID8/IG1ldGFkYXRhLnJpc2tUb2xlcmFuY2U7XG5cbiAgICBpZiAoc3BlY3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxpbmVzLnB1c2goYCoqU3BlY2lhbGl6YXRpb25zKio6ICR7c3BlY3Muam9pbignLCAnKX1gKTtcbiAgICB9XG4gICAgaWYgKGZyYW1ld29yaykge1xuICAgICAgbGluZXMucHVzaChgKipEZWNpc2lvbiBGcmFtZXdvcmsqKjogJHtmcmFtZXdvcmt9YCk7XG4gICAgfVxuICAgIGlmIChyaXNrKSB7XG4gICAgICBsaW5lcy5wdXNoKGAqKlJpc2sgVG9sZXJhbmNlKio6ICR7cmlza31gKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhbiBhZ2VudFxuICAgKiBFeHRyYWN0ZWQgZnJvbSBFbGVtZW50Q1JVREhhbmRsZXIudHMgbGluZXMgNzMwLTc3MFxuICAgKi9cbiAgYXN5bmMgZ2V0RWxlbWVudERldGFpbHMobmFtZTogc3RyaW5nKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIC8vIFVzZSBmbGV4aWJsZSBmaW5kaW5nIHRvIHN1cHBvcnQgYm90aCBkaXNwbGF5IG5hbWUgYW5kIGZpbGVuYW1lXG4gICAgY29uc3QgYWxsQWdlbnRzID0gYXdhaXQgdGhpcy5hZ2VudE1hbmFnZXIubGlzdCgpO1xuICAgIGNvbnN0IGFnZW50ID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudEZsZXhpYmx5KG5hbWUsIGFsbEFnZW50cyk7XG4gICAgaWYgKCFhZ2VudCkge1xuICAgICAgdGhpcy50aHJvd05vdEZvdW5kRXJyb3IobmFtZSwgJ0FnZW50Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0YWRhdGEgPSBhZ2VudC5tZXRhZGF0YSBhcyBhbnk7XG5cbiAgICBjb25zdCBkZXRhaWxzID0gW1xuICAgICAgYPCfpJYgKioke2FnZW50Lm1ldGFkYXRhLm5hbWV9KipgLFxuICAgICAgYCR7YWdlbnQubWV0YWRhdGEuZGVzY3JpcHRpb259YCxcbiAgICAgIGBgLFxuICAgICAgYCoqU3RhdHVzKio6ICR7YWdlbnQuZ2V0U3RhdHVzKCl9YFxuICAgIF07XG5cbiAgICBkZXRhaWxzLnB1c2goLi4udGhpcy5mb3JtYXRWMUZpZWxkcyhtZXRhZGF0YSkpO1xuXG4gICAgLy8gVjIgZmllbGRzXG4gICAgaWYgKG1ldGFkYXRhLmdvYWwpIHtcbiAgICAgIGRldGFpbHMucHVzaCgnJyk7XG4gICAgICBkZXRhaWxzLnB1c2goJyoqR29hbCBDb25maWd1cmF0aW9uKio6Jyk7XG4gICAgICBkZXRhaWxzLnB1c2goYC0gVGVtcGxhdGU6ICR7bWV0YWRhdGEuZ29hbC50ZW1wbGF0ZX1gKTtcbiAgICAgIGlmIChtZXRhZGF0YS5nb2FsLnBhcmFtZXRlcnMgJiYgbWV0YWRhdGEuZ29hbC5wYXJhbWV0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIFBhcmFtZXRlcnM6ICR7bWV0YWRhdGEuZ29hbC5wYXJhbWV0ZXJzLmxlbmd0aH0gZGVmaW5lZGApO1xuICAgICAgICBtZXRhZGF0YS5nb2FsLnBhcmFtZXRlcnMuZm9yRWFjaCgocGFyYW06IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlcXVpcmVkID0gcGFyYW0ucmVxdWlyZWQgPyAncmVxdWlyZWQnIDogJ29wdGlvbmFsJztcbiAgICAgICAgICBkZXRhaWxzLnB1c2goYCAgLSAke3BhcmFtLm5hbWV9ICgke3BhcmFtLnR5cGV9LCAke3JlcXVpcmVkfSlgKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZXRhaWxzLnB1c2goJy0gUGFyYW1ldGVyczogbm9uZScpO1xuICAgICAgfVxuICAgICAgaWYgKG1ldGFkYXRhLmdvYWwuc3VjY2Vzc0NyaXRlcmlhICYmIG1ldGFkYXRhLmdvYWwuc3VjY2Vzc0NyaXRlcmlhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIFN1Y2Nlc3MgQ3JpdGVyaWE6ICR7bWV0YWRhdGEuZ29hbC5zdWNjZXNzQ3JpdGVyaWEubGVuZ3RofSBkZWZpbmVkYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1ldGFkYXRhLmFjdGl2YXRlcykge1xuICAgICAgZGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIGRldGFpbHMucHVzaCgnKipBY3RpdmF0ZXMqKjonKTtcbiAgICAgIGNvbnN0IGVsZW1lbnRUeXBlcyA9IE9iamVjdC5rZXlzKG1ldGFkYXRhLmFjdGl2YXRlcyk7XG4gICAgICBlbGVtZW50VHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBtZXRhZGF0YS5hY3RpdmF0ZXNbdHlwZV07XG4gICAgICAgIGlmIChlbGVtZW50cyAmJiBlbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZGV0YWlscy5wdXNoKGAtICR7dHlwZX06ICR7ZWxlbWVudHMuam9pbignLCAnKX1gKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG1ldGFkYXRhLnRvb2xzKSB7XG4gICAgICBkZXRhaWxzLnB1c2goJycpO1xuICAgICAgZGV0YWlscy5wdXNoKCcqKlRvb2xzKio6Jyk7XG4gICAgICBpZiAobWV0YWRhdGEudG9vbHMuYWxsb3dlZCAmJiBtZXRhZGF0YS50b29scy5hbGxvd2VkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIEFsbG93ZWQ6ICR7bWV0YWRhdGEudG9vbHMuYWxsb3dlZC5sZW5ndGh9IHRvb2xzYCk7XG4gICAgICB9XG4gICAgICBpZiAobWV0YWRhdGEudG9vbHMuZGVuaWVkICYmIG1ldGFkYXRhLnRvb2xzLmRlbmllZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBEZW5pZWQ6ICR7bWV0YWRhdGEudG9vbHMuZGVuaWVkLmxlbmd0aH0gdG9vbHNgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWV0YWRhdGEuc3lzdGVtUHJvbXB0KSB7XG4gICAgICBkZXRhaWxzLnB1c2goJycpO1xuICAgICAgZGV0YWlscy5wdXNoKCcqKlN5c3RlbSBQcm9tcHQqKjonKTtcbiAgICAgIGNvbnN0IHRydW5jYXRlZCA9IG1ldGFkYXRhLnN5c3RlbVByb21wdC5sZW5ndGggPiAxMDBcbiAgICAgICAgPyBgJHttZXRhZGF0YS5zeXN0ZW1Qcm9tcHQuc3Vic3RyaW5nKDAsIDEwMCl9Li4uYFxuICAgICAgICA6IG1ldGFkYXRhLnN5c3RlbVByb21wdDtcbiAgICAgIGRldGFpbHMucHVzaCh0cnVuY2F0ZWQpO1xuICAgIH1cblxuICAgIGlmIChtZXRhZGF0YS5hdXRvbm9teSkge1xuICAgICAgZGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIGRldGFpbHMucHVzaCgnKipBdXRvbm9teSBDb25maWd1cmF0aW9uKio6Jyk7XG4gICAgICBpZiAobWV0YWRhdGEuYXV0b25vbXkucmlza1RvbGVyYW5jZSkge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gUmlzayBUb2xlcmFuY2U6ICR7bWV0YWRhdGEuYXV0b25vbXkucmlza1RvbGVyYW5jZX1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChtZXRhZGF0YS5hdXRvbm9teS5tYXhBdXRvbm9tb3VzU3RlcHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBzdGVwc0xhYmVsID0gbWV0YWRhdGEuYXV0b25vbXkubWF4QXV0b25vbW91c1N0ZXBzID09PSAwID8gJ3VubGltaXRlZCcgOiBtZXRhZGF0YS5hdXRvbm9teS5tYXhBdXRvbm9tb3VzU3RlcHM7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBNYXggQXV0b25vbW91cyBTdGVwczogJHtzdGVwc0xhYmVsfWApO1xuICAgICAgfVxuICAgICAgaWYgKG1ldGFkYXRhLmF1dG9ub215LnJlcXVpcmVzQXBwcm92YWwgJiYgbWV0YWRhdGEuYXV0b25vbXkucmVxdWlyZXNBcHByb3ZhbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBSZXF1aXJlcyBBcHByb3ZhbDogJHttZXRhZGF0YS5hdXRvbm9teS5yZXF1aXJlc0FwcHJvdmFsLmxlbmd0aH0gcGF0dGVybnNgKTtcbiAgICAgIH1cbiAgICAgIGlmIChtZXRhZGF0YS5hdXRvbm9teS5hdXRvQXBwcm92ZSAmJiBtZXRhZGF0YS5hdXRvbm9teS5hdXRvQXBwcm92ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBBdXRvIEFwcHJvdmU6ICR7bWV0YWRhdGEuYXV0b25vbXkuYXV0b0FwcHJvdmUubGVuZ3RofSBwYXR0ZXJuc2ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElzc3VlICM3MjI6IERpc3BsYXkgcmVzaWxpZW5jZSBwb2xpY3lcbiAgICBpZiAobWV0YWRhdGEucmVzaWxpZW5jZSkge1xuICAgICAgZGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIGRldGFpbHMucHVzaCgnKipSZXNpbGllbmNlIFBvbGljeSoqOicpO1xuICAgICAgaWYgKG1ldGFkYXRhLnJlc2lsaWVuY2Uub25TdGVwTGltaXRSZWFjaGVkKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBPbiBTdGVwIExpbWl0IFJlYWNoZWQ6ICR7bWV0YWRhdGEucmVzaWxpZW5jZS5vblN0ZXBMaW1pdFJlYWNoZWR9YCk7XG4gICAgICB9XG4gICAgICBpZiAobWV0YWRhdGEucmVzaWxpZW5jZS5vbkV4ZWN1dGlvbkZhaWx1cmUpIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIE9uIEV4ZWN1dGlvbiBGYWlsdXJlOiAke21ldGFkYXRhLnJlc2lsaWVuY2Uub25FeGVjdXRpb25GYWlsdXJlfWApO1xuICAgICAgfVxuICAgICAgaWYgKG1ldGFkYXRhLnJlc2lsaWVuY2UubWF4UmV0cmllcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBNYXggUmV0cmllczogJHttZXRhZGF0YS5yZXNpbGllbmNlLm1heFJldHJpZXN9YCk7XG4gICAgICB9XG4gICAgICBpZiAobWV0YWRhdGEucmVzaWxpZW5jZS5tYXhDb250aW51YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIE1heCBDb250aW51YXRpb25zOiAke21ldGFkYXRhLnJlc2lsaWVuY2UubWF4Q29udGludWF0aW9uc31gKTtcbiAgICAgIH1cbiAgICAgIC8vIElzc3VlICM3NDk6IERpc3BsYXkgcmV0cnlCYWNrb2ZmIGFuZCBwcmVzZXJ2ZVN0YXRlICh3ZXJlIG1pc3NpbmcpXG4gICAgICBpZiAobWV0YWRhdGEucmVzaWxpZW5jZS5yZXRyeUJhY2tvZmYpIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIFJldHJ5IEJhY2tvZmY6ICR7bWV0YWRhdGEucmVzaWxpZW5jZS5yZXRyeUJhY2tvZmZ9YCk7XG4gICAgICB9XG4gICAgICBpZiAobWV0YWRhdGEucmVzaWxpZW5jZS5wcmVzZXJ2ZVN0YXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIFByZXNlcnZlIFN0YXRlOiAke21ldGFkYXRhLnJlc2lsaWVuY2UucHJlc2VydmVTdGF0ZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJc3N1ZSAjNzIyOiBEaXNwbGF5IHRhZ3MgYW5kIHRyaWdnZXJzXG4gICAgaWYgKG1ldGFkYXRhLnRhZ3MgJiYgbWV0YWRhdGEudGFncy5sZW5ndGggPiAwKSB7XG4gICAgICBkZXRhaWxzLnB1c2goJycpO1xuICAgICAgZGV0YWlscy5wdXNoKGAqKlRhZ3MqKjogJHttZXRhZGF0YS50YWdzLmpvaW4oJywgJyl9YCk7XG4gICAgfVxuICAgIGlmIChtZXRhZGF0YS50cmlnZ2VycyAmJiBtZXRhZGF0YS50cmlnZ2Vycy5sZW5ndGggPiAwKSB7XG4gICAgICBkZXRhaWxzLnB1c2goYCoqVHJpZ2dlcnMqKjogJHttZXRhZGF0YS50cmlnZ2Vycy5qb2luKCcsICcpfWApO1xuICAgIH1cblxuICAgIGRldGFpbHMucHVzaCgnJyk7XG4gICAgZGV0YWlscy5wdXNoKCcqKkluc3RydWN0aW9ucyoqOicpO1xuICAgIGRldGFpbHMucHVzaCgoYWdlbnQgYXMgYW55KS5pbnN0cnVjdGlvbnMgfHwgKGFnZW50IGFzIGFueSkuZXh0ZW5zaW9ucz8uaW5zdHJ1Y3Rpb25zIHx8ICdObyBpbnN0cnVjdGlvbnMgYXZhaWxhYmxlJyk7XG5cbiAgICBpZiAoKGFnZW50IGFzIGFueSkuY29udGVudD8udHJpbSgpKSB7XG4gICAgICBkZXRhaWxzLnB1c2goJycpO1xuICAgICAgZGV0YWlscy5wdXNoKCcqKlJlZmVyZW5jZToqKicpO1xuICAgICAgZGV0YWlscy5wdXNoKChhZ2VudCBhcyBhbnkpLmNvbnRlbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IGFnZW50U3RhdGUgPSAoYWdlbnQgYXMgYW55KS5zdGF0ZTtcbiAgICBpZiAoYWdlbnRTdGF0ZT8uZ29hbHMgJiYgYWdlbnRTdGF0ZS5nb2Fscy5sZW5ndGggPiAwKSB7XG4gICAgICBkZXRhaWxzLnB1c2goJycsICcqKkN1cnJlbnQgR29hbHMqKjonKTtcbiAgICAgIGFnZW50U3RhdGUuZ29hbHMuZm9yRWFjaCgoZzogYW55KSA9PiB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSAke2cuZGVzY3JpcHRpb259ICgke2cuc3RhdHVzfSlgKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogZGV0YWlscy5qb2luKCdcXG4nKVxuICAgICAgfV1cbiAgICB9O1xuICB9XG59XG4iXX0=
393
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWdlbnRBY3RpdmF0aW9uU3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGFuZGxlcnMvc3RyYXRlZ2llcy9BZ2VudEFjdGl2YXRpb25TdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBR0gsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsc0JBQXNCO0lBQ3BDO0lBQTdCLFlBQTZCLFlBQTBCO1FBQ3JELEtBQUssRUFBRSxDQUFDO1FBRG1CLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBRXZELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBWSxFQUFFLE9BQTZCO1FBQ3hELGlFQUFpRTtRQUNqRSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUUzQixxQ0FBcUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsT0FBTyxFQUFFLElBQUksSUFBSSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEQsd0NBQXdDO1FBQ3hDLCtEQUErRDtRQUMvRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxF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QUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ3pCLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBZ2VudEFjdGl2YXRpb25TdHJhdGVneSAtIFN0cmF0ZWd5IGZvciBhZ2VudCBlbGVtZW50IGFjdGl2YXRpb25cbiAqXG4gKiBIYW5kbGVzIGFjdGl2YXRpb24sIGRlYWN0aXZhdGlvbiwgYW5kIHN0YXR1cyB0cmFja2luZyBmb3IgYWdlbnQgZWxlbWVudHMuXG4gKiBVc2VzIFwiZXhlY3V0aW9uXCIgc3RyYXRlZ3kgd2l0aCBzdGF0ZSBmaWxlIG1hbmFnZW1lbnQuXG4gKlxuICogU0VDVVJJVFkgJiBDT05TSVNURU5DWSBJTVBST1ZFTUVOVFM6XG4gKiAtIFNlY3VyaXR5IGxvZ2dpbmcgZm9yIGFjdGl2YXRpb24gZXJyb3JzIChJc3N1ZSAjMjQgLSBNZWRpdW0gUHJpb3JpdHkpXG4gKiAtIEFjdGl2YXRpb24gcm9sbGJhY2sgb24gY3JpdGljYWwgZmFpbHVyZXMgKElzc3VlICMyNCAtIE1lZGl1bSBQcmlvcml0eSlcbiAqIC0gT3B0aW1pc3RpYyBsb2NraW5nIGZvciBzdGF0ZSB1cGRhdGVzIChJc3N1ZSAjMjQgLSBNZWRpdW0gUHJpb3JpdHkpXG4gKi9cblxuaW1wb3J0IHsgQWdlbnRNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvYWdlbnRzL0FnZW50TWFuYWdlci5qcyc7XG5pbXBvcnQgeyBCYXNlQWN0aXZhdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9CYXNlQWN0aXZhdGlvblN0cmF0ZWd5LmpzJztcbmltcG9ydCB7IEVsZW1lbnRBY3RpdmF0aW9uU3RyYXRlZ3ksIE1DUFJlc3BvbnNlIH0gZnJvbSAnLi9FbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5LmpzJztcbmltcG9ydCB7IFNlY3VyaXR5TW9uaXRvciB9IGZyb20gJy4uLy4uL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci5qcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2dnZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgQWdlbnRBY3RpdmF0aW9uU3RyYXRlZ3kgZXh0ZW5kcyBCYXNlQWN0aXZhdGlvblN0cmF0ZWd5IGltcGxlbWVudHMgRWxlbWVudEFjdGl2YXRpb25TdHJhdGVneSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYWdlbnRNYW5hZ2VyOiBBZ2VudE1hbmFnZXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIGFuIGFnZW50IHdpdGggZXhlY3V0aW9uIHN0cmF0ZWd5XG4gICAqIEV4ZWN1dGVzIGFnZW50IGxvZ2ljLCB1cGRhdGVzIHN0YXRlIGZpbGUsIGFuZCB0cmFja3MgYWN0aXZhdGlvblxuICAgKlxuICAgKiBJTVBST1ZFTUVOVDogRW5oYW5jZWQgZXJyb3IgaGFuZGxpbmcgd2l0aCBzZWN1cml0eSBsb2dnaW5nIGFuZCByb2xsYmFjayAoSXNzdWUgIzI0KVxuICAgKi9cbiAgYXN5bmMgYWN0aXZhdGUobmFtZTogc3RyaW5nLCBjb250ZXh0PzogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICAvLyBVc2UgdGhlIG1hbmFnZXIncyBhY3RpdmF0aW9uIG1ldGhvZCB3aGljaCB0cmFja3MgYWN0aXZlIGFnZW50c1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWdlbnRNYW5hZ2VyLmFjdGl2YXRlQWdlbnQobmFtZSk7XG5cbiAgICBpZiAoIXJlc3VsdC5zdWNjZXNzIHx8ICFyZXN1bHQuYWdlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU5vdEZvdW5kUmVzcG9uc2UobmFtZSwgJ0FnZW50Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgYWdlbnQgPSByZXN1bHQuYWdlbnQ7XG5cbiAgICAvLyBFeHRyYWN0IG9wdGlvbmFsIGdvYWwgZnJvbSBjb250ZXh0XG4gICAgY29uc3QgZ29hbCA9IGNvbnRleHQ/LmdvYWwgfHwgY29udGV4dD8uZ29hbHM/LlswXTtcblxuICAgIC8vIEV4ZWN1dGUgYWdlbnQgbG9naWMgKGdvYWxzL2RlY2lzaW9ucylcbiAgICAvLyBGb3Igbm93LCB0aGlzIGlzIGEgc2lkZS1lZmZlY3QgYWN0aXZhdGlvbiB0aGF0IHVwZGF0ZXMgc3RhdGVcbiAgICBjb25zdCBzdGF0ZSA9IGFnZW50LmdldFN0YXRlKCk7XG4gICAgY29uc3QgZXhlY3V0aW9uU3VtbWFyeTogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIFRyYWNrIGlmIHdlIG5lZWQgdG8gcm9sbGJhY2sgYWN0aXZhdGlvbiBvbiBjcml0aWNhbCBmYWlsdXJlXG4gICAgbGV0IGNyaXRpY2FsRmFpbHVyZSA9IGZhbHNlO1xuXG4gICAgaWYgKGdvYWwpIHtcbiAgICAgIC8vIElmIGdvYWwgcHJvdmlkZWQsIGFkZCBpdCB0byB0aGUgYWdlbnQncyBnb2Fsc1xuICAgICAgdHJ5IHtcbiAgICAgICAgYWdlbnQuYWRkR29hbCh7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGdvYWwuZGVzY3JpcHRpb24gfHwgZ29hbCxcbiAgICAgICAgICBwcmlvcml0eTogZ29hbC5wcmlvcml0eSB8fCAnbWVkaXVtJyxcbiAgICAgICAgICBpbXBvcnRhbmNlOiBnb2FsLmltcG9ydGFuY2UgfHwgNSxcbiAgICAgICAgICB1cmdlbmN5OiBnb2FsLnVyZ2VuY3kgfHwgNVxuICAgICAgICB9KTtcbiAgICAgICAgZXhlY3V0aW9uU3VtbWFyeS5wdXNoKGBHb2FsIGFkZGVkOiAke2dvYWwuZGVzY3JpcHRpb24gfHwgZ29hbH1gKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIEZJWDogRW5oYW5jZWQgZXJyb3IgbG9nZ2luZyB3aXRoIHNlY3VyaXR5IG1vbml0b3JpbmcgKElzc3VlICMyNClcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnQ291bGQgbm90IGFkZCBnb2FsJztcblxuICAgICAgICAvLyBMb2cgdG8gc2VjdXJpdHkgbW9uaXRvciBmb3IgYXVkaXQgdHJhaWxcbiAgICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICAgIHR5cGU6ICdBR0VOVF9BQ1RJVkFUSU9OX0ZBSUxFRCcsXG4gICAgICAgICAgc2V2ZXJpdHk6ICdNRURJVU0nLFxuICAgICAgICAgIHNvdXJjZTogJ0FnZW50QWN0aXZhdGlvblN0cmF0ZWd5LmFjdGl2YXRlJyxcbiAgICAgICAgICBkZXRhaWxzOiBgRmFpbGVkIHRvIGFkZCBnb2FsIGR1cmluZyBhZ2VudCBhY3RpdmF0aW9uOiAke2Vycm9yTWVzc2FnZX1gLFxuICAgICAgICAgIGFkZGl0aW9uYWxEYXRhOiB7XG4gICAgICAgICAgICBhZ2VudE5hbWU6IG5hbWUsXG4gICAgICAgICAgICBnb2FsRGVzY3JpcHRpb246IGdvYWwuZGVzY3JpcHRpb24gfHwgZ29hbCxcbiAgICAgICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2VcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIExvZyB0byBzdGFuZGFyZCBsb2dnZXIgZm9yIGRlYnVnZ2luZ1xuICAgICAgICBsb2dnZXIud2FybihgR29hbCBhZGRpdGlvbiBmYWlsZWQgZHVyaW5nIGFnZW50IGFjdGl2YXRpb25gLCB7XG4gICAgICAgICAgYWdlbnROYW1lOiBuYW1lLFxuICAgICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZXhlY3V0aW9uU3VtbWFyeS5wdXNoKGBOb3RlOiAke2Vycm9yTWVzc2FnZX1gKTtcblxuICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyBpcyBhIGNyaXRpY2FsIGZhaWx1cmUgcmVxdWlyaW5nIHJvbGxiYWNrXG4gICAgICAgIC8vIENyaXRpY2FsIGZhaWx1cmVzOiB2YWxpZGF0aW9uIGVycm9ycyB0aGF0IGluZGljYXRlIGJhZCBpbnB1dCBvciBzZWN1cml0eSBpc3N1ZXNcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgKFxuICAgICAgICAgIGVycm9yTWVzc2FnZS5pbmNsdWRlcygnaGFybWZ1bCBjb250ZW50JykgfHxcbiAgICAgICAgICBlcnJvck1lc3NhZ2UuaW5jbHVkZXMoJ3NlY3VyaXR5JykgfHxcbiAgICAgICAgICBlcnJvck1lc3NhZ2UuaW5jbHVkZXMoJ01heGltdW0gbnVtYmVyIG9mIGdvYWxzJylcbiAgICAgICAgKSkge1xuICAgICAgICAgIGNyaXRpY2FsRmFpbHVyZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGSVg6IFJvbGxiYWNrIGFjdGl2YXRpb24gb24gY3JpdGljYWwgZmFpbHVyZXMgKElzc3VlICMyNClcbiAgICBpZiAoY3JpdGljYWxGYWlsdXJlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoYENyaXRpY2FsIGZhaWx1cmUgZHVyaW5nIGFnZW50IGFjdGl2YXRpb24sIHJvbGxpbmcgYmFja2AsIHtcbiAgICAgICAgYWdlbnROYW1lOiBuYW1lXG4gICAgICB9KTtcblxuICAgICAgLy8gRGVhY3RpdmF0ZSB0aGUgYWdlbnQgdG8gcm9sbGJhY2tcbiAgICAgIGF3YWl0IHRoaXMuYWdlbnRNYW5hZ2VyLmRlYWN0aXZhdGVBZ2VudChuYW1lKTtcblxuICAgICAgLy8gTG9nIHNlY3VyaXR5IGV2ZW50IGZvciByb2xsYmFja1xuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnQUdFTlRfQUNUSVZBVElPTl9ST0xMQkFDSycsXG4gICAgICAgIHNldmVyaXR5OiAnSElHSCcsXG4gICAgICAgIHNvdXJjZTogJ0FnZW50QWN0aXZhdGlvblN0cmF0ZWd5LmFjdGl2YXRlJyxcbiAgICAgICAgZGV0YWlsczogYEFnZW50IGFjdGl2YXRpb24gcm9sbGVkIGJhY2sgZHVlIHRvIGNyaXRpY2FsIGZhaWx1cmVgLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YToge1xuICAgICAgICAgIGFnZW50TmFtZTogbmFtZSxcbiAgICAgICAgICByZWFzb246ICdDcml0aWNhbCBnb2FsIGFkZGl0aW9uIGZhaWx1cmUnXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBSZXR1cm4gZXJyb3IgcmVzcG9uc2VcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYOKdjCBBZ2VudCBhY3RpdmF0aW9uIGZhaWxlZCBhbmQgd2FzIHJvbGxlZCBiYWNrXFxuXFxuQ3JpdGljYWwgZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGdvYWwgYWRkaXRpb24uIFBsZWFzZSByZXZpZXcgdGhlIGdvYWwgcGFyYW1ldGVycyBhbmQgdHJ5IGFnYWluLmBcbiAgICAgICAgfV1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gRklYOiBPcHRpbWlzdGljIGxvY2tpbmcgZm9yIHN0YXRlIHVwZGF0ZXMgKElzc3VlICMyNClcbiAgICAvLyBVc2UgcHVibGljIHBlcnNpc3RTdGF0ZSBBUEkgd2hpY2ggaW1wbGVtZW50cyBPcHRpb24gQyBwYXR0ZXJuIChJc3N1ZSAjMTIzKVxuICAgIGNvbnN0IGZpbGVuYW1lID0gYWdlbnQubWV0YWRhdGEubmFtZTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBTYXZlIHN0YXRlIHdpdGggYXRvbWljIHdyaXRlIGFuZCBwcm9wZXIgdmVyc2lvbiBoYW5kbGluZ1xuICAgICAgYXdhaXQgdGhpcy5hZ2VudE1hbmFnZXIucGVyc2lzdFN0YXRlKGZpbGVuYW1lKTtcblxuICAgICAgY29uc3QgY3VycmVudFN0YXRlID0gYWdlbnQuZ2V0U3RhdGUoKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgQWdlbnQgc3RhdGUgcGVyc2lzdGVkIHN1Y2Nlc3NmdWxseWAsIHtcbiAgICAgICAgYWdlbnROYW1lOiBuYW1lLFxuICAgICAgICBzZXNzaW9uQ291bnQ6IGN1cnJlbnRTdGF0ZS5zZXNzaW9uQ291bnQsXG4gICAgICAgIGdvYWxDb3VudDogY3VycmVudFN0YXRlLmdvYWxzLmxlbmd0aFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFN0YXRlIHNhdmUgZmFpbHVyZSAtIGxvZyBhbmQgY29udGludWUgKGFnZW50IGlzIHN0aWxsIGFjdGl2YXRlZClcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InO1xuXG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdNRU1PUllfU0FWRV9GQUlMRUQnLCAvLyBVc2luZyBleGlzdGluZyBldmVudCB0eXBlIGZvciBzdGF0ZSBzYXZlIGZhaWx1cmVzXG4gICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgc291cmNlOiAnQWdlbnRBY3RpdmF0aW9uU3RyYXRlZ3kuYWN0aXZhdGUnLFxuICAgICAgICBkZXRhaWxzOiBgRmFpbGVkIHRvIHNhdmUgYWdlbnQgc3RhdGUgYWZ0ZXIgYWN0aXZhdGlvbjogJHtlcnJvck1lc3NhZ2V9YCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IHtcbiAgICAgICAgICBhZ2VudE5hbWU6IG5hbWUsXG4gICAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgbG9nZ2VyLndhcm4oYEFnZW50IHN0YXRlIHNhdmUgZmFpbGVkLCBidXQgYWdlbnQgcmVtYWlucyBhY3RpdmF0ZWRgLCB7XG4gICAgICAgIGFnZW50TmFtZTogbmFtZSxcbiAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZVxuICAgICAgfSk7XG5cbiAgICAgIGV4ZWN1dGlvblN1bW1hcnkucHVzaChgV2FybmluZzogU3RhdGUgcGVyc2lzdGVuY2UgZmFpbGVkIC0gJHtlcnJvck1lc3NhZ2V9YCk7XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgZXhlY3V0aW9uIHJlc3BvbnNlXG4gICAgY29uc3QgcGFydHMgPSBbXG4gICAgICBnb2FsXG4gICAgICAgID8gYOKchSBBZ2VudCBhY3RpdmF0ZWQgYW5kIGV4ZWN1dGVkIGdvYWw6ICR7Z29hbC5kZXNjcmlwdGlvbiB8fCBnb2FsfWBcbiAgICAgICAgOiBg4pyFIEFnZW50IGFjdGl2YXRlZCBzdWNjZXNzZnVsbHlgLFxuICAgICAgJydcbiAgICBdO1xuXG4gICAgLy8gQWRkIG91dGNvbWUgZGVzY3JpcHRpb24gZm9yIHRlc3QgZXhwZWN0YXRpb25zXG4gICAgaWYgKGdvYWwpIHtcbiAgICAgIHBhcnRzLnB1c2goJ0FnZW50IGFjdGl2YXRlcyB3aXRoIGluaXRpYWwgZ29hbHMgbG9hZGVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRzLnB1c2goJ0FnZW50IGJlY29tZXMgYWN0aXZlLCBpbmNyZW1lbnRzIHNlc3Npb24gY291bnQnKTtcbiAgICB9XG4gICAgcGFydHMucHVzaCgnJyk7XG5cbiAgICBwYXJ0cy5wdXNoKGAqKlNlc3Npb24qKjogIyR7c3RhdGUuc2Vzc2lvbkNvdW50ICsgMX1gKTtcbiAgICBwYXJ0cy5wdXNoKC4uLnRoaXMuZm9ybWF0VjFGaWVsZHMoYWdlbnQubWV0YWRhdGEgYXMgYW55LCBhZ2VudC5leHRlbnNpb25zIGFzIGFueSkpO1xuXG4gICAgaWYgKGV4ZWN1dGlvblN1bW1hcnkubGVuZ3RoID4gMCkge1xuICAgICAgcGFydHMucHVzaCgnJyk7XG4gICAgICBwYXJ0cy5wdXNoKCcqKkV4ZWN1dGlvbiBTdW1tYXJ5Kio6Jyk7XG4gICAgICBleGVjdXRpb25TdW1tYXJ5LmZvckVhY2gobGluZSA9PiBwYXJ0cy5wdXNoKGAtICR7bGluZX1gKSk7XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZlR29hbHMgPSBhZ2VudC5nZXRTdGF0ZSgpLmdvYWxzLmZpbHRlcigoZzogeyBzdGF0dXM6IHN0cmluZyB9KSA9PiBnLnN0YXR1cyA9PT0gJ2luX3Byb2dyZXNzJyk7XG4gICAgaWYgKGFjdGl2ZUdvYWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcnRzLnB1c2goJycpO1xuICAgICAgcGFydHMucHVzaChgKipBY3RpdmUgR29hbHMqKjogJHthY3RpdmVHb2Fscy5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgcGFydHMucHVzaCgnJyk7XG4gICAgcGFydHMucHVzaCgnQWdlbnQgZXhlY3V0aW9uIGNvbXBsZXRlZCcpO1xuXG4gICAgLy8gSXNzdWUgIzY0MjogRmFpbC1zYWZlIHdhcm5pbmcgZm9yIENMSSByZXN0cmljdGlvbnNcbiAgICBjb25zdCByZXN0cmljdGlvbldhcm5pbmcgPSB0aGlzLmZvcm1hdFJlc3RyaWN0aW9uV2FybmluZyhhZ2VudC5tZXRhZGF0YSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICBpZiAocmVzdHJpY3Rpb25XYXJuaW5nKSB7XG4gICAgICBwYXJ0cy5wdXNoKHJlc3RyaWN0aW9uV2FybmluZyk7XG4gICAgfVxuXG4gICAgY29uc3QgZ2F0ZWtlZXBlcldhcm5pbmcgPSB0aGlzLmZvcm1hdEdhdGVrZWVwZXJWYWxpZGl0eVdhcm5pbmcoYWdlbnQubWV0YWRhdGEgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gICAgaWYgKGdhdGVrZWVwZXJXYXJuaW5nKSB7XG4gICAgICBwYXJ0cy5wdXNoKGdhdGVrZWVwZXJXYXJuaW5nKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IHBhcnRzLmpvaW4oJ1xcbicpXG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVhY3RpdmF0ZSBhbiBhZ2VudFxuICAgKlxuICAgKiBAdGhyb3dzIHtFbGVtZW50Tm90Rm91bmRFcnJvcn0gV2hlbiBhZ2VudCBkb2VzIG5vdCBleGlzdFxuICAgKiBAc2VlIElzc3VlICMyNzUgLSBIYW5kbGVycyByZXR1cm4gc3VjY2Vzcz10cnVlIGZvciBtaXNzaW5nIGVsZW1lbnRzXG4gICAqL1xuICBhc3luYyBkZWFjdGl2YXRlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFnZW50TWFuYWdlci5kZWFjdGl2YXRlQWdlbnQobmFtZSk7XG5cbiAgICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICB0aGlzLnRocm93Tm90Rm91bmRFcnJvcihuYW1lLCAnQWdlbnQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTdWNjZXNzUmVzcG9uc2UocmVzdWx0Lm1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgYWN0aXZlIGFnZW50c1xuICAgKi9cbiAgYXN5bmMgZ2V0QWN0aXZlRWxlbWVudHMoKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIC8vIFVzZSB0aGUgbWFuYWdlcidzIG1ldGhvZCB0byBnZXQgYWN0aXZlIGFnZW50cyBkaXJlY3RseVxuICAgIGNvbnN0IGFjdGl2ZUFnZW50cyA9IGF3YWl0IHRoaXMuYWdlbnRNYW5hZ2VyLmdldEFjdGl2ZUFnZW50cygpO1xuXG4gICAgaWYgKGFjdGl2ZUFnZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogXCLwn6SWIE5vIGFjdGl2ZSBhZ2VudHNcIlxuICAgICAgICB9XVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBhZ2VudExpc3QgPSBhY3RpdmVBZ2VudHMubWFwKGEgPT4ge1xuICAgICAgY29uc3Qgc3RhdGUgPSBhLmdldFN0YXRlKCk7XG4gICAgICBjb25zdCBnb2FscyA9IHN0YXRlLmdvYWxzPy5sZW5ndGggfHwgMDtcbiAgICAgIHJldHVybiBg8J+kliAke2EubWV0YWRhdGEubmFtZX0gKCR7Z29hbHN9IGFjdGl2ZSBnb2FscylgO1xuICAgIH0pLmpvaW4oJ1xcbicpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgQWN0aXZlIGFnZW50czpcXG4ke2FnZW50TGlzdH1gXG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IHYxIGFnZW50IGZpZWxkcyAoc3BlY2lhbGl6YXRpb25zLCBkZWNpc2lvbkZyYW1ld29yaywgcmlza1RvbGVyYW5jZSlcbiAgICogZm9yIGRpc3BsYXkuIE9ubHkgaW5jbHVkZXMgZmllbGRzIHRoYXQgYXJlIGV4cGxpY2l0bHkgc2V0IOKAlCBhdm9pZHMgc2hvd2luZ1xuICAgKiBwaGFudG9tIGRlZmF1bHRzIG9uIHYyIGFnZW50cy4gKElzc3VlICM3NDkpXG4gICAqL1xuICBwcml2YXRlIGZvcm1hdFYxRmllbGRzKFxuICAgIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIGV4dGVuc2lvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICk6IHN0cmluZ1tdIHtcbiAgICAvLyBJc3N1ZSAjNzQ5OiBWMiBhZ2VudHMgc2hvdWxkIG5vdCBzaG93IFYxIGRlZmF1bHRzLlxuICAgIC8vIGBnb2FsYCAoc2luZ3VsYXIsIEFnZW50R29hbENvbmZpZykgaXMgdGhlIGRlZmluaXRpdmUgVjIgbWFya2VyIOKAlCBpdCdzXG4gICAgLy8gcmVxdWlyZWQgb24gQWdlbnRNZXRhZGF0YVYyIGFuZCBuZXZlciBwcmVzZW50IG9uIFYxIGFnZW50cyAod2hpY2ggdXNlXG4gICAgLy8gYGdvYWxzYCBwbHVyYWwpLiBUaGUgQWdlbnQgY29uc3RydWN0b3IgYWx3YXlzIGRlZmF1bHRzIGRlY2lzaW9uRnJhbWV3b3JrXG4gICAgLy8gYW5kIHJpc2tUb2xlcmFuY2UsIHNvIGNoZWNraW5nIHRydXRoaW5lc3MgYWxvbmUgc2hvd3MgcGhhbnRvbSB2YWx1ZXMuXG4gICAgaWYgKG1ldGFkYXRhLmdvYWwpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBzcGVjcyA9IG1ldGFkYXRhLnNwZWNpYWxpemF0aW9ucztcbiAgICBjb25zdCBmcmFtZXdvcmsgPSBleHRlbnNpb25zPy5kZWNpc2lvbkZyYW1ld29yayA/PyBtZXRhZGF0YS5kZWNpc2lvbkZyYW1ld29yaztcbiAgICBjb25zdCByaXNrID0gZXh0ZW5zaW9ucz8ucmlza1RvbGVyYW5jZSA/PyBtZXRhZGF0YS5yaXNrVG9sZXJhbmNlO1xuXG4gICAgaWYgKHNwZWNzPy5sZW5ndGggPiAwKSB7XG4gICAgICBsaW5lcy5wdXNoKGAqKlNwZWNpYWxpemF0aW9ucyoqOiAke3NwZWNzLmpvaW4oJywgJyl9YCk7XG4gICAgfVxuICAgIGlmIChmcmFtZXdvcmspIHtcbiAgICAgIGxpbmVzLnB1c2goYCoqRGVjaXNpb24gRnJhbWV3b3JrKio6ICR7ZnJhbWV3b3JrfWApO1xuICAgIH1cbiAgICBpZiAocmlzaykge1xuICAgICAgbGluZXMucHVzaChgKipSaXNrIFRvbGVyYW5jZSoqOiAke3Jpc2t9YCk7XG4gICAgfVxuICAgIHJldHVybiBsaW5lcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYW4gYWdlbnRcbiAgICogRXh0cmFjdGVkIGZyb20gRWxlbWVudENSVURIYW5kbGVyLnRzIGxpbmVzIDczMC03NzBcbiAgICovXG4gIGFzeW5jIGdldEVsZW1lbnREZXRhaWxzKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICAvLyBVc2UgZmxleGlibGUgZmluZGluZyB0byBzdXBwb3J0IGJvdGggZGlzcGxheSBuYW1lIGFuZCBmaWxlbmFtZVxuICAgIGNvbnN0IGFsbEFnZW50cyA9IGF3YWl0IHRoaXMuYWdlbnRNYW5hZ2VyLmxpc3QoKTtcbiAgICBjb25zdCBhZ2VudCA9IGF3YWl0IHRoaXMuZmluZEVsZW1lbnRGbGV4aWJseShuYW1lLCBhbGxBZ2VudHMpO1xuICAgIGlmICghYWdlbnQpIHtcbiAgICAgIHRoaXMudGhyb3dOb3RGb3VuZEVycm9yKG5hbWUsICdBZ2VudCcpO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGFkYXRhID0gYWdlbnQubWV0YWRhdGEgYXMgYW55O1xuXG4gICAgY29uc3QgZGV0YWlscyA9IFtcbiAgICAgIGDwn6SWICoqJHthZ2VudC5tZXRhZGF0YS5uYW1lfSoqYCxcbiAgICAgIGAke2FnZW50Lm1ldGFkYXRhLmRlc2NyaXB0aW9ufWAsXG4gICAgICBgYCxcbiAgICAgIGAqKlN0YXR1cyoqOiAke2FnZW50LmdldFN0YXR1cygpfWBcbiAgICBdO1xuXG4gICAgZGV0YWlscy5wdXNoKC4uLnRoaXMuZm9ybWF0VjFGaWVsZHMobWV0YWRhdGEpKTtcblxuICAgIC8vIFYyIGZpZWxkc1xuICAgIGlmIChtZXRhZGF0YS5nb2FsKSB7XG4gICAgICBkZXRhaWxzLnB1c2goJycpO1xuICAgICAgZGV0YWlscy5wdXNoKCcqKkdvYWwgQ29uZmlndXJhdGlvbioqOicpO1xuICAgICAgZGV0YWlscy5wdXNoKGAtIFRlbXBsYXRlOiAke21ldGFkYXRhLmdvYWwudGVtcGxhdGV9YCk7XG4gICAgICBpZiAobWV0YWRhdGEuZ29hbC5wYXJhbWV0ZXJzICYmIG1ldGFkYXRhLmdvYWwucGFyYW1ldGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBQYXJhbWV0ZXJzOiAke21ldGFkYXRhLmdvYWwucGFyYW1ldGVycy5sZW5ndGh9IGRlZmluZWRgKTtcbiAgICAgICAgbWV0YWRhdGEuZ29hbC5wYXJhbWV0ZXJzLmZvckVhY2goKHBhcmFtOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByZXF1aXJlZCA9IHBhcmFtLnJlcXVpcmVkID8gJ3JlcXVpcmVkJyA6ICdvcHRpb25hbCc7XG4gICAgICAgICAgZGV0YWlscy5wdXNoKGAgIC0gJHtwYXJhbS5uYW1lfSAoJHtwYXJhbS50eXBlfSwgJHtyZXF1aXJlZH0pYCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKCctIFBhcmFtZXRlcnM6IG5vbmUnKTtcbiAgICAgIH1cbiAgICAgIGlmIChtZXRhZGF0YS5nb2FsLnN1Y2Nlc3NDcml0ZXJpYSAmJiBtZXRhZGF0YS5nb2FsLnN1Y2Nlc3NDcml0ZXJpYS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBTdWNjZXNzIENyaXRlcmlhOiAke21ldGFkYXRhLmdvYWwuc3VjY2Vzc0NyaXRlcmlhLmxlbmd0aH0gZGVmaW5lZGApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtZXRhZGF0YS5hY3RpdmF0ZXMpIHtcbiAgICAgIGRldGFpbHMucHVzaCgnJyk7XG4gICAgICBkZXRhaWxzLnB1c2goJyoqQWN0aXZhdGVzKio6Jyk7XG4gICAgICBjb25zdCBlbGVtZW50VHlwZXMgPSBPYmplY3Qua2V5cyhtZXRhZGF0YS5hY3RpdmF0ZXMpO1xuICAgICAgZWxlbWVudFR5cGVzLmZvckVhY2godHlwZSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gbWV0YWRhdGEuYWN0aXZhdGVzW3R5cGVdO1xuICAgICAgICBpZiAoZWxlbWVudHMgJiYgZWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGRldGFpbHMucHVzaChgLSAke3R5cGV9OiAke2VsZW1lbnRzLmpvaW4oJywgJyl9YCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChtZXRhZGF0YS50b29scykge1xuICAgICAgZGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIGRldGFpbHMucHVzaCgnKipUb29scyoqOicpO1xuICAgICAgaWYgKG1ldGFkYXRhLnRvb2xzLmFsbG93ZWQgJiYgbWV0YWRhdGEudG9vbHMuYWxsb3dlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBBbGxvd2VkOiAke21ldGFkYXRhLnRvb2xzLmFsbG93ZWQubGVuZ3RofSB0b29sc2ApO1xuICAgICAgfVxuICAgICAgaWYgKG1ldGFkYXRhLnRvb2xzLmRlbmllZCAmJiBtZXRhZGF0YS50b29scy5kZW5pZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gRGVuaWVkOiAke21ldGFkYXRhLnRvb2xzLmRlbmllZC5sZW5ndGh9IHRvb2xzYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1ldGFkYXRhLnN5c3RlbVByb21wdCkge1xuICAgICAgZGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIGRldGFpbHMucHVzaCgnKipTeXN0ZW0gUHJvbXB0Kio6Jyk7XG4gICAgICBjb25zdCB0cnVuY2F0ZWQgPSBtZXRhZGF0YS5zeXN0ZW1Qcm9tcHQubGVuZ3RoID4gMTAwXG4gICAgICAgID8gYCR7bWV0YWRhdGEuc3lzdGVtUHJvbXB0LnN1YnN0cmluZygwLCAxMDApfS4uLmBcbiAgICAgICAgOiBtZXRhZGF0YS5zeXN0ZW1Qcm9tcHQ7XG4gICAgICBkZXRhaWxzLnB1c2godHJ1bmNhdGVkKTtcbiAgICB9XG5cbiAgICBpZiAobWV0YWRhdGEuYXV0b25vbXkpIHtcbiAgICAgIGRldGFpbHMucHVzaCgnJyk7XG4gICAgICBkZXRhaWxzLnB1c2goJyoqQXV0b25vbXkgQ29uZmlndXJhdGlvbioqOicpO1xuICAgICAgaWYgKG1ldGFkYXRhLmF1dG9ub215LnJpc2tUb2xlcmFuY2UpIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIFJpc2sgVG9sZXJhbmNlOiAke21ldGFkYXRhLmF1dG9ub215LnJpc2tUb2xlcmFuY2V9YCk7XG4gICAgICB9XG4gICAgICBpZiAobWV0YWRhdGEuYXV0b25vbXkubWF4QXV0b25vbW91c1N0ZXBzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgc3RlcHNMYWJlbCA9IG1ldGFkYXRhLmF1dG9ub215Lm1heEF1dG9ub21vdXNTdGVwcyA9PT0gMCA/ICd1bmxpbWl0ZWQnIDogbWV0YWRhdGEuYXV0b25vbXkubWF4QXV0b25vbW91c1N0ZXBzO1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gTWF4IEF1dG9ub21vdXMgU3RlcHM6ICR7c3RlcHNMYWJlbH1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChtZXRhZGF0YS5hdXRvbm9teS5yZXF1aXJlc0FwcHJvdmFsICYmIG1ldGFkYXRhLmF1dG9ub215LnJlcXVpcmVzQXBwcm92YWwubGVuZ3RoID4gMCkge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gUmVxdWlyZXMgQXBwcm92YWw6ICR7bWV0YWRhdGEuYXV0b25vbXkucmVxdWlyZXNBcHByb3ZhbC5sZW5ndGh9IHBhdHRlcm5zYCk7XG4gICAgICB9XG4gICAgICBpZiAobWV0YWRhdGEuYXV0b25vbXkuYXV0b0FwcHJvdmUgJiYgbWV0YWRhdGEuYXV0b25vbXkuYXV0b0FwcHJvdmUubGVuZ3RoID4gMCkge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gQXV0byBBcHByb3ZlOiAke21ldGFkYXRhLmF1dG9ub215LmF1dG9BcHByb3ZlLmxlbmd0aH0gcGF0dGVybnNgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJc3N1ZSAjNzIyOiBEaXNwbGF5IHJlc2lsaWVuY2UgcG9saWN5XG4gICAgaWYgKG1ldGFkYXRhLnJlc2lsaWVuY2UpIHtcbiAgICAgIGRldGFpbHMucHVzaCgnJyk7XG4gICAgICBkZXRhaWxzLnB1c2goJyoqUmVzaWxpZW5jZSBQb2xpY3kqKjonKTtcbiAgICAgIGlmIChtZXRhZGF0YS5yZXNpbGllbmNlLm9uU3RlcExpbWl0UmVhY2hlZCkge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gT24gU3RlcCBMaW1pdCBSZWFjaGVkOiAke21ldGFkYXRhLnJlc2lsaWVuY2Uub25TdGVwTGltaXRSZWFjaGVkfWApO1xuICAgICAgfVxuICAgICAgaWYgKG1ldGFkYXRhLnJlc2lsaWVuY2Uub25FeGVjdXRpb25GYWlsdXJlKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBPbiBFeGVjdXRpb24gRmFpbHVyZTogJHttZXRhZGF0YS5yZXNpbGllbmNlLm9uRXhlY3V0aW9uRmFpbHVyZX1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChtZXRhZGF0YS5yZXNpbGllbmNlLm1heFJldHJpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gTWF4IFJldHJpZXM6ICR7bWV0YWRhdGEucmVzaWxpZW5jZS5tYXhSZXRyaWVzfWApO1xuICAgICAgfVxuICAgICAgaWYgKG1ldGFkYXRhLnJlc2lsaWVuY2UubWF4Q29udGludWF0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBNYXggQ29udGludWF0aW9uczogJHttZXRhZGF0YS5yZXNpbGllbmNlLm1heENvbnRpbnVhdGlvbnN9YCk7XG4gICAgICB9XG4gICAgICAvLyBJc3N1ZSAjNzQ5OiBEaXNwbGF5IHJldHJ5QmFja29mZiBhbmQgcHJlc2VydmVTdGF0ZSAod2VyZSBtaXNzaW5nKVxuICAgICAgaWYgKG1ldGFkYXRhLnJlc2lsaWVuY2UucmV0cnlCYWNrb2ZmKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBSZXRyeSBCYWNrb2ZmOiAke21ldGFkYXRhLnJlc2lsaWVuY2UucmV0cnlCYWNrb2ZmfWApO1xuICAgICAgfVxuICAgICAgaWYgKG1ldGFkYXRhLnJlc2lsaWVuY2UucHJlc2VydmVTdGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBQcmVzZXJ2ZSBTdGF0ZTogJHttZXRhZGF0YS5yZXNpbGllbmNlLnByZXNlcnZlU3RhdGV9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSXNzdWUgIzcyMjogRGlzcGxheSB0YWdzIGFuZCB0cmlnZ2Vyc1xuICAgIGlmIChtZXRhZGF0YS50YWdzICYmIG1ldGFkYXRhLnRhZ3MubGVuZ3RoID4gMCkge1xuICAgICAgZGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIGRldGFpbHMucHVzaChgKipUYWdzKio6ICR7bWV0YWRhdGEudGFncy5qb2luKCcsICcpfWApO1xuICAgIH1cbiAgICBpZiAobWV0YWRhdGEudHJpZ2dlcnMgJiYgbWV0YWRhdGEudHJpZ2dlcnMubGVuZ3RoID4gMCkge1xuICAgICAgZGV0YWlscy5wdXNoKGAqKlRyaWdnZXJzKio6ICR7bWV0YWRhdGEudHJpZ2dlcnMuam9pbignLCAnKX1gKTtcbiAgICB9XG5cbiAgICBkZXRhaWxzLnB1c2goJycpO1xuICAgIGRldGFpbHMucHVzaCgnKipJbnN0cnVjdGlvbnMqKjonKTtcbiAgICBkZXRhaWxzLnB1c2goKGFnZW50IGFzIGFueSkuaW5zdHJ1Y3Rpb25zIHx8IChhZ2VudCBhcyBhbnkpLmV4dGVuc2lvbnM/Lmluc3RydWN0aW9ucyB8fCAnTm8gaW5zdHJ1Y3Rpb25zIGF2YWlsYWJsZScpO1xuXG4gICAgaWYgKChhZ2VudCBhcyBhbnkpLmNvbnRlbnQ/LnRyaW0oKSkge1xuICAgICAgZGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIGRldGFpbHMucHVzaCgnKipSZWZlcmVuY2U6KionKTtcbiAgICAgIGRldGFpbHMucHVzaCgoYWdlbnQgYXMgYW55KS5jb250ZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCBhZ2VudFN0YXRlID0gKGFnZW50IGFzIGFueSkuc3RhdGU7XG4gICAgaWYgKGFnZW50U3RhdGU/LmdvYWxzICYmIGFnZW50U3RhdGUuZ29hbHMubGVuZ3RoID4gMCkge1xuICAgICAgZGV0YWlscy5wdXNoKCcnLCAnKipDdXJyZW50IEdvYWxzKio6Jyk7XG4gICAgICBhZ2VudFN0YXRlLmdvYWxzLmZvckVhY2goKGc6IGFueSkgPT4ge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gJHtnLmRlc2NyaXB0aW9ufSAoJHtnLnN0YXR1c30pYCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGRldGFpbHMuam9pbignXFxuJylcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -57,5 +57,6 @@ export declare abstract class BaseActivationStrategy {
57
57
  * @see Issue #642 — Fail-safe enforcement for externalRestrictions
58
58
  */
59
59
  protected formatRestrictionWarning(metadata: Record<string, unknown>): string;
60
+ protected formatGatekeeperValidityWarning(metadata: Record<string, unknown>): string;
60
61
  }
61
62
  //# sourceMappingURL=BaseActivationStrategy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/BaseActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAG7D;;GAEG;AACH,8BAAsB,sBAAsB;IAC1C;;;;;OAKG;cACa,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAInF;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAS3D;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAS7D;;;;;;;;;;OAUG;IACH,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK;IAI/D;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW;IAKzE;;;;;;;;OAQG;IACH,SAAS,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAsC9E"}
1
+ {"version":3,"file":"BaseActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/BaseActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAI7D;;GAEG;AACH,8BAAsB,sBAAsB;IAC1C;;;;;OAKG;cACa,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAInF;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAS3D;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAS7D;;;;;;;;;;OAUG;IACH,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK;IAI/D;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW;IAKzE;;;;;;;;OAQG;IACH,SAAS,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAuC7E,SAAS,CAAC,+BAA+B,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAcrF"}
@@ -8,6 +8,7 @@
8
8
  import { findElementFlexibly as findHelper } from '../element-crud/helpers.js';
9
9
  import { ElementNotFoundError } from '../../utils/ErrorHandler.js';
10
10
  import { getPermissionHookStatus } from '../../utils/permissionHooks.js';
11
+ import { getGatekeeperDiagnostics } from '../mcp-aql/policies/ElementPolicies.js';
11
12
  /**
12
13
  * Base class with shared utilities for activation strategies
13
14
  */
@@ -115,5 +116,18 @@ export class BaseActivationStrategy {
115
116
  }
116
117
  return parts.join('\n');
117
118
  }
119
+ formatGatekeeperValidityWarning(metadata) {
120
+ const diagnostics = getGatekeeperDiagnostics(metadata);
121
+ if (!diagnostics) {
122
+ return '';
123
+ }
124
+ return [
125
+ '\n---',
126
+ '**Gatekeeper Policy Warning:**',
127
+ `> ${diagnostics.message}`,
128
+ '> This element can still activate and do its normal work, but its malformed gatekeeper policy is not being enforced.',
129
+ '> Fix the policy structure and reactivate if you want permission rules to apply.',
130
+ ].join('\n');
131
+ }
118
132
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUFjdGl2YXRpb25TdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oYW5kbGVycy9zdHJhdGVnaWVzL0Jhc2VBY3RpdmF0aW9uU3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLG1CQUFtQixJQUFJLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRW5FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpFOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixzQkFBc0I7SUFDMUM7Ozs7O09BS0c7SUFDTyxLQUFLLENBQUMsbUJBQW1CLENBQUMsSUFBWSxFQUFFLFdBQWtCO1FBQ2xFLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLG1CQUFtQixDQUFDLE9BQWU7UUFDM0MsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDO29CQUNSLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxPQUFPO2lCQUNkLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxxQkFBcUIsQ0FBQyxPQUFlO1FBQzdDLE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FBQztvQkFDUixJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsT0FBTztpQkFDZCxDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ08sa0JBQWtCLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDckQsTUFBTSxJQUFJLG9CQUFvQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLHNCQUFzQixDQUFDLElBQVksRUFBRSxJQUFZO1FBQ3pELHNGQUFzRjtRQUN0RixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLElBQUksS0FBSyxJQUFJLGFBQWEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNPLHdCQUF3QixDQUFDLFFBQWlDO1FBQ2xFLE1BQU0sVUFBVSxHQUFHLFFBQVEsRUFBRSxVQUFpRCxDQUFDO1FBQy9FLE1BQU0sWUFBWSxHQUFHLFVBQVUsRUFBRSxvQkFBMkQsQ0FBQztRQUM3RixJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTdCLE1BQU0sVUFBVSxHQUFHLHVCQUF1QixFQUFFLENBQUM7UUFDN0MsTUFBTSxLQUFLLEdBQWEsQ0FBQyxVQUFVLENBQUMsU0FBUztnQkFDM0MsQ0FBQyxDQUFDLGlDQUFpQztnQkFDbkMsQ0FBQyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFDM0QsSUFBSSxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0IsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsWUFBb0MsQ0FBQztRQUN2RSxJQUFJLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN6QixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssR0FBRyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsYUFBcUMsQ0FBQztRQUN6RSxJQUFJLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUMxQixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkQsS0FBSyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakYsQ0FBQztRQUNELE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxjQUFxRCxDQUFDO1FBQzFGLE1BQU0sZUFBZSxHQUFHLGNBQWMsRUFBRSxlQUF1QyxDQUFDO1FBQ2hGLElBQUksZUFBZSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxDQUFDLENBQUM7UUFDL0UsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekIsS0FBSyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsVUFBVSxDQUFDLElBQUksSUFBSSxhQUFhLDJEQUEyRCxDQUFDLENBQUM7UUFDNUksQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUMsSUFBSSxDQUNSLDBJQUEwSSxFQUMxSSxpRUFBaUUsQ0FDbEUsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCYXNlQWN0aXZhdGlvblN0cmF0ZWd5IC0gU2hhcmVkIGZ1bmN0aW9uYWxpdHkgZm9yIGFsbCBhY3RpdmF0aW9uIHN0cmF0ZWdpZXNcbiAqXG4gKiBQcm92aWRlcyBjb21tb24gaGVscGVyIG1ldGhvZHMgdXNlZCBieSBtdWx0aXBsZSBzdHJhdGVneSBpbXBsZW1lbnRhdGlvbnM6XG4gKiAtIEZsZXhpYmxlIGVsZW1lbnQgZmluZGluZyAoYnkgbmFtZSBvciBmaWxlbmFtZSlcbiAqIC0gRXJyb3IgcmVzcG9uc2UgZm9ybWF0dGluZ1xuICovXG5cbmltcG9ydCB7IGZpbmRFbGVtZW50RmxleGlibHkgYXMgZmluZEhlbHBlciB9IGZyb20gJy4uL2VsZW1lbnQtY3J1ZC9oZWxwZXJzLmpzJztcbmltcG9ydCB7IEVsZW1lbnROb3RGb3VuZEVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbHMvRXJyb3JIYW5kbGVyLmpzJztcbmltcG9ydCB7IE1DUFJlc3BvbnNlIH0gZnJvbSAnLi9FbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5LmpzJztcbmltcG9ydCB7IGdldFBlcm1pc3Npb25Ib29rU3RhdHVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGVybWlzc2lvbkhvb2tzLmpzJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIHdpdGggc2hhcmVkIHV0aWxpdGllcyBmb3IgYWN0aXZhdGlvbiBzdHJhdGVnaWVzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQWN0aXZhdGlvblN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIEZpbmQgYW4gZWxlbWVudCBieSBuYW1lLCBzdXBwb3J0aW5nIGJvdGggZXhhY3QgZGlzcGxheSBuYW1lIGFuZCBmaWxlbmFtZSAoc2x1ZykgbWF0Y2hpbmdcbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvciBmaWxlbmFtZSB0byBzZWFyY2ggZm9yXG4gICAqIEBwYXJhbSBlbGVtZW50TGlzdCAtIExpc3Qgb2YgZWxlbWVudHMgdG8gc2VhcmNoIHRocm91Z2hcbiAgICogQHJldHVybnMgVGhlIGZvdW5kIGVsZW1lbnQgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgZmluZEVsZW1lbnRGbGV4aWJseShuYW1lOiBzdHJpbmcsIGVsZW1lbnRMaXN0OiBhbnlbXSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGZpbmRIZWxwZXIobmFtZSwgZWxlbWVudExpc3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHN0YW5kYXJkIGVycm9yIHJlc3BvbnNlXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIGVycm9yIG1lc3NhZ2VcbiAgICogQHJldHVybnMgTUNQLWZvcm1hdHRlZCBlcnJvciByZXNwb25zZVxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUVycm9yUmVzcG9uc2UobWVzc2FnZTogc3RyaW5nKTogTUNQUmVzcG9uc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogbWVzc2FnZVxuICAgICAgfV1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHN0YW5kYXJkIHN1Y2Nlc3MgcmVzcG9uc2VcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgc3VjY2VzcyBtZXNzYWdlXG4gICAqIEByZXR1cm5zIE1DUC1mb3JtYXR0ZWQgc3VjY2VzcyByZXNwb25zZVxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZVN1Y2Nlc3NSZXNwb25zZShtZXNzYWdlOiBzdHJpbmcpOiBNQ1BSZXNwb25zZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBtZXNzYWdlXG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhyb3cgYW4gRWxlbWVudE5vdEZvdW5kRXJyb3IgZm9yIG1pc3NpbmcgZWxlbWVudHMuXG4gICAqXG4gICAqIFRoaXMgcmVwbGFjZXMgdGhlIHByZXZpb3VzIGNyZWF0ZU5vdEZvdW5kUmVzcG9uc2Ugd2hpY2ggcmV0dXJuZWQgYSBzdWNjZXNzXG4gICAqIHJlc3BvbnNlIHdpdGggZXJyb3IgdGV4dC4gTm93IHdlIHRocm93IHRvIGVuc3VyZSBNQ1AtQVFMIHJldHVybnMgc3VjY2Vzcz1mYWxzZS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZWxlbWVudCB0aGF0IHdhc24ndCBmb3VuZFxuICAgKiBAcGFyYW0gdHlwZSAtIFRoZSB0eXBlIG9mIGVsZW1lbnQgKGZvciBlcnJvciBtZXNzYWdlKVxuICAgKiBAdGhyb3dzIHtFbGVtZW50Tm90Rm91bmRFcnJvcn0gQWx3YXlzIHRocm93c1xuICAgKiBAc2VlIElzc3VlICMyNzUgLSBIYW5kbGVycyByZXR1cm4gc3VjY2Vzcz10cnVlIGZvciBtaXNzaW5nIGVsZW1lbnRzXG4gICAqL1xuICBwcm90ZWN0ZWQgdGhyb3dOb3RGb3VuZEVycm9yKG5hbWU6IHN0cmluZywgdHlwZTogc3RyaW5nKTogbmV2ZXIge1xuICAgIHRocm93IG5ldyBFbGVtZW50Tm90Rm91bmRFcnJvcih0eXBlLCBuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhyb3dOb3RGb3VuZEVycm9yIGluc3RlYWQgdG8gZW5zdXJlIHByb3BlciBlcnJvciBoYW5kbGluZy5cbiAgICogVGhpcyBtZXRob2QgcmV0dXJucyBhIHN1Y2Nlc3MgcmVzcG9uc2Ugd2hpY2ggY2F1c2VzIE1DUC1BUUwgdG8gcmV0dXJuIHN1Y2Nlc3M9dHJ1ZS5cbiAgICogQHNlZSBJc3N1ZSAjMjc1IC0gSGFuZGxlcnMgcmV0dXJuIHN1Y2Nlc3M9dHJ1ZSBmb3IgbWlzc2luZyBlbGVtZW50c1xuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZU5vdEZvdW5kUmVzcG9uc2UobmFtZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBNQ1BSZXNwb25zZSB7XG4gICAgLy8gS2VlcCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBidXQgc3RyYXRlZ2llcyBzaG91bGQgbWlncmF0ZSB0byB0aHJvd05vdEZvdW5kRXJyb3JcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvclJlc3BvbnNlKGDinYwgJHt0eXBlfSAnJHtuYW1lfScgbm90IGZvdW5kYCk7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IGEgZmFpbC1zYWZlIHdhcm5pbmcgZm9yIGVsZW1lbnRzIHdpdGggQ0xJIGV4dGVybmFsIHJlc3RyaWN0aW9ucy5cbiAgICogQXBwZW5kZWQgdG8gYWN0aXZhdGlvbiB0ZXh0IHNvIHVzZXJzIGFyZSBhd2FyZSBvZiByZXN0cmljdGlvbnMgZXZlbiB3aGVuXG4gICAqIHBlcm1pc3Npb25fcHJvbXB0IGlzIG5vdCBhdmFpbGFibGUgKG5vbi1DbGF1ZGUtQ29kZSBjbGllbnRzKS5cbiAgICpcbiAgICogQHBhcmFtIG1ldGFkYXRhIC0gRWxlbWVudCBtZXRhZGF0YSAobWF5IGNvbnRhaW4gZ2F0ZWtlZXBlci5leHRlcm5hbFJlc3RyaWN0aW9ucylcbiAgICogQHJldHVybnMgV2FybmluZyB0ZXh0IG9yIGVtcHR5IHN0cmluZyBpZiBubyByZXN0cmljdGlvbnNcbiAgICogQHNlZSBJc3N1ZSAjNjQyIOKAlCBGYWlsLXNhZmUgZW5mb3JjZW1lbnQgZm9yIGV4dGVybmFsUmVzdHJpY3Rpb25zXG4gICAqL1xuICBwcm90ZWN0ZWQgZm9ybWF0UmVzdHJpY3Rpb25XYXJuaW5nKG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHN0cmluZyB7XG4gICAgY29uc3QgZ2F0ZWtlZXBlciA9IG1ldGFkYXRhPy5nYXRla2VlcGVyIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlc3RyaWN0aW9ucyA9IGdhdGVrZWVwZXI/LmV4dGVybmFsUmVzdHJpY3Rpb25zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIGlmICghcmVzdHJpY3Rpb25zKSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCBob29rU3RhdHVzID0gZ2V0UGVybWlzc2lvbkhvb2tTdGF0dXMoKTtcbiAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbaG9va1N0YXR1cy5pbnN0YWxsZWRcbiAgICAgID8gJ1xcbi0tLVxcbioqQ0xJIFBvbGljaWVzIExvYWRlZDoqKidcbiAgICAgIDogJ1xcbi0tLVxcbioqQ0xJIFBvbGljaWVzIExvYWRlZCAoSG9vayBOb3QgRGV0ZWN0ZWQpOioqJ107XG4gICAgaWYgKHJlc3RyaWN0aW9ucy5kZXNjcmlwdGlvbikge1xuICAgICAgcGFydHMucHVzaChgPiAke3Jlc3RyaWN0aW9ucy5kZXNjcmlwdGlvbn1gKTtcbiAgICB9XG4gICAgY29uc3QgZGVueVBhdHRlcm5zID0gcmVzdHJpY3Rpb25zLmRlbnlQYXR0ZXJucyBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICBpZiAoZGVueVBhdHRlcm5zPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHNob3duID0gZGVueVBhdHRlcm5zLnNsaWNlKDAsIDUpLmpvaW4oJywgJyk7XG4gICAgICBwYXJ0cy5wdXNoKGA+IERlbmllZDogJHtzaG93bn0ke2RlbnlQYXR0ZXJucy5sZW5ndGggPiA1ID8gJy4uLicgOiAnJ31gKTtcbiAgICB9XG4gICAgY29uc3QgYWxsb3dQYXR0ZXJucyA9IHJlc3RyaWN0aW9ucy5hbGxvd1BhdHRlcm5zIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgIGlmIChhbGxvd1BhdHRlcm5zPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHNob3duID0gYWxsb3dQYXR0ZXJucy5zbGljZSgwLCA1KS5qb2luKCcsICcpO1xuICAgICAgcGFydHMucHVzaChgPiBBbGxvd2VkIG9ubHk6ICR7c2hvd259JHthbGxvd1BhdHRlcm5zLmxlbmd0aCA+IDUgPyAnLi4uJyA6ICcnfWApO1xuICAgIH1cbiAgICBjb25zdCBhcHByb3ZhbFBvbGljeSA9IHJlc3RyaWN0aW9ucy5hcHByb3ZhbFBvbGljeSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCByZXF1aXJlQXBwcm92YWwgPSBhcHByb3ZhbFBvbGljeT8ucmVxdWlyZUFwcHJvdmFsIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgIGlmIChyZXF1aXJlQXBwcm92YWw/Lmxlbmd0aCkge1xuICAgICAgcGFydHMucHVzaChgPiBSZXF1aXJlcyBhcHByb3ZhbCBmb3I6ICR7cmVxdWlyZUFwcHJvdmFsLmpvaW4oJywgJyl9IHJpc2sgdG9vbHNgKTtcbiAgICB9XG4gICAgcGFydHMucHVzaCgnPiBVc2UgYGdldF9lZmZlY3RpdmVfY2xpX3BvbGljaWVzYCB0byBzZWUgY29tYmluZWQgcG9saWN5IHN0YXRlLicpO1xuICAgIGlmIChob29rU3RhdHVzLmluc3RhbGxlZCkge1xuICAgICAgcGFydHMucHVzaChgPiBQZXJtaXNzaW9uIGhvb2sgZGV0ZWN0ZWQgZm9yICR7aG9va1N0YXR1cy5ob3N0ID8/ICd0aGlzIGNsaWVudCd9LiBFbmZvcmNlbWVudCBkZXBlbmRzIG9uIHVzaW5nIHRoYXQgY2xpZW50IGNvbmZpZ3VyYXRpb24uYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRzLnB1c2goXG4gICAgICAgICc+IE5vIHBlcm1pc3Npb24gaG9vayBkZXRlY3RlZC4gVGhlc2UgcG9saWNpZXMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGVuZm9yY2VkIHVubGVzcyB0aGUgQ0xJIGlzIGxhdW5jaGVkIHdpdGggYC0tcGVybWlzc2lvbi1wcm9tcHQtdG9vbGAuJyxcbiAgICAgICAgJz4gUnVuIGBvcGVuX3NldHVwYCBhbmQgcmVpbnN0YWxsIHRvIHdpcmUgYXV0b21hdGljIGVuZm9yY2VtZW50LicsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcGFydHMuam9pbignXFxuJyk7XG4gIH1cbn1cbiJdfQ==
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUFjdGl2YXRpb25TdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oYW5kbGVycy9zdHJhdGVnaWVzL0Jhc2VBY3RpdmF0aW9uU3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLG1CQUFtQixJQUFJLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRW5FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWxGOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixzQkFBc0I7SUFDMUM7Ozs7O09BS0c7SUFDTyxLQUFLLENBQUMsbUJBQW1CLENBQUMsSUFBWSxFQUFFLFdBQWtCO1FBQ2xFLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLG1CQUFtQixDQUFDLE9BQWU7UUFDM0MsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDO29CQUNSLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxPQUFPO2lCQUNkLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxxQkFBcUIsQ0FBQyxPQUFlO1FBQzdDLE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FBQztvQkFDUixJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsT0FBTztpQkFDZCxDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ08sa0JBQWtCLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDckQsTUFBTSxJQUFJLG9CQUFvQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3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QUFPO1lBQ0wsT0FBTztZQUNQLGdDQUFnQztZQUNoQyxLQUFLLFdBQVcsQ0FBQyxPQUFPLEVBQUU7WUFDMUIsc0hBQXNIO1lBQ3RILGtGQUFrRjtTQUNuRixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQmFzZUFjdGl2YXRpb25TdHJhdGVneSAtIFNoYXJlZCBmdW5jdGlvbmFsaXR5IGZvciBhbGwgYWN0aXZhdGlvbiBzdHJhdGVnaWVzXG4gKlxuICogUHJvdmlkZXMgY29tbW9uIGhlbHBlciBtZXRob2RzIHVzZWQgYnkgbXVsdGlwbGUgc3RyYXRlZ3kgaW1wbGVtZW50YXRpb25zOlxuICogLSBGbGV4aWJsZSBlbGVtZW50IGZpbmRpbmcgKGJ5IG5hbWUgb3IgZmlsZW5hbWUpXG4gKiAtIEVycm9yIHJlc3BvbnNlIGZvcm1hdHRpbmdcbiAqL1xuXG5pbXBvcnQgeyBmaW5kRWxlbWVudEZsZXhpYmx5IGFzIGZpbmRIZWxwZXIgfSBmcm9tICcuLi9lbGVtZW50LWNydWQvaGVscGVycy5qcyc7XG5pbXBvcnQgeyBFbGVtZW50Tm90Rm91bmRFcnJvciB9IGZyb20gJy4uLy4uL3V0aWxzL0Vycm9ySGFuZGxlci5qcyc7XG5pbXBvcnQgeyBNQ1BSZXNwb25zZSB9IGZyb20gJy4vRWxlbWVudEFjdGl2YXRpb25TdHJhdGVneS5qcyc7XG5pbXBvcnQgeyBnZXRQZXJtaXNzaW9uSG9va1N0YXR1cyB9IGZyb20gJy4uLy4uL3V0aWxzL3Blcm1pc3Npb25Ib29rcy5qcyc7XG5pbXBvcnQgeyBnZXRHYXRla2VlcGVyRGlhZ25vc3RpY3MgfSBmcm9tICcuLi9tY3AtYXFsL3BvbGljaWVzL0VsZW1lbnRQb2xpY2llcy5qcyc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyB3aXRoIHNoYXJlZCB1dGlsaXRpZXMgZm9yIGFjdGl2YXRpb24gc3RyYXRlZ2llc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUFjdGl2YXRpb25TdHJhdGVneSB7XG4gIC8qKlxuICAgKiBGaW5kIGFuIGVsZW1lbnQgYnkgbmFtZSwgc3VwcG9ydGluZyBib3RoIGV4YWN0IGRpc3BsYXkgbmFtZSBhbmQgZmlsZW5hbWUgKHNsdWcpIG1hdGNoaW5nXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb3IgZmlsZW5hbWUgdG8gc2VhcmNoIGZvclxuICAgKiBAcGFyYW0gZWxlbWVudExpc3QgLSBMaXN0IG9mIGVsZW1lbnRzIHRvIHNlYXJjaCB0aHJvdWdoXG4gICAqIEByZXR1cm5zIFRoZSBmb3VuZCBlbGVtZW50IG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGZpbmRFbGVtZW50RmxleGlibHkobmFtZTogc3RyaW5nLCBlbGVtZW50TGlzdDogYW55W10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBmaW5kSGVscGVyKG5hbWUsIGVsZW1lbnRMaXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBzdGFuZGFyZCBlcnJvciByZXNwb25zZVxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBlcnJvciBtZXNzYWdlXG4gICAqIEByZXR1cm5zIE1DUC1mb3JtYXR0ZWQgZXJyb3IgcmVzcG9uc2VcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVFcnJvclJlc3BvbnNlKG1lc3NhZ2U6IHN0cmluZyk6IE1DUFJlc3BvbnNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IG1lc3NhZ2VcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBzdGFuZGFyZCBzdWNjZXNzIHJlc3BvbnNlXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIHN1Y2Nlc3MgbWVzc2FnZVxuICAgKiBAcmV0dXJucyBNQ1AtZm9ybWF0dGVkIHN1Y2Nlc3MgcmVzcG9uc2VcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVTdWNjZXNzUmVzcG9uc2UobWVzc2FnZTogc3RyaW5nKTogTUNQUmVzcG9uc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogbWVzc2FnZVxuICAgICAgfV1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRocm93IGFuIEVsZW1lbnROb3RGb3VuZEVycm9yIGZvciBtaXNzaW5nIGVsZW1lbnRzLlxuICAgKlxuICAgKiBUaGlzIHJlcGxhY2VzIHRoZSBwcmV2aW91cyBjcmVhdGVOb3RGb3VuZFJlc3BvbnNlIHdoaWNoIHJldHVybmVkIGEgc3VjY2Vzc1xuICAgKiByZXNwb25zZSB3aXRoIGVycm9yIHRleHQuIE5vdyB3ZSB0aHJvdyB0byBlbnN1cmUgTUNQLUFRTCByZXR1cm5zIHN1Y2Nlc3M9ZmFsc2UuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGVsZW1lbnQgdGhhdCB3YXNuJ3QgZm91bmRcbiAgICogQHBhcmFtIHR5cGUgLSBUaGUgdHlwZSBvZiBlbGVtZW50IChmb3IgZXJyb3IgbWVzc2FnZSlcbiAgICogQHRocm93cyB7RWxlbWVudE5vdEZvdW5kRXJyb3J9IEFsd2F5cyB0aHJvd3NcbiAgICogQHNlZSBJc3N1ZSAjMjc1IC0gSGFuZGxlcnMgcmV0dXJuIHN1Y2Nlc3M9dHJ1ZSBmb3IgbWlzc2luZyBlbGVtZW50c1xuICAgKi9cbiAgcHJvdGVjdGVkIHRocm93Tm90Rm91bmRFcnJvcihuYW1lOiBzdHJpbmcsIHR5cGU6IHN0cmluZyk6IG5ldmVyIHtcbiAgICB0aHJvdyBuZXcgRWxlbWVudE5vdEZvdW5kRXJyb3IodHlwZSwgbmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRocm93Tm90Rm91bmRFcnJvciBpbnN0ZWFkIHRvIGVuc3VyZSBwcm9wZXIgZXJyb3IgaGFuZGxpbmcuXG4gICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdWNjZXNzIHJlc3BvbnNlIHdoaWNoIGNhdXNlcyBNQ1AtQVFMIHRvIHJldHVybiBzdWNjZXNzPXRydWUuXG4gICAqIEBzZWUgSXNzdWUgIzI3NSAtIEhhbmRsZXJzIHJldHVybiBzdWNjZXNzPXRydWUgZm9yIG1pc3NpbmcgZWxlbWVudHNcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVOb3RGb3VuZFJlc3BvbnNlKG5hbWU6IHN0cmluZywgdHlwZTogc3RyaW5nKTogTUNQUmVzcG9uc2Uge1xuICAgIC8vIEtlZXAgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYnV0IHN0cmF0ZWdpZXMgc2hvdWxkIG1pZ3JhdGUgdG8gdGhyb3dOb3RGb3VuZEVycm9yXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3JSZXNwb25zZShg4p2MICR7dHlwZX0gJyR7bmFtZX0nIG5vdCBmb3VuZGApO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBhIGZhaWwtc2FmZSB3YXJuaW5nIGZvciBlbGVtZW50cyB3aXRoIENMSSBleHRlcm5hbCByZXN0cmljdGlvbnMuXG4gICAqIEFwcGVuZGVkIHRvIGFjdGl2YXRpb24gdGV4dCBzbyB1c2VycyBhcmUgYXdhcmUgb2YgcmVzdHJpY3Rpb25zIGV2ZW4gd2hlblxuICAgKiBwZXJtaXNzaW9uX3Byb21wdCBpcyBub3QgYXZhaWxhYmxlIChub24tQ2xhdWRlLUNvZGUgY2xpZW50cykuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRhZGF0YSAtIEVsZW1lbnQgbWV0YWRhdGEgKG1heSBjb250YWluIGdhdGVrZWVwZXIuZXh0ZXJuYWxSZXN0cmljdGlvbnMpXG4gICAqIEByZXR1cm5zIFdhcm5pbmcgdGV4dCBvciBlbXB0eSBzdHJpbmcgaWYgbm8gcmVzdHJpY3Rpb25zXG4gICAqIEBzZWUgSXNzdWUgIzY0MiDigJQgRmFpbC1zYWZlIGVuZm9yY2VtZW50IGZvciBleHRlcm5hbFJlc3RyaWN0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIGZvcm1hdFJlc3RyaWN0aW9uV2FybmluZyhtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhdGVrZWVwZXIgPSBtZXRhZGF0YT8uZ2F0ZWtlZXBlciBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCByZXN0cmljdGlvbnMgPSBnYXRla2VlcGVyPy5leHRlcm5hbFJlc3RyaWN0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIXJlc3RyaWN0aW9ucykgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgaG9va1N0YXR1cyA9IGdldFBlcm1pc3Npb25Ib29rU3RhdHVzKCk7XG4gICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW2hvb2tTdGF0dXMuaW5zdGFsbGVkXG4gICAgICA/ICdcXG4tLS1cXG4qKkNMSSBQb2xpY2llcyBMb2FkZWQ6KionXG4gICAgICA6ICdcXG4tLS1cXG4qKkNMSSBQb2xpY2llcyBMb2FkZWQgKEhvb2sgTm90IERldGVjdGVkKToqKiddO1xuICAgIGlmIChyZXN0cmljdGlvbnMuZGVzY3JpcHRpb24pIHtcbiAgICAgIHBhcnRzLnB1c2goYD4gJHtyZXN0cmljdGlvbnMuZGVzY3JpcHRpb259YCk7XG4gICAgfVxuICAgIGNvbnN0IGRlbnlQYXR0ZXJucyA9IHJlc3RyaWN0aW9ucy5kZW55UGF0dGVybnMgYXMgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgaWYgKGRlbnlQYXR0ZXJucz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzaG93biA9IGRlbnlQYXR0ZXJucy5zbGljZSgwLCA1KS5qb2luKCcsICcpO1xuICAgICAgcGFydHMucHVzaChgPiBEZW5pZWQ6ICR7c2hvd259JHtkZW55UGF0dGVybnMubGVuZ3RoID4gNSA/ICcuLi4nIDogJyd9YCk7XG4gICAgfVxuICAgIGNvbnN0IGFsbG93UGF0dGVybnMgPSByZXN0cmljdGlvbnMuYWxsb3dQYXR0ZXJucyBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICBpZiAoYWxsb3dQYXR0ZXJucz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzaG93biA9IGFsbG93UGF0dGVybnMuc2xpY2UoMCwgNSkuam9pbignLCAnKTtcbiAgICAgIHBhcnRzLnB1c2goYD4gQWxsb3dlZCBvbmx5OiAke3Nob3dufSR7YWxsb3dQYXR0ZXJucy5sZW5ndGggPiA1ID8gJy4uLicgOiAnJ31gKTtcbiAgICB9XG4gICAgY29uc3QgYXBwcm92YWxQb2xpY3kgPSByZXN0cmljdGlvbnMuYXBwcm92YWxQb2xpY3kgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmVxdWlyZUFwcHJvdmFsID0gYXBwcm92YWxQb2xpY3k/LnJlcXVpcmVBcHByb3ZhbCBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICBpZiAocmVxdWlyZUFwcHJvdmFsPy5sZW5ndGgpIHtcbiAgICAgIHBhcnRzLnB1c2goYD4gUmVxdWlyZXMgYXBwcm92YWwgZm9yOiAke3JlcXVpcmVBcHByb3ZhbC5qb2luKCcsICcpfSByaXNrIHRvb2xzYCk7XG4gICAgfVxuICAgIHBhcnRzLnB1c2goJz4gVXNlIGBnZXRfZWZmZWN0aXZlX2NsaV9wb2xpY2llc2AgdG8gc2VlIGNvbWJpbmVkIHBvbGljeSBzdGF0ZS4nKTtcbiAgICBpZiAoaG9va1N0YXR1cy5pbnN0YWxsZWQpIHtcbiAgICAgIHBhcnRzLnB1c2goYD4gUGVybWlzc2lvbiBob29rIGRldGVjdGVkIGZvciAke2hvb2tTdGF0dXMuaG9zdCA/PyAndGhpcyBjbGllbnQnfS4gRW5mb3JjZW1lbnQgZGVwZW5kcyBvbiB1c2luZyB0aGF0IGNsaWVudCBjb25maWd1cmF0aW9uLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAnPiBObyBwZXJtaXNzaW9uIGhvb2sgZGV0ZWN0ZWQuIFRoZXNlIHBvbGljaWVzIGFyZSBub3QgYXV0b21hdGljYWxseSBlbmZvcmNlZCB1bmxlc3MgdGhlIENMSSBpcyBsYXVuY2hlZCB3aXRoIGAtLXBlcm1pc3Npb24tcHJvbXB0LXRvb2xgLicsXG4gICAgICAgICc+IFJ1biBgb3Blbl9zZXR1cGAgYW5kIHJlaW5zdGFsbCB0byB3aXJlIGF1dG9tYXRpYyBlbmZvcmNlbWVudC4nLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZvcm1hdEdhdGVrZWVwZXJWYWxpZGl0eVdhcm5pbmcobWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogc3RyaW5nIHtcbiAgICBjb25zdCBkaWFnbm9zdGljcyA9IGdldEdhdGVrZWVwZXJEaWFnbm9zdGljcyhtZXRhZGF0YSk7XG4gICAgaWYgKCFkaWFnbm9zdGljcykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICAnXFxuLS0tJyxcbiAgICAgICcqKkdhdGVrZWVwZXIgUG9saWN5IFdhcm5pbmc6KionLFxuICAgICAgYD4gJHtkaWFnbm9zdGljcy5tZXNzYWdlfWAsXG4gICAgICAnPiBUaGlzIGVsZW1lbnQgY2FuIHN0aWxsIGFjdGl2YXRlIGFuZCBkbyBpdHMgbm9ybWFsIHdvcmssIGJ1dCBpdHMgbWFsZm9ybWVkIGdhdGVrZWVwZXIgcG9saWN5IGlzIG5vdCBiZWluZyBlbmZvcmNlZC4nLFxuICAgICAgJz4gRml4IHRoZSBwb2xpY3kgc3RydWN0dXJlIGFuZCByZWFjdGl2YXRlIGlmIHlvdSB3YW50IHBlcm1pc3Npb24gcnVsZXMgdG8gYXBwbHkuJyxcbiAgICBdLmpvaW4oJ1xcbicpO1xuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"EnsembleActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/EnsembleActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIxF,qBAAa,0BAA2B,SAAQ,sBAAuB,YAAW,yBAAyB;IAEvG,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBANd,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc;IAKjD;;;OAGG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA8DlD;;;;;;OAMG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAepD,OAAO,CAAC,WAAW;YAWL,iBAAiB;YAOjB,gBAAgB;IA+B9B;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IAyB/C;;;OAGG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAmC5D"}
1
+ {"version":3,"file":"EnsembleActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/EnsembleActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIxF,qBAAa,0BAA2B,SAAQ,sBAAuB,YAAW,yBAAyB;IAEvG,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBANd,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc;IAKjD;;;OAGG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAmElD;;;;;;OAMG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAepD,OAAO,CAAC,WAAW;YAWL,iBAAiB;YAOjB,gBAAgB;IA+B9B;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IAyB/C;;;OAGG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAmC5D"}