simpo-component-library 3.6.893 → 3.6.895

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 (141) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/components/delete-hover-element/delete-hover-element.component.mjs +3 -3
  3. package/esm2022/lib/components/document/document.component.mjs +3 -3
  4. package/esm2022/lib/components/image-loading/image-loading.component.mjs +3 -3
  5. package/esm2022/lib/components/payment-details/payment-details.component.mjs +3 -3
  6. package/esm2022/lib/constants/business.constant.mjs +1 -1
  7. package/esm2022/lib/directive/alignment.directive.mjs +1 -1
  8. package/esm2022/lib/directive/blur-content.directive.mjs +1 -1
  9. package/esm2022/lib/directive/borderlessImage.directive.mjs +1 -1
  10. package/esm2022/lib/directive/color.directive.mjs +1 -1
  11. package/esm2022/lib/directive/column-directive.directive.mjs +1 -1
  12. package/esm2022/lib/directive/container-alignment.directive.mjs +1 -1
  13. package/esm2022/lib/directive/container-fir.directive.mjs +1 -1
  14. package/esm2022/lib/directive/content-title-spacing.directive.mjs +1 -1
  15. package/esm2022/lib/directive/contenteditable.directive.mjs +1 -1
  16. package/esm2022/lib/directive/corner-directive.mjs +1 -1
  17. package/esm2022/lib/directive/height.directive.mjs +1 -1
  18. package/esm2022/lib/directive/hover-animation.directive.mjs +1 -1
  19. package/esm2022/lib/directive/hoverborder.directive.mjs +1 -1
  20. package/esm2022/lib/directive/icon-directive.directive.mjs +1 -1
  21. package/esm2022/lib/directive/image-container.directive.mjs +1 -1
  22. package/esm2022/lib/directive/letters-only.directive.mjs +1 -1
  23. package/esm2022/lib/directive/numbers-only.directive.mjs +1 -1
  24. package/esm2022/lib/directive/position-layout-directive.directive.mjs +1 -1
  25. package/esm2022/lib/directive/set-dynamic-background.directive.mjs +1 -1
  26. package/esm2022/lib/directive/spacing-horizontal.directive.mjs +1 -1
  27. package/esm2022/lib/directive/spacing.directive.mjs +1 -1
  28. package/esm2022/lib/directive/text-background-directive.directive.mjs +1 -1
  29. package/esm2022/lib/directive/text-size.directive.mjs +1 -1
  30. package/esm2022/lib/directive/translate-onhover.directive.mjs +1 -1
  31. package/esm2022/lib/directive/wrap-containers.directive.mjs +1 -1
  32. package/esm2022/lib/ecommerce/sections/address/address.component.mjs +1 -1
  33. package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +3 -3
  34. package/esm2022/lib/ecommerce/sections/checkout/checkout.component.mjs +3 -3
  35. package/esm2022/lib/ecommerce/sections/checkout/checkout.modal.mjs +1 -1
  36. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.component.mjs +3 -3
  37. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.model.mjs +1 -1
  38. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.component.mjs +3 -3
  39. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.model.mjs +1 -1
  40. package/esm2022/lib/ecommerce/sections/item-varient/item-varient.component.mjs +3 -3
  41. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.component.mjs +1 -1
  42. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.modal.mjs +1 -1
  43. package/esm2022/lib/ecommerce/sections/pagnination/pagnination.component.mjs +3 -3
  44. package/esm2022/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.mjs +3 -3
  45. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs +3 -3
  46. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.model.mjs +1 -1
  47. package/esm2022/lib/ecommerce/sections/product-list/product-list.modal.mjs +1 -1
  48. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +1 -1
  49. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.model.mjs +1 -1
  50. package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +3 -3
  51. package/esm2022/lib/ecommerce/sections/scheme-selection/scheme-selection.component.mjs +3 -3
  52. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.model.mjs +1 -1
  53. package/esm2022/lib/ecommerce/sections/store-list/store-list.component.mjs +3 -3
  54. package/esm2022/lib/ecommerce/sections/store-list/store-list.modal.mjs +1 -1
  55. package/esm2022/lib/ecommerce/sections/store-page/store-page.component.mjs +3 -3
  56. package/esm2022/lib/ecommerce/sections/store-page/store-page.model.mjs +1 -1
  57. package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +3 -3
  58. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.modal.mjs +1 -1
  59. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +3 -3
  60. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.model.mjs +1 -1
  61. package/esm2022/lib/ecommerce/styles/BaseCollection.modal.mjs +1 -1
  62. package/esm2022/lib/ecommerce/styles/Collection.modal.mjs +1 -1
  63. package/esm2022/lib/ecommerce/styles/PincodeLocation.model.mjs +1 -1
  64. package/esm2022/lib/ecommerce/styles/PincodeLocationInter.model.mjs +1 -1
  65. package/esm2022/lib/ecommerce/styles/cart.modal.mjs +1 -1
  66. package/esm2022/lib/ecommerce/styles/category.modal.mjs +1 -1
  67. package/esm2022/lib/ecommerce/styles/order.modal.mjs +1 -1
  68. package/esm2022/lib/ecommerce/styles/review.modal.mjs +1 -1
  69. package/esm2022/lib/ecommerce/styles/user.modal.mjs +1 -1
  70. package/esm2022/lib/elements/address-list/address-list.component.mjs +3 -3
  71. package/esm2022/lib/elements/button/button.component.mjs +3 -3
  72. package/esm2022/lib/elements/button/button.model.mjs +1 -1
  73. package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +3 -3
  74. package/esm2022/lib/elements/heading-element/heading-element.component.mjs +3 -3
  75. package/esm2022/lib/elements/index.mjs +1 -1
  76. package/esm2022/lib/elements/list-home-appointment/list-home-appointment.component.mjs +3 -3
  77. package/esm2022/lib/elements/media-selector/media-selector.component.mjs +1 -1
  78. package/esm2022/lib/elements/portfolio/portfolio.component.mjs +3 -3
  79. package/esm2022/lib/elements/property/property.component.mjs +3 -3
  80. package/esm2022/lib/elements/svg-divider/svg-divider.component.mjs +3 -3
  81. package/esm2022/lib/elements/text/text.component.mjs +3 -3
  82. package/esm2022/lib/elements/text-editor/text-editor.component.mjs +3 -3
  83. package/esm2022/lib/pipes/amount.pipe.mjs +1 -1
  84. package/esm2022/lib/sections/add-new-section/add-new-section.component.mjs +3 -3
  85. package/esm2022/lib/sections/appointment-form/appointment-booking/appointment-booking/appointment-booking.component.mjs +3 -3
  86. package/esm2022/lib/sections/appointment-form/appointment-form.model.mjs +1 -1
  87. package/esm2022/lib/sections/banner-carousel/banner-carousel.model.mjs +1 -1
  88. package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +1 -1
  89. package/esm2022/lib/sections/blog-list/blog-list.model.mjs +1 -1
  90. package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +1 -1
  91. package/esm2022/lib/sections/choose-us-section/choose-us-section.model.mjs +1 -1
  92. package/esm2022/lib/sections/faq-section/faq-section.modal.mjs +1 -1
  93. package/esm2022/lib/sections/features-section/features-section.model.mjs +1 -1
  94. package/esm2022/lib/sections/header-text/header-text.model.mjs +1 -1
  95. package/esm2022/lib/sections/image-carousel-section/image-carousel.model.mjs +1 -1
  96. package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +1 -1
  97. package/esm2022/lib/sections/image-section/image-section.component.mjs +1 -1
  98. package/esm2022/lib/sections/image-section/image-section.model.mjs +1 -1
  99. package/esm2022/lib/sections/location-section/location-section.component.mjs +1 -1
  100. package/esm2022/lib/sections/location-section/location-section.modal.mjs +1 -1
  101. package/esm2022/lib/sections/logo-showcase/logo-showcase.modal.mjs +1 -1
  102. package/esm2022/lib/sections/moving-text/moving-text.component.mjs +3 -3
  103. package/esm2022/lib/sections/moving-text/moving-text.modal.mjs +1 -1
  104. package/esm2022/lib/sections/new-services/new-services.component.mjs +1 -1
  105. package/esm2022/lib/sections/new-services/new-services.model.mjs +1 -1
  106. package/esm2022/lib/sections/new-testimonials/new-testimonials.model.mjs +1 -1
  107. package/esm2022/lib/sections/news-letter-component/news-letter-component.component.mjs +1 -1
  108. package/esm2022/lib/sections/news-letter-component/news-letter.modal.mjs +1 -1
  109. package/esm2022/lib/sections/pricing-section/pricing-section.modal.mjs +1 -1
  110. package/esm2022/lib/sections/process-modern/process-modern.component.mjs +1 -1
  111. package/esm2022/lib/sections/process-modern/process-modern.model.mjs +1 -1
  112. package/esm2022/lib/sections/process-section/process-section.modal.mjs +1 -1
  113. package/esm2022/lib/sections/property-component/property-component.component.mjs +3 -3
  114. package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
  115. package/esm2022/lib/sections/property-list/property-list.component.mjs +3 -3
  116. package/esm2022/lib/sections/property-list/property-list.modal.mjs +1 -1
  117. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +1 -1
  118. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.model.mjs +1 -1
  119. package/esm2022/lib/sections/registration-form/registration-form.component.mjs +3 -3
  120. package/esm2022/lib/sections/registration-form/registrationForm.model.mjs +1 -1
  121. package/esm2022/lib/sections/scheme-detail/scheme-detail.component.mjs +1 -1
  122. package/esm2022/lib/sections/scheme-detail/scheme-detail.modal.mjs +1 -1
  123. package/esm2022/lib/sections/skeleton-loader-section/skeleton-loader-section.component.mjs +3 -3
  124. package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +1 -1
  125. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.model.mjs +1 -1
  126. package/esm2022/lib/sections/testimonial-section/testimonial-section.model.mjs +1 -1
  127. package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +1 -1
  128. package/esm2022/lib/sections/testimonial-video/testimonial-video.model.mjs +1 -1
  129. package/esm2022/lib/sections/text-section/text-section.model.mjs +1 -1
  130. package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +3 -3
  131. package/esm2022/lib/sections/usp-video-section/usp-video-section.model.mjs +1 -1
  132. package/esm2022/lib/sections/video-section/video-section.component.mjs +1 -1
  133. package/esm2022/lib/sections/video-section/video-section.model.mjs +1 -1
  134. package/esm2022/lib/sections/view-blog/view-blog.component.mjs +1 -1
  135. package/esm2022/lib/services/endUser.service.mjs +1 -1
  136. package/esm2022/lib/services/image-upload-service.service.mjs +1 -1
  137. package/fesm2022/simpo-component-library.mjs +68 -68
  138. package/fesm2022/simpo-component-library.mjs.map +1 -1
  139. package/package.json +1 -1
  140. package/simpo-component-library-3.6.895.tgz +0 -0
  141. package/simpo-component-library-3.6.893.tgz +0 -0
@@ -379,7 +379,7 @@ export class TextEditorComponent {
379
379
  .run();
380
380
  }
381
381
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
382
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextEditorComponent, isStandalone: true, selector: "simpo-text-editor", inputs: { value: "value", editable: "editable", isRTE: "isRTE", sectionId: "sectionId", label: "label", type: "type", inputTextIndex: "inputTextIndex", itemIndex: "itemIndex" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "click": "onHostClick()", "document:mousedown": "onMouseDown($event)" }, properties: { "style.display": "isRTE ? \"\" : \"none\"" } }, viewQueries: [{ propertyName: "editorElement", first: true, predicate: ["editorContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- text-editor.component.html -->\n\n<div class=\"editor-container\" *ngIf=\"editable; else viewMode\">\n\n <!-- FLOATING TOOLBAR -->\n <div class=\"toolbar\" *ngIf=\"showToolbar\" [style.top.px]=\"toolbarY\" [style.left.px]=\"toolbarX\" cdkDrag>\n <button class=\"tool drag-handle w-auto\" cdkDragHandle>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-grip-vertical\">\n <circle cx=\"9\" cy=\"12\" r=\"1\" />\n <circle cx=\"9\" cy=\"5\" r=\"1\" />\n <circle cx=\"9\" cy=\"19\" r=\"1\" />\n <circle cx=\"15\" cy=\"12\" r=\"1\" />\n <circle cx=\"15\" cy=\"5\" r=\"1\" />\n <circle cx=\"15\" cy=\"19\" r=\"1\" />\n </svg>\n </button>\n <mat-form-field appearance=\"outline\" class=\"font-size-field\">\n\n <mat-select [value]=\"selectedFontSize\" (selectionChange)=\"changeFontSize($event.value)\" disableOptionCentering>\n\n <mat-option value=\"\">\n Default\n </mat-option>\n\n <mat-option value=\"clamp(0.75rem, 2vw, 1rem)\">\n 14\n </mat-option>\n\n <mat-option value=\"clamp(0.75rem, 2vw, 1.25rem)\">\n 16\n </mat-option>\n\n <mat-option value=\"clamp(1rem, 3vw, 1.5rem)\">\n 20\n </mat-option>\n\n <mat-option value=\"clamp(1.25rem, 4vw, 2rem)\">\n 24\n </mat-option>\n <mat-option value=\"clamp(2rem, 5vw, 3rem)\">\n 32\n </mat-option>\n <mat-option value=\"clamp(3.1rem, 7vw, 4.5rem)\">\n 48\n </mat-option>\n </mat-select>\n\n </mat-form-field>\n <!-- BOLD -->\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('bold')\" (click)=\"toggleBold()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-bold\">\n <path d=\"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\" />\n </svg>\n </button>\n\n <!-- ITALIC -->\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('italic')\" (click)=\"toggleItalic()\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-italic\">\n <line x1=\"19\" x2=\"10\" y1=\"4\" y2=\"4\" />\n <line x1=\"14\" x2=\"5\" y1=\"20\" y2=\"20\" />\n <line x1=\"15\" x2=\"9\" y1=\"4\" y2=\"20\" />\n </svg>\n </button>\n\n <!-- UNDERLINE -->\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('underline')\" (click)=\"toggleUnderline()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-underline\">\n <path d=\"M6 4v6a6 6 0 0 0 12 0V4\" />\n <line x1=\"4\" x2=\"20\" y1=\"20\" y2=\"20\" />\n </svg>\n </button>\n\n <!-- ALIGN LEFT -->\n <button class=\"tool w-auto\" (click)=\"setAlign('left')\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-align-left\">\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\n <line x1=\"15\" x2=\"3\" y1=\"12\" y2=\"12\" />\n <line x1=\"17\" x2=\"3\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- ALIGN CENTER -->\n <button class=\"tool w-auto\" (click)=\"setAlign('center')\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-align-center\">\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\n <line x1=\"17\" x2=\"7\" y1=\"12\" y2=\"12\" />\n <line x1=\"19\" x2=\"5\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- ALIGN RIGHT -->\n <button class=\"tool w-auto\" (click)=\"setAlign('right')\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-align-right\">\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\n <line x1=\"21\" x2=\"9\" y1=\"12\" y2=\"12\" />\n <line x1=\"21\" x2=\"7\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- ORDERED LIST -->\n <button class=\"tool w-auto\" (click)=\"toggleOrderedList()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-list-ordered\">\n <line x1=\"10\" x2=\"21\" y1=\"6\" y2=\"6\" />\n <line x1=\"10\" x2=\"21\" y1=\"12\" y2=\"12\" />\n <line x1=\"10\" x2=\"21\" y1=\"18\" y2=\"18\" />\n <path d=\"M4 6h1v4\" />\n <path d=\"M4 10h2\" />\n <path d=\"M6 18H4c0-1 2-2 2-3s-1-1.5-2-1\" />\n </svg>\n </button>\n <!-- BULLET LIST -->\n <button class=\"tool w-auto\" (click)=\"toggleBulletList()\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-list\">\n <line x1=\"8\" x2=\"21\" y1=\"6\" y2=\"6\" />\n <line x1=\"8\" x2=\"21\" y1=\"12\" y2=\"12\" />\n <line x1=\"8\" x2=\"21\" y1=\"18\" y2=\"18\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"6\" y2=\"6\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"12\" y2=\"12\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- SOLID / GRADIENT -->\n <!-- SOLID / GRADIENT -->\n <div class=\"colorType\">\n\n <button class=\"solid w-auto\" [class.solidColorSelected]=\"selectedColorType === 'SOLID'\"\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToSolid($event)\">\n Solid\n </button>\n\n <button class=\"gradient w-auto\" [class.gradientColorSelected]=\"selectedColorType === 'GRADIENT'\"\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToGradient($event)\">\n Gradient\n </button>\n\n </div>\n\n <!-- SOLID COLOR -->\n <button class=\"tool color-picker-btn w-auto\" *ngIf=\"selectedColorType === 'SOLID'\">\n\n <mat-icon>format_color_text</mat-icon>\n\n <input type=\"color\" class=\"hidden-color-picker\" [(ngModel)]=\"selectedColor\" (click)=\"openColorPicker()\"\n (input)=\"changeColor()\">\n\n </button>\n\n <!-- GRADIENT -->\n <div class=\"gradient-picker\" *ngIf=\"selectedColorType === 'GRADIENT'\">\n <input type=\"color\" [(ngModel)]=\"primaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\n\n <input type=\"color\" [(ngModel)]=\"secondaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\n\n </div>\n\n </div>\n\n <!-- TIPTAP EDITOR -->\n <div #editorContainer class=\"editable-text\">\n </div>\n\n </div>\n <ng-template #viewMode>\n <div class=\"read-only-text\" [innerHTML]=\"safeHtml\">\n </div>\n </ng-template>", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;width:100%}.editable-text{cursor:text;width:100%;border:1px solid lightgrey;border-radius:10px}.editable-text ::ng-deep p{margin-bottom:0!important}::ng-deep .ProseMirror ol,::ng-deep .ProseMirror ul{padding-left:2rem;margin-left:0;list-style-position:inside}::ng-deep .ProseMirror li{text-align:inherit;margin-bottom:5px}::ng-deep .ProseMirror li p{display:inline}.ProseMirror{outline:none;min-height:120px;padding:5px}.ProseMirror p{margin:0}.toolbar{position:absolute;left:0;top:0;line-height:inherit!important;display:flex;align-items:center;gap:5px;background:#fff;padding:8px 14px;border-radius:22px;z-index:100000;box-shadow:#00000029 0 1px 4px;max-width:calc(100vw - 20px);overflow-x:auto;box-sizing:border-box}.tool{background:none;border:none;padding:5px 8px;cursor:pointer;display:flex;align-items:center}.tool:hover{background:#eee;border-radius:5px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}.color-picker-btn{position:relative}.color-picker-btn mat-icon{font-size:22px!important}.hidden-color-picker{position:absolute;inset:0;opacity:0;cursor:pointer}.gradient-text{background:linear-gradient(to right,var(--gradient-start),var(--gradient-end));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;color:transparent;display:inline-block}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:9px;overflow:hidden}.colorType button{font-size:12px!important;padding:7px 9px!important;border:none;background:#fff;cursor:pointer}.solid{border-right:1px solid #E9E9E9!important}.solidColorSelected,.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff}.gradient-picker{display:flex;gap:5px}.gradient-picker input{width:32px;height:32px;border:none;padding:0;cursor:pointer}.white-space-nowrap{white-space:nowrap}.font-size-field{width:120px;border:1px solid lightgrey;border-radius:10px}::ng-deep .font-size-field .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .font-size-field .mdc-notched-outline{display:none}::ng-deep .font-size-field .mat-mdc-text-field-wrapper{background:transparent!important;padding-left:8px!important;padding-right:8px!important;height:36px!important}::ng-deep .font-size-field .mat-mdc-select-value{font-size:14px;font-weight:600}::ng-deep .mat-mdc-select-panel{border-radius:12px!important}@media screen and (max-width: 475px){.toolbar{max-width:95%;flex-wrap:wrap;row-gap:10px}}@media screen and (max-width: 768px){.toolbar{width:max-content;max-width:calc(100vw - 20px);flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatFormFieldModule }] }); }
382
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextEditorComponent, isStandalone: true, selector: "simpo-text-editor", inputs: { value: "value", editable: "editable", isRTE: "isRTE", sectionId: "sectionId", label: "label", type: "type", inputTextIndex: "inputTextIndex", itemIndex: "itemIndex" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "click": "onHostClick()", "document:mousedown": "onMouseDown($event)" }, properties: { "style.display": "isRTE ? \"\" : \"none\"" } }, viewQueries: [{ propertyName: "editorElement", first: true, predicate: ["editorContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- text-editor.component.html -->\r\n\r\n<div class=\"editor-container\" *ngIf=\"editable; else viewMode\">\r\n\r\n <!-- FLOATING TOOLBAR -->\r\n <div class=\"toolbar\" *ngIf=\"showToolbar\" [style.top.px]=\"toolbarY\" [style.left.px]=\"toolbarX\" cdkDrag>\r\n <button class=\"tool drag-handle w-auto\" cdkDragHandle>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-grip-vertical\">\r\n <circle cx=\"9\" cy=\"12\" r=\"1\" />\r\n <circle cx=\"9\" cy=\"5\" r=\"1\" />\r\n <circle cx=\"9\" cy=\"19\" r=\"1\" />\r\n <circle cx=\"15\" cy=\"12\" r=\"1\" />\r\n <circle cx=\"15\" cy=\"5\" r=\"1\" />\r\n <circle cx=\"15\" cy=\"19\" r=\"1\" />\r\n </svg>\r\n </button>\r\n <mat-form-field appearance=\"outline\" class=\"font-size-field\">\r\n\r\n <mat-select [value]=\"selectedFontSize\" (selectionChange)=\"changeFontSize($event.value)\" disableOptionCentering>\r\n\r\n <mat-option value=\"\">\r\n Default\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(0.75rem, 2vw, 1rem)\">\r\n 14\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(0.75rem, 2vw, 1.25rem)\">\r\n 16\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(1rem, 3vw, 1.5rem)\">\r\n 20\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(1.25rem, 4vw, 2rem)\">\r\n 24\r\n </mat-option>\r\n <mat-option value=\"clamp(2rem, 5vw, 3rem)\">\r\n 32\r\n </mat-option>\r\n <mat-option value=\"clamp(3.1rem, 7vw, 4.5rem)\">\r\n 48\r\n </mat-option>\r\n </mat-select>\r\n\r\n </mat-form-field>\r\n <!-- BOLD -->\r\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('bold')\" (click)=\"toggleBold()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-bold\">\r\n <path d=\"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ITALIC -->\r\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('italic')\" (click)=\"toggleItalic()\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-italic\">\r\n <line x1=\"19\" x2=\"10\" y1=\"4\" y2=\"4\" />\r\n <line x1=\"14\" x2=\"5\" y1=\"20\" y2=\"20\" />\r\n <line x1=\"15\" x2=\"9\" y1=\"4\" y2=\"20\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- UNDERLINE -->\r\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('underline')\" (click)=\"toggleUnderline()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-underline\">\r\n <path d=\"M6 4v6a6 6 0 0 0 12 0V4\" />\r\n <line x1=\"4\" x2=\"20\" y1=\"20\" y2=\"20\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ALIGN LEFT -->\r\n <button class=\"tool w-auto\" (click)=\"setAlign('left')\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-align-left\">\r\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"15\" x2=\"3\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"17\" x2=\"3\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ALIGN CENTER -->\r\n <button class=\"tool w-auto\" (click)=\"setAlign('center')\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-align-center\">\r\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"17\" x2=\"7\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"19\" x2=\"5\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ALIGN RIGHT -->\r\n <button class=\"tool w-auto\" (click)=\"setAlign('right')\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-align-right\">\r\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"21\" x2=\"9\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"21\" x2=\"7\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ORDERED LIST -->\r\n <button class=\"tool w-auto\" (click)=\"toggleOrderedList()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-list-ordered\">\r\n <line x1=\"10\" x2=\"21\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"10\" x2=\"21\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"10\" x2=\"21\" y1=\"18\" y2=\"18\" />\r\n <path d=\"M4 6h1v4\" />\r\n <path d=\"M4 10h2\" />\r\n <path d=\"M6 18H4c0-1 2-2 2-3s-1-1.5-2-1\" />\r\n </svg>\r\n </button>\r\n <!-- BULLET LIST -->\r\n <button class=\"tool w-auto\" (click)=\"toggleBulletList()\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-list\">\r\n <line x1=\"8\" x2=\"21\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"8\" x2=\"21\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"8\" x2=\"21\" y1=\"18\" y2=\"18\" />\r\n <line x1=\"3\" x2=\"3.01\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"3\" x2=\"3.01\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"3\" x2=\"3.01\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- SOLID / GRADIENT -->\r\n <!-- SOLID / GRADIENT -->\r\n <div class=\"colorType\">\r\n\r\n <button class=\"solid w-auto\" [class.solidColorSelected]=\"selectedColorType === 'SOLID'\"\r\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToSolid($event)\">\r\n Solid\r\n </button>\r\n\r\n <button class=\"gradient w-auto\" [class.gradientColorSelected]=\"selectedColorType === 'GRADIENT'\"\r\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToGradient($event)\">\r\n Gradient\r\n </button>\r\n\r\n </div>\r\n\r\n <!-- SOLID COLOR -->\r\n <button class=\"tool color-picker-btn w-auto\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n\r\n <mat-icon>format_color_text</mat-icon>\r\n\r\n <input type=\"color\" class=\"hidden-color-picker\" [(ngModel)]=\"selectedColor\" (click)=\"openColorPicker()\"\r\n (input)=\"changeColor()\">\r\n\r\n </button>\r\n\r\n <!-- GRADIENT -->\r\n <div class=\"gradient-picker\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <input type=\"color\" [(ngModel)]=\"primaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\r\n\r\n <input type=\"color\" [(ngModel)]=\"secondaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- TIPTAP EDITOR -->\r\n <div #editorContainer class=\"editable-text\">\r\n </div>\r\n\r\n </div>\r\n <ng-template #viewMode>\r\n <div class=\"read-only-text\" [innerHTML]=\"safeHtml\">\r\n </div>\r\n </ng-template>", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;width:100%}.editable-text{cursor:text;width:100%;border:1px solid lightgrey;border-radius:10px}.editable-text ::ng-deep p{margin-bottom:0!important}::ng-deep .ProseMirror ol,::ng-deep .ProseMirror ul{padding-left:2rem;margin-left:0;list-style-position:inside}::ng-deep .ProseMirror li{text-align:inherit;margin-bottom:5px}::ng-deep .ProseMirror li p{display:inline}.ProseMirror{outline:none;min-height:120px;padding:5px}.ProseMirror p{margin:0}.toolbar{position:absolute;left:0;top:0;line-height:inherit!important;display:flex;align-items:center;gap:5px;background:#fff;padding:8px 14px;border-radius:22px;z-index:100000;box-shadow:#00000029 0 1px 4px;max-width:calc(100vw - 20px);overflow-x:auto;box-sizing:border-box}.tool{background:none;border:none;padding:5px 8px;cursor:pointer;display:flex;align-items:center}.tool:hover{background:#eee;border-radius:5px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}.color-picker-btn{position:relative}.color-picker-btn mat-icon{font-size:22px!important}.hidden-color-picker{position:absolute;inset:0;opacity:0;cursor:pointer}.gradient-text{background:linear-gradient(to right,var(--gradient-start),var(--gradient-end));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;color:transparent;display:inline-block}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:9px;overflow:hidden}.colorType button{font-size:12px!important;padding:7px 9px!important;border:none;background:#fff;cursor:pointer}.solid{border-right:1px solid #E9E9E9!important}.solidColorSelected,.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff}.gradient-picker{display:flex;gap:5px}.gradient-picker input{width:32px;height:32px;border:none;padding:0;cursor:pointer}.white-space-nowrap{white-space:nowrap}.font-size-field{width:120px;border:1px solid lightgrey;border-radius:10px}::ng-deep .font-size-field .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .font-size-field .mdc-notched-outline{display:none}::ng-deep .font-size-field .mat-mdc-text-field-wrapper{background:transparent!important;padding-left:8px!important;padding-right:8px!important;height:36px!important}::ng-deep .font-size-field .mat-mdc-select-value{font-size:14px;font-weight:600}::ng-deep .mat-mdc-select-panel{border-radius:12px!important}@media screen and (max-width: 475px){.toolbar{max-width:95%;flex-wrap:wrap;row-gap:10px}}@media screen and (max-width: 768px){.toolbar{width:max-content;max-width:calc(100vw - 20px);flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatFormFieldModule }] }); }
383
383
  }
384
384
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextEditorComponent, decorators: [{
385
385
  type: Component,
@@ -391,7 +391,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
391
391
  MatSelectModule,
392
392
  MatFormFieldModule,
393
393
  ContenteditableValueAccessor
394
- ], host: { '[style.display]': 'isRTE ? "" : "none"' }, template: "<!-- text-editor.component.html -->\n\n<div class=\"editor-container\" *ngIf=\"editable; else viewMode\">\n\n <!-- FLOATING TOOLBAR -->\n <div class=\"toolbar\" *ngIf=\"showToolbar\" [style.top.px]=\"toolbarY\" [style.left.px]=\"toolbarX\" cdkDrag>\n <button class=\"tool drag-handle w-auto\" cdkDragHandle>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-grip-vertical\">\n <circle cx=\"9\" cy=\"12\" r=\"1\" />\n <circle cx=\"9\" cy=\"5\" r=\"1\" />\n <circle cx=\"9\" cy=\"19\" r=\"1\" />\n <circle cx=\"15\" cy=\"12\" r=\"1\" />\n <circle cx=\"15\" cy=\"5\" r=\"1\" />\n <circle cx=\"15\" cy=\"19\" r=\"1\" />\n </svg>\n </button>\n <mat-form-field appearance=\"outline\" class=\"font-size-field\">\n\n <mat-select [value]=\"selectedFontSize\" (selectionChange)=\"changeFontSize($event.value)\" disableOptionCentering>\n\n <mat-option value=\"\">\n Default\n </mat-option>\n\n <mat-option value=\"clamp(0.75rem, 2vw, 1rem)\">\n 14\n </mat-option>\n\n <mat-option value=\"clamp(0.75rem, 2vw, 1.25rem)\">\n 16\n </mat-option>\n\n <mat-option value=\"clamp(1rem, 3vw, 1.5rem)\">\n 20\n </mat-option>\n\n <mat-option value=\"clamp(1.25rem, 4vw, 2rem)\">\n 24\n </mat-option>\n <mat-option value=\"clamp(2rem, 5vw, 3rem)\">\n 32\n </mat-option>\n <mat-option value=\"clamp(3.1rem, 7vw, 4.5rem)\">\n 48\n </mat-option>\n </mat-select>\n\n </mat-form-field>\n <!-- BOLD -->\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('bold')\" (click)=\"toggleBold()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-bold\">\n <path d=\"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\" />\n </svg>\n </button>\n\n <!-- ITALIC -->\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('italic')\" (click)=\"toggleItalic()\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-italic\">\n <line x1=\"19\" x2=\"10\" y1=\"4\" y2=\"4\" />\n <line x1=\"14\" x2=\"5\" y1=\"20\" y2=\"20\" />\n <line x1=\"15\" x2=\"9\" y1=\"4\" y2=\"20\" />\n </svg>\n </button>\n\n <!-- UNDERLINE -->\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('underline')\" (click)=\"toggleUnderline()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-underline\">\n <path d=\"M6 4v6a6 6 0 0 0 12 0V4\" />\n <line x1=\"4\" x2=\"20\" y1=\"20\" y2=\"20\" />\n </svg>\n </button>\n\n <!-- ALIGN LEFT -->\n <button class=\"tool w-auto\" (click)=\"setAlign('left')\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-align-left\">\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\n <line x1=\"15\" x2=\"3\" y1=\"12\" y2=\"12\" />\n <line x1=\"17\" x2=\"3\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- ALIGN CENTER -->\n <button class=\"tool w-auto\" (click)=\"setAlign('center')\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-align-center\">\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\n <line x1=\"17\" x2=\"7\" y1=\"12\" y2=\"12\" />\n <line x1=\"19\" x2=\"5\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- ALIGN RIGHT -->\n <button class=\"tool w-auto\" (click)=\"setAlign('right')\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-align-right\">\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\n <line x1=\"21\" x2=\"9\" y1=\"12\" y2=\"12\" />\n <line x1=\"21\" x2=\"7\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- ORDERED LIST -->\n <button class=\"tool w-auto\" (click)=\"toggleOrderedList()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-list-ordered\">\n <line x1=\"10\" x2=\"21\" y1=\"6\" y2=\"6\" />\n <line x1=\"10\" x2=\"21\" y1=\"12\" y2=\"12\" />\n <line x1=\"10\" x2=\"21\" y1=\"18\" y2=\"18\" />\n <path d=\"M4 6h1v4\" />\n <path d=\"M4 10h2\" />\n <path d=\"M6 18H4c0-1 2-2 2-3s-1-1.5-2-1\" />\n </svg>\n </button>\n <!-- BULLET LIST -->\n <button class=\"tool w-auto\" (click)=\"toggleBulletList()\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"lucide lucide-list\">\n <line x1=\"8\" x2=\"21\" y1=\"6\" y2=\"6\" />\n <line x1=\"8\" x2=\"21\" y1=\"12\" y2=\"12\" />\n <line x1=\"8\" x2=\"21\" y1=\"18\" y2=\"18\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"6\" y2=\"6\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"12\" y2=\"12\" />\n <line x1=\"3\" x2=\"3.01\" y1=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- SOLID / GRADIENT -->\n <!-- SOLID / GRADIENT -->\n <div class=\"colorType\">\n\n <button class=\"solid w-auto\" [class.solidColorSelected]=\"selectedColorType === 'SOLID'\"\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToSolid($event)\">\n Solid\n </button>\n\n <button class=\"gradient w-auto\" [class.gradientColorSelected]=\"selectedColorType === 'GRADIENT'\"\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToGradient($event)\">\n Gradient\n </button>\n\n </div>\n\n <!-- SOLID COLOR -->\n <button class=\"tool color-picker-btn w-auto\" *ngIf=\"selectedColorType === 'SOLID'\">\n\n <mat-icon>format_color_text</mat-icon>\n\n <input type=\"color\" class=\"hidden-color-picker\" [(ngModel)]=\"selectedColor\" (click)=\"openColorPicker()\"\n (input)=\"changeColor()\">\n\n </button>\n\n <!-- GRADIENT -->\n <div class=\"gradient-picker\" *ngIf=\"selectedColorType === 'GRADIENT'\">\n <input type=\"color\" [(ngModel)]=\"primaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\n\n <input type=\"color\" [(ngModel)]=\"secondaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\n\n </div>\n\n </div>\n\n <!-- TIPTAP EDITOR -->\n <div #editorContainer class=\"editable-text\">\n </div>\n\n </div>\n <ng-template #viewMode>\n <div class=\"read-only-text\" [innerHTML]=\"safeHtml\">\n </div>\n </ng-template>", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;width:100%}.editable-text{cursor:text;width:100%;border:1px solid lightgrey;border-radius:10px}.editable-text ::ng-deep p{margin-bottom:0!important}::ng-deep .ProseMirror ol,::ng-deep .ProseMirror ul{padding-left:2rem;margin-left:0;list-style-position:inside}::ng-deep .ProseMirror li{text-align:inherit;margin-bottom:5px}::ng-deep .ProseMirror li p{display:inline}.ProseMirror{outline:none;min-height:120px;padding:5px}.ProseMirror p{margin:0}.toolbar{position:absolute;left:0;top:0;line-height:inherit!important;display:flex;align-items:center;gap:5px;background:#fff;padding:8px 14px;border-radius:22px;z-index:100000;box-shadow:#00000029 0 1px 4px;max-width:calc(100vw - 20px);overflow-x:auto;box-sizing:border-box}.tool{background:none;border:none;padding:5px 8px;cursor:pointer;display:flex;align-items:center}.tool:hover{background:#eee;border-radius:5px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}.color-picker-btn{position:relative}.color-picker-btn mat-icon{font-size:22px!important}.hidden-color-picker{position:absolute;inset:0;opacity:0;cursor:pointer}.gradient-text{background:linear-gradient(to right,var(--gradient-start),var(--gradient-end));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;color:transparent;display:inline-block}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:9px;overflow:hidden}.colorType button{font-size:12px!important;padding:7px 9px!important;border:none;background:#fff;cursor:pointer}.solid{border-right:1px solid #E9E9E9!important}.solidColorSelected,.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff}.gradient-picker{display:flex;gap:5px}.gradient-picker input{width:32px;height:32px;border:none;padding:0;cursor:pointer}.white-space-nowrap{white-space:nowrap}.font-size-field{width:120px;border:1px solid lightgrey;border-radius:10px}::ng-deep .font-size-field .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .font-size-field .mdc-notched-outline{display:none}::ng-deep .font-size-field .mat-mdc-text-field-wrapper{background:transparent!important;padding-left:8px!important;padding-right:8px!important;height:36px!important}::ng-deep .font-size-field .mat-mdc-select-value{font-size:14px;font-weight:600}::ng-deep .mat-mdc-select-panel{border-radius:12px!important}@media screen and (max-width: 475px){.toolbar{max-width:95%;flex-wrap:wrap;row-gap:10px}}@media screen and (max-width: 768px){.toolbar{width:max-content;max-width:calc(100vw - 20px);flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}}\n"] }]
394
+ ], host: { '[style.display]': 'isRTE ? "" : "none"' }, template: "<!-- text-editor.component.html -->\r\n\r\n<div class=\"editor-container\" *ngIf=\"editable; else viewMode\">\r\n\r\n <!-- FLOATING TOOLBAR -->\r\n <div class=\"toolbar\" *ngIf=\"showToolbar\" [style.top.px]=\"toolbarY\" [style.left.px]=\"toolbarX\" cdkDrag>\r\n <button class=\"tool drag-handle w-auto\" cdkDragHandle>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-grip-vertical\">\r\n <circle cx=\"9\" cy=\"12\" r=\"1\" />\r\n <circle cx=\"9\" cy=\"5\" r=\"1\" />\r\n <circle cx=\"9\" cy=\"19\" r=\"1\" />\r\n <circle cx=\"15\" cy=\"12\" r=\"1\" />\r\n <circle cx=\"15\" cy=\"5\" r=\"1\" />\r\n <circle cx=\"15\" cy=\"19\" r=\"1\" />\r\n </svg>\r\n </button>\r\n <mat-form-field appearance=\"outline\" class=\"font-size-field\">\r\n\r\n <mat-select [value]=\"selectedFontSize\" (selectionChange)=\"changeFontSize($event.value)\" disableOptionCentering>\r\n\r\n <mat-option value=\"\">\r\n Default\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(0.75rem, 2vw, 1rem)\">\r\n 14\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(0.75rem, 2vw, 1.25rem)\">\r\n 16\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(1rem, 3vw, 1.5rem)\">\r\n 20\r\n </mat-option>\r\n\r\n <mat-option value=\"clamp(1.25rem, 4vw, 2rem)\">\r\n 24\r\n </mat-option>\r\n <mat-option value=\"clamp(2rem, 5vw, 3rem)\">\r\n 32\r\n </mat-option>\r\n <mat-option value=\"clamp(3.1rem, 7vw, 4.5rem)\">\r\n 48\r\n </mat-option>\r\n </mat-select>\r\n\r\n </mat-form-field>\r\n <!-- BOLD -->\r\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('bold')\" (click)=\"toggleBold()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-bold\">\r\n <path d=\"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ITALIC -->\r\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('italic')\" (click)=\"toggleItalic()\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-italic\">\r\n <line x1=\"19\" x2=\"10\" y1=\"4\" y2=\"4\" />\r\n <line x1=\"14\" x2=\"5\" y1=\"20\" y2=\"20\" />\r\n <line x1=\"15\" x2=\"9\" y1=\"4\" y2=\"20\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- UNDERLINE -->\r\n <button class=\"tool w-auto\" [class.selectedTool]=\"editor?.isActive('underline')\" (click)=\"toggleUnderline()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-underline\">\r\n <path d=\"M6 4v6a6 6 0 0 0 12 0V4\" />\r\n <line x1=\"4\" x2=\"20\" y1=\"20\" y2=\"20\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ALIGN LEFT -->\r\n <button class=\"tool w-auto\" (click)=\"setAlign('left')\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-align-left\">\r\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"15\" x2=\"3\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"17\" x2=\"3\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ALIGN CENTER -->\r\n <button class=\"tool w-auto\" (click)=\"setAlign('center')\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-align-center\">\r\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"17\" x2=\"7\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"19\" x2=\"5\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ALIGN RIGHT -->\r\n <button class=\"tool w-auto\" (click)=\"setAlign('right')\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-align-right\">\r\n <line x1=\"21\" x2=\"3\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"21\" x2=\"9\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"21\" x2=\"7\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- ORDERED LIST -->\r\n <button class=\"tool w-auto\" (click)=\"toggleOrderedList()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-list-ordered\">\r\n <line x1=\"10\" x2=\"21\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"10\" x2=\"21\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"10\" x2=\"21\" y1=\"18\" y2=\"18\" />\r\n <path d=\"M4 6h1v4\" />\r\n <path d=\"M4 10h2\" />\r\n <path d=\"M6 18H4c0-1 2-2 2-3s-1-1.5-2-1\" />\r\n </svg>\r\n </button>\r\n <!-- BULLET LIST -->\r\n <button class=\"tool w-auto\" (click)=\"toggleBulletList()\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"lucide lucide-list\">\r\n <line x1=\"8\" x2=\"21\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"8\" x2=\"21\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"8\" x2=\"21\" y1=\"18\" y2=\"18\" />\r\n <line x1=\"3\" x2=\"3.01\" y1=\"6\" y2=\"6\" />\r\n <line x1=\"3\" x2=\"3.01\" y1=\"12\" y2=\"12\" />\r\n <line x1=\"3\" x2=\"3.01\" y1=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- SOLID / GRADIENT -->\r\n <!-- SOLID / GRADIENT -->\r\n <div class=\"colorType\">\r\n\r\n <button class=\"solid w-auto\" [class.solidColorSelected]=\"selectedColorType === 'SOLID'\"\r\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToSolid($event)\">\r\n Solid\r\n </button>\r\n\r\n <button class=\"gradient w-auto\" [class.gradientColorSelected]=\"selectedColorType === 'GRADIENT'\"\r\n (mousedown)=\"$event.preventDefault()\" (click)=\"switchToGradient($event)\">\r\n Gradient\r\n </button>\r\n\r\n </div>\r\n\r\n <!-- SOLID COLOR -->\r\n <button class=\"tool color-picker-btn w-auto\" *ngIf=\"selectedColorType === 'SOLID'\">\r\n\r\n <mat-icon>format_color_text</mat-icon>\r\n\r\n <input type=\"color\" class=\"hidden-color-picker\" [(ngModel)]=\"selectedColor\" (click)=\"openColorPicker()\"\r\n (input)=\"changeColor()\">\r\n\r\n </button>\r\n\r\n <!-- GRADIENT -->\r\n <div class=\"gradient-picker\" *ngIf=\"selectedColorType === 'GRADIENT'\">\r\n <input type=\"color\" [(ngModel)]=\"primaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\r\n\r\n <input type=\"color\" [(ngModel)]=\"secondaryColor\" (click)=\"openColorPicker()\" (input)=\"applyGradient()\" />\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- TIPTAP EDITOR -->\r\n <div #editorContainer class=\"editable-text\">\r\n </div>\r\n\r\n </div>\r\n <ng-template #viewMode>\r\n <div class=\"read-only-text\" [innerHTML]=\"safeHtml\">\r\n </div>\r\n </ng-template>", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.editor-container{position:relative;width:100%}.editable-text{cursor:text;width:100%;border:1px solid lightgrey;border-radius:10px}.editable-text ::ng-deep p{margin-bottom:0!important}::ng-deep .ProseMirror ol,::ng-deep .ProseMirror ul{padding-left:2rem;margin-left:0;list-style-position:inside}::ng-deep .ProseMirror li{text-align:inherit;margin-bottom:5px}::ng-deep .ProseMirror li p{display:inline}.ProseMirror{outline:none;min-height:120px;padding:5px}.ProseMirror p{margin:0}.toolbar{position:absolute;left:0;top:0;line-height:inherit!important;display:flex;align-items:center;gap:5px;background:#fff;padding:8px 14px;border-radius:22px;z-index:100000;box-shadow:#00000029 0 1px 4px;max-width:calc(100vw - 20px);overflow-x:auto;box-sizing:border-box}.tool{background:none;border:none;padding:5px 8px;cursor:pointer;display:flex;align-items:center}.tool:hover{background:#eee;border-radius:5px}.selectedTool{background:var(--primary-bg-color)!important;color:#fff;border-radius:5px}.color-picker-btn{position:relative}.color-picker-btn mat-icon{font-size:22px!important}.hidden-color-picker{position:absolute;inset:0;opacity:0;cursor:pointer}.gradient-text{background:linear-gradient(to right,var(--gradient-start),var(--gradient-end));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;color:transparent;display:inline-block}.colorType{display:flex;border:1px solid #E9E9E9;border-radius:9px;overflow:hidden}.colorType button{font-size:12px!important;padding:7px 9px!important;border:none;background:#fff;cursor:pointer}.solid{border-right:1px solid #E9E9E9!important}.solidColorSelected,.gradientColorSelected{background:var(--primary-bg-color)!important;color:#fff}.gradient-picker{display:flex;gap:5px}.gradient-picker input{width:32px;height:32px;border:none;padding:0;cursor:pointer}.white-space-nowrap{white-space:nowrap}.font-size-field{width:120px;border:1px solid lightgrey;border-radius:10px}::ng-deep .font-size-field .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .font-size-field .mdc-notched-outline{display:none}::ng-deep .font-size-field .mat-mdc-text-field-wrapper{background:transparent!important;padding-left:8px!important;padding-right:8px!important;height:36px!important}::ng-deep .font-size-field .mat-mdc-select-value{font-size:14px;font-weight:600}::ng-deep .mat-mdc-select-panel{border-radius:12px!important}@media screen and (max-width: 475px){.toolbar{max-width:95%;flex-wrap:wrap;row-gap:10px}}@media screen and (max-width: 768px){.toolbar{width:max-content;max-width:calc(100vw - 20px);flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}}\n"] }]
395
395
  }], propDecorators: { value: [{
396
396
  type: Input
397
397
  }], valueChange: [{
@@ -421,4 +421,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
421
421
  args: ['document:mousedown',
422
422
  ['$event']]
423
423
  }] } });
424
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUdQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2xCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUV6RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQXFCOUQs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d0JBQ1AsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLDRCQUE0QjtxQkFDN0IsUUFJSyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFOzhCQVVsRCxLQUFLO3NCQURKLEtBQUs7Z0JBS04sV0FBVztzQkFEVixNQUFNO2dCQUtQLFFBQVE7c0JBRFAsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixhQUFhO3NCQURaLFNBQVM7dUJBQUMsaUJBQWlCO2dCQWlsQjVCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxPQUFPO2dCQWlCckIsV0FBVztzQkFMVixZQUFZO3VCQUNYLG9CQUFvQjtvQkFDcEIsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBQTEFURk9STV9JRCxcclxuICBpbmplY3QsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29tbW9uTW9kdWxlLFxyXG4gIGlzUGxhdGZvcm1Ccm93c2VyXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5cclxuaW1wb3J0IHsgQ2RrRHJhZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5cclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuXHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5cclxuaW1wb3J0IHsgQ29udGVudGVkaXRhYmxlVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50ZWRpdGFibGUuZGlyZWN0aXZlJztcclxuXHJcbmltcG9ydCB7IEdyYWRpZW50RXh0ZW5zaW9uIH0gZnJvbSAnLi4vLi4vc3R5bGVzL2dyYWRpZW50LWV4dGVuc2lvbic7XHJcblxyXG5pbXBvcnQgeyBGb250U2l6ZSB9IGZyb20gJy4uLy4uL3N0eWxlcy90ZXh0LXNpemUuZXh0ZW5zaW9uJztcclxuXHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXRleHQtZWRpdG9yJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG5cclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBDZGtEcmFnLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgQ29udGVudGVkaXRhYmxlVmFsdWVBY2Nlc3NvclxyXG4gIF0sXHJcblxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50LmNzcyddLFxyXG4gIGhvc3Q6IHsgJ1tzdHlsZS5kaXNwbGF5XSc6ICdpc1JURSA/IFwiXCIgOiBcIm5vbmVcIicgfVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFRleHRFZGl0b3JDb21wb25lbnRcclxuICBpbXBsZW1lbnRzXHJcbiAgT25EZXN0cm95LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KClcclxuICB2YWx1ZTogc3RyaW5nID1cclxuICAgICc8cD5IZWxsbyB0aGlzIGlzIHBhbGFzaCBtYWtoaWphPC9wPic7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHZhbHVlQ2hhbmdlID1cclxuICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGVkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaXNSVEU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlY3Rpb25JZD86IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBsYWJlbD86IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICB0eXBlPzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGlucHV0VGV4dEluZGV4PzogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGl0ZW1JbmRleD86IG51bWJlcjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZWRpdG9yQ29udGFpbmVyJylcclxuICBlZGl0b3JFbGVtZW50ITogRWxlbWVudFJlZjtcclxuXHJcbiAgcHJpdmF0ZSBwbGF0Zm9ybUlkID1cclxuICAgIGluamVjdChQTEFURk9STV9JRCk7XHJcblxyXG4gIHByaXZhdGUgc2FuaXRpemVyID1cclxuICAgIGluamVjdChEb21TYW5pdGl6ZXIpO1xyXG5cclxuICBwcml2YXRlIF9ldmVudFNlcnZpY2UgPVxyXG4gICAgaW5qZWN0KEV2ZW50c1NlcnZpY2UpO1xyXG5cclxuICBlZGl0b3I6IGFueTtcclxuXHJcbiAgc2FmZUh0bWwhOiBTYWZlSHRtbDtcclxuXHJcbiAgc2VsZWN0ZWRGb250U2l6ZSA9ICcnO1xyXG5cclxuICBzaG93VG9vbGJhciA9IGZhbHNlO1xyXG5cclxuICB0b29sYmFyWCA9IDA7XHJcblxyXG4gIHRvb2xiYXJZID0gMTAwO1xyXG5cclxuICBzZWxlY3RlZENvbG9yID0gJyMwMDAwMDAnO1xyXG5cclxuICBwcmltYXJ5Q29sb3IgPSAnIzAwMDAwMCc7XHJcblxyXG4gIHNlY29uZGFyeUNvbG9yID0gJyNmZjAwMDAnO1xyXG5cclxuICBpc0NvbG9yUGlja2VyT3BlbiA9IGZhbHNlO1xyXG5cclxuICBzZWxlY3RlZENvbG9yVHlwZTpcclxuICAgICdTT0xJRCcgfCAnR1JBRElFTlQnID0gJ1NPTElEJztcclxuXHJcbiAgc2F2ZWRTZWxlY3Rpb246IGFueSA9IG51bGw7XHJcblxyXG4gIGlzRm9udFNpemVNZW51T3BlbiA9IGZhbHNlO1xyXG5cclxuICB0b29sYmFyRGF0YTogYW55ID0ge1xyXG4gICAgc2VsZWN0ZWRTaXplOiAnJ1xyXG4gIH07XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWyd2YWx1ZSddKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlU2FmZUh0bWwoKTtcclxuICAgICAgaWYgKHRoaXMuZWRpdG9yICYmICFjaGFuZ2VzWyd2YWx1ZSddLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEh0bWwgPSB0aGlzLmVkaXRvci5nZXRIVE1MKCk7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRIdG1sICE9PSB0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLmVkaXRvci5jb21tYW5kcy5zZXRDb250ZW50KHRoaXMudmFsdWUgfHwgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVNhZmVIdG1sKCk7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmVkaXRhYmxlICYmXHJcbiAgICAgIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZClcclxuICAgICkge1xyXG5cclxuICAgICAgYXdhaXQgdGhpcy5pbml0aWFsaXplRWRpdG9yKCk7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5lZGl0b3IgJiZcclxuICAgICAgaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKVxyXG4gICAgKSB7XHJcblxyXG4gICAgICB0aGlzLmVkaXRvci5kZXN0cm95KCk7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHVwZGF0ZVNhZmVIdG1sKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2FmZUh0bWwgPVxyXG4gICAgICB0aGlzLnNhbml0aXplclxyXG4gICAgICAgIC5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChcclxuICAgICAgICAgIHRoaXMudmFsdWUgfHwgJydcclxuICAgICAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXRpYWxpemVFZGl0b3IoKTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG4gICAgaWYgKCF0aGlzLmVkaXRvckVsZW1lbnQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB7IEVkaXRvciB9ID1cclxuICAgICAgYXdhaXQgaW1wb3J0KCdAdGlwdGFwL2NvcmUnKTtcclxuXHJcbiAgICBjb25zdCBTdGFydGVyS2l0ID1cclxuICAgICAgKGF3YWl0IGltcG9ydCgnQHRpcHRhcC9zdGFydGVyLWtpdCcpKS5kZWZhdWx0O1xyXG5cclxuICAgIGNvbnN0IFRleHRTdHlsZSA9XHJcbiAgICAgIChhd2FpdCBpbXBvcnQoJ0B0aXB0YXAvZXh0ZW5zaW9uLXRleHQtc3R5bGUnKSlcclxuICAgICAgICAuVGV4dFN0eWxlO1xyXG5cclxuICAgIGNvbnN0IENvbG9yID1cclxuICAgICAgKGF3YWl0IGltcG9ydCgnQHRpcHRhcC9leHRlbnNpb24tY29sb3InKSlcclxuICAgICAgICAuZGVmYXVsdDtcclxuXHJcbiAgICBjb25zdCBVbmRlcmxpbmUgPVxyXG4gICAgICAoYXdhaXQgaW1wb3J0KCdAdGlwdGFwL2V4dGVuc2lvbi11bmRlcmxpbmUnKSlcclxuICAgICAgICAuZGVmYXVsdDtcclxuXHJcbiAgICBjb25zdCBUZXh0QWxpZ24gPVxyXG4gICAgICAoYXdhaXQgaW1wb3J0KCdAdGlwdGFwL2V4dGVuc2lvbi10ZXh0LWFsaWduJykpXHJcbiAgICAgICAgLmRlZmF1bHQ7XHJcblxyXG4gICAgdGhpcy5lZGl0b3IgPSBuZXcgRWRpdG9yKHtcclxuXHJcbiAgICAgIGVsZW1lbnQ6XHJcbiAgICAgICAgdGhpcy5lZGl0b3JFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXHJcblxyXG4gICAgICBlZGl0b3JQcm9wczoge1xyXG5cclxuICAgICAgICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgICBjbGFzczogJ1Byb3NlTWlycm9yJ1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICBleHRlbnNpb25zOiBbXHJcblxyXG4gICAgICAgIFN0YXJ0ZXJLaXQsXHJcblxyXG4gICAgICAgIFRleHRTdHlsZSxcclxuXHJcbiAgICAgICAgRm9udFNpemUsXHJcblxyXG4gICAgICAgIENvbG9yLFxyXG5cclxuICAgICAgICBHcmFkaWVudEV4dGVuc2lvbixcclxuXHJcbiAgICAgICAgVW5kZXJsaW5lLFxyXG5cclxuICAgICAgICBUZXh0QWxpZ24uY29uZmlndXJlKHtcclxuICAgICAgICAgIHR5cGVzOiBbXHJcbiAgICAgICAgICAgICdoZWFkaW5nJyxcclxuICAgICAgICAgICAgJ3BhcmFncmFwaCcsXHJcbiAgICAgICAgICAgICdsaXN0SXRlbSdcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSksXHJcblxyXG4gICAgICBdLFxyXG5cclxuICAgICAgY29udGVudDogdGhpcy52YWx1ZSxcclxuXHJcbiAgICAgIG9uU2VsZWN0aW9uVXBkYXRlOiAoKSA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0aW9uKCk7XHJcblxyXG4gICAgICB9LFxyXG5cclxuICAgICAgb25VcGRhdGU6ICh7IGVkaXRvciB9OiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgY29uc3QgaHRtbCA9XHJcbiAgICAgICAgICBlZGl0b3IuZ2V0SFRNTCgpO1xyXG5cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcclxuICAgICAgICAvLyAgICdFRElUT1IgSFRNTDonLFxyXG4gICAgICAgIC8vICAgaHRtbFxyXG4gICAgICAgIC8vICk7XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWUgPSBodG1sO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVNhZmVIdG1sKCk7XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChodG1sKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVFbXB0eUVkaXRvckNsYXNzKCk7XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVFbXB0eUVkaXRvckNsYXNzKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRW1wdHlFZGl0b3JDbGFzcygpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuZWRpdG9yRWxlbWVudClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGVkaXRvcldyYXBwZXIgPVxyXG4gICAgICB0aGlzLmVkaXRvckVsZW1lbnQubmF0aXZlRWxlbWVudFxyXG4gICAgICAgIC5jbG9zZXN0KCcuZWRpdGFibGUtdGV4dCcpO1xyXG5cclxuICAgIGlmICghZWRpdG9yV3JhcHBlcilcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmICh0aGlzLmVkaXRvcj8uaXNFbXB0eSkge1xyXG5cclxuICAgICAgZWRpdG9yV3JhcHBlci5jbGFzc0xpc3QuYWRkKFxyXG4gICAgICAgICdlZGl0b3ItZW1wdHknXHJcbiAgICAgICk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIGVkaXRvcldyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZShcclxuICAgICAgICAnZWRpdG9yLWVtcHR5J1xyXG4gICAgICApO1xyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBzYXZlU2VsZWN0aW9uKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2F2ZWRTZWxlY3Rpb24gPVxyXG4gICAgICB0aGlzLmVkaXRvci5zdGF0ZS5zZWxlY3Rpb247XHJcblxyXG4gIH1cclxuXHJcbiAgcmVzdG9yZVNlbGVjdGlvbigpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuc2F2ZWRTZWxlY3Rpb24pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAuc2V0VGV4dFNlbGVjdGlvbihcclxuICAgICAgICB0aGlzLnNhdmVkU2VsZWN0aW9uXHJcbiAgICAgIClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHN3aXRjaFRvU29saWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sb3JUeXBlID0gJ1NPTElEJztcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMucmVzdG9yZVNlbGVjdGlvbigpO1xyXG5cclxuICAgICAgdGhpcy5zaG93VG9vbGJhciA9IHRydWU7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgc3dpdGNoVG9HcmFkaWVudChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIHRoaXMuc2F2ZVNlbGVjdGlvbigpO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRDb2xvclR5cGUgPSAnR1JBRElFTlQnO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5yZXN0b3JlU2VsZWN0aW9uKCk7XHJcblxyXG4gICAgICB0aGlzLnNob3dUb29sYmFyID0gdHJ1ZTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBvcGVuQ29sb3JQaWNrZXIoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5pc0NvbG9yUGlja2VyT3BlbiA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5zYXZlU2VsZWN0aW9uKCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICAnZm9jdXMnLFxyXG4gICAgICAgIHRoaXMuaGFuZGxlV2luZG93Rm9jdXMsXHJcbiAgICAgICAgeyBvbmNlOiB0cnVlIH1cclxuICAgICAgKTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBoYW5kbGVXaW5kb3dGb2N1cyA9ICgpOiB2b2lkID0+IHtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuaXNDb2xvclBpY2tlck9wZW4gPSBmYWxzZTtcclxuXHJcbiAgICB9LCAzMDApO1xyXG5cclxuICB9XHJcblxyXG4gIGhhbmRsZVNlbGVjdGlvbigpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuZWRpdG9yKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgeyBmcm9tLCB0byB9ID1cclxuICAgICAgdGhpcy5lZGl0b3Iuc3RhdGUuc2VsZWN0aW9uO1xyXG5cclxuICAgIC8vIG5vIHNlbGVjdGlvblxyXG4gICAgaWYgKGZyb20gPT09IHRvKSB7XHJcblxyXG4gICAgICB0aGlzLnNob3dUb29sYmFyID0gZmFsc2U7XHJcblxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8vIHNlbGVjdGVkIHRleHRcclxuICAgIGNvbnN0IHNlbGVjdGVkVGV4dCA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLnN0YXRlLmRvYy50ZXh0QmV0d2VlbihcclxuICAgICAgICBmcm9tLFxyXG4gICAgICAgIHRvLFxyXG4gICAgICAgICcgJ1xyXG4gICAgICApO1xyXG5cclxuICAgIC8vIHJlbW92ZSBzcGFjZXMgKyBsaW5lIGJyZWFrc1xyXG4gICAgY29uc3QgdHJpbW1lZFRleHQgPVxyXG4gICAgICBzZWxlY3RlZFRleHQucmVwbGFjZSgvXFxzL2csICcnKTtcclxuXHJcbiAgICAvLyBpZiBvbmx5IHNwYWNlcyBzZWxlY3RlZFxyXG4gICAgaWYgKCF0cmltbWVkVGV4dC5sZW5ndGgpIHtcclxuXHJcbiAgICAgIHRoaXMuc2hvd1Rvb2xiYXIgPSBmYWxzZTtcclxuXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID1cclxuICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgIXNlbGVjdGlvbiB8fFxyXG4gICAgICBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMFxyXG4gICAgKSB7XHJcblxyXG4gICAgICB0aGlzLnNob3dUb29sYmFyID0gZmFsc2U7XHJcblxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJhbmdlID1cclxuICAgICAgc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcblxyXG4gICAgY29uc3QgcmVjdCA9XHJcbiAgICAgIHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgIGNvbnN0IGVkaXRvclJlY3QgPVxyXG4gICAgICB0aGlzLmVkaXRvckVsZW1lbnQubmF0aXZlRWxlbWVudFxyXG4gICAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICB0aGlzLnNob3dUb29sYmFyID0gdHJ1ZTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IHRvb2xiYXIgPVxyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgICAnLnRvb2xiYXInXHJcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgIGlmICghdG9vbGJhcilcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCB0b29sYmFyV2lkdGggPVxyXG4gICAgICAgIHRvb2xiYXIub2Zmc2V0V2lkdGg7XHJcblxyXG4gICAgICBsZXQgbGVmdCA9XHJcbiAgICAgICAgcmVjdC5sZWZ0IC1cclxuICAgICAgICBlZGl0b3JSZWN0LmxlZnQgK1xyXG4gICAgICAgIChyZWN0LndpZHRoIC8gMikgLVxyXG4gICAgICAgICh0b29sYmFyV2lkdGggLyAyKTtcclxuXHJcbiAgICAgIGNvbnN0IG1heExlZnQgPVxyXG4gICAgICAgIGVkaXRvclJlY3Qud2lkdGggLVxyXG4gICAgICAgIHRvb2xiYXJXaWR0aDtcclxuXHJcbiAgICAgIC8vIE5FVkVSIGFsbG93IG5lZ2F0aXZlXHJcbiAgICAgIGlmIChsZWZ0IDwgMCkge1xyXG5cclxuICAgICAgICBsZWZ0ID0gMDtcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE5FVkVSIGFsbG93IG92ZXJmbG93IHJpZ2h0XHJcbiAgICAgIGlmIChsZWZ0ID4gbWF4TGVmdCkge1xyXG5cclxuICAgICAgICBsZWZ0ID0gbWF4TGVmdDtcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGZhbGxiYWNrIHNhZmV0eVxyXG4gICAgICBsZWZ0ID0gTnVtYmVyKFxyXG4gICAgICAgIE1hdGgubWF4KFxyXG4gICAgICAgICAgMCxcclxuICAgICAgICAgIGxlZnRcclxuICAgICAgICApLnRvRml4ZWQoMClcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMudG9vbGJhclggPSBsZWZ0O1xyXG5cclxuICAgICAgdGhpcy50b29sYmFyWSA9XHJcbiAgICAgICAgcmVjdC5ib3R0b20gLVxyXG4gICAgICAgIGVkaXRvclJlY3QudG9wICtcclxuICAgICAgICAxMDtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICB0b2dnbGVCb2xkKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZWRpdG9yXHJcbiAgICAgIC5jaGFpbigpXHJcbiAgICAgIC5mb2N1cygpXHJcbiAgICAgIC50b2dnbGVCb2xkKClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHRvZ2dsZUl0YWxpYygpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAudG9nZ2xlSXRhbGljKClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHRvZ2dsZVVuZGVybGluZSgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAudG9nZ2xlVW5kZXJsaW5lKClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHRvZ2dsZU9yZGVyZWRMaXN0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZWRpdG9yXHJcbiAgICAgIC5jaGFpbigpXHJcbiAgICAgIC5mb2N1cygpXHJcbiAgICAgIC50b2dnbGVPcmRlcmVkTGlzdCgpXHJcbiAgICAgIC5ydW4oKTtcclxuXHJcbiAgfVxyXG5cclxuICB0b2dnbGVCdWxsZXRMaXN0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZWRpdG9yXHJcbiAgICAgIC5jaGFpbigpXHJcbiAgICAgIC5mb2N1cygpXHJcbiAgICAgIC50b2dnbGVCdWxsZXRMaXN0KClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHNldEFsaWduKFxyXG4gICAgYWxpZ25tZW50OlxyXG4gICAgICAnbGVmdCcgfFxyXG4gICAgICAnY2VudGVyJyB8XHJcbiAgICAgICdyaWdodCdcclxuICApOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAuc2V0VGV4dEFsaWduKGFsaWdubWVudClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIGNoYW5nZUNvbG9yKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMucmVzdG9yZVNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHsgZnJvbSwgdG8gfSA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLnN0YXRlLnNlbGVjdGlvbjtcclxuXHJcbiAgICBpZiAoZnJvbSA9PT0gdG8pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBleGlzdGluZ1N0eWxlcyA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLmdldEF0dHJpYnV0ZXMoXHJcbiAgICAgICAgJ3RleHRTdHlsZSdcclxuICAgICAgKTtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAuc2V0VGV4dFNlbGVjdGlvbih7XHJcbiAgICAgICAgZnJvbSxcclxuICAgICAgICB0b1xyXG4gICAgICB9KVxyXG4gICAgICAuc2V0TWFyaygndGV4dFN0eWxlJywge1xyXG5cclxuICAgICAgICAuLi5leGlzdGluZ1N0eWxlcyxcclxuXHJcbiAgICAgICAgY29sb3I6XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3IsXHJcblxyXG4gICAgICAgIGJhY2tncm91bmRJbWFnZTogbnVsbCxcclxuXHJcbiAgICAgICAgV2Via2l0QmFja2dyb3VuZENsaXA6IG51bGwsXHJcblxyXG4gICAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IG51bGxcclxuXHJcbiAgICAgIH0pXHJcbiAgICAgIC5ydW4oKTtcclxuXHJcbiAgfVxyXG5cclxuICBhcHBseUdyYWRpZW50KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMucmVzdG9yZVNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHsgZnJvbSwgdG8gfSA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLnN0YXRlLnNlbGVjdGlvbjtcclxuXHJcbiAgICBpZiAoZnJvbSA9PT0gdG8pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBleGlzdGluZ1N0eWxlcyA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLmdldEF0dHJpYnV0ZXMoXHJcbiAgICAgICAgJ3RleHRTdHlsZSdcclxuICAgICAgKTtcclxuXHJcbiAgICBjb25zdCBncmFkaWVudCA9IGBcclxuICAgIGxpbmVhci1ncmFkaWVudChcclxuICAgICAgdG8gcmlnaHQsXHJcbiAgICAgICR7dGhpcy5wcmltYXJ5Q29sb3J9LFxyXG4gICAgICAke3RoaXMuc2Vjb25kYXJ5Q29sb3J9XHJcbiAgICApXHJcbiAgYDtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAuc2V0VGV4dFNlbGVjdGlvbih7XHJcbiAgICAgICAgZnJvbSxcclxuICAgICAgICB0b1xyXG4gICAgICB9KVxyXG4gICAgICAuc2V0TWFyaygndGV4dFN0eWxlJywge1xyXG5cclxuICAgICAgICAuLi5leGlzdGluZ1N0eWxlcyxcclxuXHJcbiAgICAgICAgYmFja2dyb3VuZEltYWdlOlxyXG4gICAgICAgICAgZ3JhZGllbnQsXHJcblxyXG4gICAgICAgIGJhY2tncm91bmRDbGlwOlxyXG4gICAgICAgICAgJ3RleHQnLFxyXG5cclxuICAgICAgICBXZWJraXRCYWNrZ3JvdW5kQ2xpcDpcclxuICAgICAgICAgICd0ZXh0JyxcclxuXHJcbiAgICAgICAgY29sb3I6XHJcbiAgICAgICAgICAndHJhbnNwYXJlbnQnLFxyXG5cclxuICAgICAgICBXZWJraXRUZXh0RmlsbENvbG9yOlxyXG4gICAgICAgICAgJ3RyYW5zcGFyZW50JyxcclxuXHJcbiAgICAgICAgZGlzcGxheTpcclxuICAgICAgICAgICdpbmxpbmUtYmxvY2snXHJcblxyXG4gICAgICB9KVxyXG4gICAgICAucnVuKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxyXG4gIG9uSG9zdENsaWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmVkaXRhYmxlKSByZXR1cm47XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2Uub3BlblRleHRFZGl0b3IuZW1pdCh7XHJcbiAgICAgIHNlY3Rpb25JZDogdGhpcy5zZWN0aW9uSWQsXHJcbiAgICAgIGlucHV0VGV4dEluZGV4OiB0aGlzLmlucHV0VGV4dEluZGV4LFxyXG4gICAgICBpdGVtSW5kZXg6IHRoaXMuaXRlbUluZGV4LFxyXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbCxcclxuICAgICAgdHlwZTogdGhpcy50eXBlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFxyXG4gICAgJ2RvY3VtZW50Om1vdXNlZG93bicsXHJcbiAgICBbJyRldmVudCddXHJcbiAgKVxyXG5cclxuICBvbk1vdXNlRG93bihcclxuICAgIGV2ZW50OiBNb3VzZUV2ZW50XHJcbiAgKTogdm9pZCB7XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0ID1cclxuICAgICAgZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIGNvbnN0IGNsaWNrZWRUb29sYmFyID1cclxuICAgICAgISF0YXJnZXQuY2xvc2VzdCgnLnRvb2xiYXInKTtcclxuXHJcbiAgICBjb25zdCBjbGlja2VkRWRpdG9yID1cclxuICAgICAgISF0YXJnZXQuY2xvc2VzdCgnLmVkaXRhYmxlLXRleHQnKTtcclxuXHJcbiAgICAvLyBBbmd1bGFyIE1hdGVyaWFsIGRyb3Bkb3duXHJcbiAgICBjb25zdCBjbGlja2VkT3ZlcmxheSA9XHJcbiAgICAgICEhdGFyZ2V0LmNsb3Nlc3QoJy5jZGstb3ZlcmxheS1wYW5lJyk7XHJcblxyXG4gICAgLy8ga2VlcCB0b29sYmFyIG9wZW5cclxuICAgIGlmIChcclxuICAgICAgY2xpY2tlZFRvb2xiYXIgfHxcclxuICAgICAgY2xpY2tlZEVkaXRvciB8fFxyXG4gICAgICBjbGlja2VkT3ZlcmxheVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjbG9zZSBvbmx5IG91dHNpZGVcclxuICAgIHRoaXMuc2hvd1Rvb2xiYXIgPSBmYWxzZTtcclxuXHJcbiAgfVxyXG5cclxuICBjaGFuZ2VGb250U2l6ZShcclxuICAgIGZvbnRTaXplOiBzdHJpbmdcclxuICApOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkRm9udFNpemUgPVxyXG4gICAgICBmb250U2l6ZTtcclxuXHJcbiAgICBjb25zdCB7IGZyb20sIHRvIH0gPVxyXG4gICAgICB0aGlzLmVkaXRvci5zdGF0ZS5zZWxlY3Rpb247XHJcblxyXG4gICAgaWYgKGZyb20gPT09IHRvKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5lZGl0b3JcclxuICAgICAgLmNoYWluKClcclxuICAgICAgLmZvY3VzKClcclxuICAgICAgLnNldFRleHRTZWxlY3Rpb24oe1xyXG4gICAgICAgIGZyb20sXHJcbiAgICAgICAgdG9cclxuICAgICAgfSlcclxuICAgICAgLnNldE1hcmsoXHJcbiAgICAgICAgJ3RleHRTdHlsZScsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZm9udFNpemVcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG4iLCI8IS0tIHRleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIC0tPlxuXG48ZGl2IGNsYXNzPVwiZWRpdG9yLWNvbnRhaW5lclwiICpuZ0lmPVwiZWRpdGFibGU7IGVsc2Ugdmlld01vZGVcIj5cblxuICAgIDwhLS0gRkxPQVRJTkcgVE9PTEJBUiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwidG9vbGJhclwiICpuZ0lmPVwic2hvd1Rvb2xiYXJcIiBbc3R5bGUudG9wLnB4XT1cInRvb2xiYXJZXCIgW3N0eWxlLmxlZnQucHhdPVwidG9vbGJhclhcIiBjZGtEcmFnPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgZHJhZy1oYW5kbGUgdy1hdXRvXCIgY2RrRHJhZ0hhbmRsZT5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtZ3JpcC12ZXJ0aWNhbFwiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCIxMlwiIHI9XCIxXCIgLz5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiNVwiIHI9XCIxXCIgLz5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiMTlcIiByPVwiMVwiIC8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxMlwiIHI9XCIxXCIgLz5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjVcIiByPVwiMVwiIC8+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxOVwiIHI9XCIxXCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwiZm9udC1zaXplLWZpZWxkXCI+XG5cbiAgICAgICAgPG1hdC1zZWxlY3QgW3ZhbHVlXT1cInNlbGVjdGVkRm9udFNpemVcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cImNoYW5nZUZvbnRTaXplKCRldmVudC52YWx1ZSlcIiBkaXNhYmxlT3B0aW9uQ2VudGVyaW5nPlxuXG4gICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJcIj5cbiAgICAgICAgICAgIERlZmF1bHRcbiAgICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cImNsYW1wKDAuNzVyZW0sIDJ2dywgMXJlbSlcIj5cbiAgICAgICAgICAgIDE0XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJjbGFtcCgwLjc1cmVtLCAydncsIDEuMjVyZW0pXCI+XG4gICAgICAgICAgICAxNlxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiY2xhbXAoMXJlbSwgM3Z3LCAxLjVyZW0pXCI+XG4gICAgICAgICAgICAyMFxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiY2xhbXAoMS4yNXJlbSwgNHZ3LCAycmVtKVwiPlxuICAgICAgICAgICAgMjRcbiAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJjbGFtcCgycmVtLCA1dncsIDNyZW0pXCI+XG4gICAgICAgICAgICAzMlxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cImNsYW1wKDMuMXJlbSwgN3Z3LCA0LjVyZW0pXCI+XG4gICAgICAgICAgICA0OFxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPCEtLSBCT0xEIC0tPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgdy1hdXRvXCIgW2NsYXNzLnNlbGVjdGVkVG9vbF09XCJlZGl0b3I/LmlzQWN0aXZlKCdib2xkJylcIiAoY2xpY2spPVwidG9nZ2xlQm9sZCgpXCI+XG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgY2xhc3M9XCJsdWNpZGUgbHVjaWRlLWJvbGRcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTYgMTJoOWE0IDQgMCAwIDEgMCA4SDdhMSAxIDAgMCAxLTEtMVY1YTEgMSAwIDAgMSAxLTFoN2E0IDQgMCAwIDEgMCA4XCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPCEtLSBJVEFMSUMgLS0+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCB3LWF1dG9cIiBbY2xhc3Muc2VsZWN0ZWRUb29sXT1cImVkaXRvcj8uaXNBY3RpdmUoJ2l0YWxpYycpXCIgKGNsaWNrKT1cInRvZ2dsZUl0YWxpYygpXCI+XG5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtaXRhbGljXCI+XG4gICAgICAgICAgPGxpbmUgeDE9XCIxOVwiIHgyPVwiMTBcIiB5MT1cIjRcIiB5Mj1cIjRcIiAvPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMTRcIiB4Mj1cIjVcIiB5MT1cIjIwXCIgeTI9XCIyMFwiIC8+XG4gICAgICAgICAgPGxpbmUgeDE9XCIxNVwiIHgyPVwiOVwiIHkxPVwiNFwiIHkyPVwiMjBcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8IS0tIFVOREVSTElORSAtLT5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIHctYXV0b1wiIFtjbGFzcy5zZWxlY3RlZFRvb2xdPVwiZWRpdG9yPy5pc0FjdGl2ZSgndW5kZXJsaW5lJylcIiAoY2xpY2spPVwidG9nZ2xlVW5kZXJsaW5lKClcIj5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtdW5kZXJsaW5lXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk02IDR2NmE2IDYgMCAwIDAgMTIgMFY0XCIgLz5cbiAgICAgICAgICA8bGluZSB4MT1cIjRcIiB4Mj1cIjIwXCIgeTE9XCIyMFwiIHkyPVwiMjBcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8IS0tIEFMSUdOIExFRlQgLS0+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCB3LWF1dG9cIiAoY2xpY2spPVwic2V0QWxpZ24oJ2xlZnQnKVwiPlxuXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgY2xhc3M9XCJsdWNpZGUgbHVjaWRlLWFsaWduLWxlZnRcIj5cbiAgICAgICAgICA8bGluZSB4MT1cIjIxXCIgeDI9XCIzXCIgeTE9XCI2XCIgeTI9XCI2XCIgLz5cbiAgICAgICAgICA8bGluZSB4MT1cIjE1XCIgeDI9XCIzXCIgeTE9XCIxMlwiIHkyPVwiMTJcIiAvPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMTdcIiB4Mj1cIjNcIiB5MT1cIjE4XCIgeTI9XCIxOFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDwhLS0gQUxJR04gQ0VOVEVSIC0tPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgdy1hdXRvXCIgKGNsaWNrKT1cInNldEFsaWduKCdjZW50ZXInKVwiPlxuXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgY2xhc3M9XCJsdWNpZGUgbHVjaWRlLWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMjFcIiB4Mj1cIjNcIiB5MT1cIjZcIiB5Mj1cIjZcIiAvPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMTdcIiB4Mj1cIjdcIiB5MT1cIjEyXCIgeTI9XCIxMlwiIC8+XG4gICAgICAgICAgPGxpbmUgeDE9XCIxOVwiIHgyPVwiNVwiIHkxPVwiMThcIiB5Mj1cIjE4XCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPCEtLSBBTElHTiBSSUdIVCAtLT5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIHctYXV0b1wiIChjbGljayk9XCJzZXRBbGlnbigncmlnaHQnKVwiPlxuXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgY2xhc3M9XCJsdWNpZGUgbHVjaWRlLWFsaWduLXJpZ2h0XCI+XG4gICAgICAgICAgPGxpbmUgeDE9XCIyMVwiIHgyPVwiM1wiIHkxPVwiNlwiIHkyPVwiNlwiIC8+XG4gICAgICAgICAgPGxpbmUgeDE9XCIyMVwiIHgyPVwiOVwiIHkxPVwiMTJcIiB5Mj1cIjEyXCIgLz5cbiAgICAgICAgICA8bGluZSB4MT1cIjIxXCIgeDI9XCI3XCIgeTE9XCIxOFwiIHkyPVwiMThcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8IS0tIE9SREVSRUQgTElTVCAtLT5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIHctYXV0b1wiIChjbGljayk9XCJ0b2dnbGVPcmRlcmVkTGlzdCgpXCI+XG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgY2xhc3M9XCJsdWNpZGUgbHVjaWRlLWxpc3Qtb3JkZXJlZFwiPlxuICAgICAgICAgIDxsaW5lIHgxPVwiMTBcIiB4Mj1cIjIxXCIgeTE9XCI2XCIgeTI9XCI2XCIgLz5cbiAgICAgICAgICA8bGluZSB4MT1cIjEwXCIgeDI9XCIyMVwiIHkxPVwiMTJcIiB5Mj1cIjEyXCIgLz5cbiAgICAgICAgICA8bGluZSB4MT1cIjEwXCIgeDI9XCIyMVwiIHkxPVwiMThcIiB5Mj1cIjE4XCIgLz5cbiAgICAgICAgICA8cGF0aCBkPVwiTTQgNmgxdjRcIiAvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNCAxMGgyXCIgLz5cbiAgICAgICAgICA8cGF0aCBkPVwiTTYgMThINGMwLTEgMi0yIDItM3MtMS0xLjUtMi0xXCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDwhLS0gQlVMTEVUIExJU1QgLS0+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCB3LWF1dG9cIiAoY2xpY2spPVwidG9nZ2xlQnVsbGV0TGlzdCgpXCI+XG5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtbGlzdFwiPlxuICAgICAgICAgIDxsaW5lIHgxPVwiOFwiIHgyPVwiMjFcIiB5MT1cIjZcIiB5Mj1cIjZcIiAvPlxuICAgICAgICAgIDxsaW5lIHgxPVwiOFwiIHgyPVwiMjFcIiB5MT1cIjEyXCIgeTI9XCIxMlwiIC8+XG4gICAgICAgICAgPGxpbmUgeDE9XCI4XCIgeDI9XCIyMVwiIHkxPVwiMThcIiB5Mj1cIjE4XCIgLz5cbiAgICAgICAgICA8bGluZSB4MT1cIjNcIiB4Mj1cIjMuMDFcIiB5MT1cIjZcIiB5Mj1cIjZcIiAvPlxuICAgICAgICAgIDxsaW5lIHgxPVwiM1wiIHgyPVwiMy4wMVwiIHkxPVwiMTJcIiB5Mj1cIjEyXCIgLz5cbiAgICAgICAgICA8bGluZSB4MT1cIjNcIiB4Mj1cIjMuMDFcIiB5MT1cIjE4XCIgeTI9XCIxOFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDwhLS0gU09MSUQgLyBHUkFESUVOVCAtLT5cbiAgICAgIDwhLS0gU09MSUQgLyBHUkFESUVOVCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xvclR5cGVcIj5cblxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwic29saWQgdy1hdXRvXCIgW2NsYXNzLnNvbGlkQ29sb3JTZWxlY3RlZF09XCJzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ1NPTElEJ1wiXG4gICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIChjbGljayk9XCJzd2l0Y2hUb1NvbGlkKCRldmVudClcIj5cbiAgICAgICAgICBTb2xpZFxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZ3JhZGllbnQgdy1hdXRvXCIgW2NsYXNzLmdyYWRpZW50Q29sb3JTZWxlY3RlZF09XCJzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ0dSQURJRU5UJ1wiXG4gICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIChjbGljayk9XCJzd2l0Y2hUb0dyYWRpZW50KCRldmVudClcIj5cbiAgICAgICAgICBHcmFkaWVudFxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gU09MSUQgQ09MT1IgLS0+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCBjb2xvci1waWNrZXItYnRuIHctYXV0b1wiICpuZ0lmPVwic2VsZWN0ZWRDb2xvclR5cGUgPT09ICdTT0xJRCdcIj5cblxuICAgICAgICA8bWF0LWljb24+Zm9ybWF0X2NvbG9yX3RleHQ8L21hdC1pY29uPlxuXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiBjbGFzcz1cImhpZGRlbi1jb2xvci1waWNrZXJcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQ29sb3JcIiAoY2xpY2spPVwib3BlbkNvbG9yUGlja2VyKClcIlxuICAgICAgICAgIChpbnB1dCk9XCJjaGFuZ2VDb2xvcigpXCI+XG5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8IS0tIEdSQURJRU5UIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImdyYWRpZW50LXBpY2tlclwiICpuZ0lmPVwic2VsZWN0ZWRDb2xvclR5cGUgPT09ICdHUkFESUVOVCdcIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIFsobmdNb2RlbCldPVwicHJpbWFyeUNvbG9yXCIgKGNsaWNrKT1cIm9wZW5Db2xvclBpY2tlcigpXCIgKGlucHV0KT1cImFwcGx5R3JhZGllbnQoKVwiIC8+XG5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIFsobmdNb2RlbCldPVwic2Vjb25kYXJ5Q29sb3JcIiAoY2xpY2spPVwib3BlbkNvbG9yUGlja2VyKClcIiAoaW5wdXQpPVwiYXBwbHlHcmFkaWVudCgpXCIgLz5cblxuICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVElQVEFQIEVESVRPUiAtLT5cbiAgICA8ZGl2ICNlZGl0b3JDb250YWluZXIgY2xhc3M9XCJlZGl0YWJsZS10ZXh0XCI+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjdmlld01vZGU+XG4gICAgPGRpdiBjbGFzcz1cInJlYWQtb25seS10ZXh0XCIgW2lubmVySFRNTF09XCJzYWZlSHRtbFwiPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPiJdfQ==
424
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUdQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2xCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUV6RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQXFCOUQs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d0JBQ1AsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLDRCQUE0QjtxQkFDN0IsUUFJSyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFOzhCQVVsRCxLQUFLO3NCQURKLEtBQUs7Z0JBS04sV0FBVztzQkFEVixNQUFNO2dCQUtQLFFBQVE7c0JBRFAsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixhQUFhO3NCQURaLFNBQVM7dUJBQUMsaUJBQWlCO2dCQWlsQjVCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxPQUFPO2dCQWlCckIsV0FBVztzQkFMVixZQUFZO3VCQUNYLG9CQUFvQjtvQkFDcEIsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBQTEFURk9STV9JRCxcclxuICBpbmplY3QsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29tbW9uTW9kdWxlLFxyXG4gIGlzUGxhdGZvcm1Ccm93c2VyXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5cclxuaW1wb3J0IHsgQ2RrRHJhZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5cclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuXHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5cclxuaW1wb3J0IHsgQ29udGVudGVkaXRhYmxlVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50ZWRpdGFibGUuZGlyZWN0aXZlJztcclxuXHJcbmltcG9ydCB7IEdyYWRpZW50RXh0ZW5zaW9uIH0gZnJvbSAnLi4vLi4vc3R5bGVzL2dyYWRpZW50LWV4dGVuc2lvbic7XHJcblxyXG5pbXBvcnQgeyBGb250U2l6ZSB9IGZyb20gJy4uLy4uL3N0eWxlcy90ZXh0LXNpemUuZXh0ZW5zaW9uJztcclxuXHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXRleHQtZWRpdG9yJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG5cclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBDZGtEcmFnLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgQ29udGVudGVkaXRhYmxlVmFsdWVBY2Nlc3NvclxyXG4gIF0sXHJcblxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50LmNzcyddLFxyXG4gIGhvc3Q6IHsgJ1tzdHlsZS5kaXNwbGF5XSc6ICdpc1JURSA/IFwiXCIgOiBcIm5vbmVcIicgfVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFRleHRFZGl0b3JDb21wb25lbnRcclxuICBpbXBsZW1lbnRzXHJcbiAgT25EZXN0cm95LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KClcclxuICB2YWx1ZTogc3RyaW5nID1cclxuICAgICc8cD5IZWxsbyB0aGlzIGlzIHBhbGFzaCBtYWtoaWphPC9wPic7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHZhbHVlQ2hhbmdlID1cclxuICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGVkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaXNSVEU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlY3Rpb25JZD86IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBsYWJlbD86IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICB0eXBlPzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGlucHV0VGV4dEluZGV4PzogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGl0ZW1JbmRleD86IG51bWJlcjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZWRpdG9yQ29udGFpbmVyJylcclxuICBlZGl0b3JFbGVtZW50ITogRWxlbWVudFJlZjtcclxuXHJcbiAgcHJpdmF0ZSBwbGF0Zm9ybUlkID1cclxuICAgIGluamVjdChQTEFURk9STV9JRCk7XHJcblxyXG4gIHByaXZhdGUgc2FuaXRpemVyID1cclxuICAgIGluamVjdChEb21TYW5pdGl6ZXIpO1xyXG5cclxuICBwcml2YXRlIF9ldmVudFNlcnZpY2UgPVxyXG4gICAgaW5qZWN0KEV2ZW50c1NlcnZpY2UpO1xyXG5cclxuICBlZGl0b3I6IGFueTtcclxuXHJcbiAgc2FmZUh0bWwhOiBTYWZlSHRtbDtcclxuXHJcbiAgc2VsZWN0ZWRGb250U2l6ZSA9ICcnO1xyXG5cclxuICBzaG93VG9vbGJhciA9IGZhbHNlO1xyXG5cclxuICB0b29sYmFyWCA9IDA7XHJcblxyXG4gIHRvb2xiYXJZID0gMTAwO1xyXG5cclxuICBzZWxlY3RlZENvbG9yID0gJyMwMDAwMDAnO1xyXG5cclxuICBwcmltYXJ5Q29sb3IgPSAnIzAwMDAwMCc7XHJcblxyXG4gIHNlY29uZGFyeUNvbG9yID0gJyNmZjAwMDAnO1xyXG5cclxuICBpc0NvbG9yUGlja2VyT3BlbiA9IGZhbHNlO1xyXG5cclxuICBzZWxlY3RlZENvbG9yVHlwZTpcclxuICAgICdTT0xJRCcgfCAnR1JBRElFTlQnID0gJ1NPTElEJztcclxuXHJcbiAgc2F2ZWRTZWxlY3Rpb246IGFueSA9IG51bGw7XHJcblxyXG4gIGlzRm9udFNpemVNZW51T3BlbiA9IGZhbHNlO1xyXG5cclxuICB0b29sYmFyRGF0YTogYW55ID0ge1xyXG4gICAgc2VsZWN0ZWRTaXplOiAnJ1xyXG4gIH07XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWyd2YWx1ZSddKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlU2FmZUh0bWwoKTtcclxuICAgICAgaWYgKHRoaXMuZWRpdG9yICYmICFjaGFuZ2VzWyd2YWx1ZSddLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEh0bWwgPSB0aGlzLmVkaXRvci5nZXRIVE1MKCk7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRIdG1sICE9PSB0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLmVkaXRvci5jb21tYW5kcy5zZXRDb250ZW50KHRoaXMudmFsdWUgfHwgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVNhZmVIdG1sKCk7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmVkaXRhYmxlICYmXHJcbiAgICAgIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZClcclxuICAgICkge1xyXG5cclxuICAgICAgYXdhaXQgdGhpcy5pbml0aWFsaXplRWRpdG9yKCk7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5lZGl0b3IgJiZcclxuICAgICAgaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKVxyXG4gICAgKSB7XHJcblxyXG4gICAgICB0aGlzLmVkaXRvci5kZXN0cm95KCk7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHVwZGF0ZVNhZmVIdG1sKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2FmZUh0bWwgPVxyXG4gICAgICB0aGlzLnNhbml0aXplclxyXG4gICAgICAgIC5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChcclxuICAgICAgICAgIHRoaXMudmFsdWUgfHwgJydcclxuICAgICAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXRpYWxpemVFZGl0b3IoKTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG4gICAgaWYgKCF0aGlzLmVkaXRvckVsZW1lbnQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB7IEVkaXRvciB9ID1cclxuICAgICAgYXdhaXQgaW1wb3J0KCdAdGlwdGFwL2NvcmUnKTtcclxuXHJcbiAgICBjb25zdCBTdGFydGVyS2l0ID1cclxuICAgICAgKGF3YWl0IGltcG9ydCgnQHRpcHRhcC9zdGFydGVyLWtpdCcpKS5kZWZhdWx0O1xyXG5cclxuICAgIGNvbnN0IFRleHRTdHlsZSA9XHJcbiAgICAgIChhd2FpdCBpbXBvcnQoJ0B0aXB0YXAvZXh0ZW5zaW9uLXRleHQtc3R5bGUnKSlcclxuICAgICAgICAuVGV4dFN0eWxlO1xyXG5cclxuICAgIGNvbnN0IENvbG9yID1cclxuICAgICAgKGF3YWl0IGltcG9ydCgnQHRpcHRhcC9leHRlbnNpb24tY29sb3InKSlcclxuICAgICAgICAuZGVmYXVsdDtcclxuXHJcbiAgICBjb25zdCBVbmRlcmxpbmUgPVxyXG4gICAgICAoYXdhaXQgaW1wb3J0KCdAdGlwdGFwL2V4dGVuc2lvbi11bmRlcmxpbmUnKSlcclxuICAgICAgICAuZGVmYXVsdDtcclxuXHJcbiAgICBjb25zdCBUZXh0QWxpZ24gPVxyXG4gICAgICAoYXdhaXQgaW1wb3J0KCdAdGlwdGFwL2V4dGVuc2lvbi10ZXh0LWFsaWduJykpXHJcbiAgICAgICAgLmRlZmF1bHQ7XHJcblxyXG4gICAgdGhpcy5lZGl0b3IgPSBuZXcgRWRpdG9yKHtcclxuXHJcbiAgICAgIGVsZW1lbnQ6XHJcbiAgICAgICAgdGhpcy5lZGl0b3JFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXHJcblxyXG4gICAgICBlZGl0b3JQcm9wczoge1xyXG5cclxuICAgICAgICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgICBjbGFzczogJ1Byb3NlTWlycm9yJ1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICBleHRlbnNpb25zOiBbXHJcblxyXG4gICAgICAgIFN0YXJ0ZXJLaXQsXHJcblxyXG4gICAgICAgIFRleHRTdHlsZSxcclxuXHJcbiAgICAgICAgRm9udFNpemUsXHJcblxyXG4gICAgICAgIENvbG9yLFxyXG5cclxuICAgICAgICBHcmFkaWVudEV4dGVuc2lvbixcclxuXHJcbiAgICAgICAgVW5kZXJsaW5lLFxyXG5cclxuICAgICAgICBUZXh0QWxpZ24uY29uZmlndXJlKHtcclxuICAgICAgICAgIHR5cGVzOiBbXHJcbiAgICAgICAgICAgICdoZWFkaW5nJyxcclxuICAgICAgICAgICAgJ3BhcmFncmFwaCcsXHJcbiAgICAgICAgICAgICdsaXN0SXRlbSdcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSksXHJcblxyXG4gICAgICBdLFxyXG5cclxuICAgICAgY29udGVudDogdGhpcy52YWx1ZSxcclxuXHJcbiAgICAgIG9uU2VsZWN0aW9uVXBkYXRlOiAoKSA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0aW9uKCk7XHJcblxyXG4gICAgICB9LFxyXG5cclxuICAgICAgb25VcGRhdGU6ICh7IGVkaXRvciB9OiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgY29uc3QgaHRtbCA9XHJcbiAgICAgICAgICBlZGl0b3IuZ2V0SFRNTCgpO1xyXG5cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcclxuICAgICAgICAvLyAgICdFRElUT1IgSFRNTDonLFxyXG4gICAgICAgIC8vICAgaHRtbFxyXG4gICAgICAgIC8vICk7XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWUgPSBodG1sO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVNhZmVIdG1sKCk7XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChodG1sKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVFbXB0eUVkaXRvckNsYXNzKCk7XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVFbXB0eUVkaXRvckNsYXNzKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRW1wdHlFZGl0b3JDbGFzcygpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuZWRpdG9yRWxlbWVudClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGVkaXRvcldyYXBwZXIgPVxyXG4gICAgICB0aGlzLmVkaXRvckVsZW1lbnQubmF0aXZlRWxlbWVudFxyXG4gICAgICAgIC5jbG9zZXN0KCcuZWRpdGFibGUtdGV4dCcpO1xyXG5cclxuICAgIGlmICghZWRpdG9yV3JhcHBlcilcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmICh0aGlzLmVkaXRvcj8uaXNFbXB0eSkge1xyXG5cclxuICAgICAgZWRpdG9yV3JhcHBlci5jbGFzc0xpc3QuYWRkKFxyXG4gICAgICAgICdlZGl0b3ItZW1wdHknXHJcbiAgICAgICk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIGVkaXRvcldyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZShcclxuICAgICAgICAnZWRpdG9yLWVtcHR5J1xyXG4gICAgICApO1xyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBzYXZlU2VsZWN0aW9uKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2F2ZWRTZWxlY3Rpb24gPVxyXG4gICAgICB0aGlzLmVkaXRvci5zdGF0ZS5zZWxlY3Rpb247XHJcblxyXG4gIH1cclxuXHJcbiAgcmVzdG9yZVNlbGVjdGlvbigpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuc2F2ZWRTZWxlY3Rpb24pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAuc2V0VGV4dFNlbGVjdGlvbihcclxuICAgICAgICB0aGlzLnNhdmVkU2VsZWN0aW9uXHJcbiAgICAgIClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHN3aXRjaFRvU29saWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICB0aGlzLnNhdmVTZWxlY3Rpb24oKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sb3JUeXBlID0gJ1NPTElEJztcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMucmVzdG9yZVNlbGVjdGlvbigpO1xyXG5cclxuICAgICAgdGhpcy5zaG93VG9vbGJhciA9IHRydWU7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgc3dpdGNoVG9HcmFkaWVudChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIHRoaXMuc2F2ZVNlbGVjdGlvbigpO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRDb2xvclR5cGUgPSAnR1JBRElFTlQnO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5yZXN0b3JlU2VsZWN0aW9uKCk7XHJcblxyXG4gICAgICB0aGlzLnNob3dUb29sYmFyID0gdHJ1ZTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBvcGVuQ29sb3JQaWNrZXIoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5pc0NvbG9yUGlja2VyT3BlbiA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5zYXZlU2VsZWN0aW9uKCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICAnZm9jdXMnLFxyXG4gICAgICAgIHRoaXMuaGFuZGxlV2luZG93Rm9jdXMsXHJcbiAgICAgICAgeyBvbmNlOiB0cnVlIH1cclxuICAgICAgKTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBoYW5kbGVXaW5kb3dGb2N1cyA9ICgpOiB2b2lkID0+IHtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuaXNDb2xvclBpY2tlck9wZW4gPSBmYWxzZTtcclxuXHJcbiAgICB9LCAzMDApO1xyXG5cclxuICB9XHJcblxyXG4gIGhhbmRsZVNlbGVjdGlvbigpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuZWRpdG9yKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgeyBmcm9tLCB0byB9ID1cclxuICAgICAgdGhpcy5lZGl0b3Iuc3RhdGUuc2VsZWN0aW9uO1xyXG5cclxuICAgIC8vIG5vIHNlbGVjdGlvblxyXG4gICAgaWYgKGZyb20gPT09IHRvKSB7XHJcblxyXG4gICAgICB0aGlzLnNob3dUb29sYmFyID0gZmFsc2U7XHJcblxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8vIHNlbGVjdGVkIHRleHRcclxuICAgIGNvbnN0IHNlbGVjdGVkVGV4dCA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLnN0YXRlLmRvYy50ZXh0QmV0d2VlbihcclxuICAgICAgICBmcm9tLFxyXG4gICAgICAgIHRvLFxyXG4gICAgICAgICcgJ1xyXG4gICAgICApO1xyXG5cclxuICAgIC8vIHJlbW92ZSBzcGFjZXMgKyBsaW5lIGJyZWFrc1xyXG4gICAgY29uc3QgdHJpbW1lZFRleHQgPVxyXG4gICAgICBzZWxlY3RlZFRleHQucmVwbGFjZSgvXFxzL2csICcnKTtcclxuXHJcbiAgICAvLyBpZiBvbmx5IHNwYWNlcyBzZWxlY3RlZFxyXG4gICAgaWYgKCF0cmltbWVkVGV4dC5sZW5ndGgpIHtcclxuXHJcbiAgICAgIHRoaXMuc2hvd1Rvb2xiYXIgPSBmYWxzZTtcclxuXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uID1cclxuICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgIXNlbGVjdGlvbiB8fFxyXG4gICAgICBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMFxyXG4gICAgKSB7XHJcblxyXG4gICAgICB0aGlzLnNob3dUb29sYmFyID0gZmFsc2U7XHJcblxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJhbmdlID1cclxuICAgICAgc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcblxyXG4gICAgY29uc3QgcmVjdCA9XHJcbiAgICAgIHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgIGNvbnN0IGVkaXRvclJlY3QgPVxyXG4gICAgICB0aGlzLmVkaXRvckVsZW1lbnQubmF0aXZlRWxlbWVudFxyXG4gICAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICB0aGlzLnNob3dUb29sYmFyID0gdHJ1ZTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IHRvb2xiYXIgPVxyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgICAnLnRvb2xiYXInXHJcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgIGlmICghdG9vbGJhcilcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCB0b29sYmFyV2lkdGggPVxyXG4gICAgICAgIHRvb2xiYXIub2Zmc2V0V2lkdGg7XHJcblxyXG4gICAgICBsZXQgbGVmdCA9XHJcbiAgICAgICAgcmVjdC5sZWZ0IC1cclxuICAgICAgICBlZGl0b3JSZWN0LmxlZnQgK1xyXG4gICAgICAgIChyZWN0LndpZHRoIC8gMikgLVxyXG4gICAgICAgICh0b29sYmFyV2lkdGggLyAyKTtcclxuXHJcbiAgICAgIGNvbnN0IG1heExlZnQgPVxyXG4gICAgICAgIGVkaXRvclJlY3Qud2lkdGggLVxyXG4gICAgICAgIHRvb2xiYXJXaWR0aDtcclxuXHJcbiAgICAgIC8vIE5FVkVSIGFsbG93IG5lZ2F0aXZlXHJcbiAgICAgIGlmIChsZWZ0IDwgMCkge1xyXG5cclxuICAgICAgICBsZWZ0ID0gMDtcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE5FVkVSIGFsbG93IG92ZXJmbG93IHJpZ2h0XHJcbiAgICAgIGlmIChsZWZ0ID4gbWF4TGVmdCkge1xyXG5cclxuICAgICAgICBsZWZ0ID0gbWF4TGVmdDtcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGZhbGxiYWNrIHNhZmV0eVxyXG4gICAgICBsZWZ0ID0gTnVtYmVyKFxyXG4gICAgICAgIE1hdGgubWF4KFxyXG4gICAgICAgICAgMCxcclxuICAgICAgICAgIGxlZnRcclxuICAgICAgICApLnRvRml4ZWQoMClcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMudG9vbGJhclggPSBsZWZ0O1xyXG5cclxuICAgICAgdGhpcy50b29sYmFyWSA9XHJcbiAgICAgICAgcmVjdC5ib3R0b20gLVxyXG4gICAgICAgIGVkaXRvclJlY3QudG9wICtcclxuICAgICAgICAxMDtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICB0b2dnbGVCb2xkKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZWRpdG9yXHJcbiAgICAgIC5jaGFpbigpXHJcbiAgICAgIC5mb2N1cygpXHJcbiAgICAgIC50b2dnbGVCb2xkKClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHRvZ2dsZUl0YWxpYygpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAudG9nZ2xlSXRhbGljKClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHRvZ2dsZVVuZGVybGluZSgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAudG9nZ2xlVW5kZXJsaW5lKClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHRvZ2dsZU9yZGVyZWRMaXN0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZWRpdG9yXHJcbiAgICAgIC5jaGFpbigpXHJcbiAgICAgIC5mb2N1cygpXHJcbiAgICAgIC50b2dnbGVPcmRlcmVkTGlzdCgpXHJcbiAgICAgIC5ydW4oKTtcclxuXHJcbiAgfVxyXG5cclxuICB0b2dnbGVCdWxsZXRMaXN0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZWRpdG9yXHJcbiAgICAgIC5jaGFpbigpXHJcbiAgICAgIC5mb2N1cygpXHJcbiAgICAgIC50b2dnbGVCdWxsZXRMaXN0KClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIHNldEFsaWduKFxyXG4gICAgYWxpZ25tZW50OlxyXG4gICAgICAnbGVmdCcgfFxyXG4gICAgICAnY2VudGVyJyB8XHJcbiAgICAgICdyaWdodCdcclxuICApOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAuc2V0VGV4dEFsaWduKGFsaWdubWVudClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG4gIGNoYW5nZUNvbG9yKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMucmVzdG9yZVNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHsgZnJvbSwgdG8gfSA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLnN0YXRlLnNlbGVjdGlvbjtcclxuXHJcbiAgICBpZiAoZnJvbSA9PT0gdG8pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBleGlzdGluZ1N0eWxlcyA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLmdldEF0dHJpYnV0ZXMoXHJcbiAgICAgICAgJ3RleHRTdHlsZSdcclxuICAgICAgKTtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAuc2V0VGV4dFNlbGVjdGlvbih7XHJcbiAgICAgICAgZnJvbSxcclxuICAgICAgICB0b1xyXG4gICAgICB9KVxyXG4gICAgICAuc2V0TWFyaygndGV4dFN0eWxlJywge1xyXG5cclxuICAgICAgICAuLi5leGlzdGluZ1N0eWxlcyxcclxuXHJcbiAgICAgICAgY29sb3I6XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3IsXHJcblxyXG4gICAgICAgIGJhY2tncm91bmRJbWFnZTogbnVsbCxcclxuXHJcbiAgICAgICAgV2Via2l0QmFja2dyb3VuZENsaXA6IG51bGwsXHJcblxyXG4gICAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IG51bGxcclxuXHJcbiAgICAgIH0pXHJcbiAgICAgIC5ydW4oKTtcclxuXHJcbiAgfVxyXG5cclxuICBhcHBseUdyYWRpZW50KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMucmVzdG9yZVNlbGVjdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHsgZnJvbSwgdG8gfSA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLnN0YXRlLnNlbGVjdGlvbjtcclxuXHJcbiAgICBpZiAoZnJvbSA9PT0gdG8pXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBleGlzdGluZ1N0eWxlcyA9XHJcbiAgICAgIHRoaXMuZWRpdG9yLmdldEF0dHJpYnV0ZXMoXHJcbiAgICAgICAgJ3RleHRTdHlsZSdcclxuICAgICAgKTtcclxuXHJcbiAgICBjb25zdCBncmFkaWVudCA9IGBcclxuICAgIGxpbmVhci1ncmFkaWVudChcclxuICAgICAgdG8gcmlnaHQsXHJcbiAgICAgICR7dGhpcy5wcmltYXJ5Q29sb3J9LFxyXG4gICAgICAke3RoaXMuc2Vjb25kYXJ5Q29sb3J9XHJcbiAgICApXHJcbiAgYDtcclxuXHJcbiAgICB0aGlzLmVkaXRvclxyXG4gICAgICAuY2hhaW4oKVxyXG4gICAgICAuZm9jdXMoKVxyXG4gICAgICAuc2V0VGV4dFNlbGVjdGlvbih7XHJcbiAgICAgICAgZnJvbSxcclxuICAgICAgICB0b1xyXG4gICAgICB9KVxyXG4gICAgICAuc2V0TWFyaygndGV4dFN0eWxlJywge1xyXG5cclxuICAgICAgICAuLi5leGlzdGluZ1N0eWxlcyxcclxuXHJcbiAgICAgICAgYmFja2dyb3VuZEltYWdlOlxyXG4gICAgICAgICAgZ3JhZGllbnQsXHJcblxyXG4gICAgICAgIGJhY2tncm91bmRDbGlwOlxyXG4gICAgICAgICAgJ3RleHQnLFxyXG5cclxuICAgICAgICBXZWJraXRCYWNrZ3JvdW5kQ2xpcDpcclxuICAgICAgICAgICd0ZXh0JyxcclxuXHJcbiAgICAgICAgY29sb3I6XHJcbiAgICAgICAgICAndHJhbnNwYXJlbnQnLFxyXG5cclxuICAgICAgICBXZWJraXRUZXh0RmlsbENvbG9yOlxyXG4gICAgICAgICAgJ3RyYW5zcGFyZW50JyxcclxuXHJcbiAgICAgICAgZGlzcGxheTpcclxuICAgICAgICAgICdpbmxpbmUtYmxvY2snXHJcblxyXG4gICAgICB9KVxyXG4gICAgICAucnVuKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxyXG4gIG9uSG9zdENsaWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmVkaXRhYmxlKSByZXR1cm47XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2Uub3BlblRleHRFZGl0b3IuZW1pdCh7XHJcbiAgICAgIHNlY3Rpb25JZDogdGhpcy5zZWN0aW9uSWQsXHJcbiAgICAgIGlucHV0VGV4dEluZGV4OiB0aGlzLmlucHV0VGV4dEluZGV4LFxyXG4gICAgICBpdGVtSW5kZXg6IHRoaXMuaXRlbUluZGV4LFxyXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbCxcclxuICAgICAgdHlwZTogdGhpcy50eXBlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFxyXG4gICAgJ2RvY3VtZW50Om1vdXNlZG93bicsXHJcbiAgICBbJyRldmVudCddXHJcbiAgKVxyXG5cclxuICBvbk1vdXNlRG93bihcclxuICAgIGV2ZW50OiBNb3VzZUV2ZW50XHJcbiAgKTogdm9pZCB7XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0ID1cclxuICAgICAgZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIGNvbnN0IGNsaWNrZWRUb29sYmFyID1cclxuICAgICAgISF0YXJnZXQuY2xvc2VzdCgnLnRvb2xiYXInKTtcclxuXHJcbiAgICBjb25zdCBjbGlja2VkRWRpdG9yID1cclxuICAgICAgISF0YXJnZXQuY2xvc2VzdCgnLmVkaXRhYmxlLXRleHQnKTtcclxuXHJcbiAgICAvLyBBbmd1bGFyIE1hdGVyaWFsIGRyb3Bkb3duXHJcbiAgICBjb25zdCBjbGlja2VkT3ZlcmxheSA9XHJcbiAgICAgICEhdGFyZ2V0LmNsb3Nlc3QoJy5jZGstb3ZlcmxheS1wYW5lJyk7XHJcblxyXG4gICAgLy8ga2VlcCB0b29sYmFyIG9wZW5cclxuICAgIGlmIChcclxuICAgICAgY2xpY2tlZFRvb2xiYXIgfHxcclxuICAgICAgY2xpY2tlZEVkaXRvciB8fFxyXG4gICAgICBjbGlja2VkT3ZlcmxheVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjbG9zZSBvbmx5IG91dHNpZGVcclxuICAgIHRoaXMuc2hvd1Rvb2xiYXIgPSBmYWxzZTtcclxuXHJcbiAgfVxyXG5cclxuICBjaGFuZ2VGb250U2l6ZShcclxuICAgIGZvbnRTaXplOiBzdHJpbmdcclxuICApOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkRm9udFNpemUgPVxyXG4gICAgICBmb250U2l6ZTtcclxuXHJcbiAgICBjb25zdCB7IGZyb20sIHRvIH0gPVxyXG4gICAgICB0aGlzLmVkaXRvci5zdGF0ZS5zZWxlY3Rpb247XHJcblxyXG4gICAgaWYgKGZyb20gPT09IHRvKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5lZGl0b3JcclxuICAgICAgLmNoYWluKClcclxuICAgICAgLmZvY3VzKClcclxuICAgICAgLnNldFRleHRTZWxlY3Rpb24oe1xyXG4gICAgICAgIGZyb20sXHJcbiAgICAgICAgdG9cclxuICAgICAgfSlcclxuICAgICAgLnNldE1hcmsoXHJcbiAgICAgICAgJ3RleHRTdHlsZScsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZm9udFNpemVcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgICAgLnJ1bigpO1xyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG4iLCI8IS0tIHRleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIC0tPlxyXG5cclxuPGRpdiBjbGFzcz1cImVkaXRvci1jb250YWluZXJcIiAqbmdJZj1cImVkaXRhYmxlOyBlbHNlIHZpZXdNb2RlXCI+XHJcblxyXG4gICAgPCEtLSBGTE9BVElORyBUT09MQkFSIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInRvb2xiYXJcIiAqbmdJZj1cInNob3dUb29sYmFyXCIgW3N0eWxlLnRvcC5weF09XCJ0b29sYmFyWVwiIFtzdHlsZS5sZWZ0LnB4XT1cInRvb2xiYXJYXCIgY2RrRHJhZz5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgZHJhZy1oYW5kbGUgdy1hdXRvXCIgY2RrRHJhZ0hhbmRsZT5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtZ3JpcC12ZXJ0aWNhbFwiPlxyXG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjEyXCIgcj1cIjFcIiAvPlxyXG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjVcIiByPVwiMVwiIC8+XHJcbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiMTlcIiByPVwiMVwiIC8+XHJcbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjEyXCIgcj1cIjFcIiAvPlxyXG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCI1XCIgcj1cIjFcIiAvPlxyXG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxOVwiIHI9XCIxXCIgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwiZm9udC1zaXplLWZpZWxkXCI+XHJcblxyXG4gICAgICAgIDxtYXQtc2VsZWN0IFt2YWx1ZV09XCJzZWxlY3RlZEZvbnRTaXplXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2VGb250U2l6ZSgkZXZlbnQudmFsdWUpXCIgZGlzYWJsZU9wdGlvbkNlbnRlcmluZz5cclxuXHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIlwiPlxyXG4gICAgICAgICAgICBEZWZhdWx0XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcblxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJjbGFtcCgwLjc1cmVtLCAydncsIDFyZW0pXCI+XHJcbiAgICAgICAgICAgIDE0XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcblxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJjbGFtcCgwLjc1cmVtLCAydncsIDEuMjVyZW0pXCI+XHJcbiAgICAgICAgICAgIDE2XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcblxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJjbGFtcCgxcmVtLCAzdncsIDEuNXJlbSlcIj5cclxuICAgICAgICAgICAgMjBcclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuXHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cImNsYW1wKDEuMjVyZW0sIDR2dywgMnJlbSlcIj5cclxuICAgICAgICAgICAgMjRcclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiY2xhbXAoMnJlbSwgNXZ3LCAzcmVtKVwiPlxyXG4gICAgICAgICAgICAzMlxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJjbGFtcCgzLjFyZW0sIDd2dywgNC41cmVtKVwiPlxyXG4gICAgICAgICAgICA0OFxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuXHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwhLS0gQk9MRCAtLT5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgdy1hdXRvXCIgW2NsYXNzLnNlbGVjdGVkVG9vbF09XCJlZGl0b3I/LmlzQWN0aXZlKCdib2xkJylcIiAoY2xpY2spPVwidG9nZ2xlQm9sZCgpXCI+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsdWNpZGUgbHVjaWRlLWJvbGRcIj5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxMmg5YTQgNCAwIDAgMSAwIDhIN2ExIDEgMCAwIDEtMS0xVjVhMSAxIDAgMCAxIDEtMWg3YTQgNCAwIDAgMSAwIDhcIiAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDwhLS0gSVRBTElDIC0tPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCB3LWF1dG9cIiBbY2xhc3Muc2VsZWN0ZWRUb29sXT1cImVkaXRvcj8uaXNBY3RpdmUoJ2l0YWxpYycpXCIgKGNsaWNrKT1cInRvZ2dsZUl0YWxpYygpXCI+XHJcblxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1pdGFsaWNcIj5cclxuICAgICAgICAgIDxsaW5lIHgxPVwiMTlcIiB4Mj1cIjEwXCIgeTE9XCI0XCIgeTI9XCI0XCIgLz5cclxuICAgICAgICAgIDxsaW5lIHgxPVwiMTRcIiB4Mj1cIjVcIiB5MT1cIjIwXCIgeTI9XCIyMFwiIC8+XHJcbiAgICAgICAgICA8bGluZSB4MT1cIjE1XCIgeDI9XCI5XCIgeTE9XCI0XCIgeTI9XCIyMFwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgPCEtLSBVTkRFUkxJTkUgLS0+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIHctYXV0b1wiIFtjbGFzcy5zZWxlY3RlZFRvb2xdPVwiZWRpdG9yPy5pc0FjdGl2ZSgndW5kZXJsaW5lJylcIiAoY2xpY2spPVwidG9nZ2xlVW5kZXJsaW5lKClcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtdW5kZXJsaW5lXCI+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTYgNHY2YTYgNiAwIDAgMCAxMiAwVjRcIiAvPlxyXG4gICAgICAgICAgPGxpbmUgeDE9XCI0XCIgeDI9XCIyMFwiIHkxPVwiMjBcIiB5Mj1cIjIwXCIgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8IS0tIEFMSUdOIExFRlQgLS0+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJ0b29sIHctYXV0b1wiIChjbGljayk9XCJzZXRBbGlnbignbGVmdCcpXCI+XHJcblxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1hbGlnbi1sZWZ0XCI+XHJcbiAgICAgICAgICA8bGluZSB4MT1cIjIxXCIgeDI9XCIzXCIgeTE9XCI2XCIgeTI9XCI2XCIgLz5cclxuICAgICAgICAgIDxsaW5lIHgxPVwiMTVcIiB4Mj1cIjNcIiB5MT1cIjEyXCIgeTI9XCIxMlwiIC8+XHJcbiAgICAgICAgICA8bGluZSB4MT1cIjE3XCIgeDI9XCIzXCIgeTE9XCIxOFwiIHkyPVwiMThcIiAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDwhLS0gQUxJR04gQ0VOVEVSIC0tPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCB3LWF1dG9cIiAoY2xpY2spPVwic2V0QWxpZ24oJ2NlbnRlcicpXCI+XHJcblxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgIDxsaW5lIHgxPVwiMjFcIiB4Mj1cIjNcIiB5MT1cIjZcIiB5Mj1cIjZcIiAvPlxyXG4gICAgICAgICAgPGxpbmUgeDE9XCIxN1wiIHgyPVwiN1wiIHkxPVwiMTJcIiB5Mj1cIjEyXCIgLz5cclxuICAgICAgICAgIDxsaW5lIHgxPVwiMTlcIiB4Mj1cIjVcIiB5MT1cIjE4XCIgeTI9XCIxOFwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgPCEtLSBBTElHTiBSSUdIVCAtLT5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgdy1hdXRvXCIgKGNsaWNrKT1cInNldEFsaWduKCdyaWdodCcpXCI+XHJcblxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1hbGlnbi1yaWdodFwiPlxyXG4gICAgICAgICAgPGxpbmUgeDE9XCIyMVwiIHgyPVwiM1wiIHkxPVwiNlwiIHkyPVwiNlwiIC8+XHJcbiAgICAgICAgICA8bGluZSB4MT1cIjIxXCIgeDI9XCI5XCIgeTE9XCIxMlwiIHkyPVwiMTJcIiAvPlxyXG4gICAgICAgICAgPGxpbmUgeDE9XCIyMVwiIHgyPVwiN1wiIHkxPVwiMThcIiB5Mj1cIjE4XCIgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8IS0tIE9SREVSRUQgTElTVCAtLT5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgdy1hdXRvXCIgKGNsaWNrKT1cInRvZ2dsZU9yZGVyZWRMaXN0KClcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtbGlzdC1vcmRlcmVkXCI+XHJcbiAgICAgICAgICA8bGluZSB4MT1cIjEwXCIgeDI9XCIyMVwiIHkxPVwiNlwiIHkyPVwiNlwiIC8+XHJcbiAgICAgICAgICA8bGluZSB4MT1cIjEwXCIgeDI9XCIyMVwiIHkxPVwiMTJcIiB5Mj1cIjEyXCIgLz5cclxuICAgICAgICAgIDxsaW5lIHgxPVwiMTBcIiB4Mj1cIjIxXCIgeTE9XCIxOFwiIHkyPVwiMThcIiAvPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk00IDZoMXY0XCIgLz5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNNCAxMGgyXCIgLz5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxOEg0YzAtMSAyLTIgMi0zcy0xLTEuNS0yLTFcIiAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPCEtLSBCVUxMRVQgTElTVCAtLT5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvb2wgdy1hdXRvXCIgKGNsaWNrKT1cInRvZ2dsZUJ1bGxldExpc3QoKVwiPlxyXG5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtbGlzdFwiPlxyXG4gICAgICAgICAgPGxpbmUgeDE9XCI4XCIgeDI9XCIyMVwiIHkxPVwiNlwiIHkyPVwiNlwiIC8+XHJcbiAgICAgICAgICA8bGluZSB4MT1cIjhcIiB4Mj1cIjIxXCIgeTE9XCIxMlwiIHkyPVwiMTJcIiAvPlxyXG4gICAgICAgICAgPGxpbmUgeDE9XCI4XCIgeDI9XCIyMVwiIHkxPVwiMThcIiB5Mj1cIjE4XCIgLz5cclxuICAgICAgICAgIDxsaW5lIHgxPVwiM1wiIHgyPVwiMy4wMVwiIHkxPVwiNlwiIHkyPVwiNlwiIC8+XHJcbiAgICAgICAgICA8bGluZSB4MT1cIjNcIiB4Mj1cIjMuMDFcIiB5MT1cIjEyXCIgeTI9XCIxMlwiIC8+XHJcbiAgICAgICAgICA8bGluZSB4MT1cIjNcIiB4Mj1cIjMuMDFcIiB5MT1cIjE4XCIgeTI9XCIxOFwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgPCEtLSBTT0xJRCAvIEdSQURJRU5UIC0tPlxyXG4gICAgICA8IS0tIFNPTElEIC8gR1JBRElFTlQgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xvclR5cGVcIj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNvbGlkIHctYXV0b1wiIFtjbGFzcy5zb2xpZENvbG9yU2VsZWN0ZWRdPVwic2VsZWN0ZWRDb2xvclR5cGUgPT09ICdTT0xJRCdcIlxyXG4gICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIChjbGljayk9XCJzd2l0Y2hUb1NvbGlkKCRldmVudClcIj5cclxuICAgICAgICAgIFNvbGlkXHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJncmFkaWVudCB3LWF1dG9cIiBbY2xhc3MuZ3JhZGllbnRDb2xvclNlbGVjdGVkXT1cInNlbGVjdGVkQ29sb3JUeXBlID09PSAnR1JBRElFTlQnXCJcclxuICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiAoY2xpY2spPVwic3dpdGNoVG9HcmFkaWVudCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICBHcmFkaWVudFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFNPTElEIENPTE9SIC0tPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwidG9vbCBjb2xvci1waWNrZXItYnRuIHctYXV0b1wiICpuZ0lmPVwic2VsZWN0ZWRDb2xvclR5cGUgPT09ICdTT0xJRCdcIj5cclxuXHJcbiAgICAgICAgPG1hdC1pY29uPmZvcm1hdF9jb2xvcl90ZXh0PC9tYXQtaWNvbj5cclxuXHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIGNsYXNzPVwiaGlkZGVuLWNvbG9yLXBpY2tlclwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDb2xvclwiIChjbGljayk9XCJvcGVuQ29sb3JQaWNrZXIoKVwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwiY2hhbmdlQ29sb3IoKVwiPlxyXG5cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8IS0tIEdSQURJRU5UIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JhZGllbnQtcGlja2VyXCIgKm5nSWY9XCJzZWxlY3RlZENvbG9yVHlwZSA9PT0gJ0dSQURJRU5UJ1wiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiBbKG5nTW9kZWwpXT1cInByaW1hcnlDb2xvclwiIChjbGljayk9XCJvcGVuQ29sb3JQaWNrZXIoKVwiIChpbnB1dCk9XCJhcHBseUdyYWRpZW50KClcIiAvPlxyXG5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgWyhuZ01vZGVsKV09XCJzZWNvbmRhcnlDb2xvclwiIChjbGljayk9XCJvcGVuQ29sb3JQaWNrZXIoKVwiIChpbnB1dCk9XCJhcHBseUdyYWRpZW50KClcIiAvPlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBUSVBUQVAgRURJVE9SIC0tPlxyXG4gICAgPGRpdiAjZWRpdG9yQ29udGFpbmVyIGNsYXNzPVwiZWRpdGFibGUtdGV4dFwiPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG4gIDxuZy10ZW1wbGF0ZSAjdmlld01vZGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmVhZC1vbmx5LXRleHRcIiBbaW5uZXJIVE1MXT1cInNhZmVIdG1sXCI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPiJdfQ==
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
32
32
  name: 'formateAmount',
33
33
  }]
34
34
  }] });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1vdW50LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3BpcGVzL2Ftb3VudC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDOztBQWFsRCxNQUFNLE9BQU8sYUFBYTtJQUV0QixTQUFTLENBQUMsS0FBc0IsRUFBRSxTQUF3QixLQUFLO1FBRTNELElBQUksTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ2xCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBZ0IsRUFBRSxDQUFDO2dCQUNoQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2pELENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUFnQixFQUFFLENBQUM7Z0JBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDRCQUFlLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDakQsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVCLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBa0IsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNuRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDOytHQW5CUSxhQUFhOzZHQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBSnpCLElBQUk7bUJBQUM7b0JBQ0osVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSxlQUFlO2lCQUN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5cclxuY29uc3QgZW51bSBBTU9VTlQge1xyXG4gICAgTEFLSFMgPSAxMDAwMDAsXHJcbiAgICBDUk9SRSA9IDEwMDAwMDAwLFxyXG4gICAgTUlMTElPTiA9IDEwMDAwMDBcclxufVxyXG5cclxuQFBpcGUoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgbmFtZTogJ2Zvcm1hdGVBbW91bnQnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybWF0ZUFtb3VudCBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBzeXN0ZW06IFwiSU5EXCIgfCBcIklOVFwiID0gXCJJTkRcIik6IHN0cmluZyB7XHJcblxyXG4gICAgICAgIGlmIChzeXN0ZW0gPT0gXCJJTkRcIikge1xyXG4gICAgICAgICAgICBpZiAoTnVtYmVyKHZhbHVlKSA+PSBBTU9VTlQuQ1JPUkUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoTnVtYmVyKHZhbHVlKSAvIEFNT1VOVC5DUk9SRSkgKyAnY3InO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKE51bWJlcih2YWx1ZSkgPj0gQU1PVU5ULkxBS0hTKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKE51bWJlcih2YWx1ZSkgLyBBTU9VTlQuTEFLSFMpICsgJ2xrJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKE51bWJlcih2YWx1ZSkgPj0gQU1PVU5ULk1JTExJT04pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoTnVtYmVyKHZhbHVlKSAvIEFNT1VOVC5NSUxMSU9OKSArICdtbic7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1vdW50LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3BpcGVzL2Ftb3VudC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDOztBQWFsRCxNQUFNLE9BQU8sYUFBYTtJQUV0QixTQUFTLENBQUMsS0FBc0IsRUFBRSxTQUF3QixLQUFLO1FBRTNELElBQUksTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ2xCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBZ0IsRUFBRSxDQUFDO2dCQUNoQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2pELENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUFnQixFQUFFLENBQUM7Z0JBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDRCQUFlLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDakQsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVCLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBa0IsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNuRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDOytHQW5CUSxhQUFhOzZHQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBSnpCLElBQUk7bUJBQUM7b0JBQ0osVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSxlQUFlO2lCQUN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuY29uc3QgZW51bSBBTU9VTlQge1xuICAgIExBS0hTID0gMTAwMDAwLFxuICAgIENST1JFID0gMTAwMDAwMDAsXG4gICAgTUlMTElPTiA9IDEwMDAwMDBcbn1cblxuQFBpcGUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBuYW1lOiAnZm9ybWF0ZUFtb3VudCcsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1hdGVBbW91bnQgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBzeXN0ZW06IFwiSU5EXCIgfCBcIklOVFwiID0gXCJJTkRcIik6IHN0cmluZyB7XG5cbiAgICAgICAgaWYgKHN5c3RlbSA9PSBcIklORFwiKSB7XG4gICAgICAgICAgICBpZiAoTnVtYmVyKHZhbHVlKSA+PSBBTU9VTlQuQ1JPUkUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKE51bWJlcih2YWx1ZSkgLyBBTU9VTlQuQ1JPUkUpICsgJ2NyJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKHZhbHVlKSA+PSBBTU9VTlQuTEFLSFMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKE51bWJlcih2YWx1ZSkgLyBBTU9VTlQuTEFLSFMpICsgJ2xrJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoTnVtYmVyKHZhbHVlKSA+PSBBTU9VTlQuTUlMTElPTikge1xuICAgICAgICAgICAgICAgIHJldHVybiAoTnVtYmVyKHZhbHVlKSAvIEFNT1VOVC5NSUxMSU9OKSArICdtbic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufSJdfQ==
@@ -13,12 +13,12 @@ export class AddNewSectionComponent {
13
13
  let dialog = this.dialog.open(AddSectionComponent, { panelClass: "add-section", data: { status: true, index: this.index, position: "ABOVE" } });
14
14
  }
15
15
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddNewSectionComponent, deps: [{ token: i1.EventsService }, { token: i2.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AddNewSectionComponent, isStandalone: true, selector: "simpo-add-new-section", inputs: { index: "index" }, ngImport: i0, template: "<section class=\"main_section\">\r\n <div>\r\n <div #displayElements></div>\r\n </div>\r\n <section class=\"add_btn\" (click)=\"addSection()\">\r\n <mat-icon>add</mat-icon>\r\n <span style=\"margin-left: 5px;\">Add Section</span>\r\n </section>\r\n</section>\r\n", styles: [".main_section{width:100%;padding:2% 0;overflow-y:scroll}.main_section:hover{border:3px solid #025eb0!important}.add_btn{font-family:lexandReg;font-size:14px;color:#3f3b3b;font-style:normal;font-weight:400;display:flex;justify-content:center;align-items:center;height:150px;width:100%;cursor:pointer;font-size:20px;font-weight:600;color:#09c}.add_btn img{width:2%}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AddNewSectionComponent, isStandalone: true, selector: "simpo-add-new-section", inputs: { index: "index" }, ngImport: i0, template: "<section class=\"main_section\">\n <div>\n <div #displayElements></div>\n </div>\n <section class=\"add_btn\" (click)=\"addSection()\">\n <mat-icon>add</mat-icon>\n <span style=\"margin-left: 5px;\">Add Section</span>\n </section>\n</section>\n", styles: [".main_section{width:100%;padding:2% 0;overflow-y:scroll}.main_section:hover{border:3px solid #025eb0!important}.add_btn{font-family:lexandReg;font-size:14px;color:#3f3b3b;font-style:normal;font-weight:400;display:flex;justify-content:center;align-items:center;height:150px;width:100%;cursor:pointer;font-size:20px;font-weight:600;color:#09c}.add_btn img{width:2%}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
17
17
  }
18
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddNewSectionComponent, decorators: [{
19
19
  type: Component,
20
- args: [{ selector: 'simpo-add-new-section', standalone: true, imports: [MatIcon], template: "<section class=\"main_section\">\r\n <div>\r\n <div #displayElements></div>\r\n </div>\r\n <section class=\"add_btn\" (click)=\"addSection()\">\r\n <mat-icon>add</mat-icon>\r\n <span style=\"margin-left: 5px;\">Add Section</span>\r\n </section>\r\n</section>\r\n", styles: [".main_section{width:100%;padding:2% 0;overflow-y:scroll}.main_section:hover{border:3px solid #025eb0!important}.add_btn{font-family:lexandReg;font-size:14px;color:#3f3b3b;font-style:normal;font-weight:400;display:flex;justify-content:center;align-items:center;height:150px;width:100%;cursor:pointer;font-size:20px;font-weight:600;color:#09c}.add_btn img{width:2%}\n"] }]
20
+ args: [{ selector: 'simpo-add-new-section', standalone: true, imports: [MatIcon], template: "<section class=\"main_section\">\n <div>\n <div #displayElements></div>\n </div>\n <section class=\"add_btn\" (click)=\"addSection()\">\n <mat-icon>add</mat-icon>\n <span style=\"margin-left: 5px;\">Add Section</span>\n </section>\n</section>\n", styles: [".main_section{width:100%;padding:2% 0;overflow-y:scroll}.main_section:hover{border:3px solid #025eb0!important}.add_btn{font-family:lexandReg;font-size:14px;color:#3f3b3b;font-style:normal;font-weight:400;display:flex;justify-content:center;align-items:center;height:150px;width:100%;cursor:pointer;font-size:20px;font-weight:600;color:#09c}.add_btn img{width:2%}\n"] }]
21
21
  }], ctorParameters: () => [{ type: i1.EventsService }, { type: i2.MatDialog }], propDecorators: { index: [{
22
22
  type: Input
23
23
  }] } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW5ldy1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvYWRkLW5ldy1zZWN0aW9uL2FkZC1uZXctc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2FkZC1uZXctc2VjdGlvbi9hZGQtbmV3LXNlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7O0FBU3ZGLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFBb0IsYUFBNEIsRUFDdEMsTUFBa0I7UUFEUixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN0QyxXQUFNLEdBQU4sTUFBTSxDQUFZO0lBQzFCLENBQUM7SUFHSCxVQUFVO1FBQ1IsSUFBSSxNQUFNLEdBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUMsRUFBQyxVQUFVLEVBQUcsYUFBYSxFQUFFLElBQUksRUFBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBQyxFQUFFLENBQUMsQ0FBQTtJQUN0SixDQUFDOytHQVJVLHNCQUFzQjttR0FBdEIsc0JBQXNCLDZHQ2JuQywyUkFTQSx1YURBWSxPQUFPOzs0RkFJTixzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLE9BQU8sQ0FBQzswR0FRVCxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBZGRTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvYWRkLXNlY3Rpb24vYWRkLXNlY3Rpb24uY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tYWRkLW5ldy1zZWN0aW9uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtNYXRJY29uXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLW5ldy1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYWRkLW5ldy1zZWN0aW9uLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGROZXdTZWN0aW9uQ29tcG9uZW50IHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZyA6IE1hdERpYWxvZ1xyXG4gICl7fVxyXG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcclxuXHJcbiAgYWRkU2VjdGlvbigpe1xyXG4gICAgbGV0IGRpYWxvZyA6IGFueSA9IHRoaXMuZGlhbG9nLm9wZW4oQWRkU2VjdGlvbkNvbXBvbmVudCx7cGFuZWxDbGFzcyA6IFwiYWRkLXNlY3Rpb25cIiwgZGF0YSA6IHsgc3RhdHVzOiB0cnVlLCBpbmRleDogdGhpcy5pbmRleCwgcG9zaXRpb246IFwiQUJPVkVcIn0gfSlcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJtYWluX3NlY3Rpb25cIj5cclxuICA8ZGl2PlxyXG4gICAgICA8ZGl2ICNkaXNwbGF5RWxlbWVudHM+PC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJhZGRfYnRuXCIgKGNsaWNrKT1cImFkZFNlY3Rpb24oKVwiPlxyXG4gICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cclxuICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogNXB4O1wiPkFkZCBTZWN0aW9uPC9zcGFuPlxyXG4gIDwvc2VjdGlvbj5cclxuPC9zZWN0aW9uPlxyXG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW5ldy1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvYWRkLW5ldy1zZWN0aW9uL2FkZC1uZXctc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2FkZC1uZXctc2VjdGlvbi9hZGQtbmV3LXNlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7O0FBU3ZGLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFBb0IsYUFBNEIsRUFDdEMsTUFBa0I7UUFEUixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN0QyxXQUFNLEdBQU4sTUFBTSxDQUFZO0lBQzFCLENBQUM7SUFHSCxVQUFVO1FBQ1IsSUFBSSxNQUFNLEdBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUMsRUFBQyxVQUFVLEVBQUcsYUFBYSxFQUFFLElBQUksRUFBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBQyxFQUFFLENBQUMsQ0FBQTtJQUN0SixDQUFDOytHQVJVLHNCQUFzQjttR0FBdEIsc0JBQXNCLDZHQ2JuQyx5UUFTQSx1YURBWSxPQUFPOzs0RkFJTixzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLE9BQU8sQ0FBQzswR0FRVCxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQWRkU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL2FkZC1zZWN0aW9uL2FkZC1zZWN0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLWFkZC1uZXctc2VjdGlvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRJY29uXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1uZXctc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9hZGQtbmV3LXNlY3Rpb24uY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgQWRkTmV3U2VjdGlvbkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcbiAgICBwcml2YXRlIGRpYWxvZyA6IE1hdERpYWxvZ1xuICApe31cbiAgQElucHV0KCkgaW5kZXg/IDogbnVtYmVyO1xuXG4gIGFkZFNlY3Rpb24oKXtcbiAgICBsZXQgZGlhbG9nIDogYW55ID0gdGhpcy5kaWFsb2cub3BlbihBZGRTZWN0aW9uQ29tcG9uZW50LHtwYW5lbENsYXNzIDogXCJhZGQtc2VjdGlvblwiLCBkYXRhIDogeyBzdGF0dXM6IHRydWUsIGluZGV4OiB0aGlzLmluZGV4LCBwb3NpdGlvbjogXCJBQk9WRVwifSB9KVxuICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cIm1haW5fc2VjdGlvblwiPlxuICA8ZGl2PlxuICAgICAgPGRpdiAjZGlzcGxheUVsZW1lbnRzPjwvZGl2PlxuICA8L2Rpdj5cbiAgPHNlY3Rpb24gY2xhc3M9XCJhZGRfYnRuXCIgKGNsaWNrKT1cImFkZFNlY3Rpb24oKVwiPlxuICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA1cHg7XCI+QWRkIFNlY3Rpb248L3NwYW4+XG4gIDwvc2VjdGlvbj5cbjwvc2VjdGlvbj5cbiJdfQ==