verben-workflow-ui 0.2.2 → 0.2.4

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 (47) hide show
  1. package/esm2022/lib/components/designer/models/types.mjs +1 -1
  2. package/esm2022/lib/components/designer/services/wf-mapper.service.mjs +3 -3
  3. package/esm2022/lib/components/workflow-designer/conditions-popup/conditions-popup.component.mjs +76 -0
  4. package/esm2022/lib/components/workflow-designer/decision-popup/decision-popup.component.mjs +65 -0
  5. package/esm2022/lib/components/workflow-designer/designer-canvas/designer-canvas.component.mjs +245 -17
  6. package/esm2022/lib/components/workflow-designer/designer-toolbar/designer-toolbar.component.mjs +26 -14
  7. package/esm2022/lib/components/workflow-designer/services/connection.service.mjs +220 -0
  8. package/esm2022/lib/components/workflow-designer/services/node-management.service.mjs +288 -0
  9. package/esm2022/lib/components/workflow-designer/services/popup.service.mjs +235 -0
  10. package/esm2022/lib/components/workflow-designer/services/swimlane.service.mjs +145 -0
  11. package/esm2022/lib/components/workflow-designer/services/transformer.service.mjs +260 -0
  12. package/esm2022/lib/components/workflow-designer/stage-dialog/stage-dialog.component.mjs +67 -11
  13. package/esm2022/lib/components/workflow-designer/stage-node/stage-node.component.mjs +9 -18
  14. package/esm2022/lib/components/workflow-designer/swimlane-dialog/swimlane-dialog.component.mjs +30 -24
  15. package/esm2022/lib/components/workflow-designer/workflow-data.service.mjs +2 -2
  16. package/esm2022/lib/components/workflow-designer/workflow-designer.component.mjs +138 -96
  17. package/esm2022/lib/components/workflow-designer/workflow-designer.module.mjs +27 -3
  18. package/esm2022/lib/components/workflow-designer/workflow-designer.state.mjs +243 -205
  19. package/esm2022/lib/components/workflow-designer/workflow-designer.types.mjs +1 -1
  20. package/esm2022/lib/models/SwimLane.mjs +1 -1
  21. package/esm2022/lib/models/Workflow.mjs +1 -1
  22. package/esm2022/lib/models/WorkflowStage.mjs +1 -1
  23. package/esm2022/lib/services/http-web-request.service.mjs +2 -2
  24. package/fesm2022/verben-workflow-ui.mjs +2644 -1005
  25. package/fesm2022/verben-workflow-ui.mjs.map +1 -1
  26. package/lib/components/designer/models/types.d.ts +1 -1
  27. package/lib/components/workflow-designer/conditions-popup/conditions-popup.component.d.ts +34 -0
  28. package/lib/components/workflow-designer/decision-popup/decision-popup.component.d.ts +26 -0
  29. package/lib/components/workflow-designer/designer-canvas/designer-canvas.component.d.ts +35 -1
  30. package/lib/components/workflow-designer/designer-toolbar/designer-toolbar.component.d.ts +14 -3
  31. package/lib/components/workflow-designer/services/connection.service.d.ts +85 -0
  32. package/lib/components/workflow-designer/services/node-management.service.d.ts +52 -0
  33. package/lib/components/workflow-designer/services/popup.service.d.ts +139 -0
  34. package/lib/components/workflow-designer/services/swimlane.service.d.ts +51 -0
  35. package/lib/components/workflow-designer/services/transformer.service.d.ts +36 -0
  36. package/lib/components/workflow-designer/stage-dialog/stage-dialog.component.d.ts +17 -2
  37. package/lib/components/workflow-designer/stage-node/stage-node.component.d.ts +2 -2
  38. package/lib/components/workflow-designer/swimlane-dialog/swimlane-dialog.component.d.ts +7 -1
  39. package/lib/components/workflow-designer/workflow-designer.component.d.ts +2 -1
  40. package/lib/components/workflow-designer/workflow-designer.module.d.ts +6 -4
  41. package/lib/components/workflow-designer/workflow-designer.state.d.ts +17 -1
  42. package/lib/components/workflow-designer/workflow-designer.types.d.ts +2 -0
  43. package/lib/models/SwimLane.d.ts +1 -0
  44. package/lib/models/Workflow.d.ts +1 -0
  45. package/lib/models/WorkflowStage.d.ts +1 -1
  46. package/package.json +1 -1
  47. package/styles/styles.css +23 -0
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Rlc2lnbmVyL21vZGVscy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gbW9kZWxzL3R5cGVzLnRzXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2l6ZSB7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBXb3JrZmxvd09iamVjdFR5cGUgPVxuICB8ICdzdGFnZSdcbiAgfCAnYWN0aW9uJ1xuICB8ICdmb3JtJ1xuICB8ICdkZWNpc2lvbidcbiAgfCAnc3ViZmxvdydcbiAgfCAnc3dpbWxhbmUnXG4gIHwgJ3N0YXJ0JztcblxuLy8gTWV0YWRhdGEgaW50ZXJmYWNlIHRvIHN0b3JlIHdvcmtmbG93IGluZm9ybWF0aW9uXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93TWV0YWRhdGEge1xuICBpZDogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHRlbmFudElkPzogc3RyaW5nO1xuICBmb3JtSWQ/OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdD86IERhdGU7XG4gIGlzTmV3PzogYm9vbGVhbjtcbn1cblxuLy8gQmFzZSBpbnRlcmZhY2UgZm9yIGFsbCB3b3JrZmxvdyBvYmplY3RzXG4vLyBJbXBvcnQgdGhlIFRhZyBpbnRlcmZhY2UgZm9yIHByb3BlciB0eXBpbmdcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9UYWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93T2JqZWN0IHtcbiAgaWQ6IHN0cmluZztcbiAgdHlwZTogV29ya2Zsb3dPYmplY3RUeXBlO1xuICBwb3NpdGlvbjogUG9zaXRpb247XG4gIHNpemU6IFNpemU7XG4gIGxhYmVsOiBzdHJpbmc7XG5cbiAgLy8gT3B0aW9uYWwgZmllbGRzIHRvIHByZXNlcnZlIG9yaWdpbmFsIGRhdGFcbiAgb3JpZ2luYWxJZD86IHN0cmluZztcbiAgb3JpZ2luYWxDb2RlPzogc3RyaW5nO1xuICB0ZW5hbnRJZD86IHN0cmluZztcbiAgY3JlYXRlZEF0PzogRGF0ZTtcbiAgdGFncz86IFRhZ1tdOyAvLyBDaGFuZ2VkIGZyb20gc3RyaW5nW10gdG8gVGFnW11cbiAgW2tleTogc3RyaW5nXTogYW55OyAvLyBUbyBhbGxvdyBmb3IgYWRkaXRpb25hbCBwcm9wZXJ0aWVzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3dpbWxhbmUgZXh0ZW5kcyBXb3JrZmxvd09iamVjdCB7XG4gIHR5cGU6ICdzd2ltbGFuZSc7XG4gIG9yZGVyPzogbnVtYmVyO1xuICB0YWdzOiBUYWdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFnZSBleHRlbmRzIFdvcmtmbG93T2JqZWN0IHtcbiAgdHlwZTogJ3N0YWdlJztcbiAgc3dpbWxhbmVJZD86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGR1cmF0aW9uPzogbnVtYmVyO1xuICBwYXNzT25SdWxlPzogc3RyaW5nO1xuICBhY3RvclJ1bGU/OiBzdHJpbmc7XG4gIG1pbk5vT2ZBY3Rvcj86IG51bWJlcjtcbiAgaXNQYXJhbGxlbD86IGJvb2xlYW47XG4gIGlzRW50cnlQb2ludD86IGJvb2xlYW47XG4gIGlzRXhpdFBvaW50PzogYm9vbGVhbjtcbiAgdGFncz86IFRhZ1tdO1xuICBmb3Jtcz86IHN0cmluZ1tdO1xuICBhbGxvd011bHRpU3ViUHJvY2Vzcz86IGJvb2xlYW47XG4gIGFzc2lnbm1lbnRUeXBlPzogc3RyaW5nO1xuICBzdWJXb3JrZmxvdz86IHN0cmluZztcbiAgaXNTdWJQcm9jZXNzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb24gZXh0ZW5kcyBXb3JrZmxvd09iamVjdCB7XG4gIHR5cGU6ICdhY3Rpb24nO1xuICBmcm9tSWQ6IHN0cmluZztcbiAgdG9JZDogc3RyaW5nO1xuICBpc1BhcmFsbGVsPzogYm9vbGVhbjtcbiAgcGFzc09uUnVsZT86IHN0cmluZztcbiAgcHJvcGVydGllcz86IHtcbiAgICBhY3Rpb25zPzogQXJyYXk8e1xuICAgICAgaWQ6IG51bWJlcjtcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICBhbW91bnQ6IG51bWJlcjtcbiAgICB9PjtcbiAgICBkdXJhdGlvbj86IG51bWJlcjtcbiAgfTtcbiAgcG9pbnRzOiBQb3NpdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlY2lzaW9uIGV4dGVuZHMgV29ya2Zsb3dPYmplY3Qge1xuICB0eXBlOiAnZGVjaXNpb24nO1xuICBjb25kaXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtIGV4dGVuZHMgV29ya2Zsb3dPYmplY3Qge1xuICB0eXBlOiAnZm9ybSc7XG4gIGZvcm1UeXBlPzogc3RyaW5nO1xuICByZWZlcmVuY2VJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YkZsb3cgZXh0ZW5kcyBXb3JrZmxvd09iamVjdCB7XG4gIHR5cGU6ICdzdWJmbG93JztcbiAgZmxvd0lkPzogc3RyaW5nO1xuICByZWZlcmVuY2VJZDogc3RyaW5nO1xufVxuXG4vLyBUb29sYmFyIHR5cGVzXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xiYXJJdGVtIHtcbiAgaWQ6IFdvcmtmbG93T2JqZWN0VHlwZTtcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBOb2RlU2lkZSA9ICd0b3AnIHwgJ3JpZ2h0JyB8ICdib3R0b20nIHwgJ2xlZnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb25Qb2ludCB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBzaWRlOiBOb2RlU2lkZTtcbiAgcG9zaXRpb24/OiBQb3NpdGlvbjsgLy8gT3B0aW9uYWwgZm9yIGNvbXBhdGliaWxpdHlcbiAgdHlwZT86ICdzdGFydCcgfCAnYmVuZCcgfCAnZW5kJzsgLy8gT3B0aW9uYWwgZm9yIGNvbXBhdGliaWxpdHlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSb3V0aW5nUG9pbnQgZXh0ZW5kcyBQb3NpdGlvbiB7XG4gIHR5cGU6ICdzdGFydCcgfCAnYmVuZCcgfCAnZW5kJztcbiAgaXNIb3Jpem9udGFsPzogYm9vbGVhbjtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Rlc2lnbmVyL21vZGVscy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gbW9kZWxzL3R5cGVzLnRzXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2l6ZSB7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBXb3JrZmxvd09iamVjdFR5cGUgPVxuICB8ICdzdGFnZSdcbiAgfCAnYWN0aW9uJ1xuICB8ICdmb3JtJ1xuICB8ICdkZWNpc2lvbidcbiAgfCAnc3ViZmxvdydcbiAgfCAnc3dpbWxhbmUnXG4gIHwgJ3N0YXJ0JztcblxuLy8gTWV0YWRhdGEgaW50ZXJmYWNlIHRvIHN0b3JlIHdvcmtmbG93IGluZm9ybWF0aW9uXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93TWV0YWRhdGEge1xuICBpZDogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHRlbmFudElkPzogc3RyaW5nO1xuICBmb3JtSWQ/OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdD86IERhdGU7XG4gIGlzTmV3PzogYm9vbGVhbjtcbn1cblxuLy8gQmFzZSBpbnRlcmZhY2UgZm9yIGFsbCB3b3JrZmxvdyBvYmplY3RzXG4vLyBJbXBvcnQgdGhlIFRhZyBpbnRlcmZhY2UgZm9yIHByb3BlciB0eXBpbmdcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9UYWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93T2JqZWN0IHtcbiAgaWQ6IHN0cmluZztcbiAgdHlwZTogV29ya2Zsb3dPYmplY3RUeXBlO1xuICBwb3NpdGlvbjogUG9zaXRpb247XG4gIHNpemU6IFNpemU7XG4gIGxhYmVsOiBzdHJpbmc7XG5cbiAgLy8gT3B0aW9uYWwgZmllbGRzIHRvIHByZXNlcnZlIG9yaWdpbmFsIGRhdGFcbiAgb3JpZ2luYWxJZD86IHN0cmluZztcbiAgb3JpZ2luYWxDb2RlPzogc3RyaW5nO1xuICB0ZW5hbnRJZD86IHN0cmluZztcbiAgY3JlYXRlZEF0PzogRGF0ZTtcbiAgdGFncz86IFRhZ1tdOyAvLyBDaGFuZ2VkIGZyb20gc3RyaW5nW10gdG8gVGFnW11cbiAgW2tleTogc3RyaW5nXTogYW55OyAvLyBUbyBhbGxvdyBmb3IgYWRkaXRpb25hbCBwcm9wZXJ0aWVzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3dpbWxhbmUgZXh0ZW5kcyBXb3JrZmxvd09iamVjdCB7XG4gIHR5cGU6ICdzd2ltbGFuZSc7XG4gIG9yZGVyPzogbnVtYmVyO1xuICB0YWdzOiBUYWdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFnZSBleHRlbmRzIFdvcmtmbG93T2JqZWN0IHtcbiAgdHlwZTogJ3N0YWdlJztcbiAgc3dpbWxhbmVJZD86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGR1cmF0aW9uPzogbnVtYmVyO1xuICBwYXNzT25SdWxlPzogc3RyaW5nO1xuICBhY3RvclJ1bGU/OiBzdHJpbmc7XG4gIG1pbk5vT2ZBY3Rvcj86IG51bWJlcjtcbiAgaXNQYXJhbGxlbD86IGJvb2xlYW47XG4gIGlzRW50cnlQb2ludD86IGJvb2xlYW47XG4gIGlzRXhpdFBvaW50PzogYm9vbGVhbjtcbiAgdGFncz86IFRhZ1tdO1xuICBmb3JtPzogc3RyaW5nO1xuICBhbGxvd011bHRpU3ViUHJvY2Vzcz86IGJvb2xlYW47XG4gIGFzc2lnbm1lbnRUeXBlPzogc3RyaW5nO1xuICBzdWJXb3JrZmxvdz86IHN0cmluZztcbiAgaXNTdWJQcm9jZXNzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb24gZXh0ZW5kcyBXb3JrZmxvd09iamVjdCB7XG4gIHR5cGU6ICdhY3Rpb24nO1xuICBmcm9tSWQ6IHN0cmluZztcbiAgdG9JZDogc3RyaW5nO1xuICBpc1BhcmFsbGVsPzogYm9vbGVhbjtcbiAgcGFzc09uUnVsZT86IHN0cmluZztcbiAgcHJvcGVydGllcz86IHtcbiAgICBhY3Rpb25zPzogQXJyYXk8e1xuICAgICAgaWQ6IG51bWJlcjtcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICBhbW91bnQ6IG51bWJlcjtcbiAgICB9PjtcbiAgICBkdXJhdGlvbj86IG51bWJlcjtcbiAgfTtcbiAgcG9pbnRzOiBQb3NpdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlY2lzaW9uIGV4dGVuZHMgV29ya2Zsb3dPYmplY3Qge1xuICB0eXBlOiAnZGVjaXNpb24nO1xuICBjb25kaXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtIGV4dGVuZHMgV29ya2Zsb3dPYmplY3Qge1xuICB0eXBlOiAnZm9ybSc7XG4gIGZvcm1UeXBlPzogc3RyaW5nO1xuICByZWZlcmVuY2VJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YkZsb3cgZXh0ZW5kcyBXb3JrZmxvd09iamVjdCB7XG4gIHR5cGU6ICdzdWJmbG93JztcbiAgZmxvd0lkPzogc3RyaW5nO1xuICByZWZlcmVuY2VJZDogc3RyaW5nO1xufVxuXG4vLyBUb29sYmFyIHR5cGVzXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xiYXJJdGVtIHtcbiAgaWQ6IFdvcmtmbG93T2JqZWN0VHlwZTtcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBOb2RlU2lkZSA9ICd0b3AnIHwgJ3JpZ2h0JyB8ICdib3R0b20nIHwgJ2xlZnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb25Qb2ludCB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBzaWRlOiBOb2RlU2lkZTtcbiAgcG9zaXRpb24/OiBQb3NpdGlvbjsgLy8gT3B0aW9uYWwgZm9yIGNvbXBhdGliaWxpdHlcbiAgdHlwZT86ICdzdGFydCcgfCAnYmVuZCcgfCAnZW5kJzsgLy8gT3B0aW9uYWwgZm9yIGNvbXBhdGliaWxpdHlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSb3V0aW5nUG9pbnQgZXh0ZW5kcyBQb3NpdGlvbiB7XG4gIHR5cGU6ICdzdGFydCcgfCAnYmVuZCcgfCAnZW5kJztcbiAgaXNIb3Jpem9udGFsPzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -112,7 +112,7 @@ export class WorkflowMapperService {
112
112
  IsEntryPoint: isEntryPoint,
113
113
  IsExitPoint: isExitPoint,
114
114
  Tags: stage.tags || [], // Now correctly maps Tag[] to Tag[]
115
- Forms: stage.forms || [],
115
+ Form: stage.form || '',
116
116
  AllowMultiSubProcess: stage.allowMultiSubProcess || false,
117
117
  AssignmentType: stage.assignmentType ||
118
118
  TaskAssignmentType.Queue,
@@ -241,7 +241,7 @@ export class WorkflowMapperService {
241
241
  isEntryPoint: backendStage.IsEntryPoint,
242
242
  isExitPoint: backendStage.IsExitPoint,
243
243
  tags: backendStage.Tags,
244
- forms: backendStage.Forms,
244
+ forms: backendStage.Form,
245
245
  allowMultiSubProcess: backendStage.AllowMultiSubProcess,
246
246
  assignmentType: backendStage.AssignmentType,
247
247
  subWorkflow: backendStage.SubWorkFlow,
@@ -320,4 +320,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
320
320
  providedIn: 'root',
321
321
  }]
322
322
  }], ctorParameters: () => [{ type: i1.ConnectionService }] });
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2YtbWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Rlc2lnbmVyL3NlcnZpY2VzL3dmLW1hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVTNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFNM0QsTUFBTSxPQUFPLHFCQUFxQjtJQUNaO0lBQXBCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQUcsQ0FBQztJQUU1RCxxQ0FBcUM7SUFDckMsaUJBQWlCLENBQ2YsT0FBeUIsRUFDekIsZ0JBQWtDO1FBRWxDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUM7UUFDbkUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztRQUM3RCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUNoQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRO1lBQ3BCLEdBQXNCLEVBQUUsTUFBTTtZQUM5QixHQUFzQixFQUFFLElBQUksQ0FDWixDQUFDO1FBQ3RCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDOUQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztRQUUzRCxxREFBcUQ7UUFDckQsTUFBTSxhQUFhLEdBQUcsV0FBVzthQUM5QixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLEVBQUUsQ0FBQzthQUMvQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1Qix5REFBeUQ7UUFDekQsTUFBTSxZQUFZLEdBQUcsTUFBTTthQUN4QixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDeEUsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFNUIsNkVBQTZFO1FBQzdFLE1BQU0sSUFBSSxHQUNSLGdCQUFnQixDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBFLE1BQU0sUUFBUSxHQUFhO1lBQ3pCLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRTtZQUM3QixFQUFFLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUU7WUFDN0IsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsZ0JBQWdCLENBQUMsSUFBSTtZQUMzQixXQUFXLEVBQ1QsZ0JBQWdCLENBQUMsV0FBVyxJQUFJLGdCQUFnQixnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7WUFDekUsY0FBYyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ2pFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksRUFBRTtZQUNuQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsS0FBSztZQUN4QyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07WUFDckIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FDdkM7WUFDRCxLQUFLLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsRSxNQUFNLEVBQUUsRUFBRTtZQUNWLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksRUFBRTtZQUN6QyxXQUFXLEVBQUUsVUFBVTtZQUN2QixTQUFTLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ25ELFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNyQixTQUFTLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTztTQUMxRSxDQUFDO1FBRUYsK0NBQStDO1FBQy9DLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUN4QyxJQUFJLENBQUMsY0FBYyxDQUNqQixLQUFLLEVBQ0wsSUFBSSxFQUNKLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUNoQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFDL0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFDM0MsZ0JBQWdCLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FDaEMsQ0FDRixDQUFDO1FBRUYsMkJBQTJCO1FBQzNCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDO1FBRS9CLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxZQUFZLENBQUMsSUFBWTtRQUMvQixPQUFPLElBQUk7YUFDUixXQUFXLEVBQUU7YUFDYixPQUFPLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQzthQUMzQixPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTyxvQkFBb0IsQ0FDMUIsS0FBcUIsRUFDckIsU0FBMkI7UUFFM0IsT0FBTyxDQUNMLFNBQVMsQ0FBQyxJQUFJLENBQ1osQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNQLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FDekQsRUFBRSxFQUFFLElBQUksRUFBRSxDQUNaLENBQUM7SUFDSixDQUFDO0lBRU8sc0JBQXNCLENBQUMsZUFBdUI7UUFDcEQsT0FBTyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO0lBQ2pFLENBQUM7SUFFTyxpQkFBaUIsQ0FDdkIsWUFBNEIsRUFDNUIsUUFBZ0I7UUFFaEIsb0NBQW9DO1FBQ3BDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1FBRWpELE9BQU87WUFDTCxFQUFFLEVBQUUsVUFBVTtZQUNkLEVBQUUsRUFBRSxVQUFVO1lBQ2QsSUFBSSxFQUFFLFlBQVksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQ3hFLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3hFLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFdBQVcsRUFBRTtnQkFDWCxDQUFDLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMxQixDQUFDLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzNCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUs7Z0JBQzlCLE1BQU0sRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU07YUFDakM7WUFDRCxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUseUNBQXlDO1lBQ3hFLFFBQVEsRUFBRSxZQUFZLENBQUMsUUFBUSxJQUFJLEVBQUU7WUFDckMsV0FBVyxFQUFFLFVBQVU7WUFDdkIsU0FBUyxFQUFFLFlBQVksQ0FBQyxTQUFTLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDL0MsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ3JCLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHO1NBQzlELENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYyxDQUNwQixhQUE2QixFQUM3QixVQUFrQixFQUNsQixZQUFxQixFQUNyQixXQUFvQixFQUNwQixVQUFrQixFQUNsQixRQUFnQjtRQUVoQixNQUFNLEtBQUssR0FBRyxhQUFzQixDQUFDO1FBQ3JDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1FBRTFDLE9BQU87WUFDTCxFQUFFLEVBQUUsVUFBVTtZQUNkLEVBQUUsRUFBRSxVQUFVO1lBQ2QsSUFBSSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQzFELEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNiLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSztZQUNqQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFO1lBQ3BDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUM7WUFDN0IsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksRUFBRTtZQUNsQyxTQUFTLEVBQUcsS0FBSyxDQUFDLFNBQTRCLElBQUksY0FBYyxDQUFDLEdBQUc7WUFDcEUsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQztZQUNyQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLO1lBQ3JDLFlBQVksRUFBRSxZQUFZO1lBQzFCLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxvQ0FBb0M7WUFDNUQsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTtZQUN4QixvQkFBb0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CLElBQUksS0FBSztZQUN6RCxjQUFjLEVBQ1gsS0FBSyxDQUFDLGNBQXFDO2dCQUM1QyxrQkFBa0IsQ0FBQyxLQUFLO1lBQzFCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEVBQUU7WUFDcEMsUUFBUSxFQUFFLFVBQVU7WUFDcEIsV0FBVyxFQUFFO2dCQUNYLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ25CLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDcEI7WUFDRCxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxLQUFLO1lBQ3pDLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFdBQVcsRUFBRSxVQUFVO1lBQ3ZCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ3hDLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNyQixTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRztTQUM5RCxDQUFDO0lBQ0osQ0FBQztJQUVPLGVBQWUsQ0FDckIsY0FBOEIsRUFDOUIsUUFBZ0I7UUFFaEIsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFFbkQsT0FBTztZQUNMLEVBQUUsRUFBRSxVQUFVO1lBQ2QsRUFBRSxFQUFFLFVBQVU7WUFDZCxJQUFJLEVBQ0YsY0FBYyxDQUFDLFlBQVk7Z0JBQzNCLEdBQUcsY0FBYyxDQUFDLE1BQU0sT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFO1lBQ3RELFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRSxjQUFjLENBQUMsS0FBSyxJQUFJLGdCQUFnQjtZQUM5QyxTQUFTLEVBQUUsY0FBYyxDQUFDLE1BQU07WUFDaEMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxJQUFJO1lBQzVCLFVBQVUsRUFBRSxjQUFjLENBQUMsVUFBVSxJQUFJLEtBQUs7WUFDOUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxVQUFVLElBQUksRUFBRTtZQUMzQyxRQUFRLEVBQUUsY0FBYyxDQUFDLFFBQVEsSUFBSSxFQUFFO1lBQ3ZDLFdBQVcsRUFBRSxVQUFVO1lBQ3ZCLFNBQVMsRUFBRSxjQUFjLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ2pELFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNyQixTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRztTQUM5RCxDQUFDO0lBQ0osQ0FBQztJQUVELHFDQUFxQztJQUNyQyxpQkFBaUIsQ0FBQyxRQUFrQjtRQUlsQyxNQUFNLE9BQU8sR0FBcUIsRUFBRSxDQUFDO1FBRXJDLHVEQUF1RDtRQUN2RCxNQUFNLFFBQVEsR0FBcUI7WUFDakMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQ2YsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1lBQ25CLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtZQUNuQixXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7WUFDakMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO1lBQzNCLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSTtZQUNyQixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7WUFDN0IsS0FBSyxFQUFFLFFBQVEsQ0FBQyxTQUFTLEtBQUssV0FBVyxDQUFDLEdBQUc7U0FDOUMsQ0FBQztRQUVGLDRCQUE0QjtRQUM1QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4QixvQkFBb0I7UUFDcEIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUM1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQzlCLENBQUM7UUFDRixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFFM0IsaUJBQWlCO1FBQ2pCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDM0UsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBRXhCLGdFQUFnRTtRQUNoRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0UsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDO1FBRTdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVPLGVBQWU7UUFDckIsT0FBTztZQUNMLEVBQUUsRUFBRSxZQUFZO1lBQ2hCLElBQUksRUFBRSxPQUFPO1lBQ2IsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQzFCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtZQUMvQixLQUFLLEVBQUUsT0FBTztTQUNmLENBQUM7SUFDSixDQUFDO0lBRU8sa0JBQWtCLENBQUMsV0FBcUI7UUFDOUMscUNBQXFDO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxXQUFXLElBQUk7WUFDN0MsQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsV0FBVyxDQUFDLFFBQVEsR0FBRyxHQUFHO1NBQzlCLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRztZQUNmLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDckIsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN0QixDQUFDO1FBRUYsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQzlELE1BQU0sY0FBYyxHQUFHO1lBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUk7WUFDekIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksR0FBRztTQUMzQixDQUFDO1FBRUYsT0FBTztZQUNMLEVBQUUsRUFBRSxXQUFXLENBQUMsSUFBSTtZQUNwQixJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRO1lBQ1IsSUFBSSxFQUFFLGNBQWM7WUFDcEIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJO1lBQ3ZCLG1EQUFtRDtZQUNuRCxVQUFVLEVBQUUsV0FBVyxDQUFDLEVBQUU7WUFDMUIsWUFBWSxFQUFFLFdBQVcsQ0FBQyxJQUFJO1lBQzlCLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxJQUFJLEVBQUU7WUFDNUIsUUFBUSxFQUFFLFdBQVcsQ0FBQyxRQUFRO1lBQzlCLFNBQVMsRUFBRSxXQUFXLENBQUMsU0FBUztTQUNqQyxDQUFDO0lBQ0osQ0FBQztJQUVPLGVBQWUsQ0FBQyxZQUEyQjtRQUNqRCx3QkFBd0I7UUFDeEIsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUFHO1lBQ2YsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNyQixDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3RCLENBQUM7UUFFRixPQUFPO1lBQ0wsRUFBRSxFQUFFLFlBQVksQ0FBQyxHQUFHLElBQUksWUFBWSxDQUFDLElBQUk7WUFDekMsSUFBSSxFQUFFLE9BQU87WUFDYixRQUFRO1lBQ1IsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsMEJBQTBCO1lBQzVELEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSTtZQUN4QixxQ0FBcUM7WUFDckMsVUFBVSxFQUFFLFlBQVksQ0FBQyxFQUFFO1lBQzNCLFlBQVksRUFBRSxZQUFZLENBQUMsSUFBSTtZQUMvQixXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7WUFDckMsUUFBUSxFQUFFLFlBQVksQ0FBQyxRQUFRO1lBQy9CLFVBQVUsRUFBRSxZQUFZLENBQUMsVUFBVTtZQUNuQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFNBQVM7WUFDakMsWUFBWSxFQUFFLFlBQVksQ0FBQyxZQUFZO1lBQ3ZDLFVBQVUsRUFBRSxZQUFZLENBQUMsVUFBVTtZQUNuQyxZQUFZLEVBQUUsWUFBWSxDQUFDLFlBQVk7WUFDdkMsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO1lBQ3JDLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSTtZQUN2QixLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUs7WUFDekIsb0JBQW9CLEVBQUUsWUFBWSxDQUFDLG9CQUFvQjtZQUN2RCxjQUFjLEVBQUUsWUFBWSxDQUFDLGNBQWM7WUFDM0MsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO1lBQ3JDLFlBQVksRUFBRSxZQUFZLENBQUMsWUFBWTtZQUN2QyxRQUFRLEVBQUUsWUFBWSxDQUFDLFFBQVE7WUFDL0IsU0FBUyxFQUFFLFlBQVksQ0FBQyxTQUFTO1NBQ2xDLENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCLENBQ3ZCLFFBQWtCLEVBQ2xCLFdBQW1CLEVBQ25CLE1BQXdCO1FBRXhCLE1BQU0sV0FBVyxHQUFxQixFQUFFLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUVqQyxxREFBcUQ7UUFDckQsTUFBTTthQUNILE1BQU0sQ0FDTCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEUsRUFBRSxZQUFZLENBQ25CO2FBQ0EsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDdEIsV0FBVyxDQUFDLElBQUksQ0FDZCxJQUFJLENBQUMsZ0JBQWdCLENBQ25CLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFDbkIsV0FBVyxFQUNYLFVBQVUsQ0FBQyxFQUFFLEVBQ2IsT0FBTyxFQUNQLE1BQU0sQ0FDUCxDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVMLG9DQUFvQztRQUNwQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDekIsV0FBVyxDQUFDLElBQUksQ0FDZCxJQUFJLENBQUMsZ0JBQWdCLENBQ25CLE1BQU0sQ0FBQyxJQUFJLEVBQ1gsTUFBTSxDQUFDLFNBQVMsRUFDaEIsTUFBTSxDQUFDLE9BQU8sRUFDZCxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFDakIsTUFBTSxFQUNOO2dCQUNFLFVBQVUsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDckIsWUFBWSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUN6QixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7Z0JBQzdCLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtnQkFDN0IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO2dCQUN6QixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7YUFDNUIsQ0FDRixDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxnQkFBZ0IsQ0FDdEIsRUFBVSxFQUNWLE1BQWMsRUFDZCxJQUFZLEVBQ1osS0FBYSxFQUNiLE1BQXdCLEVBQ3hCLFVBQWdCO1FBRWhCLE1BQU0sVUFBVSxHQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ2hFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDOUQsZ0VBQWdFO1lBQ2hFLE9BQU87Z0JBQ0wsRUFBRTtnQkFDRixJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNO2dCQUNOLElBQUk7Z0JBQ0osS0FBSztnQkFDTCxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ3hCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtnQkFDN0IsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsR0FBRyxVQUFVO2FBQ2QsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsMkJBQTJCLENBQy9ELFVBQVUsRUFDVixVQUFVLEVBQ1YsRUFBRSxDQUNILENBQUM7UUFFRixPQUFPO1lBQ0wsRUFBRTtZQUNGLElBQUksRUFBRSxRQUFRO1lBQ2QsTUFBTTtZQUNOLElBQUk7WUFDSixLQUFLO1lBQ0wsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRO1lBQzdCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtZQUM3QixNQUFNO1lBQ04sK0NBQStDO1lBQy9DLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtZQUNsQyxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVk7WUFDdEMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO1lBQ2xDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtZQUNsQyxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVE7WUFDOUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTO1lBQ2hDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtTQUNuQyxDQUFDO0lBQ0osQ0FBQzt3R0F0YVUscUJBQXFCOzRHQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNlcnZpY2VzL3dvcmtmbG93LW1hcHBlci5zZXJ2aWNlLnRzXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBXb3JrZmxvd09iamVjdCxcbiAgUG9zaXRpb24sXG4gIEFjdGlvbiBhcyBGcm9udGVuZEFjdGlvbixcbiAgU3RhZ2UsXG4gIFdvcmtmbG93TWV0YWRhdGEsXG59IGZyb20gJy4uL21vZGVscy90eXBlcyc7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvVGFnJztcbmltcG9ydCB7IFdvcmtmbG93IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL1dvcmtmbG93JztcbmltcG9ydCB7IFRhc2tBc3NpZ25tZW50VHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9UYXNrQXNzaWdubWVudFR5cGUnO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3N0YXR1cyc7XG5pbXBvcnQgeyBTd2ltTGFuZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9Td2ltTGFuZSc7XG5pbXBvcnQgeyBXb3JrZmxvd1N0YWdlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL1dvcmtmbG93U3RhZ2UnO1xuaW1wb3J0IHsgU3RhZ2VBY3RvclJ1bGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvU3RhZ2VBY3RvclJ1bGUnO1xuaW1wb3J0IHsgV29ya2Zsb3dBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvV29ya2Zsb3dBY3Rpb24nO1xuaW1wb3J0IHsgT2JqZWN0U3RhdGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvb2JqZWN0LXN0YXRlJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9jb25uZWN0aW9uLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dNYXBwZXJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uZWN0aW9uU2VydmljZTogQ29ubmVjdGlvblNlcnZpY2UpIHt9XG5cbiAgLy8gRnJvbnRlbmQgdG8gQmFja2VuZCB0cmFuc2Zvcm1hdGlvblxuICB0b0JhY2tlbmRXb3JrZmxvdyhcbiAgICBvYmplY3RzOiBXb3JrZmxvd09iamVjdFtdLFxuICAgIHdvcmtmbG93TWV0YWRhdGE6IFdvcmtmbG93TWV0YWRhdGFcbiAgKTogV29ya2Zsb3cge1xuICAgIGNvbnN0IHN3aW1sYW5lcyA9IG9iamVjdHMuZmlsdGVyKChvYmopID0+IG9iai50eXBlID09PSAnc3dpbWxhbmUnKTtcbiAgICBjb25zdCBzdGFnZXMgPSBvYmplY3RzLmZpbHRlcigob2JqKSA9PiBvYmoudHlwZSA9PT0gJ3N0YWdlJyk7XG4gICAgY29uc3QgY29ubmVjdGlvbnMgPSBvYmplY3RzLmZpbHRlcihcbiAgICAgIChvYmopID0+XG4gICAgICAgIG9iai50eXBlID09PSAnYWN0aW9uJyAmJlxuICAgICAgICAob2JqIGFzIEZyb250ZW5kQWN0aW9uKT8uZnJvbUlkICYmXG4gICAgICAgIChvYmogYXMgRnJvbnRlbmRBY3Rpb24pPy50b0lkXG4gICAgKSBhcyBGcm9udGVuZEFjdGlvbltdO1xuICAgIGNvbnN0IHN0YXJ0Tm9kZSA9IG9iamVjdHMuZmluZCgob2JqKSA9PiBvYmoudHlwZSA9PT0gJ3N0YXJ0Jyk7XG4gICAgY29uc3QgZm9ybXMgPSBvYmplY3RzLmZpbHRlcigob2JqKSA9PiBvYmoudHlwZSA9PT0gJ2Zvcm0nKTtcblxuICAgIC8vIEZpbmQgZW50cnkgcG9pbnRzIChzdGFnZXMgY29ubmVjdGVkIHRvIHN0YXJ0IG5vZGUpXG4gICAgY29uc3QgZW50cnlQb2ludElkcyA9IGNvbm5lY3Rpb25zXG4gICAgICAuZmlsdGVyKChjb25uKSA9PiBjb25uLmZyb21JZCA9PT0gc3RhcnROb2RlPy5pZClcbiAgICAgIC5tYXAoKGNvbm4pID0+IGNvbm4udG9JZCk7XG5cbiAgICAvLyBGaW5kIGV4aXQgcG9pbnRzIChzdGFnZXMgd2l0aCBubyBvdXRnb2luZyBjb25uZWN0aW9ucylcbiAgICBjb25zdCBleGl0UG9pbnRJZHMgPSBzdGFnZXNcbiAgICAgIC5maWx0ZXIoKHN0YWdlKSA9PiAhY29ubmVjdGlvbnMuc29tZSgoY29ubikgPT4gY29ubi5mcm9tSWQgPT09IHN0YWdlLmlkKSlcbiAgICAgIC5tYXAoKHN0YWdlKSA9PiBzdGFnZS5pZCk7XG5cbiAgICAvLyBQcmVzZXJ2ZSBvcmlnaW5hbCB3b3JrZmxvdyBjb2RlIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIGdlbmVyYXRlIGEgbmV3IG9uZVxuICAgIGNvbnN0IGNvZGUgPVxuICAgICAgd29ya2Zsb3dNZXRhZGF0YS5jb2RlIHx8IHRoaXMuZ2VuZXJhdGVDb2RlKHdvcmtmbG93TWV0YWRhdGEubmFtZSk7XG5cbiAgICBjb25zdCB3b3JrZmxvdzogV29ya2Zsb3cgPSB7XG4gICAgICBJZDogd29ya2Zsb3dNZXRhZGF0YS5pZCB8fCAnJyxcbiAgICAgIGlkOiB3b3JrZmxvd01ldGFkYXRhLmlkIHx8ICcnLFxuICAgICAgQ29kZTogY29kZSxcbiAgICAgIE5hbWU6IHdvcmtmbG93TWV0YWRhdGEubmFtZSxcbiAgICAgIERlc2NyaXB0aW9uOlxuICAgICAgICB3b3JrZmxvd01ldGFkYXRhLmRlc2NyaXB0aW9uIHx8IGBXb3JrZmxvdyBmb3IgJHt3b3JrZmxvd01ldGFkYXRhLm5hbWV9YCxcbiAgICAgIFN0YWdlRW50cnlSdWxlOiB0aGlzLmdlbmVyYXRlU3RhZ2VFbnRyeVJ1bGUoZW50cnlQb2ludElkcy5sZW5ndGgpLFxuICAgICAgRm9ybTogd29ya2Zsb3dNZXRhZGF0YS5mb3JtSWQgfHwgJycsXG4gICAgICBBc3NpZ25tZW50VHlwZTogVGFza0Fzc2lnbm1lbnRUeXBlLlF1ZXVlLFxuICAgICAgU3RhdHVzOiBTdGF0dXMuQWN0aXZlLFxuICAgICAgQWN0aW9uczogY29ubmVjdGlvbnMubWFwKChjb25uZWN0aW9uKSA9PlxuICAgICAgICB0aGlzLnRvQmFja2VuZEFjdGlvbihjb25uZWN0aW9uLCBjb2RlKVxuICAgICAgKSxcbiAgICAgIExhbmVzOiBzd2ltbGFuZXMubWFwKChsYW5lKSA9PiB0aGlzLnRvQmFja2VuZFN3aW1sYW5lKGxhbmUsIGNvZGUpKSxcbiAgICAgIFN0YWdlczogW10sXG4gICAgICBUZW5hbnRJZDogd29ya2Zsb3dNZXRhZGF0YS50ZW5hbnRJZCB8fCAnJyxcbiAgICAgIFNlcnZpY2VOYW1lOiAnV29ya2Zsb3cnLFxuICAgICAgQ3JlYXRlZEF0OiB3b3JrZmxvd01ldGFkYXRhLmNyZWF0ZWRBdCB8fCBuZXcgRGF0ZSgpLFxuICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgRGF0YVN0YXRlOiB3b3JrZmxvd01ldGFkYXRhLmlzTmV3ID8gT2JqZWN0U3RhdGUuTmV3IDogT2JqZWN0U3RhdGUuQ2hhbmdlZCxcbiAgICB9O1xuXG4gICAgLy8gTWFwIHN0YWdlcyB3aXRoIGVudHJ5L2V4aXQgcG9pbnQgaW5mb3JtYXRpb25cbiAgICBjb25zdCBtYXBwZWRTdGFnZXMgPSBzdGFnZXMubWFwKChzdGFnZSkgPT5cbiAgICAgIHRoaXMudG9CYWNrZW5kU3RhZ2UoXG4gICAgICAgIHN0YWdlLFxuICAgICAgICBjb2RlLFxuICAgICAgICBlbnRyeVBvaW50SWRzLmluY2x1ZGVzKHN0YWdlLmlkKSxcbiAgICAgICAgZXhpdFBvaW50SWRzLmluY2x1ZGVzKHN0YWdlLmlkKSxcbiAgICAgICAgdGhpcy5maW5kU3dpbWxhbmVGb3JTdGFnZShzdGFnZSwgc3dpbWxhbmVzKSxcbiAgICAgICAgd29ya2Zsb3dNZXRhZGF0YS50ZW5hbnRJZCB8fCAnJ1xuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBTdG9yZSBzdGFnZXMgaW4gd29ya2Zsb3dcbiAgICB3b3JrZmxvdy5TdGFnZXMgPSBtYXBwZWRTdGFnZXM7XG5cbiAgICByZXR1cm4gd29ya2Zsb3c7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ29kZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuYW1lXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1teYS16MC05XSsvZywgJy0nKVxuICAgICAgLnJlcGxhY2UoL14tK3wtKyQvZywgJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kU3dpbWxhbmVGb3JTdGFnZShcbiAgICBzdGFnZTogV29ya2Zsb3dPYmplY3QsXG4gICAgc3dpbWxhbmVzOiBXb3JrZmxvd09iamVjdFtdXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChcbiAgICAgIHN3aW1sYW5lcy5maW5kKFxuICAgICAgICAobGFuZSkgPT5cbiAgICAgICAgICBzdGFnZS5wb3NpdGlvbi55ID49IGxhbmUucG9zaXRpb24ueSAmJlxuICAgICAgICAgIHN0YWdlLnBvc2l0aW9uLnkgPD0gbGFuZS5wb3NpdGlvbi55ICsgbGFuZS5zaXplLmhlaWdodFxuICAgICAgKT8uaWQgfHwgJydcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVN0YWdlRW50cnlSdWxlKGVudHJ5UG9pbnRDb3VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZW50cnlQb2ludENvdW50ID4gMSA/ICdwYXJhbGxlbC1lbnRyeScgOiAnc2luZ2xlLWVudHJ5JztcbiAgfVxuXG4gIHByaXZhdGUgdG9CYWNrZW5kU3dpbWxhbmUoXG4gICAgZnJvbnRlbmRMYW5lOiBXb3JrZmxvd09iamVjdCxcbiAgICB3b3JrZmxvdzogc3RyaW5nXG4gICk6IFN3aW1MYW5lIHtcbiAgICAvLyBQcmVzZXJ2ZSBvcmlnaW5hbCBJRCBpZiBhdmFpbGFibGVcbiAgICBjb25zdCBvcmlnaW5hbElkID0gZnJvbnRlbmRMYW5lLm9yaWdpbmFsSWQgfHwgJyc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgSWQ6IG9yaWdpbmFsSWQsXG4gICAgICBpZDogb3JpZ2luYWxJZCxcbiAgICAgIENvZGU6IGZyb250ZW5kTGFuZS5vcmlnaW5hbENvZGUgfHwgdGhpcy5nZW5lcmF0ZUNvZGUoZnJvbnRlbmRMYW5lLmxhYmVsKSxcbiAgICAgIFBvc2l0aW9uOiBNYXRoLmZsb29yKGZyb250ZW5kTGFuZS5wb3NpdGlvbi55IC8gZnJvbnRlbmRMYW5lLnNpemUuaGVpZ2h0KSxcbiAgICAgIFdvcmtmbG93OiB3b3JrZmxvdyxcbiAgICAgIENvb3JkaW5hdGVzOiB7XG4gICAgICAgIFg6IGZyb250ZW5kTGFuZS5wb3NpdGlvbi54LFxuICAgICAgICBZOiBmcm9udGVuZExhbmUucG9zaXRpb24ueSxcbiAgICAgIH0sXG4gICAgICBTaXplOiB7XG4gICAgICAgIFdpZHRoOiBmcm9udGVuZExhbmUuc2l6ZS53aWR0aCxcbiAgICAgICAgSGVpZ2h0OiBmcm9udGVuZExhbmUuc2l6ZS5oZWlnaHQsXG4gICAgICB9LFxuICAgICAgVGFnczogZnJvbnRlbmRMYW5lLnRhZ3MgfHwgW10sIC8vIFRoaXMgbm93IGNvcnJlY3RseSBtYXBzIFRhZ1tdIHRvIFRhZ1tdXG4gICAgICBUZW5hbnRJZDogZnJvbnRlbmRMYW5lLnRlbmFudElkIHx8ICcnLFxuICAgICAgU2VydmljZU5hbWU6ICdXb3JrZmxvdycsXG4gICAgICBDcmVhdGVkQXQ6IGZyb250ZW5kTGFuZS5jcmVhdGVkQXQgfHwgbmV3IERhdGUoKSxcbiAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIERhdGFTdGF0ZTogb3JpZ2luYWxJZCA/IE9iamVjdFN0YXRlLkNoYW5nZWQgOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdG9CYWNrZW5kU3RhZ2UoXG4gICAgZnJvbnRlbmRTdGFnZTogV29ya2Zsb3dPYmplY3QsXG4gICAgd29ya2Zsb3dJZDogc3RyaW5nLFxuICAgIGlzRW50cnlQb2ludDogYm9vbGVhbixcbiAgICBpc0V4aXRQb2ludDogYm9vbGVhbixcbiAgICBzd2ltbGFuZUlkOiBzdHJpbmcsXG4gICAgdGVuYW50SWQ6IHN0cmluZ1xuICApOiBXb3JrZmxvd1N0YWdlIHtcbiAgICBjb25zdCBzdGFnZSA9IGZyb250ZW5kU3RhZ2UgYXMgU3RhZ2U7XG4gICAgY29uc3Qgb3JpZ2luYWxJZCA9IHN0YWdlLm9yaWdpbmFsSWQgfHwgJyc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgSWQ6IG9yaWdpbmFsSWQsXG4gICAgICBpZDogb3JpZ2luYWxJZCxcbiAgICAgIENvZGU6IHN0YWdlLm9yaWdpbmFsQ29kZSB8fCB0aGlzLmdlbmVyYXRlQ29kZShzdGFnZS5sYWJlbCksXG4gICAgICBLZXk6IHN0YWdlLmlkLFxuICAgICAgV29ya2Zsb3c6IHdvcmtmbG93SWQsXG4gICAgICBOYW1lOiBzdGFnZS5sYWJlbCxcbiAgICAgIERlc2NyaXB0aW9uOiBzdGFnZS5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIER1cmF0aW9uOiBzdGFnZS5kdXJhdGlvbiB8fCAwLFxuICAgICAgUGFzc09uUnVsZTogc3RhZ2UucGFzc09uUnVsZSB8fCAnJyxcbiAgICAgIEFjdG9yUnVsZTogKHN0YWdlLmFjdG9yUnVsZSBhcyBTdGFnZUFjdG9yUnVsZSkgfHwgU3RhZ2VBY3RvclJ1bGUuQW55LFxuICAgICAgTWluTm9PZkFjdG9yOiBzdGFnZS5taW5Ob09mQWN0b3IgfHwgMSxcbiAgICAgIElzUGFyYWxsZWw6IHN0YWdlLmlzUGFyYWxsZWwgfHwgZmFsc2UsXG4gICAgICBJc0VudHJ5UG9pbnQ6IGlzRW50cnlQb2ludCxcbiAgICAgIElzRXhpdFBvaW50OiBpc0V4aXRQb2ludCxcbiAgICAgIFRhZ3M6IHN0YWdlLnRhZ3MgfHwgW10sIC8vIE5vdyBjb3JyZWN0bHkgbWFwcyBUYWdbXSB0byBUYWdbXVxuICAgICAgRm9ybXM6IHN0YWdlLmZvcm1zIHx8IFtdLFxuICAgICAgQWxsb3dNdWx0aVN1YlByb2Nlc3M6IHN0YWdlLmFsbG93TXVsdGlTdWJQcm9jZXNzIHx8IGZhbHNlLFxuICAgICAgQXNzaWdubWVudFR5cGU6XG4gICAgICAgIChzdGFnZS5hc3NpZ25tZW50VHlwZSBhcyBUYXNrQXNzaWdubWVudFR5cGUpIHx8XG4gICAgICAgIFRhc2tBc3NpZ25tZW50VHlwZS5RdWV1ZSxcbiAgICAgIFN1YldvcmtGbG93OiBzdGFnZS5zdWJXb3JrZmxvdyB8fCAnJyxcbiAgICAgIFN3aW1MYW5lOiBzd2ltbGFuZUlkLFxuICAgICAgQ29vcmRpbmF0ZXM6IHtcbiAgICAgICAgWDogc3RhZ2UucG9zaXRpb24ueCxcbiAgICAgICAgWTogc3RhZ2UucG9zaXRpb24ueSxcbiAgICAgIH0sXG4gICAgICBJc1N1YlByb2Nlc3M6IHN0YWdlLmlzU3ViUHJvY2VzcyB8fCBmYWxzZSxcbiAgICAgIFRlbmFudElkOiB0ZW5hbnRJZCxcbiAgICAgIFNlcnZpY2VOYW1lOiAnV29ya2Zsb3cnLFxuICAgICAgQ3JlYXRlZEF0OiBzdGFnZS5jcmVhdGVkQXQgfHwgbmV3IERhdGUoKSxcbiAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIERhdGFTdGF0ZTogb3JpZ2luYWxJZCA/IE9iamVjdFN0YXRlLkNoYW5nZWQgOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdG9CYWNrZW5kQWN0aW9uKFxuICAgIGZyb250ZW5kQWN0aW9uOiBGcm9udGVuZEFjdGlvbixcbiAgICB3b3JrZmxvdzogc3RyaW5nXG4gICk6IFdvcmtmbG93QWN0aW9uIHtcbiAgICBjb25zdCBvcmlnaW5hbElkID0gZnJvbnRlbmRBY3Rpb24ub3JpZ2luYWxJZCB8fCAnJztcblxuICAgIHJldHVybiB7XG4gICAgICBJZDogb3JpZ2luYWxJZCxcbiAgICAgIGlkOiBvcmlnaW5hbElkLFxuICAgICAgQ29kZTpcbiAgICAgICAgZnJvbnRlbmRBY3Rpb24ub3JpZ2luYWxDb2RlIHx8XG4gICAgICAgIGAke2Zyb250ZW5kQWN0aW9uLmZyb21JZH0tdG8tJHtmcm9udGVuZEFjdGlvbi50b0lkfWAsXG4gICAgICBXb3JrZmxvdzogd29ya2Zsb3csXG4gICAgICBOYW1lOiBmcm9udGVuZEFjdGlvbi5sYWJlbCB8fCAnVW5uYW1lZCBBY3Rpb24nLFxuICAgICAgRnJvbVN0YWdlOiBmcm9udGVuZEFjdGlvbi5mcm9tSWQsXG4gICAgICBUb1N0YWdlOiBmcm9udGVuZEFjdGlvbi50b0lkLFxuICAgICAgSXNQYXJhbGxlbDogZnJvbnRlbmRBY3Rpb24uaXNQYXJhbGxlbCB8fCBmYWxzZSxcbiAgICAgIFBhc3NPblJ1bGU6IGZyb250ZW5kQWN0aW9uLnBhc3NPblJ1bGUgfHwgJycsXG4gICAgICBUZW5hbnRJZDogZnJvbnRlbmRBY3Rpb24udGVuYW50SWQgfHwgJycsXG4gICAgICBTZXJ2aWNlTmFtZTogJ1dvcmtmbG93JyxcbiAgICAgIENyZWF0ZWRBdDogZnJvbnRlbmRBY3Rpb24uY3JlYXRlZEF0IHx8IG5ldyBEYXRlKCksXG4gICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICBEYXRhU3RhdGU6IG9yaWdpbmFsSWQgPyBPYmplY3RTdGF0ZS5DaGFuZ2VkIDogT2JqZWN0U3RhdGUuTmV3LFxuICAgIH07XG4gIH1cblxuICAvLyBCYWNrZW5kIHRvIEZyb250ZW5kIHRyYW5zZm9ybWF0aW9uXG4gIHRvRnJvbnRlbmRPYmplY3RzKHdvcmtmbG93OiBXb3JrZmxvdyk6IHtcbiAgICBvYmplY3RzOiBXb3JrZmxvd09iamVjdFtdO1xuICAgIG1ldGFkYXRhOiBXb3JrZmxvd01ldGFkYXRhO1xuICB9IHtcbiAgICBjb25zdCBvYmplY3RzOiBXb3JrZmxvd09iamVjdFtdID0gW107XG5cbiAgICAvLyBDcmVhdGUgbWV0YWRhdGEgb2JqZWN0IHRvIHN0b3JlIHdvcmtmbG93IGluZm9ybWF0aW9uXG4gICAgY29uc3QgbWV0YWRhdGE6IFdvcmtmbG93TWV0YWRhdGEgPSB7XG4gICAgICBpZDogd29ya2Zsb3cuSWQsXG4gICAgICBjb2RlOiB3b3JrZmxvdy5Db2RlLFxuICAgICAgbmFtZTogd29ya2Zsb3cuTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB3b3JrZmxvdy5EZXNjcmlwdGlvbixcbiAgICAgIHRlbmFudElkOiB3b3JrZmxvdy5UZW5hbnRJZCxcbiAgICAgIGZvcm1JZDogd29ya2Zsb3cuRm9ybSxcbiAgICAgIGNyZWF0ZWRBdDogd29ya2Zsb3cuQ3JlYXRlZEF0LFxuICAgICAgaXNOZXc6IHdvcmtmbG93LkRhdGFTdGF0ZSA9PT0gT2JqZWN0U3RhdGUuTmV3LFxuICAgIH07XG5cbiAgICAvLyBTdGFydCB3aXRoIHRoZSBzdGFydCBub2RlXG4gICAgY29uc3Qgc3RhcnROb2RlID0gdGhpcy5jcmVhdGVTdGFydE5vZGUoKTtcbiAgICBvYmplY3RzLnB1c2goc3RhcnROb2RlKTtcblxuICAgIC8vIENvbnZlcnQgc3dpbWxhbmVzXG4gICAgY29uc3Qgc3dpbWxhbmVzID0gd29ya2Zsb3cuTGFuZXMubWFwKChsYW5lKSA9PlxuICAgICAgdGhpcy50b0Zyb250ZW5kU3dpbWxhbmUobGFuZSlcbiAgICApO1xuICAgIG9iamVjdHMucHVzaCguLi5zd2ltbGFuZXMpO1xuXG4gICAgLy8gQ29udmVydCBzdGFnZXNcbiAgICBjb25zdCBzdGFnZXMgPSB3b3JrZmxvdy5TdGFnZXMubWFwKChzdGFnZSkgPT4gdGhpcy50b0Zyb250ZW5kU3RhZ2Uoc3RhZ2UpKTtcbiAgICBvYmplY3RzLnB1c2goLi4uc3RhZ2VzKTtcblxuICAgIC8vIENyZWF0ZSBjb25uZWN0aW9ucywgaW5jbHVkaW5nIGZyb20gc3RhcnQgbm9kZSB0byBlbnRyeSBwb2ludHNcbiAgICBjb25zdCBjb25uZWN0aW9ucyA9IHRoaXMuY3JlYXRlQ29ubmVjdGlvbnMod29ya2Zsb3csIHN0YXJ0Tm9kZS5pZCwgc3RhZ2VzKTtcbiAgICBvYmplY3RzLnB1c2goLi4uY29ubmVjdGlvbnMpO1xuXG4gICAgcmV0dXJuIHsgb2JqZWN0cywgbWV0YWRhdGEgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3RhcnROb2RlKCk6IFdvcmtmbG93T2JqZWN0IHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6ICdzdGFydC1ub2RlJyxcbiAgICAgIHR5cGU6ICdzdGFydCcsXG4gICAgICBwb3NpdGlvbjogeyB4OiA1MCwgeTogMzcgfSxcbiAgICAgIHNpemU6IHsgd2lkdGg6IDU4LCBoZWlnaHQ6IDQ2IH0sXG4gICAgICBsYWJlbDogJ1N0YXJ0JyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSB0b0Zyb250ZW5kU3dpbWxhbmUoYmFja2VuZExhbmU6IFN3aW1MYW5lKTogV29ya2Zsb3dPYmplY3Qge1xuICAgIC8vIE5vcm1hbGl6ZSB0aGUgY29vcmRpbmF0ZXMgYW5kIHNpemVcbiAgICBjb25zdCBjb29yZGluYXRlcyA9IGJhY2tlbmRMYW5lLkNvb3JkaW5hdGVzIHx8IHtcbiAgICAgIFg6IDAsXG4gICAgICBZOiBiYWNrZW5kTGFuZS5Qb3NpdGlvbiAqIDEyMCxcbiAgICB9O1xuICAgIGNvbnN0IHBvc2l0aW9uID0ge1xuICAgICAgeDogY29vcmRpbmF0ZXMuWCA/PyAwLFxuICAgICAgeTogY29vcmRpbmF0ZXMuWSA/PyAwLFxuICAgIH07XG5cbiAgICBjb25zdCBzaXplID0gYmFja2VuZExhbmUuU2l6ZSB8fCB7IFdpZHRoOiAyOTYwLCBIZWlnaHQ6IDEyMCB9O1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRTaXplID0ge1xuICAgICAgd2lkdGg6IHNpemUuV2lkdGggPz8gMjk2MCxcbiAgICAgIGhlaWdodDogc2l6ZS5IZWlnaHQgPz8gMTIwLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGJhY2tlbmRMYW5lLkNvZGUsXG4gICAgICB0eXBlOiAnc3dpbWxhbmUnLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBzaXplOiBub3JtYWxpemVkU2l6ZSxcbiAgICAgIGxhYmVsOiBiYWNrZW5kTGFuZS5Db2RlLFxuICAgICAgLy8gU3RvcmUgb3JpZ2luYWwgYmFja2VuZCBpbmZvcm1hdGlvbiBmb3IgbGF0ZXIgdXNlXG4gICAgICBvcmlnaW5hbElkOiBiYWNrZW5kTGFuZS5JZCxcbiAgICAgIG9yaWdpbmFsQ29kZTogYmFja2VuZExhbmUuQ29kZSxcbiAgICAgIHRhZ3M6IGJhY2tlbmRMYW5lLlRhZ3MgfHwgW10sXG4gICAgICB0ZW5hbnRJZDogYmFja2VuZExhbmUuVGVuYW50SWQsXG4gICAgICBjcmVhdGVkQXQ6IGJhY2tlbmRMYW5lLkNyZWF0ZWRBdCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSB0b0Zyb250ZW5kU3RhZ2UoYmFja2VuZFN0YWdlOiBXb3JrZmxvd1N0YWdlKTogV29ya2Zsb3dPYmplY3Qge1xuICAgIC8vIE5vcm1hbGl6ZSBjb29yZGluYXRlc1xuICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gYmFja2VuZFN0YWdlLkNvb3JkaW5hdGVzIHx8IHsgWDogMCwgWTogMCB9O1xuICAgIGNvbnN0IHBvc2l0aW9uID0ge1xuICAgICAgeDogY29vcmRpbmF0ZXMuWCA/PyAwLFxuICAgICAgeTogY29vcmRpbmF0ZXMuWSA/PyAwLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGJhY2tlbmRTdGFnZS5LZXkgfHwgYmFja2VuZFN0YWdlLkNvZGUsXG4gICAgICB0eXBlOiAnc3RhZ2UnLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBzaXplOiB7IHdpZHRoOiAxMjAsIGhlaWdodDogODAgfSwgLy8gRGVmYXVsdCBzaXplIGZvciBzdGFnZXNcbiAgICAgIGxhYmVsOiBiYWNrZW5kU3RhZ2UuTmFtZSxcbiAgICAgIC8vIFN0b3JlIG9yaWdpbmFsIGJhY2tlbmQgaW5mb3JtYXRpb25cbiAgICAgIG9yaWdpbmFsSWQ6IGJhY2tlbmRTdGFnZS5JZCxcbiAgICAgIG9yaWdpbmFsQ29kZTogYmFja2VuZFN0YWdlLkNvZGUsXG4gICAgICBkZXNjcmlwdGlvbjogYmFja2VuZFN0YWdlLkRlc2NyaXB0aW9uLFxuICAgICAgZHVyYXRpb246IGJhY2tlbmRTdGFnZS5EdXJhdGlvbixcbiAgICAgIHBhc3NPblJ1bGU6IGJhY2tlbmRTdGFnZS5QYXNzT25SdWxlLFxuICAgICAgYWN0b3JSdWxlOiBiYWNrZW5kU3RhZ2UuQWN0b3JSdWxlLFxuICAgICAgbWluTm9PZkFjdG9yOiBiYWNrZW5kU3RhZ2UuTWluTm9PZkFjdG9yLFxuICAgICAgaXNQYXJhbGxlbDogYmFja2VuZFN0YWdlLklzUGFyYWxsZWwsXG4gICAgICBpc0VudHJ5UG9pbnQ6IGJhY2tlbmRTdGFnZS5Jc0VudHJ5UG9pbnQsXG4gICAgICBpc0V4aXRQb2ludDogYmFja2VuZFN0YWdlLklzRXhpdFBvaW50LFxuICAgICAgdGFnczogYmFja2VuZFN0YWdlLlRhZ3MsXG4gICAgICBmb3JtczogYmFja2VuZFN0YWdlLkZvcm1zLFxuICAgICAgYWxsb3dNdWx0aVN1YlByb2Nlc3M6IGJhY2tlbmRTdGFnZS5BbGxvd011bHRpU3ViUHJvY2VzcyxcbiAgICAgIGFzc2lnbm1lbnRUeXBlOiBiYWNrZW5kU3RhZ2UuQXNzaWdubWVudFR5cGUsXG4gICAgICBzdWJXb3JrZmxvdzogYmFja2VuZFN0YWdlLlN1YldvcmtGbG93LFxuICAgICAgaXNTdWJQcm9jZXNzOiBiYWNrZW5kU3RhZ2UuSXNTdWJQcm9jZXNzLFxuICAgICAgdGVuYW50SWQ6IGJhY2tlbmRTdGFnZS5UZW5hbnRJZCxcbiAgICAgIGNyZWF0ZWRBdDogYmFja2VuZFN0YWdlLkNyZWF0ZWRBdCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb25uZWN0aW9ucyhcbiAgICB3b3JrZmxvdzogV29ya2Zsb3csXG4gICAgc3RhcnROb2RlSWQ6IHN0cmluZyxcbiAgICBzdGFnZXM6IFdvcmtmbG93T2JqZWN0W11cbiAgKTogRnJvbnRlbmRBY3Rpb25bXSB7XG4gICAgY29uc3QgY29ubmVjdGlvbnM6IEZyb250ZW5kQWN0aW9uW10gPSBbXTtcbiAgICBjb25zdCBhY3Rpb25zID0gd29ya2Zsb3cuQWN0aW9ucztcblxuICAgIC8vIENyZWF0ZSBjb25uZWN0aW9ucyBmcm9tIHN0YXJ0IG5vZGUgdG8gZW50cnkgcG9pbnRzXG4gICAgc3RhZ2VzXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoc3RhZ2UpID0+XG4gICAgICAgICAgd29ya2Zsb3cuU3RhZ2VzLmZpbmQoKHMpID0+IHMuS2V5ID09PSBzdGFnZS5pZCB8fCBzLkNvZGUgPT09IHN0YWdlLmlkKVxuICAgICAgICAgICAgPy5Jc0VudHJ5UG9pbnRcbiAgICAgIClcbiAgICAgIC5mb3JFYWNoKChlbnRyeVN0YWdlKSA9PiB7XG4gICAgICAgIGNvbm5lY3Rpb25zLnB1c2goXG4gICAgICAgICAgdGhpcy5jcmVhdGVDb25uZWN0aW9uKFxuICAgICAgICAgICAgY3J5cHRvLnJhbmRvbVVVSUQoKSxcbiAgICAgICAgICAgIHN0YXJ0Tm9kZUlkLFxuICAgICAgICAgICAgZW50cnlTdGFnZS5pZCxcbiAgICAgICAgICAgICdTdGFydCcsXG4gICAgICAgICAgICBzdGFnZXNcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBjb25uZWN0aW9ucyBiZXR3ZWVuIHN0YWdlc1xuICAgIGFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICBjb25uZWN0aW9ucy5wdXNoKFxuICAgICAgICB0aGlzLmNyZWF0ZUNvbm5lY3Rpb24oXG4gICAgICAgICAgYWN0aW9uLkNvZGUsXG4gICAgICAgICAgYWN0aW9uLkZyb21TdGFnZSxcbiAgICAgICAgICBhY3Rpb24uVG9TdGFnZSxcbiAgICAgICAgICBhY3Rpb24uTmFtZSB8fCAnJyxcbiAgICAgICAgICBzdGFnZXMsXG4gICAgICAgICAge1xuICAgICAgICAgICAgb3JpZ2luYWxJZDogYWN0aW9uLklkLFxuICAgICAgICAgICAgb3JpZ2luYWxDb2RlOiBhY3Rpb24uQ29kZSxcbiAgICAgICAgICAgIGlzUGFyYWxsZWw6IGFjdGlvbi5Jc1BhcmFsbGVsLFxuICAgICAgICAgICAgcGFzc09uUnVsZTogYWN0aW9uLlBhc3NPblJ1bGUsXG4gICAgICAgICAgICB0ZW5hbnRJZDogYWN0aW9uLlRlbmFudElkLFxuICAgICAgICAgICAgY3JlYXRlZEF0OiBhY3Rpb24uQ3JlYXRlZEF0LFxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjb25uZWN0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ29ubmVjdGlvbihcbiAgICBpZDogc3RyaW5nLFxuICAgIGZyb21JZDogc3RyaW5nLFxuICAgIHRvSWQ6IHN0cmluZyxcbiAgICBsYWJlbDogc3RyaW5nLFxuICAgIHN0YWdlczogV29ya2Zsb3dPYmplY3RbXSxcbiAgICBwcm9wZXJ0aWVzPzogYW55XG4gICk6IEZyb250ZW5kQWN0aW9uIHtcbiAgICBjb25zdCBzb3VyY2VOb2RlID1cbiAgICAgIHN0YWdlcy5maW5kKChzKSA9PiBzLmlkID09PSBmcm9tSWQpIHx8IHRoaXMuY3JlYXRlU3RhcnROb2RlKCk7XG4gICAgY29uc3QgdGFyZ2V0Tm9kZSA9IHN0YWdlcy5maW5kKChzKSA9PiBzLmlkID09PSB0b0lkKTtcblxuICAgIGlmICghdGFyZ2V0Tm9kZSkge1xuICAgICAgY29uc29sZS5lcnJvcihgVW5hYmxlIHRvIGZpbmQgdGFyZ2V0IHN0YWdlIHdpdGggaWQ6ICR7dG9JZH1gKTtcbiAgICAgIC8vIFJldHVybiBhIG1pbmltYWwgY29ubmVjdGlvbiB0byBhdm9pZCBicmVha2luZyB0aGUgYXBwbGljYXRpb25cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkLFxuICAgICAgICB0eXBlOiAnYWN0aW9uJyxcbiAgICAgICAgZnJvbUlkLFxuICAgICAgICB0b0lkLFxuICAgICAgICBsYWJlbCxcbiAgICAgICAgcG9zaXRpb246IHsgeDogMCwgeTogMCB9LFxuICAgICAgICBzaXplOiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSxcbiAgICAgICAgcG9pbnRzOiBbXSxcbiAgICAgICAgLi4ucHJvcGVydGllcyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgcG9pbnRzID0gdGhpcy5jb25uZWN0aW9uU2VydmljZS5yZWNhbGN1bGF0ZUNvbm5lY3Rpb25Qb2ludHMoXG4gICAgICBzb3VyY2VOb2RlLFxuICAgICAgdGFyZ2V0Tm9kZSxcbiAgICAgIFtdXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZCxcbiAgICAgIHR5cGU6ICdhY3Rpb24nLFxuICAgICAgZnJvbUlkLFxuICAgICAgdG9JZCxcbiAgICAgIGxhYmVsLFxuICAgICAgcG9zaXRpb246IHNvdXJjZU5vZGUucG9zaXRpb24sXG4gICAgICBzaXplOiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSxcbiAgICAgIHBvaW50cyxcbiAgICAgIC8vIFN0b3JlIGFsbCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZnJvbSBiYWNrZW5kXG4gICAgICBvcmlnaW5hbElkOiBwcm9wZXJ0aWVzPy5vcmlnaW5hbElkLFxuICAgICAgb3JpZ2luYWxDb2RlOiBwcm9wZXJ0aWVzPy5vcmlnaW5hbENvZGUsXG4gICAgICBpc1BhcmFsbGVsOiBwcm9wZXJ0aWVzPy5pc1BhcmFsbGVsLFxuICAgICAgcGFzc09uUnVsZTogcHJvcGVydGllcz8ucGFzc09uUnVsZSxcbiAgICAgIHRlbmFudElkOiBwcm9wZXJ0aWVzPy50ZW5hbnRJZCxcbiAgICAgIGNyZWF0ZWRBdDogcHJvcGVydGllcz8uY3JlYXRlZEF0LFxuICAgICAgcHJvcGVydGllczogcHJvcGVydGllcz8ucHJvcGVydGllcyxcbiAgICB9O1xuICB9XG59XG4iXX0=
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2YtbWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Rlc2lnbmVyL3NlcnZpY2VzL3dmLW1hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVTNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFNM0QsTUFBTSxPQUFPLHFCQUFxQjtJQUNaO0lBQXBCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQUcsQ0FBQztJQUU1RCxxQ0FBcUM7SUFDckMsaUJBQWlCLENBQ2YsT0FBeUIsRUFDekIsZ0JBQWtDO1FBRWxDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUM7UUFDbkUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztRQUM3RCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUNoQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRO1lBQ3BCLEdBQXNCLEVBQUUsTUFBTTtZQUM5QixHQUFzQixF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QUNOLElBQUk7Z0JBQ0osS0FBSztnQkFDTCxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ3hCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtnQkFDN0IsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsR0FBRyxVQUFVO2FBQ2QsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsMkJBQTJCLENBQy9ELFVBQVUsRUFDVixVQUFVLEVBQ1YsRUFBRSxDQUNILENBQUM7UUFFRixPQUFPO1lBQ0wsRUFBRTtZQUNGLElBQUksRUFBRSxRQUFRO1lBQ2QsTUFBTTtZQUNOLElBQUk7WUFDSixLQUFLO1lBQ0wsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRO1lBQzdCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtZQUM3QixNQUFNO1lBQ04sK0NBQStDO1lBQy9DLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtZQUNsQyxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVk7WUFDdEMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO1lBQ2xDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtZQUNsQyxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVE7WUFDOUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTO1lBQ2hDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtTQUNuQyxDQUFDO0lBQ0osQ0FBQzt3R0F0YVUscUJBQXFCOzRHQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNlcnZpY2VzL3dvcmtmbG93LW1hcHBlci5zZXJ2aWNlLnRzXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBXb3JrZmxvd09iamVjdCxcbiAgUG9zaXRpb24sXG4gIEFjdGlvbiBhcyBGcm9udGVuZEFjdGlvbixcbiAgU3RhZ2UsXG4gIFdvcmtmbG93TWV0YWRhdGEsXG59IGZyb20gJy4uL21vZGVscy90eXBlcyc7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvVGFnJztcbmltcG9ydCB7IFdvcmtmbG93IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL1dvcmtmbG93JztcbmltcG9ydCB7IFRhc2tBc3NpZ25tZW50VHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9UYXNrQXNzaWdubWVudFR5cGUnO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3N0YXR1cyc7XG5pbXBvcnQgeyBTd2ltTGFuZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9Td2ltTGFuZSc7XG5pbXBvcnQgeyBXb3JrZmxvd1N0YWdlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL1dvcmtmbG93U3RhZ2UnO1xuaW1wb3J0IHsgU3RhZ2VBY3RvclJ1bGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvU3RhZ2VBY3RvclJ1bGUnO1xuaW1wb3J0IHsgV29ya2Zsb3dBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvV29ya2Zsb3dBY3Rpb24nO1xuaW1wb3J0IHsgT2JqZWN0U3RhdGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvb2JqZWN0LXN0YXRlJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9jb25uZWN0aW9uLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dNYXBwZXJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uZWN0aW9uU2VydmljZTogQ29ubmVjdGlvblNlcnZpY2UpIHt9XG5cbiAgLy8gRnJvbnRlbmQgdG8gQmFja2VuZCB0cmFuc2Zvcm1hdGlvblxuICB0b0JhY2tlbmRXb3JrZmxvdyhcbiAgICBvYmplY3RzOiBXb3JrZmxvd09iamVjdFtdLFxuICAgIHdvcmtmbG93TWV0YWRhdGE6IFdvcmtmbG93TWV0YWRhdGFcbiAgKTogV29ya2Zsb3cge1xuICAgIGNvbnN0IHN3aW1sYW5lcyA9IG9iamVjdHMuZmlsdGVyKChvYmopID0+IG9iai50eXBlID09PSAnc3dpbWxhbmUnKTtcbiAgICBjb25zdCBzdGFnZXMgPSBvYmplY3RzLmZpbHRlcigob2JqKSA9PiBvYmoudHlwZSA9PT0gJ3N0YWdlJyk7XG4gICAgY29uc3QgY29ubmVjdGlvbnMgPSBvYmplY3RzLmZpbHRlcihcbiAgICAgIChvYmopID0+XG4gICAgICAgIG9iai50eXBlID09PSAnYWN0aW9uJyAmJlxuICAgICAgICAob2JqIGFzIEZyb250ZW5kQWN0aW9uKT8uZnJvbUlkICYmXG4gICAgICAgIChvYmogYXMgRnJvbnRlbmRBY3Rpb24pPy50b0lkXG4gICAgKSBhcyBGcm9udGVuZEFjdGlvbltdO1xuICAgIGNvbnN0IHN0YXJ0Tm9kZSA9IG9iamVjdHMuZmluZCgob2JqKSA9PiBvYmoudHlwZSA9PT0gJ3N0YXJ0Jyk7XG4gICAgY29uc3QgZm9ybXMgPSBvYmplY3RzLmZpbHRlcigob2JqKSA9PiBvYmoudHlwZSA9PT0gJ2Zvcm0nKTtcblxuICAgIC8vIEZpbmQgZW50cnkgcG9pbnRzIChzdGFnZXMgY29ubmVjdGVkIHRvIHN0YXJ0IG5vZGUpXG4gICAgY29uc3QgZW50cnlQb2ludElkcyA9IGNvbm5lY3Rpb25zXG4gICAgICAuZmlsdGVyKChjb25uKSA9PiBjb25uLmZyb21JZCA9PT0gc3RhcnROb2RlPy5pZClcbiAgICAgIC5tYXAoKGNvbm4pID0+IGNvbm4udG9JZCk7XG5cbiAgICAvLyBGaW5kIGV4aXQgcG9pbnRzIChzdGFnZXMgd2l0aCBubyBvdXRnb2luZyBjb25uZWN0aW9ucylcbiAgICBjb25zdCBleGl0UG9pbnRJZHMgPSBzdGFnZXNcbiAgICAgIC5maWx0ZXIoKHN0YWdlKSA9PiAhY29ubmVjdGlvbnMuc29tZSgoY29ubikgPT4gY29ubi5mcm9tSWQgPT09IHN0YWdlLmlkKSlcbiAgICAgIC5tYXAoKHN0YWdlKSA9PiBzdGFnZS5pZCk7XG5cbiAgICAvLyBQcmVzZXJ2ZSBvcmlnaW5hbCB3b3JrZmxvdyBjb2RlIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIGdlbmVyYXRlIGEgbmV3IG9uZVxuICAgIGNvbnN0IGNvZGUgPVxuICAgICAgd29ya2Zsb3dNZXRhZGF0YS5jb2RlIHx8IHRoaXMuZ2VuZXJhdGVDb2RlKHdvcmtmbG93TWV0YWRhdGEubmFtZSk7XG5cbiAgICBjb25zdCB3b3JrZmxvdzogV29ya2Zsb3cgPSB7XG4gICAgICBJZDogd29ya2Zsb3dNZXRhZGF0YS5pZCB8fCAnJyxcbiAgICAgIGlkOiB3b3JrZmxvd01ldGFkYXRhLmlkIHx8ICcnLFxuICAgICAgQ29kZTogY29kZSxcbiAgICAgIE5hbWU6IHdvcmtmbG93TWV0YWRhdGEubmFtZSxcbiAgICAgIERlc2NyaXB0aW9uOlxuICAgICAgICB3b3JrZmxvd01ldGFkYXRhLmRlc2NyaXB0aW9uIHx8IGBXb3JrZmxvdyBmb3IgJHt3b3JrZmxvd01ldGFkYXRhLm5hbWV9YCxcbiAgICAgIFN0YWdlRW50cnlSdWxlOiB0aGlzLmdlbmVyYXRlU3RhZ2VFbnRyeVJ1bGUoZW50cnlQb2ludElkcy5sZW5ndGgpLFxuICAgICAgRm9ybTogd29ya2Zsb3dNZXRhZGF0YS5mb3JtSWQgfHwgJycsXG4gICAgICBBc3NpZ25tZW50VHlwZTogVGFza0Fzc2lnbm1lbnRUeXBlLlF1ZXVlLFxuICAgICAgU3RhdHVzOiBTdGF0dXMuQWN0aXZlLFxuICAgICAgQWN0aW9uczogY29ubmVjdGlvbnMubWFwKChjb25uZWN0aW9uKSA9PlxuICAgICAgICB0aGlzLnRvQmFja2VuZEFjdGlvbihjb25uZWN0aW9uLCBjb2RlKVxuICAgICAgKSxcbiAgICAgIExhbmVzOiBzd2ltbGFuZXMubWFwKChsYW5lKSA9PiB0aGlzLnRvQmFja2VuZFN3aW1sYW5lKGxhbmUsIGNvZGUpKSxcbiAgICAgIFN0YWdlczogW10sXG4gICAgICBUZW5hbnRJZDogd29ya2Zsb3dNZXRhZGF0YS50ZW5hbnRJZCB8fCAnJyxcbiAgICAgIFNlcnZpY2VOYW1lOiAnV29ya2Zsb3cnLFxuICAgICAgQ3JlYXRlZEF0OiB3b3JrZmxvd01ldGFkYXRhLmNyZWF0ZWRBdCB8fCBuZXcgRGF0ZSgpLFxuICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgRGF0YVN0YXRlOiB3b3JrZmxvd01ldGFkYXRhLmlzTmV3ID8gT2JqZWN0U3RhdGUuTmV3IDogT2JqZWN0U3RhdGUuQ2hhbmdlZCxcbiAgICB9O1xuXG4gICAgLy8gTWFwIHN0YWdlcyB3aXRoIGVudHJ5L2V4aXQgcG9pbnQgaW5mb3JtYXRpb25cbiAgICBjb25zdCBtYXBwZWRTdGFnZXMgPSBzdGFnZXMubWFwKChzdGFnZSkgPT5cbiAgICAgIHRoaXMudG9CYWNrZW5kU3RhZ2UoXG4gICAgICAgIHN0YWdlLFxuICAgICAgICBjb2RlLFxuICAgICAgICBlbnRyeVBvaW50SWRzLmluY2x1ZGVzKHN0YWdlLmlkKSxcbiAgICAgICAgZXhpdFBvaW50SWRzLmluY2x1ZGVzKHN0YWdlLmlkKSxcbiAgICAgICAgdGhpcy5maW5kU3dpbWxhbmVGb3JTdGFnZShzdGFnZSwgc3dpbWxhbmVzKSxcbiAgICAgICAgd29ya2Zsb3dNZXRhZGF0YS50ZW5hbnRJZCB8fCAnJ1xuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBTdG9yZSBzdGFnZXMgaW4gd29ya2Zsb3dcbiAgICB3b3JrZmxvdy5TdGFnZXMgPSBtYXBwZWRTdGFnZXM7XG5cbiAgICByZXR1cm4gd29ya2Zsb3c7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ29kZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuYW1lXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1teYS16MC05XSsvZywgJy0nKVxuICAgICAgLnJlcGxhY2UoL14tK3wtKyQvZywgJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kU3dpbWxhbmVGb3JTdGFnZShcbiAgICBzdGFnZTogV29ya2Zsb3dPYmplY3QsXG4gICAgc3dpbWxhbmVzOiBXb3JrZmxvd09iamVjdFtdXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChcbiAgICAgIHN3aW1sYW5lcy5maW5kKFxuICAgICAgICAobGFuZSkgPT5cbiAgICAgICAgICBzdGFnZS5wb3NpdGlvbi55ID49IGxhbmUucG9zaXRpb24ueSAmJlxuICAgICAgICAgIHN0YWdlLnBvc2l0aW9uLnkgPD0gbGFuZS5wb3NpdGlvbi55ICsgbGFuZS5zaXplLmhlaWdodFxuICAgICAgKT8uaWQgfHwgJydcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVN0YWdlRW50cnlSdWxlKGVudHJ5UG9pbnRDb3VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZW50cnlQb2ludENvdW50ID4gMSA/ICdwYXJhbGxlbC1lbnRyeScgOiAnc2luZ2xlLWVudHJ5JztcbiAgfVxuXG4gIHByaXZhdGUgdG9CYWNrZW5kU3dpbWxhbmUoXG4gICAgZnJvbnRlbmRMYW5lOiBXb3JrZmxvd09iamVjdCxcbiAgICB3b3JrZmxvdzogc3RyaW5nXG4gICk6IFN3aW1MYW5lIHtcbiAgICAvLyBQcmVzZXJ2ZSBvcmlnaW5hbCBJRCBpZiBhdmFpbGFibGVcbiAgICBjb25zdCBvcmlnaW5hbElkID0gZnJvbnRlbmRMYW5lLm9yaWdpbmFsSWQgfHwgJyc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgSWQ6IG9yaWdpbmFsSWQsXG4gICAgICBpZDogb3JpZ2luYWxJZCxcbiAgICAgIENvZGU6IGZyb250ZW5kTGFuZS5vcmlnaW5hbENvZGUgfHwgdGhpcy5nZW5lcmF0ZUNvZGUoZnJvbnRlbmRMYW5lLmxhYmVsKSxcbiAgICAgIFBvc2l0aW9uOiBNYXRoLmZsb29yKGZyb250ZW5kTGFuZS5wb3NpdGlvbi55IC8gZnJvbnRlbmRMYW5lLnNpemUuaGVpZ2h0KSxcbiAgICAgIFdvcmtmbG93OiB3b3JrZmxvdyxcbiAgICAgIENvb3JkaW5hdGVzOiB7XG4gICAgICAgIFg6IGZyb250ZW5kTGFuZS5wb3NpdGlvbi54LFxuICAgICAgICBZOiBmcm9udGVuZExhbmUucG9zaXRpb24ueSxcbiAgICAgIH0sXG4gICAgICBTaXplOiB7XG4gICAgICAgIFdpZHRoOiBmcm9udGVuZExhbmUuc2l6ZS53aWR0aCxcbiAgICAgICAgSGVpZ2h0OiBmcm9udGVuZExhbmUuc2l6ZS5oZWlnaHQsXG4gICAgICB9LFxuICAgICAgVGFnczogZnJvbnRlbmRMYW5lLnRhZ3MgfHwgW10sIC8vIFRoaXMgbm93IGNvcnJlY3RseSBtYXBzIFRhZ1tdIHRvIFRhZ1tdXG4gICAgICBUZW5hbnRJZDogZnJvbnRlbmRMYW5lLnRlbmFudElkIHx8ICcnLFxuICAgICAgU2VydmljZU5hbWU6ICdXb3JrZmxvdycsXG4gICAgICBDcmVhdGVkQXQ6IGZyb250ZW5kTGFuZS5jcmVhdGVkQXQgfHwgbmV3IERhdGUoKSxcbiAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIERhdGFTdGF0ZTogb3JpZ2luYWxJZCA/IE9iamVjdFN0YXRlLkNoYW5nZWQgOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdG9CYWNrZW5kU3RhZ2UoXG4gICAgZnJvbnRlbmRTdGFnZTogV29ya2Zsb3dPYmplY3QsXG4gICAgd29ya2Zsb3dJZDogc3RyaW5nLFxuICAgIGlzRW50cnlQb2ludDogYm9vbGVhbixcbiAgICBpc0V4aXRQb2ludDogYm9vbGVhbixcbiAgICBzd2ltbGFuZUlkOiBzdHJpbmcsXG4gICAgdGVuYW50SWQ6IHN0cmluZ1xuICApOiBXb3JrZmxvd1N0YWdlIHtcbiAgICBjb25zdCBzdGFnZSA9IGZyb250ZW5kU3RhZ2UgYXMgU3RhZ2U7XG4gICAgY29uc3Qgb3JpZ2luYWxJZCA9IHN0YWdlLm9yaWdpbmFsSWQgfHwgJyc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgSWQ6IG9yaWdpbmFsSWQsXG4gICAgICBpZDogb3JpZ2luYWxJZCxcbiAgICAgIENvZGU6IHN0YWdlLm9yaWdpbmFsQ29kZSB8fCB0aGlzLmdlbmVyYXRlQ29kZShzdGFnZS5sYWJlbCksXG4gICAgICBLZXk6IHN0YWdlLmlkLFxuICAgICAgV29ya2Zsb3c6IHdvcmtmbG93SWQsXG4gICAgICBOYW1lOiBzdGFnZS5sYWJlbCxcbiAgICAgIERlc2NyaXB0aW9uOiBzdGFnZS5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIER1cmF0aW9uOiBzdGFnZS5kdXJhdGlvbiB8fCAwLFxuICAgICAgUGFzc09uUnVsZTogc3RhZ2UucGFzc09uUnVsZSB8fCAnJyxcbiAgICAgIEFjdG9yUnVsZTogKHN0YWdlLmFjdG9yUnVsZSBhcyBTdGFnZUFjdG9yUnVsZSkgfHwgU3RhZ2VBY3RvclJ1bGUuQW55LFxuICAgICAgTWluTm9PZkFjdG9yOiBzdGFnZS5taW5Ob09mQWN0b3IgfHwgMSxcbiAgICAgIElzUGFyYWxsZWw6IHN0YWdlLmlzUGFyYWxsZWwgfHwgZmFsc2UsXG4gICAgICBJc0VudHJ5UG9pbnQ6IGlzRW50cnlQb2ludCxcbiAgICAgIElzRXhpdFBvaW50OiBpc0V4aXRQb2ludCxcbiAgICAgIFRhZ3M6IHN0YWdlLnRhZ3MgfHwgW10sIC8vIE5vdyBjb3JyZWN0bHkgbWFwcyBUYWdbXSB0byBUYWdbXVxuICAgICAgRm9ybTogc3RhZ2UuZm9ybSB8fCAnJyxcbiAgICAgIEFsbG93TXVsdGlTdWJQcm9jZXNzOiBzdGFnZS5hbGxvd011bHRpU3ViUHJvY2VzcyB8fCBmYWxzZSxcbiAgICAgIEFzc2lnbm1lbnRUeXBlOlxuICAgICAgICAoc3RhZ2UuYXNzaWdubWVudFR5cGUgYXMgVGFza0Fzc2lnbm1lbnRUeXBlKSB8fFxuICAgICAgICBUYXNrQXNzaWdubWVudFR5cGUuUXVldWUsXG4gICAgICBTdWJXb3JrRmxvdzogc3RhZ2Uuc3ViV29ya2Zsb3cgfHwgJycsXG4gICAgICBTd2ltTGFuZTogc3dpbWxhbmVJZCxcbiAgICAgIENvb3JkaW5hdGVzOiB7XG4gICAgICAgIFg6IHN0YWdlLnBvc2l0aW9uLngsXG4gICAgICAgIFk6IHN0YWdlLnBvc2l0aW9uLnksXG4gICAgICB9LFxuICAgICAgSXNTdWJQcm9jZXNzOiBzdGFnZS5pc1N1YlByb2Nlc3MgfHwgZmFsc2UsXG4gICAgICBUZW5hbnRJZDogdGVuYW50SWQsXG4gICAgICBTZXJ2aWNlTmFtZTogJ1dvcmtmbG93JyxcbiAgICAgIENyZWF0ZWRBdDogc3RhZ2UuY3JlYXRlZEF0IHx8IG5ldyBEYXRlKCksXG4gICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICBEYXRhU3RhdGU6IG9yaWdpbmFsSWQgPyBPYmplY3RTdGF0ZS5DaGFuZ2VkIDogT2JqZWN0U3RhdGUuTmV3LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHRvQmFja2VuZEFjdGlvbihcbiAgICBmcm9udGVuZEFjdGlvbjogRnJvbnRlbmRBY3Rpb24sXG4gICAgd29ya2Zsb3c6IHN0cmluZ1xuICApOiBXb3JrZmxvd0FjdGlvbiB7XG4gICAgY29uc3Qgb3JpZ2luYWxJZCA9IGZyb250ZW5kQWN0aW9uLm9yaWdpbmFsSWQgfHwgJyc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgSWQ6IG9yaWdpbmFsSWQsXG4gICAgICBpZDogb3JpZ2luYWxJZCxcbiAgICAgIENvZGU6XG4gICAgICAgIGZyb250ZW5kQWN0aW9uLm9yaWdpbmFsQ29kZSB8fFxuICAgICAgICBgJHtmcm9udGVuZEFjdGlvbi5mcm9tSWR9LXRvLSR7ZnJvbnRlbmRBY3Rpb24udG9JZH1gLFxuICAgICAgV29ya2Zsb3c6IHdvcmtmbG93LFxuICAgICAgTmFtZTogZnJvbnRlbmRBY3Rpb24ubGFiZWwgfHwgJ1VubmFtZWQgQWN0aW9uJyxcbiAgICAgIEZyb21TdGFnZTogZnJvbnRlbmRBY3Rpb24uZnJvbUlkLFxuICAgICAgVG9TdGFnZTogZnJvbnRlbmRBY3Rpb24udG9JZCxcbiAgICAgIElzUGFyYWxsZWw6IGZyb250ZW5kQWN0aW9uLmlzUGFyYWxsZWwgfHwgZmFsc2UsXG4gICAgICBQYXNzT25SdWxlOiBmcm9udGVuZEFjdGlvbi5wYXNzT25SdWxlIHx8ICcnLFxuICAgICAgVGVuYW50SWQ6IGZyb250ZW5kQWN0aW9uLnRlbmFudElkIHx8ICcnLFxuICAgICAgU2VydmljZU5hbWU6ICdXb3JrZmxvdycsXG4gICAgICBDcmVhdGVkQXQ6IGZyb250ZW5kQWN0aW9uLmNyZWF0ZWRBdCB8fCBuZXcgRGF0ZSgpLFxuICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgRGF0YVN0YXRlOiBvcmlnaW5hbElkID8gT2JqZWN0U3RhdGUuQ2hhbmdlZCA6IE9iamVjdFN0YXRlLk5ldyxcbiAgICB9O1xuICB9XG5cbiAgLy8gQmFja2VuZCB0byBGcm9udGVuZCB0cmFuc2Zvcm1hdGlvblxuICB0b0Zyb250ZW5kT2JqZWN0cyh3b3JrZmxvdzogV29ya2Zsb3cpOiB7XG4gICAgb2JqZWN0czogV29ya2Zsb3dPYmplY3RbXTtcbiAgICBtZXRhZGF0YTogV29ya2Zsb3dNZXRhZGF0YTtcbiAgfSB7XG4gICAgY29uc3Qgb2JqZWN0czogV29ya2Zsb3dPYmplY3RbXSA9IFtdO1xuXG4gICAgLy8gQ3JlYXRlIG1ldGFkYXRhIG9iamVjdCB0byBzdG9yZSB3b3JrZmxvdyBpbmZvcm1hdGlvblxuICAgIGNvbnN0IG1ldGFkYXRhOiBXb3JrZmxvd01ldGFkYXRhID0ge1xuICAgICAgaWQ6IHdvcmtmbG93LklkLFxuICAgICAgY29kZTogd29ya2Zsb3cuQ29kZSxcbiAgICAgIG5hbWU6IHdvcmtmbG93Lk5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogd29ya2Zsb3cuRGVzY3JpcHRpb24sXG4gICAgICB0ZW5hbnRJZDogd29ya2Zsb3cuVGVuYW50SWQsXG4gICAgICBmb3JtSWQ6IHdvcmtmbG93LkZvcm0sXG4gICAgICBjcmVhdGVkQXQ6IHdvcmtmbG93LkNyZWF0ZWRBdCxcbiAgICAgIGlzTmV3OiB3b3JrZmxvdy5EYXRhU3RhdGUgPT09IE9iamVjdFN0YXRlLk5ldyxcbiAgICB9O1xuXG4gICAgLy8gU3RhcnQgd2l0aCB0aGUgc3RhcnQgbm9kZVxuICAgIGNvbnN0IHN0YXJ0Tm9kZSA9IHRoaXMuY3JlYXRlU3RhcnROb2RlKCk7XG4gICAgb2JqZWN0cy5wdXNoKHN0YXJ0Tm9kZSk7XG5cbiAgICAvLyBDb252ZXJ0IHN3aW1sYW5lc1xuICAgIGNvbnN0IHN3aW1sYW5lcyA9IHdvcmtmbG93LkxhbmVzLm1hcCgobGFuZSkgPT5cbiAgICAgIHRoaXMudG9Gcm9udGVuZFN3aW1sYW5lKGxhbmUpXG4gICAgKTtcbiAgICBvYmplY3RzLnB1c2goLi4uc3dpbWxhbmVzKTtcblxuICAgIC8vIENvbnZlcnQgc3RhZ2VzXG4gICAgY29uc3Qgc3RhZ2VzID0gd29ya2Zsb3cuU3RhZ2VzLm1hcCgoc3RhZ2UpID0+IHRoaXMudG9Gcm9udGVuZFN0YWdlKHN0YWdlKSk7XG4gICAgb2JqZWN0cy5wdXNoKC4uLnN0YWdlcyk7XG5cbiAgICAvLyBDcmVhdGUgY29ubmVjdGlvbnMsIGluY2x1ZGluZyBmcm9tIHN0YXJ0IG5vZGUgdG8gZW50cnkgcG9pbnRzXG4gICAgY29uc3QgY29ubmVjdGlvbnMgPSB0aGlzLmNyZWF0ZUNvbm5lY3Rpb25zKHdvcmtmbG93LCBzdGFydE5vZGUuaWQsIHN0YWdlcyk7XG4gICAgb2JqZWN0cy5wdXNoKC4uLmNvbm5lY3Rpb25zKTtcblxuICAgIHJldHVybiB7IG9iamVjdHMsIG1ldGFkYXRhIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN0YXJ0Tm9kZSgpOiBXb3JrZmxvd09iamVjdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiAnc3RhcnQtbm9kZScsXG4gICAgICB0eXBlOiAnc3RhcnQnLFxuICAgICAgcG9zaXRpb246IHsgeDogNTAsIHk6IDM3IH0sXG4gICAgICBzaXplOiB7IHdpZHRoOiA1OCwgaGVpZ2h0OiA0NiB9LFxuICAgICAgbGFiZWw6ICdTdGFydCcsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdG9Gcm9udGVuZFN3aW1sYW5lKGJhY2tlbmRMYW5lOiBTd2ltTGFuZSk6IFdvcmtmbG93T2JqZWN0IHtcbiAgICAvLyBOb3JtYWxpemUgdGhlIGNvb3JkaW5hdGVzIGFuZCBzaXplXG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSBiYWNrZW5kTGFuZS5Db29yZGluYXRlcyB8fCB7XG4gICAgICBYOiAwLFxuICAgICAgWTogYmFja2VuZExhbmUuUG9zaXRpb24gKiAxMjAsXG4gICAgfTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHtcbiAgICAgIHg6IGNvb3JkaW5hdGVzLlggPz8gMCxcbiAgICAgIHk6IGNvb3JkaW5hdGVzLlkgPz8gMCxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2l6ZSA9IGJhY2tlbmRMYW5lLlNpemUgfHwgeyBXaWR0aDogMjk2MCwgSGVpZ2h0OiAxMjAgfTtcbiAgICBjb25zdCBub3JtYWxpemVkU2l6ZSA9IHtcbiAgICAgIHdpZHRoOiBzaXplLldpZHRoID8/IDI5NjAsXG4gICAgICBoZWlnaHQ6IHNpemUuSGVpZ2h0ID8/IDEyMCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBiYWNrZW5kTGFuZS5Db2RlLFxuICAgICAgdHlwZTogJ3N3aW1sYW5lJyxcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgc2l6ZTogbm9ybWFsaXplZFNpemUsXG4gICAgICBsYWJlbDogYmFja2VuZExhbmUuQ29kZSxcbiAgICAgIC8vIFN0b3JlIG9yaWdpbmFsIGJhY2tlbmQgaW5mb3JtYXRpb24gZm9yIGxhdGVyIHVzZVxuICAgICAgb3JpZ2luYWxJZDogYmFja2VuZExhbmUuSWQsXG4gICAgICBvcmlnaW5hbENvZGU6IGJhY2tlbmRMYW5lLkNvZGUsXG4gICAgICB0YWdzOiBiYWNrZW5kTGFuZS5UYWdzIHx8IFtdLFxuICAgICAgdGVuYW50SWQ6IGJhY2tlbmRMYW5lLlRlbmFudElkLFxuICAgICAgY3JlYXRlZEF0OiBiYWNrZW5kTGFuZS5DcmVhdGVkQXQsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdG9Gcm9udGVuZFN0YWdlKGJhY2tlbmRTdGFnZTogV29ya2Zsb3dTdGFnZSk6IFdvcmtmbG93T2JqZWN0IHtcbiAgICAvLyBOb3JtYWxpemUgY29vcmRpbmF0ZXNcbiAgICBjb25zdCBjb29yZGluYXRlcyA9IGJhY2tlbmRTdGFnZS5Db29yZGluYXRlcyB8fCB7IFg6IDAsIFk6IDAgfTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHtcbiAgICAgIHg6IGNvb3JkaW5hdGVzLlggPz8gMCxcbiAgICAgIHk6IGNvb3JkaW5hdGVzLlkgPz8gMCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBiYWNrZW5kU3RhZ2UuS2V5IHx8IGJhY2tlbmRTdGFnZS5Db2RlLFxuICAgICAgdHlwZTogJ3N0YWdlJyxcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgc2l6ZTogeyB3aWR0aDogMTIwLCBoZWlnaHQ6IDgwIH0sIC8vIERlZmF1bHQgc2l6ZSBmb3Igc3RhZ2VzXG4gICAgICBsYWJlbDogYmFja2VuZFN0YWdlLk5hbWUsXG4gICAgICAvLyBTdG9yZSBvcmlnaW5hbCBiYWNrZW5kIGluZm9ybWF0aW9uXG4gICAgICBvcmlnaW5hbElkOiBiYWNrZW5kU3RhZ2UuSWQsXG4gICAgICBvcmlnaW5hbENvZGU6IGJhY2tlbmRTdGFnZS5Db2RlLFxuICAgICAgZGVzY3JpcHRpb246IGJhY2tlbmRTdGFnZS5EZXNjcmlwdGlvbixcbiAgICAgIGR1cmF0aW9uOiBiYWNrZW5kU3RhZ2UuRHVyYXRpb24sXG4gICAgICBwYXNzT25SdWxlOiBiYWNrZW5kU3RhZ2UuUGFzc09uUnVsZSxcbiAgICAgIGFjdG9yUnVsZTogYmFja2VuZFN0YWdlLkFjdG9yUnVsZSxcbiAgICAgIG1pbk5vT2ZBY3RvcjogYmFja2VuZFN0YWdlLk1pbk5vT2ZBY3RvcixcbiAgICAgIGlzUGFyYWxsZWw6IGJhY2tlbmRTdGFnZS5Jc1BhcmFsbGVsLFxuICAgICAgaXNFbnRyeVBvaW50OiBiYWNrZW5kU3RhZ2UuSXNFbnRyeVBvaW50LFxuICAgICAgaXNFeGl0UG9pbnQ6IGJhY2tlbmRTdGFnZS5Jc0V4aXRQb2ludCxcbiAgICAgIHRhZ3M6IGJhY2tlbmRTdGFnZS5UYWdzLFxuICAgICAgZm9ybXM6IGJhY2tlbmRTdGFnZS5Gb3JtLFxuICAgICAgYWxsb3dNdWx0aVN1YlByb2Nlc3M6IGJhY2tlbmRTdGFnZS5BbGxvd011bHRpU3ViUHJvY2VzcyxcbiAgICAgIGFzc2lnbm1lbnRUeXBlOiBiYWNrZW5kU3RhZ2UuQXNzaWdubWVudFR5cGUsXG4gICAgICBzdWJXb3JrZmxvdzogYmFja2VuZFN0YWdlLlN1YldvcmtGbG93LFxuICAgICAgaXNTdWJQcm9jZXNzOiBiYWNrZW5kU3RhZ2UuSXNTdWJQcm9jZXNzLFxuICAgICAgdGVuYW50SWQ6IGJhY2tlbmRTdGFnZS5UZW5hbnRJZCxcbiAgICAgIGNyZWF0ZWRBdDogYmFja2VuZFN0YWdlLkNyZWF0ZWRBdCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb25uZWN0aW9ucyhcbiAgICB3b3JrZmxvdzogV29ya2Zsb3csXG4gICAgc3RhcnROb2RlSWQ6IHN0cmluZyxcbiAgICBzdGFnZXM6IFdvcmtmbG93T2JqZWN0W11cbiAgKTogRnJvbnRlbmRBY3Rpb25bXSB7XG4gICAgY29uc3QgY29ubmVjdGlvbnM6IEZyb250ZW5kQWN0aW9uW10gPSBbXTtcbiAgICBjb25zdCBhY3Rpb25zID0gd29ya2Zsb3cuQWN0aW9ucztcblxuICAgIC8vIENyZWF0ZSBjb25uZWN0aW9ucyBmcm9tIHN0YXJ0IG5vZGUgdG8gZW50cnkgcG9pbnRzXG4gICAgc3RhZ2VzXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoc3RhZ2UpID0+XG4gICAgICAgICAgd29ya2Zsb3cuU3RhZ2VzLmZpbmQoKHMpID0+IHMuS2V5ID09PSBzdGFnZS5pZCB8fCBzLkNvZGUgPT09IHN0YWdlLmlkKVxuICAgICAgICAgICAgPy5Jc0VudHJ5UG9pbnRcbiAgICAgIClcbiAgICAgIC5mb3JFYWNoKChlbnRyeVN0YWdlKSA9PiB7XG4gICAgICAgIGNvbm5lY3Rpb25zLnB1c2goXG4gICAgICAgICAgdGhpcy5jcmVhdGVDb25uZWN0aW9uKFxuICAgICAgICAgICAgY3J5cHRvLnJhbmRvbVVVSUQoKSxcbiAgICAgICAgICAgIHN0YXJ0Tm9kZUlkLFxuICAgICAgICAgICAgZW50cnlTdGFnZS5pZCxcbiAgICAgICAgICAgICdTdGFydCcsXG4gICAgICAgICAgICBzdGFnZXNcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBjb25uZWN0aW9ucyBiZXR3ZWVuIHN0YWdlc1xuICAgIGFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICBjb25uZWN0aW9ucy5wdXNoKFxuICAgICAgICB0aGlzLmNyZWF0ZUNvbm5lY3Rpb24oXG4gICAgICAgICAgYWN0aW9uLkNvZGUsXG4gICAgICAgICAgYWN0aW9uLkZyb21TdGFnZSxcbiAgICAgICAgICBhY3Rpb24uVG9TdGFnZSxcbiAgICAgICAgICBhY3Rpb24uTmFtZSB8fCAnJyxcbiAgICAgICAgICBzdGFnZXMsXG4gICAgICAgICAge1xuICAgICAgICAgICAgb3JpZ2luYWxJZDogYWN0aW9uLklkLFxuICAgICAgICAgICAgb3JpZ2luYWxDb2RlOiBhY3Rpb24uQ29kZSxcbiAgICAgICAgICAgIGlzUGFyYWxsZWw6IGFjdGlvbi5Jc1BhcmFsbGVsLFxuICAgICAgICAgICAgcGFzc09uUnVsZTogYWN0aW9uLlBhc3NPblJ1bGUsXG4gICAgICAgICAgICB0ZW5hbnRJZDogYWN0aW9uLlRlbmFudElkLFxuICAgICAgICAgICAgY3JlYXRlZEF0OiBhY3Rpb24uQ3JlYXRlZEF0LFxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjb25uZWN0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ29ubmVjdGlvbihcbiAgICBpZDogc3RyaW5nLFxuICAgIGZyb21JZDogc3RyaW5nLFxuICAgIHRvSWQ6IHN0cmluZyxcbiAgICBsYWJlbDogc3RyaW5nLFxuICAgIHN0YWdlczogV29ya2Zsb3dPYmplY3RbXSxcbiAgICBwcm9wZXJ0aWVzPzogYW55XG4gICk6IEZyb250ZW5kQWN0aW9uIHtcbiAgICBjb25zdCBzb3VyY2VOb2RlID1cbiAgICAgIHN0YWdlcy5maW5kKChzKSA9PiBzLmlkID09PSBmcm9tSWQpIHx8IHRoaXMuY3JlYXRlU3RhcnROb2RlKCk7XG4gICAgY29uc3QgdGFyZ2V0Tm9kZSA9IHN0YWdlcy5maW5kKChzKSA9PiBzLmlkID09PSB0b0lkKTtcblxuICAgIGlmICghdGFyZ2V0Tm9kZSkge1xuICAgICAgY29uc29sZS5lcnJvcihgVW5hYmxlIHRvIGZpbmQgdGFyZ2V0IHN0YWdlIHdpdGggaWQ6ICR7dG9JZH1gKTtcbiAgICAgIC8vIFJldHVybiBhIG1pbmltYWwgY29ubmVjdGlvbiB0byBhdm9pZCBicmVha2luZyB0aGUgYXBwbGljYXRpb25cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkLFxuICAgICAgICB0eXBlOiAnYWN0aW9uJyxcbiAgICAgICAgZnJvbUlkLFxuICAgICAgICB0b0lkLFxuICAgICAgICBsYWJlbCxcbiAgICAgICAgcG9zaXRpb246IHsgeDogMCwgeTogMCB9LFxuICAgICAgICBzaXplOiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSxcbiAgICAgICAgcG9pbnRzOiBbXSxcbiAgICAgICAgLi4ucHJvcGVydGllcyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgcG9pbnRzID0gdGhpcy5jb25uZWN0aW9uU2VydmljZS5yZWNhbGN1bGF0ZUNvbm5lY3Rpb25Qb2ludHMoXG4gICAgICBzb3VyY2VOb2RlLFxuICAgICAgdGFyZ2V0Tm9kZSxcbiAgICAgIFtdXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZCxcbiAgICAgIHR5cGU6ICdhY3Rpb24nLFxuICAgICAgZnJvbUlkLFxuICAgICAgdG9JZCxcbiAgICAgIGxhYmVsLFxuICAgICAgcG9zaXRpb246IHNvdXJjZU5vZGUucG9zaXRpb24sXG4gICAgICBzaXplOiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSxcbiAgICAgIHBvaW50cyxcbiAgICAgIC8vIFN0b3JlIGFsbCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZnJvbSBiYWNrZW5kXG4gICAgICBvcmlnaW5hbElkOiBwcm9wZXJ0aWVzPy5vcmlnaW5hbElkLFxuICAgICAgb3JpZ2luYWxDb2RlOiBwcm9wZXJ0aWVzPy5vcmlnaW5hbENvZGUsXG4gICAgICBpc1BhcmFsbGVsOiBwcm9wZXJ0aWVzPy5pc1BhcmFsbGVsLFxuICAgICAgcGFzc09uUnVsZTogcHJvcGVydGllcz8ucGFzc09uUnVsZSxcbiAgICAgIHRlbmFudElkOiBwcm9wZXJ0aWVzPy50ZW5hbnRJZCxcbiAgICAgIGNyZWF0ZWRBdDogcHJvcGVydGllcz8uY3JlYXRlZEF0LFxuICAgICAgcHJvcGVydGllczogcHJvcGVydGllcz8ucHJvcGVydGllcyxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,76 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../workflow-designer.state";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "@angular/forms";
6
+ import * as i4 from "verben-ng-ui";
7
+ export class ConditionsPopupComponent {
8
+ state;
9
+ visible = false;
10
+ decisionNodeId = '';
11
+ newConnectionId = '';
12
+ popupX = 0;
13
+ popupY = 0;
14
+ closed = new EventEmitter();
15
+ saved = new EventEmitter();
16
+ connectionConditions = [];
17
+ currentCondition = '';
18
+ constructor(state) {
19
+ this.state = state;
20
+ }
21
+ ngOnInit() {
22
+ this.loadConnectionConditions();
23
+ }
24
+ loadConnectionConditions() {
25
+ if (!this.decisionNodeId)
26
+ return;
27
+ // Get all connections from this decision node
28
+ const connections = this.state.connections.filter((conn) => conn.sourceNodeId === this.decisionNodeId);
29
+ this.connectionConditions = connections.map((conn) => {
30
+ const targetNode = this.state.findNodeById(conn.targetNodeId)?.node;
31
+ return {
32
+ connectionId: conn.id,
33
+ sourceNodeId: conn.sourceNodeId,
34
+ targetNodeId: conn.targetNodeId,
35
+ targetNodeName: targetNode?.stageData?.Name || 'Unknown Stage',
36
+ condition: conn.condition || '',
37
+ isActive: conn.id === this.newConnectionId,
38
+ };
39
+ });
40
+ // Find the current connection being edited
41
+ const activeCondition = this.connectionConditions.find((c) => c.isActive);
42
+ if (activeCondition) {
43
+ this.currentCondition = activeCondition.condition;
44
+ }
45
+ }
46
+ saveCondition() {
47
+ this.saved.emit({
48
+ connectionId: this.newConnectionId,
49
+ condition: this.currentCondition,
50
+ });
51
+ }
52
+ onClose() {
53
+ this.closed.emit();
54
+ }
55
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConditionsPopupComponent, deps: [{ token: i1.WorkflowDesignerState }], target: i0.ɵɵFactoryTarget.Component });
56
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ConditionsPopupComponent, selector: "lib-conditions-popup", inputs: { visible: "visible", decisionNodeId: "decisionNodeId", newConnectionId: "newConnectionId", popupX: "popupX", popupY: "popupY" }, outputs: { closed: "closed", saved: "saved" }, ngImport: i0, template: "<div\n *ngIf=\"visible\"\n [style.position]=\"'fixed'\"\n [style.left.px]=\"popupX\"\n [style.top.px]=\"popupY\"\n>\n <verben-pop-Up [dropdownOpen]=\"true\" [customStyles]=\"{ 'z-index': '100' }\">\n <div dropdown-trigger style=\"display: none\">\n <!-- Hidden trigger element -->\n </div>\n <div\n class=\"p-4 bg-white border border-purple-300 rounded shadow-md w-80\"\n dropdown-content\n >\n <div class=\"flex justify-between items-center mb-3\">\n <h3 class=\"text-lg font-medium\">Decision Conditions</h3>\n <button class=\"text-gray-500 hover:text-gray-700\" (click)=\"onClose()\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n\n <div class=\"mb-3\">\n <p class=\"text-sm text-gray-600\">Define a condition for this branch.</p>\n </div>\n\n <div class=\"mb-4\">\n <label class=\"block text-sm font-medium mb-1\">Condition</label>\n <input\n type=\"text\"\n [(ngModel)]=\"currentCondition\"\n placeholder=\"e.g., order.amount > 500,000\"\n class=\"w-full px-3 py-2 rounded border border-gray-200 text-sm\"\n />\n </div>\n\n <div\n class=\"space-y-3 max-h-60 overflow-y-auto\"\n *ngIf=\"connectionConditions.length > 1\"\n >\n <h4 class=\"text-sm font-medium\">Existing Conditions:</h4>\n @for (conn of connectionConditions; track conn.connectionId) { @if\n (!conn.isActive) {\n <div class=\"border rounded p-3\">\n <div class=\"mb-2\">\n <span class=\"font-medium\">{{ conn.targetNodeName }}</span>\n </div>\n <div>\n <input\n type=\"text\"\n [value]=\"conn.condition\"\n placeholder=\"No condition\"\n class=\"w-full px-3 py-2 rounded border border-gray-200 bg-gray-50 text-sm\"\n readonly\n />\n </div>\n </div>\n } }\n </div>\n\n <div class=\"flex justify-end mt-4 pt-3 border-t border-gray-200\">\n <button\n class=\"px-4 py-2 mr-2 bg-white border border-gray-200 rounded text-sm font-medium\"\n (click)=\"onClose()\"\n >\n Cancel\n </button>\n <button\n class=\"px-4 py-2 bg-yellow-300 text-black rounded text-sm font-medium\"\n (click)=\"saveCondition()\"\n >\n Save\n </button>\n </div>\n </div>\n </verben-pop-Up>\n</div>\n", styles: [".border-purple-400{border-color:#d36cff}.bg-purple-50{background-color:#f9f5ff}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.VerbenPopUpComponent, selector: "verben-pop-Up", inputs: ["dropdownOpen", "dropdownWidth", "color", "customStyles", "popUpClass", "border", "borderRadius", "enableMouseLeave"], outputs: ["dropdownOpenChange", "close"] }] });
57
+ }
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConditionsPopupComponent, decorators: [{
59
+ type: Component,
60
+ args: [{ selector: 'lib-conditions-popup', template: "<div\n *ngIf=\"visible\"\n [style.position]=\"'fixed'\"\n [style.left.px]=\"popupX\"\n [style.top.px]=\"popupY\"\n>\n <verben-pop-Up [dropdownOpen]=\"true\" [customStyles]=\"{ 'z-index': '100' }\">\n <div dropdown-trigger style=\"display: none\">\n <!-- Hidden trigger element -->\n </div>\n <div\n class=\"p-4 bg-white border border-purple-300 rounded shadow-md w-80\"\n dropdown-content\n >\n <div class=\"flex justify-between items-center mb-3\">\n <h3 class=\"text-lg font-medium\">Decision Conditions</h3>\n <button class=\"text-gray-500 hover:text-gray-700\" (click)=\"onClose()\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n\n <div class=\"mb-3\">\n <p class=\"text-sm text-gray-600\">Define a condition for this branch.</p>\n </div>\n\n <div class=\"mb-4\">\n <label class=\"block text-sm font-medium mb-1\">Condition</label>\n <input\n type=\"text\"\n [(ngModel)]=\"currentCondition\"\n placeholder=\"e.g., order.amount > 500,000\"\n class=\"w-full px-3 py-2 rounded border border-gray-200 text-sm\"\n />\n </div>\n\n <div\n class=\"space-y-3 max-h-60 overflow-y-auto\"\n *ngIf=\"connectionConditions.length > 1\"\n >\n <h4 class=\"text-sm font-medium\">Existing Conditions:</h4>\n @for (conn of connectionConditions; track conn.connectionId) { @if\n (!conn.isActive) {\n <div class=\"border rounded p-3\">\n <div class=\"mb-2\">\n <span class=\"font-medium\">{{ conn.targetNodeName }}</span>\n </div>\n <div>\n <input\n type=\"text\"\n [value]=\"conn.condition\"\n placeholder=\"No condition\"\n class=\"w-full px-3 py-2 rounded border border-gray-200 bg-gray-50 text-sm\"\n readonly\n />\n </div>\n </div>\n } }\n </div>\n\n <div class=\"flex justify-end mt-4 pt-3 border-t border-gray-200\">\n <button\n class=\"px-4 py-2 mr-2 bg-white border border-gray-200 rounded text-sm font-medium\"\n (click)=\"onClose()\"\n >\n Cancel\n </button>\n <button\n class=\"px-4 py-2 bg-yellow-300 text-black rounded text-sm font-medium\"\n (click)=\"saveCondition()\"\n >\n Save\n </button>\n </div>\n </div>\n </verben-pop-Up>\n</div>\n", styles: [".border-purple-400{border-color:#d36cff}.bg-purple-50{background-color:#f9f5ff}\n"] }]
61
+ }], ctorParameters: () => [{ type: i1.WorkflowDesignerState }], propDecorators: { visible: [{
62
+ type: Input
63
+ }], decisionNodeId: [{
64
+ type: Input
65
+ }], newConnectionId: [{
66
+ type: Input
67
+ }], popupX: [{
68
+ type: Input
69
+ }], popupY: [{
70
+ type: Input
71
+ }], closed: [{
72
+ type: Output
73
+ }], saved: [{
74
+ type: Output
75
+ }] } });
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9ucy1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL2NvbmRpdGlvbnMtcG9wdXAvY29uZGl0aW9ucy1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL2NvbmRpdGlvbnMtcG9wdXAvY29uZGl0aW9ucy1wb3B1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFpQnZFLE1BQU0sT0FBTyx3QkFBd0I7SUFlZjtJQWRYLE9BQU8sR0FBWSxLQUFLLENBQUM7SUFDekIsY0FBYyxHQUFXLEVBQUUsQ0FBQztJQUM1QixlQUFlLEdBQVcsRUFBRSxDQUFDO0lBQzdCLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFDbkIsTUFBTSxHQUFXLENBQUMsQ0FBQztJQUNsQixNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUM1QixLQUFLLEdBQUcsSUFBSSxZQUFZLEVBRzlCLENBQUM7SUFFTCxvQkFBb0IsR0FBMEIsRUFBRSxDQUFDO0lBQ2pELGdCQUFnQixHQUFXLEVBQUUsQ0FBQztJQUU5QixZQUFvQixLQUE0QjtRQUE1QixVQUFLLEdBQUwsS0FBSyxDQUF1QjtJQUFHLENBQUM7SUFFcEQsUUFBUTtRQUNOLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTztRQUVqQyw4Q0FBOEM7UUFDOUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUMvQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsY0FBYyxDQUNwRCxDQUFDO1FBRUYsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDO1lBQ3BFLE9BQU87Z0JBQ0wsWUFBWSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNyQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQy9CLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0IsY0FBYyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsSUFBSSxJQUFJLGVBQWU7Z0JBQzlELFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUU7Z0JBQy9CLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxlQUFlO2FBQzNDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILDJDQUEyQztRQUMzQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUUsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNkLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNsQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQzt3R0F6RFUsd0JBQXdCOzRGQUF4Qix3QkFBd0IscVBDakJyQyxxNUZBeUZBOzs0RkR4RWEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHNCQUFzQjswRkFLdkIsT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV29ya2Zsb3dEZXNpZ25lclN0YXRlIH0gZnJvbSAnLi4vd29ya2Zsb3ctZGVzaWduZXIuc3RhdGUnO1xuXG5pbnRlcmZhY2UgQ29ubmVjdGlvbkNvbmRpdGlvbiB7XG4gIGNvbm5lY3Rpb25JZDogc3RyaW5nO1xuICBzb3VyY2VOb2RlSWQ6IHN0cmluZztcbiAgdGFyZ2V0Tm9kZUlkOiBzdHJpbmc7XG4gIHRhcmdldE5vZGVOYW1lOiBzdHJpbmc7XG4gIGNvbmRpdGlvbjogc3RyaW5nO1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWNvbmRpdGlvbnMtcG9wdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZGl0aW9ucy1wb3B1cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9jb25kaXRpb25zLXBvcHVwLmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBDb25kaXRpb25zUG9wdXBDb21wb25lbnQge1xuICBASW5wdXQoKSB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRlY2lzaW9uTm9kZUlkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbmV3Q29ubmVjdGlvbklkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcG9wdXBYOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBwb3B1cFk6IG51bWJlciA9IDA7XG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIGNvbm5lY3Rpb25JZDogc3RyaW5nO1xuICAgIGNvbmRpdGlvbjogc3RyaW5nO1xuICB9PigpO1xuXG4gIGNvbm5lY3Rpb25Db25kaXRpb25zOiBDb25uZWN0aW9uQ29uZGl0aW9uW10gPSBbXTtcbiAgY3VycmVudENvbmRpdGlvbjogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdGF0ZTogV29ya2Zsb3dEZXNpZ25lclN0YXRlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZENvbm5lY3Rpb25Db25kaXRpb25zKCk7XG4gIH1cblxuICBsb2FkQ29ubmVjdGlvbkNvbmRpdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRlY2lzaW9uTm9kZUlkKSByZXR1cm47XG5cbiAgICAvLyBHZXQgYWxsIGNvbm5lY3Rpb25zIGZyb20gdGhpcyBkZWNpc2lvbiBub2RlXG4gICAgY29uc3QgY29ubmVjdGlvbnMgPSB0aGlzLnN0YXRlLmNvbm5lY3Rpb25zLmZpbHRlcihcbiAgICAgIChjb25uKSA9PiBjb25uLnNvdXJjZU5vZGVJZCA9PT0gdGhpcy5kZWNpc2lvbk5vZGVJZFxuICAgICk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25Db25kaXRpb25zID0gY29ubmVjdGlvbnMubWFwKChjb25uKSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXROb2RlID0gdGhpcy5zdGF0ZS5maW5kTm9kZUJ5SWQoY29ubi50YXJnZXROb2RlSWQpPy5ub2RlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29ubmVjdGlvbklkOiBjb25uLmlkLFxuICAgICAgICBzb3VyY2VOb2RlSWQ6IGNvbm4uc291cmNlTm9kZUlkLFxuICAgICAgICB0YXJnZXROb2RlSWQ6IGNvbm4udGFyZ2V0Tm9kZUlkLFxuICAgICAgICB0YXJnZXROb2RlTmFtZTogdGFyZ2V0Tm9kZT8uc3RhZ2VEYXRhPy5OYW1lIHx8ICdVbmtub3duIFN0YWdlJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25uLmNvbmRpdGlvbiB8fCAnJyxcbiAgICAgICAgaXNBY3RpdmU6IGNvbm4uaWQgPT09IHRoaXMubmV3Q29ubmVjdGlvbklkLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8vIEZpbmQgdGhlIGN1cnJlbnQgY29ubmVjdGlvbiBiZWluZyBlZGl0ZWRcbiAgICBjb25zdCBhY3RpdmVDb25kaXRpb24gPSB0aGlzLmNvbm5lY3Rpb25Db25kaXRpb25zLmZpbmQoKGMpID0+IGMuaXNBY3RpdmUpO1xuICAgIGlmIChhY3RpdmVDb25kaXRpb24pIHtcbiAgICAgIHRoaXMuY3VycmVudENvbmRpdGlvbiA9IGFjdGl2ZUNvbmRpdGlvbi5jb25kaXRpb247XG4gICAgfVxuICB9XG5cbiAgc2F2ZUNvbmRpdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNhdmVkLmVtaXQoe1xuICAgICAgY29ubmVjdGlvbklkOiB0aGlzLm5ld0Nvbm5lY3Rpb25JZCxcbiAgICAgIGNvbmRpdGlvbjogdGhpcy5jdXJyZW50Q29uZGl0aW9uLFxuICAgIH0pO1xuICB9XG5cbiAgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCJ2aXNpYmxlXCJcbiAgW3N0eWxlLnBvc2l0aW9uXT1cIidmaXhlZCdcIlxuICBbc3R5bGUubGVmdC5weF09XCJwb3B1cFhcIlxuICBbc3R5bGUudG9wLnB4XT1cInBvcHVwWVwiXG4+XG4gIDx2ZXJiZW4tcG9wLVVwIFtkcm9wZG93bk9wZW5dPVwidHJ1ZVwiIFtjdXN0b21TdHlsZXNdPVwieyAnei1pbmRleCc6ICcxMDAnIH1cIj5cbiAgICA8ZGl2IGRyb3Bkb3duLXRyaWdnZXIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+XG4gICAgICA8IS0tIEhpZGRlbiB0cmlnZ2VyIGVsZW1lbnQgLS0+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwLTQgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1wdXJwbGUtMzAwIHJvdW5kZWQgc2hhZG93LW1kIHctODBcIlxuICAgICAgZHJvcGRvd24tY29udGVudFxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbWItM1wiPlxuICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtXCI+RGVjaXNpb24gQ29uZGl0aW9uczwvaDM+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJ0ZXh0LWdyYXktNTAwIGhvdmVyOnRleHQtZ3JheS03MDBcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICB3aWR0aD1cIjE4XCJcbiAgICAgICAgICAgIGhlaWdodD1cIjE4XCJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxpbmUgeDE9XCIxOFwiIHkxPVwiNlwiIHgyPVwiNlwiIHkyPVwiMThcIj48L2xpbmU+XG4gICAgICAgICAgICA8bGluZSB4MT1cIjZcIiB5MT1cIjZcIiB4Mj1cIjE4XCIgeTI9XCIxOFwiPjwvbGluZT5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDBcIj5EZWZpbmUgYSBjb25kaXRpb24gZm9yIHRoaXMgYnJhbmNoLjwvcD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibWItNFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJibG9jayB0ZXh0LXNtIGZvbnQtbWVkaXVtIG1iLTFcIj5Db25kaXRpb248L2xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXJyZW50Q29uZGl0aW9uXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cImUuZy4sIG9yZGVyLmFtb3VudCA+IDUwMCwwMDBcIlxuICAgICAgICAgIGNsYXNzPVwidy1mdWxsIHB4LTMgcHktMiByb3VuZGVkIGJvcmRlciBib3JkZXItZ3JheS0yMDAgdGV4dC1zbVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNwYWNlLXktMyBtYXgtaC02MCBvdmVyZmxvdy15LWF1dG9cIlxuICAgICAgICAqbmdJZj1cImNvbm5lY3Rpb25Db25kaXRpb25zLmxlbmd0aCA+IDFcIlxuICAgICAgPlxuICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCI+RXhpc3RpbmcgQ29uZGl0aW9uczo8L2g0PlxuICAgICAgICBAZm9yIChjb25uIG9mIGNvbm5lY3Rpb25Db25kaXRpb25zOyB0cmFjayBjb25uLmNvbm5lY3Rpb25JZCkgeyBAaWZcbiAgICAgICAgKCFjb25uLmlzQWN0aXZlKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LW1lZGl1bVwiPnt7IGNvbm4udGFyZ2V0Tm9kZU5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJjb25uLmNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTm8gY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgcHgtMyBweS0yIHJvdW5kZWQgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBiZy1ncmF5LTUwIHRleHQtc21cIlxuICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIG10LTQgcHQtMyBib3JkZXItdCBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwicHgtNCBweS0yIG1yLTIgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkIHRleHQtc20gZm9udC1tZWRpdW1cIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlKClcIlxuICAgICAgICA+XG4gICAgICAgICAgQ2FuY2VsXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJweC00IHB5LTIgYmcteWVsbG93LTMwMCB0ZXh0LWJsYWNrIHJvdW5kZWQgdGV4dC1zbSBmb250LW1lZGl1bVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNhdmVDb25kaXRpb24oKVwiXG4gICAgICAgID5cbiAgICAgICAgICBTYXZlXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvdmVyYmVuLXBvcC1VcD5cbjwvZGl2PlxuIl19
@@ -0,0 +1,65 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../workflow-designer.state";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "verben-ng-ui";
6
+ export class DecisionPopupComponent {
7
+ state;
8
+ visible = false;
9
+ decisionNodeId = '';
10
+ popupX = 0;
11
+ popupY = 0;
12
+ closed = new EventEmitter();
13
+ showDuration = true;
14
+ constructor(state) {
15
+ this.state = state;
16
+ }
17
+ getConnectionConditions() {
18
+ if (!this.decisionNodeId)
19
+ return [];
20
+ // Get all connections from this decision node
21
+ return this.state.connections
22
+ .filter((conn) => conn.sourceNodeId === this.decisionNodeId)
23
+ .map((conn) => ({
24
+ connectionId: conn.id,
25
+ sourceNodeId: conn.sourceNodeId,
26
+ targetNodeId: conn.targetNodeId,
27
+ condition: conn.condition || 'order.amount > 500,000', // Default or actual condition
28
+ }));
29
+ }
30
+ getTargetNodeName(nodeId) {
31
+ const nodeInfo = this.state.findNodeById(nodeId);
32
+ if (nodeInfo && nodeInfo.node) {
33
+ return nodeInfo.node.stageData?.Name || 'Stage';
34
+ }
35
+ return 'Unknown Stage';
36
+ }
37
+ getDuration() {
38
+ // Get duration from the decision node or default to 120 days
39
+ const nodeInfo = this.state.findNodeById(this.decisionNodeId);
40
+ if (nodeInfo && nodeInfo.node && nodeInfo.node.stageData) {
41
+ return nodeInfo.node.stageData.Duration || 120;
42
+ }
43
+ return 120;
44
+ }
45
+ onClose() {
46
+ this.closed.emit();
47
+ }
48
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecisionPopupComponent, deps: [{ token: i1.WorkflowDesignerState }], target: i0.ɵɵFactoryTarget.Component });
49
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DecisionPopupComponent, selector: "lib-decision-popup", inputs: { visible: "visible", decisionNodeId: "decisionNodeId", popupX: "popupX", popupY: "popupY" }, outputs: { closed: "closed" }, ngImport: i0, template: "<div\n *ngIf=\"visible\"\n [style.position]=\"'absolute'\"\n [style.left.px]=\"popupX\"\n [style.top.px]=\"popupY\"\n class=\"decision-conditions-popup\"\n>\n <verben-pop-Up [dropdownOpen]=\"true\" [customStyles]=\"{ 'z-index': '100' }\">\n <div dropdown-trigger style=\"display: none\">\n <!-- Hidden trigger element -->\n </div>\n <div\n class=\"p-4 bg-white border border-purple-300 rounded shadow-md w-80\"\n dropdown-content\n >\n <div class=\"flex justify-between items-center mb-3\">\n <h3 class=\"text-lg font-medium\">Decision Conditions</h3>\n <button class=\"text-gray-500 hover:text-gray-700\" (click)=\"onClose()\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n\n <div class=\"space-y-3\">\n @for (condition of getConnectionConditions(); track\n condition.connectionId) {\n <div class=\"p-3 border rounded\">\n <div class=\"mb-2\">\n <span class=\"font-medium\">Action {{ $index + 1 }}:</span>\n </div>\n <div class=\"flex items-center\">\n <input\n type=\"text\"\n [value]=\"condition.condition\"\n readonly\n class=\"w-full px-3 py-2 bg-gray-50 border rounded\"\n placeholder=\"No condition\"\n />\n <span class=\"ml-2\">&gt;</span>\n </div>\n <div class=\"mt-1 text-xs text-gray-500\">\n {{ getTargetNodeName(condition.targetNodeId) }}\n </div>\n </div>\n }\n </div>\n\n @if (getConnectionConditions().length === 0) {\n <div class=\"text-center py-3 text-gray-500\">\n No conditions defined for this decision node\n </div>\n } @if (showDuration) {\n <div class=\"mt-4 pt-3 border-t border-gray-200\">\n <div class=\"flex items-center\">\n <span class=\"font-medium\">Duration:</span>\n <span class=\"ml-2\">{{ getDuration() }} days</span>\n </div>\n </div>\n }\n </div>\n </verben-pop-Up>\n</div>\n", styles: [".decision-conditions-popup{z-index:1000}.border-purple-300{border-color:#d8b4fe}.bg-gray-50{background-color:#f9fafb}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.VerbenPopUpComponent, selector: "verben-pop-Up", inputs: ["dropdownOpen", "dropdownWidth", "color", "customStyles", "popUpClass", "border", "borderRadius", "enableMouseLeave"], outputs: ["dropdownOpenChange", "close"] }] });
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecisionPopupComponent, decorators: [{
52
+ type: Component,
53
+ args: [{ selector: 'lib-decision-popup', template: "<div\n *ngIf=\"visible\"\n [style.position]=\"'absolute'\"\n [style.left.px]=\"popupX\"\n [style.top.px]=\"popupY\"\n class=\"decision-conditions-popup\"\n>\n <verben-pop-Up [dropdownOpen]=\"true\" [customStyles]=\"{ 'z-index': '100' }\">\n <div dropdown-trigger style=\"display: none\">\n <!-- Hidden trigger element -->\n </div>\n <div\n class=\"p-4 bg-white border border-purple-300 rounded shadow-md w-80\"\n dropdown-content\n >\n <div class=\"flex justify-between items-center mb-3\">\n <h3 class=\"text-lg font-medium\">Decision Conditions</h3>\n <button class=\"text-gray-500 hover:text-gray-700\" (click)=\"onClose()\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n\n <div class=\"space-y-3\">\n @for (condition of getConnectionConditions(); track\n condition.connectionId) {\n <div class=\"p-3 border rounded\">\n <div class=\"mb-2\">\n <span class=\"font-medium\">Action {{ $index + 1 }}:</span>\n </div>\n <div class=\"flex items-center\">\n <input\n type=\"text\"\n [value]=\"condition.condition\"\n readonly\n class=\"w-full px-3 py-2 bg-gray-50 border rounded\"\n placeholder=\"No condition\"\n />\n <span class=\"ml-2\">&gt;</span>\n </div>\n <div class=\"mt-1 text-xs text-gray-500\">\n {{ getTargetNodeName(condition.targetNodeId) }}\n </div>\n </div>\n }\n </div>\n\n @if (getConnectionConditions().length === 0) {\n <div class=\"text-center py-3 text-gray-500\">\n No conditions defined for this decision node\n </div>\n } @if (showDuration) {\n <div class=\"mt-4 pt-3 border-t border-gray-200\">\n <div class=\"flex items-center\">\n <span class=\"font-medium\">Duration:</span>\n <span class=\"ml-2\">{{ getDuration() }} days</span>\n </div>\n </div>\n }\n </div>\n </verben-pop-Up>\n</div>\n", styles: [".decision-conditions-popup{z-index:1000}.border-purple-300{border-color:#d8b4fe}.bg-gray-50{background-color:#f9fafb}\n"] }]
54
+ }], ctorParameters: () => [{ type: i1.WorkflowDesignerState }], propDecorators: { visible: [{
55
+ type: Input
56
+ }], decisionNodeId: [{
57
+ type: Input
58
+ }], popupX: [{
59
+ type: Input
60
+ }], popupY: [{
61
+ type: Input
62
+ }], closed: [{
63
+ type: Output
64
+ }] } });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaXNpb24tcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy93b3JrZmxvdy1kZXNpZ25lci9kZWNpc2lvbi1wb3B1cC9kZWNpc2lvbi1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL2RlY2lzaW9uLXBvcHVwL2RlY2lzaW9uLXBvcHVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBZXZFLE1BQU0sT0FBTyxzQkFBc0I7SUFTYjtJQVJYLE9BQU8sR0FBWSxLQUFLLENBQUM7SUFDekIsY0FBYyxHQUFXLEVBQUUsQ0FBQztJQUM1QixNQUFNLEdBQVcsQ0FBQyxDQUFDO0lBQ25CLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFDbEIsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFdEMsWUFBWSxHQUFZLElBQUksQ0FBQztJQUU3QixZQUFvQixLQUE0QjtRQUE1QixVQUFLLEdBQUwsS0FBSyxDQUF1QjtJQUFHLENBQUM7SUFFcEQsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXBDLDhDQUE4QztRQUM5QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVzthQUMxQixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQzthQUMzRCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDZCxZQUFZLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDckIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSx3QkFBd0IsRUFBRSw4QkFBOEI7U0FDdEYsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBYztRQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksT0FBTyxDQUFDO1FBQ2xELENBQUM7UUFDRCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVztRQUNULDZEQUE2RDtRQUM3RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUQsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3pELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQzt3R0E1Q1Usc0JBQXNCOzRGQUF0QixzQkFBc0IsK0xDZm5DLDgrRUEwRUE7OzRGRDNEYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0Usb0JBQW9COzBGQUtyQixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXb3JrZmxvd0Rlc2lnbmVyU3RhdGUgfSBmcm9tICcuLi93b3JrZmxvdy1kZXNpZ25lci5zdGF0ZSc7XG5cbmludGVyZmFjZSBDb25uZWN0aW9uQ29uZGl0aW9uIHtcbiAgY29ubmVjdGlvbklkOiBzdHJpbmc7XG4gIHNvdXJjZU5vZGVJZDogc3RyaW5nO1xuICB0YXJnZXROb2RlSWQ6IHN0cmluZztcbiAgY29uZGl0aW9uOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kZWNpc2lvbi1wb3B1cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZWNpc2lvbi1wb3B1cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kZWNpc2lvbi1wb3B1cC5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgRGVjaXNpb25Qb3B1cENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGVjaXNpb25Ob2RlSWQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwb3B1cFg6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHBvcHVwWTogbnVtYmVyID0gMDtcbiAgQE91dHB1dCgpIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBzaG93RHVyYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RhdGU6IFdvcmtmbG93RGVzaWduZXJTdGF0ZSkge31cblxuICBnZXRDb25uZWN0aW9uQ29uZGl0aW9ucygpOiBDb25uZWN0aW9uQ29uZGl0aW9uW10ge1xuICAgIGlmICghdGhpcy5kZWNpc2lvbk5vZGVJZCkgcmV0dXJuIFtdO1xuXG4gICAgLy8gR2V0IGFsbCBjb25uZWN0aW9ucyBmcm9tIHRoaXMgZGVjaXNpb24gbm9kZVxuICAgIHJldHVybiB0aGlzLnN0YXRlLmNvbm5lY3Rpb25zXG4gICAgICAuZmlsdGVyKChjb25uKSA9PiBjb25uLnNvdXJjZU5vZGVJZCA9PT0gdGhpcy5kZWNpc2lvbk5vZGVJZClcbiAgICAgIC5tYXAoKGNvbm4pID0+ICh7XG4gICAgICAgIGNvbm5lY3Rpb25JZDogY29ubi5pZCxcbiAgICAgICAgc291cmNlTm9kZUlkOiBjb25uLnNvdXJjZU5vZGVJZCxcbiAgICAgICAgdGFyZ2V0Tm9kZUlkOiBjb25uLnRhcmdldE5vZGVJZCxcbiAgICAgICAgY29uZGl0aW9uOiBjb25uLmNvbmRpdGlvbiB8fCAnb3JkZXIuYW1vdW50ID4gNTAwLDAwMCcsIC8vIERlZmF1bHQgb3IgYWN0dWFsIGNvbmRpdGlvblxuICAgICAgfSkpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0Tm9kZU5hbWUobm9kZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vZGVJbmZvID0gdGhpcy5zdGF0ZS5maW5kTm9kZUJ5SWQobm9kZUlkKTtcbiAgICBpZiAobm9kZUluZm8gJiYgbm9kZUluZm8ubm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGVJbmZvLm5vZGUuc3RhZ2VEYXRhPy5OYW1lIHx8ICdTdGFnZSc7XG4gICAgfVxuICAgIHJldHVybiAnVW5rbm93biBTdGFnZSc7XG4gIH1cblxuICBnZXREdXJhdGlvbigpOiBudW1iZXIge1xuICAgIC8vIEdldCBkdXJhdGlvbiBmcm9tIHRoZSBkZWNpc2lvbiBub2RlIG9yIGRlZmF1bHQgdG8gMTIwIGRheXNcbiAgICBjb25zdCBub2RlSW5mbyA9IHRoaXMuc3RhdGUuZmluZE5vZGVCeUlkKHRoaXMuZGVjaXNpb25Ob2RlSWQpO1xuICAgIGlmIChub2RlSW5mbyAmJiBub2RlSW5mby5ub2RlICYmIG5vZGVJbmZvLm5vZGUuc3RhZ2VEYXRhKSB7XG4gICAgICByZXR1cm4gbm9kZUluZm8ubm9kZS5zdGFnZURhdGEuRHVyYXRpb24gfHwgMTIwO1xuICAgIH1cbiAgICByZXR1cm4gMTIwO1xuICB9XG5cbiAgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCJ2aXNpYmxlXCJcbiAgW3N0eWxlLnBvc2l0aW9uXT1cIidhYnNvbHV0ZSdcIlxuICBbc3R5bGUubGVmdC5weF09XCJwb3B1cFhcIlxuICBbc3R5bGUudG9wLnB4XT1cInBvcHVwWVwiXG4gIGNsYXNzPVwiZGVjaXNpb24tY29uZGl0aW9ucy1wb3B1cFwiXG4+XG4gIDx2ZXJiZW4tcG9wLVVwIFtkcm9wZG93bk9wZW5dPVwidHJ1ZVwiIFtjdXN0b21TdHlsZXNdPVwieyAnei1pbmRleCc6ICcxMDAnIH1cIj5cbiAgICA8ZGl2IGRyb3Bkb3duLXRyaWdnZXIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+XG4gICAgICA8IS0tIEhpZGRlbiB0cmlnZ2VyIGVsZW1lbnQgLS0+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwLTQgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1wdXJwbGUtMzAwIHJvdW5kZWQgc2hhZG93LW1kIHctODBcIlxuICAgICAgZHJvcGRvd24tY29udGVudFxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbWItM1wiPlxuICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtXCI+RGVjaXNpb24gQ29uZGl0aW9uczwvaDM+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJ0ZXh0LWdyYXktNTAwIGhvdmVyOnRleHQtZ3JheS03MDBcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICB3aWR0aD1cIjE4XCJcbiAgICAgICAgICAgIGhlaWdodD1cIjE4XCJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxpbmUgeDE9XCIxOFwiIHkxPVwiNlwiIHgyPVwiNlwiIHkyPVwiMThcIj48L2xpbmU+XG4gICAgICAgICAgICA8bGluZSB4MT1cIjZcIiB5MT1cIjZcIiB4Mj1cIjE4XCIgeTI9XCIxOFwiPjwvbGluZT5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNwYWNlLXktM1wiPlxuICAgICAgICBAZm9yIChjb25kaXRpb24gb2YgZ2V0Q29ubmVjdGlvbkNvbmRpdGlvbnMoKTsgdHJhY2tcbiAgICAgICAgY29uZGl0aW9uLmNvbm5lY3Rpb25JZCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicC0zIGJvcmRlciByb3VuZGVkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW1cIj5BY3Rpb24ge3sgJGluZGV4ICsgMSB9fTo8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiY29uZGl0aW9uLmNvbmRpdGlvblwiXG4gICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIHB4LTMgcHktMiBiZy1ncmF5LTUwIGJvcmRlciByb3VuZGVkXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJObyBjb25kaXRpb25cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMlwiPiZndDs8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEgdGV4dC14cyB0ZXh0LWdyYXktNTAwXCI+XG4gICAgICAgICAgICB7eyBnZXRUYXJnZXROb2RlTmFtZShjb25kaXRpb24udGFyZ2V0Tm9kZUlkKSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAoZ2V0Q29ubmVjdGlvbkNvbmRpdGlvbnMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweS0zIHRleHQtZ3JheS01MDBcIj5cbiAgICAgICAgTm8gY29uZGl0aW9ucyBkZWZpbmVkIGZvciB0aGlzIGRlY2lzaW9uIG5vZGVcbiAgICAgIDwvZGl2PlxuICAgICAgfSBAaWYgKHNob3dEdXJhdGlvbikge1xuICAgICAgPGRpdiBjbGFzcz1cIm10LTQgcHQtMyBib3JkZXItdCBib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LW1lZGl1bVwiPkR1cmF0aW9uOjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTJcIj57eyBnZXREdXJhdGlvbigpIH19IGRheXM8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvdmVyYmVuLXBvcC1VcD5cbjwvZGl2PlxuIl19