@dollhousemcp/mcp-server 2.0.13 → 2.0.15

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 (35) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/di/Container.d.ts.map +1 -1
  3. package/dist/di/Container.js +19 -9
  4. package/dist/elements/BaseElement.js +2 -2
  5. package/dist/elements/memories/Memory.d.ts.map +1 -1
  6. package/dist/elements/memories/Memory.js +3 -3
  7. package/dist/elements/skills/Skill.d.ts.map +1 -1
  8. package/dist/elements/skills/Skill.js +4 -4
  9. package/dist/elements/templates/Template.d.ts.map +1 -1
  10. package/dist/elements/templates/Template.js +4 -4
  11. package/dist/generated/version.d.ts +2 -2
  12. package/dist/generated/version.js +3 -3
  13. package/dist/handlers/ElementCRUDHandler.d.ts +10 -0
  14. package/dist/handlers/ElementCRUDHandler.d.ts.map +1 -1
  15. package/dist/handlers/ElementCRUDHandler.js +123 -1
  16. package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts +1 -0
  17. package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
  18. package/dist/handlers/mcp-aql/MCPAQLHandler.js +31 -2
  19. package/dist/services/ActivationStore.d.ts +20 -0
  20. package/dist/services/ActivationStore.d.ts.map +1 -1
  21. package/dist/services/ActivationStore.js +104 -1
  22. package/dist/web/console/IngestRoutes.d.ts +1 -0
  23. package/dist/web/console/IngestRoutes.d.ts.map +1 -1
  24. package/dist/web/console/IngestRoutes.js +4 -1
  25. package/dist/web/console/UnifiedConsole.js +2 -1
  26. package/dist/web/public/permissions.css +224 -16
  27. package/dist/web/public/permissions.js +326 -63
  28. package/dist/web/public/sessions.js +218 -98
  29. package/dist/web/public/styles.css +15 -10
  30. package/dist/web/routes/permissionRoutes.d.ts.map +1 -1
  31. package/dist/web/routes/permissionRoutes.js +57 -19
  32. package/dist/web/server.d.ts.map +1 -1
  33. package/dist/web/server.js +2 -1
  34. package/package.json +1 -1
  35. package/server.json +2 -2
@@ -327,7 +327,7 @@ export class BaseElement {
327
327
  // Update properties
328
328
  this.id = parsed.id;
329
329
  this.type = parsed.type;
330
- this.version = parsed.version || '1.0.0';
330
+ this.version = normalizeVersion(String(parsed.version ?? '1.0.0'));
331
331
  this.metadata = parsed.metadata;
332
332
  this.references = parsed.references || [];
333
333
  this.extensions = parsed.extensions || {};
@@ -543,4 +543,4 @@ export class BaseElement {
543
543
  this._isDirty = false;
544
544
  }
545
545
  }
546
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWxlbWVudHMvQmFzZUVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUdMLGFBQWEsRUFRZCxNQUFNLDRCQUE0QixDQUFDO0FBRXBDLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxJQUFJLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHbkU7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFlO0lBQzlDLHlEQUF5RDtJQUN6RCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7SUFFeEUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsNkNBQTZDO1FBQzdDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7SUFFL0QsZ0RBQWdEO0lBQ2hELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRTlELE9BQU8sR0FBRyxlQUFlLElBQUksZUFBZSxJQUFJLGVBQWUsR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUM3RSxDQUFDO0FBRUQsTUFBTSxPQUFnQixXQUFXO0lBQy9CLFdBQVc7SUFDSixFQUFFLENBQVM7SUFDWCxJQUFJLENBQWM7SUFDbEIsT0FBTyxDQUFTO0lBRXZCLFdBQVc7SUFDSixRQUFRLENBQW1CO0lBRWxDLDBDQUEwQztJQUMxQyxpRkFBaUY7SUFDakYsK0VBQStFO0lBQy9FLGtFQUFrRTtJQUNsRSw0RkFBNEY7SUFDbEYsYUFBYSxHQUFXLEVBQUUsQ0FBQztJQUMzQixRQUFRLEdBQVcsRUFBRSxDQUFDO0lBRWhDLElBQVcsWUFBWSxLQUFhLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDaEUsSUFBVyxZQUFZLENBQUMsS0FBYSxJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUV0RSxJQUFXLE9BQU8sS0FBYSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3RELElBQVcsT0FBTyxDQUFDLEtBQWEsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFNUQsV0FBVztJQUNKLFVBQVUsQ0FBZTtJQUN6QixVQUFVLENBQXVCO0lBQ2pDLE9BQU8sQ0FBa0I7SUFFaEMsaUJBQWlCO0lBQ1AsT0FBTyxHQUFrQixhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ2hELFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFcEMsWUFBWTtJQUNLLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztJQUU1QyxZQUNFLElBQWlCLEVBQ2pCLFdBQXNDLEVBQUUsRUFDeEMsZUFBZ0MsQ0FBRSw0QkFBNEI7O1FBRTlELHNFQUFzRTtRQUN0RSxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRTtZQUNuRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUUseURBQXlEO1NBQ2xGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RFLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBRSxvRUFBb0U7UUFFbkgsb0NBQW9DO1FBQ3BDLE1BQU0sWUFBWSxHQUFRO1lBQ3hCLEdBQUcsVUFBVTtZQUNiLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFFLHFDQUFxQztTQUN2RCxDQUFDO1FBRUYsdUVBQXVFO1FBQ3ZFLGdGQUFnRjtRQUVoRiw4Q0FBOEM7UUFDOUMsSUFBSSxVQUFVLElBQUksUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUUsUUFBZ0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3hFLFlBQVksQ0FBQyxRQUFRLEdBQUksUUFBZ0IsQ0FBQyxRQUFRLENBQUM7UUFDckQsQ0FBQztRQUVELDJFQUEyRTtRQUMzRSwrRUFBK0U7UUFDL0UsSUFBSSxVQUFVLElBQUksUUFBUSxFQUFFLENBQUM7WUFDM0IsWUFBWSxDQUFDLFFBQVEsR0FBSSxRQUFnQixDQUFDLFFBQVEsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsSUFBSSxVQUFVLElBQUksUUFBUSxFQUFFLENBQUM7WUFDM0IsWUFBWSxDQUFDLFFBQVEsR0FBSSxRQUFnQixDQUFDLFFBQVEsQ0FBQztRQUNyRCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7UUFFN0IsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixRQUFRLEVBQUUsQ0FBQztZQUNYLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLFdBQVcsRUFBRSxDQUFDO1lBQ2QsYUFBYSxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ3pCLFVBQVUsRUFBRSxDQUFDO1lBQ2IsS0FBSyxFQUFFLFFBQVE7WUFDZixlQUFlLEVBQUUsRUFBRTtTQUNwQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNPLFVBQVUsQ0FBQyxJQUFZO1FBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekMsTUFBTSxRQUFRLEdBQUcsSUFBSTthQUNsQixXQUFXLEVBQUU7YUFDYixVQUFVLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFFLDhDQUE4QzthQUM5RSxVQUFVLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUcsZ0NBQWdDO1FBQ25FLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU3QixPQUFPLEdBQUcsUUFBUSxJQUFJLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksUUFBUTtRQUNiLE1BQU0sTUFBTSxHQUFzQixFQUFFLENBQUM7UUFDckMsTUFBTSxRQUFRLEdBQXdCLEVBQUUsQ0FBQztRQUN6QyxNQUFNLFdBQVcsR0FBYSxFQUFFLENBQUM7UUFFakMsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDNUQsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUMvRSxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzFFLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ1osS0FBSyxFQUFFLHNCQUFzQjtnQkFDN0IsT0FBTyxFQUFFLG9DQUFvQztnQkFDN0MsUUFBUSxFQUFFLFFBQVE7YUFDbkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELDJFQUEyRTtRQUMzRSxnRkFBZ0Y7UUFDaEYsMkZBQTJGO1FBQzNGLHlFQUF5RTtRQUN6RSx1RkFBdUY7UUFDdkYsd0VBQXdFO1FBQ3hFLE1BQU0sb0JBQW9CLEdBQUcsNERBQTRELENBQUM7UUFDMUYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNWLEtBQUssRUFBRSxTQUFTO2dCQUNoQixPQUFPLEVBQUUsb1VBQW9VO2dCQUM3VSxJQUFJLEVBQUUsd0JBQXdCO2FBQy9CLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUM7d0JBQ1YsS0FBSyxFQUFFLGNBQWMsS0FBSyxPQUFPO3dCQUNqQyxPQUFPLEVBQUUsMkJBQTJCO3FCQUNyQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUMxQyxRQUFRLENBQUMsSUFBSSxDQUFDO3dCQUNaLEtBQUssRUFBRSxjQUFjLEtBQUssU0FBUzt3QkFDbkMsT0FBTyxFQUFFLGdDQUFnQzt3QkFDekMsUUFBUSxFQUFFLEtBQUs7cUJBQ2hCLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsOEJBQThCO1FBQzlCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMzRCxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNWLEtBQUssRUFBRSxrQkFBa0I7b0JBQ3pCLE9BQU8sRUFBRSxtQ0FBbUM7aUJBQzdDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxLQUFLLFNBQVM7Z0JBQ3JDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pFLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ1YsS0FBSyxFQUFFLG9CQUFvQjtvQkFDM0IsT0FBTyxFQUFFLHFDQUFxQztpQkFDL0MsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFRCxrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxXQUFXLENBQUMsSUFBSSxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLFdBQVcsQ0FBQyxJQUFJLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRUQsT0FBTztZQUNMLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDOUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDcEQsV0FBVyxFQUFFLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDOUQsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSSxlQUFlO1FBQ3BCLE1BQU0sSUFBSSxHQUFHO1lBQ1gsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUztRQUNkLDJEQUEyRDtRQUMzRCxtREFBbUQ7UUFDbkQsTUFBTSxXQUFXLEdBQXdCO1lBQ3ZDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRyw4QkFBOEI7WUFDakQsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCLENBQUM7UUFFRiwrRUFBK0U7UUFDL0UsZ0RBQWdEO1FBQ2hELElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNkLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRztnQkFDWixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7YUFDakIsQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlDLFdBQVcsQ0FBQyxPQUFPLEdBQUc7Z0JBQ3BCLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7Z0JBQy9CLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVU7Z0JBQ25DLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7YUFDdEMsQ0FBQztRQUNKLENBQUM7UUFFRCwyQ0FBMkM7UUFDM0MsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTNELHlDQUF5QztRQUN6QywrRUFBK0U7UUFDL0UsSUFBSSxlQUF1QixDQUFDO1FBQzVCLElBQUksQ0FBQztZQUNILGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUM1QyxNQUFNLEVBQUUsSUFBSSxFQUFXLDRCQUE0QjtnQkFDbkQsUUFBUSxFQUFFLEtBQUssRUFBUSxpQkFBaUI7Z0JBQ3hDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBVSxtQkFBbUI7Z0JBQzFDLFdBQVcsRUFBRSxHQUFHLEVBQU8sZ0NBQWdDO2dCQUN2RCxXQUFXLEVBQUUsS0FBSyxFQUFLLDRCQUE0QjtnQkFDbkQsV0FBVyxFQUFFLEtBQUssQ0FBSyw0QkFBNEI7YUFDcEQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixtRUFBbUU7WUFDbkUsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQzlGLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDL0gsQ0FBQztRQUVELHdFQUF3RTtRQUN4RSx5RkFBeUY7UUFDekYsSUFBSSxDQUFDO1lBQ0gsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtnQkFDdEMsV0FBVyxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsNkJBQTZCO2dCQUNyRCxlQUFlLEVBQUUsSUFBSTthQUN0QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7WUFDekUsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUM1RyxDQUFDO1FBRUQsMEVBQTBFO1FBQzFFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUV0SCwrREFBK0Q7UUFDL0QsT0FBTyxRQUFRLGVBQWUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxPQUFPLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBUUQ7OztPQUdHO0lBQ0ssZUFBZSxDQUFDLEdBQVE7UUFDOUIsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN0QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxHQUFHO2lCQUNQLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3ZDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixNQUFNLE9BQU8sR0FBUSxFQUFFLENBQUM7WUFDeEIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakQsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUM7Z0JBQzlCLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFdBQVcsQ0FBQyxJQUFZO1FBQzdCLElBQUksQ0FBQztZQUNILHlDQUF5QztZQUN6QyxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFFOUQsMkJBQTJCO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkQsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1lBQ25FLENBQUM7WUFFRCxvQkFBb0I7WUFDcEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBRTlCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2Ysc0NBQXNDO1lBQ3RDLE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RSxNQUFNLFVBQVUsR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFFcEUsTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsRUFBRTtnQkFDNUMsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLEtBQUssRUFBRSxVQUFVO2dCQUNqQixXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsOEJBQThCO2dCQUNuRSxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDdkIsQ0FBQyxDQUFDO1lBRUgsMENBQTBDO1lBQzFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxLQUFLLENBQUMsdUNBQXVDLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDMUYsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7Z0JBQzNCLGdCQUFnQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDakMsQ0FBQztZQUNELE1BQU0sZ0JBQWdCLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWUsQ0FBQyxRQUFnQixFQUFFLE9BQXlCO1FBQ2hFLHFEQUFxRDtRQUNyRCxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxNQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDO1FBRTlELDZDQUE2QztRQUM3QyxlQUFlLENBQUMsZ0JBQWdCLENBQUM7WUFDL0IsSUFBSSxFQUFFLDJCQUEyQjtZQUNqQyxRQUFRLEVBQUUsS0FBSztZQUNmLE1BQU0sRUFBRSw2QkFBNkI7WUFDckMsT0FBTyxFQUFFLGtDQUFrQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDakUsY0FBYyxFQUFFO2dCQUNkLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDdEIsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNsQixjQUFjLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQy9CLGdCQUFnQixFQUFFLENBQUMsZ0JBQWdCLENBQUMsT0FBTzthQUM1QztTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRztnQkFDYixRQUFRLEVBQUUsQ0FBQztnQkFDWCxVQUFVLEVBQUUsU0FBUztnQkFDckIsV0FBVyxFQUFFLENBQUM7Z0JBQ2QsYUFBYSxFQUFFLElBQUksSUFBSSxFQUFFO2dCQUN6QixVQUFVLEVBQUUsQ0FBQztnQkFDYixLQUFLLEVBQUUsUUFBUTtnQkFDZixlQUFlLEVBQUUsRUFBRTthQUNwQixDQUFDO1FBQ0osQ0FBQztRQUVELGdEQUFnRDtRQUNoRCxNQUFNLFlBQVksR0FBaUI7WUFDakMsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ3JCLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQztZQUNwRCxjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQztZQUNwRCxPQUFPO1lBQ1AsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQzdCLENBQUM7UUFFRixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFaEQsMkJBQTJCO1FBQzNCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzlGLE1BQU0sQ0FBQyxLQUFLLENBQUMsK0JBQStCLElBQUksQ0FBQyxvQkFBb0Isd0JBQXdCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFHLENBQUM7UUFFRCx3Q0FBd0M7UUFDeEMsSUFBSSxZQUFZLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDTyxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUN6QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFckMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEcsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFekcsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDaEYsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFaEYsSUFBSSxhQUFhLEdBQUcsYUFBYTtZQUFFLE9BQU8sVUFBVSxDQUFDO1FBQ3JELElBQUksYUFBYSxHQUFHLGFBQWE7WUFBRSxPQUFPLFVBQVUsQ0FBQztRQUNyRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7OztPQUdHO0lBQ08sV0FBVyxDQUFDLFFBQWdCO1FBQ3BDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFckMsNEJBQTRCO1FBQzVCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNqRSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsSUFBSSxNQUFNLElBQUksQ0FBQyxJQUFJLE1BQU0sSUFBSSxDQUFDO2dCQUFFLE9BQU8sTUFBTSxDQUFDO1FBQ2hELENBQUM7UUFFRCx1QkFBdUI7UUFDdkIsSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDN0IsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO2dCQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZFLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztnQkFBRSxPQUFPLENBQUMsQ0FBQztZQUNyRSxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7YUFBTSxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNwQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEUsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzlELE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUVELE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVTtJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDTyxnQkFBZ0IsQ0FBQyxTQUFpQjtRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRTFCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDO2FBQU0sQ0FBQztZQUNOLDRCQUE0QjtZQUM1QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7WUFDbkYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDbkUsQ0FBQztRQUVELHlCQUF5QjtRQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUUzRSxvREFBb0Q7UUFDcEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JFLE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RCxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzVFLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFNUUsSUFBSSxhQUFhLEdBQUcsYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQztRQUNuQyxDQUFDO2FBQU0sSUFBSSxhQUFhLEdBQUcsYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQztRQUNuQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGNBQWM7UUFDekIsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxDQUFDLElBQUksYUFBYSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDO0lBQzFDLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBUTtRQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxhQUFhLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0Qsc0VBQXNFO1FBQ3RFLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUN0QyxDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWE7UUFDeEIsTUFBTSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsSUFBSSxDQUFDLElBQUksYUFBYSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUFVO1FBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLGFBQWEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQztRQUMxQyw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNPLFNBQVM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNJLFNBQVM7UUFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJhc2UgYWJzdHJhY3QgY2xhc3MgaW1wbGVtZW50aW5nIElFbGVtZW50IGludGVyZmFjZS5cbiAqIFByb3ZpZGVzIGNvbW1vbiBmdW5jdGlvbmFsaXR5IHRoYXQgYWxsIGVsZW1lbnQgdHlwZXMgY2FuIGV4dGVuZC5cbiAqL1xuXG5pbXBvcnQge1xuICBJRWxlbWVudCxcbiAgSUVsZW1lbnRNZXRhZGF0YSxcbiAgRWxlbWVudFN0YXR1cyxcbiAgRWxlbWVudFJhdGluZ3MsXG4gIFJlZmVyZW5jZSxcbiAgRWxlbWVudFZhbGlkYXRpb25SZXN1bHQsXG4gIFZhbGlkYXRpb25FcnJvcixcbiAgVmFsaWRhdGlvbldhcm5pbmcsXG4gIEZlZWRiYWNrQ29udGV4dCxcbiAgVXNlckZlZWRiYWNrXG59IGZyb20gJy4uL3R5cGVzL2VsZW1lbnRzL2luZGV4LmpzJztcbmltcG9ydCB7IEVsZW1lbnRUeXBlIH0gZnJvbSAnLi4vcG9ydGZvbGlvL3R5cGVzLmpzJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICdqcy15YW1sJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBVbmljb2RlVmFsaWRhdG9yIH0gZnJvbSAnLi4vc2VjdXJpdHkvdmFsaWRhdG9ycy91bmljb2RlVmFsaWRhdG9yLmpzJztcbmltcG9ydCB7IFNlY3VyaXR5TW9uaXRvciB9IGZyb20gJy4uL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci5qcyc7XG5pbXBvcnQgeyBTZWN1cmVZYW1sUGFyc2VyIH0gZnJvbSAnLi4vc2VjdXJpdHkvc2VjdXJlWWFtbFBhcnNlci5qcyc7XG5pbXBvcnQgeyBNZXRhZGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9NZXRhZGF0YVNlcnZpY2UuanMnO1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgdmVyc2lvbiBzdHJpbmdzIHRvIGZ1bGwgc2VtdmVyIGZvcm1hdCAoWC5ZLlopXG4gKiBUaGlzIGhlbHBzIG1haW50YWluIGNvbnNpc3RlbmN5IHdoaWxlIGFjY2VwdGluZyBmbGV4aWJsZSBpbnB1dCBmb3JtYXRzXG4gKiBcbiAqIEBwYXJhbSB2ZXJzaW9uIC0gVGhlIHZlcnNpb24gc3RyaW5nIHRvIG5vcm1hbGl6ZVxuICogQHJldHVybnMgTm9ybWFsaXplZCB2ZXJzaW9uIHN0cmluZyBpbiBYLlkuWiBmb3JtYXQgd2l0aCBsZWFkaW5nIHplcm9zIHJlbW92ZWRcbiAqIFxuICogQGV4YW1wbGVcbiAqIG5vcm1hbGl6ZVZlcnNpb24oXCIxXCIpICAgICAgICAvLyBcIjEuMC4wXCJcbiAqIG5vcm1hbGl6ZVZlcnNpb24oXCIxLjJcIikgICAgICAvLyBcIjEuMi4wXCJcbiAqIG5vcm1hbGl6ZVZlcnNpb24oXCIxLjIuM1wiKSAgICAvLyBcIjEuMi4zXCJcbiAqIG5vcm1hbGl6ZVZlcnNpb24oXCIxLjAtYmV0YVwiKSAvLyBcIjEuMC4wLWJldGFcIlxuICogbm9ybWFsaXplVmVyc2lvbihcIjAxLjAyLjAzXCIpIC8vIFwiMS4yLjNcIiAoc3RyaXBzIGxlYWRpbmcgemVyb3MpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVWZXJzaW9uKHZlcnNpb246IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIEV4dHJhY3QgYmFzZSB2ZXJzaW9uIGFuZCBhbnkgcHJlcmVsZWFzZS9idWlsZCBtZXRhZGF0YVxuICBjb25zdCBtYXRjaCA9IHZlcnNpb24ubWF0Y2goL14oXFxkKykoPzpcXC4oXFxkKykpPyg/OlxcLihcXGQrKSk/KFstK10uKyk/JC8pO1xuICBcbiAgaWYgKCFtYXRjaCkge1xuICAgIC8vIFJldHVybiBhcy1pcyBpZiBub3QgYSB2YWxpZCB2ZXJzaW9uIGZvcm1hdFxuICAgIHJldHVybiB2ZXJzaW9uO1xuICB9XG4gIFxuICBjb25zdCBbLCBtYWpvciwgbWlub3IgPSAnMCcsIHBhdGNoID0gJzAnLCBzdWZmaXggPSAnJ10gPSBtYXRjaDtcbiAgXG4gIC8vIFN0cmlwIGxlYWRpbmcgemVyb3MgYnV0IHByZXNlcnZlIFwiMFwiIGFzIHZhbGlkXG4gIGNvbnN0IG5vcm1hbGl6ZWRNYWpvciA9IE51bWJlci5wYXJzZUludChtYWpvciwgMTApLnRvU3RyaW5nKCk7XG4gIGNvbnN0IG5vcm1hbGl6ZWRNaW5vciA9IE51bWJlci5wYXJzZUludChtaW5vciwgMTApLnRvU3RyaW5nKCk7XG4gIGNvbnN0IG5vcm1hbGl6ZWRQYXRjaCA9IE51bWJlci5wYXJzZUludChwYXRjaCwgMTApLnRvU3RyaW5nKCk7XG4gIFxuICByZXR1cm4gYCR7bm9ybWFsaXplZE1ham9yfS4ke25vcm1hbGl6ZWRNaW5vcn0uJHtub3JtYWxpemVkUGF0Y2h9JHtzdWZmaXh9YDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VFbGVtZW50IGltcGxlbWVudHMgSUVsZW1lbnQge1xuICAvLyBJZGVudGl0eVxuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIHR5cGU6IEVsZW1lbnRUeXBlO1xuICBwdWJsaWMgdmVyc2lvbjogc3RyaW5nO1xuICBcbiAgLy8gTWV0YWRhdGFcbiAgcHVibGljIG1ldGFkYXRhOiBJRWxlbWVudE1ldGFkYXRhO1xuICBcbiAgLy8gRHVhbC1maWVsZCBzZW1hbnRpYyBhcmNoaXRlY3R1cmUgKHYyLjApXG4gIC8vIEFsbCBlbGVtZW50IHR5cGVzIGluaGVyaXQgdGhlc2U7IHN1YmNsYXNzZXMgbWF5IG92ZXJyaWRlIHdpdGggcmljaGVyIGJlaGF2aW9yLlxuICAvLyAtIGluc3RydWN0aW9uczogYmVoYXZpb3JhbCBkaXJlY3RpdmVzIChjb21tYW5kIHZvaWNlLCBpbXBlcmF0aXZlcyB0byBmb2xsb3cpXG4gIC8vIC0gY29udGVudDogcmVmZXJlbmNlIG1hdGVyaWFsIChpbmZvcm1hdGlvbmFsIGRhdGEgdG8gZHJhdyBmcm9tKVxuICAvLyBEZWNsYXJlZCBhcyBhY2Nlc3NvciBwYWlycyBzbyBzdWJjbGFzc2VzIChlLmcuLCBNZW1vcnkpIGNhbiBvdmVycmlkZSB3aXRoIGN1c3RvbSBnZXR0ZXJzLlxuICBwcm90ZWN0ZWQgX2luc3RydWN0aW9uczogc3RyaW5nID0gJyc7XG4gIHByb3RlY3RlZCBfY29udGVudDogc3RyaW5nID0gJyc7XG5cbiAgcHVibGljIGdldCBpbnN0cnVjdGlvbnMoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2luc3RydWN0aW9uczsgfVxuICBwdWJsaWMgc2V0IGluc3RydWN0aW9ucyh2YWx1ZTogc3RyaW5nKSB7IHRoaXMuX2luc3RydWN0aW9ucyA9IHZhbHVlOyB9XG5cbiAgcHVibGljIGdldCBjb250ZW50KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9jb250ZW50OyB9XG4gIHB1YmxpYyBzZXQgY29udGVudCh2YWx1ZTogc3RyaW5nKSB7IHRoaXMuX2NvbnRlbnQgPSB2YWx1ZTsgfVxuXG4gIC8vIEZlYXR1cmVzXG4gIHB1YmxpYyByZWZlcmVuY2VzPzogUmVmZXJlbmNlW107XG4gIHB1YmxpYyBleHRlbnNpb25zPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgcHVibGljIHJhdGluZ3M/OiBFbGVtZW50UmF0aW5ncztcbiAgXG4gIC8vIEludGVybmFsIHN0YXRlXG4gIHByb3RlY3RlZCBfc3RhdHVzOiBFbGVtZW50U3RhdHVzID0gRWxlbWVudFN0YXR1cy5JTkFDVElWRTtcbiAgcHJvdGVjdGVkIF9pc0RpcnR5OiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvLyBDb25zdGFudHNcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfRkVFREJBQ0tfSElTVE9SWSA9IDEwMDtcbiAgXG4gIGNvbnN0cnVjdG9yKFxuICAgIHR5cGU6IEVsZW1lbnRUeXBlLFxuICAgIG1ldGFkYXRhOiBQYXJ0aWFsPElFbGVtZW50TWV0YWRhdGE+ID0ge30sXG4gICAgbWV0YWRhdGFTZXJ2aWNlOiBNZXRhZGF0YVNlcnZpY2UgIC8vIFJlcXVpcmVkIGluamVjdGlvbiBmb3IgRElcbiAgKSB7XG4gICAgLy8gTm9ybWFsaXplIGNvbW1vbiBtZXRhZGF0YSB2aWEgc2VydmljZSAoc2tpcCB0eXBlLXNwZWNpZmljIGRlZmF1bHRzKVxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBtZXRhZGF0YVNlcnZpY2Uubm9ybWFsaXplTWV0YWRhdGEobWV0YWRhdGEsIHR5cGUsIHtcbiAgICAgIHNraXBUeXBlRGVmYXVsdHM6IHRydWUgIC8vIExldCBlbGVtZW50LXNwZWNpZmljIGNsYXNzZXMgaGFuZGxlIHRoZWlyIG93biBkZWZhdWx0c1xuICAgIH0pO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmlkID0gbWV0YWRhdGEubmFtZSA/IHRoaXMuZ2VuZXJhdGVJZChub3JtYWxpemVkLm5hbWUpIDogdXVpZHY0KCk7XG4gICAgdGhpcy52ZXJzaW9uID0gbm9ybWFsaXplZC52ZXJzaW9uIHx8ICcxLjAuMCc7ICAvLyBHdWFyYW50ZWVkIGJ5IG5vcm1hbGl6ZU1ldGFkYXRhLCBidXQgYWRkIGZhbGxiYWNrIGZvciB0eXBlIHNhZmV0eVxuXG4gICAgLy8gU3ByZWFkIG5vcm1hbGl6ZWQgY29tbW9uIG1ldGFkYXRhXG4gICAgY29uc3QgYmFzZU1ldGFkYXRhOiBhbnkgPSB7XG4gICAgICAuLi5ub3JtYWxpemVkLFxuICAgICAgdHlwZTogdGhpcy50eXBlICAvLyBFbnN1cmUgdHlwZSBmaWVsZCBpcyBzZXQgY29ycmVjdGx5XG4gICAgfTtcblxuICAgIC8vIFByZXNlcnZlIGVsZW1lbnQtc3BlY2lmaWMgZmllbGRzIHRoYXQgTWV0YWRhdGFTZXJ2aWNlIGRvZXNuJ3QgaGFuZGxlXG4gICAgLy8gVGhlc2UgYXJlIHBhc3NlZCB0aHJvdWdoIHVuY2hhbmdlZCB2aWEgdGhlIHNwcmVhZCBvcGVyYXRvciBpbiBNZXRhZGF0YVNlcnZpY2VcblxuICAgIC8vIFByZXNlcnZlIHRyaWdnZXJzIChQZXJzb25hL01lbW9yeS1zcGVjaWZpYylcbiAgICBpZiAoJ3RyaWdnZXJzJyBpbiBtZXRhZGF0YSAmJiBBcnJheS5pc0FycmF5KChtZXRhZGF0YSBhcyBhbnkpLnRyaWdnZXJzKSkge1xuICAgICAgYmFzZU1ldGFkYXRhLnRyaWdnZXJzID0gKG1ldGFkYXRhIGFzIGFueSkudHJpZ2dlcnM7XG4gICAgfVxuXG4gICAgLy8gRklYICMxNDMwOiBQcmVzZXJ2ZSBNZW1vcnktc3BlY2lmaWMgbWV0YWRhdGEgZmllbGRzIChhdXRvTG9hZCwgcHJpb3JpdHkpXG4gICAgLy8gVGhlc2UgYXJlIGRlZmluZWQgaW4gTWVtb3J5TWV0YWRhdGEgYnV0IG5lZWQgdG8gYmUgcHJlc2VydmVkIGluIGJhc2VNZXRhZGF0YVxuICAgIGlmICgnYXV0b0xvYWQnIGluIG1ldGFkYXRhKSB7XG4gICAgICBiYXNlTWV0YWRhdGEuYXV0b0xvYWQgPSAobWV0YWRhdGEgYXMgYW55KS5hdXRvTG9hZDtcbiAgICB9XG4gICAgaWYgKCdwcmlvcml0eScgaW4gbWV0YWRhdGEpIHtcbiAgICAgIGJhc2VNZXRhZGF0YS5wcmlvcml0eSA9IChtZXRhZGF0YSBhcyBhbnkpLnByaW9yaXR5O1xuICAgIH1cblxuICAgIHRoaXMubWV0YWRhdGEgPSBiYXNlTWV0YWRhdGE7XG4gICAgXG4gICAgLy8gSW5pdGlhbGl6ZSBvcHRpb25hbCBmZWF0dXJlc1xuICAgIHRoaXMucmVmZXJlbmNlcyA9IFtdO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHt9O1xuICAgIHRoaXMucmF0aW5ncyA9IHtcbiAgICAgIGFpUmF0aW5nOiAwLFxuICAgICAgdXNlclJhdGluZzogdW5kZWZpbmVkLFxuICAgICAgcmF0aW5nQ291bnQ6IDAsXG4gICAgICBsYXN0RXZhbHVhdGVkOiBuZXcgRGF0ZSgpLFxuICAgICAgY29uZmlkZW5jZTogMCxcbiAgICAgIHRyZW5kOiAnc3RhYmxlJyxcbiAgICAgIGZlZWRiYWNrSGlzdG9yeTogW11cbiAgICB9O1xuICB9XG4gIFxuICAvKipcbiAgICogR2VuZXJhdGUgYSB1bmlxdWUgSUQgZm9yIHRoZSBlbGVtZW50IGJhc2VkIG9uIGl0cyBuYW1lIGFuZCB0eXBlLlxuICAgKiBGb3JtYXQ6IHR5cGVfbmFtZS1zbHVnX3RpbWVzdGFtcFxuICAgKi9cbiAgcHJvdGVjdGVkIGdlbmVyYXRlSWQobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0eXBlU2x1ZyA9IHRoaXMudHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IG5hbWVTbHVnID0gbmFtZVxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC5yZXBsYWNlQWxsKC9bXmEtejAtOV0rL2csICctJykgIC8vIFJlcGxhY2Ugbm9uLWFscGhhbnVtZXJpYyBjaGFycyB3aXRoIGh5cGhlbnNcbiAgICAgIC5yZXBsYWNlQWxsKC8oXi0pfCgtJCkvZywgJycpOyAgIC8vIFRyaW0gbGVhZGluZy90cmFpbGluZyBoeXBoZW5zXG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICBcbiAgICByZXR1cm4gYCR7dHlwZVNsdWd9XyR7bmFtZVNsdWd9XyR7dGltZXN0YW1wfWA7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDb3JlIHZhbGlkYXRpb24gdGhhdCBhbGwgZWxlbWVudHMgc2hhcmUuXG4gICAqIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIGFuZCBjYWxsIHN1cGVyLnZhbGlkYXRlKCkgZmlyc3QuXG4gICAqL1xuICBwdWJsaWMgdmFsaWRhdGUoKTogRWxlbWVudFZhbGlkYXRpb25SZXN1bHQge1xuICAgIGNvbnN0IGVycm9yczogVmFsaWRhdGlvbkVycm9yW10gPSBbXTtcbiAgICBjb25zdCB3YXJuaW5nczogVmFsaWRhdGlvbldhcm5pbmdbXSA9IFtdO1xuICAgIGNvbnN0IHN1Z2dlc3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIFxuICAgIC8vIFZhbGlkYXRlIHJlcXVpcmVkIGZpZWxkc1xuICAgIGlmICghdGhpcy5pZCkge1xuICAgICAgZXJyb3JzLnB1c2goeyBmaWVsZDogJ2lkJywgbWVzc2FnZTogJ0VsZW1lbnQgSUQgaXMgcmVxdWlyZWQnIH0pO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIXRoaXMubWV0YWRhdGEubmFtZSB8fCB0aGlzLm1ldGFkYXRhLm5hbWUudHJpbSgpID09PSAnJykge1xuICAgICAgZXJyb3JzLnB1c2goeyBmaWVsZDogJ21ldGFkYXRhLm5hbWUnLCBtZXNzYWdlOiAnRWxlbWVudCBuYW1lIGlzIHJlcXVpcmVkJyB9KTtcbiAgICB9XG4gICAgXG4gICAgaWYgKCF0aGlzLm1ldGFkYXRhLmRlc2NyaXB0aW9uIHx8IHRoaXMubWV0YWRhdGEuZGVzY3JpcHRpb24udHJpbSgpID09PSAnJykge1xuICAgICAgd2FybmluZ3MucHVzaCh7IFxuICAgICAgICBmaWVsZDogJ21ldGFkYXRhLmRlc2NyaXB0aW9uJywgXG4gICAgICAgIG1lc3NhZ2U6ICdFbGVtZW50IGRlc2NyaXB0aW9uIGlzIHJlY29tbWVuZGVkJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdtZWRpdW0nXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgLy8gVmFsaWRhdGUgdmVyc2lvbiBmb3JtYXQgLSBtb3JlIGZsZXhpYmxlIHRvIHN1cHBvcnQgTExNLWdlbmVyYXRlZCBjb250ZW50XG4gICAgLy8gRklYIGZvciBJc3N1ZSAjOTM1OiBBbGxvdyBmbGV4aWJsZSB2ZXJzaW9uIGZvcm1hdHMgbGlrZSBcIjEuMFwiLCBcIjEuMVwiLCBcIjIuMC4wXCJcbiAgICAvLyBQcmV2aW91c2x5OiBTdHJpY3Qgc2VtdmVyIHJlZ2V4IHJlcXVpcmluZyBYLlkuWiBmb3JtYXQgY2F1c2VkIHNraWxscyBhY3RpdmF0aW9uIGZhaWx1cmVzXG4gICAgLy8gTm93OiBBY2NlcHQgY29tbW9uIHZlcnNpb24gcGF0dGVybnMgdGhhdCBMTE1zIGFuZCBodW1hbnMgbmF0dXJhbGx5IHVzZVxuICAgIC8vIE5vdGU6IExlYWRpbmcgemVyb3MgYXJlIGFsbG93ZWQgKGUuZy4sIFwiMDEuMDIuMDNcIikgYnV0IHdpbGwgYmUgbm9ybWFsaXplZCB0byBcIjEuMi4zXCJcbiAgICAvLyBTZWN1cml0eTogTm8gaW5qZWN0aW9uIHJpc2sgYXMgdmVyc2lvbiBpcyBqdXN0IG1ldGFkYXRhLCBub3QgZXhlY3V0ZWRcbiAgICBjb25zdCBmbGV4aWJsZVZlcnNpb25SZWdleCA9IC9eXFxkKyhcXC5cXGQrKT8oXFwuXFxkKyk/KC1bYS16QS1aMC05Li1dKyk/KFxcK1thLXpBLVowLTkuLV0rKT8kLztcbiAgICBpZiAoIWZsZXhpYmxlVmVyc2lvblJlZ2V4LnRlc3QodGhpcy52ZXJzaW9uKSkge1xuICAgICAgZXJyb3JzLnB1c2goeyBcbiAgICAgICAgZmllbGQ6ICd2ZXJzaW9uJywgXG4gICAgICAgIG1lc3NhZ2U6ICdWZXJzaW9uIG11c3Qgc3RhcnQgd2l0aCBudW1iZXJzIGluIGZvcm1hdDogTUFKT1JbLk1JTk9SXVsuUEFUQ0hdWy1QUkVSRUxFQVNFXVsrQlVJTERdLiBWYWxpZCBleGFtcGxlczogXCIxXCIsIFwiMS4wXCIsIFwiMS4wLjBcIiwgXCIyLjFcIiwgXCIxLjAuMC1iZXRhXCIsIFwiMS4wLjAtYWxwaGEuMVwiLCBcIjEuMC4wK2J1aWxkMTIzXCIuIFRoZSBtYWpvciB2ZXJzaW9uIGlzIHJlcXVpcmVkLCBtaW5vciBhbmQgcGF0Y2ggYXJlIG9wdGlvbmFsLiBOb3RlOiBMZWFkaW5nIHplcm9zIChlLmcuLCBcIjAxLjAyXCIpIGFyZSBhY2NlcHRlZCBidXQgd2lsbCBiZSBub3JtYWxpemVkIHRvIFwiMS4yXCIuJyxcbiAgICAgICAgY29kZTogJ0lOVkFMSURfVkVSU0lPTl9GT1JNQVQnXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgLy8gVmFsaWRhdGUgcmVmZXJlbmNlc1xuICAgIGlmICh0aGlzLnJlZmVyZW5jZXMpIHtcbiAgICAgIHRoaXMucmVmZXJlbmNlcy5mb3JFYWNoKChyZWYsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghcmVmLnVyaSB8fCByZWYudXJpLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICBlcnJvcnMucHVzaCh7IFxuICAgICAgICAgICAgZmllbGQ6IGByZWZlcmVuY2VzWyR7aW5kZXh9XS51cmlgLCBcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdSZWZlcmVuY2UgVVJJIGlzIHJlcXVpcmVkJyBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJlZi50aXRsZSB8fCByZWYudGl0bGUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgIHdhcm5pbmdzLnB1c2goeyBcbiAgICAgICAgICAgIGZpZWxkOiBgcmVmZXJlbmNlc1ske2luZGV4fV0udGl0bGVgLCBcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdSZWZlcmVuY2UgdGl0bGUgaXMgcmVjb21tZW5kZWQnLFxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdsb3cnXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICAvLyBWYWxpZGF0ZSByYXRpbmdzIGlmIHByZXNlbnRcbiAgICBpZiAodGhpcy5yYXRpbmdzKSB7XG4gICAgICBpZiAodGhpcy5yYXRpbmdzLmFpUmF0aW5nIDwgMCB8fCB0aGlzLnJhdGluZ3MuYWlSYXRpbmcgPiA1KSB7XG4gICAgICAgIGVycm9ycy5wdXNoKHsgXG4gICAgICAgICAgZmllbGQ6ICdyYXRpbmdzLmFpUmF0aW5nJywgXG4gICAgICAgICAgbWVzc2FnZTogJ0FJIHJhdGluZyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNScgXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucmF0aW5ncy51c2VyUmF0aW5nICE9PSB1bmRlZmluZWQgJiYgXG4gICAgICAgICAgKHRoaXMucmF0aW5ncy51c2VyUmF0aW5nIDwgMCB8fCB0aGlzLnJhdGluZ3MudXNlclJhdGluZyA+IDUpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKHsgXG4gICAgICAgICAgZmllbGQ6ICdyYXRpbmdzLnVzZXJSYXRpbmcnLCBcbiAgICAgICAgICBtZXNzYWdlOiAnVXNlciByYXRpbmcgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDUnIFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gQWRkIHN1Z2dlc3Rpb25zXG4gICAgaWYgKCF0aGlzLm1ldGFkYXRhLnRhZ3MgfHwgdGhpcy5tZXRhZGF0YS50YWdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgc3VnZ2VzdGlvbnMucHVzaCgnQ29uc2lkZXIgYWRkaW5nIHRhZ3MgdG8gaW1wcm92ZSBkaXNjb3ZlcmFiaWxpdHknKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKCF0aGlzLm1ldGFkYXRhLmF1dGhvcikge1xuICAgICAgc3VnZ2VzdGlvbnMucHVzaCgnQ29uc2lkZXIgYWRkaW5nIGF1dGhvciBpbmZvcm1hdGlvbicpO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4ge1xuICAgICAgdmFsaWQ6IGVycm9ycy5sZW5ndGggPT09IDAsXG4gICAgICBlcnJvcnM6IGVycm9ycy5sZW5ndGggPiAwID8gZXJyb3JzIDogdW5kZWZpbmVkLFxuICAgICAgd2FybmluZ3M6IHdhcm5pbmdzLmxlbmd0aCA+IDAgPyB3YXJuaW5ncyA6IHVuZGVmaW5lZCxcbiAgICAgIHN1Z2dlc3Rpb25zOiBzdWdnZXN0aW9ucy5sZW5ndGggPiAwID8gc3VnZ2VzdGlvbnMgOiB1bmRlZmluZWRcbiAgICB9O1xuICB9XG4gIFxuICAvKipcbiAgICogU2VyaWFsaXplIHRvIEpTT04gZm9ybWF0IGZvciBpbnRlcm5hbCB1c2UgYW5kIHRlc3RpbmcuXG4gICAqIE1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgdGVzdHMuXG4gICAqL1xuICBwdWJsaWMgc2VyaWFsaXplVG9KU09OKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgdmVyc2lvbjogdGhpcy52ZXJzaW9uLFxuICAgICAgbWV0YWRhdGE6IHRoaXMubWV0YWRhdGEsXG4gICAgICByZWZlcmVuY2VzOiB0aGlzLnJlZmVyZW5jZXMsXG4gICAgICBleHRlbnNpb25zOiB0aGlzLmV4dGVuc2lvbnMsXG4gICAgICByYXRpbmdzOiB0aGlzLnJhdGluZ3NcbiAgICB9O1xuICAgIFxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IHNlcmlhbGl6YXRpb24gdG8gbWFya2Rvd24gd2l0aCBZQU1MIGZyb250bWF0dGVyLlxuICAgKiBVc2VzIGpzLXlhbWwgZm9yIHNlY3VyZSBZQU1MIGdlbmVyYXRpb24gdG8gcHJldmVudCBpbmplY3Rpb24gYXR0YWNrcy5cbiAgICogRklYOiBDaGFuZ2VkIGZyb20gSlNPTiB0byBwcm9wZXIgbWFya2Rvd24gZm9ybWF0IGZvciBHaXRIdWIgcG9ydGZvbGlvIHN0b3JhZ2UuXG4gICAqIFRoaXMgZW5zdXJlcyBlbGVtZW50cyBhcmUgcmVhZGFibGUgb24gR2l0SHViIGFuZCBjb21wYXRpYmxlIHdpdGggY29sbGVjdGlvbiB3b3JrZmxvdy5cbiAgICovXG4gIHB1YmxpYyBzZXJpYWxpemUoKTogc3RyaW5nIHtcbiAgICAvLyBCdWlsZCBZQU1MIGZyb250bWF0dGVyIHN0YXJ0aW5nIHdpdGggYWxsIG1ldGFkYXRhIGZpZWxkc1xuICAgIC8vIFRoaXMgZW5zdXJlcyBzdWJjbGFzc2VzIGNhbiBhZGQgdGhlaXIgb3duIGZpZWxkc1xuICAgIGNvbnN0IGZyb250bWF0dGVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgLi4udGhpcy5tZXRhZGF0YSwgIC8vIEluY2x1ZGUgYWxsIG1ldGFkYXRhIGZpZWxkc1xuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgdmVyc2lvbjogdGhpcy52ZXJzaW9uXG4gICAgfTtcbiAgICBcbiAgICAvLyBOb3RlOiBtZXRhZGF0YSBhbHJlYWR5IGluY2x1ZGVzIG5hbWUsIGRlc2NyaXB0aW9uLCBhdXRob3IsIGNyZWF0ZWQsIG1vZGlmaWVkXG4gICAgLy8gYW5kIGFueSBhZGRpdGlvbmFsIGZpZWxkcyBhZGRlZCBieSBzdWJjbGFzc2VzXG4gICAgaWYgKHRoaXMucmVmZXJlbmNlcyAmJiB0aGlzLnJlZmVyZW5jZXMubGVuZ3RoID4gMCkge1xuICAgICAgZnJvbnRtYXR0ZXIucmVmZXJlbmNlcyA9IHRoaXMucmVmZXJlbmNlcy5tYXAocmVmID0+ICh7XG4gICAgICAgIHR5cGU6IHJlZi50eXBlLFxuICAgICAgICB1cmk6IHJlZi51cmksXG4gICAgICAgIHRpdGxlOiByZWYudGl0bGVcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmF0aW5ncyAmJiB0aGlzLnJhdGluZ3MuYWlSYXRpbmcgPiAwKSB7XG4gICAgICBmcm9udG1hdHRlci5yYXRpbmdzID0ge1xuICAgICAgICBhaVJhdGluZzogdGhpcy5yYXRpbmdzLmFpUmF0aW5nLFxuICAgICAgICB1c2VyUmF0aW5nOiB0aGlzLnJhdGluZ3MudXNlclJhdGluZyxcbiAgICAgICAgcmF0aW5nQ291bnQ6IHRoaXMucmF0aW5ncy5yYXRpbmdDb3VudFxuICAgICAgfTtcbiAgICB9XG4gICAgXG4gICAgLy8gUmVtb3ZlIHVuZGVmaW5lZC9udWxsIHZhbHVlcyByZWN1cnNpdmVseVxuICAgIGNvbnN0IGNsZWFuRnJvbnRtYXR0ZXIgPSB0aGlzLmRlZXBDbGVhbk9iamVjdChmcm9udG1hdHRlcik7XG4gICAgXG4gICAgLy8gVXNlIGpzLXlhbWwgZm9yIHNlY3VyZSBZQU1MIGdlbmVyYXRpb25cbiAgICAvLyBUaGlzIHByZXZlbnRzIFlBTUwgaW5qZWN0aW9uIGF0dGFja3MgYW5kIGhhbmRsZXMgc3BlY2lhbCBjaGFyYWN0ZXJzIHByb3Blcmx5XG4gICAgbGV0IHlhbWxGcm9udG1hdHRlcjogc3RyaW5nO1xuICAgIHRyeSB7XG4gICAgICB5YW1sRnJvbnRtYXR0ZXIgPSB5YW1sLmR1bXAoY2xlYW5Gcm9udG1hdHRlciwge1xuICAgICAgICBub1JlZnM6IHRydWUsICAgICAgICAgIC8vIERvbid0IHVzZSBZQU1MIHJlZmVyZW5jZXNcbiAgICAgICAgc29ydEtleXM6IGZhbHNlLCAgICAgICAvLyBLZWVwIG91ciBvcmRlclxuICAgICAgICBsaW5lV2lkdGg6IC0xLCAgICAgICAgIC8vIERvbid0IHdyYXAgbGluZXNcbiAgICAgICAgcXVvdGluZ1R5cGU6ICdcIicsICAgICAgLy8gVXNlIGRvdWJsZSBxdW90ZXMgd2hlbiBuZWVkZWRcbiAgICAgICAgZm9yY2VRdW90ZXM6IGZhbHNlLCAgICAvLyBPbmx5IHF1b3RlIHdoZW4gbmVjZXNzYXJ5XG4gICAgICAgIHNraXBJbnZhbGlkOiBmYWxzZSAgICAgLy8gRG9uJ3Qgc2tpcCBpbnZhbGlkIHZhbHVlc1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIElmIFlBTUwgZ2VuZXJhdGlvbiBmYWlscywgbG9nIGFuZCB0aHJvdyBhIG1vcmUgaW5mb3JtYXRpdmUgZXJyb3JcbiAgICAgIGxvZ2dlci5lcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIFlBTUwgZnJvbnRtYXR0ZXInLCB7IGVycm9yLCBmcm9udG1hdHRlcjogY2xlYW5Gcm9udG1hdHRlciB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlcmlhbGl6ZSBlbGVtZW50IG1ldGFkYXRhIHRvIFlBTUw6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcid9YCk7XG4gICAgfVxuICAgIFxuICAgIC8vIFZhbGlkYXRlIHRoZSBnZW5lcmF0ZWQgWUFNTCBjYW4gYmUgcGFyc2VkIGJhY2sgdXNpbmcgU2VjdXJlWWFtbFBhcnNlclxuICAgIC8vIEhJR0ggU0VWRVJJVFkgRklYOiBVc2UgU2VjdXJlWWFtbFBhcnNlciBpbnN0ZWFkIG9mIHlhbWwubG9hZCB0byBwcmV2ZW50IGNvZGUgZXhlY3V0aW9uXG4gICAgdHJ5IHtcbiAgICAgIFNlY3VyZVlhbWxQYXJzZXIucGFyc2UoeWFtbEZyb250bWF0dGVyLCB7XG4gICAgICAgIG1heFlhbWxTaXplOiA2NCAqIDEwMjQsIC8vIDY0S0IgbGltaXQgZm9yIGZyb250bWF0dGVyXG4gICAgICAgIHZhbGlkYXRlQ29udGVudDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5lcnJvcignR2VuZXJhdGVkIGludmFsaWQgWUFNTCcsIHsgZXJyb3IsIHlhbWw6IHlhbWxGcm9udG1hdHRlciB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgR2VuZXJhdGVkIFlBTUwgaXMgaW52YWxpZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJ31gKTtcbiAgICB9XG4gICAgXG4gICAgLy8gR2V0IGNvbnRlbnQgLSBzdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSB0aGlzIHRvIHByb3ZpZGUgYWN0dWFsIGNvbnRlbnRcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50ID8gdGhpcy5nZXRDb250ZW50KCkgOiBgIyAke3RoaXMubWV0YWRhdGEubmFtZX1cXG5cXG4ke3RoaXMubWV0YWRhdGEuZGVzY3JpcHRpb24gfHwgJyd9YDtcbiAgICBcbiAgICAvLyBUcmltIHRoZSBZQU1MIHRvIHJlbW92ZSB0cmFpbGluZyBuZXdsaW5lIHRoYXQgeWFtbC5kdW1wIGFkZHNcbiAgICByZXR1cm4gYC0tLVxcbiR7eWFtbEZyb250bWF0dGVyLnRyaW0oKX1cXG4tLS1cXG5cXG4ke2NvbnRlbnR9YDtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEdldCBlbGVtZW50IGNvbnRlbnQgZm9yIHNlcmlhbGl6YXRpb24uXG4gICAqIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgdG8gcHJvdmlkZSB0aGVpciBzcGVjaWZpYyBjb250ZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldENvbnRlbnQ/KCk6IHN0cmluZztcblxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgcmVtb3ZlIHVuZGVmaW5lZCBhbmQgbnVsbCB2YWx1ZXMgZnJvbSBhbiBvYmplY3QuXG4gICAqIFRoaXMgZW5zdXJlcyBZQU1MIHNlcmlhbGl6YXRpb24gZG9lc24ndCBmYWlsIG9uIHVuZGVmaW5lZCB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIGRlZXBDbGVhbk9iamVjdChvYmo6IGFueSk6IGFueSB7XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICByZXR1cm4gb2JqXG4gICAgICAgIC5tYXAoaXRlbSA9PiB0aGlzLmRlZXBDbGVhbk9iamVjdChpdGVtKSlcbiAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBjbGVhbmVkOiBhbnkgPSB7fTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICAgICAgY29uc3QgY2xlYW5lZFZhbHVlID0gdGhpcy5kZWVwQ2xlYW5PYmplY3QodmFsdWUpO1xuICAgICAgICBpZiAoY2xlYW5lZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjbGVhbmVkW2tleV0gPSBjbGVhbmVkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjbGVhbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKipcbiAgICogRGVmYXVsdCBkZXNlcmlhbGl6YXRpb24gZnJvbSBKU09OLlxuICAgKiBTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSBmb3IgY3VzdG9tIGZvcm1hdHMuXG4gICAqL1xuICBwdWJsaWMgZGVzZXJpYWxpemUoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIE5vcm1hbGl6ZSBVbmljb2RlIGlucHV0IGJlZm9yZSBwYXJzaW5nXG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUoZGF0YSk7XG4gICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHZhbGlkYXRpb25SZXN1bHQubm9ybWFsaXplZENvbnRlbnQpO1xuICAgICAgXG4gICAgICAvLyBWYWxpZGF0ZSByZXF1aXJlZCBmaWVsZHNcbiAgICAgIGlmICghcGFyc2VkLmlkIHx8ICFwYXJzZWQudHlwZSB8fCAhcGFyc2VkLm1ldGFkYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBlbGVtZW50IGRhdGE6IG1pc3NpbmcgcmVxdWlyZWQgZmllbGRzJyk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIFVwZGF0ZSBwcm9wZXJ0aWVzXG4gICAgICB0aGlzLmlkID0gcGFyc2VkLmlkO1xuICAgICAgdGhpcy50eXBlID0gcGFyc2VkLnR5cGU7XG4gICAgICB0aGlzLnZlcnNpb24gPSBwYXJzZWQudmVyc2lvbiB8fCAnMS4wLjAnO1xuICAgICAgdGhpcy5tZXRhZGF0YSA9IHBhcnNlZC5tZXRhZGF0YTtcbiAgICAgIHRoaXMucmVmZXJlbmNlcyA9IHBhcnNlZC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgICAgdGhpcy5leHRlbnNpb25zID0gcGFyc2VkLmV4dGVuc2lvbnMgfHwge307XG4gICAgICB0aGlzLnJhdGluZ3MgPSBwYXJzZWQucmF0aW5ncztcbiAgICAgIFxuICAgICAgdGhpcy5faXNEaXJ0eSA9IGZhbHNlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBFbmhhbmNlZCBlcnJvciBjb250ZXh0IHByZXNlcnZhdGlvblxuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuICAgICAgY29uc3QgZXJyb3JTdGFjayA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5zdGFjayA6IHVuZGVmaW5lZDtcbiAgICAgIFxuICAgICAgbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGVzZXJpYWxpemUgZWxlbWVudCcsIHsgXG4gICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UsXG4gICAgICAgIHN0YWNrOiBlcnJvclN0YWNrLFxuICAgICAgICBkYXRhUHJldmlldzogZGF0YS5zdWJzdHJpbmcoMCwgMjAwKSwgLy8gRmlyc3QgMjAwIGNoYXJzIGZvciBjb250ZXh0XG4gICAgICAgIGVsZW1lbnRUeXBlOiB0aGlzLnR5cGVcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICAvLyBDcmVhdGUgbmV3IGVycm9yIHdpdGggb3JpZ2luYWwgYXMgY2F1c2VcbiAgICAgIGNvbnN0IGRlc2VyaWFsaXplRXJyb3IgPSBuZXcgRXJyb3IoYEJhc2VFbGVtZW50IGRlc2VyaWFsaXphdGlvbiBmYWlsZWQ6ICR7ZXJyb3JNZXNzYWdlfWApO1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgZGVzZXJpYWxpemVFcnJvci5jYXVzZSA9IGVycm9yO1xuICAgICAgfVxuICAgICAgdGhyb3cgZGVzZXJpYWxpemVFcnJvcjtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBQcm9jZXNzIHVzZXIgZmVlZGJhY2sgYW5kIHVwZGF0ZSByYXRpbmdzLlxuICAgKi9cbiAgcHVibGljIHJlY2VpdmVGZWVkYmFjayhmZWVkYmFjazogc3RyaW5nLCBjb250ZXh0PzogRmVlZGJhY2tDb250ZXh0KTogdm9pZCB7XG4gICAgLy8gTm9ybWFsaXplIFVuaWNvZGUgaW5wdXQgdG8gcHJldmVudCBzZWN1cml0eSBpc3N1ZXNcbiAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUoZmVlZGJhY2spO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRGZWVkYmFjayA9IHZhbGlkYXRpb25SZXN1bHQubm9ybWFsaXplZENvbnRlbnQ7XG4gICAgXG4gICAgLy8gTG9nIHNlY3VyaXR5IGV2ZW50IGZvciBmZWVkYmFjayBwcm9jZXNzaW5nXG4gICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgdHlwZTogJ0NPTlRFTlRfSU5KRUNUSU9OX0FUVEVNUFQnLFxuICAgICAgc2V2ZXJpdHk6ICdMT1cnLFxuICAgICAgc291cmNlOiAnQmFzZUVsZW1lbnQucmVjZWl2ZUZlZWRiYWNrJyxcbiAgICAgIGRldGFpbHM6IGBGZWVkYmFjayBwcm9jZXNzZWQgZm9yIGVsZW1lbnQgJHt0aGlzLnR5cGV9OiR7dGhpcy5pZH1gLFxuICAgICAgYWRkaXRpb25hbERhdGE6IHsgXG4gICAgICAgIGVsZW1lbnRUeXBlOiB0aGlzLnR5cGUsIFxuICAgICAgICBlbGVtZW50SWQ6IHRoaXMuaWQsXG4gICAgICAgIGZlZWRiYWNrTGVuZ3RoOiBmZWVkYmFjay5sZW5ndGgsXG4gICAgICAgIGhhc1VuaWNvZGVJc3N1ZXM6ICF2YWxpZGF0aW9uUmVzdWx0LmlzVmFsaWRcbiAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICBpZiAoIXRoaXMucmF0aW5ncykge1xuICAgICAgdGhpcy5yYXRpbmdzID0ge1xuICAgICAgICBhaVJhdGluZzogMCxcbiAgICAgICAgdXNlclJhdGluZzogdW5kZWZpbmVkLFxuICAgICAgICByYXRpbmdDb3VudDogMCxcbiAgICAgICAgbGFzdEV2YWx1YXRlZDogbmV3IERhdGUoKSxcbiAgICAgICAgY29uZmlkZW5jZTogMCxcbiAgICAgICAgdHJlbmQ6ICdzdGFibGUnLFxuICAgICAgICBmZWVkYmFja0hpc3Rvcnk6IFtdXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBDcmVhdGUgZmVlZGJhY2sgZW50cnkgd2l0aCBub3JtYWxpemVkIGNvbnRlbnRcbiAgICBjb25zdCB1c2VyRmVlZGJhY2s6IFVzZXJGZWVkYmFjayA9IHtcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICAgIGZlZWRiYWNrOiBub3JtYWxpemVkRmVlZGJhY2ssXG4gICAgICBzZW50aW1lbnQ6IHRoaXMuYW5hbHl6ZVNlbnRpbWVudChub3JtYWxpemVkRmVlZGJhY2spLFxuICAgICAgaW5mZXJyZWRSYXRpbmc6IHRoaXMuaW5mZXJSYXRpbmcobm9ybWFsaXplZEZlZWRiYWNrKSxcbiAgICAgIGNvbnRleHQsXG4gICAgICBlbGVtZW50VmVyc2lvbjogdGhpcy52ZXJzaW9uXG4gICAgfTtcbiAgICBcbiAgICAvLyBBZGQgdG8gaGlzdG9yeSB3aXRoIGJvdW5kcyBjaGVja2luZ1xuICAgIGlmICghdGhpcy5yYXRpbmdzLmZlZWRiYWNrSGlzdG9yeSkge1xuICAgICAgdGhpcy5yYXRpbmdzLmZlZWRiYWNrSGlzdG9yeSA9IFtdO1xuICAgIH1cbiAgICB0aGlzLnJhdGluZ3MuZmVlZGJhY2tIaXN0b3J5LnB1c2godXNlckZlZWRiYWNrKTtcbiAgICBcbiAgICAvLyBQcmV2ZW50IHVuYm91bmRlZCBncm93dGhcbiAgICBpZiAodGhpcy5yYXRpbmdzLmZlZWRiYWNrSGlzdG9yeS5sZW5ndGggPiB0aGlzLk1BWF9GRUVEQkFDS19ISVNUT1JZKSB7XG4gICAgICB0aGlzLnJhdGluZ3MuZmVlZGJhY2tIaXN0b3J5ID0gdGhpcy5yYXRpbmdzLmZlZWRiYWNrSGlzdG9yeS5zbGljZSgtdGhpcy5NQVhfRkVFREJBQ0tfSElTVE9SWSk7XG4gICAgICBsb2dnZXIuZGVidWcoYEZlZWRiYWNrIGhpc3RvcnkgdHJpbW1lZCB0byAke3RoaXMuTUFYX0ZFRURCQUNLX0hJU1RPUll9IGVudHJpZXMgZm9yIGVsZW1lbnQgJHt0aGlzLmlkfWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBVcGRhdGUgdXNlciByYXRpbmcgaWYgd2UgaW5mZXJyZWQgb25lXG4gICAgaWYgKHVzZXJGZWVkYmFjay5pbmZlcnJlZFJhdGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJSYXRpbmcodXNlckZlZWRiYWNrLmluZmVycmVkUmF0aW5nKTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5faXNEaXJ0eSA9IHRydWU7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBTaW1wbGUgc2VudGltZW50IGFuYWx5c2lzLlxuICAgKiBTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSBmb3IgbW9yZSBzb3BoaXN0aWNhdGVkIGFuYWx5c2lzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFuYWx5emVTZW50aW1lbnQoZmVlZGJhY2s6IHN0cmluZyk6ICdwb3NpdGl2ZScgfCAnbmVnYXRpdmUnIHwgJ25ldXRyYWwnIHtcbiAgICBjb25zdCBsb3dlciA9IGZlZWRiYWNrLnRvTG93ZXJDYXNlKCk7XG4gICAgXG4gICAgY29uc3QgcG9zaXRpdmVXb3JkcyA9IFsnZXhjZWxsZW50JywgJ2dyZWF0JywgJ2dvb2QnLCAnaGVscGZ1bCcsICd1c2VmdWwnLCAncGVyZmVjdCcsICdhbWF6aW5nJywgJ2xvdmUnXTtcbiAgICBjb25zdCBuZWdhdGl2ZVdvcmRzID0gWydiYWQnLCAncG9vcicsICd0ZXJyaWJsZScsICd1c2VsZXNzJywgJ2Jyb2tlbicsICdoYXRlJywgJ2F3ZnVsJywgJ2Rpc2FwcG9pbnRpbmcnXTtcbiAgICBcbiAgICBjb25zdCBwb3NpdGl2ZUNvdW50ID0gcG9zaXRpdmVXb3Jkcy5maWx0ZXIod29yZCA9PiBsb3dlci5pbmNsdWRlcyh3b3JkKSkubGVuZ3RoO1xuICAgIGNvbnN0IG5lZ2F0aXZlQ291bnQgPSBuZWdhdGl2ZVdvcmRzLmZpbHRlcih3b3JkID0+IGxvd2VyLmluY2x1ZGVzKHdvcmQpKS5sZW5ndGg7XG4gICAgXG4gICAgaWYgKHBvc2l0aXZlQ291bnQgPiBuZWdhdGl2ZUNvdW50KSByZXR1cm4gJ3Bvc2l0aXZlJztcbiAgICBpZiAobmVnYXRpdmVDb3VudCA+IHBvc2l0aXZlQ291bnQpIHJldHVybiAnbmVnYXRpdmUnO1xuICAgIHJldHVybiAnbmV1dHJhbCc7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBTaW1wbGUgcmF0aW5nIGluZmVyZW5jZSBmcm9tIGZlZWRiYWNrLlxuICAgKiBTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSBmb3IgbW9yZSBzb3BoaXN0aWNhdGVkIGluZmVyZW5jZS5cbiAgICovXG4gIHByb3RlY3RlZCBpbmZlclJhdGluZyhmZWVkYmFjazogc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzZW50aW1lbnQgPSB0aGlzLmFuYWx5emVTZW50aW1lbnQoZmVlZGJhY2spO1xuICAgIGNvbnN0IGxvd2VyID0gZmVlZGJhY2sudG9Mb3dlckNhc2UoKTtcbiAgICBcbiAgICAvLyBMb29rIGZvciBleHBsaWNpdCByYXRpbmdzXG4gICAgY29uc3QgcmF0aW5nTWF0Y2ggPSBsb3dlci5tYXRjaCgvKFxcZCspXFxzKihzdGFycz98XFwvNXxvdXQgb2YgNSkvKTtcbiAgICBpZiAocmF0aW5nTWF0Y2gpIHtcbiAgICAgIGNvbnN0IHJhdGluZyA9IE51bWJlci5wYXJzZUludChyYXRpbmdNYXRjaFsxXSk7XG4gICAgICBpZiAocmF0aW5nID49IDEgJiYgcmF0aW5nIDw9IDUpIHJldHVybiByYXRpbmc7XG4gICAgfVxuICAgIFxuICAgIC8vIEluZmVyIGZyb20gc2VudGltZW50XG4gICAgaWYgKHNlbnRpbWVudCA9PT0gJ3Bvc2l0aXZlJykge1xuICAgICAgaWYgKGxvd2VyLmluY2x1ZGVzKCdwZXJmZWN0JykgfHwgbG93ZXIuaW5jbHVkZXMoJ2V4Y2VsbGVudCcpKSByZXR1cm4gNTtcbiAgICAgIGlmIChsb3dlci5pbmNsdWRlcygnZ3JlYXQnKSB8fCBsb3dlci5pbmNsdWRlcygndmVyeSBnb29kJykpIHJldHVybiA0O1xuICAgICAgcmV0dXJuIDQ7XG4gICAgfSBlbHNlIGlmIChzZW50aW1lbnQgPT09ICduZWdhdGl2ZScpIHtcbiAgICAgIGlmIChsb3dlci5pbmNsdWRlcygndGVycmlibGUnKSB8fCBsb3dlci5pbmNsdWRlcygnYXdmdWwnKSkgcmV0dXJuIDE7XG4gICAgICBpZiAobG93ZXIuaW5jbHVkZXMoJ3Bvb3InKSB8fCBsb3dlci5pbmNsdWRlcygnYmFkJykpIHJldHVybiAyO1xuICAgICAgcmV0dXJuIDI7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiAzOyAvLyBOZXV0cmFsXG4gIH1cbiAgXG4gIC8qKlxuICAgKiBVcGRhdGUgdXNlciByYXRpbmcgd2l0aCBhIG5ldyB2YWx1ZS5cbiAgICovXG4gIHByb3RlY3RlZCB1cGRhdGVVc2VyUmF0aW5nKG5ld1JhdGluZzogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJhdGluZ3MpIHJldHVybjtcbiAgICBcbiAgICBpZiAodGhpcy5yYXRpbmdzLnVzZXJSYXRpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yYXRpbmdzLnVzZXJSYXRpbmcgPSBuZXdSYXRpbmc7XG4gICAgICB0aGlzLnJhdGluZ3MucmF0aW5nQ291bnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDYWxjdWxhdGUgcnVubmluZyBhdmVyYWdlXG4gICAgICBjb25zdCB0b3RhbFJhdGluZyA9IHRoaXMucmF0aW5ncy51c2VyUmF0aW5nICogdGhpcy5yYXRpbmdzLnJhdGluZ0NvdW50ICsgbmV3UmF0aW5nO1xuICAgICAgdGhpcy5yYXRpbmdzLnJhdGluZ0NvdW50Kys7XG4gICAgICB0aGlzLnJhdGluZ3MudXNlclJhdGluZyA9IHRvdGFsUmF0aW5nIC8gdGhpcy5yYXRpbmdzLnJhdGluZ0NvdW50O1xuICAgIH1cbiAgICBcbiAgICAvLyBVcGRhdGUgZGVsdGEgYW5kIHRyZW5kXG4gICAgdGhpcy5yYXRpbmdzLnJhdGluZ0RlbHRhID0gdGhpcy5yYXRpbmdzLnVzZXJSYXRpbmcgLSB0aGlzLnJhdGluZ3MuYWlSYXRpbmc7XG4gICAgXG4gICAgLy8gU2ltcGxlIHRyZW5kIGNhbGN1bGF0aW9uIGJhc2VkIG9uIHJlY2VudCBmZWVkYmFja1xuICAgIGNvbnN0IHJlY2VudEZlZWRiYWNrID0gdGhpcy5yYXRpbmdzLmZlZWRiYWNrSGlzdG9yeT8uc2xpY2UoLTUpIHx8IFtdO1xuICAgIGNvbnN0IHJlY2VudFNlbnRpbWVudHMgPSByZWNlbnRGZWVkYmFjay5tYXAoZiA9PiBmLnNlbnRpbWVudCk7XG4gICAgY29uc3QgcG9zaXRpdmVDb3VudCA9IHJlY2VudFNlbnRpbWVudHMuZmlsdGVyKHMgPT4gcyA9PT0gJ3Bvc2l0aXZlJykubGVuZ3RoO1xuICAgIGNvbnN0IG5lZ2F0aXZlQ291bnQgPSByZWNlbnRTZW50aW1lbnRzLmZpbHRlcihzID0+IHMgPT09ICduZWdhdGl2ZScpLmxlbmd0aDtcbiAgICBcbiAgICBpZiAocG9zaXRpdmVDb3VudCA+IG5lZ2F0aXZlQ291bnQgKyAxKSB7XG4gICAgICB0aGlzLnJhdGluZ3MudHJlbmQgPSAnaW1wcm92aW5nJztcbiAgICB9IGVsc2UgaWYgKG5lZ2F0aXZlQ291bnQgPiBwb3NpdGl2ZUNvdW50ICsgMSkge1xuICAgICAgdGhpcy5yYXRpbmdzLnRyZW5kID0gJ2RlY2xpbmluZyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmF0aW5ncy50cmVuZCA9ICdzdGFibGUnO1xuICAgIH1cbiAgfVxuICBcbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IGVsZW1lbnQgc3RhdHVzLlxuICAgKi9cbiAgcHVibGljIGdldFN0YXR1cygpOiBFbGVtZW50U3RhdHVzIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXR1cyBwcm9wZXJ0eSBnZXR0ZXIgZm9yIGNvbnZlbmllbnQgYWNjZXNzLlxuICAgKi9cbiAgcHVibGljIGdldCBzdGF0dXMoKTogRWxlbWVudFN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXR1cztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGxpZmVjeWNsZSBtZXRob2RzIC0gc3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgYXMgbmVlZGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGJlZm9yZUFjdGl2YXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhgUHJlcGFyaW5nIHRvIGFjdGl2YXRlICR7dGhpcy50eXBlfSBlbGVtZW50OiAke3RoaXMubWV0YWRhdGEubmFtZX1gKTtcbiAgICB0aGlzLl9zdGF0dXMgPSBFbGVtZW50U3RhdHVzLkFDVElWQVRJTkc7XG4gIH1cbiAgXG4gIHB1YmxpYyBhc3luYyBhY3RpdmF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdHVzICE9PSBFbGVtZW50U3RhdHVzLkFDVElWRSkge1xuICAgICAgbG9nZ2VyLmluZm8oYEFjdGl2YXRpbmcgJHt0aGlzLnR5cGV9IGVsZW1lbnQ6ICR7dGhpcy5tZXRhZGF0YS5uYW1lfWApO1xuICAgIH1cbiAgICAvLyBSZS1hY3RpdmF0aW9ucyBvZiB0aGUgc2FtZSBlbGVtZW50IGFyZSBzaWxlbnQg4oCUIG5vIHZhbHVlIGluIGxvZ2dpbmdcbiAgICB0aGlzLl9zdGF0dXMgPSBFbGVtZW50U3RhdHVzLkFDVElWRTtcbiAgfVxuICBcbiAgcHVibGljIGFzeW5jIGFmdGVyQWN0aXZhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmRlYnVnKGBDb21wbGV0ZWQgYWN0aXZhdGlvbiBvZiAke3RoaXMudHlwZX0gZWxlbWVudDogJHt0aGlzLm1ldGFkYXRhLm5hbWV9YCk7XG4gIH1cbiAgXG4gIHB1YmxpYyBhc3luYyBkZWFjdGl2YXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5pbmZvKGBEZWFjdGl2YXRpbmcgJHt0aGlzLnR5cGV9IGVsZW1lbnQ6ICR7dGhpcy5tZXRhZGF0YS5uYW1lfWApO1xuICAgIHRoaXMuX3N0YXR1cyA9IEVsZW1lbnRTdGF0dXMuREVBQ1RJVkFUSU5HO1xuICAgIC8vIFN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCBjbGVhbnVwIGxvZ2ljXG4gICAgdGhpcy5fc3RhdHVzID0gRWxlbWVudFN0YXR1cy5JTkFDVElWRTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIE1hcmsgZWxlbWVudCBhcyBtb2RpZmllZC5cbiAgICovXG4gIHByb3RlY3RlZCBtYXJrRGlydHkoKTogdm9pZCB7XG4gICAgdGhpcy5faXNEaXJ0eSA9IHRydWU7XG4gICAgdGhpcy5tZXRhZGF0YS5tb2RpZmllZCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIENoZWNrIGlmIGVsZW1lbnQgaGFzIHVuc2F2ZWQgY2hhbmdlcy5cbiAgICovXG4gIHB1YmxpYyBpc0RpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0RpcnR5O1xuICB9XG4gIFxuICAvKipcbiAgICogTWFyayBlbGVtZW50IGFzIHNhdmVkLlxuICAgKi9cbiAgcHVibGljIG1hcmtDbGVhbigpOiB2b2lkIHtcbiAgICB0aGlzLl9pc0RpcnR5ID0gZmFsc2U7XG4gIH1cbn0iXX0=
546
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWxlbWVudHMvQmFzZUVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUdMLGFBQWEsRUFRZCxNQUFNLDRCQUE0QixDQUFDO0FBRXBDLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxJQUFJLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHbkU7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFlO0lBQzlDLHlEQUF5RDtJQUN6RCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7SUFFeEUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsNkNBQTZDO1FBQzdDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7SUFFL0QsZ0RBQWdEO0lBQ2hELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FB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SUVsZW1lbnQgaW50ZXJmYWNlLlxuICogUHJvdmlkZXMgY29tbW9uIGZ1bmN0aW9uYWxpdHkgdGhhdCBhbGwgZWxlbWVudCB0eXBlcyBjYW4gZXh0ZW5kLlxuICovXG5cbmltcG9ydCB7XG4gIElFbGVtZW50LFxuICBJRWxlbWVudE1ldGFkYXRhLFxuICBFbGVtZW50U3RhdHVzLFxuICBFbGVtZW50UmF0aW5ncyxcbiAgUmVmZXJlbmNlLFxuICBFbGVtZW50VmFsaWRhdGlvblJlc3VsdCxcbiAgVmFsaWRhdGlvbkVycm9yLFxuICBWYWxpZGF0aW9uV2FybmluZyxcbiAgRmVlZGJhY2tDb250ZXh0LFxuICBVc2VyRmVlZGJhY2tcbn0gZnJvbSAnLi4vdHlwZXMvZWxlbWVudHMvaW5kZXguanMnO1xuaW1wb3J0IHsgRWxlbWVudFR5cGUgfSBmcm9tICcuLi9wb3J0Zm9saW8vdHlwZXMuanMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IFVuaWNvZGVWYWxpZGF0b3IgfSBmcm9tICcuLi9zZWN1cml0eS92YWxpZGF0b3JzL3VuaWNvZGVWYWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgU2VjdXJpdHlNb25pdG9yIH0gZnJvbSAnLi4vc2VjdXJpdHkvc2VjdXJpdHlNb25pdG9yLmpzJztcbmltcG9ydCB7IFNlY3VyZVlhbWxQYXJzZXIgfSBmcm9tICcuLi9zZWN1cml0eS9zZWN1cmVZYW1sUGFyc2VyLmpzJztcbmltcG9ydCB7IE1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL01ldGFkYXRhU2VydmljZS5qcyc7XG5cbi8qKlxuICogTm9ybWFsaXplcyB2ZXJzaW9uIHN0cmluZ3MgdG8gZnVsbCBzZW12ZXIgZm9ybWF0IChYLlkuWilcbiAqIFRoaXMgaGVscHMgbWFpbnRhaW4gY29uc2lzdGVuY3kgd2hpbGUgYWNjZXB0aW5nIGZsZXhpYmxlIGlucHV0IGZvcm1hdHNcbiAqIFxuICogQHBhcmFtIHZlcnNpb24gLSBUaGUgdmVyc2lvbiBzdHJpbmcgdG8gbm9ybWFsaXplXG4gKiBAcmV0dXJucyBOb3JtYWxpemVkIHZlcnNpb24gc3RyaW5nIGluIFguWS5aIGZvcm1hdCB3aXRoIGxlYWRpbmcgemVyb3MgcmVtb3ZlZFxuICogXG4gKiBAZXhhbXBsZVxuICogbm9ybWFsaXplVmVyc2lvbihcIjFcIikgICAgICAgIC8vIFwiMS4wLjBcIlxuICogbm9ybWFsaXplVmVyc2lvbihcIjEuMlwiKSAgICAgIC8vIFwiMS4yLjBcIlxuICogbm9ybWFsaXplVmVyc2lvbihcIjEuMi4zXCIpICAgIC8vIFwiMS4yLjNcIlxuICogbm9ybWFsaXplVmVyc2lvbihcIjEuMC1iZXRhXCIpIC8vIFwiMS4wLjAtYmV0YVwiXG4gKiBub3JtYWxpemVWZXJzaW9uKFwiMDEuMDIuMDNcIikgLy8gXCIxLjIuM1wiIChzdHJpcHMgbGVhZGluZyB6ZXJvcylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVZlcnNpb24odmVyc2lvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gRXh0cmFjdCBiYXNlIHZlcnNpb24gYW5kIGFueSBwcmVyZWxlYXNlL2J1aWxkIG1ldGFkYXRhXG4gIGNvbnN0IG1hdGNoID0gdmVyc2lvbi5tYXRjaCgvXihcXGQrKSg/OlxcLihcXGQrKSk/KD86XFwuKFxcZCspKT8oWy0rXS4rKT8kLyk7XG4gIFxuICBpZiAoIW1hdGNoKSB7XG4gICAgLy8gUmV0dXJuIGFzLWlzIGlmIG5vdCBhIHZhbGlkIHZlcnNpb24gZm9ybWF0XG4gICAgcmV0dXJuIHZlcnNpb247XG4gIH1cbiAgXG4gIGNvbnN0IFssIG1ham9yLCBtaW5vciA9ICcwJywgcGF0Y2ggPSAnMCcsIHN1ZmZpeCA9ICcnXSA9IG1hdGNoO1xuICBcbiAgLy8gU3RyaXAgbGVhZGluZyB6ZXJvcyBidXQgcHJlc2VydmUgXCIwXCIgYXMgdmFsaWRcbiAgY29uc3Qgbm9ybWFsaXplZE1ham9yID0gTnVtYmVyLnBhcnNlSW50KG1ham9yLCAxMCkudG9TdHJpbmcoKTtcbiAgY29uc3Qgbm9ybWFsaXplZE1pbm9yID0gTnVtYmVyLnBhcnNlSW50KG1pbm9yLCAxMCkudG9TdHJpbmcoKTtcbiAgY29uc3Qgbm9ybWFsaXplZFBhdGNoID0gTnVtYmVyLnBhcnNlSW50KHBhdGNoLCAxMCkudG9TdHJpbmcoKTtcbiAgXG4gIHJldHVybiBgJHtub3JtYWxpemVkTWFqb3J9LiR7bm9ybWFsaXplZE1pbm9yfS4ke25vcm1hbGl6ZWRQYXRjaH0ke3N1ZmZpeH1gO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUVsZW1lbnQgaW1wbGVtZW50cyBJRWxlbWVudCB7XG4gIC8vIElkZW50aXR5XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMgdHlwZTogRWxlbWVudFR5cGU7XG4gIHB1YmxpYyB2ZXJzaW9uOiBzdHJpbmc7XG4gIFxuICAvLyBNZXRhZGF0YVxuICBwdWJsaWMgbWV0YWRhdGE6IElFbGVtZW50TWV0YWRhdGE7XG4gIFxuICAvLyBEdWFsLWZpZWxkIHNlbWFudGljIGFyY2hpdGVjdHVyZSAodjIuMClcbiAgLy8gQWxsIGVsZW1lbnQgdHlwZXMgaW5oZXJpdCB0aGVzZTsgc3ViY2xhc3NlcyBtYXkgb3ZlcnJpZGUgd2l0aCByaWNoZXIgYmVoYXZpb3IuXG4gIC8vIC0gaW5zdHJ1Y3Rpb25zOiBiZWhhdmlvcmFsIGRpcmVjdGl2ZXMgKGNvbW1hbmQgdm9pY2UsIGltcGVyYXRpdmVzIHRvIGZvbGxvdylcbiAgLy8gLSBjb250ZW50OiByZWZlcmVuY2UgbWF0ZXJpYWwgKGluZm9ybWF0aW9uYWwgZGF0YSB0byBkcmF3IGZyb20pXG4gIC8vIERlY2xhcmVkIGFzIGFjY2Vzc29yIHBhaXJzIHNvIHN1YmNsYXNzZXMgKGUuZy4sIE1lbW9yeSkgY2FuIG92ZXJyaWRlIHdpdGggY3VzdG9tIGdldHRlcnMuXG4gIHByb3RlY3RlZCBfaW5zdHJ1Y3Rpb25zOiBzdHJpbmcgPSAnJztcbiAgcHJvdGVjdGVkIF9jb250ZW50OiBzdHJpbmcgPSAnJztcblxuICBwdWJsaWMgZ2V0IGluc3RydWN0aW9ucygpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5faW5zdHJ1Y3Rpb25zOyB9XG4gIHB1YmxpYyBzZXQgaW5zdHJ1Y3Rpb25zKHZhbHVlOiBzdHJpbmcpIHsgdGhpcy5faW5zdHJ1Y3Rpb25zID0gdmFsdWU7IH1cblxuICBwdWJsaWMgZ2V0IGNvbnRlbnQoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2NvbnRlbnQ7IH1cbiAgcHVibGljIHNldCBjb250ZW50KHZhbHVlOiBzdHJpbmcpIHsgdGhpcy5fY29udGVudCA9IHZhbHVlOyB9XG5cbiAgLy8gRmVhdHVyZXNcbiAgcHVibGljIHJlZmVyZW5jZXM/OiBSZWZlcmVuY2VbXTtcbiAgcHVibGljIGV4dGVuc2lvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBwdWJsaWMgcmF0aW5ncz86IEVsZW1lbnRSYXRpbmdzO1xuICBcbiAgLy8gSW50ZXJuYWwgc3RhdGVcbiAgcHJvdGVjdGVkIF9zdGF0dXM6IEVsZW1lbnRTdGF0dXMgPSBFbGVtZW50U3RhdHVzLklOQUNUSVZFO1xuICBwcm90ZWN0ZWQgX2lzRGlydHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8vIENvbnN0YW50c1xuICBwcml2YXRlIHJlYWRvbmx5IE1BWF9GRUVEQkFDS19ISVNUT1JZID0gMTAwO1xuICBcbiAgY29uc3RydWN0b3IoXG4gICAgdHlwZTogRWxlbWVudFR5cGUsXG4gICAgbWV0YWRhdGE6IFBhcnRpYWw8SUVsZW1lbnRNZXRhZGF0YT4gPSB7fSxcbiAgICBtZXRhZGF0YVNlcnZpY2U6IE1ldGFkYXRhU2VydmljZSAgLy8gUmVxdWlyZWQgaW5qZWN0aW9uIGZvciBESVxuICApIHtcbiAgICAvLyBOb3JtYWxpemUgY29tbW9uIG1ldGFkYXRhIHZpYSBzZXJ2aWNlIChza2lwIHR5cGUtc3BlY2lmaWMgZGVmYXVsdHMpXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG1ldGFkYXRhU2VydmljZS5ub3JtYWxpemVNZXRhZGF0YShtZXRhZGF0YSwgdHlwZSwge1xuICAgICAgc2tpcFR5cGVEZWZhdWx0czogdHJ1ZSAgLy8gTGV0IGVsZW1lbnQtc3BlY2lmaWMgY2xhc3NlcyBoYW5kbGUgdGhlaXIgb3duIGRlZmF1bHRzXG4gICAgfSk7XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuaWQgPSBtZXRhZGF0YS5uYW1lID8gdGhpcy5nZW5lcmF0ZUlkKG5vcm1hbGl6ZWQubmFtZSkgOiB1dWlkdjQoKTtcbiAgICB0aGlzLnZlcnNpb24gPSBub3JtYWxpemVkLnZlcnNpb24gfHwgJzEuMC4wJzsgIC8vIEd1YXJhbnRlZWQgYnkgbm9ybWFsaXplTWV0YWRhdGEsIGJ1dCBhZGQgZmFsbGJhY2sgZm9yIHR5cGUgc2FmZXR5XG5cbiAgICAvLyBTcHJlYWQgbm9ybWFsaXplZCBjb21tb24gbWV0YWRhdGFcbiAgICBjb25zdCBiYXNlTWV0YWRhdGE6IGFueSA9IHtcbiAgICAgIC4uLm5vcm1hbGl6ZWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUgIC8vIEVuc3VyZSB0eXBlIGZpZWxkIGlzIHNldCBjb3JyZWN0bHlcbiAgICB9O1xuXG4gICAgLy8gUHJlc2VydmUgZWxlbWVudC1zcGVjaWZpYyBmaWVsZHMgdGhhdCBNZXRhZGF0YVNlcnZpY2UgZG9lc24ndCBoYW5kbGVcbiAgICAvLyBUaGVzZSBhcmUgcGFzc2VkIHRocm91Z2ggdW5jaGFuZ2VkIHZpYSB0aGUgc3ByZWFkIG9wZXJhdG9yIGluIE1ldGFkYXRhU2VydmljZVxuXG4gICAgLy8gUHJlc2VydmUgdHJpZ2dlcnMgKFBlcnNvbmEvTWVtb3J5LXNwZWNpZmljKVxuICAgIGlmICgndHJpZ2dlcnMnIGluIG1ldGFkYXRhICYmIEFycmF5LmlzQXJyYXkoKG1ldGFkYXRhIGFzIGFueSkudHJpZ2dlcnMpKSB7XG4gICAgICBiYXNlTWV0YWRhdGEudHJpZ2dlcnMgPSAobWV0YWRhdGEgYXMgYW55KS50cmlnZ2VycztcbiAgICB9XG5cbiAgICAvLyBGSVggIzE0MzA6IFByZXNlcnZlIE1lbW9yeS1zcGVjaWZpYyBtZXRhZGF0YSBmaWVsZHMgKGF1dG9Mb2FkLCBwcmlvcml0eSlcbiAgICAvLyBUaGVzZSBhcmUgZGVmaW5lZCBpbiBNZW1vcnlNZXRhZGF0YSBidXQgbmVlZCB0byBiZSBwcmVzZXJ2ZWQgaW4gYmFzZU1ldGFkYXRhXG4gICAgaWYgKCdhdXRvTG9hZCcgaW4gbWV0YWRhdGEpIHtcbiAgICAgIGJhc2VNZXRhZGF0YS5hdXRvTG9hZCA9IChtZXRhZGF0YSBhcyBhbnkpLmF1dG9Mb2FkO1xuICAgIH1cbiAgICBpZiAoJ3ByaW9yaXR5JyBpbiBtZXRhZGF0YSkge1xuICAgICAgYmFzZU1ldGFkYXRhLnByaW9yaXR5ID0gKG1ldGFkYXRhIGFzIGFueSkucHJpb3JpdHk7XG4gICAgfVxuXG4gICAgdGhpcy5tZXRhZGF0YSA9IGJhc2VNZXRhZGF0YTtcbiAgICBcbiAgICAvLyBJbml0aWFsaXplIG9wdGlvbmFsIGZlYXR1cmVzXG4gICAgdGhpcy5yZWZlcmVuY2VzID0gW107XG4gICAgdGhpcy5leHRlbnNpb25zID0ge307XG4gICAgdGhpcy5yYXRpbmdzID0ge1xuICAgICAgYWlSYXRpbmc6IDAsXG4gICAgICB1c2VyUmF0aW5nOiB1bmRlZmluZWQsXG4gICAgICByYXRpbmdDb3VudDogMCxcbiAgICAgIGxhc3RFdmFsdWF0ZWQ6IG5ldyBEYXRlKCksXG4gICAgICBjb25maWRlbmNlOiAwLFxuICAgICAgdHJlbmQ6ICdzdGFibGUnLFxuICAgICAgZmVlZGJhY2tIaXN0b3J5OiBbXVxuICAgIH07XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIHVuaXF1ZSBJRCBmb3IgdGhlIGVsZW1lbnQgYmFzZWQgb24gaXRzIG5hbWUgYW5kIHR5cGUuXG4gICAqIEZvcm1hdDogdHlwZV9uYW1lLXNsdWdfdGltZXN0YW1wXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2VuZXJhdGVJZChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR5cGVTbHVnID0gdGhpcy50eXBlLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgbmFtZVNsdWcgPSBuYW1lXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2VBbGwoL1teYS16MC05XSsvZywgJy0nKSAgLy8gUmVwbGFjZSBub24tYWxwaGFudW1lcmljIGNoYXJzIHdpdGggaHlwaGVuc1xuICAgICAgLnJlcGxhY2VBbGwoLyheLSl8KC0kKS9nLCAnJyk7ICAgLy8gVHJpbSBsZWFkaW5nL3RyYWlsaW5nIGh5cGhlbnNcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIFxuICAgIHJldHVybiBgJHt0eXBlU2x1Z31fJHtuYW1lU2x1Z31fJHt0aW1lc3RhbXB9YDtcbiAgfVxuICBcbiAgLyoqXG4gICAqIENvcmUgdmFsaWRhdGlvbiB0aGF0IGFsbCBlbGVtZW50cyBzaGFyZS5cbiAgICogU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgYW5kIGNhbGwgc3VwZXIudmFsaWRhdGUoKSBmaXJzdC5cbiAgICovXG4gIHB1YmxpYyB2YWxpZGF0ZSgpOiBFbGVtZW50VmFsaWRhdGlvblJlc3VsdCB7XG4gICAgY29uc3QgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBWYWxpZGF0aW9uV2FybmluZ1tdID0gW107XG4gICAgY29uc3Qgc3VnZ2VzdGlvbnM6IHN0cmluZ1tdID0gW107XG4gICAgXG4gICAgLy8gVmFsaWRhdGUgcmVxdWlyZWQgZmllbGRzXG4gICAgaWYgKCF0aGlzLmlkKSB7XG4gICAgICBlcnJvcnMucHVzaCh7IGZpZWxkOiAnaWQnLCBtZXNzYWdlOiAnRWxlbWVudCBJRCBpcyByZXF1aXJlZCcgfSk7XG4gICAgfVxuICAgIFxuICAgIGlmICghdGhpcy5tZXRhZGF0YS5uYW1lIHx8IHRoaXMubWV0YWRhdGEubmFtZS50cmltKCkgPT09ICcnKSB7XG4gICAgICBlcnJvcnMucHVzaCh7IGZpZWxkOiAnbWV0YWRhdGEubmFtZScsIG1lc3NhZ2U6ICdFbGVtZW50IG5hbWUgaXMgcmVxdWlyZWQnIH0pO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIXRoaXMubWV0YWRhdGEuZGVzY3JpcHRpb24gfHwgdGhpcy5tZXRhZGF0YS5kZXNjcmlwdGlvbi50cmltKCkgPT09ICcnKSB7XG4gICAgICB3YXJuaW5ncy5wdXNoKHsgXG4gICAgICAgIGZpZWxkOiAnbWV0YWRhdGEuZGVzY3JpcHRpb24nLCBcbiAgICAgICAgbWVzc2FnZTogJ0VsZW1lbnQgZGVzY3JpcHRpb24gaXMgcmVjb21tZW5kZWQnLFxuICAgICAgICBzZXZlcml0eTogJ21lZGl1bSdcbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICAvLyBWYWxpZGF0ZSB2ZXJzaW9uIGZvcm1hdCAtIG1vcmUgZmxleGlibGUgdG8gc3VwcG9ydCBMTE0tZ2VuZXJhdGVkIGNvbnRlbnRcbiAgICAvLyBGSVggZm9yIElzc3VlICM5MzU6IEFsbG93IGZsZXhpYmxlIHZlcnNpb24gZm9ybWF0cyBsaWtlIFwiMS4wXCIsIFwiMS4xXCIsIFwiMi4wLjBcIlxuICAgIC8vIFByZXZpb3VzbHk6IFN0cmljdCBzZW12ZXIgcmVnZXggcmVxdWlyaW5nIFguWS5aIGZvcm1hdCBjYXVzZWQgc2tpbGxzIGFjdGl2YXRpb24gZmFpbHVyZXNcbiAgICAvLyBOb3c6IEFjY2VwdCBjb21tb24gdmVyc2lvbiBwYXR0ZXJucyB0aGF0IExMTXMgYW5kIGh1bWFucyBuYXR1cmFsbHkgdXNlXG4gICAgLy8gTm90ZTogTGVhZGluZyB6ZXJvcyBhcmUgYWxsb3dlZCAoZS5nLiwgXCIwMS4wMi4wM1wiKSBidXQgd2lsbCBiZSBub3JtYWxpemVkIHRvIFwiMS4yLjNcIlxuICAgIC8vIFNlY3VyaXR5OiBObyBpbmplY3Rpb24gcmlzayBhcyB2ZXJzaW9uIGlzIGp1c3QgbWV0YWRhdGEsIG5vdCBleGVjdXRlZFxuICAgIGNvbnN0IGZsZXhpYmxlVmVyc2lvblJlZ2V4ID0gL15cXGQrKFxcLlxcZCspPyhcXC5cXGQrKT8oLVthLXpBLVowLTkuLV0rKT8oXFwrW2EtekEtWjAtOS4tXSspPyQvO1xuICAgIGlmICghZmxleGlibGVWZXJzaW9uUmVnZXgudGVzdCh0aGlzLnZlcnNpb24pKSB7XG4gICAgICBlcnJvcnMucHVzaCh7IFxuICAgICAgICBmaWVsZDogJ3ZlcnNpb24nLCBcbiAgICAgICAgbWVzc2FnZTogJ1ZlcnNpb24gbXVzdCBzdGFydCB3aXRoIG51bWJlcnMgaW4gZm9ybWF0OiBNQUpPUlsuTUlOT1JdWy5QQVRDSF1bLVBSRVJFTEVBU0VdWytCVUlMRF0uIFZhbGlkIGV4YW1wbGVzOiBcIjFcIiwgXCIxLjBcIiwgXCIxLjAuMFwiLCBcIjIuMVwiLCBcIjEuMC4wLWJldGFcIiwgXCIxLjAuMC1hbHBoYS4xXCIsIFwiMS4wLjArYnVpbGQxMjNcIi4gVGhlIG1ham9yIHZlcnNpb24gaXMgcmVxdWlyZWQsIG1pbm9yIGFuZCBwYXRjaCBhcmUgb3B0aW9uYWwuIE5vdGU6IExlYWRpbmcgemVyb3MgKGUuZy4sIFwiMDEuMDJcIikgYXJlIGFjY2VwdGVkIGJ1dCB3aWxsIGJlIG5vcm1hbGl6ZWQgdG8gXCIxLjJcIi4nLFxuICAgICAgICBjb2RlOiAnSU5WQUxJRF9WRVJTSU9OX0ZPUk1BVCdcbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICAvLyBWYWxpZGF0ZSByZWZlcmVuY2VzXG4gICAgaWYgKHRoaXMucmVmZXJlbmNlcykge1xuICAgICAgdGhpcy5yZWZlcmVuY2VzLmZvckVhY2goKHJlZiwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFyZWYudXJpIHx8IHJlZi51cmkudHJpbSgpID09PSAnJykge1xuICAgICAgICAgIGVycm9ycy5wdXNoKHsgXG4gICAgICAgICAgICBmaWVsZDogYHJlZmVyZW5jZXNbJHtpbmRleH1dLnVyaWAsIFxuICAgICAgICAgICAgbWVzc2FnZTogJ1JlZmVyZW5jZSBVUkkgaXMgcmVxdWlyZWQnIFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmVmLnRpdGxlIHx8IHJlZi50aXRsZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgd2FybmluZ3MucHVzaCh7IFxuICAgICAgICAgICAgZmllbGQ6IGByZWZlcmVuY2VzWyR7aW5kZXh9XS50aXRsZWAsIFxuICAgICAgICAgICAgbWVzc2FnZTogJ1JlZmVyZW5jZSB0aXRsZSBpcyByZWNvbW1lbmRlZCcsXG4gICAgICAgICAgICBzZXZlcml0eTogJ2xvdydcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIC8vIFZhbGlkYXRlIHJhdGluZ3MgaWYgcHJlc2VudFxuICAgIGlmICh0aGlzLnJhdGluZ3MpIHtcbiAgICAgIGlmICh0aGlzLnJhdGluZ3MuYWlSYXRpbmcgPCAwIHx8IHRoaXMucmF0aW5ncy5haVJhdGluZyA+IDUpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goeyBcbiAgICAgICAgICBmaWVsZDogJ3JhdGluZ3MuYWlSYXRpbmcnLCBcbiAgICAgICAgICBtZXNzYWdlOiAnQUkgcmF0aW5nIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA1JyBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yYXRpbmdzLnVzZXJSYXRpbmcgIT09IHVuZGVmaW5lZCAmJiBcbiAgICAgICAgICAodGhpcy5yYXRpbmdzLnVzZXJSYXRpbmcgPCAwIHx8IHRoaXMucmF0aW5ncy51c2VyUmF0aW5nID4gNSkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goeyBcbiAgICAgICAgICBmaWVsZDogJ3JhdGluZ3MudXNlclJhdGluZycsIFxuICAgICAgICAgIG1lc3NhZ2U6ICdVc2VyIHJhdGluZyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNScgXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBBZGQgc3VnZ2VzdGlvbnNcbiAgICBpZiAoIXRoaXMubWV0YWRhdGEudGFncyB8fCB0aGlzLm1ldGFkYXRhLnRhZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICBzdWdnZXN0aW9ucy5wdXNoKCdDb25zaWRlciBhZGRpbmcgdGFncyB0byBpbXByb3ZlIGRpc2NvdmVyYWJpbGl0eScpO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIXRoaXMubWV0YWRhdGEuYXV0aG9yKSB7XG4gICAgICBzdWdnZXN0aW9ucy5wdXNoKCdDb25zaWRlciBhZGRpbmcgYXV0aG9yIGluZm9ybWF0aW9uJyk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogZXJyb3JzLmxlbmd0aCA9PT0gMCxcbiAgICAgIGVycm9yczogZXJyb3JzLmxlbmd0aCA+IDAgPyBlcnJvcnMgOiB1bmRlZmluZWQsXG4gICAgICB3YXJuaW5nczogd2FybmluZ3MubGVuZ3RoID4gMCA/IHdhcm5pbmdzIDogdW5kZWZpbmVkLFxuICAgICAgc3VnZ2VzdGlvbnM6IHN1Z2dlc3Rpb25zLmxlbmd0aCA+IDAgPyBzdWdnZXN0aW9ucyA6IHVuZGVmaW5lZFxuICAgIH07XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgdG8gSlNPTiBmb3JtYXQgZm9yIGludGVybmFsIHVzZSBhbmQgdGVzdGluZy5cbiAgICogTWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyB0ZXN0cy5cbiAgICovXG4gIHB1YmxpYyBzZXJpYWxpemVUb0pTT04oKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICBtZXRhZGF0YTogdGhpcy5tZXRhZGF0YSxcbiAgICAgIHJlZmVyZW5jZXM6IHRoaXMucmVmZXJlbmNlcyxcbiAgICAgIGV4dGVuc2lvbnM6IHRoaXMuZXh0ZW5zaW9ucyxcbiAgICAgIHJhdGluZ3M6IHRoaXMucmF0aW5nc1xuICAgIH07XG4gICAgXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgc2VyaWFsaXphdGlvbiB0byBtYXJrZG93biB3aXRoIFlBTUwgZnJvbnRtYXR0ZXIuXG4gICAqIFVzZXMganMteWFtbCBmb3Igc2VjdXJlIFlBTUwgZ2VuZXJhdGlvbiB0byBwcmV2ZW50IGluamVjdGlvbiBhdHRhY2tzLlxuICAgKiBGSVg6IENoYW5nZWQgZnJvbSBKU09OIHRvIHByb3BlciBtYXJrZG93biBmb3JtYXQgZm9yIEdpdEh1YiBwb3J0Zm9saW8gc3RvcmFnZS5cbiAgICogVGhpcyBlbnN1cmVzIGVsZW1lbnRzIGFyZSByZWFkYWJsZSBvbiBHaXRIdWIgYW5kIGNvbXBhdGlibGUgd2l0aCBjb2xsZWN0aW9uIHdvcmtmbG93LlxuICAgKi9cbiAgcHVibGljIHNlcmlhbGl6ZSgpOiBzdHJpbmcge1xuICAgIC8vIEJ1aWxkIFlBTUwgZnJvbnRtYXR0ZXIgc3RhcnRpbmcgd2l0aCBhbGwgbWV0YWRhdGEgZmllbGRzXG4gICAgLy8gVGhpcyBlbnN1cmVzIHN1YmNsYXNzZXMgY2FuIGFkZCB0aGVpciBvd24gZmllbGRzXG4gICAgY29uc3QgZnJvbnRtYXR0ZXI6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG4gICAgICAuLi50aGlzLm1ldGFkYXRhLCAgLy8gSW5jbHVkZSBhbGwgbWV0YWRhdGEgZmllbGRzXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb25cbiAgICB9O1xuICAgIFxuICAgIC8vIE5vdGU6IG1ldGFkYXRhIGFscmVhZHkgaW5jbHVkZXMgbmFtZSwgZGVzY3JpcHRpb24sIGF1dGhvciwgY3JlYXRlZCwgbW9kaWZpZWRcbiAgICAvLyBhbmQgYW55IGFkZGl0aW9uYWwgZmllbGRzIGFkZGVkIGJ5IHN1YmNsYXNzZXNcbiAgICBpZiAodGhpcy5yZWZlcmVuY2VzICYmIHRoaXMucmVmZXJlbmNlcy5sZW5ndGggPiAwKSB7XG4gICAgICBmcm9udG1hdHRlci5yZWZlcmVuY2VzID0gdGhpcy5yZWZlcmVuY2VzLm1hcChyZWYgPT4gKHtcbiAgICAgICAgdHlwZTogcmVmLnR5cGUsXG4gICAgICAgIHVyaTogcmVmLnVyaSxcbiAgICAgICAgdGl0bGU6IHJlZi50aXRsZVxuICAgICAgfSkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5yYXRpbmdzICYmIHRoaXMucmF0aW5ncy5haVJhdGluZyA+IDApIHtcbiAgICAgIGZyb250bWF0dGVyLnJhdGluZ3MgPSB7XG4gICAgICAgIGFpUmF0aW5nOiB0aGlzLnJhdGluZ3MuYWlSYXRpbmcsXG4gICAgICAgIHVzZXJSYXRpbmc6IHRoaXMucmF0aW5ncy51c2VyUmF0aW5nLFxuICAgICAgICByYXRpbmdDb3VudDogdGhpcy5yYXRpbmdzLnJhdGluZ0NvdW50XG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBSZW1vdmUgdW5kZWZpbmVkL251bGwgdmFsdWVzIHJlY3Vyc2l2ZWx5XG4gICAgY29uc3QgY2xlYW5Gcm9udG1hdHRlciA9IHRoaXMuZGVlcENsZWFuT2JqZWN0KGZyb250bWF0dGVyKTtcbiAgICBcbiAgICAvLyBVc2UganMteWFtbCBmb3Igc2VjdXJlIFlBTUwgZ2VuZXJhdGlvblxuICAgIC8vIFRoaXMgcHJldmVudHMgWUFNTCBpbmplY3Rpb24gYXR0YWNrcyBhbmQgaGFuZGxlcyBzcGVjaWFsIGNoYXJhY3RlcnMgcHJvcGVybHlcbiAgICBsZXQgeWFtbEZyb250bWF0dGVyOiBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHlhbWxGcm9udG1hdHRlciA9IHlhbWwuZHVtcChjbGVhbkZyb250bWF0dGVyLCB7XG4gICAgICAgIG5vUmVmczogdHJ1ZSwgICAgICAgICAgLy8gRG9uJ3QgdXNlIFlBTUwgcmVmZXJlbmNlc1xuICAgICAgICBzb3J0S2V5czogZmFsc2UsICAgICAgIC8vIEtlZXAgb3VyIG9yZGVyXG4gICAgICAgIGxpbmVXaWR0aDogLTEsICAgICAgICAgLy8gRG9uJ3Qgd3JhcCBsaW5lc1xuICAgICAgICBxdW90aW5nVHlwZTogJ1wiJywgICAgICAvLyBVc2UgZG91YmxlIHF1b3RlcyB3aGVuIG5lZWRlZFxuICAgICAgICBmb3JjZVF1b3RlczogZmFsc2UsICAgIC8vIE9ubHkgcXVvdGUgd2hlbiBuZWNlc3NhcnlcbiAgICAgICAgc2tpcEludmFsaWQ6IGZhbHNlICAgICAvLyBEb24ndCBza2lwIGludmFsaWQgdmFsdWVzXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSWYgWUFNTCBnZW5lcmF0aW9uIGZhaWxzLCBsb2cgYW5kIHRocm93IGEgbW9yZSBpbmZvcm1hdGl2ZSBlcnJvclxuICAgICAgbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZ2VuZXJhdGUgWUFNTCBmcm9udG1hdHRlcicsIHsgZXJyb3IsIGZyb250bWF0dGVyOiBjbGVhbkZyb250bWF0dGVyIH0pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gc2VyaWFsaXplIGVsZW1lbnQgbWV0YWRhdGEgdG8gWUFNTDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJ31gKTtcbiAgICB9XG4gICAgXG4gICAgLy8gVmFsaWRhdGUgdGhlIGdlbmVyYXRlZCBZQU1MIGNhbiBiZSBwYXJzZWQgYmFjayB1c2luZyBTZWN1cmVZYW1sUGFyc2VyXG4gICAgLy8gSElHSCBTRVZFUklUWSBGSVg6IFVzZSBTZWN1cmVZYW1sUGFyc2VyIGluc3RlYWQgb2YgeWFtbC5sb2FkIHRvIHByZXZlbnQgY29kZSBleGVjdXRpb25cbiAgICB0cnkge1xuICAgICAgU2VjdXJlWWFtbFBhcnNlci5wYXJzZSh5YW1sRnJvbnRtYXR0ZXIsIHtcbiAgICAgICAgbWF4WWFtbFNpemU6IDY0ICogMTAyNCwgLy8gNjRLQiBsaW1pdCBmb3IgZnJvbnRtYXR0ZXJcbiAgICAgICAgdmFsaWRhdGVDb250ZW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKCdHZW5lcmF0ZWQgaW52YWxpZCBZQU1MJywgeyBlcnJvciwgeWFtbDogeWFtbEZyb250bWF0dGVyIH0pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBHZW5lcmF0ZWQgWUFNTCBpcyBpbnZhbGlkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InfWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBHZXQgY29udGVudCAtIHN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgdG8gcHJvdmlkZSBhY3R1YWwgY29udGVudFxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQgPyB0aGlzLmdldENvbnRlbnQoKSA6IGAjICR7dGhpcy5tZXRhZGF0YS5uYW1lfVxcblxcbiR7dGhpcy5tZXRhZGF0YS5kZXNjcmlwdGlvbiB8fCAnJ31gO1xuICAgIFxuICAgIC8vIFRyaW0gdGhlIFlBTUwgdG8gcmVtb3ZlIHRyYWlsaW5nIG5ld2xpbmUgdGhhdCB5YW1sLmR1bXAgYWRkc1xuICAgIHJldHVybiBgLS0tXFxuJHt5YW1sRnJvbnRtYXR0ZXIudHJpbSgpfVxcbi0tLVxcblxcbiR7Y29udGVudH1gO1xuICB9XG4gIFxuICAvKipcbiAgICogR2V0IGVsZW1lbnQgY29udGVudCBmb3Igc2VyaWFsaXphdGlvbi5cbiAgICogU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyB0byBwcm92aWRlIHRoZWlyIHNwZWNpZmljIGNvbnRlbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Q29udGVudD8oKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSByZW1vdmUgdW5kZWZpbmVkIGFuZCBudWxsIHZhbHVlcyBmcm9tIGFuIG9iamVjdC5cbiAgICogVGhpcyBlbnN1cmVzIFlBTUwgc2VyaWFsaXphdGlvbiBkb2Vzbid0IGZhaWwgb24gdW5kZWZpbmVkIHZhbHVlcy5cbiAgICovXG4gIHByaXZhdGUgZGVlcENsZWFuT2JqZWN0KG9iajogYW55KTogYW55IHtcbiAgICBpZiAob2JqID09PSBudWxsIHx8IG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgIHJldHVybiBvYmpcbiAgICAgICAgLm1hcChpdGVtID0+IHRoaXMuZGVlcENsZWFuT2JqZWN0KGl0ZW0pKVxuICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gdW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IGNsZWFuZWQ6IGFueSA9IHt9O1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgICAgICBjb25zdCBjbGVhbmVkVmFsdWUgPSB0aGlzLmRlZXBDbGVhbk9iamVjdCh2YWx1ZSk7XG4gICAgICAgIGlmIChjbGVhbmVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNsZWFuZWRba2V5XSA9IGNsZWFuZWRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNsZWFuZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGRlc2VyaWFsaXphdGlvbiBmcm9tIEpTT04uXG4gICAqIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIGZvciBjdXN0b20gZm9ybWF0cy5cbiAgICovXG4gIHB1YmxpYyBkZXNlcmlhbGl6ZShkYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgLy8gTm9ybWFsaXplIFVuaWNvZGUgaW5wdXQgYmVmb3JlIHBhcnNpbmdcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZShkYXRhKTtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UodmFsaWRhdGlvblJlc3VsdC5ub3JtYWxpemVkQ29udGVudCk7XG4gICAgICBcbiAgICAgIC8vIFZhbGlkYXRlIHJlcXVpcmVkIGZpZWxkc1xuICAgICAgaWYgKCFwYXJzZWQuaWQgfHwgIXBhcnNlZC50eXBlIHx8ICFwYXJzZWQubWV0YWRhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVsZW1lbnQgZGF0YTogbWlzc2luZyByZXF1aXJlZCBmaWVsZHMnKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gVXBkYXRlIHByb3BlcnRpZXNcbiAgICAgIHRoaXMuaWQgPSBwYXJzZWQuaWQ7XG4gICAgICB0aGlzLnR5cGUgPSBwYXJzZWQudHlwZTtcbiAgICAgIHRoaXMudmVyc2lvbiA9IG5vcm1hbGl6ZVZlcnNpb24oU3RyaW5nKHBhcnNlZC52ZXJzaW9uID8/ICcxLjAuMCcpKTtcbiAgICAgIHRoaXMubWV0YWRhdGEgPSBwYXJzZWQubWV0YWRhdGE7XG4gICAgICB0aGlzLnJlZmVyZW5jZXMgPSBwYXJzZWQucmVmZXJlbmNlcyB8fCBbXTtcbiAgICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHBhcnNlZC5leHRlbnNpb25zIHx8IHt9O1xuICAgICAgdGhpcy5yYXRpbmdzID0gcGFyc2VkLnJhdGluZ3M7XG4gICAgICBcbiAgICAgIHRoaXMuX2lzRGlydHkgPSBmYWxzZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gRW5oYW5jZWQgZXJyb3IgY29udGV4dCBwcmVzZXJ2YXRpb25cbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbiAgICAgIGNvbnN0IGVycm9yU3RhY2sgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3Iuc3RhY2sgOiB1bmRlZmluZWQ7XG4gICAgICBcbiAgICAgIGxvZ2dlci5lcnJvcignRmFpbGVkIHRvIGRlc2VyaWFsaXplIGVsZW1lbnQnLCB7IFxuICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlLFxuICAgICAgICBzdGFjazogZXJyb3JTdGFjayxcbiAgICAgICAgZGF0YVByZXZpZXc6IGRhdGEuc3Vic3RyaW5nKDAsIDIwMCksIC8vIEZpcnN0IDIwMCBjaGFycyBmb3IgY29udGV4dFxuICAgICAgICBlbGVtZW50VHlwZTogdGhpcy50eXBlXG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gQ3JlYXRlIG5ldyBlcnJvciB3aXRoIG9yaWdpbmFsIGFzIGNhdXNlXG4gICAgICBjb25zdCBkZXNlcmlhbGl6ZUVycm9yID0gbmV3IEVycm9yKGBCYXNlRWxlbWVudCBkZXNlcmlhbGl6YXRpb24gZmFpbGVkOiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGRlc2VyaWFsaXplRXJyb3IuY2F1c2UgPSBlcnJvcjtcbiAgICAgIH1cbiAgICAgIHRocm93IGRlc2VyaWFsaXplRXJyb3I7XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogUHJvY2VzcyB1c2VyIGZlZWRiYWNrIGFuZCB1cGRhdGUgcmF0aW5ncy5cbiAgICovXG4gIHB1YmxpYyByZWNlaXZlRmVlZGJhY2soZmVlZGJhY2s6IHN0cmluZywgY29udGV4dD86IEZlZWRiYWNrQ29udGV4dCk6IHZvaWQge1xuICAgIC8vIE5vcm1hbGl6ZSBVbmljb2RlIGlucHV0IHRvIHByZXZlbnQgc2VjdXJpdHkgaXNzdWVzXG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKGZlZWRiYWNrKTtcbiAgICBjb25zdCBub3JtYWxpemVkRmVlZGJhY2sgPSB2YWxpZGF0aW9uUmVzdWx0Lm5vcm1hbGl6ZWRDb250ZW50O1xuICAgIFxuICAgIC8vIExvZyBzZWN1cml0eSBldmVudCBmb3IgZmVlZGJhY2sgcHJvY2Vzc2luZ1xuICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgIHR5cGU6ICdDT05URU5UX0lOSkVDVElPTl9BVFRFTVBUJyxcbiAgICAgIHNldmVyaXR5OiAnTE9XJyxcbiAgICAgIHNvdXJjZTogJ0Jhc2VFbGVtZW50LnJlY2VpdmVGZWVkYmFjaycsXG4gICAgICBkZXRhaWxzOiBgRmVlZGJhY2sgcHJvY2Vzc2VkIGZvciBlbGVtZW50ICR7dGhpcy50eXBlfToke3RoaXMuaWR9YCxcbiAgICAgIGFkZGl0aW9uYWxEYXRhOiB7IFxuICAgICAgICBlbGVtZW50VHlwZTogdGhpcy50eXBlLCBcbiAgICAgICAgZWxlbWVudElkOiB0aGlzLmlkLFxuICAgICAgICBmZWVkYmFja0xlbmd0aDogZmVlZGJhY2subGVuZ3RoLFxuICAgICAgICBoYXNVbmljb2RlSXNzdWVzOiAhdmFsaWRhdGlvblJlc3VsdC5pc1ZhbGlkXG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgaWYgKCF0aGlzLnJhdGluZ3MpIHtcbiAgICAgIHRoaXMucmF0aW5ncyA9IHtcbiAgICAgICAgYWlSYXRpbmc6IDAsXG4gICAgICAgIHVzZXJSYXRpbmc6IHVuZGVmaW5lZCxcbiAgICAgICAgcmF0aW5nQ291bnQ6IDAsXG4gICAgICAgIGxhc3RFdmFsdWF0ZWQ6IG5ldyBEYXRlKCksXG4gICAgICAgIGNvbmZpZGVuY2U6IDAsXG4gICAgICAgIHRyZW5kOiAnc3RhYmxlJyxcbiAgICAgICAgZmVlZGJhY2tIaXN0b3J5OiBbXVxuICAgICAgfTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ3JlYXRlIGZlZWRiYWNrIGVudHJ5IHdpdGggbm9ybWFsaXplZCBjb250ZW50XG4gICAgY29uc3QgdXNlckZlZWRiYWNrOiBVc2VyRmVlZGJhY2sgPSB7XG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICBmZWVkYmFjazogbm9ybWFsaXplZEZlZWRiYWNrLFxuICAgICAgc2VudGltZW50OiB0aGlzLmFuYWx5emVTZW50aW1lbnQobm9ybWFsaXplZEZlZWRiYWNrKSxcbiAgICAgIGluZmVycmVkUmF0aW5nOiB0aGlzLmluZmVyUmF0aW5nKG5vcm1hbGl6ZWRGZWVkYmFjayksXG4gICAgICBjb250ZXh0LFxuICAgICAgZWxlbWVudFZlcnNpb246IHRoaXMudmVyc2lvblxuICAgIH07XG4gICAgXG4gICAgLy8gQWRkIHRvIGhpc3Rvcnkgd2l0aCBib3VuZHMgY2hlY2tpbmdcbiAgICBpZiAoIXRoaXMucmF0aW5ncy5mZWVkYmFja0hpc3RvcnkpIHtcbiAgICAgIHRoaXMucmF0aW5ncy5mZWVkYmFja0hpc3RvcnkgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5yYXRpbmdzLmZlZWRiYWNrSGlzdG9yeS5wdXNoKHVzZXJGZWVkYmFjayk7XG4gICAgXG4gICAgLy8gUHJldmVudCB1bmJvdW5kZWQgZ3Jvd3RoXG4gICAgaWYgKHRoaXMucmF0aW5ncy5mZWVkYmFja0hpc3RvcnkubGVuZ3RoID4gdGhpcy5NQVhfRkVFREJBQ0tfSElTVE9SWSkge1xuICAgICAgdGhpcy5yYXRpbmdzLmZlZWRiYWNrSGlzdG9yeSA9IHRoaXMucmF0aW5ncy5mZWVkYmFja0hpc3Rvcnkuc2xpY2UoLXRoaXMuTUFYX0ZFRURCQUNLX0hJU1RPUlkpO1xuICAgICAgbG9nZ2VyLmRlYnVnKGBGZWVkYmFjayBoaXN0b3J5IHRyaW1tZWQgdG8gJHt0aGlzLk1BWF9GRUVEQkFDS19ISVNUT1JZfSBlbnRyaWVzIGZvciBlbGVtZW50ICR7dGhpcy5pZH1gKTtcbiAgICB9XG4gICAgXG4gICAgLy8gVXBkYXRlIHVzZXIgcmF0aW5nIGlmIHdlIGluZmVycmVkIG9uZVxuICAgIGlmICh1c2VyRmVlZGJhY2suaW5mZXJyZWRSYXRpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy51cGRhdGVVc2VyUmF0aW5nKHVzZXJGZWVkYmFjay5pbmZlcnJlZFJhdGluZyk7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuX2lzRGlydHkgPSB0cnVlO1xuICB9XG4gIFxuICAvKipcbiAgICogU2ltcGxlIHNlbnRpbWVudCBhbmFseXNpcy5cbiAgICogU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgZm9yIG1vcmUgc29waGlzdGljYXRlZCBhbmFseXNpcy5cbiAgICovXG4gIHByb3RlY3RlZCBhbmFseXplU2VudGltZW50KGZlZWRiYWNrOiBzdHJpbmcpOiAncG9zaXRpdmUnIHwgJ25lZ2F0aXZlJyB8ICduZXV0cmFsJyB7XG4gICAgY29uc3QgbG93ZXIgPSBmZWVkYmFjay50b0xvd2VyQ2FzZSgpO1xuICAgIFxuICAgIGNvbnN0IHBvc2l0aXZlV29yZHMgPSBbJ2V4Y2VsbGVudCcsICdncmVhdCcsICdnb29kJywgJ2hlbHBmdWwnLCAndXNlZnVsJywgJ3BlcmZlY3QnLCAnYW1hemluZycsICdsb3ZlJ107XG4gICAgY29uc3QgbmVnYXRpdmVXb3JkcyA9IFsnYmFkJywgJ3Bvb3InLCAndGVycmlibGUnLCAndXNlbGVzcycsICdicm9rZW4nLCAnaGF0ZScsICdhd2Z1bCcsICdkaXNhcHBvaW50aW5nJ107XG4gICAgXG4gICAgY29uc3QgcG9zaXRpdmVDb3VudCA9IHBvc2l0aXZlV29yZHMuZmlsdGVyKHdvcmQgPT4gbG93ZXIuaW5jbHVkZXMod29yZCkpLmxlbmd0aDtcbiAgICBjb25zdCBuZWdhdGl2ZUNvdW50ID0gbmVnYXRpdmVXb3Jkcy5maWx0ZXIod29yZCA9PiBsb3dlci5pbmNsdWRlcyh3b3JkKSkubGVuZ3RoO1xuICAgIFxuICAgIGlmIChwb3NpdGl2ZUNvdW50ID4gbmVnYXRpdmVDb3VudCkgcmV0dXJuICdwb3NpdGl2ZSc7XG4gICAgaWYgKG5lZ2F0aXZlQ291bnQgPiBwb3NpdGl2ZUNvdW50KSByZXR1cm4gJ25lZ2F0aXZlJztcbiAgICByZXR1cm4gJ25ldXRyYWwnO1xuICB9XG4gIFxuICAvKipcbiAgICogU2ltcGxlIHJhdGluZyBpbmZlcmVuY2UgZnJvbSBmZWVkYmFjay5cbiAgICogU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgZm9yIG1vcmUgc29waGlzdGljYXRlZCBpbmZlcmVuY2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgaW5mZXJSYXRpbmcoZmVlZGJhY2s6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc2VudGltZW50ID0gdGhpcy5hbmFseXplU2VudGltZW50KGZlZWRiYWNrKTtcbiAgICBjb25zdCBsb3dlciA9IGZlZWRiYWNrLnRvTG93ZXJDYXNlKCk7XG4gICAgXG4gICAgLy8gTG9vayBmb3IgZXhwbGljaXQgcmF0aW5nc1xuICAgIGNvbnN0IHJhdGluZ01hdGNoID0gbG93ZXIubWF0Y2goLyhcXGQrKVxccyooc3RhcnM/fFxcLzV8b3V0IG9mIDUpLyk7XG4gICAgaWYgKHJhdGluZ01hdGNoKSB7XG4gICAgICBjb25zdCByYXRpbmcgPSBOdW1iZXIucGFyc2VJbnQocmF0aW5nTWF0Y2hbMV0pO1xuICAgICAgaWYgKHJhdGluZyA+PSAxICYmIHJhdGluZyA8PSA1KSByZXR1cm4gcmF0aW5nO1xuICAgIH1cbiAgICBcbiAgICAvLyBJbmZlciBmcm9tIHNlbnRpbWVudFxuICAgIGlmIChzZW50aW1lbnQgPT09ICdwb3NpdGl2ZScpIHtcbiAgICAgIGlmIChsb3dlci5pbmNsdWRlcygncGVyZmVjdCcpIHx8IGxvd2VyLmluY2x1ZGVzKCdleGNlbGxlbnQnKSkgcmV0dXJuIDU7XG4gICAgICBpZiAobG93ZXIuaW5jbHVkZXMoJ2dyZWF0JykgfHwgbG93ZXIuaW5jbHVkZXMoJ3ZlcnkgZ29vZCcpKSByZXR1cm4gNDtcbiAgICAgIHJldHVybiA0O1xuICAgIH0gZWxzZSBpZiAoc2VudGltZW50ID09PSAnbmVnYXRpdmUnKSB7XG4gICAgICBpZiAobG93ZXIuaW5jbHVkZXMoJ3RlcnJpYmxlJykgfHwgbG93ZXIuaW5jbHVkZXMoJ2F3ZnVsJykpIHJldHVybiAxO1xuICAgICAgaWYgKGxvd2VyLmluY2x1ZGVzKCdwb29yJykgfHwgbG93ZXIuaW5jbHVkZXMoJ2JhZCcpKSByZXR1cm4gMjtcbiAgICAgIHJldHVybiAyO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gMzsgLy8gTmV1dHJhbFxuICB9XG4gIFxuICAvKipcbiAgICogVXBkYXRlIHVzZXIgcmF0aW5nIHdpdGggYSBuZXcgdmFsdWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgdXBkYXRlVXNlclJhdGluZyhuZXdSYXRpbmc6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5yYXRpbmdzKSByZXR1cm47XG4gICAgXG4gICAgaWYgKHRoaXMucmF0aW5ncy51c2VyUmF0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucmF0aW5ncy51c2VyUmF0aW5nID0gbmV3UmF0aW5nO1xuICAgICAgdGhpcy5yYXRpbmdzLnJhdGluZ0NvdW50ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FsY3VsYXRlIHJ1bm5pbmcgYXZlcmFnZVxuICAgICAgY29uc3QgdG90YWxSYXRpbmcgPSB0aGlzLnJhdGluZ3MudXNlclJhdGluZyAqIHRoaXMucmF0aW5ncy5yYXRpbmdDb3VudCArIG5ld1JhdGluZztcbiAgICAgIHRoaXMucmF0aW5ncy5yYXRpbmdDb3VudCsrO1xuICAgICAgdGhpcy5yYXRpbmdzLnVzZXJSYXRpbmcgPSB0b3RhbFJhdGluZyAvIHRoaXMucmF0aW5ncy5yYXRpbmdDb3VudDtcbiAgICB9XG4gICAgXG4gICAgLy8gVXBkYXRlIGRlbHRhIGFuZCB0cmVuZFxuICAgIHRoaXMucmF0aW5ncy5yYXRpbmdEZWx0YSA9IHRoaXMucmF0aW5ncy51c2VyUmF0aW5nIC0gdGhpcy5yYXRpbmdzLmFpUmF0aW5nO1xuICAgIFxuICAgIC8vIFNpbXBsZSB0cmVuZCBjYWxjdWxhdGlvbiBiYXNlZCBvbiByZWNlbnQgZmVlZGJhY2tcbiAgICBjb25zdCByZWNlbnRGZWVkYmFjayA9IHRoaXMucmF0aW5ncy5mZWVkYmFja0hpc3Rvcnk/LnNsaWNlKC01KSB8fCBbXTtcbiAgICBjb25zdCByZWNlbnRTZW50aW1lbnRzID0gcmVjZW50RmVlZGJhY2subWFwKGYgPT4gZi5zZW50aW1lbnQpO1xuICAgIGNvbnN0IHBvc2l0aXZlQ291bnQgPSByZWNlbnRTZW50aW1lbnRzLmZpbHRlcihzID0+IHMgPT09ICdwb3NpdGl2ZScpLmxlbmd0aDtcbiAgICBjb25zdCBuZWdhdGl2ZUNvdW50ID0gcmVjZW50U2VudGltZW50cy5maWx0ZXIocyA9PiBzID09PSAnbmVnYXRpdmUnKS5sZW5ndGg7XG4gICAgXG4gICAgaWYgKHBvc2l0aXZlQ291bnQgPiBuZWdhdGl2ZUNvdW50ICsgMSkge1xuICAgICAgdGhpcy5yYXRpbmdzLnRyZW5kID0gJ2ltcHJvdmluZyc7XG4gICAgfSBlbHNlIGlmIChuZWdhdGl2ZUNvdW50ID4gcG9zaXRpdmVDb3VudCArIDEpIHtcbiAgICAgIHRoaXMucmF0aW5ncy50cmVuZCA9ICdkZWNsaW5pbmcnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJhdGluZ3MudHJlbmQgPSAnc3RhYmxlJztcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBlbGVtZW50IHN0YXR1cy5cbiAgICovXG4gIHB1YmxpYyBnZXRTdGF0dXMoKTogRWxlbWVudFN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXR1cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0dXMgcHJvcGVydHkgZ2V0dGVyIGZvciBjb252ZW5pZW50IGFjY2Vzcy5cbiAgICovXG4gIHB1YmxpYyBnZXQgc3RhdHVzKCk6IEVsZW1lbnRTdGF0dXMge1xuICAgIHJldHVybiB0aGlzLl9zdGF0dXM7XG4gIH1cblxuICAvKipcbiAgICogRGVmYXVsdCBsaWZlY3ljbGUgbWV0aG9kcyAtIHN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIGFzIG5lZWRlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBiZWZvcmVBY3RpdmF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsb2dnZXIuZGVidWcoYFByZXBhcmluZyB0byBhY3RpdmF0ZSAke3RoaXMudHlwZX0gZWxlbWVudDogJHt0aGlzLm1ldGFkYXRhLm5hbWV9YCk7XG4gICAgdGhpcy5fc3RhdHVzID0gRWxlbWVudFN0YXR1cy5BQ1RJVkFUSU5HO1xuICB9XG4gIFxuICBwdWJsaWMgYXN5bmMgYWN0aXZhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXR1cyAhPT0gRWxlbWVudFN0YXR1cy5BQ1RJVkUpIHtcbiAgICAgIGxvZ2dlci5pbmZvKGBBY3RpdmF0aW5nICR7dGhpcy50eXBlfSBlbGVtZW50OiAke3RoaXMubWV0YWRhdGEubmFtZX1gKTtcbiAgICB9XG4gICAgLy8gUmUtYWN0aXZhdGlvbnMgb2YgdGhlIHNhbWUgZWxlbWVudCBhcmUgc2lsZW50IOKAlCBubyB2YWx1ZSBpbiBsb2dnaW5nXG4gICAgdGhpcy5fc3RhdHVzID0gRWxlbWVudFN0YXR1cy5BQ1RJVkU7XG4gIH1cbiAgXG4gIHB1YmxpYyBhc3luYyBhZnRlckFjdGl2YXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhgQ29tcGxldGVkIGFjdGl2YXRpb24gb2YgJHt0aGlzLnR5cGV9IGVsZW1lbnQ6ICR7dGhpcy5tZXRhZGF0YS5uYW1lfWApO1xuICB9XG4gIFxuICBwdWJsaWMgYXN5bmMgZGVhY3RpdmF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsb2dnZXIuaW5mbyhgRGVhY3RpdmF0aW5nICR7dGhpcy50eXBlfSBlbGVtZW50OiAke3RoaXMubWV0YWRhdGEubmFtZX1gKTtcbiAgICB0aGlzLl9zdGF0dXMgPSBFbGVtZW50U3RhdHVzLkRFQUNUSVZBVElORztcbiAgICAvLyBTdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQgY2xlYW51cCBsb2dpY1xuICAgIHRoaXMuX3N0YXR1cyA9IEVsZW1lbnRTdGF0dXMuSU5BQ1RJVkU7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBNYXJrIGVsZW1lbnQgYXMgbW9kaWZpZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgbWFya0RpcnR5KCk6IHZvaWQge1xuICAgIHRoaXMuX2lzRGlydHkgPSB0cnVlO1xuICAgIHRoaXMubWV0YWRhdGEubW9kaWZpZWQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBlbGVtZW50IGhhcyB1bnNhdmVkIGNoYW5nZXMuXG4gICAqL1xuICBwdWJsaWMgaXNEaXJ0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNEaXJ0eTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIE1hcmsgZWxlbWVudCBhcyBzYXZlZC5cbiAgICovXG4gIHB1YmxpYyBtYXJrQ2xlYW4oKTogdm9pZCB7XG4gICAgdGhpcy5faXNEaXJ0eSA9IGZhbHNlO1xuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"Memory.d.ts","sourceRoot":"","sources":["../../../src/elements/memories/Memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Memory.d.ts","sourceRoot":"","sources":["../../../src/elements/memories/Memory.ts"],"names":[],"mappings":"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"}