@talrace/ngx-noder 0.0.4 → 0.0.5

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 (75) hide show
  1. package/README.md +72 -64
  2. package/esm2022/lib/+shared/add-link-dialog/add-link-dialog.component.mjs +9 -5
  3. package/esm2022/lib/+shared/confirm-dialog/confirm-dialog.component.mjs +10 -6
  4. package/esm2022/lib/+shared/editor/core/editor.mjs +7 -14
  5. package/esm2022/lib/+shared/editor/core/helpers/rendering.helper.mjs +9 -8
  6. package/esm2022/lib/+shared/editor/core/layers/text.layer.mjs +4 -4
  7. package/esm2022/lib/+shared/editor/custom-components/image/components/image.component.mjs +4 -3
  8. package/esm2022/lib/+shared/editor/custom-components/shared/abstract/base.component.mjs +4 -2
  9. package/esm2022/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.mjs +6 -12
  10. package/esm2022/lib/+shared/editor/custom-components/tab/tab.component.mjs +3 -2
  11. package/esm2022/lib/+shared/editor/custom-components/table/components/table-cell.component.mjs +6 -4
  12. package/esm2022/lib/+shared/editor/custom-components/table/components/table.component.mjs +7 -5
  13. package/esm2022/lib/+shared/editor/editor.component.mjs +5 -12
  14. package/esm2022/lib/+shared/editor/editor.module.mjs +1 -4
  15. package/esm2022/lib/+shared/editor/execution/models/general-properties.model.mjs +1 -1
  16. package/esm2022/lib/+shared/editor/execution/regulator.service.mjs +15 -5
  17. package/esm2022/lib/+shared/editor-title/editor-title.component.mjs +83 -0
  18. package/esm2022/lib/+shared/editor-toolbar/color-picker/color-picker.component.mjs +2 -2
  19. package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.component.mjs +77 -91
  20. package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.module.mjs +11 -1
  21. package/esm2022/lib/+shared/editor-toolbar/font/font.component.mjs +3 -3
  22. package/esm2022/lib/+shared/editor-toolbar/font-size/font-size.component.mjs +2 -2
  23. package/esm2022/lib/+shared/editor-toolbar/font-style/font-style.component.mjs +2 -2
  24. package/esm2022/lib/+shared/editor-toolbar/menu-dropdowns/menu-dropdowns.component.mjs +194 -0
  25. package/esm2022/lib/+shared/editor-toolbar/numbering/numbering.component.mjs +3 -3
  26. package/esm2022/lib/+shared/editor-toolbar/print/print.component.mjs +2 -2
  27. package/esm2022/lib/+shared/editor-toolbar/toolbar-actions/toolbar-actions.component.mjs +126 -0
  28. package/esm2022/lib/+shared/editor-toolbar/undo-redo/undo-redo.component.mjs +2 -2
  29. package/esm2022/lib/+shared/helpers/scaling.helper.mjs +9 -0
  30. package/esm2022/public-api.mjs +2 -2
  31. package/fesm2022/talrace-ngx-noder.mjs +455 -398
  32. package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
  33. package/lib/+shared/add-link-dialog/add-link-dialog.component.d.ts +1 -0
  34. package/lib/+shared/confirm-dialog/confirm-dialog.component.d.ts +1 -0
  35. package/lib/+shared/editor/core/editor.d.ts +3 -3
  36. package/lib/+shared/editor/core/helpers/rendering.helper.d.ts +3 -3
  37. package/lib/+shared/editor/custom-components/shared/abstract/base.component.d.ts +3 -1
  38. package/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.d.ts +1 -1
  39. package/lib/+shared/editor/custom-components/table/components/table-cell.component.d.ts +2 -2
  40. package/lib/+shared/editor/custom-components/table/components/table.component.d.ts +0 -2
  41. package/lib/+shared/editor/editor.component.d.ts +1 -5
  42. package/lib/+shared/editor/editor.module.d.ts +15 -16
  43. package/lib/+shared/editor/execution/models/general-properties.model.d.ts +1 -0
  44. package/lib/+shared/editor/execution/regulator.service.d.ts +2 -2
  45. package/lib/+shared/editor-title/editor-title.component.d.ts +24 -0
  46. package/lib/+shared/editor-toolbar/editor-toolbar.component.d.ts +31 -30
  47. package/lib/+shared/editor-toolbar/editor-toolbar.module.d.ts +19 -16
  48. package/lib/+shared/editor-toolbar/menu-dropdowns/menu-dropdowns.component.d.ts +73 -0
  49. package/lib/+shared/editor-toolbar/toolbar-actions/toolbar-actions.component.d.ts +49 -0
  50. package/lib/+shared/helpers/scaling.helper.d.ts +4 -0
  51. package/package.json +1 -1
  52. package/public-api.d.ts +1 -1
  53. package/src/_ngx-noder.theme.scss +10 -8
  54. package/src/lib/+shared/add-link-dialog/_add-link-dialog.theme.scss +3 -3
  55. package/src/lib/+shared/confirm-dialog/_theme.scss +6 -6
  56. package/src/lib/+shared/editor/_editor.theme.scss +84 -15
  57. package/src/lib/+shared/editor/_theme.scss +0 -2
  58. package/src/lib/+shared/editor-title/_editor-title.theme.scss +28 -0
  59. package/src/lib/+shared/editor-toolbar/_editor-toolbar.theme.scss +1 -24
  60. package/src/lib/+shared/editor-toolbar/_theme.scss +14 -2
  61. package/src/lib/+shared/editor-toolbar/font-size/_font-size.theme.scss +14 -0
  62. package/src/lib/+shared/editor-toolbar/font-style/_font-style.theme.scss +21 -0
  63. package/src/lib/+shared/editor-toolbar/format/_format.theme.scss +21 -0
  64. package/src/lib/+shared/editor-toolbar/menu-dropdowns/_menu-dropdowns.theme.scss +22 -0
  65. package/src/lib/+shared/editor-toolbar/numbering/_numbering.theme.scss +52 -11
  66. package/src/lib/+shared/editor-toolbar/toolbar-actions/_toolbar-actions.theme.scss +21 -0
  67. package/src/lib/+shared/editor-toolbar/undo-redo/_undo-redo.theme.scss +16 -0
  68. package/src/lib/+shared/insert-table/_insert-table.theme.scss +9 -6
  69. package/src/scss/_mixins.scss +2 -37
  70. package/esm2022/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.mjs +0 -35
  71. package/esm2022/lib/+shared/editor-header/editor-header.component.mjs +0 -314
  72. package/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.d.ts +0 -14
  73. package/lib/+shared/editor-header/editor-header.component.d.ts +0 -101
  74. package/src/lib/+shared/editor/custom-components/external-element/element-toolbar/_element-toolbar.theme.scss +0 -10
  75. package/src/lib/+shared/editor-header/_editor-header.theme.scss +0 -106
@@ -1,5 +1,6 @@
1
1
  import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';
2
2
  import { BaseNoderComponent } from '../shared/abstract/base.component';
3
+ import { ScalingHelper } from '../../../helpers/scaling.helper';
3
4
  import * as i0 from "@angular/core";
4
5
  export class NoderTabComponent extends BaseNoderComponent {
5
6
  get width() {
@@ -25,7 +26,7 @@ export class NoderTabComponent extends BaseNoderComponent {
25
26
  }
26
27
  calculateProperties() {
27
28
  this._height = this.tab.fontSize;
28
- this._width = this.tab.width;
29
+ this._width = ScalingHelper.scale(this.tab.width, this.generalProperties.scalingRatio);
29
30
  }
30
31
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: NoderTabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
31
32
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: NoderTabComponent, selector: "app-noder-tab", host: { properties: { "style.width.px": "this.width", "style.fontSize.pt": "this.height" } }, usesInheritance: true, ngImport: i0, template: " \n", styles: [":host{position:relative;outline:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -40,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
40
41
  type: HostBinding,
41
42
  args: ['style.fontSize.pt']
42
43
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliLytzaGFyZWQvZWRpdG9yL2N1c3RvbS1jb21wb25lbnRzL3RhYi90YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvK3NoYXJlZC9lZGl0b3IvY3VzdG9tLWNvbXBvbmVudHMvdGFiL3RhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFTdkUsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGtCQUFrQjtJQUNyRCxJQUNhLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQWEsS0FBSyxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQ2EsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBYSxNQUFNLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0gsT0FBTyxJQUFJLENBQUMsT0FBbUIsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsSUFBSSxHQUFHLENBQUMsR0FBYTtRQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFUyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQ2pDLENBQUM7OEdBL0JRLGlCQUFpQjtrR0FBakIsaUJBQWlCLDBLQ1g5QixVQUNBOzsyRkRVYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0ksZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNOzhCQUlsQyxLQUFLO3NCQURqQixXQUFXO3VCQUFDLGdCQUFnQjtnQkFTaEIsTUFBTTtzQkFEbEIsV0FBVzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlTm9kZXJDb21wb25lbnQgfSBmcm9tICcuLi9zaGFyZWQvYWJzdHJhY3QvYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFiTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RhYi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLW5vZGVyLXRhYicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFiLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTm9kZXJUYWJDb21wb25lbnQgZXh0ZW5kcyBCYXNlTm9kZXJDb21wb25lbnQge1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgucHgnKVxuICAgIG92ZXJyaWRlIGdldCB3aWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fd2lkdGg7XG4gICAgfVxuICAgIG92ZXJyaWRlIHNldCB3aWR0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3dpZHRoID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5mb250U2l6ZS5wdCcpXG4gICAgb3ZlcnJpZGUgZ2V0IGhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVpZ2h0O1xuICAgIH1cbiAgICBvdmVycmlkZSBzZXQgaGVpZ2h0KHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5faGVpZ2h0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHRhYigpOiBUYWJNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQgYXMgVGFiTW9kZWw7XG4gICAgfVxuICAgIHNldCB0YWIodmFsOiBUYWJNb2RlbCkge1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSB2YWw7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVQcm9wZXJ0aWVzKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNhbGN1bGF0ZVByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hlaWdodCA9IHRoaXMudGFiLmZvbnRTaXplO1xuICAgICAgICB0aGlzLl93aWR0aCA9IHRoaXMudGFiLndpZHRoO1xuICAgIH1cbn1cbiIsIiZlbXNwO1xuIl19
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliLytzaGFyZWQvZWRpdG9yL2N1c3RvbS1jb21wb25lbnRzL3RhYi90YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvK3NoYXJlZC9lZGl0b3IvY3VzdG9tLWNvbXBvbmVudHMvdGFiL3RhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBU2hFLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFBa0I7SUFDckQsSUFDYSxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFhLEtBQUssQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUNhLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQWEsTUFBTSxDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLE9BQW1CLENBQUM7SUFDcEMsQ0FBQztJQUNELElBQUksR0FBRyxDQUFDLEdBQWE7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDdkIsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRVMsbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzRixDQUFDOzhHQS9CUSxpQkFBaUI7a0dBQWpCLGlCQUFpQiwwS0NaOUIsVUFDQTs7MkZEV2EsaUJBQWlCO2tCQU43QixTQUFTOytCQUNJLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTTs4QkFJbEMsS0FBSztzQkFEakIsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBU2hCLE1BQU07c0JBRGxCLFdBQVc7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmFzZU5vZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL2Fic3RyYWN0L2Jhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFNjYWxpbmdIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzL3NjYWxpbmcuaGVscGVyJztcbmltcG9ydCB7IFRhYk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YWIubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1ub2Rlci10YWInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RhYi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVyVGFiQ29tcG9uZW50IGV4dGVuZHMgQmFzZU5vZGVyQ29tcG9uZW50IHtcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoLnB4JylcbiAgICBvdmVycmlkZSBnZXQgd2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dpZHRoO1xuICAgIH1cbiAgICBvdmVycmlkZSBzZXQgd2lkdGgodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl93aWR0aCA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuZm9udFNpemUucHQnKVxuICAgIG92ZXJyaWRlIGdldCBoZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlaWdodDtcbiAgICB9XG4gICAgb3ZlcnJpZGUgc2V0IGhlaWdodCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2hlaWdodCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCB0YWIoKTogVGFiTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50IGFzIFRhYk1vZGVsO1xuICAgIH1cbiAgICBzZXQgdGFiKHZhbDogVGFiTW9kZWwpIHtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gdmFsO1xuICAgIH1cblxuICAgIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlUHJvcGVydGllcygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjYWxjdWxhdGVQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oZWlnaHQgPSB0aGlzLnRhYi5mb250U2l6ZTtcbiAgICAgICAgdGhpcy5fd2lkdGggPSBTY2FsaW5nSGVscGVyLnNjYWxlKHRoaXMudGFiLndpZHRoLCB0aGlzLmdlbmVyYWxQcm9wZXJ0aWVzLnNjYWxpbmdSYXRpbyk7XG4gICAgfVxufVxuIiwiJmVtc3A7XG4iXX0=
@@ -40,7 +40,7 @@ export class NoderTableCellComponent {
40
40
  header: 0,
41
41
  footer: 0
42
42
  });
43
- this.cellSession = this.regulatorService.addCellSession(this.table, marginModel, this, this.properties);
43
+ this.cellSession = this.regulatorService.addCellSession(this.table, marginModel, this, this.generalProperties);
44
44
  this.sessionId = this.cellSession.sessionId;
45
45
  this.addEventListeners();
46
46
  }
@@ -59,11 +59,11 @@ export class NoderTableCellComponent {
59
59
  this.session.pagesWrap.addEventListener('pagesCountChanged', this.pagesCountChangedHandler);
60
60
  }
61
61
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: NoderTableCellComponent, deps: [{ token: i1.EditorService }, { token: i2.RegulatorService }], target: i0.ɵɵFactoryTarget.Component }); }
62
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: NoderTableCellComponent, selector: "app-noder-table-cell", inputs: { table: "table", cell: "cell", rowIndex: "rowIndex", cellIndex: "cellIndex", columnIndex: "columnIndex", width: "width", parentSessionId: "parentSessionId", heightChanged: "heightChanged", startResizing: "startResizing" }, host: { properties: { "class.highlighted": "this.isHighlighted", "attr.data-session-id": "this.sessionId" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }], ngImport: i0, template: "<div\n *ngIf=\"cellIndex === 0\"\n class=\"resizer left-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Left)\"></div>\n<div\n #container\n class=\"edit-container\"></div>\n<div class=\"highlight-container\"></div>\n<div\n class=\"resizer right-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Right)\"></div>\n", styles: [":host{flex:1;display:flex;position:relative}.sidenav-container{width:100%}.container{height:100%;display:flex;justify-content:center}app-element-toolbar{right:15px;top:50px}:host::ng-deep .ace-editor{position:relative;line-height:1;font-size:12pt;font-family:Courier New,Courier,monospace;text-align:left;width:100%;height:100%}:host::ng-deep .ace-scroller{position:absolute;overflow:hidden;top:0;bottom:0;-webkit-user-select:none;user-select:none;cursor:text}:host::ng-deep .ace-scrollbar{overflow:hidden scroll;contain:strict;position:absolute;right:0;bottom:0;z-index:6;top:0}:host::ng-deep .ace-scrollbar-inner{position:absolute;cursor:text;left:0;top:0}:host::ng-deep .ace-text-input{position:absolute;z-index:0;width:.5em;height:1em;opacity:0;background:transparent;appearance:none;border:none;resize:none;overflow:hidden;font:inherit;padding:0 1px;margin:0 -1px;contain:strict;-webkit-user-select:text;user-select:text}:host::ng-deep .ace-layer{z-index:1;position:absolute;word-wrap:normal;white-space:pre;height:100%;width:100%;box-sizing:border-box;pointer-events:none}:host::ng-deep .ace-text-layer{font:inherit!important;position:absolute;contain:style size layout;pointer-events:auto}:host::ng-deep .ace-edges-layer{z-index:2}:host::ng-deep .ace-line{display:flex;align-items:baseline;line-height:normal}:host::ng-deep .ace-line .hyperlink-hover{cursor:pointer}:host::ng-deep .ace-line>*{display:inline-block;font-kerning:none}:host::ng-deep .ace-line>*.paragraph-symbol{align-self:flex-end}:host::ng-deep .ace-content{position:inherit;box-sizing:border-box;min-width:100%;contain:style size layout;inset:0}:host::ng-deep .ace-line-group{display:inline-flex}:host::ng-deep .ace-line-group .lines-container{width:100%}:host::ng-deep .ace-line-group .numberingMarker{display:inline-flex}:host::ng-deep .ace-line-group .numberingMarker span{align-self:end}:host::ng-deep .ace-text-layer>.ace-line,:host::ng-deep .ace-text-layer>.ace-line-group,:host::ng-deep .ace-edges-layer>.ace-line,:host::ng-deep .ace-edges-layer>.ace-line-group{contain:style size layout;position:absolute;top:0;left:0;right:0}:host::ng-deep .ace-text-layer>.ace-line-group:has(.focused){z-index:1}:host::ng-deep .ace-line-group:has(.lines-container>.ace-line:first-child>span:not(:empty)){align-items:baseline}:host::ng-deep .ace-cursor-layer{z-index:4}:host::ng-deep .ace-cursor-layer.selecting{display:none}:host::ng-deep .ace-cursor{z-index:4;position:absolute;box-sizing:border-box;border-left:2px solid;transform:translateZ(0)}:host::ng-deep .ace-hidden-cursors .ace-cursor{opacity:0}:host::ng-deep .ace-hidden-cursors{visibility:hidden}:host::ng-deep .ace-animate-blinking .ace-cursor{animation-duration:1s;animation-timing-function:step-end;animation-name:blink-ace-animate;animation-iteration-count:infinite}:host::ng-deep .ace-animate-blinking.ace-smooth-blinking .ace-cursor{animation-duration:1s;animation-timing-function:ease-in-out;animation-name:blink-ace-animate-smooth}@keyframes blink-ace-animate{0%,to{opacity:1}60%{opacity:0}}@keyframes blink-ace-animate-smooth{0%,to{opacity:1}45%{opacity:1}60%{opacity:0}85%{opacity:0}}:host::ng-deep .ace-selection-layer .ace-selection{position:absolute;z-index:5}:host::ng-deep .ace-selection-layer.text-selection .ace-selection{background-color:#5ea8f766}:host::ng-deep .ace-selection-layer.notes-highlight .ace-selection{background:#ff06}:host::ng-deep .ace-underline{text-decoration:underline}:host::ng-deep .ace-bold{font-weight:700}:host::ng-deep .ace-italic{font-style:italic}:host::ng-deep .page{width:100%;position:absolute}:host::ng-deep .page-label{position:absolute;top:40px;right:96px;font-family:Courier New,Courier,monospace;font-size:16px;line-height:1}:host::ng-deep .font-baseline{visibility:hidden;height:500px}:host::ng-deep .font-baseline span:after{content:\"\";height:100%;display:inline-block}:host::ng-deep .ruler-line{position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(0,0,0,.4);opacity:.5;display:none;z-index:1}:host::ng-deep .ruler-line.visible{display:block}:host::ng-deep .drawer-container .mat-button-toggle-button{height:48px;border-radius:4px}:host::ng-deep .drawer-container .mat-button-toggle-checked button{height:48px;border-radius:4px}\n", ".highlight-container{visibility:hidden;position:absolute;width:100%;height:100%;background-color:#5ea8f766;pointer-events:none;overflow:hidden}:host{min-height:19px;height:100%;background:transparent}:host.highlighted .highlight-container{visibility:visible}.edit-container{min-height:1px;overflow:hidden}.left-border{left:-6px}.resizer{cursor:col-resize;width:11px;height:100%;position:absolute;z-index:1}.right-border{right:-6px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
62
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: NoderTableCellComponent, selector: "app-noder-table-cell", inputs: { table: "table", cell: "cell", rowIndex: "rowIndex", cellIndex: "cellIndex", columnIndex: "columnIndex", width: "width", parentSessionId: "parentSessionId", generalProperties: "generalProperties", heightChanged: "heightChanged", startResizing: "startResizing" }, host: { properties: { "class.highlighted": "this.isHighlighted", "attr.data-session-id": "this.sessionId" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }], ngImport: i0, template: "<div\n *ngIf=\"cellIndex === 0\"\n class=\"resizer left-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Left)\"></div>\n<div\n #container\n class=\"edit-container\"></div>\n<div class=\"highlight-container\"></div>\n<div\n class=\"resizer right-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Right)\"></div>\n", styles: [":host{flex:1;display:flex;position:relative}.sidenav-container{width:100%}.container{height:100%;display:flex;justify-content:center}:host::ng-deep .ace-editor{position:relative;line-height:1;font-size:12pt;font-family:Courier New,Courier,monospace;text-align:left;width:100%;height:100%}:host::ng-deep .ace-scroller{position:absolute;overflow:hidden;top:0;bottom:0;-webkit-user-select:none;user-select:none;cursor:text}:host::ng-deep .ace-scrollbar{overflow:hidden scroll;contain:strict;position:absolute;right:0;bottom:0;z-index:6;top:0}:host::ng-deep .ace-scrollbar-inner{position:absolute;cursor:text;left:0;top:0}:host::ng-deep .ace-text-input{position:absolute;z-index:0;width:.5em;height:1em;opacity:0;background:transparent;appearance:none;border:none;resize:none;overflow:hidden;font:inherit;padding:0 1px;margin:0 -1px;contain:strict;-webkit-user-select:text;user-select:text}:host::ng-deep .ace-layer{z-index:1;position:absolute;word-wrap:normal;white-space:pre;height:100%;width:100%;box-sizing:border-box;pointer-events:none}:host::ng-deep .ace-text-layer{font:inherit!important;position:absolute;contain:style size layout;pointer-events:auto}:host::ng-deep .ace-edges-layer{z-index:2}:host::ng-deep .ace-line{display:flex;align-items:baseline;line-height:normal}:host::ng-deep .ace-line .hyperlink-hover{cursor:pointer}:host::ng-deep .ace-line>*{display:inline-block;font-kerning:none}:host::ng-deep .ace-line>*.paragraph-symbol{align-self:flex-end}:host::ng-deep .ace-content{position:inherit;box-sizing:border-box;min-width:100%;contain:style size layout;inset:0}:host::ng-deep .ace-line-group{display:inline-flex}:host::ng-deep .ace-line-group .lines-container{width:100%}:host::ng-deep .ace-line-group .numberingMarker{display:inline-flex}:host::ng-deep .ace-line-group .numberingMarker span{align-self:end}:host::ng-deep .ace-text-layer>.ace-line,:host::ng-deep .ace-text-layer>.ace-line-group,:host::ng-deep .ace-edges-layer>.ace-line,:host::ng-deep .ace-edges-layer>.ace-line-group{contain:style size layout;position:absolute;top:0;left:0;right:0}:host::ng-deep .ace-text-layer>.ace-line-group:has(.focused){z-index:1}:host::ng-deep .ace-line-group:has(.lines-container>.ace-line:first-child>span:not(:empty)){align-items:baseline}:host::ng-deep .ace-cursor-layer{z-index:4}:host::ng-deep .ace-cursor-layer.selecting{display:none}:host::ng-deep .ace-cursor{z-index:4;position:absolute;box-sizing:border-box;border-left:2px solid;transform:translateZ(0)}:host::ng-deep .ace-hidden-cursors .ace-cursor{opacity:0}:host::ng-deep .ace-hidden-cursors{visibility:hidden}:host::ng-deep .ace-animate-blinking .ace-cursor{animation-duration:1s;animation-timing-function:step-end;animation-name:blink-ace-animate;animation-iteration-count:infinite}:host::ng-deep .ace-animate-blinking.ace-smooth-blinking .ace-cursor{animation-duration:1s;animation-timing-function:ease-in-out;animation-name:blink-ace-animate-smooth}@keyframes blink-ace-animate{0%,to{opacity:1}60%{opacity:0}}@keyframes blink-ace-animate-smooth{0%,to{opacity:1}45%{opacity:1}60%{opacity:0}85%{opacity:0}}:host::ng-deep .ace-selection-layer .ace-selection{position:absolute;z-index:5}:host::ng-deep .ace-selection-layer.text-selection .ace-selection{background-color:#5ea8f766}:host::ng-deep .ace-selection-layer.notes-highlight .ace-selection{background:#ff06}:host::ng-deep .ace-underline{text-decoration:underline}:host::ng-deep .ace-bold{font-weight:700}:host::ng-deep .ace-italic{font-style:italic}:host::ng-deep .page{width:100%;position:absolute}:host::ng-deep .page-label{position:absolute;top:40px;right:96px;font-family:Courier New,Courier,monospace;font-size:16px;line-height:1}:host::ng-deep .font-baseline{visibility:hidden;height:500px}:host::ng-deep .font-baseline span:after{content:\"\";height:100%;display:inline-block}:host::ng-deep .ruler-line{position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(0,0,0,.4);opacity:.5;display:none;z-index:1}:host::ng-deep .ruler-line.visible{display:block}:host::ng-deep .drawer-container .mat-button-toggle-button{height:48px;border-radius:4px}:host::ng-deep .drawer-container .mat-button-toggle-checked button{height:48px;border-radius:4px}\n", ".highlight-container{visibility:hidden;position:absolute;width:100%;height:100%;background-color:#5ea8f766;pointer-events:none;overflow:hidden}:host{min-height:19px;height:100%;background:transparent}:host.highlighted .highlight-container{visibility:visible}.edit-container{min-height:1px;overflow:hidden}.left-border{left:-6px}.resizer{cursor:col-resize;width:11px;height:100%;position:absolute;z-index:1}.right-border{right:-6px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
63
63
  }
64
64
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: NoderTableCellComponent, decorators: [{
65
65
  type: Component,
66
- args: [{ selector: 'app-noder-table-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"cellIndex === 0\"\n class=\"resizer left-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Left)\"></div>\n<div\n #container\n class=\"edit-container\"></div>\n<div class=\"highlight-container\"></div>\n<div\n class=\"resizer right-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Right)\"></div>\n", styles: [":host{flex:1;display:flex;position:relative}.sidenav-container{width:100%}.container{height:100%;display:flex;justify-content:center}app-element-toolbar{right:15px;top:50px}:host::ng-deep .ace-editor{position:relative;line-height:1;font-size:12pt;font-family:Courier New,Courier,monospace;text-align:left;width:100%;height:100%}:host::ng-deep .ace-scroller{position:absolute;overflow:hidden;top:0;bottom:0;-webkit-user-select:none;user-select:none;cursor:text}:host::ng-deep .ace-scrollbar{overflow:hidden scroll;contain:strict;position:absolute;right:0;bottom:0;z-index:6;top:0}:host::ng-deep .ace-scrollbar-inner{position:absolute;cursor:text;left:0;top:0}:host::ng-deep .ace-text-input{position:absolute;z-index:0;width:.5em;height:1em;opacity:0;background:transparent;appearance:none;border:none;resize:none;overflow:hidden;font:inherit;padding:0 1px;margin:0 -1px;contain:strict;-webkit-user-select:text;user-select:text}:host::ng-deep .ace-layer{z-index:1;position:absolute;word-wrap:normal;white-space:pre;height:100%;width:100%;box-sizing:border-box;pointer-events:none}:host::ng-deep .ace-text-layer{font:inherit!important;position:absolute;contain:style size layout;pointer-events:auto}:host::ng-deep .ace-edges-layer{z-index:2}:host::ng-deep .ace-line{display:flex;align-items:baseline;line-height:normal}:host::ng-deep .ace-line .hyperlink-hover{cursor:pointer}:host::ng-deep .ace-line>*{display:inline-block;font-kerning:none}:host::ng-deep .ace-line>*.paragraph-symbol{align-self:flex-end}:host::ng-deep .ace-content{position:inherit;box-sizing:border-box;min-width:100%;contain:style size layout;inset:0}:host::ng-deep .ace-line-group{display:inline-flex}:host::ng-deep .ace-line-group .lines-container{width:100%}:host::ng-deep .ace-line-group .numberingMarker{display:inline-flex}:host::ng-deep .ace-line-group .numberingMarker span{align-self:end}:host::ng-deep .ace-text-layer>.ace-line,:host::ng-deep .ace-text-layer>.ace-line-group,:host::ng-deep .ace-edges-layer>.ace-line,:host::ng-deep .ace-edges-layer>.ace-line-group{contain:style size layout;position:absolute;top:0;left:0;right:0}:host::ng-deep .ace-text-layer>.ace-line-group:has(.focused){z-index:1}:host::ng-deep .ace-line-group:has(.lines-container>.ace-line:first-child>span:not(:empty)){align-items:baseline}:host::ng-deep .ace-cursor-layer{z-index:4}:host::ng-deep .ace-cursor-layer.selecting{display:none}:host::ng-deep .ace-cursor{z-index:4;position:absolute;box-sizing:border-box;border-left:2px solid;transform:translateZ(0)}:host::ng-deep .ace-hidden-cursors .ace-cursor{opacity:0}:host::ng-deep .ace-hidden-cursors{visibility:hidden}:host::ng-deep .ace-animate-blinking .ace-cursor{animation-duration:1s;animation-timing-function:step-end;animation-name:blink-ace-animate;animation-iteration-count:infinite}:host::ng-deep .ace-animate-blinking.ace-smooth-blinking .ace-cursor{animation-duration:1s;animation-timing-function:ease-in-out;animation-name:blink-ace-animate-smooth}@keyframes blink-ace-animate{0%,to{opacity:1}60%{opacity:0}}@keyframes blink-ace-animate-smooth{0%,to{opacity:1}45%{opacity:1}60%{opacity:0}85%{opacity:0}}:host::ng-deep .ace-selection-layer .ace-selection{position:absolute;z-index:5}:host::ng-deep .ace-selection-layer.text-selection .ace-selection{background-color:#5ea8f766}:host::ng-deep .ace-selection-layer.notes-highlight .ace-selection{background:#ff06}:host::ng-deep .ace-underline{text-decoration:underline}:host::ng-deep .ace-bold{font-weight:700}:host::ng-deep .ace-italic{font-style:italic}:host::ng-deep .page{width:100%;position:absolute}:host::ng-deep .page-label{position:absolute;top:40px;right:96px;font-family:Courier New,Courier,monospace;font-size:16px;line-height:1}:host::ng-deep .font-baseline{visibility:hidden;height:500px}:host::ng-deep .font-baseline span:after{content:\"\";height:100%;display:inline-block}:host::ng-deep .ruler-line{position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(0,0,0,.4);opacity:.5;display:none;z-index:1}:host::ng-deep .ruler-line.visible{display:block}:host::ng-deep .drawer-container .mat-button-toggle-button{height:48px;border-radius:4px}:host::ng-deep .drawer-container .mat-button-toggle-checked button{height:48px;border-radius:4px}\n", ".highlight-container{visibility:hidden;position:absolute;width:100%;height:100%;background-color:#5ea8f766;pointer-events:none;overflow:hidden}:host{min-height:19px;height:100%;background:transparent}:host.highlighted .highlight-container{visibility:visible}.edit-container{min-height:1px;overflow:hidden}.left-border{left:-6px}.resizer{cursor:col-resize;width:11px;height:100%;position:absolute;z-index:1}.right-border{right:-6px}\n"] }]
66
+ args: [{ selector: 'app-noder-table-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"cellIndex === 0\"\n class=\"resizer left-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Left)\"></div>\n<div\n #container\n class=\"edit-container\"></div>\n<div class=\"highlight-container\"></div>\n<div\n class=\"resizer right-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Right)\"></div>\n", styles: [":host{flex:1;display:flex;position:relative}.sidenav-container{width:100%}.container{height:100%;display:flex;justify-content:center}:host::ng-deep .ace-editor{position:relative;line-height:1;font-size:12pt;font-family:Courier New,Courier,monospace;text-align:left;width:100%;height:100%}:host::ng-deep .ace-scroller{position:absolute;overflow:hidden;top:0;bottom:0;-webkit-user-select:none;user-select:none;cursor:text}:host::ng-deep .ace-scrollbar{overflow:hidden scroll;contain:strict;position:absolute;right:0;bottom:0;z-index:6;top:0}:host::ng-deep .ace-scrollbar-inner{position:absolute;cursor:text;left:0;top:0}:host::ng-deep .ace-text-input{position:absolute;z-index:0;width:.5em;height:1em;opacity:0;background:transparent;appearance:none;border:none;resize:none;overflow:hidden;font:inherit;padding:0 1px;margin:0 -1px;contain:strict;-webkit-user-select:text;user-select:text}:host::ng-deep .ace-layer{z-index:1;position:absolute;word-wrap:normal;white-space:pre;height:100%;width:100%;box-sizing:border-box;pointer-events:none}:host::ng-deep .ace-text-layer{font:inherit!important;position:absolute;contain:style size layout;pointer-events:auto}:host::ng-deep .ace-edges-layer{z-index:2}:host::ng-deep .ace-line{display:flex;align-items:baseline;line-height:normal}:host::ng-deep .ace-line .hyperlink-hover{cursor:pointer}:host::ng-deep .ace-line>*{display:inline-block;font-kerning:none}:host::ng-deep .ace-line>*.paragraph-symbol{align-self:flex-end}:host::ng-deep .ace-content{position:inherit;box-sizing:border-box;min-width:100%;contain:style size layout;inset:0}:host::ng-deep .ace-line-group{display:inline-flex}:host::ng-deep .ace-line-group .lines-container{width:100%}:host::ng-deep .ace-line-group .numberingMarker{display:inline-flex}:host::ng-deep .ace-line-group .numberingMarker span{align-self:end}:host::ng-deep .ace-text-layer>.ace-line,:host::ng-deep .ace-text-layer>.ace-line-group,:host::ng-deep .ace-edges-layer>.ace-line,:host::ng-deep .ace-edges-layer>.ace-line-group{contain:style size layout;position:absolute;top:0;left:0;right:0}:host::ng-deep .ace-text-layer>.ace-line-group:has(.focused){z-index:1}:host::ng-deep .ace-line-group:has(.lines-container>.ace-line:first-child>span:not(:empty)){align-items:baseline}:host::ng-deep .ace-cursor-layer{z-index:4}:host::ng-deep .ace-cursor-layer.selecting{display:none}:host::ng-deep .ace-cursor{z-index:4;position:absolute;box-sizing:border-box;border-left:2px solid;transform:translateZ(0)}:host::ng-deep .ace-hidden-cursors .ace-cursor{opacity:0}:host::ng-deep .ace-hidden-cursors{visibility:hidden}:host::ng-deep .ace-animate-blinking .ace-cursor{animation-duration:1s;animation-timing-function:step-end;animation-name:blink-ace-animate;animation-iteration-count:infinite}:host::ng-deep .ace-animate-blinking.ace-smooth-blinking .ace-cursor{animation-duration:1s;animation-timing-function:ease-in-out;animation-name:blink-ace-animate-smooth}@keyframes blink-ace-animate{0%,to{opacity:1}60%{opacity:0}}@keyframes blink-ace-animate-smooth{0%,to{opacity:1}45%{opacity:1}60%{opacity:0}85%{opacity:0}}:host::ng-deep .ace-selection-layer .ace-selection{position:absolute;z-index:5}:host::ng-deep .ace-selection-layer.text-selection .ace-selection{background-color:#5ea8f766}:host::ng-deep .ace-selection-layer.notes-highlight .ace-selection{background:#ff06}:host::ng-deep .ace-underline{text-decoration:underline}:host::ng-deep .ace-bold{font-weight:700}:host::ng-deep .ace-italic{font-style:italic}:host::ng-deep .page{width:100%;position:absolute}:host::ng-deep .page-label{position:absolute;top:40px;right:96px;font-family:Courier New,Courier,monospace;font-size:16px;line-height:1}:host::ng-deep .font-baseline{visibility:hidden;height:500px}:host::ng-deep .font-baseline span:after{content:\"\";height:100%;display:inline-block}:host::ng-deep .ruler-line{position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(0,0,0,.4);opacity:.5;display:none;z-index:1}:host::ng-deep .ruler-line.visible{display:block}:host::ng-deep .drawer-container .mat-button-toggle-button{height:48px;border-radius:4px}:host::ng-deep .drawer-container .mat-button-toggle-checked button{height:48px;border-radius:4px}\n", ".highlight-container{visibility:hidden;position:absolute;width:100%;height:100%;background-color:#5ea8f766;pointer-events:none;overflow:hidden}:host{min-height:19px;height:100%;background:transparent}:host.highlighted .highlight-container{visibility:visible}.edit-container{min-height:1px;overflow:hidden}.left-border{left:-6px}.resizer{cursor:col-resize;width:11px;height:100%;position:absolute;z-index:1}.right-border{right:-6px}\n"] }]
67
67
  }], ctorParameters: () => [{ type: i1.EditorService }, { type: i2.RegulatorService }], propDecorators: { table: [{
68
68
  type: Input
69
69
  }], cell: [{
@@ -78,6 +78,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
78
78
  type: Input
79
79
  }], parentSessionId: [{
80
80
  type: Input
81
+ }], generalProperties: [{
82
+ type: Input
81
83
  }], heightChanged: [{
82
84
  type: Input
83
85
  }], startResizing: [{
@@ -92,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
92
94
  type: ViewChild,
93
95
  args: ['container', { static: true }]
94
96
  }] } });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2VkaXRvci9jdXN0b20tY29tcG9uZW50cy90YWJsZS9jb21wb25lbnRzL3RhYmxlLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvK3NoYXJlZC9lZGl0b3IvY3VzdG9tLWNvbXBvbmVudHMvdGFibGUvY29tcG9uZW50cy90YWJsZS1jZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFJckYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7QUFXMUQsTUFBTSxPQUFPLHVCQUF1QjtJQTZCaEMsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUNyQyxDQUFDO0lBUUQsWUFBb0IsYUFBNEIsRUFBVSxnQkFBa0M7UUFBeEUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBdkI1RixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQW1CYixrQkFBYSxHQUFHLFdBQVcsQ0FBQztRQTRDN0IsNkJBQXdCLEdBQUcsQ0FBQyxL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LEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDZWxsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2NlbGwubW9kZWwnO1xuaW1wb3J0IHsgQ2VsbFJlc2l6ZXJQYXJhbWV0ZXJzTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvY2VsbC1yZXNpemVyLXBhcmFtZXRlcnMubW9kZWwnO1xuaW1wb3J0IHsgRWRpdFNlc3Npb24gfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VkaXQuc2Vzc2lvbic7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJhY3Rpb24vZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VuZXJhbFByb3BlcnRpZXNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2V4ZWN1dGlvbi9tb2RlbHMvZ2VuZXJhbC1wcm9wZXJ0aWVzLm1vZGVsJztcbmltcG9ydCB7IE1hcmdpbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvbWFyZ2luLm1vZGVsJztcbmltcG9ydCB7IFJlZ3VsYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9leGVjdXRpb24vcmVndWxhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVuZGVyZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3JlbmRlcmVyJztcbmltcG9ydCB7IFJlc2l6ZXJTaWRlIH0gZnJvbSAnLi4vZW51bXMvcmVpc2l6ZXItc2lkZS5lbnVtJztcbmltcG9ydCB7IFNlc3Npb25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL2V4ZWN1dGlvbi9tb2RlbHMvc2Vzc2lvbi5tb2RlbCc7XG5pbXBvcnQgeyBUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBWaXJ0dWFsUmVuZGVyZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3ZpcnR1YWwucmVuZGVyZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1ub2Rlci10YWJsZS1jZWxsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtY2VsbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4uLy4uLy4uL2VkaXRvci5jb21wb25lbnQuc2NzcycsICcuL3RhYmxlLWNlbGwuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOb2RlclRhYmxlQ2VsbENvbXBvbmVudCB7XG4gICAgQElucHV0KCkgdGFibGU6IFRhYmxlTW9kZWw7XG5cbiAgICBASW5wdXQoKSBjZWxsOiBDZWxsTW9kZWw7XG5cbiAgICBASW5wdXQoKSByb3dJbmRleDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgY2VsbEluZGV4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBjb2x1bW5JbmRleDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgd2lkdGg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHBhcmVudFNlc3Npb25JZDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgaGVpZ2h0Q2hhbmdlZDogKHJvd0luZGV4OiBudW1iZXIsIGNlbGxJbmRleDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikgPT4gdm9pZDtcblxuICAgIEBJbnB1dCgpIHN0YXJ0UmVzaXppbmc6IChjZWxsUmVzaXplclBhcmFtZXRlcnM6IENlbGxSZXNpemVyUGFyYW1ldGVyc01vZGVsKSA9PiB2b2lkO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oaWdobGlnaHRlZCcpXG4gICAgaXNIaWdobGlnaHRlZCA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2Vzc2lvbi1pZCcpXG4gICAgc2Vzc2lvbklkOiBudW1iZXI7XG5cbiAgICBjZWxsU2Vzc2lvbjogU2Vzc2lvbk1vZGVsO1xuXG4gICAgcHJvcGVydGllczogR2VuZXJhbFByb3BlcnRpZXNNb2RlbDtcblxuICAgIGdldCBzZXNzaW9uKCk6IEVkaXRTZXNzaW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2VsbFNlc3Npb24uc2Vzc2lvbjtcbiAgICB9XG5cbiAgICBnZXQgcmVuZGVyZXIoKTogUmVuZGVyZXIgfCBWaXJ0dWFsUmVuZGVyZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jZWxsU2Vzc2lvbi5yZW5kZXJlcjtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgcmVhZG9ubHkgcmVzaXplckJvcmRlciA9IFJlc2l6ZXJTaWRlO1xuXG4gICAgcHJpdmF0ZSBfYWxsUGFyYWdyYXBoc0hlaWdodDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlLCBwcml2YXRlIHJlZ3VsYXRvclNlcnZpY2U6IFJlZ3VsYXRvclNlcnZpY2UpIHt9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uPy5wYWdlc1dyYXAucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGFnZXNDb3VudENoYW5nZWQnLCB0aGlzLnBhZ2VzQ291bnRDaGFuZ2VkSGFuZGxlcik7XG4gICAgICAgIHRoaXMucmVndWxhdG9yU2VydmljZS5yZW1vdmVTZXNzaW9uKHRoaXMuc2Vzc2lvbklkKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBtYXJnaW5Nb2RlbCA9IG5ldyBNYXJnaW5Nb2RlbCh7XG4gICAgICAgICAgICBsZWZ0OiA3LFxuICAgICAgICAgICAgcmlnaHQ6IDcsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICBoZWFkZXI6IDAsXG4gICAgICAgICAgICBmb290ZXI6IDBcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2VsbFNlc3Npb24gPSB0aGlzLnJlZ3VsYXRvclNlcnZpY2UuYWRkQ2VsbFNlc3Npb24odGhpcy50YWJsZSwgbWFyZ2luTW9kZWwsIHRoaXMsIHRoaXMucHJvcGVydGllcyk7XG4gICAgICAgIHRoaXMuc2Vzc2lvbklkID0gdGhpcy5jZWxsU2Vzc2lvbi5zZXNzaW9uSWQ7XG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBnZXRDZWxsQ29udGVudEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICB0aGlzLl9hbGxQYXJhZ3JhcGhzSGVpZ2h0ID0gdGhpcy5zZXNzaW9uLnBhZ2VzV3JhcC5nZXRBbGxQYXJhZ3JhcGhzSGVpZ2h0KCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9hbGxQYXJhZ3JhcGhzSGVpZ2h0O1xuICAgIH1cblxuICAgIGNsZWFyU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9XG5cbiAgICBvblN0YXJ0UmVzaXppbmcoZXZlbnQ6IE1vdXNlRXZlbnQsIGJvcmRlcjogUmVzaXplclNpZGUpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5zdGFydFJlc2l6aW5nKG5ldyBDZWxsUmVzaXplclBhcmFtZXRlcnNNb2RlbCh0aGlzLmNvbHVtbkluZGV4LCB0aGlzLnJvd0luZGV4LCB0aGlzLmNlbGxJbmRleCwgYm9yZGVyKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uLnBhZ2VzV3JhcC5hZGRFdmVudExpc3RlbmVyKCdwYWdlc0NvdW50Q2hhbmdlZCcsIHRoaXMucGFnZXNDb3VudENoYW5nZWRIYW5kbGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhZ2VzQ291bnRDaGFuZ2VkSGFuZGxlciA9IChldmVudDogeyBwYWdlSGVpZ2h0OiBudW1iZXIgfSk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGhpcy5fYWxsUGFyYWdyYXBoc0hlaWdodCA9PT0gZXZlbnQucGFnZUhlaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYWxsUGFyYWdyYXBoc0hlaWdodCA9IGV2ZW50LnBhZ2VIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGNlbGxDb250ZW50SGVpZ2h0ID0gdGhpcy5fYWxsUGFyYWdyYXBoc0hlaWdodDtcbiAgICAgICAgdGhpcy5oZWlnaHRDaGFuZ2VkKHRoaXMucm93SW5kZXgsIHRoaXMuY2VsbEluZGV4LCBjZWxsQ29udGVudEhlaWdodCk7XG4gICAgfTtcbn1cbiIsIjxkaXZcbiAgICAqbmdJZj1cImNlbGxJbmRleCA9PT0gMFwiXG4gICAgY2xhc3M9XCJyZXNpemVyIGxlZnQtYm9yZGVyXCJcbiAgICAobW91c2Vkb3duKT1cIm9uU3RhcnRSZXNpemluZygkZXZlbnQsIHJlc2l6ZXJCb3JkZXIuTGVmdClcIj48L2Rpdj5cbjxkaXZcbiAgICAjY29udGFpbmVyXG4gICAgY2xhc3M9XCJlZGl0LWNvbnRhaW5lclwiPjwvZGl2PlxuPGRpdiBjbGFzcz1cImhpZ2hsaWdodC1jb250YWluZXJcIj48L2Rpdj5cbjxkaXZcbiAgICBjbGFzcz1cInJlc2l6ZXIgcmlnaHQtYm9yZGVyXCJcbiAgICAobW91c2Vkb3duKT1cIm9uU3RhcnRSZXNpemluZygkZXZlbnQsIHJlc2l6ZXJCb3JkZXIuUmlnaHQpXCI+PC9kaXY+XG4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2VkaXRvci9jdXN0b20tY29tcG9uZW50cy90YWJsZS9jb21wb25lbnRzL3RhYmxlLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvK3NoYXJlZC9lZGl0b3IvY3VzdG9tLWNvbXBvbmVudHMvdGFibGUvY29tcG9uZW50cy90YWJsZS1jZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFJckYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7QUFXMUQsTUFBTSxPQUFPLHVCQUF1QjtJQTZCaEMsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUNyQyxDQUFDO0lBUUQsWUFBb0IsYUFBNEIsRUFBVSxnQkFBa0M7UUFBeEUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBckI1RixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQWlCYixrQkFBYSxHQUFHLFdBQVcsQ0FBQztRQTRDN0IsNkJBQXdCLEdBQUcsQ0FBQyxL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QVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDZWxsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2NlbGwubW9kZWwnO1xuaW1wb3J0IHsgQ2VsbFJlc2l6ZXJQYXJhbWV0ZXJzTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvY2VsbC1yZXNpemVyLXBhcmFtZXRlcnMubW9kZWwnO1xuaW1wb3J0IHsgRWRpdFNlc3Npb24gfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VkaXQuc2Vzc2lvbic7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJhY3Rpb24vZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VuZXJhbFByb3BlcnRpZXNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2V4ZWN1dGlvbi9tb2RlbHMvZ2VuZXJhbC1wcm9wZXJ0aWVzLm1vZGVsJztcbmltcG9ydCB7IE1hcmdpbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvbWFyZ2luLm1vZGVsJztcbmltcG9ydCB7IFJlZ3VsYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9leGVjdXRpb24vcmVndWxhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVuZGVyZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3JlbmRlcmVyJztcbmltcG9ydCB7IFJlc2l6ZXJTaWRlIH0gZnJvbSAnLi4vZW51bXMvcmVpc2l6ZXItc2lkZS5lbnVtJztcbmltcG9ydCB7IFNlc3Npb25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL2V4ZWN1dGlvbi9tb2RlbHMvc2Vzc2lvbi5tb2RlbCc7XG5pbXBvcnQgeyBUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBWaXJ0dWFsUmVuZGVyZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3ZpcnR1YWwucmVuZGVyZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1ub2Rlci10YWJsZS1jZWxsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtY2VsbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4uLy4uLy4uL2VkaXRvci5jb21wb25lbnQuc2NzcycsICcuL3RhYmxlLWNlbGwuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOb2RlclRhYmxlQ2VsbENvbXBvbmVudCB7XG4gICAgQElucHV0KCkgdGFibGU6IFRhYmxlTW9kZWw7XG5cbiAgICBASW5wdXQoKSBjZWxsOiBDZWxsTW9kZWw7XG5cbiAgICBASW5wdXQoKSByb3dJbmRleDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgY2VsbEluZGV4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBjb2x1bW5JbmRleDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgd2lkdGg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHBhcmVudFNlc3Npb25JZDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgZ2VuZXJhbFByb3BlcnRpZXM6IEdlbmVyYWxQcm9wZXJ0aWVzTW9kZWw7XG5cbiAgICBASW5wdXQoKSBoZWlnaHRDaGFuZ2VkOiAocm93SW5kZXg6IG51bWJlciwgY2VsbEluZGV4OiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSA9PiB2b2lkO1xuXG4gICAgQElucHV0KCkgc3RhcnRSZXNpemluZzogKGNlbGxSZXNpemVyUGFyYW1ldGVyczogQ2VsbFJlc2l6ZXJQYXJhbWV0ZXJzTW9kZWwpID0+IHZvaWQ7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhpZ2hsaWdodGVkJylcbiAgICBpc0hpZ2hsaWdodGVkID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zZXNzaW9uLWlkJylcbiAgICBzZXNzaW9uSWQ6IG51bWJlcjtcblxuICAgIGNlbGxTZXNzaW9uOiBTZXNzaW9uTW9kZWw7XG5cbiAgICBnZXQgc2Vzc2lvbigpOiBFZGl0U2Vzc2lvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNlbGxTZXNzaW9uLnNlc3Npb247XG4gICAgfVxuXG4gICAgZ2V0IHJlbmRlcmVyKCk6IFJlbmRlcmVyIHwgVmlydHVhbFJlbmRlcmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2VsbFNlc3Npb24ucmVuZGVyZXI7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSkgY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIHJlYWRvbmx5IHJlc2l6ZXJCb3JkZXIgPSBSZXNpemVyU2lkZTtcblxuICAgIHByaXZhdGUgX2FsbFBhcmFncmFwaHNIZWlnaHQ6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSwgcHJpdmF0ZSByZWd1bGF0b3JTZXJ2aWNlOiBSZWd1bGF0b3JTZXJ2aWNlKSB7fVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2Vzc2lvbj8ucGFnZXNXcmFwLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhZ2VzQ291bnRDaGFuZ2VkJywgdGhpcy5wYWdlc0NvdW50Q2hhbmdlZEhhbmRsZXIpO1xuICAgICAgICB0aGlzLnJlZ3VsYXRvclNlcnZpY2UucmVtb3ZlU2Vzc2lvbih0aGlzLnNlc3Npb25JZCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWFyZ2luTW9kZWwgPSBuZXcgTWFyZ2luTW9kZWwoe1xuICAgICAgICAgICAgbGVmdDogNyxcbiAgICAgICAgICAgIHJpZ2h0OiA3LFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgaGVhZGVyOiAwLFxuICAgICAgICAgICAgZm9vdGVyOiAwXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNlbGxTZXNzaW9uID0gdGhpcy5yZWd1bGF0b3JTZXJ2aWNlLmFkZENlbGxTZXNzaW9uKHRoaXMudGFibGUsIG1hcmdpbk1vZGVsLCB0aGlzLCB0aGlzLmdlbmVyYWxQcm9wZXJ0aWVzKTtcbiAgICAgICAgdGhpcy5zZXNzaW9uSWQgPSB0aGlzLmNlbGxTZXNzaW9uLnNlc3Npb25JZDtcbiAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVycygpO1xuICAgIH1cblxuICAgIGdldENlbGxDb250ZW50SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHRoaXMuX2FsbFBhcmFncmFwaHNIZWlnaHQgPSB0aGlzLnNlc3Npb24ucGFnZXNXcmFwLmdldEFsbFBhcmFncmFwaHNIZWlnaHQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbFBhcmFncmFwaHNIZWlnaHQ7XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jbGVhclNlbGVjdGlvbigpO1xuICAgIH1cblxuICAgIG9uU3RhcnRSZXNpemluZyhldmVudDogTW91c2VFdmVudCwgYm9yZGVyOiBSZXNpemVyU2lkZSk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICB0aGlzLnN0YXJ0UmVzaXppbmcobmV3IENlbGxSZXNpemVyUGFyYW1ldGVyc01vZGVsKHRoaXMuY29sdW1uSW5kZXgsIHRoaXMucm93SW5kZXgsIHRoaXMuY2VsbEluZGV4LCBib3JkZXIpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlc3Npb24ucGFnZXNXcmFwLmFkZEV2ZW50TGlzdGVuZXIoJ3BhZ2VzQ291bnRDaGFuZ2VkJywgdGhpcy5wYWdlc0NvdW50Q2hhbmdlZEhhbmRsZXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFnZXNDb3VudENoYW5nZWRIYW5kbGVyID0gKGV2ZW50OiB7IHBhZ2VIZWlnaHQ6IG51bWJlciB9KTogdm9pZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9hbGxQYXJhZ3JhcGhzSGVpZ2h0ID09PSBldmVudC5wYWdlSGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9hbGxQYXJhZ3JhcGhzSGVpZ2h0ID0gZXZlbnQucGFnZUhlaWdodDtcbiAgICAgICAgY29uc3QgY2VsbENvbnRlbnRIZWlnaHQgPSB0aGlzLl9hbGxQYXJhZ3JhcGhzSGVpZ2h0O1xuICAgICAgICB0aGlzLmhlaWdodENoYW5nZWQodGhpcy5yb3dJbmRleCwgdGhpcy5jZWxsSW5kZXgsIGNlbGxDb250ZW50SGVpZ2h0KTtcbiAgICB9O1xufVxuIiwiPGRpdlxuICAgICpuZ0lmPVwiY2VsbEluZGV4ID09PSAwXCJcbiAgICBjbGFzcz1cInJlc2l6ZXIgbGVmdC1ib3JkZXJcIlxuICAgIChtb3VzZWRvd24pPVwib25TdGFydFJlc2l6aW5nKCRldmVudCwgcmVzaXplckJvcmRlci5MZWZ0KVwiPjwvZGl2PlxuPGRpdlxuICAgICNjb250YWluZXJcbiAgICBjbGFzcz1cImVkaXQtY29udGFpbmVyXCI+PC9kaXY+XG48ZGl2IGNsYXNzPVwiaGlnaGxpZ2h0LWNvbnRhaW5lclwiPjwvZGl2PlxuPGRpdlxuICAgIGNsYXNzPVwicmVzaXplciByaWdodC1ib3JkZXJcIlxuICAgIChtb3VzZWRvd24pPVwib25TdGFydFJlc2l6aW5nKCRldmVudCwgcmVzaXplckJvcmRlci5SaWdodClcIj48L2Rpdj5cbiJdfQ==
@@ -5,6 +5,7 @@ import { CellResizer } from '../cell-resizer/cell-resizer';
5
5
  import { HRule } from '../../../core/enums/hrule.enum';
6
6
  import { NoderTableCellComponent } from './table-cell.component';
7
7
  import { RowDataModel } from '../models/row-data.model';
8
+ import { ScalingHelper } from '../../../../helpers/scaling.helper';
8
9
  import { TableSelection } from '../selection/table-selection';
9
10
  import { VerticalMerge } from '../enums/vertical-merge.enum';
10
11
  import * as i0 from "@angular/core";
@@ -90,7 +91,7 @@ export class NoderTableComponent extends BaseNoderComponent {
90
91
  tableRow.cells[cellIndex].widthType = 'dxa';
91
92
  return (cellWidth * this._width) / 5000; // 5000 is equal to 100% in docx units of measurement
92
93
  }
93
- return cellWidth;
94
+ return ScalingHelper.scale(cellWidth, this.generalProperties.scalingRatio);
94
95
  }
95
96
  createResizer() {
96
97
  this.resizerEl = document.createElement('div');
@@ -164,9 +165,9 @@ export class NoderTableComponent extends BaseNoderComponent {
164
165
  cellIndex: modelCellIndex,
165
166
  columnIndex: currentTargetIndex,
166
167
  width: this.getAdjustedWidth(this.table.rows[rowIndex], modelCellIndex, currentTargetIndex),
168
+ generalProperties: this.generalProperties,
167
169
  heightChanged: this.cellHeightChanged,
168
- startResizing: this.startResizing,
169
- properties: this.properties
170
+ startResizing: this.startResizing
170
171
  });
171
172
  const cellContentHeight = componentRef.instance.getCellContentHeight();
172
173
  const cellData = new CellDataModel(cell, cellContentHeight, componentRef);
@@ -197,7 +198,8 @@ export class NoderTableComponent extends BaseNoderComponent {
197
198
  let i = 0;
198
199
  while (i < this.table.columns.length) {
199
200
  const col = document.createElement('col');
200
- col.style.width = `${this.table.columns[i].width}px`;
201
+ const scaledWidth = ScalingHelper.scale(this.table.columns[i].width, this.generalProperties.scalingRatio);
202
+ col.style.width = `${scaledWidth}px`;
201
203
  colgroup.appendChild(col);
202
204
  i++;
203
205
  }
@@ -396,4 +398,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
396
398
  type: Component,
397
399
  args: [{ selector: 'app-noder-table', template: '', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{position:relative}:host::ng-deep table{position:relative;border-collapse:collapse;background:transparent;empty-cells:show;border-spacing:0;overflow:visible;table-layout:fixed}:host::ng-deep td{position:relative;vertical-align:top;border:1px solid #000;margin:0;padding:0;height:inherit}:host::ng-deep .hidden-cell{display:none;cursor:not-allowed}:host::ng-deep .resizer-border{position:absolute;border:solid .5px blue;z-index:1}\n"] }]
398
400
  }], ctorParameters: () => [{ type: i1.ComponentService }, { type: i2.EditorService }, { type: i0.ElementRef }, { type: i3.OverlayService }] });
399
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvK3NoYXJlZC9lZGl0b3IvY3VzdG9tLWNvbXBvbmVudHMvdGFibGUvY29tcG9uZW50cy90YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFFMUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQU0zRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7O0FBUTdELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxrQkFBa0I7SUFDdkQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBcUIsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsR0FBZTtRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBb0JELFlBQ1ksZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLEVBQWMsRUFDZCxjQUE4QjtRQUV0QyxLQUFLLEVBQUUsQ0FBQztRQUxBLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JB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LE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFhLEVBQUUsR0FBVztRQUM1QyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzlCLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDNUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7OEdBcGZRLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDhFQUpsQixFQUFFOzsyRkFJSCxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0ksaUJBQWlCLFlBQ2pCLEVBQUUsbUJBRUssdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlTm9kZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvYWJzdHJhY3QvYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2VsbERhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscy9jZWxsLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgQ2VsbFJlc2l6ZXIgfSBmcm9tICcuLi9jZWxsLXJlc2l6ZXIvY2VsbC1yZXNpemVyJztcbmltcG9ydCB7IENlbGxSZXNpemVyUGFyYW1ldGVyc01vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2NlbGwtcmVzaXplci1wYXJhbWV0ZXJzLm1vZGVsJztcbmltcG9ydCB7IENvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvY29tcG9uZW50L2NvbXBvbmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEVkaXRTZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9lZGl0LnNlc3Npb24nO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyYWN0aW9uL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IEdlbmVyYWxQcm9wZXJ0aWVzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9leGVjdXRpb24vbW9kZWxzL2dlbmVyYWwtcHJvcGVydGllcy5tb2RlbCc7XG5pbXBvcnQgeyBIUnVsZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvZW51bXMvaHJ1bGUuZW51bSc7XG5pbXBvcnQgeyBOb2RlclRhYmxlQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3ZlcmxheVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvb3ZlcmxheS9vdmVybGF5LnNlcnZpY2UnO1xuaW1wb3J0IHsgUm93RGF0YU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3Jvdy1kYXRhLm1vZGVsJztcbmltcG9ydCB7IFJvd01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yb3cubW9kZWwnO1xuaW1wb3J0IHsgVGFibGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGFibGUubW9kZWwnO1xuaW1wb3J0IHsgVGFibGVTZWxlY3Rpb24gfSBmcm9tICcuLi9zZWxlY3Rpb24vdGFibGUtc2VsZWN0aW9uJztcbmltcG9ydCB7IFZlcnRpY2FsTWVyZ2UgfSBmcm9tICcuLi9lbnVtcy92ZXJ0aWNhbC1tZXJnZS5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtbm9kZXItdGFibGUnLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVyVGFibGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlTm9kZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIGdldCB0YWJsZSgpOiBUYWJsZU1vZGVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudCBhcyBUYWJsZU1vZGVsO1xuICAgIH1cbiAgICBzZXQgdGFibGUodmFsOiBUYWJsZU1vZGVsKSB7XG4gICAgICAgIHRoaXMuY29udGVudCA9IHZhbDtcbiAgICB9XG5cbiAgICB0YWJsZVNlbGVjdGlvbjogVGFibGVTZWxlY3Rpb247XG5cbiAgICB0YWJsZUVsOiBIVE1MVGFibGVFbGVtZW50O1xuXG4gICAgcmVzaXplcjogQ2VsbFJlc2l6ZXI7XG5cbiAgICByZXNpemVyRWw6IEhUTUxEaXZFbGVtZW50O1xuXG4gICAgcm93TWF0cml4OiBSb3dEYXRhTW9kZWxbXSA9IFtdO1xuXG4gICAgcHJvcGVydGllczogR2VuZXJhbFByb3BlcnRpZXNNb2RlbDtcblxuICAgIHNwbGl0czogbnVtYmVyW10gPSBbXTtcblxuICAgIHJlYWRvbmx5IG1pblJvd0hlaWdodCA9IDE5O1xuXG4gICAgcmVhZG9ubHkgYm9yZGVyU2l6ZSA9IDE7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRTZXJ2aWNlOiBDb21wb25lbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGVkaXRvclNlcnZpY2U6IEVkaXRvclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheVNlcnZpY2U6IE92ZXJsYXlTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMudGFibGVTZWxlY3Rpb24/LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNyZWF0ZVRhYmxlKCk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlUHJvcGVydGllcygpO1xuICAgICAgICB0aGlzLmNyZWF0ZVJlc2l6ZXIoKTtcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucmVzaXplckVsKTtcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudGFibGVFbCk7XG4gICAgICAgIHRoaXMudGFibGVTZWxlY3Rpb24gPSBuZXcgVGFibGVTZWxlY3Rpb24oXG4gICAgICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UsXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLFxuICAgICAgICAgICAgdGhpcy5yb3dNYXRyaXgsXG4gICAgICAgICAgICB0aGlzLnRhYmxlLFxuICAgICAgICAgICAgdGhpcy50YWJsZUVsLFxuICAgICAgICAgICAgdGhpcy5zZXNzaW9uSWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRDZWxsU2Vzc2lvbihyb3c6IG51bWJlciwgY29sdW1uOiBudW1iZXIpOiBFZGl0U2Vzc2lvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvd01hdHJpeFtyb3ddLmNlbGxzW2NvbHVtbl0uY29tcG9uZW50UmVmLmluc3RhbmNlLnNlc3Npb247XG4gICAgfVxuXG4gICAgZ2V0Q2VsbFdpZHRoKHRhYmxlUm93OiBSb3dNb2RlbCwgY2VsbEluZGV4OiBudW1iZXIsIGFic29sdXRlQ2VsbEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodGFibGVSb3cuY2VsbHNbY2VsbEluZGV4XS53aWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRhYmxlUm93LmNlbGxzW2NlbGxJbmRleF0ud2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgd2lkdGggPSAwO1xuICAgICAgICBsZXQgaSA9IGFic29sdXRlQ2VsbEluZGV4O1xuICAgICAgICBjb25zdCBjZWxsU3BhbkNvdW50ID0gYWJzb2x1dGVDZWxsSW5kZXggKyB0YWJsZVJvdy5jZWxsc1tjZWxsSW5kZXhdLmhvcml6b250YWxNZXJnZTtcblxuICAgICAgICBkbyB7XG4gICAgICAgICAgICB3aWR0aCArPSB0aGlzLnRhYmxlLmNvbHVtbnNbaV0ud2lkdGg7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH0gd2hpbGUgKGkgPCBjZWxsU3BhbkNvdW50KTtcblxuICAgICAgICByZXR1cm4gd2lkdGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBZGp1c3RlZFdpZHRoKHRhYmxlUm93OiBSb3dNb2RlbCwgY2VsbEluZGV4OiBudW1iZXIsIGFic29sdXRlQ2VsbEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBjZWxsV2lkdGggPSB0aGlzLmdldENlbGxXaWR0aCh0YWJsZVJvdywgY2VsbEluZGV4LCBhYnNvbHV0ZUNlbGxJbmRleCk7XG5cbiAgICAgICAgaWYgKHRhYmxlUm93LmNlbGxzW2NlbGxJbmRleF0ud2lkdGhUeXBlID09PSAncGN0Jykge1xuICAgICAgICAgICAgdGFibGVSb3cuY2VsbHNbY2VsbEluZGV4XS53aWR0aFR5cGUgPSAnZHhhJztcbiAgICAgICAgICAgIHJldHVybiAoY2VsbFdpZHRoICogdGhpcy5fd2lkdGgpIC8gNTAwMDsgLy8gNTAwMCBpcyBlcXVhbCB0byAxMDAlIGluIGRvY3ggdW5pdHMgb2YgbWVhc3VyZW1lbnRcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjZWxsV2lkdGg7XG4gICAgfVxuXG4gICAgY3JlYXRlUmVzaXplcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNpemVyRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5yZXNpemVyRWwuY2xhc3NOYW1lID0gJ3Jlc2l6ZXItYm9yZGVyJztcbiAgICAgICAgdGhpcy5yZXNpemVyRWwuc2V0QXR0cmlidXRlKCdzdHlsZScsIGBkaXNwbGF5Om5vbmU7YCk7XG4gICAgICAgIHRoaXMucmVzaXplciA9IG5ldyBDZWxsUmVzaXplcih0aGlzLnRhYmxlLCB0aGlzLnRhYmxlRWwsIHRoaXMuZWRpdG9yU2VydmljZSwgdGhpcy5yZXNpemVyRWwpO1xuICAgICAgICB0aGlzLnJlc2l6ZXIuc2Vzc2lvbklkID0gdGhpcy5zZXNzaW9uSWQ7XG4gICAgfVxuXG4gICAgY3JlYXRlVGFibGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFibGVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7XG4gICAgICAgIHRoaXMuc2V0Q29sZ3JvdXAoKTtcbiAgICAgICAgdGhpcy5pbnNlcnRSb3dzKHRoaXMudGFibGUucm93cy5sZW5ndGgsIDApO1xuICAgICAgICB0aGlzLmZpbGxUYWJsZUNlbGxzKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlVGFibGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gW10uY29uY2F0KC4uLnRoaXMucm93TWF0cml4Lm1hcCh4ID0+IHguY2VsbHMpKSBhcyBDZWxsRGF0YU1vZGVsW107XG4gICAgICAgIGNvbnN0IHVuaXFDZWxscyA9IG5ldyBTZXQoY2VsbHMubWFwKHggPT4geC5jb21wb25lbnRSZWYpKTtcbiAgICAgICAgdW5pcUNlbGxzLmZvckVhY2goeCA9PiB0aGlzLmNvbXBvbmVudFNlcnZpY2UucmVtb3ZlQ29tcG9uZW50KHgpKTtcbiAgICAgICAgdGhpcy50YWJsZVNlbGVjdGlvbi5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMucm93TWF0cml4ID0gW107XG4gICAgICAgIHRoaXMudGFibGVFbC5yZW1vdmUoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgfVxuXG4gICAgaW5zZXJ0Um93cyhyb3dzQ291bnQ6IG51bWJlciwgdGFyZ2V0SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl93aWR0aCA9IHRoaXMuZ2V0VGFibGVXaWR0aCgpO1xuICAgICAgICBsZXQgcm93SW5kZXggPSAwO1xuXG4gICAgICAgIHdoaWxlIChyb3dJbmRleCA8IHJvd3NDb3VudCkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0Um93SW5kZXggPSB0YXJnZXRJbmRleCArIHJvd0luZGV4O1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gdGhpcy50YWJsZUVsLmluc2VydFJvdyh0YXJnZXRSb3dJbmRleCk7XG4gICAgICAgICAgICB0aGlzLnJvd01hdHJpeC5zcGxpY2UodGFyZ2V0Um93SW5kZXgsIDAsIG5ldyBSb3dEYXRhTW9kZWwocm93LCAwLCBbXSkpO1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRDZWxscyh0YXJnZXRSb3dJbmRleCwgdGhpcy50YWJsZS5yb3dzW3RhcmdldFJvd0luZGV4XS5jZWxscy5sZW5ndGgsIDApO1xuICAgICAgICAgICAgcm93SW5kZXgrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmlsbFRhYmxlUm93KCk7XG4gICAgfVxuXG4gICAgaW5zZXJ0Q2VsbHMocm93SW5kZXg6IG51bWJlciwgY2VsbHNDb3VudDogbnVtYmVyLCB0YXJnZXRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCBtb2RlbFRhcmdldEluZGV4ID0gdGhpcy5nZXRNb2RlbFRhcmdldEluZGV4KHJvd0luZGV4LCB0YXJnZXRJbmRleCk7XG4gICAgICAgIHRoaXMuYWRkQ2VsbHMocm93SW5kZXgsIGNlbGxzQ291bnQsIHRhcmdldEluZGV4LCBtb2RlbFRhcmdldEluZGV4KTtcbiAgICB9XG5cbiAgICBnZXRNb2RlbFRhcmdldEluZGV4KHJvd0luZGV4OiBudW1iZXIsIHRhcmdldEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBsZXQgYWJzb2x1dGVNb2RlbENlbGxDb3VudCA9IDA7XG4gICAgICAgIGxldCBtb2RlbFRhcmdldEluZGV4ID0gMDtcblxuICAgICAgICB3aGlsZSAoYWJzb2x1dGVNb2RlbENlbGxDb3VudCA8IHRhcmdldEluZGV4KSB7XG4gICAgICAgICAgICBhYnNvbHV0ZU1vZGVsQ2VsbENvdW50ICs9IHRoaXMudGFibGUucm93c1tyb3dJbmRleF0uY2VsbHNbbW9kZWxUYXJnZXRJbmRleF0uaG9yaXpvbnRhbE1lcmdlID8/IDE7XG5cbiAgICAgICAgICAgIGlmIChhYnNvbHV0ZU1vZGVsQ2VsbENvdW50ID4gdGFyZ2V0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbW9kZWxUYXJnZXRJbmRleCsrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1vZGVsVGFyZ2V0SW5kZXg7XG4gICAgfVxuXG4gICAgYWRkQ2VsbHMocm93SW5kZXg6IG51bWJlciwgY2VsbHNDb3VudDogbnVtYmVyLCB0YXJnZXRJbmRleDogbnVtYmVyLCBtb2RlbFRhcmdldEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBsZXQgY3VycmVudFRhcmdldEluZGV4ID0gdGFyZ2V0SW5kZXg7XG5cbiAgICAgICAgd2hpbGUgKGkgPCBjZWxsc0NvdW50KSB7XG4gICAgICAgICAgICBjb25zdCBtb2RlbENlbGxJbmRleCA9IG1vZGVsVGFyZ2V0SW5kZXggKyBpO1xuXG4gICAgICAgICAgICBpZiAoKHRoaXMudGFibGUucm93c1tyb3dJbmRleF0uY2VsbHNbbW9kZWxDZWxsSW5kZXhdLnZlcnRpY2FsTWVyZ2UgYXMgVmVydGljYWxNZXJnZSkgPT09IFZlcnRpY2FsTWVyZ2UuTWVyZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmhlcml0Q2VsbERhdGEgPSB0aGlzLnJvd01hdHJpeFtyb3dJbmRleCAtIDFdLmNlbGxzW2N1cnJlbnRUYXJnZXRJbmRleF07XG4gICAgICAgICAgICAgICAgY29uc3QgY291bnQgPSB0aGlzLnRhYmxlLnJvd3Nbcm93SW5kZXhdLmNlbGxzW21vZGVsQ2VsbEluZGV4XS5ob3Jpem9udGFsTWVyZ2UgPz8gMTtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFkZGl0aW9uYWxDZWxscyhyb3dJbmRleCwgY3VycmVudFRhcmdldEluZGV4LCBjb3VudCwgaW5oZXJpdENlbGxEYXRhKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50VGFyZ2V0SW5kZXggKz0gY291bnQ7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjZWxsID0gdGhpcy50YWJsZUVsLnJvd3Nbcm93SW5kZXhdLmluc2VydENlbGwoY3VycmVudFRhcmdldEluZGV4KTtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29tcG9uZW50U2VydmljZS5nZW5lcmF0ZUFuZEF0dGFjaENvbXBvbmVudChjZWxsLCBOb2RlclRhYmxlQ2VsbENvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIHRhYmxlOiB0aGlzLnRhYmxlLFxuICAgICAgICAgICAgICAgIGNlbGw6IHRoaXMudGFibGUucm93c1tyb3dJbmRleF0uY2VsbHNbbW9kZWxDZWxsSW5kZXhdLFxuICAgICAgICAgICAgICAgIHBhcmVudFNlc3Npb25JZDogdGhpcy5zZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgcm93SW5kZXgsXG4gICAgICAgICAgICAgICAgY2VsbEluZGV4OiBtb2RlbENlbGxJbmRleCxcbiAgICAgICAgICAgICAgICBjb2x1bW5JbmRleDogY3VycmVudFRhcmdldEluZGV4LFxuICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLmdldEFkanVzdGVkV2lkdGgodGhpcy50YWJsZS5yb3dzW3Jvd0luZGV4XSwgbW9kZWxDZWxsSW5kZXgsIGN1cnJlbnRUYXJnZXRJbmRleCksXG4gICAgICAgICAgICAgICAgaGVpZ2h0Q2hhbmdlZDogdGhpcy5jZWxsSGVpZ2h0Q2hhbmdlZCxcbiAgICAgICAgICAgICAgICBzdGFydFJlc2l6aW5nOiB0aGlzLnN0YXJ0UmVzaXppbmcsXG4gICAgICAgICAgICAgICAgcHJvcGVydGllczogdGhpcy5wcm9wZXJ0aWVzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGNlbGxDb250ZW50SGVpZ2h0ID0gY29tcG9uZW50UmVmLmluc3RhbmNlLmdldENlbGxDb250ZW50SGVpZ2h0KCk7XG4gICAgICAgICAgICBjb25zdCBjZWxsRGF0YSA9IG5ldyBDZWxsRGF0YU1vZGVsKGNlbGwsIGNlbGxDb250ZW50SGVpZ2h0LCBjb21wb25lbnRSZWYpO1xuICAgICAgICAgICAgdGhpcy5yb3dNYXRyaXhbcm93SW5kZXhdLmNlbGxzLnNwbGljZShjdXJyZW50VGFyZ2V0SW5kZXgsIDAsIGNlbGxEYXRhKTtcbiAgICAgICAgICAgIGN1cnJlbnRUYXJnZXRJbmRleCsrO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50YWJsZS5yb3dzW3Jvd0luZGV4XS5jZWxsc1ttb2RlbENlbGxJbmRleF0uaG9yaXpvbnRhbE1lcmdlID4gMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvdW50ID0gdGhpcy50YWJsZS5yb3dzW3Jvd0luZGV4XS5jZWxsc1ttb2RlbENlbGxJbmRleF0uaG9yaXpvbnRhbE1lcmdlIC0gMTtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFkZGl0aW9uYWxDZWxscyhyb3dJbmRleCwgY3VycmVudFRhcmdldEluZGV4LCBjb3VudCwgY2VsbERhdGEpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXRJbmRleCArPSBjb3VudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkQWRkaXRpb25hbENlbGxzKHJvd0luZGV4OiBudW1iZXIsIGNlbGxJbmRleDogbnVtYmVyLCBjZWxsc0NvdW50OiBudW1iZXIsIG9yaWdpbmFsQ2VsbERhdGE6IENlbGxEYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjZWxsc0NvdW50OyBqKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxDZWxsID0gdGhpcy50YWJsZUVsLnJvd3Nbcm93SW5kZXhdLmluc2VydENlbGwoY2VsbEluZGV4KTtcbiAgICAgICAgICAgIGFkZGl0aW9uYWxDZWxsLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbi1jZWxsJyk7XG4gICAgICAgICAgICBjb25zdCBjZWxsRGF0YSA9IG5ldyBDZWxsRGF0YU1vZGVsKG9yaWdpbmFsQ2VsbERhdGEuY2VsbCwgb3JpZ2luYWxDZWxsRGF0YS5jZWxsQ29udGVudEhlaWdodCwgb3JpZ2luYWxDZWxsRGF0YS5jb21wb25lbnRSZWYpO1xuICAgICAgICAgICAgdGhpcy5yb3dNYXRyaXhbcm93SW5kZXhdLmNlbGxzLnNwbGljZShjZWxsSW5kZXgsIDAsIGNlbGxEYXRhKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldENvbGdyb3VwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBvbGRDb2xHcm91cHMgPSB0aGlzLnRhYmxlRWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NvbGdyb3VwJyk7XG5cbiAgICAgICAgaWYgKG9sZENvbEdyb3Vwcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVFbC5yZW1vdmVDaGlsZChvbGRDb2xHcm91cHNbMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29sZ3JvdXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2xncm91cCcpO1xuICAgICAgICBsZXQgaSA9IDA7XG5cbiAgICAgICAgd2hpbGUgKGkgPCB0aGlzLnRhYmxlLmNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBjb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2wnKTtcbiAgICAgICAgICAgIGNvbC5zdHlsZS53aWR0aCA9IGAke3RoaXMudGFibGUuY29sdW1uc1tpXS53aWR0aH1weGA7XG4gICAgICAgICAgICBjb2xncm91cC5hcHBlbmRDaGlsZChjb2wpO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YWJsZUVsLmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJiZWdpbicsIGNvbGdyb3VwKTtcbiAgICB9XG5cbiAgICBmaWxsVGFibGVSb3coKTogdm9pZCB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50YWJsZS5yb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMudGFibGUucm93c1tpXS5oUnVsZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgSFJ1bGUuQXRMZWFzdDoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dIZWlnaHQgPSB0aGlzLmdldFJvd0hlaWdodChpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUVsLnJvd3NbaV0uc3R5bGUubWluSGVpZ2h0ID0gYCR7dGhpcy50YWJsZS5yb3dzW2ldLmhlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVFbC5yb3dzW2ldLnN0eWxlLmhlaWdodCA9IGAke3Jvd0hlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93TWF0cml4W2ldLmhlaWdodCA9IHJvd0hlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgSFJ1bGUuRXhhY3Q6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVFbC5yb3dzW2ldLnN0eWxlLmhlaWdodCA9IGAke3RoaXMudGFibGUucm93c1tpXS5oZWlnaHR9cHhgO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd01hdHJpeFtpXS5oZWlnaHQgPSB0aGlzLnRhYmxlLnJvd3NbaV0uaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd0hlaWdodCA9IHRoaXMuZ2V0Um93SGVpZ2h0KGkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW5Sb3dIZWlnaHQgPSB0aGlzLnRhYmxlLnJvd3NbaV0uaGVpZ2h0ID8/IHRoaXMubWluUm93SGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRIZWlnaHQgPSBtaW5Sb3dIZWlnaHQgPiByb3dIZWlnaHQgPyBtaW5Sb3dIZWlnaHQgOiByb3dIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVFbC5yb3dzW2ldLnN0eWxlLmhlaWdodCA9IGAke3Jlc3VsdEhlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93TWF0cml4W2ldLmhlaWdodCA9IHJlc3VsdEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Um93SGVpZ2h0KHJvd0luZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBjZWxsSGVpZ2h0cyA9IHRoaXMucm93TWF0cml4W3Jvd0luZGV4XS5jZWxscy5tYXAoKHgsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoKHguY29tcG9uZW50UmVmLmluc3RhbmNlLmNlbGwudmVydGljYWxNZXJnZSBhcyBWZXJ0aWNhbE1lcmdlKSA9PT0gVmVydGljYWxNZXJnZS5SZXN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0VmVydGljYWxNZXJnZWRDZWxsID0geC5jZWxsICE9PSB0aGlzLnJvd01hdHJpeFtyb3dJbmRleCArIDFdPy5jZWxsc1tpbmRleF0uY2VsbDtcblxuICAgICAgICAgICAgICAgIGlmIChpc0xhc3RWZXJ0aWNhbE1lcmdlZENlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSByb3dJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50SGVpZ2h0ID0geC5jZWxsQ29udGVudEhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoeC5jZWxsID09PSB0aGlzLnJvd01hdHJpeFtpXT8uY2VsbHNbaW5kZXhdLmNlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRIZWlnaHQgLT0gdGhpcy5yb3dNYXRyaXhbaV0uaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB4LmNlbGxDb250ZW50SGVpZ2h0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gTWF0aC5tYXgoLi4uY2VsbEhlaWdodHMpO1xuICAgIH1cblxuICAgIGZpbGxUYWJsZUNlbGxzKCk6IHZvaWQge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93TWF0cml4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMucm93TWF0cml4W2ldLmNlbGxzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd01hdHJpeFtpIC0gMV0/LmNlbGxzW2pdPy5jZWxsID09PSB0aGlzLnJvd01hdHJpeFtpXS5jZWxsc1tqXS5jZWxsIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93TWF0cml4W2ldLmNlbGxzW2pdLmNlbGwgPT09IHRoaXMucm93TWF0cml4W2ldLmNlbGxzW2ogLSAxXT8uY2VsbCB8fFxuICAgICAgICAgICAgICAgICAgICAodGhpcy5yb3dNYXRyaXhbaV0uY2VsbHNbal0uY29tcG9uZW50UmVmLmluc3RhbmNlLmNlbGwudmVydGljYWxNZXJnZSBhcyBWZXJ0aWNhbE1lcmdlKSA9PT0gVmVydGljYWxNZXJnZS5NZXJnZVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJvd01hdHJpeFtpXS5jZWxsc1tqXS5jZWxsLmNvbFNwYW4gPSB0aGlzLnJvd01hdHJpeFtpXS5jZWxsc1tqXS5jb21wb25lbnRSZWYuaW5zdGFuY2UuY2VsbC5ob3Jpem9udGFsTWVyZ2U7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3dNYXRyaXhbaV0uY2VsbHNbal0uY2VsbC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd01hdHJpeFtpXS5jZWxsc1tqXS5jb21wb25lbnRSZWYuaW5zdGFuY2UuY2VsbC5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRDZWxsUm93U3BhbihpLCBqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldENlbGxSb3dTcGFuKHJvd0luZGV4OiBudW1iZXIsIGFic29sdXRlQ2VsbEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3dNYXRyaXhbcm93SW5kZXhdLmNlbGxzW2Fic29sdXRlQ2VsbEluZGV4XS5jZWxsLnJvd1NwYW4gPSAxO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0aGlzLnJvd01hdHJpeFtyb3dJbmRleF0uY2VsbHNbYWJzb2x1dGVDZWxsSW5kZXhdLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jZWxsLnZlcnRpY2FsTWVyZ2UgYXMgVmVydGljYWxNZXJnZSkgIT09XG4gICAgICAgICAgICBWZXJ0aWNhbE1lcmdlLlJlc3RhcnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gcm93SW5kZXggKyAxOyBpIDwgdGhpcy5yb3dNYXRyaXgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvd01hdHJpeFtpXS5jZWxsc1thYnNvbHV0ZUNlbGxJbmRleF0uY2VsbCA9PT0gdGhpcy5yb3dNYXRyaXhbcm93SW5kZXhdLmNlbGxzW2Fic29sdXRlQ2VsbEluZGV4XS5jZWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3dNYXRyaXhbcm93SW5kZXhdLmNlbGxzW2Fic29sdXRlQ2VsbEluZGV4XS5jZWxsLnJvd1NwYW4rKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRUYWJsZUhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgbGV0IGJvcmRlcnNIZWlnaHQgPSAwO1xuICAgICAgICBsZXQgcm93c0hlaWdodCA9IDE7XG5cbiAgICAgICAgZm9yIChsZXQgcm93IG9mIHRoaXMucm93TWF0cml4KSB7XG4gICAgICAgICAgICByb3dzSGVpZ2h0ICs9IHJvdy5oZWlnaHQ7XG5cbiAgICAgICAgICAgIGlmIChyb3cuY2VsbHMuc29tZSh4ID0+ICF4LmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jZWxsLnZlcnRpY2FsTWVyZ2UpKSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyc0hlaWdodCArPSB0aGlzLmJvcmRlclNpemU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9oZWlnaHQgPSByb3dzSGVpZ2h0ICsgYm9yZGVyc0hlaWdodDtcbiAgICB9XG5cbiAgICBzdGFydFJlc2l6aW5nID0gKGNlbGxSZXNpemVyUGFyYW1ldGVyczogQ2VsbFJlc2l6ZXJQYXJhbWV0ZXJzTW9kZWwpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3Qgc3BsaXRSb3dJbmRleCA9IHRoaXMuZ2V0U3BsaXRSb3dJbmRleChjZWxsUmVzaXplclBhcmFtZXRlcnMucm93SW5kZXgpO1xuICAgICAgICB0aGlzLnJlc2l6ZXIucmVzaXplckhlaWdodCA9IHRoaXMuZ2V0Um93c0hlaWdodEJldHdlZW5TcGxpdHMoc3BsaXRSb3dJbmRleCk7XG4gICAgICAgIHRoaXMucmVzaXplci5zdGFydFkgPSB0aGlzLmdldFJvd3NIZWlnaHRCZWZvcmUoc3BsaXRSb3dJbmRleCk7XG4gICAgICAgIHRoaXMucmVzaXplci5zcGxpdFJvd0luZGV4ID0gc3BsaXRSb3dJbmRleDtcbiAgICAgICAgdGhpcy5yZXNpemVyLnRhYmxlSW5zZXJ0SW5kZXggPSB0aGlzLmluc2VydEluZGV4O1xuICAgICAgICB0aGlzLnJlc2l6ZXIub25TdGFydFJlc2l6aW5nKGNlbGxSZXNpemVyUGFyYW1ldGVycyk7XG4gICAgfTtcblxuICAgIHByb2Nlc3NTcGxpdChcbiAgICAgICAgbGVmdFNwYWNlT25QYWdlOiBudW1iZXIsXG4gICAgICAgIHNwYWNlQmV0d2VlblBhZ2VzQ29udGVudDogbnVtYmVyLFxuICAgICAgICBjb250ZW50SGVpZ2h0OiBudW1iZXJcbiAgICApOiB7IHNwbGl0c0NvdW50OiBudW1iZXI7IHRhYmxlSGVpZ2h0OiBudW1iZXI7IGxlZnRIZWlnaHQ6IG51bWJlciB9IHtcbiAgICAgICAgdGhpcy5yZW1vdmVTcGxpdHMoKTtcblxuICAgICAgICBpZiAobGVmdFNwYWNlT25QYWdlID49IHRoaXMuaGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4geyBzcGxpdHNDb3VudDogMCwgdGFibGVIZWlnaHQ6IHRoaXMuaGVpZ2h0LCBsZWZ0SGVpZ2h0OiAwIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGVmdFNwYWNlT25QYWdlIDwgdGhpcy5yb3dNYXRyaXhbMF0uaGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4geyBzcGxpdHNDb3VudDogMSwgdGFibGVIZWlnaHQ6IHRoaXMuaGVpZ2h0LCBsZWZ0SGVpZ2h0OiB0aGlzLmhlaWdodCB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3BsaXRUYWJsZShsZWZ0U3BhY2VPblBhZ2UsIHNwYWNlQmV0d2VlblBhZ2VzQ29udGVudCwgY29udGVudEhlaWdodCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzcGxpdFRhYmxlKFxuICAgICAgICBsZWZ0U3BhY2VPblBhZ2U6IG51bWJlcixcbiAgICAgICAgc3BhY2VCZXR3ZWVuUGFnZXNDb250ZW50OiBudW1iZXIsXG4gICAgICAgIGNvbnRlbnRIZWlnaHQ6IG51bWJlclxuICAgICk6IHsgc3BsaXRzQ291bnQ6IG51bWJlcjsgdGFibGVIZWlnaHQ6IG51bWJlcjsgbGVmdEhlaWdodDogbnVtYmVyIH0ge1xuICAgICAgICBsZXQgbGVmdEhlaWdodCA9IDAsXG4gICAgICAgICAgICB0YWJsZUhlaWdodFdpdGhTcGxpdHMgPSB0aGlzLmhlaWdodCxcbiAgICAgICAgICAgIHJvd0luZGV4ID0gMDtcbiAgICAgICAgd2hpbGUgKHJvd0luZGV4IDwgdGhpcy5yb3dNYXRyaXgubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgeyBpbmRleCwgcm93c0hlaWdodCB9ID0gdGhpcy5nZXRSb3dJbmRleEJ5SGVpZ2h0KHJvd0luZGV4LCBsZWZ0U3BhY2VPblBhZ2UpO1xuICAgICAgICAgICAgcm93SW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5yb3dNYXRyaXgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxlZnRIZWlnaHQgPSB0aGlzLnJvd01hdHJpeFxuICAgICAgICAgICAgICAgIC5zbGljZShpbmRleClcbiAgICAgICAgICAgICAgICAubWFwKHggPT4geC5oZWlnaHQpXG4gICAgICAgICAgICAgICAgLnJlZHVjZSgocGFydGlhbFN1bSwgY3VycikgPT4gcGFydGlhbFN1bSArIGN1cnIgKyB0aGlzLmJvcmRlclNpemUpO1xuXG4gICAgICAgICAgICBjb25zdCBzcGxpdFJvd0hlaWdodCA9IHNwYWNlQmV0d2VlblBhZ2VzQ29udGVudCArIGxlZnRTcGFjZU9uUGFnZSAtIHJvd3NIZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVNwbGl0Um93KGluZGV4ICsgdGhpcy5zcGxpdHMubGVuZ3RoLCBzcGxpdFJvd0hlaWdodCk7XG4gICAgICAgICAgICB0aGlzLnNwbGl0cy5wdXNoKGluZGV4ICsgdGhpcy5zcGxpdHMubGVuZ3RoKTtcbiAgICAgICAgICAgIHRhYmxlSGVpZ2h0V2l0aFNwbGl0cyArPSBzcGxpdFJvd0hlaWdodDtcbiAgICAgICAgICAgIGxlZnRTcGFjZU9uUGFnZSA9IGNvbnRlbnRIZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3BsaXRzQ291bnQ6IHRoaXMuc3BsaXRzLmxlbmd0aCxcbiAgICAgICAgICAgIHRhYmxlSGVpZ2h0OiB0YWJsZUhlaWdodFdpdGhTcGxpdHMsXG4gICAgICAgICAgICBsZWZ0SGVpZ2h0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSb3dJbmRleEJ5SGVpZ2h0KHN0YXJ0SW5kZXg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiB7IGluZGV4OiBudW1iZXI7IHJvd3NIZWlnaHQ6IG51bWJlciB9IHtcbiAgICAgICAgaWYgKHN0YXJ0SW5kZXggPj0gdGhpcy5yb3dNYXRyaXgubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4geyBpbmRleDogdGhpcy5yb3dNYXRyaXgubGVuZ3RoLCByb3dzSGVpZ2h0OiAwIH07XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdGFibGVIZWlnaHQgPSB0aGlzLnJvd01hdHJpeFtzdGFydEluZGV4XS5oZWlnaHQgKyB0aGlzLmJvcmRlclNpemUsXG4gICAgICAgICAgICBpID0gc3RhcnRJbmRleDtcblxuICAgICAgICB3aGlsZSAodGFibGVIZWlnaHQgPCBoZWlnaHQpIHtcbiAgICAgICAgICAgIHRhYmxlSGVpZ2h0ICs9IHRoaXMucm93TWF0cml4W2kgKyAxXT8uaGVpZ2h0ICsgdGhpcy5ib3JkZXJTaXplO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgaW5kZXg6IGksIHJvd3NIZWlnaHQ6IHRhYmxlSGVpZ2h0IC0gdGhpcy5yb3dNYXRyaXhbaV0/LmhlaWdodCB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlU3BsaXRSb3coaW5kZXg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJsZUVsLmluc2VydFJvdyhpbmRleCk7XG4gICAgICAgIHRoaXMudGFibGVFbC5yb3dzW2luZGV4XS5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuICAgICAgICB0aGlzLnRhYmxlRWwucm93c1tpbmRleF0uY2xhc3NMaXN0LmFkZCgnc3BsaXQtcm93Jyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVTcGxpdHMoKSB7XG4gICAgICAgIHRoaXMuc3BsaXRzID0gW107XG4gICAgICAgIHdoaWxlICh0aGlzLnRhYmxlRWwucXVlcnlTZWxlY3RvcignLnNwbGl0LXJvdycpKSB7XG4gICAgICAgICAgICBjb25zdCBlbCA9IHRoaXMudGFibGVFbC5xdWVyeVNlbGVjdG9yKCcuc3BsaXQtcm93Jyk7XG4gICAgICAgICAgICBlbC5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjYWxjdWxhdGVQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudGFibGVFbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRUYWJsZUhlaWdodCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGFibGVXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZS5jb2x1bW5zLnJlZHVjZSgocHJldiwgbmV4dCkgPT4gcHJldiArIG5leHQud2lkdGggKyB0aGlzLmJvcmRlclNpemUsIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2VsbEhlaWdodENoYW5nZWQgPSAocm93SW5kZXg6IG51bWJlciwgY2VsbEluZGV4OiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IHRhYmxlUm93ID0gdGhpcy50YWJsZS5yb3dzW3Jvd0luZGV4XTtcbiAgICAgICAgdGhpcy5yb3dNYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0uY2VsbENvbnRlbnRIZWlnaHQgPSBoZWlnaHQgPCB0aGlzLm1pblJvd0hlaWdodCA/IHRoaXMubWluUm93SGVpZ2h0IDogaGVpZ2h0O1xuXG4gICAgICAgIGlmICh0YWJsZVJvdy5oUnVsZSA9PT0gSFJ1bGUuRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvd0luZGV4V2l0aFNwbGl0ID0gdGhpcy5nZXRJbmRleEluY2x1ZGluZ1NwbGl0Um93cyh0aGlzLnJvd01hdHJpeFtyb3dJbmRleF0ucm93KTtcblxuICAgICAgICBjb25zdCByb3cgPSB0aGlzLnRhYmxlRWwucm93c1tyb3dJbmRleFdpdGhTcGxpdF07XG4gICAgICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSByb3cub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBjb25zdCBjZWxsSGVpZ2h0cyA9IHRoaXMucm93TWF0cml4W3Jvd0luZGV4XS5jZWxscy5tYXAoeCA9PiB4LmNlbGxDb250ZW50SGVpZ2h0KTtcbiAgICAgICAgY29uc3QgbWF4Q2VsbENvbnRlbnRIZWlnaCA9IE1hdGgubWF4KC4uLmNlbGxIZWlnaHRzLCBoZWlnaHQpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIG1heENlbGxDb250ZW50SGVpZ2ggPiBjdXJyZW50SGVpZ2h0IHx8XG4gICAgICAgICAgICAobWF4Q2VsbENvbnRlbnRIZWlnaCA8IGN1cnJlbnRIZWlnaHQgJiYgKCF0YWJsZVJvdy5oZWlnaHQgfHwgdGFibGVSb3cuaGVpZ2h0IDw9IG1heENlbGxDb250ZW50SGVpZ2gpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJvdy5zdHlsZS5oZWlnaHQgPSBgJHttYXhDZWxsQ29udGVudEhlaWdofXB4YDtcbiAgICAgICAgICAgIHRoaXMucm93TWF0cml4W3Jvd0luZGV4XS5oZWlnaHQgPSBtYXhDZWxsQ29udGVudEhlaWdoO1xuICAgICAgICAgICAgdGhpcy5zZXRUYWJsZUhlaWdodCgpO1xuICAgICAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmNoYW5nZWRUYWJsZVNpemUodGhpcy5pbnNlcnRJbmRleCwgdGhpcy5zZXNzaW9uSWQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgZ2V0U3BsaXRSb3dJbmRleChyb3dJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEluZGV4SW5jbHVkaW5nU3BsaXRSb3dzKHRoaXMucm93TWF0cml4W3Jvd0luZGV4XS5yb3cpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SW5kZXhJbmNsdWRpbmdTcGxpdFJvd3Mocm93OiBIVE1MVGFibGVSb3dFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy50YWJsZUVsLnJvd3MpLmluZGV4T2Yocm93KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJvd3NIZWlnaHRCZWZvcmUocm93SW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB0aGlzLnNwbGl0cykge1xuICAgICAgICAgICAgaWYgKHJvd0luZGV4IDwgZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbmRleCA9IGVsZW1lbnQgKyAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um93c0hlaWdodCgwLCBpbmRleCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSb3dzSGVpZ2h0QmV0d2VlblNwbGl0cyhyb3dJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHN0YXJ0SW5kZXggPSAwO1xuICAgICAgICBsZXQgZW5kSW5kZXggPSB0aGlzLnRhYmxlRWwucm93cy5sZW5ndGg7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB0aGlzLnNwbGl0cykge1xuICAgICAgICAgICAgaWYgKHJvd0luZGV4IDwgZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3RhcnRJbmRleCA9IGVsZW1lbnQgKyAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um93c0hlaWdodChzdGFydEluZGV4LCBlbmRJbmRleCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSb3dzSGVpZ2h0KHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7XG4gICAgICAgICAgICBzdW0gKz0gdGhpcy50YWJsZUVsLnJvd3NbaV0ub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICB9XG59XG4iXX0=
401
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvK3NoYXJlZC9lZGl0b3IvY3VzdG9tLWNvbXBvbmVudHMvdGFibGUvY29tcG9uZW50cy90YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFFMUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUszRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQVE3RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsa0JBQWtCO0lBQ3ZELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLE9BQXFCLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEdBQWU7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDdkIsQ0FBQztJQWtCRCxZQUNZLGdCQUFrQyxFQUNsQyxhQUE0QixFQUM1QixFQUFjLEVBQ2QsY0FBOEI7UUFFdEMsS0FBSyxFQUFFLENB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LENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN4QyxLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDL0IsSUFBSSxRQUFRLEdBQUcsT0FBTyxFQUFFO2dCQUNwQixRQUFRLEdBQUcsT0FBTyxDQUFDO2dCQUNuQixNQUFNO2FBQ1Q7WUFFRCxVQUFVLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQztTQUM1QjtRQUVELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFhLEVBQUUsR0FBVztRQUM1QyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzlCLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDNUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7OEdBbmZRLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDhFQUpsQixFQUFFOzsyRkFJSCxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0ksaUJBQWlCLFlBQ2pCLEVBQUUsbUJBRUssdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlTm9kZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvYWJzdHJhY3QvYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2VsbERhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscy9jZWxsLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgQ2VsbFJlc2l6ZXIgfSBmcm9tICcuLi9jZWxsLXJlc2l6ZXIvY2VsbC1yZXNpemVyJztcbmltcG9ydCB7IENlbGxSZXNpemVyUGFyYW1ldGVyc01vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2NlbGwtcmVzaXplci1wYXJhbWV0ZXJzLm1vZGVsJztcbmltcG9ydCB7IENvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvY29tcG9uZW50L2NvbXBvbmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEVkaXRTZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9lZGl0LnNlc3Npb24nO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyYWN0aW9uL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IEhSdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtcy9ocnVsZS5lbnVtJztcbmltcG9ydCB7IE5vZGVyVGFibGVDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPdmVybGF5U2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9vdmVybGF5L292ZXJsYXkuc2VydmljZSc7XG5pbXBvcnQgeyBSb3dEYXRhTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvcm93LWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgUm93TW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jvdy5tb2RlbCc7XG5pbXBvcnQgeyBTY2FsaW5nSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vaGVscGVycy9zY2FsaW5nLmhlbHBlcic7XG5pbXBvcnQgeyBUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBUYWJsZVNlbGVjdGlvbiB9IGZyb20gJy4uL3NlbGVjdGlvbi90YWJsZS1zZWxlY3Rpb24nO1xuaW1wb3J0IHsgVmVydGljYWxNZXJnZSB9IGZyb20gJy4uL2VudW1zL3ZlcnRpY2FsLW1lcmdlLmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1ub2Rlci10YWJsZScsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTm9kZXJUYWJsZUNvbXBvbmVudCBleHRlbmRzIEJhc2VOb2RlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgZ2V0IHRhYmxlKCk6IFRhYmxlTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50IGFzIFRhYmxlTW9kZWw7XG4gICAgfVxuICAgIHNldCB0YWJsZSh2YWw6IFRhYmxlTW9kZWwpIHtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gdmFsO1xuICAgIH1cblxuICAgIHRhYmxlU2VsZWN0aW9uOiBUYWJsZVNlbGVjdGlvbjtcblxuICAgIHRhYmxlRWw6IEhUTUxUYWJsZUVsZW1lbnQ7XG5cbiAgICByZXNpemVyOiBDZWxsUmVzaXplcjtcblxuICAgIHJlc2l6ZXJFbDogSFRNTERpdkVsZW1lbnQ7XG5cbiAgICByb3dNYXRyaXg6IFJvd0RhdGFNb2RlbFtdID0gW107XG5cbiAgICBzcGxpdHM6IG51bWJlcltdID0gW107XG5cbiAgICByZWFkb25seSBtaW5Sb3dIZWlnaHQgPSAxOTtcblxuICAgIHJlYWRvbmx5IGJvcmRlclNpemUgPSAxO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY29tcG9uZW50U2VydmljZTogQ29tcG9uZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLnRhYmxlU2VsZWN0aW9uPy5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jcmVhdGVUYWJsZSgpO1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZVByb3BlcnRpZXMoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVSZXNpemVyKCk7XG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnJlc2l6ZXJFbCk7XG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnRhYmxlRWwpO1xuICAgICAgICB0aGlzLnRhYmxlU2VsZWN0aW9uID0gbmV3IFRhYmxlU2VsZWN0aW9uKFxuICAgICAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLFxuICAgICAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZSxcbiAgICAgICAgICAgIHRoaXMucm93TWF0cml4LFxuICAgICAgICAgICAgdGhpcy50YWJsZSxcbiAgICAgICAgICAgIHRoaXMudGFibGVFbCxcbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvbklkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0Q2VsbFNlc3Npb24ocm93OiBudW1iZXIsIGNvbHVtbjogbnVtYmVyKTogRWRpdFNlc3Npb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3dNYXRyaXhbcm93XS5jZWxsc1tjb2x1bW5dLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZXNzaW9uO1xuICAgIH1cblxuICAgIGdldENlbGxXaWR0aCh0YWJsZVJvdzogUm93TW9kZWwsIGNlbGxJbmRleDogbnVtYmVyLCBhYnNvbHV0ZUNlbGxJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRhYmxlUm93LmNlbGxzW2NlbGxJbmRleF0ud2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0YWJsZVJvdy5jZWxsc1tjZWxsSW5kZXhdLndpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHdpZHRoID0gMDtcbiAgICAgICAgbGV0IGkgPSBhYnNvbHV0ZUNlbGxJbmRleDtcbiAgICAgICAgY29uc3QgY2VsbFNwYW5Db3VudCA9IGFic29sdXRlQ2VsbEluZGV4ICsgdGFibGVSb3cuY2VsbHNbY2VsbEluZGV4XS5ob3Jpem9udGFsTWVyZ2U7XG5cbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgd2lkdGggKz0gdGhpcy50YWJsZS5jb2x1bW5zW2ldLndpZHRoO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9IHdoaWxlIChpIDwgY2VsbFNwYW5Db3VudCk7XG5cbiAgICAgICAgcmV0dXJuIHdpZHRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWRqdXN0ZWRXaWR0aCh0YWJsZVJvdzogUm93TW9kZWwsIGNlbGxJbmRleDogbnVtYmVyLCBhYnNvbHV0ZUNlbGxJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgY2VsbFdpZHRoID0gdGhpcy5nZXRDZWxsV2lkdGgodGFibGVSb3csIGNlbGxJbmRleCwgYWJzb2x1dGVDZWxsSW5kZXgpO1xuXG4gICAgICAgIGlmICh0YWJsZVJvdy5jZWxsc1tjZWxsSW5kZXhdLndpZHRoVHlwZSA9PT0gJ3BjdCcpIHtcbiAgICAgICAgICAgIHRhYmxlUm93LmNlbGxzW2NlbGxJbmRleF0ud2lkdGhUeXBlID0gJ2R4YSc7XG4gICAgICAgICAgICByZXR1cm4gKGNlbGxXaWR0aCAqIHRoaXMuX3dpZHRoKSAvIDUwMDA7IC8vIDUwMDAgaXMgZXF1YWwgdG8gMTAwJSBpbiBkb2N4IHVuaXRzIG9mIG1lYXN1cmVtZW50XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU2NhbGluZ0hlbHBlci5zY2FsZShjZWxsV2lkdGgsIHRoaXMuZ2VuZXJhbFByb3BlcnRpZXMuc2NhbGluZ1JhdGlvKTtcbiAgICB9XG5cbiAgICBjcmVhdGVSZXNpemVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2l6ZXJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLnJlc2l6ZXJFbC5jbGFzc05hbWUgPSAncmVzaXplci1ib3JkZXInO1xuICAgICAgICB0aGlzLnJlc2l6ZXJFbC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgYGRpc3BsYXk6bm9uZTtgKTtcbiAgICAgICAgdGhpcy5yZXNpemVyID0gbmV3IENlbGxSZXNpemVyKHRoaXMudGFibGUsIHRoaXMudGFibGVFbCwgdGhpcy5lZGl0b3JTZXJ2aWNlLCB0aGlzLnJlc2l6ZXJFbCk7XG4gICAgICAgIHRoaXMucmVzaXplci5zZXNzaW9uSWQgPSB0aGlzLnNlc3Npb25JZDtcbiAgICB9XG5cbiAgICBjcmVhdGVUYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJsZUVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTtcbiAgICAgICAgdGhpcy5zZXRDb2xncm91cCgpO1xuICAgICAgICB0aGlzLmluc2VydFJvd3ModGhpcy50YWJsZS5yb3dzLmxlbmd0aCwgMCk7XG4gICAgICAgIHRoaXMuZmlsbFRhYmxlQ2VsbHMoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVUYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBbXS5jb25jYXQoLi4udGhpcy5yb3dNYXRyaXgubWFwKHggPT4geC5jZWxscykpIGFzIENlbGxEYXRhTW9kZWxbXTtcbiAgICAgICAgY29uc3QgdW5pcUNlbGxzID0gbmV3IFNldChjZWxscy5tYXAoeCA9PiB4LmNvbXBvbmVudFJlZikpO1xuICAgICAgICB1bmlxQ2VsbHMuZm9yRWFjaCh4ID0+IHRoaXMuY29tcG9uZW50U2VydmljZS5yZW1vdmVDb21wb25lbnQoeCkpO1xuICAgICAgICB0aGlzLnRhYmxlU2VsZWN0aW9uLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5yb3dNYXRyaXggPSBbXTtcbiAgICAgICAgdGhpcy50YWJsZUVsLnJlbW92ZSgpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgICB9XG5cbiAgICBpbnNlcnRSb3dzKHJvd3NDb3VudDogbnVtYmVyLCB0YXJnZXRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3dpZHRoID0gdGhpcy5nZXRUYWJsZVdpZHRoKCk7XG4gICAgICAgIGxldCByb3dJbmRleCA9IDA7XG5cbiAgICAgICAgd2hpbGUgKHJvd0luZGV4IDwgcm93c0NvdW50KSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRSb3dJbmRleCA9IHRhcmdldEluZGV4ICsgcm93SW5kZXg7XG4gICAgICAgICAgICBjb25zdCByb3cgPSB0aGlzLnRhYmxlRWwuaW5zZXJ0Um93KHRhcmdldFJvd0luZGV4KTtcbiAgICAgICAgICAgIHRoaXMucm93TWF0cml4LnNwbGljZSh0YXJnZXRSb3dJbmRleCwgMCwgbmV3IFJvd0RhdGFNb2RlbChyb3csIDAsIFtdKSk7XG4gICAgICAgICAgICB0aGlzLmluc2VydENlbGxzKHRhcmdldFJvd0luZGV4LCB0aGlzLnRhYmxlLnJvd3NbdGFyZ2V0Um93SW5kZXhdLmNlbGxzLmxlbmd0aCwgMCk7XG4gICAgICAgICAgICByb3dJbmRleCsrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maWxsVGFibGVSb3coKTtcbiAgICB9XG5cbiAgICBpbnNlcnRDZWxscyhyb3dJbmRleDogbnVtYmVyLCBjZWxsc0NvdW50OiBudW1iZXIsIHRhcmdldEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgbGV0IG1vZGVsVGFyZ2V0SW5kZXggPSB0aGlzLmdldE1vZGVsVGFyZ2V0SW5kZXgocm93SW5kZXgsIHRhcmdldEluZGV4KTtcbiAgICAgICAgdGhpcy5hZGRDZWxscyhyb3dJbmRleCwgY2VsbHNDb3VudCwgdGFyZ2V0SW5kZXgsIG1vZGVsVGFyZ2V0SW5kZXgpO1xuICAgIH1cblxuICAgIGdldE1vZGVsVGFyZ2V0SW5kZXgocm93SW5kZXg6IG51bWJlciwgdGFyZ2V0SW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGxldCBhYnNvbHV0ZU1vZGVsQ2VsbENvdW50ID0gMDtcbiAgICAgICAgbGV0IG1vZGVsVGFyZ2V0SW5kZXggPSAwO1xuXG4gICAgICAgIHdoaWxlIChhYnNvbHV0ZU1vZGVsQ2VsbENvdW50IDwgdGFyZ2V0SW5kZXgpIHtcbiAgICAgICAgICAgIGFic29sdXRlTW9kZWxDZWxsQ291bnQgKz0gdGhpcy50YWJsZS5yb3dzW3Jvd0luZGV4XS5jZWxsc1ttb2RlbFRhcmdldEluZGV4XS5ob3Jpem9udGFsTWVyZ2UgPz8gMTtcblxuICAgICAgICAgICAgaWYgKGFic29sdXRlTW9kZWxDZWxsQ291bnQgPiB0YXJnZXRJbmRleCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtb2RlbFRhcmdldEluZGV4Kys7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbW9kZWxUYXJnZXRJbmRleDtcbiAgICB9XG5cbiAgICBhZGRDZWxscyhyb3dJbmRleDogbnVtYmVyLCBjZWxsc0NvdW50OiBudW1iZXIsIHRhcmdldEluZGV4OiBudW1iZXIsIG1vZGVsVGFyZ2V0SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGxldCBjdXJyZW50VGFyZ2V0SW5kZXggPSB0YXJnZXRJbmRleDtcblxuICAgICAgICB3aGlsZSAoaSA8IGNlbGxzQ291bnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsQ2VsbEluZGV4ID0gbW9kZWxUYXJnZXRJbmRleCArIGk7XG5cbiAgICAgICAgICAgIGlmICgodGhpcy50YWJsZS5yb3dzW3Jvd0luZGV4XS5jZWxsc1ttb2RlbENlbGxJbmRleF0udmVydGljYWxNZXJnZSBhcyBWZXJ0aWNhbE1lcmdlKSA9PT0gVmVydGljYWxNZXJnZS5NZXJnZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluaGVyaXRDZWxsRGF0YSA9IHRoaXMucm93TWF0cml4W3Jvd0luZGV4IC0gMV0uY2VsbHNbY3VycmVudFRhcmdldEluZGV4XTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb3VudCA9IHRoaXMudGFibGUucm93c1tyb3dJbmRleF0uY2VsbHNbbW9kZWxDZWxsSW5kZXhdLmhvcml6b250YWxNZXJnZSA/PyAxO1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQWRkaXRpb25hbENlbGxzKHJvd0luZGV4LCBjdXJyZW50VGFyZ2V0SW5kZXgsIGNvdW50LCBpbmhlcml0Q2VsbERhdGEpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXRJbmRleCArPSBjb3VudDtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNlbGwgPSB0aGlzLnRhYmxlRWwucm93c1tyb3dJbmRleF0uaW5zZXJ0Q2VsbChjdXJyZW50VGFyZ2V0SW5kZXgpO1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRTZXJ2aWNlLmdlbmVyYXRlQW5kQXR0YWNoQ29tcG9uZW50KGNlbGwsIE5vZGVyVGFibGVDZWxsQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgdGFibGU6IHRoaXMudGFibGUsXG4gICAgICAgICAgICAgICAgY2VsbDogdGhpcy50YWJsZS5yb3dzW3Jvd0luZGV4XS5jZWxsc1ttb2RlbENlbGxJbmRleF0sXG4gICAgICAgICAgICAgICAgcGFyZW50U2Vzc2lvbklkOiB0aGlzLnNlc3Npb25JZCxcbiAgICAgICAgICAgICAgICByb3dJbmRleCxcbiAgICAgICAgICAgICAgICBjZWxsSW5kZXg6IG1vZGVsQ2VsbEluZGV4LFxuICAgICAgICAgICAgICAgIGNvbHVtbkluZGV4OiBjdXJyZW50VGFyZ2V0SW5kZXgsXG4gICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuZ2V0QWRqdXN0ZWRXaWR0aCh0aGlzLnRhYmxlLnJvd3Nbcm93SW5kZXhdLCBtb2RlbENlbGxJbmRleCwgY3VycmVudFRhcmdldEluZGV4KSxcbiAgICAgICAgICAgICAgICBnZW5lcmFsUHJvcGVydGllczogdGhpcy5nZW5lcmFsUHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICBoZWlnaHRDaGFuZ2VkOiB0aGlzLmNlbGxIZWlnaHRDaGFuZ2VkLFxuICAgICAgICAgICAgICAgIHN0YXJ0UmVzaXppbmc6IHRoaXMuc3RhcnRSZXNpemluZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBjZWxsQ29udGVudEhlaWdodCA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZS5nZXRDZWxsQ29udGVudEhlaWdodCgpO1xuICAgICAgICAgICAgY29uc3QgY2VsbERhdGEgPSBuZXcgQ2VsbERhdGFNb2RlbChjZWxsLCBjZWxsQ29udGVudEhlaWdodCwgY29tcG9uZW50UmVmKTtcbiAgICAgICAgICAgIHRoaXMucm93TWF0cml4W3Jvd0luZGV4XS5jZWxscy5zcGxpY2UoY3VycmVudFRhcmdldEluZGV4LCAwLCBjZWxsRGF0YSk7XG4gICAgICAgICAgICBjdXJyZW50VGFyZ2V0SW5kZXgrKztcblxuICAgICAgICAgICAgaWYgKHRoaXMudGFibGUucm93c1tyb3dJbmRleF0uY2VsbHNbbW9kZWxDZWxsSW5kZXhdLmhvcml6b250YWxNZXJnZSA+IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb3VudCA9IHRoaXMudGFibGUucm93c1tyb3dJbmRleF0uY2VsbHNbbW9kZWxDZWxsSW5kZXhdLmhvcml6b250YWxNZXJnZSAtIDE7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBZGRpdGlvbmFsQ2VsbHMocm93SW5kZXgsIGN1cnJlbnRUYXJnZXRJbmRleCwgY291bnQsIGNlbGxEYXRhKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50VGFyZ2V0SW5kZXggKz0gY291bnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZEFkZGl0aW9uYWxDZWxscyhyb3dJbmRleDogbnVtYmVyLCBjZWxsSW5kZXg6IG51bWJlciwgY2VsbHNDb3VudDogbnVtYmVyLCBvcmlnaW5hbENlbGxEYXRhOiBDZWxsRGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY2VsbHNDb3VudDsgaisrKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsQ2VsbCA9IHRoaXMudGFibGVFbC5yb3dzW3Jvd0luZGV4XS5pbnNlcnRDZWxsKGNlbGxJbmRleCk7XG4gICAgICAgICAgICBhZGRpdGlvbmFsQ2VsbC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4tY2VsbCcpO1xuICAgICAgICAgICAgY29uc3QgY2VsbERhdGEgPSBuZXcgQ2VsbERhdGFNb2RlbChvcmlnaW5hbENlbGxEYXRhLmNlbGwsIG9yaWdpbmFsQ2VsbERhdGEuY2VsbENvbnRlbnRIZWlnaHQsIG9yaWdpbmFsQ2VsbERhdGEuY29tcG9uZW50UmVmKTtcbiAgICAgICAgICAgIHRoaXMucm93TWF0cml4W3Jvd0luZGV4XS5jZWxscy5zcGxpY2UoY2VsbEluZGV4LCAwLCBjZWxsRGF0YSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRDb2xncm91cCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2xkQ29sR3JvdXBzID0gdGhpcy50YWJsZUVsLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjb2xncm91cCcpO1xuXG4gICAgICAgIGlmIChvbGRDb2xHcm91cHMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlRWwucmVtb3ZlQ2hpbGQob2xkQ29sR3JvdXBzWzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbGdyb3VwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29sZ3JvdXAnKTtcbiAgICAgICAgbGV0IGkgPSAwO1xuXG4gICAgICAgIHdoaWxlIChpIDwgdGhpcy50YWJsZS5jb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgY29sID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29sJyk7XG4gICAgICAgICAgICBjb25zdCBzY2FsZWRXaWR0aCA9IFNjYWxpbmdIZWxwZXIuc2NhbGUodGhpcy50YWJsZS5jb2x1bW5zW2ldLndpZHRoLCB0aGlzLmdlbmVyYWxQcm9wZXJ0aWVzLnNjYWxpbmdSYXRpbyk7XG4gICAgICAgICAgICBjb2wuc3R5bGUud2lkdGggPSBgJHtzY2FsZWRXaWR0aH1weGA7XG4gICAgICAgICAgICBjb2xncm91cC5hcHBlbmRDaGlsZChjb2wpO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YWJsZUVsLmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJiZWdpbicsIGNvbGdyb3VwKTtcbiAgICB9XG5cbiAgICBmaWxsVGFibGVSb3coKTogdm9pZCB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50YWJsZS5yb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMudGFibGUucm93c1tpXS5oUnVsZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgSFJ1bGUuQXRMZWFzdDoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dIZWlnaHQgPSB0aGlzLmdldFJvd0hlaWdodChpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUVsLnJvd3NbaV0uc3R5bGUubWluSGVpZ2h0ID0gYCR7dGhpcy50YWJsZS5yb3dzW2ldLmhlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVFbC5yb3dzW2ldLnN0eWxlLmhlaWdodCA9IGAke3Jvd0hlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93TWF0cml4W2ldLmhlaWdodCA9IHJvd0hlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgSFJ1bGUuRXhhY3Q6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVFbC5yb3dzW2ldLnN0eWxlLmhlaWdodCA9IGAke3RoaXMudGFibGUucm93c1tpXS5oZWlnaHR9cHhgO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd01hdHJpeFtpXS5oZWlnaHQgPSB0aGlzLnRhYmxlLnJvd3NbaV0uaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd0hlaWdodCA9IHRoaXMuZ2V0Um93SGVpZ2h0KGkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW5Sb3dIZWlnaHQgPSB0aGlzLnRhYmxlLnJvd3NbaV0uaGVpZ2h0ID8/IHRoaXMubWluUm93SGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRIZWlnaHQgPSBtaW5Sb3dIZWlnaHQgPiByb3dIZWlnaHQgPyBtaW5Sb3dIZWlnaHQgOiByb3dIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVFbC5yb3dzW2ldLnN0eWxlLmhlaWdodCA9IGAke3Jlc3VsdEhlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93TWF0cml4W2ldLmhlaWdodCA9IHJlc3VsdEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Um93SGVpZ2h0KHJvd0luZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBjZWxsSGVpZ2h0cyA9IHRoaXMucm93TWF0cml4W3Jvd0luZGV4XS5jZWxscy5tYXAoKHgsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoKHguY29tcG9uZW50UmVmLmluc3RhbmNlLmNlbGwudmVydGljYWxNZXJnZSBhcyBWZXJ0aWNhbE1lcmdlKSA9PT0gVmVydGljYWxNZXJnZS5SZXN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0VmVydGljYWxNZXJnZWRDZWxsID0geC5jZWxsICE9PSB0aGlzLnJvd01hdHJpeFtyb3dJbmRleCArIDFdPy5jZWxsc1tpbmRleF0uY2VsbDtcblxuICAgICAgICAgICAgICAgIGlmIChpc0xhc3RWZXJ0aWNhbE1lcmdlZENlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSByb3dJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50SGVpZ2h0ID0geC5jZWxsQ29udGVudEhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoeC5jZWxsID09PSB0aGlzLnJvd01hdHJpeFtpXT8uY2VsbHNbaW5kZXhdLmNlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRIZWlnaHQgLT0gdGhpcy5yb3dNYXRyaXhbaV0uaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB4LmNlbGxDb250ZW50SGVpZ2h0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gTWF0aC5tYXgoLi4uY2VsbEhlaWdodHMpO1xuICAgIH1cblxuICAgIGZpbGxUYWJsZUNlbGxzKCk6IHZvaWQge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93TWF0cml4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMucm93TWF0cml4W2ldLmNlbGxzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd01hdHJpeFtpIC0gMV0/LmNlbGxzW2pdPy5jZWxsID09PSB0aGlzLnJvd01hdHJpeFtpXS5jZWxsc1tqXS5jZWxsIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93TWF0cml4W2ldLmNlbGxzW2pdLmNlbGwgPT09IHRoaXMucm93TWF0cml4W2ldLmNlbGxzW2ogLSAxXT8uY2VsbCB8fFxuICAgICAgICAgICAgICAgICAgICAodGhpcy5yb3dNYXRyaXhbaV0uY2VsbHNbal0uY29tcG9uZW50UmVmLmluc3RhbmNlLmNlbGwudmVydGljYWxNZXJnZSBhcyBWZXJ0aWNhbE1lcmdlKSA9PT0gVmVydGljYWxNZXJnZS5NZXJnZVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJvd01hdHJpeFtpXS5jZWxsc1tqXS5jZWxsLmNvbFNwYW4gPSB0aGlzLnJvd01hdHJpeFtpXS5jZWxsc1tqXS5jb21wb25lbnRSZWYuaW5zdGFuY2UuY2VsbC5ob3Jpem9udGFsTWVyZ2U7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3dNYXRyaXhbaV0uY2VsbHNbal0uY2VsbC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd01hdHJpeFtpXS5jZWxsc1tqXS5jb21wb25lbnRSZWYuaW5zdGFuY2UuY2VsbC5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRDZWxsUm93U3BhbihpLCBqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldENlbGxSb3dTcGFuKHJvd0luZGV4OiBudW1iZXIsIGFic29sdXRlQ2VsbEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3dNYXRyaXhbcm93SW5kZXhdLmNlbGxzW2Fic29sdXRlQ2VsbEluZGV4XS5jZWxsLnJvd1NwYW4gPSAxO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0aGlzLnJvd01hdHJpeFtyb3dJbmRleF0uY2VsbHNbYWJzb2x1dGVDZWxsSW5kZXhdLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jZWxsLnZlcnRpY2FsTWVyZ2UgYXMgVmVydGljYWxNZXJnZSkgIT09XG4gICAgICAgICAgICBWZXJ0aWNhbE1lcmdlLlJlc3RhcnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gcm93SW5kZXggKyAxOyBpIDwgdGhpcy5yb3dNYXRyaXgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvd01hdHJpeFtpXS5jZWxsc1thYnNvbHV0ZUNlbGxJbmRleF0uY2VsbCA9PT0gdGhpcy5yb3dNYXRyaXhbcm93SW5kZXhdLmNlbGxzW2Fic29sdXRlQ2VsbEluZGV4XS5jZWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3dNYXRyaXhbcm93SW5kZXhdLmNlbGxzW2Fic29sdXRlQ2VsbEluZGV4XS5jZWxsLnJvd1NwYW4rKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRUYWJsZUhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgbGV0IGJvcmRlcnNIZWlnaHQgPSAwO1xuICAgICAgICBsZXQgcm93c0hlaWdodCA9IDE7XG5cbiAgICAgICAgZm9yIChsZXQgcm93IG9mIHRoaXMucm93TWF0cml4KSB7XG4gICAgICAgICAgICByb3dzSGVpZ2h0ICs9IHJvdy5oZWlnaHQ7XG5cbiAgICAgICAgICAgIGlmIChyb3cuY2VsbHMuc29tZSh4ID0+ICF4LmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jZWxsLnZlcnRpY2FsTWVyZ2UpKSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyc0hlaWdodCArPSB0aGlzLmJvcmRlclNpemU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9oZWlnaHQgPSByb3dzSGVpZ2h0ICsgYm9yZGVyc0hlaWdodDtcbiAgICB9XG5cbiAgICBzdGFydFJlc2l6aW5nID0gKGNlbGxSZXNpemVyUGFyYW1ldGVyczogQ2VsbFJlc2l6ZXJQYXJhbWV0ZXJzTW9kZWwpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3Qgc3BsaXRSb3dJbmRleCA9IHRoaXMuZ2V0U3BsaXRSb3dJbmRleChjZWxsUmVzaXplclBhcmFtZXRlcnMucm93SW5kZXgpO1xuICAgICAgICB0aGlzLnJlc2l6ZXIucmVzaXplckhlaWdodCA9IHRoaXMuZ2V0Um93c0hlaWdodEJldHdlZW5TcGxpdHMoc3BsaXRSb3dJbmRleCk7XG4gICAgICAgIHRoaXMucmVzaXplci5zdGFydFkgPSB0aGlzLmdldFJvd3NIZWlnaHRCZWZvcmUoc3BsaXRSb3dJbmRleCk7XG4gICAgICAgIHRoaXMucmVzaXplci5zcGxpdFJvd0luZGV4ID0gc3BsaXRSb3dJbmRleDtcbiAgICAgICAgdGhpcy5yZXNpemVyLnRhYmxlSW5zZXJ0SW5kZXggPSB0aGlzLmluc2VydEluZGV4O1xuICAgICAgICB0aGlzLnJlc2l6ZXIub25TdGFydFJlc2l6aW5nKGNlbGxSZXNpemVyUGFyYW1ldGVycyk7XG4gICAgfTtcblxuICAgIHByb2Nlc3NTcGxpdChcbiAgICAgICAgbGVmdFNwYWNlT25QYWdlOiBudW1iZXIsXG4gICAgICAgIHNwYWNlQmV0d2VlblBhZ2VzQ29udGVudDogbnVtYmVyLFxuICAgICAgICBjb250ZW50SGVpZ2h0OiBudW1iZXJcbiAgICApOiB7IHNwbGl0c0NvdW50OiBudW1iZXI7IHRhYmxlSGVpZ2h0OiBudW1iZXI7IGxlZnRIZWlnaHQ6IG51bWJlciB9IHtcbiAgICAgICAgdGhpcy5yZW1vdmVTcGxpdHMoKTtcblxuICAgICAgICBpZiAobGVmdFNwYWNlT25QYWdlID49IHRoaXMuaGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4geyBzcGxpdHNDb3VudDogMCwgdGFibGVIZWlnaHQ6IHRoaXMuaGVpZ2h0LCBsZWZ0SGVpZ2h0OiAwIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGVmdFNwYWNlT25QYWdlIDwgdGhpcy5yb3dNYXRyaXhbMF0uaGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4geyBzcGxpdHNDb3VudDogMSwgdGFibGVIZWlnaHQ6IHRoaXMuaGVpZ2h0LCBsZWZ0SGVpZ2h0OiB0aGlzLmhlaWdodCB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3BsaXRUYWJsZShsZWZ0U3BhY2VPblBhZ2UsIHNwYWNlQmV0d2VlblBhZ2VzQ29udGVudCwgY29udGVudEhlaWdodCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzcGxpdFRhYmxlKFxuICAgICAgICBsZWZ0U3BhY2VPblBhZ2U6IG51bWJlcixcbiAgICAgICAgc3BhY2VCZXR3ZWVuUGFnZXNDb250ZW50OiBudW1iZXIsXG4gICAgICAgIGNvbnRlbnRIZWlnaHQ6IG51bWJlclxuICAgICk6IHsgc3BsaXRzQ291bnQ6IG51bWJlcjsgdGFibGVIZWlnaHQ6IG51bWJlcjsgbGVmdEhlaWdodDogbnVtYmVyIH0ge1xuICAgICAgICBsZXQgbGVmdEhlaWdodCA9IDAsXG4gICAgICAgICAgICB0YWJsZUhlaWdodFdpdGhTcGxpdHMgPSB0aGlzLmhlaWdodCxcbiAgICAgICAgICAgIHJvd0luZGV4ID0gMDtcbiAgICAgICAgd2hpbGUgKHJvd0luZGV4IDwgdGhpcy5yb3dNYXRyaXgubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgeyBpbmRleCwgcm93c0hlaWdodCB9ID0gdGhpcy5nZXRSb3dJbmRleEJ5SGVpZ2h0KHJvd0luZGV4LCBsZWZ0U3BhY2VPblBhZ2UpO1xuICAgICAgICAgICAgcm93SW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5yb3dNYXRyaXgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxlZnRIZWlnaHQgPSB0aGlzLnJvd01hdHJpeFxuICAgICAgICAgICAgICAgIC5zbGljZShpbmRleClcbiAgICAgICAgICAgICAgICAubWFwKHggPT4geC5oZWlnaHQpXG4gICAgICAgICAgICAgICAgLnJlZHVjZSgocGFydGlhbFN1bSwgY3VycikgPT4gcGFydGlhbFN1bSArIGN1cnIgKyB0aGlzLmJvcmRlclNpemUpO1xuXG4gICAgICAgICAgICBjb25zdCBzcGxpdFJvd0hlaWdodCA9IHNwYWNlQmV0d2VlblBhZ2VzQ29udGVudCArIGxlZnRTcGFjZU9uUGFnZSAtIHJvd3NIZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVNwbGl0Um93KGluZGV4ICsgdGhpcy5zcGxpdHMubGVuZ3RoLCBzcGxpdFJvd0hlaWdodCk7XG4gICAgICAgICAgICB0aGlzLnNwbGl0cy5wdXNoKGluZGV4ICsgdGhpcy5zcGxpdHMubGVuZ3RoKTtcbiAgICAgICAgICAgIHRhYmxlSGVpZ2h0V2l0aFNwbGl0cyArPSBzcGxpdFJvd0hlaWdodDtcbiAgICAgICAgICAgIGxlZnRTcGFjZU9uUGFnZSA9IGNvbnRlbnRIZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3BsaXRzQ291bnQ6IHRoaXMuc3BsaXRzLmxlbmd0aCxcbiAgICAgICAgICAgIHRhYmxlSGVpZ2h0OiB0YWJsZUhlaWdodFdpdGhTcGxpdHMsXG4gICAgICAgICAgICBsZWZ0SGVpZ2h0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSb3dJbmRleEJ5SGVpZ2h0KHN0YXJ0SW5kZXg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiB7IGluZGV4OiBudW1iZXI7IHJvd3NIZWlnaHQ6IG51bWJlciB9IHtcbiAgICAgICAgaWYgKHN0YXJ0SW5kZXggPj0gdGhpcy5yb3dNYXRyaXgubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4geyBpbmRleDogdGhpcy5yb3dNYXRyaXgubGVuZ3RoLCByb3dzSGVpZ2h0OiAwIH07XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdGFibGVIZWlnaHQgPSB0aGlzLnJvd01hdHJpeFtzdGFydEluZGV4XS5oZWlnaHQgKyB0aGlzLmJvcmRlclNpemUsXG4gICAgICAgICAgICBpID0gc3RhcnRJbmRleDtcblxuICAgICAgICB3aGlsZSAodGFibGVIZWlnaHQgPCBoZWlnaHQpIHtcbiAgICAgICAgICAgIHRhYmxlSGVpZ2h0ICs9IHRoaXMucm93TWF0cml4W2kgKyAxXT8uaGVpZ2h0ICsgdGhpcy5ib3JkZXJTaXplO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgaW5kZXg6IGksIHJvd3NIZWlnaHQ6IHRhYmxlSGVpZ2h0IC0gdGhpcy5yb3dNYXRyaXhbaV0/LmhlaWdodCB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlU3BsaXRSb3coaW5kZXg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJsZUVsLmluc2VydFJvdyhpbmRleCk7XG4gICAgICAgIHRoaXMudGFibGVFbC5yb3dzW2luZGV4XS5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuICAgICAgICB0aGlzLnRhYmxlRWwucm93c1tpbmRleF0uY2xhc3NMaXN0LmFkZCgnc3BsaXQtcm93Jyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVTcGxpdHMoKSB7XG4gICAgICAgIHRoaXMuc3BsaXRzID0gW107XG4gICAgICAgIHdoaWxlICh0aGlzLnRhYmxlRWwucXVlcnlTZWxlY3RvcignLnNwbGl0LXJvdycpKSB7XG4gICAgICAgICAgICBjb25zdCBlbCA9IHRoaXMudGFibGVFbC5xdWVyeVNlbGVjdG9yKCcuc3BsaXQtcm93Jyk7XG4gICAgICAgICAgICBlbC5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjYWxjdWxhdGVQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudGFibGVFbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRUYWJsZUhlaWdodCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGFibGVXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZS5jb2x1bW5zLnJlZHVjZSgocHJldiwgbmV4dCkgPT4gcHJldiArIG5leHQud2lkdGggKyB0aGlzLmJvcmRlclNpemUsIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2VsbEhlaWdodENoYW5nZWQgPSAocm93SW5kZXg6IG51bWJlciwgY2VsbEluZGV4OiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IHRhYmxlUm93ID0gdGhpcy50YWJsZS5yb3dzW3Jvd0luZGV4XTtcbiAgICAgICAgdGhpcy5yb3dNYXRyaXhbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF0uY2VsbENvbnRlbnRIZWlnaHQgPSBoZWlnaHQgPCB0aGlzLm1pblJvd0hlaWdodCA/IHRoaXMubWluUm93SGVpZ2h0IDogaGVpZ2h0O1xuXG4gICAgICAgIGlmICh0YWJsZVJvdy5oUnVsZSA9PT0gSFJ1bGUuRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvd0luZGV4V2l0aFNwbGl0ID0gdGhpcy5nZXRJbmRleEluY2x1ZGluZ1NwbGl0Um93cyh0aGlzLnJvd01hdHJpeFtyb3dJbmRleF0ucm93KTtcblxuICAgICAgICBjb25zdCByb3cgPSB0aGlzLnRhYmxlRWwucm93c1tyb3dJbmRleFdpdGhTcGxpdF07XG4gICAgICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSByb3cub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBjb25zdCBjZWxsSGVpZ2h0cyA9IHRoaXMucm93TWF0cml4W3Jvd0luZGV4XS5jZWxscy5tYXAoeCA9PiB4LmNlbGxDb250ZW50SGVpZ2h0KTtcbiAgICAgICAgY29uc3QgbWF4Q2VsbENvbnRlbnRIZWlnaCA9IE1hdGgubWF4KC4uLmNlbGxIZWlnaHRzLCBoZWlnaHQpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIG1heENlbGxDb250ZW50SGVpZ2ggPiBjdXJyZW50SGVpZ2h0IHx8XG4gICAgICAgICAgICAobWF4Q2VsbENvbnRlbnRIZWlnaCA8IGN1cnJlbnRIZWlnaHQgJiYgKCF0YWJsZVJvdy5oZWlnaHQgfHwgdGFibGVSb3cuaGVpZ2h0IDw9IG1heENlbGxDb250ZW50SGVpZ2gpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJvdy5zdHlsZS5oZWlnaHQgPSBgJHttYXhDZWxsQ29udGVudEhlaWdofXB4YDtcbiAgICAgICAgICAgIHRoaXMucm93TWF0cml4W3Jvd0luZGV4XS5oZWlnaHQgPSBtYXhDZWxsQ29udGVudEhlaWdoO1xuICAgICAgICAgICAgdGhpcy5zZXRUYWJsZUhlaWdodCgpO1xuICAgICAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmNoYW5nZWRUYWJsZVNpemUodGhpcy5pbnNlcnRJbmRleCwgdGhpcy5zZXNzaW9uSWQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgZ2V0U3BsaXRSb3dJbmRleChyb3dJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEluZGV4SW5jbHVkaW5nU3BsaXRSb3dzKHRoaXMucm93TWF0cml4W3Jvd0luZGV4XS5yb3cpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SW5kZXhJbmNsdWRpbmdTcGxpdFJvd3Mocm93OiBIVE1MVGFibGVSb3dFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy50YWJsZUVsLnJvd3MpLmluZGV4T2Yocm93KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJvd3NIZWlnaHRCZWZvcmUocm93SW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB0aGlzLnNwbGl0cykge1xuICAgICAgICAgICAgaWYgKHJvd0luZGV4IDwgZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbmRleCA9IGVsZW1lbnQgKyAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um93c0hlaWdodCgwLCBpbmRleCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSb3dzSGVpZ2h0QmV0d2VlblNwbGl0cyhyb3dJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHN0YXJ0SW5kZXggPSAwO1xuICAgICAgICBsZXQgZW5kSW5kZXggPSB0aGlzLnRhYmxlRWwucm93cy5sZW5ndGg7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB0aGlzLnNwbGl0cykge1xuICAgICAgICAgICAgaWYgKHJvd0luZGV4IDwgZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3RhcnRJbmRleCA9IGVsZW1lbnQgKyAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um93c0hlaWdodChzdGFydEluZGV4LCBlbmRJbmRleCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSb3dzSGVpZ2h0KHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7XG4gICAgICAgICAgICBzdW0gKz0gdGhpcy50YWJsZUVsLnJvd3NbaV0ub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICB9XG59XG4iXX0=