nuxeo-development-framework 4.1.1 → 4.1.2

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 (83) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +724 -343
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/diagrams/components/circle-node/circle-node.component.js +6 -7
  4. package/esm2015/lib/components/diagrams/components/connection-label.component.js +92 -0
  5. package/esm2015/lib/components/diagrams/components/content-node/content-node.component.js +7 -8
  6. package/esm2015/lib/components/diagrams/components/custom-connection.component.js +68 -32
  7. package/esm2015/lib/components/diagrams/components/custom-socket.component.js +22 -19
  8. package/esm2015/lib/components/diagrams/components/gateway-node/gateway-node.component.js +18 -0
  9. package/esm2015/lib/components/diagrams/components/gateway-ports.component.js +118 -0
  10. package/esm2015/lib/components/diagrams/components/index.js +5 -1
  11. package/esm2015/lib/components/diagrams/components/node-inputs.component.js +34 -35
  12. package/esm2015/lib/components/diagrams/components/node-outputs.component.js +30 -31
  13. package/esm2015/lib/components/diagrams/components/node-ports.component.js +98 -0
  14. package/esm2015/lib/components/diagrams/components/remove-button.component.js +46 -43
  15. package/esm2015/lib/components/diagrams/components/template-node/template-node.component.js +6 -7
  16. package/esm2015/lib/components/diagrams/constants/node-type.js +2 -1
  17. package/esm2015/lib/components/diagrams/constants/sizes.js +2 -1
  18. package/esm2015/lib/components/diagrams/constants/status.js +4 -1
  19. package/esm2015/lib/components/diagrams/diagrams.module.js +14 -6
  20. package/esm2015/lib/components/diagrams/directive/diagram.directive.js +9 -6
  21. package/esm2015/lib/components/diagrams/editor/customize.js +16 -12
  22. package/esm2015/lib/components/diagrams/editor/editor.js +21 -19
  23. package/esm2015/lib/components/diagrams/editor/overrides/connection-path.transformers.js +32 -7
  24. package/esm2015/lib/components/diagrams/editor/path-plugin.js +10 -9
  25. package/esm2015/lib/components/diagrams/models/base-node.model.js +3 -2
  26. package/esm2015/lib/components/diagrams/models/connection.model.js +11 -4
  27. package/esm2015/lib/components/diagrams/models/gate-way.model.js +11 -0
  28. package/esm2015/lib/components/diagrams/models/index.js +2 -1
  29. package/esm2015/lib/components/diagrams/models/ports.model.js +14 -0
  30. package/esm2015/lib/components/diagrams/models/socket.model.js +5 -4
  31. package/esm2015/lib/components/diagrams/services/diagram.service.js +77 -29
  32. package/esm2015/lib/components/diagrams/services/workflow.service.js +14 -19
  33. package/esm2015/lib/components/diagrams/types/common.type.js +1 -1
  34. package/esm2015/lib/components/diagrams/types/connection-config.type.js +2 -0
  35. package/esm2015/lib/components/diagrams/types/connection-label.type.js +2 -0
  36. package/esm2015/lib/components/diagrams/types/diagram-config.type.js +1 -1
  37. package/esm2015/lib/components/diagrams/types/diagram-editor.type.js +1 -1
  38. package/esm2015/lib/components/diagrams/types/index.js +6 -2
  39. package/esm2015/lib/components/diagrams/types/node-definition.js +1 -1
  40. package/esm2015/lib/components/diagrams/types/path.type.js +1 -1
  41. package/esm2015/lib/components/diagrams/types/ports-config.type.js +2 -0
  42. package/esm2015/lib/components/diagrams/types/socket.type.js +2 -0
  43. package/esm2015/lib/components/diagrams/utilities/common.js +35 -0
  44. package/esm2015/lib/components/diagrams/utilities/index.js +3 -1
  45. package/esm2015/lib/components/diagrams/utilities/random.js +11 -0
  46. package/esm2015/lib/components/diagrams/utilities/remove.util.js +2 -2
  47. package/fesm2015/nuxeo-development-framework.js +921 -408
  48. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  49. package/lib/components/diagrams/components/base-node.component.d.ts +1 -0
  50. package/lib/components/diagrams/components/connection-label.component.d.ts +19 -0
  51. package/lib/components/diagrams/components/custom-connection.component.d.ts +5 -0
  52. package/lib/components/diagrams/components/gateway-node/gateway-node.component.d.ts +6 -0
  53. package/lib/components/diagrams/components/gateway-ports.component.d.ts +12 -0
  54. package/lib/components/diagrams/components/index.d.ts +4 -0
  55. package/lib/components/diagrams/components/node-ports.component.d.ts +13 -0
  56. package/lib/components/diagrams/constants/node-type.d.ts +1 -0
  57. package/lib/components/diagrams/constants/sizes.d.ts +1 -0
  58. package/lib/components/diagrams/constants/status.d.ts +3 -0
  59. package/lib/components/diagrams/diagrams.module.d.ts +12 -8
  60. package/lib/components/diagrams/editor/overrides/connection-path.transformers.d.ts +2 -7
  61. package/lib/components/diagrams/models/base-node.model.d.ts +3 -2
  62. package/lib/components/diagrams/models/connection.model.d.ts +9 -1
  63. package/lib/components/diagrams/models/gate-way.model.d.ts +8 -0
  64. package/lib/components/diagrams/models/index.d.ts +1 -0
  65. package/lib/components/diagrams/models/ports.model.d.ts +11 -0
  66. package/lib/components/diagrams/models/socket.model.d.ts +3 -1
  67. package/lib/components/diagrams/services/diagram.service.d.ts +20 -9
  68. package/lib/components/diagrams/services/workflow.service.d.ts +0 -1
  69. package/lib/components/diagrams/types/common.type.d.ts +5 -0
  70. package/lib/components/diagrams/types/connection-config.type.d.ts +11 -0
  71. package/lib/components/diagrams/types/connection-label.type.d.ts +4 -0
  72. package/lib/components/diagrams/types/diagram-config.type.d.ts +6 -0
  73. package/lib/components/diagrams/types/diagram-editor.type.d.ts +3 -2
  74. package/lib/components/diagrams/types/index.d.ts +5 -1
  75. package/lib/components/diagrams/types/node-definition.d.ts +1 -0
  76. package/lib/components/diagrams/types/path.type.d.ts +1 -0
  77. package/lib/components/diagrams/types/ports-config.type.d.ts +11 -0
  78. package/lib/components/diagrams/types/socket.type.d.ts +5 -0
  79. package/lib/components/diagrams/utilities/common.d.ts +19 -0
  80. package/lib/components/diagrams/utilities/index.d.ts +2 -0
  81. package/lib/components/diagrams/utilities/random.d.ts +1 -0
  82. package/lib/components/diagrams/utilities/remove.util.d.ts +1 -1
  83. package/package.json +1 -1
@@ -0,0 +1,35 @@
1
+ export class DiagramUtils {
2
+ static createInputId(id, type = 'primary') {
3
+ return `${id}-${type}-input`;
4
+ }
5
+ static createOutputId(id, type = 'primary') {
6
+ return `${id}-${type}-output`;
7
+ }
8
+ static createInputClass(type = 'primary') {
9
+ return `input-${type}-port`;
10
+ }
11
+ static createOutputClass(type = 'primary') {
12
+ return `output-${type}-port`;
13
+ }
14
+ static createOutputsConfig(id, types) {
15
+ return types.map((type) => {
16
+ return {
17
+ id: DiagramUtils.createOutputId(id, type),
18
+ config: {
19
+ styleClass: DiagramUtils.createOutputClass(type)
20
+ }
21
+ };
22
+ });
23
+ }
24
+ static createInputsConfig(id, types) {
25
+ return types.map((type) => {
26
+ return {
27
+ id: DiagramUtils.createInputId(id, type),
28
+ config: {
29
+ styleClass: DiagramUtils.createInputClass(type)
30
+ }
31
+ };
32
+ });
33
+ }
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9kaWFncmFtcy91dGlsaXRpZXMvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxZQUFZO0lBRXhCLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBVSxFQUFFLE9BQWlCLFNBQVM7UUFDMUQsT0FBTyxHQUFHLEVBQUUsSUFBSSxJQUFJLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFVLEVBQUUsT0FBaUIsU0FBUztRQUMzRCxPQUFPLEdBQUcsRUFBRSxJQUFJLElBQUksU0FBUyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBaUIsU0FBUztRQUNqRCxPQUFPLFNBQVMsSUFBSSxPQUFPLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFpQixTQUFTO1FBQ2xELE9BQU8sVUFBVSxJQUFJLE9BQU8sQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEVBQVUsRUFBRSxLQUFpQjtRQUN2RCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN6QixPQUFPO2dCQUNOLEVBQUUsRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUM7Z0JBQ3pDLE1BQU0sRUFBRTtvQkFDUCxVQUFVLEVBQUUsWUFBWSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQztpQkFDaEQ7YUFDRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEVBQVUsRUFBRSxLQUFpQjtRQUN0RCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN6QixPQUFPO2dCQUNOLEVBQUUsRUFBRSxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUM7Z0JBQ3hDLE1BQU0sRUFBRTtvQkFDUCxVQUFVLEVBQUUsWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztpQkFDL0M7YUFDRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3J0VHlwZSB9IGZyb20gJy4uL3R5cGVzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBEaWFncmFtVXRpbHMge1xyXG5cclxuXHRzdGF0aWMgY3JlYXRlSW5wdXRJZChpZDogc3RyaW5nLCB0eXBlOiBQb3J0VHlwZSA9ICdwcmltYXJ5Jykge1xyXG5cdFx0cmV0dXJuIGAke2lkfS0ke3R5cGV9LWlucHV0YDtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBjcmVhdGVPdXRwdXRJZChpZDogc3RyaW5nLCB0eXBlOiBQb3J0VHlwZSA9ICdwcmltYXJ5Jykge1xyXG5cdFx0cmV0dXJuIGAke2lkfS0ke3R5cGV9LW91dHB1dGA7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgY3JlYXRlSW5wdXRDbGFzcyh0eXBlOiBQb3J0VHlwZSA9ICdwcmltYXJ5Jykge1xyXG5cdFx0cmV0dXJuIGBpbnB1dC0ke3R5cGV9LXBvcnRgO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGNyZWF0ZU91dHB1dENsYXNzKHR5cGU6IFBvcnRUeXBlID0gJ3ByaW1hcnknKSB7XHJcblx0XHRyZXR1cm4gYG91dHB1dC0ke3R5cGV9LXBvcnRgO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGNyZWF0ZU91dHB1dHNDb25maWcoaWQ6IHN0cmluZywgdHlwZXM6IFBvcnRUeXBlW10pIHtcclxuXHRcdHJldHVybiB0eXBlcy5tYXAoKHR5cGUpID0+IHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRpZDogRGlhZ3JhbVV0aWxzLmNyZWF0ZU91dHB1dElkKGlkLCB0eXBlKSxcclxuXHRcdFx0XHRjb25maWc6IHtcclxuXHRcdFx0XHRcdHN0eWxlQ2xhc3M6IERpYWdyYW1VdGlscy5jcmVhdGVPdXRwdXRDbGFzcyh0eXBlKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGNyZWF0ZUlucHV0c0NvbmZpZyhpZDogc3RyaW5nLCB0eXBlczogUG9ydFR5cGVbXSkge1xyXG5cdFx0cmV0dXJuIHR5cGVzLm1hcCgodHlwZSkgPT4ge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdGlkOiBEaWFncmFtVXRpbHMuY3JlYXRlSW5wdXRJZChpZCwgdHlwZSksXHJcblx0XHRcdFx0Y29uZmlnOiB7XHJcblx0XHRcdFx0XHRzdHlsZUNsYXNzOiBEaWFncmFtVXRpbHMuY3JlYXRlSW5wdXRDbGFzcyh0eXBlKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fTtcclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -1,3 +1,5 @@
1
+ export * from './common';
2
+ export * from './random';
1
3
  export * from './remove.util';
2
4
  export * from './serialize';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2RpYWdyYW1zL3V0aWxpdGllcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcmVtb3ZlLnV0aWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcmlhbGl6ZSc7XHJcbiJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2RpYWdyYW1zL3V0aWxpdGllcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tbW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9yYW5kb20nO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlbW92ZS51dGlsJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJpYWxpemUnO1xyXG4iXX0=
@@ -0,0 +1,11 @@
1
+ export function getRandomNumber(x, y, step = 1, min = 0, max = 1000) {
2
+ // Create a deterministic seed based on x and y
3
+ const seed = Math.abs(x * 31 + y * 17) % 100000;
4
+ // Generate a pseudo-random number based on the seed
5
+ const seededRandom = ((seed * 9301 + 49297) % 233280) / 233280;
6
+ // Calculate range
7
+ const range = Math.floor((max - min) / step) + 1;
8
+ // Return the adjusted number
9
+ return min + Math.floor(seededRandom * range) * step;
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9kaWFncmFtcy91dGlsaXRpZXMvcmFuZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxlQUFlLENBQzlCLENBQVMsRUFDVCxDQUFTLEVBQ1QsSUFBSSxHQUFHLENBQUMsRUFDUixHQUFHLEdBQUcsQ0FBQyxFQUNQLEdBQUcsR0FBRyxJQUFJO0lBRVYsK0NBQStDO0lBQy9DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBRWhELG9EQUFvRDtJQUNwRCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7SUFFL0Qsa0JBQWtCO0lBQ2xCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWpELDZCQUE2QjtJQUM3QixPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRSYW5kb21OdW1iZXIoXHJcblx0eDogbnVtYmVyLFxyXG5cdHk6IG51bWJlcixcclxuXHRzdGVwID0gMSxcclxuXHRtaW4gPSAwLFxyXG5cdG1heCA9IDEwMDBcclxuKSB7XHJcblx0Ly8gQ3JlYXRlIGEgZGV0ZXJtaW5pc3RpYyBzZWVkIGJhc2VkIG9uIHggYW5kIHlcclxuXHRjb25zdCBzZWVkID0gTWF0aC5hYnMoeCAqIDMxICsgeSAqIDE3KSAlIDEwMDAwMDtcclxuXHJcblx0Ly8gR2VuZXJhdGUgYSBwc2V1ZG8tcmFuZG9tIG51bWJlciBiYXNlZCBvbiB0aGUgc2VlZFxyXG5cdGNvbnN0IHNlZWRlZFJhbmRvbSA9ICgoc2VlZCAqIDkzMDEgKyA0OTI5NykgJSAyMzMyODApIC8gMjMzMjgwO1xyXG5cclxuXHQvLyBDYWxjdWxhdGUgcmFuZ2VcclxuXHRjb25zdCByYW5nZSA9IE1hdGguZmxvb3IoKG1heCAtIG1pbikgLyBzdGVwKSArIDE7XHJcblxyXG5cdC8vIFJldHVybiB0aGUgYWRqdXN0ZWQgbnVtYmVyXHJcblx0cmV0dXJuIG1pbiArIE1hdGguZmxvb3Ioc2VlZGVkUmFuZG9tICogcmFuZ2UpICogc3RlcDtcclxufVxyXG4iXX0=
@@ -89,7 +89,7 @@ const _updateConnections = (outputs, inputs, editor) => __awaiter(void 0, void 0
89
89
  if (!sourceNode || !targetNode) {
90
90
  return;
91
91
  }
92
- const connection = new Connection(sourceNode, `${sourceNode.id}-output`, targetNode, `${targetNode.id}-input`);
92
+ const connection = new Connection(sourceNode, targetNode);
93
93
  yield editor.addConnection(connection);
94
94
  });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2RpYWdyYW1zL3V0aWxpdGllcy9yZW1vdmUudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQWlCLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUd0RDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQ3hCLElBQXdCLEVBQ3hCLE1BQTJCLEVBQzNCLEVBQUU7SUFDRixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvQixPQUFPO0tBQ1I7SUFDRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFekMsSUFBSSxDQUFDLElBQUksRUFBRTtRQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvQixPQUFPO0tBQ1I7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNyRCxPQUFPO0tBQ1I7SUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBRS9CLE9BQU8sQ0FBQSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsUUFBUTtRQUN6QixDQUFDLENBQUMsTUFBTSwrQkFBK0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1FB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QixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUM5QixPQUFPO0tBQ1I7SUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FDL0IsVUFBVSxFQUNWLEdBQUcsVUFBVSxDQUFDLEVBQUUsU0FBUyxFQUN6QixVQUFVLEVBQ1YsR0FBRyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQ3pCLENBQUM7SUFFRixNQUFNLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlRWRpdG9yIH0gZnJvbSAncmV0ZSc7XHJcbmltcG9ydCB7IE5PREVfVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEJhc2VOb2RlQ2xhc3MsIENvbm5lY3Rpb24gfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTY2hlbWVzIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5cclxuLyoqXHJcbiAqXHJcbiAqIEBwYXJhbSBub2RlXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgcmVtb3ZlTm9kZSA9IGFzeW5jIChcclxuICBkYXRhOiB7IG5vZGVJZDogc3RyaW5nIH0sXHJcbiAgZWRpdG9yOiBOb2RlRWRpdG9yPFNjaGVtZXM+XHJcbikgPT4ge1xyXG4gIGlmICghZGF0YSB8fCAhZWRpdG9yKSB7XHJcbiAgICBjb25zb2xlLmxvZygnTm9kZSBub3QgZm91bmQuJyk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGNvbnN0IG5vZGVzID0gZWRpdG9yLmdldE5vZGVzKCk7XHJcbiAgY29uc3Qgbm9kZSA9IGVkaXRvci5nZXROb2RlKGRhdGEubm9kZUlkKTtcclxuXHJcbiAgaWYgKCFub2RlKSB7XHJcbiAgICBjb25zb2xlLmxvZygnTm9kZSBub3QgZm91bmQuJyk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAobm9kZS50eXBlID09PSBOT0RFX1RZUEUuc3RhcnQgJiYgbm9kZXMubGVuZ3RoID4gMSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgbm9kZUNvbmZpZyA9IG5vZGUuY29uZmlnO1xyXG5cclxuICByZXR1cm4gbm9kZUNvbmZpZz8uaXNMaW5rZWRcclxuICAgID8gYXdhaXQgcmVtb3ZlTm9kZUFuZFJlcGxhY2VDb25uZWN0aW9ucyhub2RlLCBlZGl0b3IpXHJcbiAgICA6IGF3YWl0IHJlbW92ZU5vZGVBbmRDb25uZWN0aW9ucyhub2RlLCBlZGl0b3IpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqXHJcbiAqIEBwYXJhbSBub2RlXHJcbiAqIEBwYXJhbSBlZGl0b3JcclxuICovXHJcbmV4cG9ydCBjb25zdCByZW1vdmVOb2RlQW5kQ29ubmVjdGlvbnMgPSBhc3luYyAoXHJcbiAgbm9kZTogQmFzZU5vZGVDbGFzcyxcclxuICBlZGl0b3I6IE5vZGVFZGl0b3I8U2NoZW1lcz5cclxuKSA9PiB7XHJcbiAgcmVtb3ZlQ29ubmVjdGlvbnMobm9kZSwgZWRpdG9yKTtcclxuICBhd2FpdCBlZGl0b3IucmVtb3ZlTm9kZShub2RlLmlkKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0gbm9kZVxyXG4gKiBAcGFyYW0gZWRpdG9yXHJcbiAqL1xyXG5jb25zdCByZW1vdmVOb2RlQW5kUmVwbGFjZUNvbm5lY3Rpb25zID0gYXN5bmMgKFxyXG4gIG5vZGU6IEJhc2VOb2RlQ2xhc3MsXHJcbiAgZWRpdG9yOiBOb2RlRWRpdG9yPFNjaGVtZXM+XHJcbikgPT4ge1xyXG4gIGNvbnN0IG91dHB1dHMgPSBnZXRDb25uZWN0aW9ucyhcclxuICAgIGVkaXRvcixcclxuICAgIChjb25uZWN0aW9uKSA9PiBjb25uZWN0aW9uLnNvdXJjZSA9PSBub2RlLmlkXHJcbiAgKTtcclxuICBjb25zdCBpbnB1dHMgPSBnZXRDb25uZWN0aW9ucyhcclxuICAgIGVkaXRvcixcclxuICAgIChjb25uZWN0aW9uKSA9PiBjb25uZWN0aW9uLnRhcmdldCA9PSBub2RlLmlkXHJcbiAgKTtcclxuXHJcbiAgaWYgKCEhaW5wdXRzLmxlbmd0aCAmJiAhIW91dHB1dHMubGVuZ3RoKSB7XHJcbiAgICBhd2FpdCBfdXBkYXRlQ29ubmVjdGlvbnMob3V0cHV0cywgaW5wdXRzLCBlZGl0b3IpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZW1vdmVDb25uZWN0aW9ucyhub2RlLCBlZGl0b3IpO1xyXG4gIH1cclxuXHJcbiAgYXdhaXQgZWRpdG9yLnJlbW92ZU5vZGUobm9kZS5pZCk7XHJcbn07XHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0gbm9kZVxyXG4gKiBAcGFyYW0gZWRpdG9yXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgcmVtb3ZlQ29ubmVjdGlvbnMgPSAoXHJcbiAgbm9kZTogQmFzZU5vZGVDbGFzcyxcclxuICBlZGl0b3I6IE5vZGVFZGl0b3I8U2NoZW1lcz5cclxuKSA9PiB7XHJcbiAgY29uc3QgY29ubmVjdGlvbnMgPSBnZXRDb25uZWN0aW9ucyhcclxuICAgIGVkaXRvcixcclxuICAgIChjb25uZWN0aW9uKSA9PlxyXG4gICAgICBjb25uZWN0aW9uLnNvdXJjZSA9PT0gbm9kZS5pZCB8fCBjb25uZWN0aW9uLnRhcmdldCA9PT0gbm9kZS5pZFxyXG4gICk7XHJcblxyXG4gIGlmIChjb25uZWN0aW9ucy5sZW5ndGgpIHtcclxuICAgIGNvbm5lY3Rpb25zLmZvckVhY2goKGNvbm5lY3Rpb24pID0+IHtcclxuICAgICAgZWRpdG9yLnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbi5pZCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn07XHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0gZWRpdG9yXHJcbiAqIEBwYXJhbSBwcmVkaWNhdGVcclxuICogQHJldHVybnNcclxuICovXHJcbmV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9ucyA9IChcclxuICBlZGl0b3I6IE5vZGVFZGl0b3I8U2NoZW1lcz4sXHJcbiAgcHJlZGljYXRlOiAoY29ubmVjdGlvbjogQ29ubmVjdGlvbikgPT4gYm9vbGVhblxyXG4pID0+IHtcclxuICByZXR1cm4gZWRpdG9yLmdldENvbm5lY3Rpb25zKCkuZmlsdGVyKHByZWRpY2F0ZSk7XHJcbn07XHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0gb3V0cHV0c1xyXG4gKiBAcGFyYW0gaW5wdXRzXHJcbiAqIEBwYXJhbSBlZGl0b3JcclxuICovXHJcbmNvbnN0IF91cGRhdGVDb25uZWN0aW9ucyA9IGFzeW5jIChcclxuICBvdXRwdXRzOiBDb25uZWN0aW9uW10sXHJcbiAgaW5wdXRzOiBDb25uZWN0aW9uW10sXHJcbiAgZWRpdG9yOiBOb2RlRWRpdG9yPFNjaGVtZXM+XHJcbikgPT4ge1xyXG4gIGNvbnN0IHNvdXJjZSA9IGlucHV0c1swXS5zb3VyY2U7XHJcbiAgY29uc3QgdGFyZ2V0ID0gb3V0cHV0c1swXS50YXJnZXQ7XHJcblxyXG4gIGNvbnN0IHNvdXJjZU5vZGUgPSBlZGl0b3IuZ2V0Tm9kZShzb3VyY2UpIGFzIEJhc2VOb2RlQ2xhc3M7XHJcbiAgY29uc3QgdGFyZ2V0Tm9kZSA9IGVkaXRvci5nZXROb2RlKHRhcmdldCkgYXMgQmFzZU5vZGVDbGFzcztcclxuXHJcbiAgWy4uLm91dHB1dHMsIC4uLmlucHV0c10uZm9yRWFjaChhc3luYyAoY29ubmVjdGlvbikgPT4ge1xyXG4gICAgYXdhaXQgZWRpdG9yLnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbi5pZCk7XHJcbiAgfSk7XHJcblxyXG4gIGlmICghc291cmNlTm9kZSB8fCAhdGFyZ2V0Tm9kZSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBjb25zdCBjb25uZWN0aW9uID0gbmV3IENvbm5lY3Rpb24oXHJcbiAgICBzb3VyY2VOb2RlLFxyXG4gICAgYCR7c291cmNlTm9kZS5pZH0tb3V0cHV0YCxcclxuICAgIHRhcmdldE5vZGUsXHJcbiAgICBgJHt0YXJnZXROb2RlLmlkfS1pbnB1dGBcclxuICApO1xyXG5cclxuICBhd2FpdCBlZGl0b3IuYWRkQ29ubmVjdGlvbihjb25uZWN0aW9uKTtcclxufTtcclxuIl19
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2RpYWdyYW1zL3V0aWxpdGllcy9yZW1vdmUudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQWlCLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUd0RDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQ3hCLElBQXdCLEVBQ3hCLE1BQTJCLEVBQzNCLEVBQUU7SUFDRixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvQixPQUFPO0tBQ1I7SUFDRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFekMsSUFBSSxDQUFDLElBQUksRUFBRTtRQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvQixPQUFPO0tBQ1I7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNyRCxPQUFPO0tBQ1I7SUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBRS9CLE9BQU8sQ0FBQSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsUUFBUTtRQUN6QixDQUFDLENBQUMsTUFBTSwrQkFBK0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1FB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QixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUM5QixPQUFPO0tBQ1I7SUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FDL0IsVUFBVSxFQUNWLFVBQVUsQ0FDWCxDQUFDO0lBRUYsTUFBTSxNQUFNLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3pDLENBQUMsQ0FBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZUVkaXRvciB9IGZyb20gJ3JldGUnO1xyXG5pbXBvcnQgeyBOT0RFX1RZUEUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBCYXNlTm9kZUNsYXNzLCBDb25uZWN0aW9uIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgU2NoZW1lcyB9IGZyb20gJy4uL3R5cGVzJztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0gbm9kZVxyXG4gKiBAcmV0dXJuc1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHJlbW92ZU5vZGUgPSBhc3luYyAoXHJcbiAgZGF0YTogeyBub2RlSWQ6IHN0cmluZyB9LFxyXG4gIGVkaXRvcjogTm9kZUVkaXRvcjxTY2hlbWVzPlxyXG4pID0+IHtcclxuICBpZiAoIWRhdGEgfHwgIWVkaXRvcikge1xyXG4gICAgY29uc29sZS5sb2coJ05vZGUgbm90IGZvdW5kLicpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBjb25zdCBub2RlcyA9IGVkaXRvci5nZXROb2RlcygpO1xyXG4gIGNvbnN0IG5vZGUgPSBlZGl0b3IuZ2V0Tm9kZShkYXRhLm5vZGVJZCk7XHJcblxyXG4gIGlmICghbm9kZSkge1xyXG4gICAgY29uc29sZS5sb2coJ05vZGUgbm90IGZvdW5kLicpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaWYgKG5vZGUudHlwZSA9PT0gTk9ERV9UWVBFLnN0YXJ0ICYmIG5vZGVzLmxlbmd0aCA+IDEpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGNvbnN0IG5vZGVDb25maWcgPSBub2RlLmNvbmZpZztcclxuXHJcbiAgcmV0dXJuIG5vZGVDb25maWc/LmlzTGlua2VkXHJcbiAgICA/IGF3YWl0IHJlbW92ZU5vZGVBbmRSZXBsYWNlQ29ubmVjdGlvbnMobm9kZSwgZWRpdG9yKVxyXG4gICAgOiBhd2FpdCByZW1vdmVOb2RlQW5kQ29ubmVjdGlvbnMobm9kZSwgZWRpdG9yKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0gbm9kZVxyXG4gKiBAcGFyYW0gZWRpdG9yXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgcmVtb3ZlTm9kZUFuZENvbm5lY3Rpb25zID0gYXN5bmMgKFxyXG4gIG5vZGU6IEJhc2VOb2RlQ2xhc3MsXHJcbiAgZWRpdG9yOiBOb2RlRWRpdG9yPFNjaGVtZXM+XHJcbikgPT4ge1xyXG4gIHJlbW92ZUNvbm5lY3Rpb25zKG5vZGUsIGVkaXRvcik7XHJcbiAgYXdhaXQgZWRpdG9yLnJlbW92ZU5vZGUobm9kZS5pZCk7XHJcbn07XHJcblxyXG4vKipcclxuICpcclxuICogQHBhcmFtIG5vZGVcclxuICogQHBhcmFtIGVkaXRvclxyXG4gKi9cclxuY29uc3QgcmVtb3ZlTm9kZUFuZFJlcGxhY2VDb25uZWN0aW9ucyA9IGFzeW5jIChcclxuICBub2RlOiBCYXNlTm9kZUNsYXNzLFxyXG4gIGVkaXRvcjogTm9kZUVkaXRvcjxTY2hlbWVzPlxyXG4pID0+IHtcclxuICBjb25zdCBvdXRwdXRzID0gZ2V0Q29ubmVjdGlvbnMoXHJcbiAgICBlZGl0b3IsXHJcbiAgICAoY29ubmVjdGlvbikgPT4gY29ubmVjdGlvbi5zb3VyY2UgPT0gbm9kZS5pZFxyXG4gICk7XHJcbiAgY29uc3QgaW5wdXRzID0gZ2V0Q29ubmVjdGlvbnMoXHJcbiAgICBlZGl0b3IsXHJcbiAgICAoY29ubmVjdGlvbikgPT4gY29ubmVjdGlvbi50YXJnZXQgPT0gbm9kZS5pZFxyXG4gICk7XHJcblxyXG4gIGlmICghIWlucHV0cy5sZW5ndGggJiYgISFvdXRwdXRzLmxlbmd0aCkge1xyXG4gICAgYXdhaXQgX3VwZGF0ZUNvbm5lY3Rpb25zKG91dHB1dHMsIGlucHV0cywgZWRpdG9yKTtcclxuICB9IGVsc2Uge1xyXG4gICAgcmVtb3ZlQ29ubmVjdGlvbnMobm9kZSwgZWRpdG9yKTtcclxuICB9XHJcblxyXG4gIGF3YWl0IGVkaXRvci5yZW1vdmVOb2RlKG5vZGUuaWQpO1xyXG59O1xyXG4vKipcclxuICpcclxuICogQHBhcmFtIG5vZGVcclxuICogQHBhcmFtIGVkaXRvclxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHJlbW92ZUNvbm5lY3Rpb25zID0gKFxyXG4gIG5vZGU6IEJhc2VOb2RlQ2xhc3MsXHJcbiAgZWRpdG9yOiBOb2RlRWRpdG9yPFNjaGVtZXM+XHJcbikgPT4ge1xyXG4gIGNvbnN0IGNvbm5lY3Rpb25zID0gZ2V0Q29ubmVjdGlvbnMoXHJcbiAgICBlZGl0b3IsXHJcbiAgICAoY29ubmVjdGlvbikgPT5cclxuICAgICAgY29ubmVjdGlvbi5zb3VyY2UgPT09IG5vZGUuaWQgfHwgY29ubmVjdGlvbi50YXJnZXQgPT09IG5vZGUuaWRcclxuICApO1xyXG5cclxuICBpZiAoY29ubmVjdGlvbnMubGVuZ3RoKSB7XHJcbiAgICBjb25uZWN0aW9ucy5mb3JFYWNoKChjb25uZWN0aW9uKSA9PiB7XHJcbiAgICAgIGVkaXRvci5yZW1vdmVDb25uZWN0aW9uKGNvbm5lY3Rpb24uaWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59O1xyXG4vKipcclxuICpcclxuICogQHBhcmFtIGVkaXRvclxyXG4gKiBAcGFyYW0gcHJlZGljYXRlXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvbnMgPSAoXHJcbiAgZWRpdG9yOiBOb2RlRWRpdG9yPFNjaGVtZXM+LFxyXG4gIHByZWRpY2F0ZTogKGNvbm5lY3Rpb246IENvbm5lY3Rpb24pID0+IGJvb2xlYW5cclxuKSA9PiB7XHJcbiAgcmV0dXJuIGVkaXRvci5nZXRDb25uZWN0aW9ucygpLmZpbHRlcihwcmVkaWNhdGUpO1xyXG59O1xyXG4vKipcclxuICpcclxuICogQHBhcmFtIG91dHB1dHNcclxuICogQHBhcmFtIGlucHV0c1xyXG4gKiBAcGFyYW0gZWRpdG9yXHJcbiAqL1xyXG5jb25zdCBfdXBkYXRlQ29ubmVjdGlvbnMgPSBhc3luYyAoXHJcbiAgb3V0cHV0czogQ29ubmVjdGlvbltdLFxyXG4gIGlucHV0czogQ29ubmVjdGlvbltdLFxyXG4gIGVkaXRvcjogTm9kZUVkaXRvcjxTY2hlbWVzPlxyXG4pID0+IHtcclxuICBjb25zdCBzb3VyY2UgPSBpbnB1dHNbMF0uc291cmNlO1xyXG4gIGNvbnN0IHRhcmdldCA9IG91dHB1dHNbMF0udGFyZ2V0O1xyXG5cclxuICBjb25zdCBzb3VyY2VOb2RlID0gZWRpdG9yLmdldE5vZGUoc291cmNlKSBhcyBCYXNlTm9kZUNsYXNzO1xyXG4gIGNvbnN0IHRhcmdldE5vZGUgPSBlZGl0b3IuZ2V0Tm9kZSh0YXJnZXQpIGFzIEJhc2VOb2RlQ2xhc3M7XHJcblxyXG4gIFsuLi5vdXRwdXRzLCAuLi5pbnB1dHNdLmZvckVhY2goYXN5bmMgKGNvbm5lY3Rpb24pID0+IHtcclxuICAgIGF3YWl0IGVkaXRvci5yZW1vdmVDb25uZWN0aW9uKGNvbm5lY3Rpb24uaWQpO1xyXG4gIH0pO1xyXG5cclxuICBpZiAoIXNvdXJjZU5vZGUgfHwgIXRhcmdldE5vZGUpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgY29uc3QgY29ubmVjdGlvbiA9IG5ldyBDb25uZWN0aW9uKFxyXG4gICAgc291cmNlTm9kZSxcclxuICAgIHRhcmdldE5vZGUsXHJcbiAgKTtcclxuXHJcbiAgYXdhaXQgZWRpdG9yLmFkZENvbm5lY3Rpb24oY29ubmVjdGlvbik7XHJcbn07XHJcbiJdfQ==