@worktile/theia 17.0.1 → 17.1.1

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 (163) hide show
  1. package/components/contextmenu/contextmenu.component.d.ts +3 -2
  2. package/components/inline-toolbar/inline-toolbar.component.d.ts +2 -2
  3. package/esm2022/components/contextmenu/contextmenu.component.mjs +6 -5
  4. package/esm2022/components/conversion-hint/conversion-hint.component.mjs +3 -3
  5. package/esm2022/components/element/element.component.mjs +4 -6
  6. package/esm2022/components/inline-toolbar/inline-toolbar.component.mjs +6 -6
  7. package/esm2022/components/text/text.component.mjs +3 -3
  8. package/esm2022/components/toolbar/toolbar.component.mjs +1 -4
  9. package/esm2022/constants/auto-format-rules.mjs +7 -7
  10. package/esm2022/core/toolbar-item/base-toolbar-item.mjs +2 -2
  11. package/esm2022/core/with-theia.mjs +2 -1
  12. package/esm2022/editor.component.mjs +10 -25
  13. package/esm2022/interfaces/editor.mjs +1 -1
  14. package/esm2022/plugins/align/align.editor.mjs +2 -2
  15. package/esm2022/plugins/align/align.plugin.mjs +5 -5
  16. package/esm2022/plugins/autoformat/autoformat.plugin.mjs +4 -4
  17. package/esm2022/plugins/autoformat/transforms/auto-format-block.mjs +3 -3
  18. package/esm2022/plugins/autoformat/transforms/auto-format-inline.mjs +2 -2
  19. package/esm2022/plugins/blockquote/blockquote.component.mjs +4 -6
  20. package/esm2022/plugins/blockquote/blockquote.editor.mjs +4 -4
  21. package/esm2022/plugins/blockquote/blockquote.plugin.mjs +6 -6
  22. package/esm2022/plugins/code/code.component.mjs +12 -11
  23. package/esm2022/plugins/code/code.editor.mjs +5 -5
  24. package/esm2022/plugins/code/code.plugin.mjs +3 -4
  25. package/esm2022/plugins/common/block-card.plugin.mjs +41 -8
  26. package/esm2022/plugins/common/get-fragment.plugin.mjs +2 -2
  27. package/esm2022/plugins/common/move-selection.plugin.mjs +7 -5
  28. package/esm2022/plugins/common/remove-empty.plugin.mjs +11 -10
  29. package/esm2022/plugins/common/remove-void.plugin.mjs +9 -6
  30. package/esm2022/plugins/common/reset-type.plugin.mjs +4 -4
  31. package/esm2022/plugins/deserialize/deserialize-md.plugin.mjs +2 -2
  32. package/esm2022/plugins/font-size/font-size.editor.mjs +5 -5
  33. package/esm2022/plugins/heading/heading.editor.mjs +5 -5
  34. package/esm2022/plugins/heading/heading.plugin.mjs +2 -2
  35. package/esm2022/plugins/hr/hr.component.mjs +6 -6
  36. package/esm2022/plugins/hr/hr.editor.mjs +2 -2
  37. package/esm2022/plugins/hr/hr.plugin.mjs +4 -4
  38. package/esm2022/plugins/image/image.component.mjs +11 -11
  39. package/esm2022/plugins/image/image.editor.mjs +3 -3
  40. package/esm2022/plugins/image/image.plugin.mjs +19 -2
  41. package/esm2022/plugins/index.mjs +1 -3
  42. package/esm2022/plugins/inline-code/inline-code.component.mjs +6 -6
  43. package/esm2022/plugins/link/link.component.mjs +17 -14
  44. package/esm2022/plugins/list/components/bulleted-list.component.mjs +4 -6
  45. package/esm2022/plugins/list/components/list-item.component.mjs +5 -7
  46. package/esm2022/plugins/list/components/numbered-list.component.mjs +4 -6
  47. package/esm2022/plugins/list/list.editor.mjs +8 -6
  48. package/esm2022/plugins/list/list.plugin.mjs +23 -23
  49. package/esm2022/plugins/list/normalizers/normalize-no.mjs +4 -4
  50. package/esm2022/plugins/list/on-key-down-list.mjs +4 -4
  51. package/esm2022/plugins/list/queries/get-list-item-entry.mjs +2 -2
  52. package/esm2022/plugins/list/queries/is-in-list.mjs +2 -2
  53. package/esm2022/plugins/list/queries/is-selection-at-list-item-start.mjs +2 -2
  54. package/esm2022/plugins/list/transforms/insert-list-data.mjs +4 -4
  55. package/esm2022/plugins/list/transforms/insert-list-item.mjs +4 -4
  56. package/esm2022/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.mjs +2 -2
  57. package/esm2022/plugins/list/transforms/move-list-item-sublist-items-to-list.mjs +3 -3
  58. package/esm2022/plugins/list/transforms/move-list-item-up.mjs +2 -2
  59. package/esm2022/plugins/list/transforms/unwrap-list.mjs +2 -2
  60. package/esm2022/plugins/mention/mention.editor.mjs +2 -2
  61. package/esm2022/plugins/node-id/node-id.plugin.mjs +7 -7
  62. package/esm2022/plugins/normalizers/insert-paragraph-nodes.mjs +2 -2
  63. package/esm2022/plugins/normalizers/trailing-node.plugin.mjs +5 -5
  64. package/esm2022/plugins/paint-format/paint-format.editor.mjs +7 -7
  65. package/esm2022/plugins/quick-insert/components/quick-insert.component.mjs +2 -2
  66. package/esm2022/plugins/soft-break/soft-break.plugin.mjs +3 -3
  67. package/esm2022/plugins/table/components/insert-mark/insert-mark.component.mjs +9 -8
  68. package/esm2022/plugins/table/components/row/row.component.mjs +52 -30
  69. package/esm2022/plugins/table/components/table.component.mjs +321 -298
  70. package/esm2022/plugins/table/components/td/td.component.mjs +47 -47
  71. package/esm2022/plugins/table/components/toolbar/table-options.component.mjs +3 -4
  72. package/esm2022/plugins/table/components/toolbar/table-toolbar.component.mjs +2 -2
  73. package/esm2022/plugins/table/table.editor.mjs +19 -15
  74. package/esm2022/plugins/table/table.pipe.mjs +32 -19
  75. package/esm2022/plugins/table/table.plugin.mjs +6 -6
  76. package/esm2022/plugins/table/table.service.mjs +10 -35
  77. package/esm2022/plugins/table/table.store.mjs +28 -27
  78. package/esm2022/plugins/table/table.types.mjs +2 -1
  79. package/esm2022/plugins/table/transforms/insert-table.mjs +2 -2
  80. package/esm2022/plugins/table/transforms/move-selection-from-cell.mjs +2 -2
  81. package/esm2022/plugins/table/utils/calc-anchor-position.mjs +2 -2
  82. package/esm2022/plugins/table/utils/calculate-table.mjs +17 -10
  83. package/esm2022/plugins/table/utils/cell-position.mjs +1 -4
  84. package/esm2022/plugins/table/utils/get-grid-columns.mjs +11 -54
  85. package/esm2022/plugins/table/utils/is-header-row.mjs +3 -2
  86. package/esm2022/plugins/table/utils/is-legal-table.mjs +13 -3
  87. package/esm2022/plugins/table/utils/merge-cell.mjs +22 -20
  88. package/esm2022/plugins/table/utils/remove-row-column.mjs +3 -4
  89. package/esm2022/plugins/table/utils/split-cell.mjs +2 -2
  90. package/esm2022/plugins/table/utils/table-position.mjs +11 -1
  91. package/esm2022/plugins/todo-item/todo-item.component.mjs +18 -16
  92. package/esm2022/plugins/todo-item/todo-item.editor.mjs +2 -2
  93. package/esm2022/plugins/todo-item/todo-item.plugin.mjs +4 -4
  94. package/esm2022/plugins/vertical-align/toolbar-item.component.mjs +1 -2
  95. package/esm2022/plugins/vertical-align/vertical-align.editor.mjs +2 -2
  96. package/esm2022/public-api.mjs +3 -3
  97. package/esm2022/queries/anchor-block-entry.mjs +3 -3
  98. package/esm2022/queries/anchor-inline-entry.mjs +3 -3
  99. package/esm2022/queries/find-descendant.mjs +3 -3
  100. package/esm2022/queries/find-node.mjs +3 -3
  101. package/esm2022/queries/get-anchor-block-entry.mjs +3 -3
  102. package/esm2022/queries/get-block-above.mjs +3 -3
  103. package/esm2022/queries/get-insert-elements-path.mjs +5 -3
  104. package/esm2022/queries/index.mjs +3 -66
  105. package/esm2022/queries/is-root-path.mjs +2 -0
  106. package/esm2022/services/context.service.mjs +10 -6
  107. package/esm2022/services/table-contextmenu.service.mjs +8 -1
  108. package/esm2022/transforms/apply-deep-to-nodes.mjs +2 -2
  109. package/esm2022/transforms/delete-element.mjs +3 -3
  110. package/esm2022/transforms/delete-node-by-type.mjs +2 -2
  111. package/esm2022/transforms/handle-continual-delete-backward.mjs +2 -2
  112. package/esm2022/transforms/handle-continual-insert-break.mjs +3 -3
  113. package/esm2022/transforms/index.mjs +14 -34
  114. package/esm2022/transforms/insert-elements.mjs +3 -3
  115. package/esm2022/transforms/move-children.mjs +4 -4
  116. package/esm2022/transforms/on-keydown-reset-block-type.mjs +2 -2
  117. package/esm2022/transforms/set-node-by-type.mjs +2 -2
  118. package/esm2022/transforms/set-node.mjs +2 -2
  119. package/esm2022/utils/auto-focus.mjs +2 -2
  120. package/esm2022/utils/fragment.mjs +11 -3
  121. package/esm2022/utils/insert-data-by-invalid-type.mjs +15 -7
  122. package/esm2022/utils/match.mjs +3 -3
  123. package/esm2022/utils/refocus.mjs +4 -4
  124. package/fesm2022/worktile-theia.mjs +1795 -1710
  125. package/fesm2022/worktile-theia.mjs.map +1 -1
  126. package/interfaces/editor.d.ts +15 -4
  127. package/package.json +3 -3
  128. package/plugins/code/code.component.d.ts +2 -3
  129. package/plugins/image/image.component.d.ts +3 -4
  130. package/plugins/image/image.component.scss +2 -2
  131. package/plugins/link/link.component.d.ts +4 -3
  132. package/plugins/list/list.editor.d.ts +1 -1
  133. package/plugins/list/transforms/insert-list-data.d.ts +1 -1
  134. package/plugins/normalizers/insert-paragraph-nodes.d.ts +1 -2
  135. package/plugins/normalizers/trailing-node.plugin.d.ts +2 -3
  136. package/plugins/paint-format/paint-format.editor.d.ts +1 -1
  137. package/plugins/soft-break/soft-break.plugin.d.ts +1 -2
  138. package/plugins/table/components/insert-mark/insert-mark.component.d.ts +1 -0
  139. package/plugins/table/components/row/row.component.d.ts +11 -6
  140. package/plugins/table/components/table.component.d.ts +27 -14
  141. package/plugins/table/components/table.component.scss +37 -24
  142. package/plugins/table/components/td/td.component.d.ts +4 -7
  143. package/plugins/table/table.editor.d.ts +2 -2
  144. package/plugins/table/table.pipe.d.ts +8 -3
  145. package/plugins/table/table.service.d.ts +0 -2
  146. package/plugins/table/table.store.d.ts +10 -11
  147. package/plugins/table/table.types.d.ts +1 -0
  148. package/plugins/table/utils/calculate-table.d.ts +1 -0
  149. package/plugins/table/utils/get-grid-columns.d.ts +3 -22
  150. package/plugins/table/utils/is-header-row.d.ts +1 -1
  151. package/plugins/table/utils/is-legal-table.d.ts +3 -1
  152. package/plugins/table/utils/table-position.d.ts +3 -1
  153. package/plugins/todo-item/todo-item.component.d.ts +3 -3
  154. package/plugins/vertical-align/toolbar-item.component.d.ts +0 -1
  155. package/plugins/vertical-align/vertical-align.scss +10 -0
  156. package/public-api.d.ts +2 -2
  157. package/queries/index.d.ts +61 -81
  158. package/queries/is-root-path.d.ts +2 -0
  159. package/transforms/handle-continual-delete-backward.d.ts +1 -1
  160. package/transforms/index.d.ts +17 -29
  161. package/utils/insert-data-by-invalid-type.d.ts +2 -1
  162. package/esm2022/plugins/common/transforms.plugin.mjs +0 -18
  163. package/plugins/common/transforms.plugin.d.ts +0 -8
@@ -16,7 +16,7 @@ import { HistoryEditor } from 'slate-history';
16
16
  import { Alignment, ElementKinds, LayoutTypes, ToolbarActionTypes } from '../../constants';
17
17
  import { getPluginOptions } from '../../core';
18
18
  import { PluginKeys, THE_UPLOAD_SERVICE_TOKEN, TheBaseElement } from '../../interfaces';
19
- import { TheQueries } from '../../queries';
19
+ import * as TheQueries from '../../queries';
20
20
  import { isMobileMode } from '../../utils/get-mode';
21
21
  import { ImageEditor } from './image.editor';
22
22
  import * as i0 from "@angular/core";
@@ -34,16 +34,15 @@ export class TheImage extends TheBaseElement {
34
34
  ? this.layoutDefaultWidth
35
35
  : this.imageEntry.width;
36
36
  }
37
- constructor(elementRef, cdr, imageGroupComponent, imageUploaderService, theContextService, thyPopover, overlay, viewContainerRef, destroyRef) {
37
+ constructor(elementRef, cdr, imageGroup, imageUploaderService, theContextService, thyPopover, overlay, destroyRef) {
38
38
  super(elementRef, cdr);
39
39
  this.elementRef = elementRef;
40
40
  this.cdr = cdr;
41
- this.imageGroupComponent = imageGroupComponent;
41
+ this.imageGroup = imageGroup;
42
42
  this.imageUploaderService = imageUploaderService;
43
43
  this.theContextService = theContextService;
44
44
  this.thyPopover = thyPopover;
45
45
  this.overlay = overlay;
46
- this.viewContainerRef = viewContainerRef;
47
46
  this.destroyRef = destroyRef;
48
47
  this.naturalWidth = 0;
49
48
  this.naturalHeight = 0;
@@ -216,6 +215,7 @@ export class TheImage extends TheBaseElement {
216
215
  return;
217
216
  }
218
217
  event.preventDefault();
218
+ event.stopPropagation();
219
219
  this.dragable = true;
220
220
  const imgElement = this.img.nativeElement;
221
221
  const options = {
@@ -400,8 +400,8 @@ export class TheImage extends TheBaseElement {
400
400
  event.stopPropagation();
401
401
  }
402
402
  imageClick() {
403
- const index = this.imageGroupComponent.images.findIndex(item => item === this.imageDirective);
404
- const imageGroup = this.imageGroupComponent.images.map(item => {
403
+ const index = this.imageGroup.images.findIndex(item => item === this.imageDirective);
404
+ const imageGroup = this.imageGroup.images.map(item => {
405
405
  return {
406
406
  originUrl: item.thyOriginSrc,
407
407
  thumbUrl: item.thyPreviewSrc,
@@ -426,8 +426,8 @@ export class TheImage extends TheBaseElement {
426
426
  });
427
427
  }
428
428
  }
429
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheImage, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ThyImageGroup }, { token: THE_UPLOAD_SERVICE_TOKEN }, { token: i2.TheContextService }, { token: i3.ThyPopover }, { token: i4.Overlay }, { token: i0.ViewContainerRef }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
430
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: TheImage, isStandalone: true, selector: "the-image, [theImage]", providers: [ThyImageService], viewQueries: [{ propertyName: "imageContent", first: true, predicate: ["imageContent"], descendants: true }, { propertyName: "img", first: true, predicate: ["img"], descendants: true }, { propertyName: "layoutToolbar", first: true, predicate: ["layoutToolbar"], descendants: true, static: true }, { propertyName: "imageDirective", first: true, predicate: ThyImageDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<div class=\"image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align\">\n <div #imageContent *ngIf=\"imageEntry.thumbUrl; else imageLoading\" class=\"image-content\" [class.cursor-pointer]=\"!selection\">\n <img\n #img\n thyImage\n class=\"main-image\"\n [class.image-collapsed]=\"selection && !uploading\"\n [ngStyle]=\"{ 'width.px': imageBindingWidth }\"\n [alt]=\"imageEntry.name\"\n [thySrc]=\"imageEntry.thumbUrl\"\n [thyPreviewSrc]=\"imageEntry.thumbUrl\"\n [thyOriginSrc]=\"imageEntry.originUrl\"\n [thyDisablePreview]=\"disablePreview\"\n [thyImageMeta]=\"{ name: imageEntry.name, size: imageEntry.size }\"\n (load)=\"imageLoaded($event)\"\n (mousedown)=\"preventDefault($event)\"\n (error)=\"imageError($event)\"\n (click)=\"imageClick($event)\"\n />\n <div *ngIf=\"isCollapsedAndNonReadonly\" class=\"image-profile\" [class.outline]=\"selection\">\n <ng-container *ngIf=\"!loadImageError\">\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right bottom\"></span>\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left bottom\"></span>\n </ng-container>\n </div>\n <ng-template [ngTemplateOutlet]=\"imageUploading\"></ng-template>\n <div *ngIf=\"!uploading\" class=\"layer\" [class.readonly]=\"readonly\"></div>\n </div>\n</div>\n\n<ng-template #imageLoading>\n <div *ngIf=\"!imageEntry.thumbUrl\" class=\"image-loading cursor-pointer\" contenteditable=\"false\">\n <thy-icon thyIconName=\"image\"></thy-icon>\n </div>\n\n <ng-template [ngTemplateOutlet]=\"imageUploading\"></ng-template>\n</ng-template>\n\n<ng-template #layoutToolbar>\n <thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of layoutOptions\">\n <a\n *ngIf=\"item.key !== 'split'\"\n href=\"javascript:;\"\n thyAction\n [thyType]=\"item.key === 'remove' ? 'danger' : 'primary'\"\n [thyActionIcon]=\"item.icon\"\n [thyActionActive]=\"layoutActive(item.key)\"\n [thyTooltip]=\"item.name\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"item?.handle($event, item.key)\"\n ></a>\n <thy-divider *ngIf=\"item.key === 'split'\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n </ng-container>\n </thy-actions>\n</ng-template>\n\n<ng-template #imageUploading>\n <div *ngIf=\"uploading\" class=\"uploading\">\n <div class=\"uploading-percentage\">\n <thy-progress thyType=\"primary\" [thyValue]=\"percentage\" thySize=\"sm\"></thy-progress>\n <thy-icon (click)=\"cancelUpload($event)\" thyIconName=\"close-circle-bold-fill\" thyIconLegging=\"true\"> </thy-icon>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SlateChildren, selector: "slate-children", inputs: ["children", "context", "viewContext"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: ThyImageDirective, selector: "img[thyImage]", inputs: ["thySrc", "thyPreviewSrc", "thyOriginSrc", "thyImageMeta", "thyDisablePreview", "thyResolveSize"], exportAs: ["thyImage"] }, { kind: "component", type: ThyAction, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: ThyDivider, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "component", type: ThyActions, selector: "thy-actions", inputs: ["thySize"] }, { kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: ThyProgress, selector: "thy-progress", inputs: ["thyType", "thySize", "thyValue", "thyMax", "thyTips", "thyShape", "thyGapDegree", "thyGapPosition", "thyStrokeWidth"] }] }); }
429
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheImage, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ThyImageGroup }, { token: THE_UPLOAD_SERVICE_TOKEN }, { token: i2.TheContextService }, { token: i3.ThyPopover }, { token: i4.Overlay }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
430
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: TheImage, isStandalone: true, selector: "the-image, [theImage]", providers: [ThyImageService], viewQueries: [{ propertyName: "imageContent", first: true, predicate: ["imageContent"], descendants: true }, { propertyName: "img", first: true, predicate: ["img"], descendants: true }, { propertyName: "layoutToolbar", first: true, predicate: ["layoutToolbar"], descendants: true, static: true }, { propertyName: "imageDirective", first: true, predicate: ThyImageDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"the-image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align\">\n <div\n #imageContent\n *ngIf=\"imageEntry.thumbUrl; else imageLoading\"\n class=\"image-content\"\n contenteditable=\"false\"\n [class.cursor-pointer]=\"!selection\"\n >\n <img\n #img\n thyImage\n class=\"main-image\"\n [class.image-collapsed]=\"selection && !uploading\"\n [ngStyle]=\"{ 'width.px': imageBindingWidth }\"\n [alt]=\"imageEntry.name\"\n [thySrc]=\"imageEntry.thumbUrl\"\n [thyPreviewSrc]=\"imageEntry.thumbUrl\"\n [thyOriginSrc]=\"imageEntry.originUrl\"\n [thyDisablePreview]=\"disablePreview\"\n [thyImageMeta]=\"{ name: imageEntry.name, size: imageEntry.size }\"\n (load)=\"imageLoaded($event)\"\n (mousedown)=\"preventDefault($event)\"\n (error)=\"imageError($event)\"\n (click)=\"imageClick($event)\"\n />\n <div *ngIf=\"isCollapsedAndNonReadonly\" class=\"image-profile\" [class.outline]=\"selection\">\n <ng-container *ngIf=\"!loadImageError\">\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right bottom\"></span>\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left bottom\"></span>\n </ng-container>\n </div>\n <ng-template [ngTemplateOutlet]=\"imageUploading\"></ng-template>\n <div *ngIf=\"!uploading\" class=\"layer\" [class.readonly]=\"readonly\"></div>\n </div>\n</div>\n\n<ng-template #imageLoading>\n <div *ngIf=\"!imageEntry.thumbUrl\" class=\"image-loading cursor-pointer\" contenteditable=\"false\">\n <thy-icon thyIconName=\"image\"></thy-icon>\n </div>\n <ng-template [ngTemplateOutlet]=\"imageUploading\"></ng-template>\n</ng-template>\n\n<ng-template #layoutToolbar>\n <thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of layoutOptions\">\n <a\n *ngIf=\"item.key !== 'split'\"\n href=\"javascript:;\"\n thyAction\n [thyType]=\"item.key === 'remove' ? 'danger' : 'primary'\"\n [thyActionIcon]=\"item.icon\"\n [thyActionActive]=\"layoutActive(item.key)\"\n [thyTooltip]=\"item.name\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"item?.handle($event, item.key)\"\n ></a>\n <thy-divider *ngIf=\"item.key === 'split'\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n </ng-container>\n </thy-actions>\n</ng-template>\n\n<ng-template #imageUploading>\n <div *ngIf=\"uploading\" class=\"uploading\">\n <div class=\"uploading-percentage\">\n <thy-progress thyType=\"primary\" [thyValue]=\"percentage\" thySize=\"sm\"></thy-progress>\n <thy-icon (click)=\"cancelUpload($event)\" thyIconName=\"close-circle-bold-fill\" thyIconLegging=\"true\"> </thy-icon>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: ThyImageDirective, selector: "img[thyImage]", inputs: ["thySrc", "thyPreviewSrc", "thyOriginSrc", "thyImageMeta", "thyDisablePreview", "thyResolveSize"], exportAs: ["thyImage"] }, { kind: "component", type: ThyAction, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: ThyDivider, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "component", type: ThyActions, selector: "thy-actions", inputs: ["thySize"] }, { kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: ThyProgress, selector: "thy-progress", inputs: ["thyType", "thySize", "thyValue", "thyMax", "thyTips", "thyShape", "thyGapDegree", "thyGapPosition", "thyStrokeWidth"] }] }); }
431
431
  }
432
432
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TheImage, decorators: [{
433
433
  type: Component,
@@ -444,11 +444,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
444
444
  ThyActions,
445
445
  ThyTooltipDirective,
446
446
  ThyProgress
447
- ], providers: [ThyImageService], template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<div class=\"image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align\">\n <div #imageContent *ngIf=\"imageEntry.thumbUrl; else imageLoading\" class=\"image-content\" [class.cursor-pointer]=\"!selection\">\n <img\n #img\n thyImage\n class=\"main-image\"\n [class.image-collapsed]=\"selection && !uploading\"\n [ngStyle]=\"{ 'width.px': imageBindingWidth }\"\n [alt]=\"imageEntry.name\"\n [thySrc]=\"imageEntry.thumbUrl\"\n [thyPreviewSrc]=\"imageEntry.thumbUrl\"\n [thyOriginSrc]=\"imageEntry.originUrl\"\n [thyDisablePreview]=\"disablePreview\"\n [thyImageMeta]=\"{ name: imageEntry.name, size: imageEntry.size }\"\n (load)=\"imageLoaded($event)\"\n (mousedown)=\"preventDefault($event)\"\n (error)=\"imageError($event)\"\n (click)=\"imageClick($event)\"\n />\n <div *ngIf=\"isCollapsedAndNonReadonly\" class=\"image-profile\" [class.outline]=\"selection\">\n <ng-container *ngIf=\"!loadImageError\">\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right bottom\"></span>\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left bottom\"></span>\n </ng-container>\n </div>\n <ng-template [ngTemplateOutlet]=\"imageUploading\"></ng-template>\n <div *ngIf=\"!uploading\" class=\"layer\" [class.readonly]=\"readonly\"></div>\n </div>\n</div>\n\n<ng-template #imageLoading>\n <div *ngIf=\"!imageEntry.thumbUrl\" class=\"image-loading cursor-pointer\" contenteditable=\"false\">\n <thy-icon thyIconName=\"image\"></thy-icon>\n </div>\n\n <ng-template [ngTemplateOutlet]=\"imageUploading\"></ng-template>\n</ng-template>\n\n<ng-template #layoutToolbar>\n <thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of layoutOptions\">\n <a\n *ngIf=\"item.key !== 'split'\"\n href=\"javascript:;\"\n thyAction\n [thyType]=\"item.key === 'remove' ? 'danger' : 'primary'\"\n [thyActionIcon]=\"item.icon\"\n [thyActionActive]=\"layoutActive(item.key)\"\n [thyTooltip]=\"item.name\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"item?.handle($event, item.key)\"\n ></a>\n <thy-divider *ngIf=\"item.key === 'split'\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n </ng-container>\n </thy-actions>\n</ng-template>\n\n<ng-template #imageUploading>\n <div *ngIf=\"uploading\" class=\"uploading\">\n <div class=\"uploading-percentage\">\n <thy-progress thyType=\"primary\" [thyValue]=\"percentage\" thySize=\"sm\"></thy-progress>\n <thy-icon (click)=\"cancelUpload($event)\" thyIconName=\"close-circle-bold-fill\" thyIconLegging=\"true\"> </thy-icon>\n </div>\n </div>\n</ng-template>\n" }]
447
+ ], providers: [ThyImageService], template: "<div class=\"the-image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align\">\n <div\n #imageContent\n *ngIf=\"imageEntry.thumbUrl; else imageLoading\"\n class=\"image-content\"\n contenteditable=\"false\"\n [class.cursor-pointer]=\"!selection\"\n >\n <img\n #img\n thyImage\n class=\"main-image\"\n [class.image-collapsed]=\"selection && !uploading\"\n [ngStyle]=\"{ 'width.px': imageBindingWidth }\"\n [alt]=\"imageEntry.name\"\n [thySrc]=\"imageEntry.thumbUrl\"\n [thyPreviewSrc]=\"imageEntry.thumbUrl\"\n [thyOriginSrc]=\"imageEntry.originUrl\"\n [thyDisablePreview]=\"disablePreview\"\n [thyImageMeta]=\"{ name: imageEntry.name, size: imageEntry.size }\"\n (load)=\"imageLoaded($event)\"\n (mousedown)=\"preventDefault($event)\"\n (error)=\"imageError($event)\"\n (click)=\"imageClick($event)\"\n />\n <div *ngIf=\"isCollapsedAndNonReadonly\" class=\"image-profile\" [class.outline]=\"selection\">\n <ng-container *ngIf=\"!loadImageError\">\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right bottom\"></span>\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left bottom\"></span>\n </ng-container>\n </div>\n <ng-template [ngTemplateOutlet]=\"imageUploading\"></ng-template>\n <div *ngIf=\"!uploading\" class=\"layer\" [class.readonly]=\"readonly\"></div>\n </div>\n</div>\n\n<ng-template #imageLoading>\n <div *ngIf=\"!imageEntry.thumbUrl\" class=\"image-loading cursor-pointer\" contenteditable=\"false\">\n <thy-icon thyIconName=\"image\"></thy-icon>\n </div>\n <ng-template [ngTemplateOutlet]=\"imageUploading\"></ng-template>\n</ng-template>\n\n<ng-template #layoutToolbar>\n <thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of layoutOptions\">\n <a\n *ngIf=\"item.key !== 'split'\"\n href=\"javascript:;\"\n thyAction\n [thyType]=\"item.key === 'remove' ? 'danger' : 'primary'\"\n [thyActionIcon]=\"item.icon\"\n [thyActionActive]=\"layoutActive(item.key)\"\n [thyTooltip]=\"item.name\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"item?.handle($event, item.key)\"\n ></a>\n <thy-divider *ngIf=\"item.key === 'split'\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n </ng-container>\n </thy-actions>\n</ng-template>\n\n<ng-template #imageUploading>\n <div *ngIf=\"uploading\" class=\"uploading\">\n <div class=\"uploading-percentage\">\n <thy-progress thyType=\"primary\" [thyValue]=\"percentage\" thySize=\"sm\"></thy-progress>\n <thy-icon (click)=\"cancelUpload($event)\" thyIconName=\"close-circle-bold-fill\" thyIconLegging=\"true\"> </thy-icon>\n </div>\n </div>\n</ng-template>\n" }]
448
448
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.ThyImageGroup }, { type: undefined, decorators: [{
449
449
  type: Inject,
450
450
  args: [THE_UPLOAD_SERVICE_TOKEN]
451
- }] }, { type: i2.TheContextService }, { type: i3.ThyPopover }, { type: i4.Overlay }, { type: i0.ViewContainerRef }, { type: i0.DestroyRef }], propDecorators: { imageContent: [{
451
+ }] }, { type: i2.TheContextService }, { type: i3.ThyPopover }, { type: i4.Overlay }, { type: i0.DestroyRef }], propDecorators: { imageContent: [{
452
452
  type: ViewChild,
453
453
  args: ['imageContent']
454
454
  }], img: [{
@@ -461,4 +461,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
461
461
  type: ViewChild,
462
462
  args: [ThyImageDirective]
463
463
  }] } });
464
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUdILFNBQVMsRUFHVCxNQUFNLEVBSU4sU0FBUyxFQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQWlCLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXJGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUF1QixhQUFhLEVBQXVCLE1BQU0sZUFBZSxD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QUZOLENBQUMsZUFBZSxDQUFDLHFXQWdHakIsaUJBQWlCLHVFQ2xLaEMsZ2tHQXFFQSw0Q0RoQlEsSUFBSSw2RkFDSixLQUFLLG1IQUNMLE9BQU8sMkVBQ1AsZ0JBQWdCLG9KQUNoQixhQUFhLDJHQUNiLE9BQU8sc01BQ1AsaUJBQWlCLDhMQUNqQixTQUFTLGdNQUNULFVBQVUscUpBQ1YsVUFBVSw2RUFDVixtQkFBbUIsOFRBQ25CLFdBQVc7OzJGQUlOLFFBQVE7a0JBcEJwQixTQUFTOytCQUNJLHVCQUF1QixjQUVyQixJQUFJLFdBQ1A7d0JBQ0wsSUFBSTt3QkFDSixLQUFLO3dCQUNMLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLE9BQU87d0JBQ1AsaUJBQWlCO3dCQUNqQixTQUFTO3dCQUNULFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixtQkFBbUI7d0JBQ25CLFdBQVc7cUJBQ2QsYUFDVSxDQUFDLGVBQWUsQ0FBQzs7MEJBc0d2QixNQUFNOzJCQUFDLHdCQUF3QjtnTEFkcEMsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWM7Z0JBSXpCLEdBQUc7c0JBREYsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUluQyxhQUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHZCxjQUFjO3NCQUEzQyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdGb3IsIE5nSWYsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUaHlBY3Rpb24sIFRoeUFjdGlvbnMgfSBmcm9tICduZ3gtdGV0aHlzL2FjdGlvbic7XG5pbXBvcnQgeyBUaHlEaXZpZGVyIH0gZnJvbSAnbmd4LXRldGh5cy9kaXZpZGVyJztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5SW1hZ2VEaXJlY3RpdmUsIFRoeUltYWdlR3JvdXAsIFRoeUltYWdlU2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvaW1hZ2UnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaHlQcm9ncmVzcyB9IGZyb20gJ25neC10ZXRoeXMvcHJvZ3Jlc3MnO1xuaW1wb3J0IHsgVGh5VG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJ25neC10ZXRoeXMvdG9vbHRpcCc7XG5pbXBvcnQgeyBUaHlVcGxvYWRTdGF0dXMgfSBmcm9tICduZ3gtdGV0aHlzL3VwbG9hZCc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWRpdG9yLCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgQmVmb3JlQ29udGV4dENoYW5nZSwgU2xhdGVDaGlsZHJlbiwgU2xhdGVFbGVtZW50Q29udGV4dCB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgSGlzdG9yeUVkaXRvciB9IGZyb20gJ3NsYXRlLWhpc3RvcnknO1xuaW1wb3J0IHsgQWxpZ25tZW50LCBFbGVtZW50S2luZHMsIExheW91dFR5cGVzLCBUb29sYmFyQWN0aW9uVHlwZXMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7XG4gICAgSW1hZ2VFbnRyeSxcbiAgICBJbWFnZUluZm8sXG4gICAgSW1hZ2VQbHVnaW5PcHRpb25zLFxuICAgIExheW91dE9wdGlvbixcbiAgICBQbHVnaW5LZXlzLFxuICAgIFRIRV9VUExPQURfU0VSVklDRV9UT0tFTixcbiAgICBUaGVCYXNlRWxlbWVudCxcbiAgICBUaGVJbWFnZVVwbG9hZGVyU2VydmljZVxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRoZVF1ZXJpZXMgfSBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IGlzTW9iaWxlTW9kZSB9IGZyb20gJy4uLy4uL3V0aWxzL2dldC1tb2RlJztcbmltcG9ydCB7IEltYWdlRWRpdG9yIH0gZnJvbSAnLi9pbWFnZS5lZGl0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS1pbWFnZSwgW3RoZUltYWdlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE5nU3R5bGUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIFNsYXRlQ2hpbGRyZW4sXG4gICAgICAgIFRoeUljb24sXG4gICAgICAgIFRoeUltYWdlRGlyZWN0aXZlLFxuICAgICAgICBUaHlBY3Rpb24sXG4gICAgICAgIFRoeURpdmlkZXIsXG4gICAgICAgIFRoeUFjdGlvbnMsXG4gICAgICAgIFRoeVRvb2x0aXBEaXJlY3RpdmUsXG4gICAgICAgIFRoeVByb2dyZXNzXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtUaHlJbWFnZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFRoZUltYWdlXG4gICAgZXh0ZW5kcyBUaGVCYXNlRWxlbWVudDxJbWFnZUVsZW1lbnQsIEVkaXRvcj5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBCZWZvcmVDb250ZXh0Q2hhbmdlPFNsYXRlRWxlbWVudENvbnRleHQ+XG57XG4gICAgbmF0dXJhbFdpZHRoID0gMDtcblxuICAgIG5hdHVyYWxIZWlnaHQgPSAwO1xuXG4gICAgaW1hZ2VFbnRyeTogSW1hZ2VFbnRyeSA9IHt9O1xuXG4gICAgdXBsb2FkaW5nID0gZmFsc2U7XG5cbiAgICBwZXJjZW50YWdlID0gMDtcblxuICAgIGZpbGVJdGVtOiB7IHVybDogc3RyaW5nOyBmaWxlOiBGaWxlIHwgc3RyaW5nIH07XG5cbiAgICBsYXlvdXREZWZhdWx0V2lkdGggPSAzNjg7XG5cbiAgICBkaXNhYmxlUHJldmlldyA9IGZhbHNlO1xuXG4gICAgbG9hZEltYWdlRXJyb3IgPSBmYWxzZTtcblxuICAgIGxheW91dE9wdGlvbnM6IExheW91dE9wdGlvbltdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IEFsaWdubWVudC5sZWZ0LFxuICAgICAgICAgICAgaWNvbjogJ2ltYWdlLWxlZnQnLFxuICAgICAgICAgICAgbmFtZTogJ+W3puWvuem9kCcsXG4gICAgICAgICAgICBoYW5kbGU6IChlOiBNb3VzZUV2ZW50LCBrZXk6IEFsaWdubWVudCkgPT4gdGhpcy5zZXRJbWFnZU5vZGUoZSwgeyBhbGlnbjoga2V5LCBsYXlvdXQ6IHVuZGVmaW5lZCB9KVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IEFsaWdubWVudC5jZW50ZXIsXG4gICAgICAgICAgICBpY29uOiAnaW1hZ2UtY2VudGVyJyxcbiAgICAgICAgICAgIG5hbWU6ICflsYXkuK0nLFxuICAgICAgICAgICAgaGFuZGxlOiAoZTogTW91c2VFdmVudCwga2V5OiBBbGlnbm1lbnQpID0+IHRoaXMuc2V0SW1hZ2VOb2RlKGUsIHsgYWxpZ246IGtleSwgbGF5b3V0OiB1bmRlZmluZWQgfSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBBbGlnbm1lbnQucmlnaHQsXG4gICAgICAgICAgICBpY29uOiAnaW1hZ2UtcmlnaHQnLFxuICAgICAgICAgICAgbmFtZTogJ+WPs+Wvuem9kCcsXG4gICAgICAgICAgICBoYW5kbGU6IChlOiBNb3VzZUV2ZW50LCBrZXk6IEFsaWdubWVudCkgPT4gdGhpcy5zZXRJbWFnZU5vZGUoZSwgeyBhbGlnbjoga2V5LCBsYXlvdXQ6IHVuZGVmaW5lZCB9KVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IExheW91dFR5cGVzLndyYXBMZWZ0LFxuICAgICAgICAgICAgaWNvbjogJ3dyYXAtbGVmdCcsXG4gICAgICAgICAgICBuYW1lOiAn5Zu+54mH5bGF5bemJyxcbiAgICAgICAgICAgIGhhbmRsZTogKGU6IE1vdXNlRXZlbnQsIGtleTogTGF5b3V0VHlwZXMpID0+IHRoaXMuc2V0SW1hZ2VOb2RlKGUsIHsgbGF5b3V0OiBrZXkgfSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBMYXlvdXRUeXBlcy53cmFwUmlnaHQsXG4gICAgICAgICAgICBpY29uOiAnd3JhcC1yaWdodCcsXG4gICAgICAgICAgICBuYW1lOiAn5Zu+54mH5bGF5Y+zJyxcbiAgICAgICAgICAgIGhhbmRsZTogKGU6IE1vdXNlRXZlbnQsIGtleTogTGF5b3V0VHlwZXMpID0+IHRoaXMuc2V0SW1hZ2VOb2RlKGUsIHsgbGF5b3V0OiBrZXkgfSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAncmVtb3ZlJyxcbiAgICAgICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgICAgICBuYW1lOiAn5Yig6ZmkJyxcbiAgICAgICAgICAgIGhhbmRsZTogKGU6IE1vdXNlRXZlbnQpID0+IHRoaXMub25EZWxldGUoZSlcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBwcml2YXRlIHVwbG9hZGluZ1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHJpdmF0ZSBtb3VzZU1vdmVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHByaXZhdGUgZHJhZ2FibGUgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgbGF5b3V0VG9vbGJhclJlZjogVGh5UG9wb3ZlclJlZjxhbnk+O1xuXG4gICAgcHJpdmF0ZSBpbWFnZVBsdWdpbk9wdGlvbnM6IEltYWdlUGx1Z2luT3B0aW9ucztcblxuICAgIGdldCBpc09wZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxheW91dFRvb2xiYXJSZWYgJiYgdGhpcy5sYXlvdXRUb29sYmFyUmVmLmdldE92ZXJsYXlSZWYoKSAmJiB0aGlzLmxheW91dFRvb2xiYXJSZWYuZ2V0T3ZlcmxheVJlZigpLmhhc0F0dGFjaGVkKCk7XG4gICAgfVxuXG4gICAgZ2V0IGltYWdlQmluZGluZ1dpZHRoKCkge1xuICAgICAgICBjb25zdCBjdXJyZW50V2lkdGggPSB0aGlzLmltYWdlRW50cnk/LndpZHRoIHx8IHRoaXMubmF0dXJhbFdpZHRoO1xuICAgICAgICByZXR1cm4gdGhpcy5pbWFnZUVudHJ5Py5sYXlvdXQgJiYgY3VycmVudFdpZHRoID4gdGhpcy5sYXlvdXREZWZhdWx0V2lkdGggJiYgIXRoaXMuaW1hZ2VFbnRyeT8ucmVTaXplZFxuICAgICAgICAgICAgPyB0aGlzLmxheW91dERlZmF1bHRXaWR0aFxuICAgICAgICAgICAgOiB0aGlzLmltYWdlRW50cnkud2lkdGg7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnaW1hZ2VDb250ZW50JylcbiAgICBpbWFnZUNvbnRlbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdpbWcnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBpbWc6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdsYXlvdXRUb29sYmFyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBsYXlvdXRUb29sYmFyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZChUaHlJbWFnZURpcmVjdGl2ZSkgaW1hZ2VEaXJlY3RpdmU6IFRoeUltYWdlRGlyZWN0aXZlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIGltYWdlR3JvdXBDb21wb25lbnQ6IFRoeUltYWdlR3JvdXAsXG4gICAgICAgIEBJbmplY3QoVEhFX1VQTE9BRF9TRVJWSUNFX1RPS0VOKVxuICAgICAgICBwcml2YXRlIGltYWdlVXBsb2FkZXJTZXJ2aWNlOiBUaGVJbWFnZVVwbG9hZGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0aGVDb250ZXh0U2VydmljZTogVGhlQ29udGV4dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3ZlcixcbiAgICAgICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZlxuICAgICkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBjZHIpO1xuICAgIH1cblxuICAgIGJlZm9yZUNvbnRleHRDaGFuZ2UgPSAodmFsdWU6IFNsYXRlRWxlbWVudENvbnRleHQ8SW1hZ2VFbGVtZW50PikgPT4ge1xuICAgICAgICBpZiAodmFsdWUuZWxlbWVudCAhPT0gdGhpcy5lbGVtZW50ICYmIHZhbHVlLmVsZW1lbnQudGh1bWJVcmwpIHtcbiAgICAgICAgICAgIGxldCB0aHVtYlVybCA9IHZhbHVlLmVsZW1lbnQudGh1bWJVcmw7XG4gICAgICAgICAgICBsZXQgb3JpZ2luVXJsID0gdmFsdWUuZWxlbWVudC5vcmlnaW5Vcmw7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmltYWdlVXBsb2FkZXJTZXJ2aWNlPy5idWlsZEltYWdlVXJsKSB7XG4gICAgICAgICAgICAgICAgdGh1bWJVcmwgPSB0aGlzLmltYWdlVXBsb2FkZXJTZXJ2aWNlLmJ1aWxkSW1hZ2VVcmwodGh1bWJVcmwpO1xuICAgICAgICAgICAgICAgIG9yaWdpblVybCA9IHRoaXMuaW1hZ2VVcGxvYWRlclNlcnZpY2UuYnVpbGRJbWFnZVVybChvcmlnaW5VcmwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmltYWdlRW50cnkgPSB7XG4gICAgICAgICAgICAgICAgLi4udmFsdWUuZWxlbWVudCxcbiAgICAgICAgICAgICAgICB0aHVtYlVybCxcbiAgICAgICAgICAgICAgICBvcmlnaW5VcmwsXG4gICAgICAgICAgICAgICAgYWxpZ246IHZhbHVlLmVsZW1lbnQuYWxpZ24gfHwgQWxpZ25tZW50LmxlZnQsXG4gICAgICAgICAgICAgICAgcmVTaXplZDogdmFsdWUuZWxlbWVudC5yZVNpemVkIHx8IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5zZXRCbG9ja0NhcmRMYXlvdXRBdHRyKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuc2V0SW1hZ2VGaWxlSXRlbSgpO1xuXG4gICAgICAgIGlmICh0aGlzLmZpbGVJdGVtPy5maWxlKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZEltYWdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRJbWFnZVBsdWdpbk9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5zZXREaXNhYmxlUHJldmlldygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVNb3VzZVVwKCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlSW1hZ2VVcGxvYWRpbmdTdGF0ZSgpO1xuICAgIH1cblxuICAgIG9uQ29udGV4dENoYW5nZSgpIHtcbiAgICAgICAgc3VwZXIub25Db250ZXh0Q2hhbmdlKCk7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkICYmICFpc01vYmlsZU1vZGUodGhpcy5lZGl0b3IpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1Nob3VsZE9wZW4oKSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbkxheW91dFRvb2xiYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2hvdWxkQ2xvc2UoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VMYXlvdXRUb29sYmFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51cGxvYWRpbmdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS5yZW1vdmVVcGxvYWRGaWxlKHRoaXMuZmlsZUl0ZW0pO1xuICAgICAgICBpZiAodGhpcy51cGxvYWRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nU3RhdHVzJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SW1hZ2VQbHVnaW5PcHRpb25zKCkge1xuICAgICAgICB0aGlzLmltYWdlUGx1Z2luT3B0aW9ucyA9IGdldFBsdWdpbk9wdGlvbnM8SW1hZ2VQbHVnaW5PcHRpb25zPih0aGlzLmVkaXRvciwgUGx1Z2luS2V5cy5pbWFnZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREaXNhYmxlUHJldmlldygpIHtcbiAgICAgICAgY29uc3QgeyBkaXNhYmxlUHJldmlldyB9ID0gdGhpcy5pbWFnZVBsdWdpbk9wdGlvbnM7XG4gICAgICAgIGlmIChkaXNhYmxlUHJldmlldyAmJiB0eXBlb2YgZGlzYWJsZVByZXZpZXcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVByZXZpZXcgPSBkaXNhYmxlUHJldmlldyh0aGlzLmVkaXRvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVQcmV2aWV3ID0gZGlzYWJsZVByZXZpZXcgYXMgYm9vbGVhbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SW1hZ2VGaWxlSXRlbSgpIHtcbiAgICAgICAgdGhpcy5maWxlSXRlbSA9IHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nRmlsZXMuZmluZChpdGVtID0+IGl0ZW0udXJsID09PSB0aGlzLmVsZW1lbnQudXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZU1vdXNlVXAoKSB7XG4gICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2Uub25Nb3VzZVVwJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoZSA9PiB0aGlzLmVuZERyYWcoZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlSW1hZ2VVcGxvYWRpbmdTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy51cGxvYWRpbmdTdWJzY3JpcHRpb24gPSB0aGlzLmltYWdlVXBsb2FkZXJTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0VXBsb2FkaW5nSXRlbXMkKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgZmlsZVVwbG9hZGluZ0l0ZW0gPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUl0ZW0/LmZpbGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVVcGxvYWRpbmdJdGVtLmZpbmQoaXRlbSA9PiBpdGVtLmZpbGUgPT09IHRoaXMuZmlsZUl0ZW0/LmZpbGUgfHwgaXRlbT8udXJsID09PSB0aGlzLmZpbGVJdGVtPy5maWxlKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodXBsb2FkaW5nSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF1cGxvYWRpbmdJdGVtIHx8ICF1cGxvYWRpbmdJdGVtLnJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudGFnZSA9IHVwbG9hZGluZ0l0ZW0ucmVzdWx0LnVwbG9hZEZpbGUucHJvZ3Jlc3MucGVyY2VudGFnZTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN0YXR1cyB9ID0gdXBsb2FkaW5nSXRlbS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgLy8g5oiQ5Yqf5ZKM5aSx6LSl6YO96KaB5LiK5Lyg57uT5p2fXG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gVGh5VXBsb2FkU3RhdHVzLmRvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS5yZW1vdmVVcGxvYWRGaWxlKHRoaXMuZmlsZUl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nU3RhdHVzJC5uZXh0KGZhbHNlKSwgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SW1hZ2VOb2RlcyhpbWFnZUluZm86IEltYWdlRW50cnkpIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7IHR5cGU6IEVsZW1lbnRLaW5kcy5pbWFnZSwgdXJsOiBudWxsLCAuLi5pbWFnZUluZm8gfTtcbiAgICAgICAgSGlzdG9yeUVkaXRvci53aXRob3V0U2F2aW5nKHRoaXMuZWRpdG9yLCAoKSA9PiBUcmFuc2Zvcm1zLnNldE5vZGVzKHRoaXMuZWRpdG9yLCBkYXRhLCB7IGF0OiBwYXRoIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyB1cGxvYWRJbWFnZSgpIHtcbiAgICAgICAgdGhpcy51cGxvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmZpbGVJdGVtLmZpbGU7XG4gICAgICAgIGlmIChmaWxlIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5ID0ge1xuICAgICAgICAgICAgICAgIGFsaWduOiB0aGlzLmltYWdlRW50cnkuYWxpZ24gfHwgQWxpZ25tZW50LmNlbnRlcixcbiAgICAgICAgICAgICAgICB0aHVtYlVybDogVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLnVwbG9hZGluZ1N0YXR1cyQubmV4dCh0cnVlKTtcblxuICAgICAgICBjb25zdCBbZmlsZUVudGl0eV0gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmltYWdlVXBsb2FkZXJTZXJ2aWNlLnVwbG9hZEZpbGVIYW5kbGUoZmlsZSkpO1xuICAgICAgICBjb25zdCB7IG5hbWUsIHNpemUsIHRodW1iVXJsLCBvcmlnaW5VcmwgfSA9IGZpbGVFbnRpdHk7XG4gICAgICAgIGNvbnN0IGltYWdlSW5mbzogSW1hZ2VFbnRyeSA9IHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICB0aHVtYlVybCxcbiAgICAgICAgICAgIG9yaWdpblVybCxcbiAgICAgICAgICAgIHNpemUsXG4gICAgICAgICAgICBhbGlnbjogdGhpcy5pbWFnZUVudHJ5LmFsaWduIHx8IEFsaWdubWVudC5jZW50ZXJcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZXRJbWFnZU5vZGVzKGltYWdlSW5mbyk7XG4gICAgfVxuXG4gICAgc3RhcnREcmFnKGV2ZW50OiBNb3VzZUV2ZW50LCBheGlzOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZEltYWdlRXJyb3IgfHwgIXRoaXMuaW1nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5kcmFnYWJsZSA9IHRydWU7XG4gICAgICAgIGNvbnN0IGltZ0VsZW1lbnQgPSB0aGlzLmltZy5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBheGlzLFxuICAgICAgICAgICAgcHJpbnRlclBvc2l0aW9uWDogZXZlbnQucGFnZVgsXG4gICAgICAgICAgICBwcmludGVyUG9zaXRpb25ZOiBldmVudC5wYWdlWSxcbiAgICAgICAgICAgIGludGVybmFsV2lkdGg6IGltZ0VsZW1lbnQud2lkdGggfHwgdGhpcy5pbWFnZUVudHJ5LndpZHRoLFxuICAgICAgICAgICAgaW50ZXJuYWxIZWlnaHQ6IGltZ0VsZW1lbnQuaGVpZ2h0IHx8IHRoaXMuaW1hZ2VFbnRyeS5oZWlnaHQsXG4gICAgICAgICAgICBtYXhXaWR0aDogdGhpcy50aGVDb250ZXh0U2VydmljZS5nZXRGaXJzdEVsZW1lbnRDaGlsZCgpLm9mZnNldFdpZHRoXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubW91c2VNb3ZlU3Vic2NyaXB0aW9uID0gdGhpcy50aGVDb250ZXh0U2VydmljZS5vbk1vdXNlTW92ZSQuc3Vic2NyaWJlKGUgPT4gdGhpcy5tb3VzZU1vdmVIYW5kbGUoZSwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIG1vdXNlTW92ZUhhbmRsZShcbiAgICAgICAgZXZlbnQ6IE1vdXNlRXZlbnQsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGF4aXM6IHN0cmluZztcbiAgICAgICAgICAgIHByaW50ZXJQb3NpdGlvblg6IG51bWJlcjtcbiAgICAgICAgICAgIHByaW50ZXJQb3NpdGlvblk6IG51bWJlcjtcbiAgICAgICAgICAgIGludGVybmFsV2lkdGg6IG51bWJlcjtcbiAgICAgICAgICAgIGludGVybmFsSGVpZ2h0OiBudW1iZXI7XG4gICAgICAgICAgICBtYXhXaWR0aDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzLmRyYWdhYmxlKSB7XG4gICAgICAgICAgICBjb25zdCB7IGF4aXMsIHByaW50ZXJQb3NpdGlvblgsIHByaW50ZXJQb3NpdGlvblksIGludGVybmFsV2lkdGgsIGludGVybmFsSGVpZ2h0LCBtYXhXaWR0aCB9ID0gb3B0aW9ucztcbiAgICAgICAgICAgIGNvbnN0IGlzUmV2ZXJzYWwgPSBheGlzLmluY2x1ZGVzKCctJyk7XG5cbiAgICAgICAgICAgIGxldCBvZmZzZXRYID0gZXZlbnQucGFnZVggLSBwcmludGVyUG9zaXRpb25YO1xuICAgICAgICAgICAgbGV0IG9mZnNldFkgPSBldmVudC5wYWdlWSAtIHByaW50ZXJQb3NpdGlvblk7XG4gICAgICAgICAgICBsZXQgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0aGlzLmVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChpc1JldmVyc2FsKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0WCA9IC1vZmZzZXRYO1xuICAgICAgICAgICAgICAgIG9mZnNldFkgPSAtb2Zmc2V0WTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuYWxpZ24gPT09ICdjZW50ZXInKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0WCA9IG9mZnNldFggKiAyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYXhpcy5pbmNsdWRlcygneCcpKSB7XG4gICAgICAgICAgICAgICAgd2lkdGggPSBvZmZzZXRYICsgaW50ZXJuYWxXaWR0aDtcbiAgICAgICAgICAgICAgICBpZiAod2lkdGggPj0gbWF4V2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBtYXhXaWR0aDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBjbGVhciBgbGF5b3V0YCB3aGVuIHRoZSBpbWFnZSBpcyBhZGp1c3RlZCB0byB0aGUgbWF4aW11bSB2YWx1ZSB1bmRlciByaWNoIG1lZGlhXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmltYWdlRW50cnk/LmxheW91dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VFZGl0b3Iuc2V0SW1hZ2VOb2RlKHRoaXMuZWRpdG9yLCB7IGxheW91dDogdW5kZWZpbmVkIH0sIHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHdpZHRoIDw9IDEwMCkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDEwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGF4aXMuaW5jbHVkZXMoJ2wnKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYXRpbyA9IGludGVybmFsV2lkdGggLyB3aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gaW50ZXJuYWxIZWlnaHQgLyByYXRpbztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGF4aXMuaW5jbHVkZXMoJ3knKSkge1xuICAgICAgICAgICAgICAgIGhlaWdodCA9IG9mZnNldFkgKyBpbnRlcm5hbEhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0ID49IDEwMDApIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gMTAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGhlaWdodCA8PSAxMDApIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gMTAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYXhpcy5pbmNsdWRlcygnbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhdGlvID0gaW50ZXJuYWxIZWlnaHQgLyBoZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gaW50ZXJuYWxXaWR0aCAvIHJhdGlvO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLmltYWdlRW50cnkucmVTaXplZCAmJiB0aGlzLmltYWdlRW50cnkud2lkdGggIT09IHdpZHRoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LnJlU2l6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbWcubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHdpZHRoICsgJ3B4JztcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS53aWR0aCA9IHdpZHRoO1xuICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVuZERyYWcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ2FibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ2FibGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubW91c2VNb3ZlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LndpZHRoID09PSB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLmdldE9wdGlvbnMoKS53aWR0aCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS53aWR0aCA8PSB0aGlzLm5hdHVyYWxXaWR0aCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC53aWR0aFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LndpZHRoID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlRW50cnkuaGVpZ2h0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0b3IsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBFbGVtZW50S2luZHMuaW1hZ2UsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuaW1hZ2VFbnRyeVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgeyBhdDogdGhpcy5zZWxlY3Rpb24gfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbmNlbFVwbG9hZCgpIHtcbiAgICAgICAgVHJhbnNmb3Jtcy5yZW1vdmVOb2Rlcyh0aGlzLmVkaXRvciwgeyBhdDogdGhpcy5zZWxlY3Rpb24gfSk7XG4gICAgfVxuXG4gICAgaXNTaG91bGRPcGVuKCkge1xuICAgICAgICBjb25zdCB7IHJpY2hNZWRpYSB9ID0gdGhpcy5lZGl0b3I/Lm9wdGlvbnM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcz8ucmVhZG9ubHkgJiZcbiAgICAgICAgICAgIHJpY2hNZWRpYSAmJlxuICAgICAgICAgICAgdGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmXG4gICAgICAgICAgICBUaGVRdWVyaWVzLmlzR2xvYmFsQ29sbGFwc2VkKHRoaXMuZWRpdG9yKSAmJlxuICAgICAgICAgICAgIXRoaXMudXBsb2FkaW5nICYmXG4gICAgICAgICAgICAhdGhpcy5pc09wZW5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpc1Nob3VsZENsb3NlKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5pc09wZW4gJiZcbiAgICAgICAgICAgICh0aGlzPy5yZWFkb25seSB8fCAhdGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5IHx8ICFUaGVRdWVyaWVzLmlzR2xvYmFsQ29sbGFwc2VkKHRoaXMuZWRpdG9yKSB8fCB0aGlzLnVwbG9hZGluZylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvcGVuTGF5b3V0VG9vbGJhcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmltZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZiA9IHRoaXMudGh5UG9wb3Zlci5vcGVuKHRoaXMubGF5b3V0VG9vbGJhciwge1xuICAgICAgICAgICAgb3JpZ2luOiB0aGlzLmltYWdlQ29udGVudCxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICd0aGUtcGx1Z2luLXRvb2xiYXItcG9wb3ZlcicsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBiYWNrZHJvcENsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxheW91dFRvb2xiYXJSZWY/LmdldE92ZXJsYXlSZWYoKS51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRoaXMuY3JlYXRlUG9zaXRpb25TdHJhdGVneSgpKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH0sIDE1MCk7XG4gICAgfVxuXG4gICAgY2xvc2VMYXlvdXRUb29sYmFyKCkge1xuICAgICAgICB0aGlzLmxheW91dFRvb2xiYXJSZWY/LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgbGF5b3V0QWN0aXZlKGtleTogQWxpZ25tZW50IHwgTGF5b3V0VHlwZXMpIHtcbiAgICAgICAgY29uc3QgeyBsYXlvdXQsIGFsaWduIH0gPSB0aGlzLmltYWdlRW50cnk7XG4gICAgICAgIHJldHVybiBrZXkgJiYgKChrZXkgPT09IGFsaWduICYmICFsYXlvdXQpIHx8IGtleSA9PT0gbGF5b3V0KTtcbiAgICB9XG5cbiAgICBzZXRJbWFnZU5vZGUoZTogTW91c2VFdmVudCwgcHJvcHM6IFBhcnRpYWw8SW1hZ2VFbGVtZW50Pikge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIEltYWdlRWRpdG9yLnNldEltYWdlTm9kZSh0aGlzLmVkaXRvciwgcHJvcHMsIHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgc2V0QmxvY2tDYXJkTGF5b3V0QXR0cigpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgYmxvY2tDYXJkID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnLnNsYXRlLWJsb2NrLWNhcmQnKTtcbiAgICAgICAgICAgIGNvbnN0IHsgbGF5b3V0IH0gPSB0aGlzLmVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChibG9ja0NhcmQgJiYgbGF5b3V0KSB7XG4gICAgICAgICAgICAgICAgYmxvY2tDYXJkLnNldEF0dHJpYnV0ZSgnbGF5b3V0JywgbGF5b3V0KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYmxvY2tDYXJkICYmICFsYXlvdXQpIHtcbiAgICAgICAgICAgICAgICBibG9ja0NhcmQucmVtb3ZlQXR0cmlidXRlKCdsYXlvdXQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIEltYWdlRWRpdG9yLnJlbW92ZUltYWdlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIGNyZWF0ZVBvc2l0aW9uU3RyYXRlZ3koKSB7XG4gICAgICAgIGNvbnN0IGJvdHRvbVBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdjZW50ZXInLFxuICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICBvdmVybGF5WDogJ2NlbnRlcicsXG4gICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgb2Zmc2V0WTogNFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5pbWFnZUNvbnRlbnQpXG4gICAgICAgICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgICAgICAgIC53aXRoR3Jvd0FmdGVyT3BlbihmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtib3R0b21Qb3NpdGlvbl0pO1xuICAgIH1cblxuICAgIGltYWdlTG9hZGVkKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBpbWcgPSBldmVudC50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgICAgICAgdGhpcy5uYXR1cmFsV2lkdGggPSBpbWcubmF0dXJhbFdpZHRoO1xuICAgICAgICB0aGlzLm5hdHVyYWxIZWlnaHQgPSBpbWcubmF0dXJhbEhlaWdodDtcbiAgICB9XG5cbiAgICBpbWFnZUVycm9yKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBpbWcgPSBldmVudC50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgICAgICAgY29uc3QgZXJyb3JJbWFnZVVybCA9IHRoaXMuaW1hZ2VQbHVnaW5PcHRpb25zPy5lcnJvckltYWdlVXJsO1xuICAgICAgICBpZiAoIXRoaXMubG9hZEltYWdlRXJyb3IgJiYgZXJyb3JJbWFnZVVybCkge1xuICAgICAgICAgICAgY29uc3QgdXJsID0gdHlwZW9mIGVycm9ySW1hZ2VVcmwgPT09ICdmdW5jdGlvbicgPyBlcnJvckltYWdlVXJsKHRoaXMuZWRpdG9yKSA6IGVycm9ySW1hZ2VVcmw7XG4gICAgICAgICAgICB0aGlzLmxvYWRJbWFnZUVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVByZXZpZXcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5pbWFnZUNvbnRlbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0aGUtaW1hZ2UtZXJyb3InKTtcbiAgICAgICAgICAgIGltZy5zcmMgPSB1cmw7XG4gICAgICAgIH1cbiAgICAgICAgaW1nLm9uZXJyb3IgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIOe7hOS7tuW6kyBkaWFsb2cg5by55Ye65pe277yM5Lya6K6w5b2V5b2T5YmN55qE54Sm54K544CC6Zi75q2iIG1vdXNlZG93biDpu5jorqTooYzkuLrvvIzkvb/lvpflm77niYfljp/mnKznmoQgY2xpY2sg5LqL5Lu26IO96I635Y+W5Yiw5q2j56Gu55qE54Sm54K544CCXG4gICAgcHJldmVudERlZmF1bHQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGltYWdlQ2xpY2soKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbWFnZUdyb3VwQ29tcG9uZW50LmltYWdlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSB0aGlzLmltYWdlRGlyZWN0aXZlKTtcbiAgICAgICAgY29uc3QgaW1hZ2VHcm91cCA9IHRoaXMuaW1hZ2VHcm91cENvbXBvbmVudC5pbWFnZXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5Vcmw6IGl0ZW0udGh5T3JpZ2luU3JjLFxuICAgICAgICAgICAgICAgIHRodW1iVXJsOiBpdGVtLnRoeVByZXZpZXdTcmMsXG4gICAgICAgICAgICAgICAgbmFtZTogaXRlbS50aHlJbWFnZU1ldGEubmFtZSxcbiAgICAgICAgICAgICAgICBzaXplOiBpdGVtLnRoeUltYWdlTWV0YS5zaXplXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KSBhcyBJbWFnZUluZm9bXTtcbiAgICAgICAgY29uc3QgeyBvcmlnaW5VcmwsIHRodW1iVXJsLCBuYW1lLCBzaXplIH0gPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgIGlmICh0aGlzLmltYWdlUGx1Z2luT3B0aW9ucy5wcmV2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlUGx1Z2luT3B0aW9ucy5wcmV2aWV3KHtcbiAgICAgICAgICAgICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yLFxuICAgICAgICAgICAgICAgIHByZXZpZXdJbWFnZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRodW1iVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VHcm91cCxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxzbGF0ZS1jaGlsZHJlbiBbY2hpbGRyZW5dPVwiY2hpbGRyZW5cIiBbY29udGV4dF09XCJjaGlsZHJlbkNvbnRleHRcIiBbdmlld0NvbnRleHRdPVwidmlld0NvbnRleHRcIj48L3NsYXRlLWNoaWxkcmVuPlxuXG48ZGl2IGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyXCIgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIiBbc3R5bGUudGV4dEFsaWduXT1cImltYWdlRW50cnkuYWxpZ25cIj5cbiAgPGRpdiAjaW1hZ2VDb250ZW50ICpuZ0lmPVwiaW1hZ2VFbnRyeS50aHVtYlVybDsgZWxzZSBpbWFnZUxvYWRpbmdcIiBjbGFzcz1cImltYWdlLWNvbnRlbnRcIiBbY2xhc3MuY3Vyc29yLXBvaW50ZXJdPVwiIXNlbGVjdGlvblwiPlxuICAgIDxpbWdcbiAgICAgICNpbWdcbiAgICAgIHRoeUltYWdlXG4gICAgICBjbGFzcz1cIm1haW4taW1hZ2VcIlxuICAgICAgW2NsYXNzLmltYWdlLWNvbGxhcHNlZF09XCJzZWxlY3Rpb24gJiYgIXVwbG9hZGluZ1wiXG4gICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IGltYWdlQmluZGluZ1dpZHRoIH1cIlxuICAgICAgW2FsdF09XCJpbWFnZUVudHJ5Lm5hbWVcIlxuICAgICAgW3RoeVNyY109XCJpbWFnZUVudHJ5LnRodW1iVXJsXCJcbiAgICAgIFt0aHlQcmV2aWV3U3JjXT1cImltYWdlRW50cnkudGh1bWJVcmxcIlxuICAgICAgW3RoeU9yaWdpblNyY109XCJpbWFnZUVudHJ5Lm9yaWdpblVybFwiXG4gICAgICBbdGh5RGlzYWJsZVByZXZpZXddPVwiZGlzYWJsZVByZXZpZXdcIlxuICAgICAgW3RoeUltYWdlTWV0YV09XCJ7IG5hbWU6IGltYWdlRW50cnkubmFtZSwgc2l6ZTogaW1hZ2VFbnRyeS5zaXplIH1cIlxuICAgICAgKGxvYWQpPVwiaW1hZ2VMb2FkZWQoJGV2ZW50KVwiXG4gICAgICAobW91c2Vkb3duKT1cInByZXZlbnREZWZhdWx0KCRldmVudClcIlxuICAgICAgKGVycm9yKT1cImltYWdlRXJyb3IoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwiaW1hZ2VDbGljaygkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxkaXYgKm5nSWY9XCJpc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5XCIgY2xhc3M9XCJpbWFnZS1wcm9maWxlXCIgW2NsYXNzLm91dGxpbmVdPVwic2VsZWN0aW9uXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRJbWFnZUVycm9yXCI+XG4gICAgICAgIDxzcGFuIChtb3VzZWRvd24pPVwic3RhcnREcmFnKCRldmVudCwgJy14bCcpXCIgY2xhc3M9XCJpbWFnZS1wb2ludGVyIGxlZnQgdG9wXCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZygkZXZlbnQsICd4bCcpXCIgY2xhc3M9XCJpbWFnZS1wb2ludGVyIHJpZ2h0IHRvcFwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKG1vdXNlZG93bik9XCJzdGFydERyYWcoJGV2ZW50LCAneGwnKVwiIGNsYXNzPVwiaW1hZ2UtcG9pbnRlciByaWdodCBib3R0b21cIj48L3NwYW4+XG4gICAgICAgIDxzcGFuIChtb3VzZWRvd24pPVwic3RhcnREcmFnKCRldmVudCwgJy14bCcpXCIgY2xhc3M9XCJpbWFnZS1wb2ludGVyIGxlZnQgYm90dG9tXCI+PC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImltYWdlVXBsb2FkaW5nXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8ZGl2ICpuZ0lmPVwiIXVwbG9hZGluZ1wiIGNsYXNzPVwibGF5ZXJcIiBbY2xhc3MucmVhZG9ubHldPVwicmVhZG9ubHlcIj48L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNpbWFnZUxvYWRpbmc+XG4gIDxkaXYgKm5nSWY9XCIhaW1hZ2VFbnRyeS50aHVtYlVybFwiIGNsYXNzPVwiaW1hZ2UtbG9hZGluZyBjdXJzb3ItcG9pbnRlclwiIGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCI+XG4gICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiaW1hZ2VcIj48L3RoeS1pY29uPlxuICA8L2Rpdj5cblxuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW1hZ2VVcGxvYWRpbmdcIj48L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsYXlvdXRUb29sYmFyPlxuICA8dGh5LWFjdGlvbnMgdGh5U2l6ZT1cInh4c1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGF5b3V0T3B0aW9uc1wiPlxuICAgICAgPGFcbiAgICAgICAgKm5nSWY9XCJpdGVtLmtleSAhPT0gJ3NwbGl0J1wiXG4gICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICB0aHlBY3Rpb25cbiAgICAgICAgW3RoeVR5cGVdPVwiaXRlbS5rZXkgPT09ICdyZW1vdmUnID8gJ2RhbmdlcicgOiAncHJpbWFyeSdcIlxuICAgICAgICBbdGh5QWN0aW9uSWNvbl09XCJpdGVtLmljb25cIlxuICAgICAgICBbdGh5QWN0aW9uQWN0aXZlXT1cImxheW91dEFjdGl2ZShpdGVtLmtleSlcIlxuICAgICAgICBbdGh5VG9vbHRpcF09XCJpdGVtLm5hbWVcIlxuICAgICAgICB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJpdGVtPy5oYW5kbGUoJGV2ZW50LCBpdGVtLmtleSlcIlxuICAgICAgPjwvYT5cbiAgICAgIDx0aHktZGl2aWRlciAqbmdJZj1cIml0ZW0ua2V5ID09PSAnc3BsaXQnXCIgY2xhc3M9XCJtci0yIG1sLTEgYWxpZ24tc2VsZi1jZW50ZXJcIiBbdGh5VmVydGljYWxdPVwidHJ1ZVwiIHRoeUNvbG9yPVwibGlnaHRcIj48L3RoeS1kaXZpZGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3RoeS1hY3Rpb25zPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbWFnZVVwbG9hZGluZz5cbiAgPGRpdiAqbmdJZj1cInVwbG9hZGluZ1wiIGNsYXNzPVwidXBsb2FkaW5nXCI+XG4gICAgPGRpdiBjbGFzcz1cInVwbG9hZGluZy1wZXJjZW50YWdlXCI+XG4gICAgICA8dGh5LXByb2dyZXNzIHRoeVR5cGU9XCJwcmltYXJ5XCIgW3RoeVZhbHVlXT1cInBlcmNlbnRhZ2VcIiB0aHlTaXplPVwic21cIj48L3RoeS1wcm9ncmVzcz5cbiAgICAgIDx0aHktaWNvbiAoY2xpY2spPVwiY2FuY2VsVXBsb2FkKCRldmVudClcIiB0aHlJY29uTmFtZT1cImNsb3NlLWNpcmNsZS1ib2xkLWZpbGxcIiB0aHlJY29uTGVnZ2luZz1cInRydWVcIj4gPC90aHktaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
464
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUdILFNBQVMsRUFHVCxNQUFNLEVBSU4sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQWlCLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXJGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUF1QixhQUFhLEVBQXVCLE1BQU0sZUFBZSxD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QUFpQix1RUNqS2hDLGdnR0F3RUEsNENEcEJRLElBQUksNkZBQ0osS0FBSyxtSEFDTCxPQUFPLDJFQUNQLGdCQUFnQixvSkFFaEIsT0FBTyxzTUFDUCxpQkFBaUIsOExBQ2pCLFNBQVMsZ01BQ1QsVUFBVSxxSkFDVixVQUFVLDZFQUNWLG1CQUFtQiw4VEFDbkIsV0FBVzs7MkZBSU4sUUFBUTtrQkFwQnBCLFNBQVM7K0JBQ0ksdUJBQXVCLGNBRXJCLElBQUksV0FDUDt3QkFDTCxJQUFJO3dCQUNKLEtBQUs7d0JBQ0wsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsT0FBTzt3QkFDUCxpQkFBaUI7d0JBQ2pCLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLG1CQUFtQjt3QkFDbkIsV0FBVztxQkFDZCxhQUNVLENBQUMsZUFBZSxDQUFDOzswQkFzR3ZCLE1BQU07MkJBQUMsd0JBQXdCO2lKQWRwQyxZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYztnQkFJekIsR0FBRztzQkFERixTQUFTO3VCQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSW5DLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdkLGNBQWM7c0JBQTNDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiwgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUaHlBY3Rpb24sIFRoeUFjdGlvbnMgfSBmcm9tICduZ3gtdGV0aHlzL2FjdGlvbic7XG5pbXBvcnQgeyBUaHlEaXZpZGVyIH0gZnJvbSAnbmd4LXRldGh5cy9kaXZpZGVyJztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5SW1hZ2VEaXJlY3RpdmUsIFRoeUltYWdlR3JvdXAsIFRoeUltYWdlU2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvaW1hZ2UnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaHlQcm9ncmVzcyB9IGZyb20gJ25neC10ZXRoeXMvcHJvZ3Jlc3MnO1xuaW1wb3J0IHsgVGh5VG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJ25neC10ZXRoeXMvdG9vbHRpcCc7XG5pbXBvcnQgeyBUaHlVcGxvYWRTdGF0dXMgfSBmcm9tICduZ3gtdGV0aHlzL3VwbG9hZCc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWRpdG9yLCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgQmVmb3JlQ29udGV4dENoYW5nZSwgU2xhdGVDaGlsZHJlbiwgU2xhdGVFbGVtZW50Q29udGV4dCB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgSGlzdG9yeUVkaXRvciB9IGZyb20gJ3NsYXRlLWhpc3RvcnknO1xuaW1wb3J0IHsgQWxpZ25tZW50LCBFbGVtZW50S2luZHMsIExheW91dFR5cGVzLCBUb29sYmFyQWN0aW9uVHlwZXMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7XG4gICAgSW1hZ2VFbnRyeSxcbiAgICBJbWFnZUluZm8sXG4gICAgSW1hZ2VQbHVnaW5PcHRpb25zLFxuICAgIExheW91dE9wdGlvbixcbiAgICBQbHVnaW5LZXlzLFxuICAgIFRIRV9VUExPQURfU0VSVklDRV9UT0tFTixcbiAgICBUaGVCYXNlRWxlbWVudCxcbiAgICBUaGVJbWFnZVVwbG9hZGVyU2VydmljZVxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBUaGVDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBpc01vYmlsZU1vZGUgfSBmcm9tICcuLi8uLi91dGlscy9nZXQtbW9kZSc7XG5pbXBvcnQgeyBJbWFnZUVkaXRvciB9IGZyb20gJy4vaW1hZ2UuZWRpdG9yJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtaW1hZ2UsIFt0aGVJbWFnZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBOZ1N0eWxlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBTbGF0ZUNoaWxkcmVuLFxuICAgICAgICBUaHlJY29uLFxuICAgICAgICBUaHlJbWFnZURpcmVjdGl2ZSxcbiAgICAgICAgVGh5QWN0aW9uLFxuICAgICAgICBUaHlEaXZpZGVyLFxuICAgICAgICBUaHlBY3Rpb25zLFxuICAgICAgICBUaHlUb29sdGlwRGlyZWN0aXZlLFxuICAgICAgICBUaHlQcm9ncmVzc1xuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbVGh5SW1hZ2VTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBUaGVJbWFnZVxuICAgIGV4dGVuZHMgVGhlQmFzZUVsZW1lbnQ8SW1hZ2VFbGVtZW50LCBFZGl0b3I+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgQmVmb3JlQ29udGV4dENoYW5nZTxTbGF0ZUVsZW1lbnRDb250ZXh0Plxue1xuICAgIG5hdHVyYWxXaWR0aCA9IDA7XG5cbiAgICBuYXR1cmFsSGVpZ2h0ID0gMDtcblxuICAgIGltYWdlRW50cnk6IEltYWdlRW50cnkgPSB7fTtcblxuICAgIHVwbG9hZGluZyA9IGZhbHNlO1xuXG4gICAgcGVyY2VudGFnZSA9IDA7XG5cbiAgICBmaWxlSXRlbTogeyB1cmw6IHN0cmluZzsgZmlsZTogRmlsZSB8IHN0cmluZyB9O1xuXG4gICAgbGF5b3V0RGVmYXVsdFdpZHRoID0gMzY4O1xuXG4gICAgZGlzYWJsZVByZXZpZXcgPSBmYWxzZTtcblxuICAgIGxvYWRJbWFnZUVycm9yID0gZmFsc2U7XG5cbiAgICBsYXlvdXRPcHRpb25zOiBMYXlvdXRPcHRpb25bXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBBbGlnbm1lbnQubGVmdCxcbiAgICAgICAgICAgIGljb246ICdpbWFnZS1sZWZ0JyxcbiAgICAgICAgICAgIG5hbWU6ICflt6blr7npvZAnLFxuICAgICAgICAgICAgaGFuZGxlOiAoZTogTW91c2VFdmVudCwga2V5OiBBbGlnbm1lbnQpID0+IHRoaXMuc2V0SW1hZ2VOb2RlKGUsIHsgYWxpZ246IGtleSwgbGF5b3V0OiB1bmRlZmluZWQgfSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBBbGlnbm1lbnQuY2VudGVyLFxuICAgICAgICAgICAgaWNvbjogJ2ltYWdlLWNlbnRlcicsXG4gICAgICAgICAgICBuYW1lOiAn5bGF5LitJyxcbiAgICAgICAgICAgIGhhbmRsZTogKGU6IE1vdXNlRXZlbnQsIGtleTogQWxpZ25tZW50KSA9PiB0aGlzLnNldEltYWdlTm9kZShlLCB7IGFsaWduOiBrZXksIGxheW91dDogdW5kZWZpbmVkIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogQWxpZ25tZW50LnJpZ2h0LFxuICAgICAgICAgICAgaWNvbjogJ2ltYWdlLXJpZ2h0JyxcbiAgICAgICAgICAgIG5hbWU6ICflj7Plr7npvZAnLFxuICAgICAgICAgICAgaGFuZGxlOiAoZTogTW91c2VFdmVudCwga2V5OiBBbGlnbm1lbnQpID0+IHRoaXMuc2V0SW1hZ2VOb2RlKGUsIHsgYWxpZ246IGtleSwgbGF5b3V0OiB1bmRlZmluZWQgfSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBUb29sYmFyQWN0aW9uVHlwZXMuc3BsaXRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBMYXlvdXRUeXBlcy53cmFwTGVmdCxcbiAgICAgICAgICAgIGljb246ICd3cmFwLWxlZnQnLFxuICAgICAgICAgICAgbmFtZTogJ+WbvueJh+WxheW3picsXG4gICAgICAgICAgICBoYW5kbGU6IChlOiBNb3VzZUV2ZW50LCBrZXk6IExheW91dFR5cGVzKSA9PiB0aGlzLnNldEltYWdlTm9kZShlLCB7IGxheW91dDoga2V5IH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogTGF5b3V0VHlwZXMud3JhcFJpZ2h0LFxuICAgICAgICAgICAgaWNvbjogJ3dyYXAtcmlnaHQnLFxuICAgICAgICAgICAgbmFtZTogJ+WbvueJh+WxheWPsycsXG4gICAgICAgICAgICBoYW5kbGU6IChlOiBNb3VzZUV2ZW50LCBrZXk6IExheW91dFR5cGVzKSA9PiB0aGlzLnNldEltYWdlTm9kZShlLCB7IGxheW91dDoga2V5IH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ3JlbW92ZScsXG4gICAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgICAgbmFtZTogJ+WIoOmZpCcsXG4gICAgICAgICAgICBoYW5kbGU6IChlOiBNb3VzZUV2ZW50KSA9PiB0aGlzLm9uRGVsZXRlKGUpXG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgcHJpdmF0ZSB1cGxvYWRpbmdTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHByaXZhdGUgbW91c2VNb3ZlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcml2YXRlIGRyYWdhYmxlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGxheW91dFRvb2xiYXJSZWY6IFRoeVBvcG92ZXJSZWY8YW55PjtcblxuICAgIHByaXZhdGUgaW1hZ2VQbHVnaW5PcHRpb25zOiBJbWFnZVBsdWdpbk9wdGlvbnM7XG5cbiAgICBnZXQgaXNPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRUb29sYmFyUmVmICYmIHRoaXMubGF5b3V0VG9vbGJhclJlZi5nZXRPdmVybGF5UmVmKCkgJiYgdGhpcy5sYXlvdXRUb29sYmFyUmVmLmdldE92ZXJsYXlSZWYoKS5oYXNBdHRhY2hlZCgpO1xuICAgIH1cblxuICAgIGdldCBpbWFnZUJpbmRpbmdXaWR0aCgpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFdpZHRoID0gdGhpcy5pbWFnZUVudHJ5Py53aWR0aCB8fCB0aGlzLm5hdHVyYWxXaWR0aDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW1hZ2VFbnRyeT8ubGF5b3V0ICYmIGN1cnJlbnRXaWR0aCA+IHRoaXMubGF5b3V0RGVmYXVsdFdpZHRoICYmICF0aGlzLmltYWdlRW50cnk/LnJlU2l6ZWRcbiAgICAgICAgICAgID8gdGhpcy5sYXlvdXREZWZhdWx0V2lkdGhcbiAgICAgICAgICAgIDogdGhpcy5pbWFnZUVudHJ5LndpZHRoO1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ2ltYWdlQ29udGVudCcpXG4gICAgaW1hZ2VDb250ZW50OiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnaW1nJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgaW1nOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnbGF5b3V0VG9vbGJhcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgbGF5b3V0VG9vbGJhcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoVGh5SW1hZ2VEaXJlY3RpdmUpIGltYWdlRGlyZWN0aXZlOiBUaHlJbWFnZURpcmVjdGl2ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyBpbWFnZUdyb3VwOiBUaHlJbWFnZUdyb3VwLFxuICAgICAgICBASW5qZWN0KFRIRV9VUExPQURfU0VSVklDRV9UT0tFTilcbiAgICAgICAgcHJpdmF0ZSBpbWFnZVVwbG9hZGVyU2VydmljZTogVGhlSW1hZ2VVcGxvYWRlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGhlQ29udGV4dFNlcnZpY2U6IFRoZUNvbnRleHRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRoeVBvcG92ZXI6IFRoeVBvcG92ZXIsXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkcik7XG4gICAgfVxuXG4gICAgYmVmb3JlQ29udGV4dENoYW5nZSA9ICh2YWx1ZTogU2xhdGVFbGVtZW50Q29udGV4dDxJbWFnZUVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZS5lbGVtZW50ICE9PSB0aGlzLmVsZW1lbnQgJiYgdmFsdWUuZWxlbWVudC50aHVtYlVybCkge1xuICAgICAgICAgICAgbGV0IHRodW1iVXJsID0gdmFsdWUuZWxlbWVudC50aHVtYlVybDtcbiAgICAgICAgICAgIGxldCBvcmlnaW5VcmwgPSB2YWx1ZS5lbGVtZW50Lm9yaWdpblVybDtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaW1hZ2VVcGxvYWRlclNlcnZpY2U/LmJ1aWxkSW1hZ2VVcmwpIHtcbiAgICAgICAgICAgICAgICB0aHVtYlVybCA9IHRoaXMuaW1hZ2VVcGxvYWRlclNlcnZpY2UuYnVpbGRJbWFnZVVybCh0aHVtYlVybCk7XG4gICAgICAgICAgICAgICAgb3JpZ2luVXJsID0gdGhpcy5pbWFnZVVwbG9hZGVyU2VydmljZS5idWlsZEltYWdlVXJsKG9yaWdpblVybCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeSA9IHtcbiAgICAgICAgICAgICAgICAuLi52YWx1ZS5lbGVtZW50LFxuICAgICAgICAgICAgICAgIHRodW1iVXJsLFxuICAgICAgICAgICAgICAgIG9yaWdpblVybCxcbiAgICAgICAgICAgICAgICBhbGlnbjogdmFsdWUuZWxlbWVudC5hbGlnbiB8fCBBbGlnbm1lbnQubGVmdCxcbiAgICAgICAgICAgICAgICByZVNpemVkOiB2YWx1ZS5lbGVtZW50LnJlU2l6ZWQgfHwgZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnNldEJsb2NrQ2FyZExheW91dEF0dHIoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5zZXRJbWFnZUZpbGVJdGVtKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZmlsZUl0ZW0/LmZpbGUpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkSW1hZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEltYWdlUGx1Z2luT3B0aW9ucygpO1xuICAgICAgICB0aGlzLnNldERpc2FibGVQcmV2aWV3KCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmliZU1vdXNlVXAoKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVJbWFnZVVwbG9hZGluZ1N0YXRlKCk7XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlKCkge1xuICAgICAgICBzdXBlci5vbkNvbnRleHRDaGFuZ2UoKTtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQgJiYgIWlzTW9iaWxlTW9kZSh0aGlzLmVkaXRvcikpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2hvdWxkT3BlbigpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTGF5b3V0VG9vbGJhcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNTaG91bGRDbG9zZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZUxheW91dFRvb2xiYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVwbG9hZGluZ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLnJlbW92ZVVwbG9hZEZpbGUodGhpcy5maWxlSXRlbSk7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZGluZykge1xuICAgICAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdTdGF0dXMkLm5leHQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbWFnZVBsdWdpbk9wdGlvbnMoKSB7XG4gICAgICAgIHRoaXMuaW1hZ2VQbHVnaW5PcHRpb25zID0gZ2V0UGx1Z2luT3B0aW9uczxJbWFnZVBsdWdpbk9wdGlvbnM+KHRoaXMuZWRpdG9yLCBQbHVnaW5LZXlzLmltYWdlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERpc2FibGVQcmV2aWV3KCkge1xuICAgICAgICBjb25zdCB7IGRpc2FibGVQcmV2aWV3IH0gPSB0aGlzLmltYWdlUGx1Z2luT3B0aW9ucztcbiAgICAgICAgaWYgKGRpc2FibGVQcmV2aWV3ICYmIHR5cGVvZiBkaXNhYmxlUHJldmlldyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlUHJldmlldyA9IGRpc2FibGVQcmV2aWV3KHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVByZXZpZXcgPSBkaXNhYmxlUHJldmlldyBhcyBib29sZWFuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbWFnZUZpbGVJdGVtKCkge1xuICAgICAgICB0aGlzLmZpbGVJdGVtID0gdGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdGaWxlcy5maW5kKGl0ZW0gPT4gaXRlbS51cmwgPT09IHRoaXMuZWxlbWVudC51cmwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlTW91c2VVcCgpIHtcbiAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS5vbk1vdXNlVXAkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZShlID0+IHRoaXMuZW5kRHJhZyhlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVJbWFnZVVwbG9hZGluZ1N0YXRlKCkge1xuICAgICAgICB0aGlzLnVwbG9hZGluZ1N1YnNjcmlwdGlvbiA9IHRoaXMuaW1hZ2VVcGxvYWRlclNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRVcGxvYWRpbmdJdGVtcyQoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICBmaWxlVXBsb2FkaW5nSXRlbSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlSXRlbT8uZmlsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVVwbG9hZGluZ0l0ZW0uZmluZChpdGVtID0+IGl0ZW0uZmlsZSA9PT0gdGhpcy5maWxlSXRlbT8uZmlsZSB8fCBpdGVtPy51cmwgPT09IHRoaXMuZmlsZUl0ZW0/LmZpbGUpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh1cGxvYWRpbmdJdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXVwbG9hZGluZ0l0ZW0gfHwgIXVwbG9hZGluZ0l0ZW0ucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJjZW50YWdlID0gdXBsb2FkaW5nSXRlbS5yZXN1bHQudXBsb2FkRmlsZS5wcm9ncmVzcy5wZXJjZW50YWdlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3RhdHVzIH0gPSB1cGxvYWRpbmdJdGVtLnJlc3VsdDtcbiAgICAgICAgICAgICAgICAvLyDmiJDlip/lkozlpLHotKXpg73opoHkuIrkvKDnu5PmnZ9cbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09PSBUaHlVcGxvYWRTdGF0dXMuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLnJlbW92ZVVwbG9hZEZpbGUodGhpcy5maWxlSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdTdGF0dXMkLm5leHQoZmFsc2UpLCAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbWFnZU5vZGVzKGltYWdlSW5mbzogSW1hZ2VFbnRyeSkge1xuICAgICAgICBjb25zdCBwYXRoID0gQW5ndWxhckVkaXRvci5maW5kUGF0aCh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHsgdHlwZTogRWxlbWVudEtpbmRzLmltYWdlLCB1cmw6IG51bGwsIC4uLmltYWdlSW5mbyB9O1xuICAgICAgICBIaXN0b3J5RWRpdG9yLndpdGhvdXRTYXZpbmcodGhpcy5lZGl0b3IsICgpID0+IFRyYW5zZm9ybXMuc2V0Tm9kZXModGhpcy5lZGl0b3IsIGRhdGEsIHsgYXQ6IHBhdGggfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIHVwbG9hZEltYWdlKCkge1xuICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuZmlsZUl0ZW0uZmlsZTtcbiAgICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlRW50cnkgPSB7XG4gICAgICAgICAgICAgICAgYWxpZ246IHRoaXMuaW1hZ2VFbnRyeS5hbGlnbiB8fCBBbGlnbm1lbnQuY2VudGVyLFxuICAgICAgICAgICAgICAgIHRodW1iVXJsOiBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nU3RhdHVzJC5uZXh0KHRydWUpO1xuXG4gICAgICAgIGNvbnN0IFtmaWxlRW50aXR5XSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaW1hZ2VVcGxvYWRlclNlcnZpY2UudXBsb2FkRmlsZUhhbmRsZShmaWxlKSk7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgc2l6ZSwgdGh1bWJVcmwsIG9yaWdpblVybCB9ID0gZmlsZUVudGl0eTtcbiAgICAgICAgY29uc3QgaW1hZ2VJbmZvOiBJbWFnZUVudHJ5ID0ge1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIHRodW1iVXJsLFxuICAgICAgICAgICAgb3JpZ2luVXJsLFxuICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgIGFsaWduOiB0aGlzLmltYWdlRW50cnkuYWxpZ24gfHwgQWxpZ25tZW50LmNlbnRlclxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNldEltYWdlTm9kZXMoaW1hZ2VJbmZvKTtcbiAgICB9XG5cbiAgICBzdGFydERyYWcoZXZlbnQ6IE1vdXNlRXZlbnQsIGF4aXM6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5sb2FkSW1hZ2VFcnJvciB8fCAhdGhpcy5pbWcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5kcmFnYWJsZSA9IHRydWU7XG4gICAgICAgIGNvbnN0IGltZ0VsZW1lbnQgPSB0aGlzLmltZy5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBheGlzLFxuICAgICAgICAgICAgcHJpbnRlclBvc2l0aW9uWDogZXZlbnQucGFnZVgsXG4gICAgICAgICAgICBwcmludGVyUG9zaXRpb25ZOiBldmVudC5wYWdlWSxcbiAgICAgICAgICAgIGludGVybmFsV2lkdGg6IGltZ0VsZW1lbnQud2lkdGggfHwgdGhpcy5pbWFnZUVudHJ5LndpZHRoLFxuICAgICAgICAgICAgaW50ZXJuYWxIZWlnaHQ6IGltZ0VsZW1lbnQuaGVpZ2h0IHx8IHRoaXMuaW1hZ2VFbnRyeS5oZWlnaHQsXG4gICAgICAgICAgICBtYXhXaWR0aDogdGhpcy50aGVDb250ZXh0U2VydmljZS5nZXRGaXJzdEVsZW1lbnRDaGlsZCgpLm9mZnNldFdpZHRoXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubW91c2VNb3ZlU3Vic2NyaXB0aW9uID0gdGhpcy50aGVDb250ZXh0U2VydmljZS5vbk1vdXNlTW92ZSQuc3Vic2NyaWJlKGUgPT4gdGhpcy5tb3VzZU1vdmVIYW5kbGUoZSwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIG1vdXNlTW92ZUhhbmRsZShcbiAgICAgICAgZXZlbnQ6IE1vdXNlRXZlbnQsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGF4aXM6IHN0cmluZztcbiAgICAgICAgICAgIHByaW50ZXJQb3NpdGlvblg6IG51bWJlcjtcbiAgICAgICAgICAgIHByaW50ZXJQb3NpdGlvblk6IG51bWJlcjtcbiAgICAgICAgICAgIGludGVybmFsV2lkdGg6IG51bWJlcjtcbiAgICAgICAgICAgIGludGVybmFsSGVpZ2h0OiBudW1iZXI7XG4gICAgICAgICAgICBtYXhXaWR0aDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzLmRyYWdhYmxlKSB7XG4gICAgICAgICAgICBjb25zdCB7IGF4aXMsIHByaW50ZXJQb3NpdGlvblgsIHByaW50ZXJQb3NpdGlvblksIGludGVybmFsV2lkdGgsIGludGVybmFsSGVpZ2h0LCBtYXhXaWR0aCB9ID0gb3B0aW9ucztcbiAgICAgICAgICAgIGNvbnN0IGlzUmV2ZXJzYWwgPSBheGlzLmluY2x1ZGVzKCctJyk7XG5cbiAgICAgICAgICAgIGxldCBvZmZzZXRYID0gZXZlbnQucGFnZVggLSBwcmludGVyUG9zaXRpb25YO1xuICAgICAgICAgICAgbGV0IG9mZnNldFkgPSBldmVudC5wYWdlWSAtIHByaW50ZXJQb3NpdGlvblk7XG4gICAgICAgICAgICBsZXQgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0aGlzLmVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChpc1JldmVyc2FsKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0WCA9IC1vZmZzZXRYO1xuICAgICAgICAgICAgICAgIG9mZnNldFkgPSAtb2Zmc2V0WTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuYWxpZ24gPT09ICdjZW50ZXInKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0WCA9IG9mZnNldFggKiAyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYXhpcy5pbmNsdWRlcygneCcpKSB7XG4gICAgICAgICAgICAgICAgd2lkdGggPSBvZmZzZXRYICsgaW50ZXJuYWxXaWR0aDtcbiAgICAgICAgICAgICAgICBpZiAod2lkdGggPj0gbWF4V2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBtYXhXaWR0aDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBjbGVhciBgbGF5b3V0YCB3aGVuIHRoZSBpbWFnZSBpcyBhZGp1c3RlZCB0byB0aGUgbWF4aW11bSB2YWx1ZSB1bmRlciByaWNoIG1lZGlhXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmltYWdlRW50cnk/LmxheW91dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VFZGl0b3Iuc2V0SW1hZ2VOb2RlKHRoaXMuZWRpdG9yLCB7IGxheW91dDogdW5kZWZpbmVkIH0sIHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHdpZHRoIDw9IDEwMCkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDEwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGF4aXMuaW5jbHVkZXMoJ2wnKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYXRpbyA9IGludGVybmFsV2lkdGggLyB3aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gaW50ZXJuYWxIZWlnaHQgLyByYXRpbztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGF4aXMuaW5jbHVkZXMoJ3knKSkge1xuICAgICAgICAgICAgICAgIGhlaWdodCA9IG9mZnNldFkgKyBpbnRlcm5hbEhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0ID49IDEwMDApIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gMTAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGhlaWdodCA8PSAxMDApIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gMTAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYXhpcy5pbmNsdWRlcygnbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhdGlvID0gaW50ZXJuYWxIZWlnaHQgLyBoZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gaW50ZXJuYWxXaWR0aCAvIHJhdGlvO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLmltYWdlRW50cnkucmVTaXplZCAmJiB0aGlzLmltYWdlRW50cnkud2lkdGggIT09IHdpZHRoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LnJlU2l6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbWcubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHdpZHRoICsgJ3B4JztcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS53aWR0aCA9IHdpZHRoO1xuICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVuZERyYWcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ2FibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ2FibGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubW91c2VNb3ZlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LndpZHRoID09PSB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLmdldE9wdGlvbnMoKS53aWR0aCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS53aWR0aCA8PSB0aGlzLm5hdHVyYWxXaWR0aCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC53aWR0aFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LndpZHRoID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlRW50cnkuaGVpZ2h0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0b3IsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBFbGVtZW50S2luZHMuaW1hZ2UsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuaW1hZ2VFbnRyeVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgeyBhdDogdGhpcy5zZWxlY3Rpb24gfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbmNlbFVwbG9hZCgpIHtcbiAgICAgICAgVHJhbnNmb3Jtcy5yZW1vdmVOb2Rlcyh0aGlzLmVkaXRvciwgeyBhdDogdGhpcy5zZWxlY3Rpb24gfSk7XG4gICAgfVxuXG4gICAgaXNTaG91bGRPcGVuKCkge1xuICAgICAgICBjb25zdCB7IHJpY2hNZWRpYSB9ID0gdGhpcy5lZGl0b3I/Lm9wdGlvbnM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcz8ucmVhZG9ubHkgJiZcbiAgICAgICAgICAgIHJpY2hNZWRpYSAmJlxuICAgICAgICAgICAgdGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmXG4gICAgICAgICAgICBUaGVRdWVyaWVzLmlzR2xvYmFsQ29sbGFwc2VkKHRoaXMuZWRpdG9yKSAmJlxuICAgICAgICAgICAgIXRoaXMudXBsb2FkaW5nICYmXG4gICAgICAgICAgICAhdGhpcy5pc09wZW5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpc1Nob3VsZENsb3NlKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5pc09wZW4gJiZcbiAgICAgICAgICAgICh0aGlzPy5yZWFkb25seSB8fCAhdGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5IHx8ICFUaGVRdWVyaWVzLmlzR2xvYmFsQ29sbGFwc2VkKHRoaXMuZWRpdG9yKSB8fCB0aGlzLnVwbG9hZGluZylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvcGVuTGF5b3V0VG9vbGJhcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmltZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZiA9IHRoaXMudGh5UG9wb3Zlci5vcGVuKHRoaXMubGF5b3V0VG9vbGJhciwge1xuICAgICAgICAgICAgb3JpZ2luOiB0aGlzLmltYWdlQ29udGVudCxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICd0aGUtcGx1Z2luLXRvb2xiYXItcG9wb3ZlcicsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBiYWNrZHJvcENsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxheW91dFRvb2xiYXJSZWY/LmdldE92ZXJsYXlSZWYoKS51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRoaXMuY3JlYXRlUG9zaXRpb25TdHJhdGVneSgpKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH0sIDE1MCk7XG4gICAgfVxuXG4gICAgY2xvc2VMYXlvdXRUb29sYmFyKCkge1xuICAgICAgICB0aGlzLmxheW91dFRvb2xiYXJSZWY/LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgbGF5b3V0QWN0aXZlKGtleTogQWxpZ25tZW50IHwgTGF5b3V0VHlwZXMpIHtcbiAgICAgICAgY29uc3QgeyBsYXlvdXQsIGFsaWduIH0gPSB0aGlzLmltYWdlRW50cnk7XG4gICAgICAgIHJldHVybiBrZXkgJiYgKChrZXkgPT09IGFsaWduICYmICFsYXlvdXQpIHx8IGtleSA9PT0gbGF5b3V0KTtcbiAgICB9XG5cbiAgICBzZXRJbWFnZU5vZGUoZTogTW91c2VFdmVudCwgcHJvcHM6IFBhcnRpYWw8SW1hZ2VFbGVtZW50Pikge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIEltYWdlRWRpdG9yLnNldEltYWdlTm9kZSh0aGlzLmVkaXRvciwgcHJvcHMsIHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgc2V0QmxvY2tDYXJkTGF5b3V0QXR0cigpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgYmxvY2tDYXJkID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnLnNsYXRlLWJsb2NrLWNhcmQnKTtcbiAgICAgICAgICAgIGNvbnN0IHsgbGF5b3V0IH0gPSB0aGlzLmVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChibG9ja0NhcmQgJiYgbGF5b3V0KSB7XG4gICAgICAgICAgICAgICAgYmxvY2tDYXJkLnNldEF0dHJpYnV0ZSgnbGF5b3V0JywgbGF5b3V0KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYmxvY2tDYXJkICYmICFsYXlvdXQpIHtcbiAgICAgICAgICAgICAgICBibG9ja0NhcmQucmVtb3ZlQXR0cmlidXRlKCdsYXlvdXQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIEltYWdlRWRpdG9yLnJlbW92ZUltYWdlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIGNyZWF0ZVBvc2l0aW9uU3RyYXRlZ3koKSB7XG4gICAgICAgIGNvbnN0IGJvdHRvbVBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdjZW50ZXInLFxuICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICBvdmVybGF5WDogJ2NlbnRlcicsXG4gICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgb2Zmc2V0WTogNFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5pbWFnZUNvbnRlbnQpXG4gICAgICAgICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgICAgICAgIC53aXRoR3Jvd0FmdGVyT3BlbihmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtib3R0b21Qb3NpdGlvbl0pO1xuICAgIH1cblxuICAgIGltYWdlTG9hZGVkKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBpbWcgPSBldmVudC50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgICAgICAgdGhpcy5uYXR1cmFsV2lkdGggPSBpbWcubmF0dXJhbFdpZHRoO1xuICAgICAgICB0aGlzLm5hdHVyYWxIZWlnaHQgPSBpbWcubmF0dXJhbEhlaWdodDtcbiAgICB9XG5cbiAgICBpbWFnZUVycm9yKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBpbWcgPSBldmVudC50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgICAgICAgY29uc3QgZXJyb3JJbWFnZVVybCA9IHRoaXMuaW1hZ2VQbHVnaW5PcHRpb25zPy5lcnJvckltYWdlVXJsO1xuICAgICAgICBpZiAoIXRoaXMubG9hZEltYWdlRXJyb3IgJiYgZXJyb3JJbWFnZVVybCkge1xuICAgICAgICAgICAgY29uc3QgdXJsID0gdHlwZW9mIGVycm9ySW1hZ2VVcmwgPT09ICdmdW5jdGlvbicgPyBlcnJvckltYWdlVXJsKHRoaXMuZWRpdG9yKSA6IGVycm9ySW1hZ2VVcmw7XG4gICAgICAgICAgICB0aGlzLmxvYWRJbWFnZUVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVByZXZpZXcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5pbWFnZUNvbnRlbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0aGUtaW1hZ2UtZXJyb3InKTtcbiAgICAgICAgICAgIGltZy5zcmMgPSB1cmw7XG4gICAgICAgIH1cbiAgICAgICAgaW1nLm9uZXJyb3IgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIOe7hOS7tuW6kyBkaWFsb2cg5by55Ye65pe277yM5Lya6K6w5b2V5b2T5YmN55qE54Sm54K544CC6Zi75q2iIG1vdXNlZG93biDpu5jorqTooYzkuLrvvIzkvb/lvpflm77niYfljp/mnKznmoQgY2xpY2sg5LqL5Lu26IO96I635Y+W5Yiw5q2j56Gu55qE54Sm54K544CCXG4gICAgcHJldmVudERlZmF1bHQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGltYWdlQ2xpY2soKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbWFnZUdyb3VwLmltYWdlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSB0aGlzLmltYWdlRGlyZWN0aXZlKTtcbiAgICAgICAgY29uc3QgaW1hZ2VHcm91cCA9IHRoaXMuaW1hZ2VHcm91cC5pbWFnZXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5Vcmw6IGl0ZW0udGh5T3JpZ2luU3JjLFxuICAgICAgICAgICAgICAgIHRodW1iVXJsOiBpdGVtLnRoeVByZXZpZXdTcmMsXG4gICAgICAgICAgICAgICAgbmFtZTogaXRlbS50aHlJbWFnZU1ldGEubmFtZSxcbiAgICAgICAgICAgICAgICBzaXplOiBpdGVtLnRoeUltYWdlTWV0YS5zaXplXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KSBhcyBJbWFnZUluZm9bXTtcbiAgICAgICAgY29uc3QgeyBvcmlnaW5VcmwsIHRodW1iVXJsLCBuYW1lLCBzaXplIH0gPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgIGlmICh0aGlzLmltYWdlUGx1Z2luT3B0aW9ucy5wcmV2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlUGx1Z2luT3B0aW9ucy5wcmV2aWV3KHtcbiAgICAgICAgICAgICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yLFxuICAgICAgICAgICAgICAgIHByZXZpZXdJbWFnZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRodW1iVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VHcm91cCxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0aGUtaW1hZ2UtY29udGFpbmVyXCIgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIiBbc3R5bGUudGV4dEFsaWduXT1cImltYWdlRW50cnkuYWxpZ25cIj5cbiAgPGRpdlxuICAgICNpbWFnZUNvbnRlbnRcbiAgICAqbmdJZj1cImltYWdlRW50cnkudGh1bWJVcmw7IGVsc2UgaW1hZ2VMb2FkaW5nXCJcbiAgICBjbGFzcz1cImltYWdlLWNvbnRlbnRcIlxuICAgIGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJcbiAgICBbY2xhc3MuY3Vyc29yLXBvaW50ZXJdPVwiIXNlbGVjdGlvblwiXG4gID5cbiAgICA8aW1nXG4gICAgICAjaW1nXG4gICAgICB0aHlJbWFnZVxuICAgICAgY2xhc3M9XCJtYWluLWltYWdlXCJcbiAgICAgIFtjbGFzcy5pbWFnZS1jb2xsYXBzZWRdPVwic2VsZWN0aW9uICYmICF1cGxvYWRpbmdcIlxuICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgucHgnOiBpbWFnZUJpbmRpbmdXaWR0aCB9XCJcbiAgICAgIFthbHRdPVwiaW1hZ2VFbnRyeS5uYW1lXCJcbiAgICAgIFt0aHlTcmNdPVwiaW1hZ2VFbnRyeS50aHVtYlVybFwiXG4gICAgICBbdGh5UHJldmlld1NyY109XCJpbWFnZUVudHJ5LnRodW1iVXJsXCJcbiAgICAgIFt0aHlPcmlnaW5TcmNdPVwiaW1hZ2VFbnRyeS5vcmlnaW5VcmxcIlxuICAgICAgW3RoeURpc2FibGVQcmV2aWV3XT1cImRpc2FibGVQcmV2aWV3XCJcbiAgICAgIFt0aHlJbWFnZU1ldGFdPVwieyBuYW1lOiBpbWFnZUVudHJ5Lm5hbWUsIHNpemU6IGltYWdlRW50cnkuc2l6ZSB9XCJcbiAgICAgIChsb2FkKT1cImltYWdlTG9hZGVkKCRldmVudClcIlxuICAgICAgKG1vdXNlZG93bik9XCJwcmV2ZW50RGVmYXVsdCgkZXZlbnQpXCJcbiAgICAgIChlcnJvcik9XCJpbWFnZUVycm9yKCRldmVudClcIlxuICAgICAgKGNsaWNrKT1cImltYWdlQ2xpY2soJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNDb2xsYXBzZWRBbmROb25SZWFkb25seVwiIGNsYXNzPVwiaW1hZ2UtcHJvZmlsZVwiIFtjbGFzcy5vdXRsaW5lXT1cInNlbGVjdGlvblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkSW1hZ2VFcnJvclwiPlxuICAgICAgICA8c3BhbiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZygkZXZlbnQsICcteGwnKVwiIGNsYXNzPVwiaW1hZ2UtcG9pbnRlciBsZWZ0IHRvcFwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKG1vdXNlZG93bik9XCJzdGFydERyYWcoJGV2ZW50LCAneGwnKVwiIGNsYXNzPVwiaW1hZ2UtcG9pbnRlciByaWdodCB0b3BcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuIChtb3VzZWRvd24pPVwic3RhcnREcmFnKCRldmVudCwgJ3hsJylcIiBjbGFzcz1cImltYWdlLXBvaW50ZXIgcmlnaHQgYm90dG9tXCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZygkZXZlbnQsICcteGwnKVwiIGNsYXNzPVwiaW1hZ2UtcG9pbnRlciBsZWZ0IGJvdHRvbVwiPjwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpbWFnZVVwbG9hZGluZ1wiPjwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiAqbmdJZj1cIiF1cGxvYWRpbmdcIiBjbGFzcz1cImxheWVyXCIgW2NsYXNzLnJlYWRvbmx5XT1cInJlYWRvbmx5XCI+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjaW1hZ2VMb2FkaW5nPlxuICA8ZGl2ICpuZ0lmPVwiIWltYWdlRW50cnkudGh1bWJVcmxcIiBjbGFzcz1cImltYWdlLWxvYWRpbmcgY3Vyc29yLXBvaW50ZXJcIiBjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiPlxuICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImltYWdlXCI+PC90aHktaWNvbj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpbWFnZVVwbG9hZGluZ1wiPjwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xheW91dFRvb2xiYXI+XG4gIDx0aHktYWN0aW9ucyB0aHlTaXplPVwieHhzXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsYXlvdXRPcHRpb25zXCI+XG4gICAgICA8YVxuICAgICAgICAqbmdJZj1cIml0ZW0ua2V5ICE9PSAnc3BsaXQnXCJcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgICAgIHRoeUFjdGlvblxuICAgICAgICBbdGh5VHlwZV09XCJpdGVtLmtleSA9PT0gJ3JlbW92ZScgPyAnZGFuZ2VyJyA6ICdwcmltYXJ5J1wiXG4gICAgICAgIFt0aHlBY3Rpb25JY29uXT1cIml0ZW0uaWNvblwiXG4gICAgICAgIFt0aHlBY3Rpb25BY3RpdmVdPVwibGF5b3V0QWN0aXZlKGl0ZW0ua2V5KVwiXG4gICAgICAgIFt0aHlUb29sdGlwXT1cIml0ZW0ubmFtZVwiXG4gICAgICAgIHRoeVRvb2x0aXBQbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAobW91c2Vkb3duKT1cIml0ZW0/LmhhbmRsZSgkZXZlbnQsIGl0ZW0ua2V5KVwiXG4gICAgICA+PC9hPlxuICAgICAgPHRoeS1kaXZpZGVyICpuZ0lmPVwiaXRlbS5rZXkgPT09ICdzcGxpdCdcIiBjbGFzcz1cIm1yLTIgbWwtMSBhbGlnbi1zZWxmLWNlbnRlclwiIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCIgdGh5Q29sb3I9XCJsaWdodFwiPjwvdGh5LWRpdmlkZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGh5LWFjdGlvbnM+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ltYWdlVXBsb2FkaW5nPlxuICA8ZGl2ICpuZ0lmPVwidXBsb2FkaW5nXCIgY2xhc3M9XCJ1cGxvYWRpbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwidXBsb2FkaW5nLXBlcmNlbnRhZ2VcIj5cbiAgICAgIDx0aHktcHJvZ3Jlc3MgdGh5VHlwZT1cInByaW1hcnlcIiBbdGh5VmFsdWVdPVwicGVyY2VudGFnZVwiIHRoeVNpemU9XCJzbVwiPjwvdGh5LXByb2dyZXNzPlxuICAgICAgPHRoeS1pY29uIChjbGljayk9XCJjYW5jZWxVcGxvYWQoJGV2ZW50KVwiIHRoeUljb25OYW1lPVwiY2xvc2UtY2lyY2xlLWJvbGQtZmlsbFwiIHRoeUljb25MZWdnaW5nPVwidHJ1ZVwiPiA8L3RoeS1pY29uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -3,9 +3,9 @@ import { Editor, Element, Transforms } from 'slate';
3
3
  import { ElementKinds, ErrorCodes, PICTURE_ACCEPTED_UPLOAD_MIME, PICTURE_ACCEPTED_UPLOAD_SIZE } from '../../constants';
4
4
  import { getPluginOptions } from '../../core';
5
5
  import { PluginKeys, THE_UPLOAD_SERVICE_TOKEN } from '../../interfaces';
6
- import { TheQueries } from '../../queries';
6
+ import * as TheQueries from '../../queries';
7
7
  import { TheContextService } from '../../services/context.service';
8
- import { TheTransforms } from '../../transforms';
8
+ import * as TheTransforms from '../../transforms';
9
9
  import { base64toBlob } from '../../utils/blob';
10
10
  export const ImageEditor = {
11
11
  openUpload(editor) {
@@ -111,4 +111,4 @@ export const ImageEditor = {
111
111
  }
112
112
  }
113
113
  };
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsNEJBQTRCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFOUMsT0FBTyxFQUFzQixVQUFVLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3ZCLFVBQVUsQ0FBQyxNQUFjO1FBQ3JCLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkMsU0FBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0MsU0FBUyxDQUFDLFFBQVEsR0FBRyxDQUFDLEtBQVksRUFB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LElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxDQUFDO2FBQU0sQ0FBQztZQUNKLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDTCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IEVkaXRvciwgRWxlbWVudCwgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEVsZW1lbnRLaW5kcywgRXJyb3JDb2RlcywgUElDVFVSRV9BQ0NFUFRFRF9VUExPQURfTUlNRSwgUElDVFVSRV9BQ0NFUFRFRF9VUExPQURfU0laRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBJbWFnZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgSW1hZ2VQbHVnaW5PcHRpb25zLCBQbHVnaW5LZXlzLCBUSEVfVVBMT0FEX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRoZVF1ZXJpZXMgfSBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFRoZVRyYW5zZm9ybXMgfSBmcm9tICcuLi8uLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IGJhc2U2NHRvQmxvYiB9IGZyb20gJy4uLy4uL3V0aWxzL2Jsb2InO1xuXG5leHBvcnQgY29uc3QgSW1hZ2VFZGl0b3IgPSB7XG4gICAgb3BlblVwbG9hZChlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBjb25zdCBpbnB1dEZpbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICBpbnB1dEZpbGUuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2ZpbGUnKTtcbiAgICAgICAgaW5wdXRGaWxlLnNldEF0dHJpYnV0ZSgnYWNjZXB0JywgJ2ltYWdlLyonKTtcbiAgICAgICAgaW5wdXRGaWxlLnNldEF0dHJpYnV0ZSgnbXVsdGlwbGUnLCAndHJ1ZScpO1xuICAgICAgICBpbnB1dEZpbGUub25jaGFuZ2UgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBJbWFnZUVkaXRvci5pbnNlcnRJbWFnZXMoZWRpdG9yLCAoZXZlbnQudGFyZ2V0IGFzIGFueSkuZmlsZXMpO1xuICAgICAgICB9O1xuICAgICAgICBpbnB1dEZpbGUuY2xpY2soKTtcbiAgICB9LFxuICAgIGluc2VydEltYWdlcyhlZGl0b3I6IEVkaXRvciwgaW1hZ2VGaWxlczogRmlsZUxpc3QgfCBGaWxlW10pIHtcbiAgICAgICAgY29uc3QgY29udGV4dFNlcnZpY2UgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KFRoZUNvbnRleHRTZXJ2aWNlKTtcbiAgICAgICAgY29uc3QgaW1hZ2VOb2RlczogRWxlbWVudFtdID0gW107XG4gICAgICAgIGNvbnN0IHRleHQgPSB7IHRleHQ6ICcnIH07XG4gICAgICAgIGZvciAoY29uc3QgaW1hZ2Ugb2YgaW1hZ2VGaWxlcykge1xuICAgICAgICAgICAgY29uc3QgdmVyaWZ5ID0gSW1hZ2VFZGl0b3IudmVyaWZ5SW1hZ2UoZWRpdG9yLCBpbWFnZSk7XG4gICAgICAgICAgICBpZiAodmVyaWZ5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChpbWFnZSk7XG4gICAgICAgICAgICAgICAgY29udGV4dFNlcnZpY2UuYWRkVXBsb2FkaW5nRmlsZXMoeyB1cmwsIGZpbGU6IGltYWdlIH0pO1xuICAgICAgICAgICAgICAgIGltYWdlTm9kZXMucHVzaCh7IHR5cGU6IEVsZW1lbnRLaW5kcy5pbWFnZSwgdXJsLCBjaGlsZHJlbjogW3RleHRdIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbWFnZU5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIFRoZVRyYW5zZm9ybXMuaW5zZXJ0RWxlbWVudHMoZWRpdG9yLCBpbWFnZU5vZGVzKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgaGFuZGxlQmFzZTY0SW1hZ2VFbGVtZW50KGVkaXRvcjogRWRpdG9yLCBpbWFnZTogSW1hZ2VFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGluZGV4U3BsaXQgPSBpbWFnZS5vcmlnaW5VcmwuaW5kZXhPZignLCcpO1xuICAgICAgICBjb25zdCBiYXNlNjQgPSBpbWFnZS5vcmlnaW5Vcmwuc2xpY2UoaW5kZXhTcGxpdCArIDEpO1xuICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IGltYWdlLm9yaWdpblVybC5zdWJzdHJpbmcoaW1hZ2Uub3JpZ2luVXJsLmluZGV4T2YoJzonKSArIDEsIGltYWdlLm9yaWdpblVybC5pbmRleE9mKCc7JykpO1xuICAgICAgICBjb25zdCBleHQgPSBjb250ZW50VHlwZS5zdWJzdHJpbmcoY29udGVudFR5cGUuaW5kZXhPZignLycpICsgMSk7XG4gICAgICAgIGNvbnN0IGJsb2IgPSBiYXNlNjR0b0Jsb2IoYmFzZTY0LCBjb250ZW50VHlwZSk7XG4gICAgICAgIGNvbnN0IGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICBpbWFnZS50aHVtYlVybCA9IGJsb2JVcmw7XG4gICAgICAgIGltYWdlLm9yaWdpblVybCA9IGJsb2JVcmw7XG4gICAgICAgIGltYWdlLnVybCA9IGJsb2JVcmw7XG4gICAgICAgIGNvbnN0IGNvbnRleHRTZXJ2aWNlID0gZWRpdG9yLmluamVjdG9yLmdldChUaGVDb250ZXh0U2VydmljZSk7XG4gICAgICAgIGNvbnRleHRTZXJ2aWNlLmFkZFVwbG9hZGluZ0ZpbGVzKHtcbiAgICAgICAgICAgIHVybDogYmxvYlVybCxcbiAgICAgICAgICAgIGZpbGU6IG5ldyBGaWxlKFtibG9iXSwgYCR7bmV3IERhdGUoKS5nZXRUaW1lKCl9LiR7ZXh0fWAsIHsgdHlwZTogY29udGVudFR5cGUgfSlcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBoYW5kbGVFeHRlcm5hbEltYWdlRWxlbWVudChlZGl0b3I6IEVkaXRvciwgaW1hZ2U6IEltYWdlRWxlbWVudCkge1xuICAgICAgICBjb25zdCBjb250ZXh0U2VydmljZSA9IGVkaXRvci5pbmplY3Rvci5nZXQoVGhlQ29udGV4dFNlcnZpY2UpO1xuICAgICAgICBjb25zdCBpbWFnZVVwbG9hZGVyU2VydmljZSA9IGVkaXRvci5pbmplY3Rvci5nZXQoVEhFX1VQTE9BRF9TRVJWSUNFX1RPS0VOKTtcbiAgICAgICAgY29uc3QgaXNFeHRlcm5hbFVybCA9IGltYWdlPy5oYXNPd25Qcm9wZXJ0eSgnZXh0ZXJuYWxVcmwnKVxuICAgICAgICAgICAgPyBpbWFnZT8uZXh0ZXJuYWxVcmxcbiAgICAgICAgICAgIDogaW1hZ2VVcGxvYWRlclNlcnZpY2UuaXNFeHRlcm5hbFVybD8uKGltYWdlLnRodW1iVXJsKTtcblxuICAgICAgICBpZiAoaXNFeHRlcm5hbFVybCkge1xuICAgICAgICAgICAgY29uc3QgdXJsID0gaW1hZ2UudGh1bWJVcmw7XG4gICAgICAgICAgICBpbWFnZS51cmwgPSB1cmw7XG4gICAgICAgICAgICBpbWFnZS5leHRlcm5hbFVybCA9IHVybDtcbiAgICAgICAgICAgIGltYWdlLnRodW1iVXJsID0gbnVsbDtcblxuICAgICAgICAgICAgY29udGV4dFNlcnZpY2UuYWRkVXBsb2FkaW5nRmlsZXMoe1xuICAgICAgICAgICAgICAgIHVybDogaW1hZ2UudXJsLFxuICAgICAgICAgICAgICAgIGZpbGU6IGltYWdlLnVybFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHZlcmlmeUltYWdlKGVkaXRvcjogRWRpdG9yLCBpbWFnZTogRmlsZSkge1xuICAgICAgICBpZiAoIVBJQ1RVUkVfQUNDRVBURURfVVBMT0FEX01JTUUuaW5jbHVkZXMoaW1hZ2UudHlwZSkpIHtcbiAgICAgICAgICAgIGVkaXRvci5vbkVycm9yKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBFcnJvckNvZGVzLklNQUdFX0VSUl9NSU1FX0ZPUk1BVFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWNjZXB0ZWRVcGxvYWRTaXplID1cbiAgICAgICAgICAgIGdldFBsdWdpbk9wdGlvbnM8SW1hZ2VQbHVnaW5PcHRpb25zPihlZGl0b3IsIFBsdWdpbktleXMuaW1hZ2UpPy5hY2NlcHRlZFVwbG9hZFNpemUgPz8gUElDVFVSRV9BQ0NFUFRFRF9VUExPQURfU0laRTtcbiAgICAgICAgaWYgKGltYWdlLnNpemUgLyAxMDAwMDAwID49IGFjY2VwdGVkVXBsb2FkU2l6ZSkge1xuICAgICAgICAgICAgZWRpdG9yLm9uRXJyb3Ioe1xuICAgICAgICAgICAgICAgIGNvZGU6IEVycm9yQ29kZXMuSU1BR0VfRVJSX1NJWkVfTElNSVRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgaXNBY3RpdmUoZWRpdG9yOiBFZGl0b3IpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgW21hdGNoXSA9IEVkaXRvci5ub2RlcyhlZGl0b3IsIHtcbiAgICAgICAgICAgIG1hdGNoOiBuID0+IEVsZW1lbnQuaXNFbGVtZW50KG4pICYmIG4udHlwZSA9PT0gRWxlbWVudEtpbmRzLmltYWdlLFxuICAgICAgICAgICAgdW5pdmVyc2FsOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gISFtYXRjaDtcbiAgICB9LFxuICAgIHNldEltYWdlTm9kZShlZGl0b3I6IEVkaXRvciwgcHJvcHM6IFBhcnRpYWw8SW1hZ2VFbGVtZW50PiwgaW1hZ2U/OiBJbWFnZUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKCFpbWFnZSkge1xuICAgICAgICAgICAgVGhlVHJhbnNmb3Jtcy5zZXROb2RlQnlUeXBlKGVkaXRvciwgcHJvcHMsIEVsZW1lbnRLaW5kcy5pbWFnZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gVGhlUXVlcmllcy5maW5kUGF0aChlZGl0b3IsIGltYWdlKTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoZWRpdG9yLCBwcm9wcywgeyBhdDogcGF0aCB9KTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgaXNCYXNlNjQodXJsOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKHVybCkgJiYgdXJsLmluY2x1ZGVzKCdiYXNlNjQnKTtcbiAgICB9LFxuICAgIHJlbW92ZUltYWdlKGVkaXRvcjogRWRpdG9yLCBpbWFnZT86IEltYWdlRWxlbWVudCkge1xuICAgICAgICBpZiAoaW1hZ2UpIHtcbiAgICAgICAgICAgIFRoZVRyYW5zZm9ybXMuZGVsZXRlRWxlbWVudChlZGl0b3IsIGltYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFRoZVRyYW5zZm9ybXMuZGVsZXRlTm9kZUJ5VHlwZShlZGl0b3IsIEVsZW1lbnRLaW5kcy5pbWFnZSk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIl19
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsNEJBQTRCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFOUMsT0FBTyxFQUFzQixVQUFVLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RixPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEtBQUssYUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDdkIsVUFBVSxDQUFDLE1BQWM7UUFDckIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2QyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM1QyxTQUFTLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzQyxTQUFTLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDbEMsV0FBVyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUcsS0FBSyxDQUFDLE1BQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUM7UUFDRixTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUNELFlBQVksQ0FBQyxNQUFjLEVBQUUsVUFBNkI7UUFDdEQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5RCxNQUFNLFVBQVUsR0FBYyxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDMUIsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUM3QixNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0RCxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNULE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDdkQsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekUsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEIsYUFBYSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDckQsQ0FBQztJQUNMLENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxNQUFjLEVBQUUsS0FBbUI7UUFDeEQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlHLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRSxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDekIsS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFDMUIsS0FBSyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUM7UUFDcEIsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5RCxjQUFjLENBQUMsaUJBQWlCLENBQUM7WUFDN0IsR0FBRyxFQUFFLE9BQU87WUFDWixJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7U0FDbEYsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELDBCQUEwQixDQUFDLE1BQWMsRUFBRSxLQUFtQjtRQUMxRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUMzRSxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQUUsY0FBYyxDQUFDLGFBQWEsQ0FBQztZQUN0RCxDQUFDLENBQUMsS0FBSyxFQUFFLFdBQVc7WUFDcEIsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzRCxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDM0IsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDaEIsS0FBSyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7WUFDeEIsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFFdEIsY0FBYyxDQUFDLGlCQUFpQixDQUFDO2dCQUM3QixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7Z0JBQ2QsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHO2FBQ2xCLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVyxDQUFDLE1BQWMsRUFBRSxLQUFXO1FBQ25DLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckQsTUFBTSxDQUFDLE9BQU8sQ0FBQztnQkFDWCxJQUFJLEVBQUUsVUFBVSxDQUFDLHFCQUFxQjthQUN6QyxDQUFDLENBQUM7WUFDSCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0QsTUFBTSxrQkFBa0IsR0FDcEIsZ0JBQWdCLENBQXFCLE1BQU0sRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsa0JBQWtCLElBQUksNEJBQTRCLENBQUM7UUFDdkgsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLE9BQU8sSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxPQUFPLENBQUM7Z0JBQ1gsSUFBSSxFQUFFLFVBQVUsQ0FBQyxvQkFBb0I7YUFDeEMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxRQUFRLENBQUMsTUFBYztRQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDakMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxLQUFLO1lBQ2pFLFNBQVMsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNuQixDQUFDO0lBQ0QsWUFBWSxDQUFDLE1BQWMsRUFBRSxLQUE0QixFQUFFLEtBQW9CO1FBQzNFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNULGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkUsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNoRCxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0wsQ0FBQztJQUNELFFBQVEsQ0FBQyxHQUFXO1FBQ2hCLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNELFdBQVcsQ0FBQyxNQUFjLEVBQUUsS0FBb0I7UUFDNUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ0osYUFBYSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNMLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50LCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRWxlbWVudEtpbmRzLCBFcnJvckNvZGVzLCBQSUNUVVJFX0FDQ0VQVEVEX1VQTE9BRF9NSU1FLCBQSUNUVVJFX0FDQ0VQVEVEX1VQTE9BRF9TSVpFIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IEltYWdlRWxlbWVudCB9IGZyb20gJy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBJbWFnZVBsdWdpbk9wdGlvbnMsIFBsdWdpbktleXMsIFRIRV9VUExPQURfU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBiYXNlNjR0b0Jsb2IgfSBmcm9tICcuLi8uLi91dGlscy9ibG9iJztcblxuZXhwb3J0IGNvbnN0IEltYWdlRWRpdG9yID0ge1xuICAgIG9wZW5VcGxvYWQoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgaW5wdXRGaWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgaW5wdXRGaWxlLnNldEF0dHJpYnV0ZSgndHlwZScsICdmaWxlJyk7XG4gICAgICAgIGlucHV0RmlsZS5zZXRBdHRyaWJ1dGUoJ2FjY2VwdCcsICdpbWFnZS8qJyk7XG4gICAgICAgIGlucHV0RmlsZS5zZXRBdHRyaWJ1dGUoJ211bHRpcGxlJywgJ3RydWUnKTtcbiAgICAgICAgaW5wdXRGaWxlLm9uY2hhbmdlID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgSW1hZ2VFZGl0b3IuaW5zZXJ0SW1hZ2VzKGVkaXRvciwgKGV2ZW50LnRhcmdldCBhcyBhbnkpLmZpbGVzKTtcbiAgICAgICAgfTtcbiAgICAgICAgaW5wdXRGaWxlLmNsaWNrKCk7XG4gICAgfSxcbiAgICBpbnNlcnRJbWFnZXMoZWRpdG9yOiBFZGl0b3IsIGltYWdlRmlsZXM6IEZpbGVMaXN0IHwgRmlsZVtdKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHRTZXJ2aWNlID0gZWRpdG9yLmluamVjdG9yLmdldChUaGVDb250ZXh0U2VydmljZSk7XG4gICAgICAgIGNvbnN0IGltYWdlTm9kZXM6IEVsZW1lbnRbXSA9IFtdO1xuICAgICAgICBjb25zdCB0ZXh0ID0geyB0ZXh0OiAnJyB9O1xuICAgICAgICBmb3IgKGNvbnN0IGltYWdlIG9mIGltYWdlRmlsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcmlmeSA9IEltYWdlRWRpdG9yLnZlcmlmeUltYWdlKGVkaXRvciwgaW1hZ2UpO1xuICAgICAgICAgICAgaWYgKHZlcmlmeSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoaW1hZ2UpO1xuICAgICAgICAgICAgICAgIGNvbnRleHRTZXJ2aWNlLmFkZFVwbG9hZGluZ0ZpbGVzKHsgdXJsLCBmaWxlOiBpbWFnZSB9KTtcbiAgICAgICAgICAgICAgICBpbWFnZU5vZGVzLnB1c2goeyB0eXBlOiBFbGVtZW50S2luZHMuaW1hZ2UsIHVybCwgY2hpbGRyZW46IFt0ZXh0XSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaW1hZ2VOb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLmluc2VydEVsZW1lbnRzKGVkaXRvciwgaW1hZ2VOb2Rlcyk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZUJhc2U2NEltYWdlRWxlbWVudChlZGl0b3I6IEVkaXRvciwgaW1hZ2U6IEltYWdlRWxlbWVudCkge1xuICAgICAgICBjb25zdCBpbmRleFNwbGl0ID0gaW1hZ2Uub3JpZ2luVXJsLmluZGV4T2YoJywnKTtcbiAgICAgICAgY29uc3QgYmFzZTY0ID0gaW1hZ2Uub3JpZ2luVXJsLnNsaWNlKGluZGV4U3BsaXQgKyAxKTtcbiAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSBpbWFnZS5vcmlnaW5Vcmwuc3Vic3RyaW5nKGltYWdlLm9yaWdpblVybC5pbmRleE9mKCc6JykgKyAxLCBpbWFnZS5vcmlnaW5VcmwuaW5kZXhPZignOycpKTtcbiAgICAgICAgY29uc3QgZXh0ID0gY29udGVudFR5cGUuc3Vic3RyaW5nKGNvbnRlbnRUeXBlLmluZGV4T2YoJy8nKSArIDEpO1xuICAgICAgICBjb25zdCBibG9iID0gYmFzZTY0dG9CbG9iKGJhc2U2NCwgY29udGVudFR5cGUpO1xuICAgICAgICBjb25zdCBibG9iVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgaW1hZ2UudGh1bWJVcmwgPSBibG9iVXJsO1xuICAgICAgICBpbWFnZS5vcmlnaW5VcmwgPSBibG9iVXJsO1xuICAgICAgICBpbWFnZS51cmwgPSBibG9iVXJsO1xuICAgICAgICBjb25zdCBjb250ZXh0U2VydmljZSA9IGVkaXRvci5pbmplY3Rvci5nZXQoVGhlQ29udGV4dFNlcnZpY2UpO1xuICAgICAgICBjb250ZXh0U2VydmljZS5hZGRVcGxvYWRpbmdGaWxlcyh7XG4gICAgICAgICAgICB1cmw6IGJsb2JVcmwsXG4gICAgICAgICAgICBmaWxlOiBuZXcgRmlsZShbYmxvYl0sIGAke25ldyBEYXRlKCkuZ2V0VGltZSgpfS4ke2V4dH1gLCB7IHR5cGU6IGNvbnRlbnRUeXBlIH0pXG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgaGFuZGxlRXh0ZXJuYWxJbWFnZUVsZW1lbnQoZWRpdG9yOiBFZGl0b3IsIGltYWdlOiBJbWFnZUVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgY29udGV4dFNlcnZpY2UgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KFRoZUNvbnRleHRTZXJ2aWNlKTtcbiAgICAgICAgY29uc3QgaW1hZ2VVcGxvYWRlclNlcnZpY2UgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KFRIRV9VUExPQURfU0VSVklDRV9UT0tFTik7XG4gICAgICAgIGNvbnN0IGlzRXh0ZXJuYWxVcmwgPSBpbWFnZT8uaGFzT3duUHJvcGVydHkoJ2V4dGVybmFsVXJsJylcbiAgICAgICAgICAgID8gaW1hZ2U/LmV4dGVybmFsVXJsXG4gICAgICAgICAgICA6IGltYWdlVXBsb2FkZXJTZXJ2aWNlLmlzRXh0ZXJuYWxVcmw/LihpbWFnZS50aHVtYlVybCk7XG5cbiAgICAgICAgaWYgKGlzRXh0ZXJuYWxVcmwpIHtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IGltYWdlLnRodW1iVXJsO1xuICAgICAgICAgICAgaW1hZ2UudXJsID0gdXJsO1xuICAgICAgICAgICAgaW1hZ2UuZXh0ZXJuYWxVcmwgPSB1cmw7XG4gICAgICAgICAgICBpbWFnZS50aHVtYlVybCA9IG51bGw7XG5cbiAgICAgICAgICAgIGNvbnRleHRTZXJ2aWNlLmFkZFVwbG9hZGluZ0ZpbGVzKHtcbiAgICAgICAgICAgICAgICB1cmw6IGltYWdlLnVybCxcbiAgICAgICAgICAgICAgICBmaWxlOiBpbWFnZS51cmxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB2ZXJpZnlJbWFnZShlZGl0b3I6IEVkaXRvciwgaW1hZ2U6IEZpbGUpIHtcbiAgICAgICAgaWYgKCFQSUNUVVJFX0FDQ0VQVEVEX1VQTE9BRF9NSU1FLmluY2x1ZGVzKGltYWdlLnR5cGUpKSB7XG4gICAgICAgICAgICBlZGl0b3Iub25FcnJvcih7XG4gICAgICAgICAgICAgICAgY29kZTogRXJyb3JDb2Rlcy5JTUFHRV9FUlJfTUlNRV9GT1JNQVRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjY2VwdGVkVXBsb2FkU2l6ZSA9XG4gICAgICAgICAgICBnZXRQbHVnaW5PcHRpb25zPEltYWdlUGx1Z2luT3B0aW9ucz4oZWRpdG9yLCBQbHVnaW5LZXlzLmltYWdlKT8uYWNjZXB0ZWRVcGxvYWRTaXplID8/IFBJQ1RVUkVfQUNDRVBURURfVVBMT0FEX1NJWkU7XG4gICAgICAgIGlmIChpbWFnZS5zaXplIC8gMTAwMDAwMCA+PSBhY2NlcHRlZFVwbG9hZFNpemUpIHtcbiAgICAgICAgICAgIGVkaXRvci5vbkVycm9yKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBFcnJvckNvZGVzLklNQUdFX0VSUl9TSVpFX0xJTUlUXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIGlzQWN0aXZlKGVkaXRvcjogRWRpdG9yKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IFttYXRjaF0gPSBFZGl0b3Iubm9kZXMoZWRpdG9yLCB7XG4gICAgICAgICAgICBtYXRjaDogbiA9PiBFbGVtZW50LmlzRWxlbWVudChuKSAmJiBuLnR5cGUgPT09IEVsZW1lbnRLaW5kcy5pbWFnZSxcbiAgICAgICAgICAgIHVuaXZlcnNhbDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuICEhbWF0Y2g7XG4gICAgfSxcbiAgICBzZXRJbWFnZU5vZGUoZWRpdG9yOiBFZGl0b3IsIHByb3BzOiBQYXJ0aWFsPEltYWdlRWxlbWVudD4sIGltYWdlPzogSW1hZ2VFbGVtZW50KSB7XG4gICAgICAgIGlmICghaW1hZ2UpIHtcbiAgICAgICAgICAgIFRoZVRyYW5zZm9ybXMuc2V0Tm9kZUJ5VHlwZShlZGl0b3IsIHByb3BzLCBFbGVtZW50S2luZHMuaW1hZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IFRoZVF1ZXJpZXMuZmluZFBhdGgoZWRpdG9yLCBpbWFnZSk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKGVkaXRvciwgcHJvcHMsIHsgYXQ6IHBhdGggfSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGlzQmFzZTY0KHVybDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyh1cmwpICYmIHVybC5pbmNsdWRlcygnYmFzZTY0Jyk7XG4gICAgfSxcbiAgICByZW1vdmVJbWFnZShlZGl0b3I6IEVkaXRvciwgaW1hZ2U/OiBJbWFnZUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGltYWdlKSB7XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLmRlbGV0ZUVsZW1lbnQoZWRpdG9yLCBpbWFnZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLmRlbGV0ZU5vZGVCeVR5cGUoZWRpdG9yLCBFbGVtZW50S2luZHMuaW1hZ2UpO1xuICAgICAgICB9XG4gICAgfVxufTtcbiJdfQ==
@@ -1,3 +1,4 @@
1
+ import { AngularEditor } from 'slate-angular';
1
2
  import { ElementKinds } from '../../constants';
2
3
  import { PluginMenuIcons, ThePluginMenuItemType } from '../../constants/plugin-menu';
3
4
  import { createPluginFactory, getPluginOptions } from '../../core';
@@ -5,7 +6,7 @@ import { PluginKeys } from '../../interfaces';
5
6
  import { TheImage } from './image.component';
6
7
  import { ImageEditor } from './image.editor';
7
8
  export const withImage = (editor) => {
8
- const { insertData, isVoid, renderElement, isBlockCard } = editor;
9
+ const { insertData, isVoid, renderElement, isBlockCard, mousedown } = editor;
9
10
  editor.isVoid = (element) => {
10
11
  return element.type === ElementKinds.image || isVoid(element);
11
12
  };
@@ -30,6 +31,22 @@ export const withImage = (editor) => {
30
31
  }
31
32
  return renderElement(element);
32
33
  };
34
+ editor.mousedown = (event) => {
35
+ const hitElement = event.target;
36
+ if (hitElement.classList.contains('the-image-container')) {
37
+ const imageElement = hitElement.closest('the-image');
38
+ const blockCardEntry = AngularEditor.toSlateCardEntry(editor, imageElement);
39
+ if (blockCardEntry && blockCardEntry[0].type === ElementKinds.image) {
40
+ event.preventDefault();
41
+ const innerImage = hitElement.querySelector('.thy-image');
42
+ const { x, width } = innerImage.getBoundingClientRect();
43
+ const centerX = x + width / 2;
44
+ AngularEditor.moveBlockCard(editor, blockCardEntry[0], { direction: event.x < centerX ? 'left' : 'right' });
45
+ return;
46
+ }
47
+ }
48
+ mousedown(event);
49
+ };
33
50
  editor.isBlockCard = (element) => {
34
51
  if (element && element.type === ElementKinds.image) {
35
52
  return true;
@@ -68,4 +85,4 @@ export const createImagePlugin = createPluginFactory({
68
85
  imageTypes: ['image/png', 'image/jpeg', 'image/gif', 'image/bmp']
69
86
  }
70
87
  });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25FLE9BQU8sRUFBc0IsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBbUIsTUFBUyxFQUFLLEVBQUU7SUFDeEQsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVsRSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFO1FBQ2pDLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDLENBQUM7SUFFRixNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBa0IsRUFBRSxFQUFFO1FBQ3ZDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixNQUFNLFVBQVUsR0FBVyxFQUFFLENBQUM7WUFDOUIsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQXFCLE1BQU0sRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxDQUFDO1lBQzlGLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQWlCLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNqQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxQixDQUFDO1lBQ0wsQ0FBQztZQUNELElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNwQixPQUFPLFdBQVcsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3hELENBQUM7UUFDTCxDQUFDO1FBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztJQUVGLE1BQU0sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUU7UUFDeEMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxPQUFPLFFBQVEsQ0FBQztRQUNwQixDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDO0lBRUYsTUFBTSxDQUFDLFdBQVcsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtRQUN0QyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQXFCO0lBQ3JFLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSztJQUNyQixhQUFhLEVBQUUsU0FBUztJQUN4QixZQUFZLEVBQUU7UUFDVjtZQUNJLEdBQUcsRUFBRSxZQUFZLENBQUMsS0FBSztZQUN2QixJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDakQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7U0FDakQ7S0FDSjtJQUNELFNBQVMsRUFBRTtRQUNQO1lBQ0ksR0FBRyxFQUFFLFlBQVksQ0FBQyxLQUFLO1lBQ3ZCLFFBQVEsRUFBRSxrQ0FBa0M7WUFDNUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDakQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDOUMsSUFBSSxFQUFFLElBQUk7WUFDVixRQUFRLEVBQUUsZUFBZSxDQUFDLEtBQUs7WUFDL0IsV0FBVyxFQUFFLG1CQUFtQjtZQUNoQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsS0FBSztZQUNqQyxVQUFVLEVBQUUsS0FBSztTQUNwQjtLQUNKO0lBQ0QsT0FBTyxFQUFFO1FBQ0wsZ0JBQWdCLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUMxRixVQUFVLEVBQUUsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUM7S0FDcEU7Q0FDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBFbGVtZW50S2luZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGx1Z2luTWVudUljb25zLCBUaGVQbHVnaW5NZW51SXRlbVR5cGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvcGx1Z2luLW1lbnUnO1xuaW1wb3J0IHsgY3JlYXRlUGx1Z2luRmFjdG9yeSwgZ2V0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VQbHVnaW5PcHRpb25zLCBQbHVnaW5LZXlzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUaGVJbWFnZSB9IGZyb20gJy4vaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IEltYWdlRWRpdG9yIH0gZnJvbSAnLi9pbWFnZS5lZGl0b3InO1xuXG5leHBvcnQgY29uc3Qgd2l0aEltYWdlID0gPFQgZXh0ZW5kcyBFZGl0b3I+KGVkaXRvcjogVCk6IFQgPT4ge1xuICAgIGNvbnN0IHsgaW5zZXJ0RGF0YSwgaXNWb2lkLCByZW5kZXJFbGVtZW50LCBpc0Jsb2NrQ2FyZCB9ID0gZWRpdG9yO1xuXG4gICAgZWRpdG9yLmlzVm9pZCA9IChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5pbWFnZSB8fCBpc1ZvaWQoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIGVkaXRvci5pbnNlcnREYXRhID0gKGRhdGE6IERhdGFUcmFuc2ZlcikgPT4ge1xuICAgICAgICBpZiAoZGF0YS5maWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlRmlsZXM6IEZpbGVbXSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgaW1hZ2VUeXBlcyA9IGdldFBsdWdpbk9wdGlvbnM8SW1hZ2VQbHVnaW5PcHRpb25zPihlZGl0b3IsIFBsdWdpbktleXMuaW1hZ2UpPy5pbWFnZVR5cGVzO1xuICAgICAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGRhdGEuZmlsZXMgYXMgRmlsZUxpc3QpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW1hZ2VUeXBlcy5pbmNsdWRlcyhmaWxlLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlRmlsZXMucHVzaChmaWxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW1hZ2VGaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSW1hZ2VFZGl0b3IuaW5zZXJ0SW1hZ2VzKGVkaXRvciwgaW1hZ2VGaWxlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0RGF0YShkYXRhKTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLnJlbmRlckVsZW1lbnQgPSAoZWxlbWVudDogRWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSBFbGVtZW50S2luZHMuaW1hZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBUaGVJbWFnZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLmlzQmxvY2tDYXJkID0gKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC50eXBlID09PSBFbGVtZW50S2luZHMuaW1hZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0Jsb2NrQ2FyZChlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVJbWFnZVBsdWdpbiA9IGNyZWF0ZVBsdWdpbkZhY3Rvcnk8SW1hZ2VQbHVnaW5PcHRpb25zPih7XG4gICAga2V5OiBQbHVnaW5LZXlzLmltYWdlLFxuICAgIHdpdGhPdmVycmlkZXM6IHdpdGhJbWFnZSxcbiAgICB0b29sYmFySXRlbXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBFbGVtZW50S2luZHMuaW1hZ2UsXG4gICAgICAgICAgICBpY29uOiAnaW1hZ2UnLFxuICAgICAgICAgICAgbmFtZTogJ+WbvueJhycsXG4gICAgICAgICAgICBleGVjdXRlOiBlZGl0b3IgPT4gSW1hZ2VFZGl0b3Iub3BlblVwbG9hZChlZGl0b3IpLFxuICAgICAgICAgICAgYWN0aXZlOiBlZGl0b3IgPT4gSW1hZ2VFZGl0b3IuaXNBY3RpdmUoZWRpdG9yKVxuICAgICAgICB9XG4gICAgXSxcbiAgICBtZW51SXRlbXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBFbGVtZW50S2luZHMuaW1hZ2UsXG4gICAgICAgICAgICBrZXl3b3JkczogJ3RwLHR1cGlhbixpbWFnZSxwaG90byxwaWN0dXJlLOWbvueJhycsXG4gICAgICAgICAgICBleGVjdXRlOiBlZGl0b3IgPT4gSW1hZ2VFZGl0b3Iub3BlblVwbG9hZChlZGl0b3IpLFxuICAgICAgICAgICAgYWN0aXZlOiBlZGl0b3IgPT4gSW1hZ2VFZGl0b3IuaXNBY3RpdmUoZWRpdG9yKSxcbiAgICAgICAgICAgIG5hbWU6ICflm77niYcnLFxuICAgICAgICAgICAgbWVudUljb246IFBsdWdpbk1lbnVJY29ucy5pbWFnZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAn5pSv5oyBIGpwZ+OAgWpwZWcg562J5qC85byP5Zu+5YOPJyxcbiAgICAgICAgICAgIHR5cGU6IFRoZVBsdWdpbk1lbnVJdGVtVHlwZS5ncm91cCxcbiAgICAgICAgICAgIGRpc3BsYXlLZXk6ICcvdHAnXG4gICAgICAgIH1cbiAgICBdLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgICAgYWxsb3dQYXJlbnRUeXBlczogW0VsZW1lbnRLaW5kcy5saXN0SXRlbSwgRWxlbWVudEtpbmRzLnRhYmxlQ2VsbCwgRWxlbWVudEtpbmRzLmJsb2NrcXVvdGVdLFxuICAgICAgICBpbWFnZVR5cGVzOiBbJ2ltYWdlL3BuZycsICdpbWFnZS9qcGVnJywgJ2ltYWdlL2dpZicsICdpbWFnZS9ibXAnXVxuICAgIH1cbn0pO1xuIl19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkUsT0FBTyxFQUFzQixVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFtQixNQUFTLEVBQUssRUFBRTtJQUN4RCxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUU3RSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFO1FBQ2pDLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDLENBQUM7SUFFRixNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBa0IsRUFBRSxFQUFFO1FBQ3ZDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixNQUFNLFVBQVUsR0FBVyxFQUFFLENBQUM7WUFDOUIsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQXFC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QUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDakQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7U0FDakQ7S0FDSjtJQUNELFNBQVMsRUFBRTtRQUNQO1lBQ0ksR0FBRyxFQUFFLFlBQVksQ0FBQyxLQUFLO1lBQ3ZCLFFBQVEsRUFBRSxrQ0FBa0M7WUFDNUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDakQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDOUMsSUFBSSxFQUFFLElBQUk7WUFDVixRQUFRLEVBQUUsZUFBZSxDQUFDLEtBQUs7WUFDL0IsV0FBVyxFQUFFLG1CQUFtQjtZQUNoQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsS0FBSztZQUNqQyxVQUFVLEVBQUUsS0FBSztTQUNwQjtLQUNKO0lBQ0QsT0FBTyxFQUFFO1FBQ0wsZ0JBQWdCLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUMxRixVQUFVLEVBQUUsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUM7S0FDcEU7Q0FDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBFbGVtZW50S2luZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGx1Z2luTWVudUljb25zLCBUaGVQbHVnaW5NZW51SXRlbVR5cGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvcGx1Z2luLW1lbnUnO1xuaW1wb3J0IHsgY3JlYXRlUGx1Z2luRmFjdG9yeSwgZ2V0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VQbHVnaW5PcHRpb25zLCBQbHVnaW5LZXlzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUaGVJbWFnZSB9IGZyb20gJy4vaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IEltYWdlRWRpdG9yIH0gZnJvbSAnLi9pbWFnZS5lZGl0b3InO1xuXG5leHBvcnQgY29uc3Qgd2l0aEltYWdlID0gPFQgZXh0ZW5kcyBFZGl0b3I+KGVkaXRvcjogVCk6IFQgPT4ge1xuICAgIGNvbnN0IHsgaW5zZXJ0RGF0YSwgaXNWb2lkLCByZW5kZXJFbGVtZW50LCBpc0Jsb2NrQ2FyZCwgbW91c2Vkb3duIH0gPSBlZGl0b3I7XG5cbiAgICBlZGl0b3IuaXNWb2lkID0gKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQudHlwZSA9PT0gRWxlbWVudEtpbmRzLmltYWdlIHx8IGlzVm9pZChlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLmluc2VydERhdGEgPSAoZGF0YTogRGF0YVRyYW5zZmVyKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLmZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaW1hZ2VGaWxlczogRmlsZVtdID0gW107XG4gICAgICAgICAgICBjb25zdCBpbWFnZVR5cGVzID0gZ2V0UGx1Z2luT3B0aW9uczxJbWFnZVBsdWdpbk9wdGlvbnM+KGVkaXRvciwgUGx1Z2luS2V5cy5pbWFnZSk/LmltYWdlVHlwZXM7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZGF0YS5maWxlcyBhcyBGaWxlTGlzdCkge1xuICAgICAgICAgICAgICAgIGlmIChpbWFnZVR5cGVzLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VGaWxlcy5wdXNoKGZpbGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbWFnZUZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBJbWFnZUVkaXRvci5pbnNlcnRJbWFnZXMoZWRpdG9yLCBpbWFnZUZpbGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbnNlcnREYXRhKGRhdGEpO1xuICAgIH07XG5cbiAgICBlZGl0b3IucmVuZGVyRWxlbWVudCA9IChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5pbWFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIFRoZUltYWdlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZW5kZXJFbGVtZW50KGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBlZGl0b3IubW91c2Vkb3duID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmIChoaXRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygndGhlLWltYWdlLWNvbnRhaW5lcicpKSB7XG4gICAgICAgICAgICBjb25zdCBpbWFnZUVsZW1lbnQgPSBoaXRFbGVtZW50LmNsb3Nlc3QoJ3RoZS1pbWFnZScpO1xuICAgICAgICAgICAgY29uc3QgYmxvY2tDYXJkRW50cnkgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVDYXJkRW50cnkoZWRpdG9yLCBpbWFnZUVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGJsb2NrQ2FyZEVudHJ5ICYmIChibG9ja0NhcmRFbnRyeVswXSBhcyBFbGVtZW50KS50eXBlID09PSBFbGVtZW50S2luZHMuaW1hZ2UpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlubmVySW1hZ2UgPSBoaXRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy50aHktaW1hZ2UnKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHgsIHdpZHRoIH0gPSBpbm5lckltYWdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbnRlclggPSB4ICsgd2lkdGggLyAyO1xuICAgICAgICAgICAgICAgIEFuZ3VsYXJFZGl0b3IubW92ZUJsb2NrQ2FyZChlZGl0b3IsIGJsb2NrQ2FyZEVudHJ5WzBdLCB7IGRpcmVjdGlvbjogZXZlbnQueCA8IGNlbnRlclggPyAnbGVmdCcgOiAncmlnaHQnIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBtb3VzZWRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBlZGl0b3IuaXNCbG9ja0NhcmQgPSAoZWxlbWVudDogRWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5pbWFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQmxvY2tDYXJkKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gZWRpdG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUltYWdlUGx1Z2luID0gY3JlYXRlUGx1Z2luRmFjdG9yeTxJbWFnZVBsdWdpbk9wdGlvbnM+KHtcbiAgICBrZXk6IFBsdWdpbktleXMuaW1hZ2UsXG4gICAgd2l0aE92ZXJyaWRlczogd2l0aEltYWdlLFxuICAgIHRvb2xiYXJJdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IEVsZW1lbnRLaW5kcy5pbWFnZSxcbiAgICAgICAgICAgIGljb246ICdpbWFnZScsXG4gICAgICAgICAgICBuYW1lOiAn5Zu+54mHJyxcbiAgICAgICAgICAgIGV4ZWN1dGU6IGVkaXRvciA9PiBJbWFnZUVkaXRvci5vcGVuVXBsb2FkKGVkaXRvciksXG4gICAgICAgICAgICBhY3RpdmU6IGVkaXRvciA9PiBJbWFnZUVkaXRvci5pc0FjdGl2ZShlZGl0b3IpXG4gICAgICAgIH1cbiAgICBdLFxuICAgIG1lbnVJdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IEVsZW1lbnRLaW5kcy5pbWFnZSxcbiAgICAgICAgICAgIGtleXdvcmRzOiAndHAsdHVwaWFuLGltYWdlLHBob3RvLHBpY3R1cmUs5Zu+54mHJyxcbiAgICAgICAgICAgIGV4ZWN1dGU6IGVkaXRvciA9PiBJbWFnZUVkaXRvci5vcGVuVXBsb2FkKGVkaXRvciksXG4gICAgICAgICAgICBhY3RpdmU6IGVkaXRvciA9PiBJbWFnZUVkaXRvci5pc0FjdGl2ZShlZGl0b3IpLFxuICAgICAgICAgICAgbmFtZTogJ+WbvueJhycsXG4gICAgICAgICAgICBtZW51SWNvbjogUGx1Z2luTWVudUljb25zLmltYWdlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICfmlK/mjIEganBn44CBanBlZyDnrYnmoLzlvI/lm77lg48nLFxuICAgICAgICAgICAgdHlwZTogVGhlUGx1Z2luTWVudUl0ZW1UeXBlLmdyb3VwLFxuICAgICAgICAgICAgZGlzcGxheUtleTogJy90cCdcbiAgICAgICAgfVxuICAgIF0sXG4gICAgb3B0aW9uczoge1xuICAgICAgICBhbGxvd1BhcmVudFR5cGVzOiBbRWxlbWVudEtpbmRzLmxpc3RJdGVtLCBFbGVtZW50S2luZHMudGFibGVDZWxsLCBFbGVtZW50S2luZHMuYmxvY2txdW90ZV0sXG4gICAgICAgIGltYWdlVHlwZXM6IFsnaW1hZ2UvcG5nJywgJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvZ2lmJywgJ2ltYWdlL2JtcCddXG4gICAgfVxufSk7XG4iXX0=
@@ -12,7 +12,6 @@ import { createMoveSelectionPlugin } from './common/move-selection.plugin';
12
12
  import { createRemoveEmptyPlugin } from './common/remove-empty.plugin';
13
13
  import { createRemoveVoidPlugin } from './common/remove-void.plugin';
14
14
  import { createResetTypePlugin } from './common/reset-type.plugin';
15
- import { createTransformsPlugin } from './common/transforms.plugin';
16
15
  import { createDeserializeHTMLPlugin } from './deserialize/deserialize-html.plugin';
17
16
  import { createDeserializeMdPlugin } from './deserialize/deserialize-md.plugin';
18
17
  import { createFontSizePlugin } from './font-size/font-size.editor';
@@ -60,7 +59,6 @@ export const internalPlugins = () => [
60
59
  createNodeIDPlugin(),
61
60
  createAutoFormatPlugin(),
62
61
  createPaintFormatPlugin(),
63
- createTransformsPlugin(),
64
62
  createTrailingNodePlugin(),
65
63
  createMoveSelectionPlugin(),
66
64
  createInsertParagraphNodesPlugin(),
@@ -72,4 +70,4 @@ export const internalPlugins = () => [
72
70
  createInlineCodePlugin(),
73
71
  createMentionPlugin()
74
72
  ];
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFbkYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ2pDLHNCQUFzQixFQUFFO0lBQ3hCLGtCQUFrQixFQUFFO0lBQ3BCLG1DQUFtQyxFQUFFO0lBQ3JDLHVCQUF1QixFQUFFO0lBQ3pCLHNCQUFzQixFQUFFO0lBQ3hCLHFCQUFxQixFQUFFLEVBQUUsOERBQThEO0lBQ3ZGLHFCQUFxQixFQUFFO0lBQ3ZCLGtCQUFrQixFQUFFLEVBQUUsOEJBQThCO0lBQ3BELGdCQUFnQixFQUFFO0lBQ2xCLGdCQUFnQixFQUFFO0lBQ2xCLGlCQUFpQixFQUFFO0lBQ25CLG9CQUFvQixFQUFFO0lBQ3RCLGNBQWMsRUFBRTtJQUNoQixpQkFBaUIsRUFBRTtJQUNuQixnQkFBZ0IsRUFBRTtJQUNsQixtQkFBbUIsRUFBRTtJQUNyQix5QkFBeUIsRUFBRTtJQUMzQixnQkFBZ0IsRUFBRTtJQUNsQixvQkFBb0IsRUFBRTtJQUN0QixpQkFBaUIsRUFBRTtJQUNuQixxQkFBcUIsRUFBRTtJQUN2QixzQkFBc0IsRUFBRTtJQUN4QixrQkFBa0IsRUFBRTtJQUNwQixzQkFBc0IsRUFBRTtJQUN4Qix1QkFBdUIsRUFBRTtJQUN6QixzQkFBc0IsRUFBRTtJQUN4Qix3QkFBd0IsRUFBRTtJQUMxQix5QkFBeUIsRUFBRTtJQUMzQixnQ0FBZ0MsRUFBRTtJQUNsQyx1QkFBdUIsRUFBRTtJQUN6QixpQkFBaUIsRUFBRSxFQUFFLHNDQUFzQztJQUMzRCwyQkFBMkIsRUFBRTtJQUM3Qix5QkFBeUIsRUFBRTtJQUMzQix1QkFBdUIsRUFBRSxFQUFFLHVEQUF1RDtJQUNsRixzQkFBc0IsRUFBRTtJQUN4QixtQkFBbUIsRUFBRTtDQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVHlwZXMgZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlQWxpZ25QbHVnaW4gfSBmcm9tICcuL2FsaWduL2FsaWduLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVBdXRvRm9ybWF0UGx1Z2luIH0gZnJvbSAnLi9hdXRvZm9ybWF0L2F1dG9mb3JtYXQucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZUJsb2NrcXVvdGVQbHVnaW4gfSBmcm9tICcuL2Jsb2NrcXVvdGUvYmxvY2txdW90ZS5wbHVnaW4nO1xuaW1wb3J0IHsgY3JlYXRlQ29kZVBsdWdpbiB9IGZyb20gJy4vY29kZS9jb2RlLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVDb2xvclBsdWdpbiB9IGZyb20gJy4vY29sb3IvY29sb3IucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZUluc2VydERhdGFCeUludmFsaWRUeXBlUGx1Z2luIH0gZnJvbSAnLi9jb21tb24vaW5zZXJ0LWRhdGEtYnktaW52YWxpZC10eXBlJztcbmltcG9ydCB7IGNyZWF0ZUJsb2NrQ2FyZFBsdWdpbiB9IGZyb20gJy4vY29tbW9uL2Jsb2NrLWNhcmQucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZUNvbW1vblBsdWdpbiB9IGZyb20gJy4vY29tbW9uL2NvbW1vbi5wbHVnaW4nO1xuaW1wb3J0IHsgY3JlYXRlR2V0RnJhZ21lbnRQbHVnaW4gfSBmcm9tICcuL2NvbW1vbi9nZXQtZnJhZ21lbnQucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZVRoZUhpc3RvcnlQbHVnaW4gfSBmcm9tICcuL2NvbW1vbi9oaXN0b3J5LnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVNb3ZlU2VsZWN0aW9uUGx1Z2luIH0gZnJvbSAnLi9jb21tb24vbW92ZS1zZWxlY3Rpb24ucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZVJlbW92ZUVtcHR5UGx1Z2luIH0gZnJvbSAnLi9jb21tb24vcmVtb3ZlLWVtcHR5LnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVSZW1vdmVWb2lkUGx1Z2luIH0gZnJvbSAnLi9jb21tb24vcmVtb3ZlLXZvaWQucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZVJlc2V0VHlwZVBsdWdpbiB9IGZyb20gJy4vY29tbW9uL3Jlc2V0LXR5cGUucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZVRyYW5zZm9ybXNQbHVnaW4gfSBmcm9tICcuL2NvbW1vbi90cmFuc2Zvcm1zLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVEZXNlcmlhbGl6ZUhUTUxQbHVnaW4gfSBmcm9tICcuL2Rlc2VyaWFsaXplL2Rlc2VyaWFsaXplLWh0bWwucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZURlc2VyaWFsaXplTWRQbHVnaW4gfSBmcm9tICcuL2Rlc2VyaWFsaXplL2Rlc2VyaWFsaXplLW1kLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVGb250U2l6ZVBsdWdpbiB9IGZyb20gJy4vZm9udC1zaXplL2ZvbnQtc2l6ZS5lZGl0b3InO1xuaW1wb3J0IHsgY3JlYXRlSGVhZGluZ1BsdWdpbiB9IGZyb20gJy4vaGVhZGluZy9oZWFkaW5nLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVIclBsdWdpbiB9IGZyb20gJy4vaHIvaHIucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZUltYWdlUGx1Z2luIH0gZnJvbSAnLi9pbWFnZS9pbWFnZS5wbHVnaW4nO1xuaW1wb3J0IHsgY3JlYXRlSW5kZW50UGx1Z2luIH0gZnJvbSAnLi9pbmRlbnQvaW5kZW50LnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVJbmxpbmVDb2RlUGx1Z2luIH0gZnJvbSAnLi9pbmxpbmUtY29kZS9pbmxpbmUtY29kZS5wbHVnaW4nO1xuaW1wb3J0IHsgY3JlYXRlTGlua1BsdWdpbiB9IGZyb20gJy4vbGluay9saW5rLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVMaXN0UGx1Z2luIH0gZnJvbSAnLi9saXN0L2xpc3QucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZU1hcmtQbHVnaW4gfSBmcm9tICcuL21hcmsvbWFyay5wbHVnaW4nO1xuaW1wb3J0IHsgY3JlYXRlTWVudGlvblBsdWdpbiB9IGZyb20gJy4vbWVudGlvbi9tZW50aW9uLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVOb2RlSURQbHVnaW4gfSBmcm9tICcuL25vZGUtaWQvbm9kZS1pZC5wbHVnaW4nO1xuaW1wb3J0IHsgY3JlYXRlSW5zZXJ0UGFyYWdyYXBoTm9kZXNQbHVnaW4gfSBmcm9tICcuL25vcm1hbGl6ZXJzL2luc2VydC1wYXJhZ3JhcGgtbm9kZXMnO1xuaW1wb3J0IHsgY3JlYXRlVHJhaWxpbmdOb2RlUGx1Z2luIH0gZnJvbSAnLi9ub3JtYWxpemVycy90cmFpbGluZy1ub2RlLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVQYWludEZvcm1hdFBsdWdpbiB9IGZyb20gJy4vcGFpbnQtZm9ybWF0L3BhaW50LWZvcm1hdC5lZGl0b3InO1xuaW1wb3J0IHsgY3JlYXRlUXVpY2tJbnNlcnRQbHVnaW4gfSBmcm9tICcuL3F1aWNrLWluc2VydC9xdWljay1pbnNlcnQucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZVNvZnRCcmVha1BsdWdpbiB9IGZyb20gJy4vc29mdC1icmVhay9zb2Z0LWJyZWFrLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVUYWJsZVBsdWdpbiB9IGZyb20gJy4vdGFibGUvdGFibGUucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZVRvZG9JdGVtUGx1Z2luIH0gZnJvbSAnLi90b2RvLWl0ZW0vdG9kby1pdGVtLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVWZXJ0aWNhbEFsaWduUGx1Z2luIH0gZnJvbSAnLi92ZXJ0aWNhbC1hbGlnbi92ZXJ0aWNhbC1hbGlnbi5lZGl0b3InO1xuXG5leHBvcnQgY29uc3QgaW50ZXJuYWxQbHVnaW5zID0gKCkgPT4gW1xuICAgIGNyZWF0ZVRoZUhpc3RvcnlQbHVnaW4oKSxcbiAgICBjcmVhdGVDb21tb25QbHVnaW4oKSxcbiAgICBjcmVhdGVJbnNlcnREYXRhQnlJbnZhbGlkVHlwZVBsdWdpbigpLFxuICAgIGNyZWF0ZVJlbW92ZUVtcHR5UGx1Z2luKCksXG4gICAgY3JlYXRlUmVtb3ZlVm9pZFBsdWdpbigpLFxuICAgIGNyZWF0ZUJsb2NrQ2FyZFBsdWdpbigpLCAvLyBzaG91bGQgaW4gdGhlIGZyb250IG9mIGxpc3TjgIFyZXNldHR5cGXjgIF0b2Rv44CBZGVzZXJpYWxpemUtaHRtbFxuICAgIGNyZWF0ZVJlc2V0VHlwZVBsdWdpbigpLFxuICAgIGNyZWF0ZUluZGVudFBsdWdpbigpLCAvLyBzaG91bGQgaW4gdGhlIGZyb250IG9mIGxpc3RcbiAgICBjcmVhdGVMaXN0UGx1Z2luKCksXG4gICAgY3JlYXRlTGlua1BsdWdpbigpLFxuICAgIGNyZWF0ZVRhYmxlUGx1Z2luKCksXG4gICAgY3JlYXRlVG9kb0l0ZW1QbHVnaW4oKSxcbiAgICBjcmVhdGVIclBsdWdpbigpLFxuICAgIGNyZWF0ZUFsaWduUGx1Z2luKCksXG4gICAgY3JlYXRlQ29kZVBsdWdpbigpLFxuICAgIGNyZWF0ZUhlYWRpbmdQbHVnaW4oKSxcbiAgICBjcmVhdGVWZXJ0aWNhbEFsaWduUGx1Z2luKCksXG4gICAgY3JlYXRlTWFya1BsdWdpbigpLFxuICAgIGNyZWF0ZUZvbnRTaXplUGx1Z2luKCksXG4gICAgY3JlYXRlQ29sb3JQbHVnaW4oKSxcbiAgICBjcmVhdGVTb2Z0QnJlYWtQbHVnaW4oKSxcbiAgICBjcmVhdGVCbG9ja3F1b3RlUGx1Z2luKCksXG4gICAgY3JlYXRlTm9kZUlEUGx1Z2luKCksXG4gICAgY3JlYXRlQXV0b0Zvcm1hdFBsdWdpbigpLFxuICAgIGNyZWF0ZVBhaW50Rm9ybWF0UGx1Z2luKCksXG4gICAgY3JlYXRlVHJhbnNmb3Jtc1BsdWdpbigpLFxuICAgIGNyZWF0ZVRyYWlsaW5nTm9kZVBsdWdpbigpLFxuICAgIGNyZWF0ZU1vdmVTZWxlY3Rpb25QbHVnaW4oKSxcbiAgICBjcmVhdGVJbnNlcnRQYXJhZ3JhcGhOb2Rlc1BsdWdpbigpLFxuICAgIGNyZWF0ZUdldEZyYWdtZW50UGx1Z2luKCksXG4gICAgY3JlYXRlSW1hZ2VQbHVnaW4oKSwgLy8gIG11c3QgYmUgYmVmb3JlIHdpdGhEZXNlcmlhbGl6ZUhUTUxcbiAgICBjcmVhdGVEZXNlcmlhbGl6ZUhUTUxQbHVnaW4oKSxcbiAgICBjcmVhdGVEZXNlcmlhbGl6ZU1kUGx1Z2luKCksXG4gICAgY3JlYXRlUXVpY2tJbnNlcnRQbHVnaW4oKSwgLy8gbXVzdCBiZSBiZWZvcmUgcGx1Z2lucyB0aGF0IGluY2x1ZGUgb25rZXlkb3duIGV2ZW50c1xuICAgIGNyZWF0ZUlubGluZUNvZGVQbHVnaW4oKSxcbiAgICBjcmVhdGVNZW50aW9uUGx1Z2luKClcbl07XG4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFbkYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ2pDLHNCQUFzQixFQUFFO0lBQ3hCLGtCQUFrQixFQUFFO0lBQ3BCLG1DQUFtQyxFQUFFO0lBQ3JDLHVCQUF1QixFQUFFO0lBQ3pCLHNCQUFzQixFQUFFO0lBQ3hCLHFCQUFxQixFQUFFLEVBQUUsOERBQThEO0lBQ3ZGLHFCQUFxQixFQUFFO0lBQ3ZCLGtCQUFrQixFQUFFLEVBQUUsOEJBQThCO0lBQ3BELGdCQUFnQixFQUFFO0lBQ2xCLGdCQUFnQixFQUFFO0lBQ2xCLGlCQUFpQixFQUFFO0lBQ25CLG9CQUFvQixFQUFFO0lBQ3RCLGNBQWMsRUFBRTtJQUNoQixpQkFBaUIsRUFBRTtJQUNuQixnQkFBZ0IsRUFBRTtJQUNsQixtQkFBbUIsRUFBRTtJQUNyQix5QkFBeUIsRUFBRTtJQUMzQixnQkFBZ0IsRUFBRTtJQUNsQixvQkFBb0IsRUFBRTtJQUN0QixpQkFBaUIsRUFBRTtJQUNuQixxQkFBcUIsRUFBRTtJQUN2QixzQkFBc0IsRUFBRTtJQUN4QixrQkFBa0IsRUFBRTtJQUNwQixzQkFBc0IsRUFBRTtJQUN4Qix1QkFBdUIsRUFBRTtJQUN6Qix3QkFBd0IsRUFBRTtJQUMxQix5QkFBeUIsRUFBRTtJQUMzQixnQ0FBZ0MsRUFBRTtJQUNsQyx1QkFBdUIsRUFBRTtJQUN6QixpQkFBaUIsRUFBRSxFQUFFLHNDQUFzQztJQUMzRCwyQkFBMkIsRUFBRTtJQUM3Qix5QkFBeUIsRUFBRTtJQUMzQix1QkFBdUIsRUFBRSxFQUFFLHVEQUF1RDtJQUNsRixzQkFBc0IsRUFBRTtJQUN4QixtQkFBbUIsRUFBRTtDQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVHlwZXMgZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlQWxpZ25QbHVnaW4gfSBmcm9tICcuL2FsaWduL2FsaWduLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVBdXRvRm9ybWF0UGx1Z2luIH0gZnJvbSAnLi9hdXRvZm9ybWF0L2F1dG9mb3JtYXQucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZUJsb2NrcXVvdGVQbHVnaW4gfSBmcm9tICcuL2Jsb2NrcXVvdGUvYmxvY2txdW90ZS5wbHVnaW4nO1xuaW1wb3J0IHsgY3JlYXRlQ29kZVBsdWdpbiB9IGZyb20gJy4vY29kZS9jb2RlLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVDb2xvclBsdWdpbiB9IGZyb20gJy4vY29sb3IvY29sb3IucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZUluc2VydERhdGFCeUludmFsaWRUeXBlUGx1Z2luIH0gZnJvbSAnLi9jb21tb24vaW5zZXJ0LWRhdGEtYnktaW52YWxpZC10eXBlJztcbmltcG9ydCB7IGNyZWF0ZUJsb2NrQ2FyZFBsdWdpbiB9IGZyb20gJy4vY29tbW9uL2Jsb2NrLWNhcmQucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZUNvbW1vblBsdWdpbiB9IGZyb20gJy4vY29tbW9uL2NvbW1vbi5wbHVnaW4nO1xuaW1wb3J0IHsgY3JlYXRlR2V0RnJhZ21lbnRQbHVnaW4gfSBmcm9tICcuL2NvbW1vbi9nZXQtZnJhZ21lbnQucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZVRoZUhpc3RvcnlQbHVnaW4gfSBmcm9tICcuL2NvbW1vbi9oaXN0b3J5LnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVNb3ZlU2VsZWN0aW9uUGx1Z2luIH0gZnJvbSAnLi9jb21tb24vbW92ZS1zZWxlY3Rpb24ucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZVJlbW92ZUVtcHR5UGx1Z2luIH0gZnJvbSAnLi9jb21tb24vcmVtb3ZlLWVtcHR5LnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVSZW1vdmVWb2lkUGx1Z2luIH0gZnJvbSAnLi9jb21tb24vcmVtb3ZlLXZvaWQucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZVJlc2V0VHlwZVBsdWdpbiB9IGZyb20gJy4vY29tbW9uL3Jlc2V0LXR5cGUucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZURlc2VyaWFsaXplSFRNTFBsdWdpbiB9IGZyb20gJy4vZGVzZXJpYWxpemUvZGVzZXJpYWxpemUtaHRtbC5wbHVnaW4nO1xuaW1wb3J0IHsgY3JlYXRlRGVzZXJpYWxpemVNZFBsdWdpbiB9IGZyb20gJy4vZGVzZXJpYWxpemUvZGVzZXJpYWxpemUtbWQucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZUZvbnRTaXplUGx1Z2luIH0gZnJvbSAnLi9mb250LXNpemUvZm9udC1zaXplLmVkaXRvcic7XG5pbXBvcnQgeyBjcmVhdGVIZWFkaW5nUGx1Z2luIH0gZnJvbSAnLi9oZWFkaW5nL2hlYWRpbmcucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZUhyUGx1Z2luIH0gZnJvbSAnLi9oci9oci5wbHVnaW4nO1xuaW1wb3J0IHsgY3JlYXRlSW1hZ2VQbHVnaW4gfSBmcm9tICcuL2ltYWdlL2ltYWdlLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVJbmRlbnRQbHVnaW4gfSBmcm9tICcuL2luZGVudC9pbmRlbnQucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZUlubGluZUNvZGVQbHVnaW4gfSBmcm9tICcuL2lubGluZS1jb2RlL2lubGluZS1jb2RlLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVMaW5rUGx1Z2luIH0gZnJvbSAnLi9saW5rL2xpbmsucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZUxpc3RQbHVnaW4gfSBmcm9tICcuL2xpc3QvbGlzdC5wbHVnaW4nO1xuaW1wb3J0IHsgY3JlYXRlTWFya1BsdWdpbiB9IGZyb20gJy4vbWFyay9tYXJrLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVNZW50aW9uUGx1Z2luIH0gZnJvbSAnLi9tZW50aW9uL21lbnRpb24ucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZU5vZGVJRFBsdWdpbiB9IGZyb20gJy4vbm9kZS1pZC9ub2RlLWlkLnBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVJbnNlcnRQYXJhZ3JhcGhOb2Rlc1BsdWdpbiB9IGZyb20gJy4vbm9ybWFsaXplcnMvaW5zZXJ0LXBhcmFncmFwaC1ub2Rlcyc7XG5pbXBvcnQgeyBjcmVhdGVUcmFpbGluZ05vZGVQbHVnaW4gfSBmcm9tICcuL25vcm1hbGl6ZXJzL3RyYWlsaW5nLW5vZGUucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZVBhaW50Rm9ybWF0UGx1Z2luIH0gZnJvbSAnLi9wYWludC1mb3JtYXQvcGFpbnQtZm9ybWF0LmVkaXRvcic7XG5pbXBvcnQgeyBjcmVhdGVRdWlja0luc2VydFBsdWdpbiB9IGZyb20gJy4vcXVpY2staW5zZXJ0L3F1aWNrLWluc2VydC5wbHVnaW4nO1xuaW1wb3J0IHsgY3JlYXRlU29mdEJyZWFrUGx1Z2luIH0gZnJvbSAnLi9zb2Z0LWJyZWFrL3NvZnQtYnJlYWsucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZVRhYmxlUGx1Z2luIH0gZnJvbSAnLi90YWJsZS90YWJsZS5wbHVnaW4nO1xuaW1wb3J0IHsgY3JlYXRlVG9kb0l0ZW1QbHVnaW4gfSBmcm9tICcuL3RvZG8taXRlbS90b2RvLWl0ZW0ucGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZVZlcnRpY2FsQWxpZ25QbHVnaW4gfSBmcm9tICcuL3ZlcnRpY2FsLWFsaWduL3ZlcnRpY2FsLWFsaWduLmVkaXRvcic7XG5cbmV4cG9ydCBjb25zdCBpbnRlcm5hbFBsdWdpbnMgPSAoKSA9PiBbXG4gICAgY3JlYXRlVGhlSGlzdG9yeVBsdWdpbigpLFxuICAgIGNyZWF0ZUNvbW1vblBsdWdpbigpLFxuICAgIGNyZWF0ZUluc2VydERhdGFCeUludmFsaWRUeXBlUGx1Z2luKCksXG4gICAgY3JlYXRlUmVtb3ZlRW1wdHlQbHVnaW4oKSxcbiAgICBjcmVhdGVSZW1vdmVWb2lkUGx1Z2luKCksXG4gICAgY3JlYXRlQmxvY2tDYXJkUGx1Z2luKCksIC8vIHNob3VsZCBpbiB0aGUgZnJvbnQgb2YgbGlzdOOAgXJlc2V0dHlwZeOAgXRvZG/jgIFkZXNlcmlhbGl6ZS1odG1sXG4gICAgY3JlYXRlUmVzZXRUeXBlUGx1Z2luKCksXG4gICAgY3JlYXRlSW5kZW50UGx1Z2luKCksIC8vIHNob3VsZCBpbiB0aGUgZnJvbnQgb2YgbGlzdFxuICAgIGNyZWF0ZUxpc3RQbHVnaW4oKSxcbiAgICBjcmVhdGVMaW5rUGx1Z2luKCksXG4gICAgY3JlYXRlVGFibGVQbHVnaW4oKSxcbiAgICBjcmVhdGVUb2RvSXRlbVBsdWdpbigpLFxuICAgIGNyZWF0ZUhyUGx1Z2luKCksXG4gICAgY3JlYXRlQWxpZ25QbHVnaW4oKSxcbiAgICBjcmVhdGVDb2RlUGx1Z2luKCksXG4gICAgY3JlYXRlSGVhZGluZ1BsdWdpbigpLFxuICAgIGNyZWF0ZVZlcnRpY2FsQWxpZ25QbHVnaW4oKSxcbiAgICBjcmVhdGVNYXJrUGx1Z2luKCksXG4gICAgY3JlYXRlRm9udFNpemVQbHVnaW4oKSxcbiAgICBjcmVhdGVDb2xvclBsdWdpbigpLFxuICAgIGNyZWF0ZVNvZnRCcmVha1BsdWdpbigpLFxuICAgIGNyZWF0ZUJsb2NrcXVvdGVQbHVnaW4oKSxcbiAgICBjcmVhdGVOb2RlSURQbHVnaW4oKSxcbiAgICBjcmVhdGVBdXRvRm9ybWF0UGx1Z2luKCksXG4gICAgY3JlYXRlUGFpbnRGb3JtYXRQbHVnaW4oKSxcbiAgICBjcmVhdGVUcmFpbGluZ05vZGVQbHVnaW4oKSxcbiAgICBjcmVhdGVNb3ZlU2VsZWN0aW9uUGx1Z2luKCksXG4gICAgY3JlYXRlSW5zZXJ0UGFyYWdyYXBoTm9kZXNQbHVnaW4oKSxcbiAgICBjcmVhdGVHZXRGcmFnbWVudFBsdWdpbigpLFxuICAgIGNyZWF0ZUltYWdlUGx1Z2luKCksIC8vICBtdXN0IGJlIGJlZm9yZSB3aXRoRGVzZXJpYWxpemVIVE1MXG4gICAgY3JlYXRlRGVzZXJpYWxpemVIVE1MUGx1Z2luKCksXG4gICAgY3JlYXRlRGVzZXJpYWxpemVNZFBsdWdpbigpLFxuICAgIGNyZWF0ZVF1aWNrSW5zZXJ0UGx1Z2luKCksIC8vIG11c3QgYmUgYmVmb3JlIHBsdWdpbnMgdGhhdCBpbmNsdWRlIG9ua2V5ZG93biBldmVudHNcbiAgICBjcmVhdGVJbmxpbmVDb2RlUGx1Z2luKCksXG4gICAgY3JlYXRlTWVudGlvblBsdWdpbigpXG5dO1xuIl19