coer-elements 0.0.22 → 0.0.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (148) hide show
  1. package/components/index.d.ts +5 -16
  2. package/components/lib/coer-button/coer-button.component.d.ts +3 -3
  3. package/components/lib/coer-checkbox/coer-checkbox.component.d.ts +1 -1
  4. package/components/lib/coer-filebox/coer-filebox.component.d.ts +3 -3
  5. package/components/lib/coer-grid/coer-grid.component.d.ts +1 -1
  6. package/components/lib/coer-grid/coer-grid.extension.d.ts +3 -5
  7. package/components/lib/coer-grid/coer-grid.templates.d.ts +1 -1
  8. package/components/lib/coer-modal/coer-modal.component.d.ts +2 -2
  9. package/components/lib/coer-numberbox/coer-numberbox.component.d.ts +1 -2
  10. package/components/lib/coer-page-title/coer-page-title.component.d.ts +1 -1
  11. package/components/lib/coer-selectbox/coer-selectbox.component.d.ts +1 -1
  12. package/components/lib/coer-switch/coer-switch.component.d.ts +1 -1
  13. package/components/lib/coer-tab/coer-tab.component.d.ts +1 -1
  14. package/components/lib/coer-textarea/coer-textarea.component.d.ts +1 -1
  15. package/components/lib/coer-textbox/coer-textbox.component.d.ts +1 -1
  16. package/components/lib/components.module.d.ts +25 -26
  17. package/components/public-api.d.ts +15 -0
  18. package/directives/index.d.ts +5 -3
  19. package/directives/public-api.d.ts +3 -0
  20. package/esm2022/coer-elements.mjs +2 -2
  21. package/esm2022/components/coer-elements-components.mjs +5 -0
  22. package/esm2022/components/lib/coer-button/coer-button.component.mjs +2 -2
  23. package/esm2022/components/lib/coer-checkbox/coer-checkbox.component.mjs +2 -3
  24. package/esm2022/components/lib/coer-filebox/coer-filebox.component.mjs +3 -5
  25. package/esm2022/components/lib/coer-form/coer-form.component.mjs +2 -3
  26. package/esm2022/components/lib/coer-grid/coer-grid.component.mjs +4 -7
  27. package/esm2022/components/lib/coer-grid/coer-grid.extension.mjs +2 -6
  28. package/esm2022/components/lib/coer-grid/coer-grid.templates.mjs +1 -1
  29. package/esm2022/components/lib/coer-modal/coer-modal.component.mjs +4 -5
  30. package/esm2022/components/lib/coer-numberbox/coer-numberbox.component.mjs +2 -4
  31. package/esm2022/components/lib/coer-page-title/coer-page-title.component.mjs +2 -2
  32. package/esm2022/components/lib/coer-selectbox/coer-selectbox.component.mjs +2 -3
  33. package/esm2022/components/lib/coer-switch/coer-switch.component.mjs +2 -3
  34. package/esm2022/components/lib/coer-tab/coer-tab.component.mjs +4 -4
  35. package/esm2022/components/lib/coer-textarea/coer-textarea.component.mjs +2 -3
  36. package/esm2022/components/lib/coer-textbox/coer-textbox.component.mjs +2 -3
  37. package/esm2022/components/lib/components.module.mjs +10 -15
  38. package/esm2022/components/public-api.mjs +16 -0
  39. package/esm2022/directives/coer-elements-directives.mjs +5 -0
  40. package/esm2022/directives/lib/coer-ref.directive.mjs +1 -1
  41. package/esm2022/directives/lib/directives.module.mjs +1 -1
  42. package/esm2022/directives/lib/life-cycle.directive.mjs +1 -1
  43. package/esm2022/directives/public-api.mjs +4 -0
  44. package/esm2022/index.mjs +2 -0
  45. package/esm2022/interfaces/coer-elements-interfaces.mjs +5 -0
  46. package/esm2022/interfaces/lib/app-source.interface.mjs +1 -1
  47. package/esm2022/interfaces/lib/coer-filebox/file-image.interface.mjs +1 -1
  48. package/esm2022/interfaces/lib/coer-filebox/file.interface.mjs +1 -1
  49. package/esm2022/interfaces/lib/coer-grid/grid-button-by-row.interface.mjs +1 -1
  50. package/esm2022/interfaces/lib/coer-grid/grid-checkbox.interface.mjs +1 -1
  51. package/esm2022/interfaces/lib/coer-grid/grid-coer-numberbox.interface.mjs +1 -1
  52. package/esm2022/interfaces/lib/coer-grid/grid-coer-selectbox.interface.mjs +1 -1
  53. package/esm2022/interfaces/lib/coer-grid/grid-coer-switch.interface.mjs +1 -1
  54. package/esm2022/interfaces/lib/coer-grid/grid-coer-textbox.interface.mjs +1 -1
  55. package/esm2022/interfaces/lib/coer-grid/grid-column.interface.mjs +1 -1
  56. package/esm2022/interfaces/lib/coer-grid/grid-data-source.interface.mjs +1 -1
  57. package/esm2022/interfaces/lib/coer-grid/grid-header-button.interface.mjs +1 -1
  58. package/esm2022/interfaces/lib/coer-grid/grid-header-export-button.interface.mjs +1 -1
  59. package/esm2022/interfaces/lib/coer-grid/grid-header.interface.mjs +1 -1
  60. package/esm2022/interfaces/lib/coer-grid/grid-import.interface.mjs +1 -1
  61. package/esm2022/interfaces/lib/coer-grid/grid-input-checkbox.interface.mjs +1 -1
  62. package/esm2022/interfaces/lib/coer-grid/grid-input-switch-change.interface.mjs +1 -1
  63. package/esm2022/interfaces/lib/coer-grid/grid-input-textbox.interface.mjs +1 -1
  64. package/esm2022/interfaces/lib/coer-grid/grid-item.interface.mjs +1 -1
  65. package/esm2022/interfaces/lib/coer-grid/grid-keyup-enter.interface.mjs +1 -1
  66. package/esm2022/interfaces/lib/coer-grid/grid-length.interface.mjs +1 -1
  67. package/esm2022/interfaces/lib/coer-grid/grid-search.interface.mjs +1 -1
  68. package/esm2022/interfaces/lib/coer-grid/grid-sort.interface.mjs +1 -1
  69. package/esm2022/interfaces/lib/coer-menu/menu-option-selected.interface.mjs +1 -1
  70. package/esm2022/interfaces/lib/coer-menu/menu-selected.interface.mjs +1 -1
  71. package/esm2022/interfaces/lib/coer-menu/menu.interface.mjs +1 -1
  72. package/esm2022/interfaces/lib/coer-ref.interface.mjs +1 -1
  73. package/esm2022/interfaces/lib/page-title/breadcrumb.interface.mjs +1 -1
  74. package/esm2022/interfaces/lib/page-title/go-back.interface.mjs +1 -1
  75. package/esm2022/interfaces/lib/screen-size.interface.mjs +1 -1
  76. package/esm2022/interfaces/lib/service/http-request.interface.mjs +1 -1
  77. package/esm2022/interfaces/lib/service/http-response.interface.mjs +1 -1
  78. package/esm2022/interfaces/lib/service/patch.interface.mjs +1 -1
  79. package/esm2022/interfaces/public-api.mjs +39 -0
  80. package/esm2022/pipes/coer-elements-pipes.mjs +5 -0
  81. package/esm2022/pipes/lib/html.pipe.mjs +1 -1
  82. package/esm2022/pipes/lib/no-image.pipe.mjs +3 -3
  83. package/esm2022/pipes/lib/numeric-format.pipe.mjs +2 -2
  84. package/esm2022/pipes/lib/pipes.module.mjs +1 -1
  85. package/esm2022/pipes/public-api.mjs +5 -0
  86. package/esm2022/signals/coer-elements-signals.mjs +5 -0
  87. package/esm2022/signals/lib/breakpoint.signal.mjs +2 -2
  88. package/esm2022/signals/lib/is-loading.signal.mjs +1 -1
  89. package/esm2022/signals/lib/is-menu-open.signal.mjs +1 -1
  90. package/esm2022/signals/lib/is-modal-open.signal.mjs +1 -1
  91. package/esm2022/signals/lib/menu.signal.mjs +1 -1
  92. package/esm2022/signals/public-api.mjs +6 -0
  93. package/esm2022/tools/coer-elements-tools.mjs +5 -0
  94. package/esm2022/tools/lib/breadcrumbs.class.mjs +1 -1
  95. package/esm2022/tools/lib/coer-alert/coer-alert.component.mjs +228 -0
  96. package/esm2022/tools/lib/control-value.class.mjs +1 -1
  97. package/esm2022/tools/lib/date-time.class.mjs +1 -1
  98. package/esm2022/tools/lib/files.class.mjs +1 -1
  99. package/esm2022/tools/lib/menu.class.mjs +1 -1
  100. package/esm2022/tools/lib/page.class.mjs +4 -4
  101. package/esm2022/tools/lib/screen.class.mjs +1 -1
  102. package/esm2022/tools/lib/service.class.mjs +24 -25
  103. package/esm2022/tools/lib/source.class.mjs +3 -3
  104. package/esm2022/tools/lib/tools.mjs +1 -1
  105. package/esm2022/tools/public-api.mjs +12 -0
  106. package/fesm2022/coer-elements-components.mjs +2718 -0
  107. package/fesm2022/coer-elements-components.mjs.map +1 -0
  108. package/fesm2022/coer-elements-directives.mjs +82 -0
  109. package/fesm2022/coer-elements-directives.mjs.map +1 -0
  110. package/fesm2022/coer-elements-interfaces.mjs +6 -0
  111. package/fesm2022/coer-elements-interfaces.mjs.map +1 -0
  112. package/fesm2022/coer-elements-pipes.mjs +83 -0
  113. package/fesm2022/coer-elements-pipes.mjs.map +1 -0
  114. package/fesm2022/coer-elements-signals.mjs +19 -0
  115. package/fesm2022/coer-elements-signals.mjs.map +1 -0
  116. package/fesm2022/coer-elements-tools.mjs +1223 -0
  117. package/fesm2022/coer-elements-tools.mjs.map +1 -0
  118. package/fesm2022/coer-elements.mjs +0 -4081
  119. package/fesm2022/coer-elements.mjs.map +1 -1
  120. package/index.d.ts +1 -5
  121. package/interfaces/index.d.ts +5 -33
  122. package/interfaces/public-api.d.ts +33 -0
  123. package/package.json +37 -1
  124. package/pipes/index.d.ts +5 -4
  125. package/pipes/public-api.d.ts +4 -0
  126. package/signals/index.d.ts +5 -5
  127. package/signals/lib/menu.signal.d.ts +1 -1
  128. package/signals/public-api.d.ts +5 -0
  129. package/styles/angular-material.scss +8 -11
  130. package/styles/bootstrap.scss +3 -3
  131. package/tools/index.d.ts +5 -10
  132. package/tools/lib/breadcrumbs.class.d.ts +1 -1
  133. package/tools/lib/menu.class.d.ts +1 -1
  134. package/tools/lib/page.class.d.ts +2 -2
  135. package/tools/lib/screen.class.d.ts +1 -1
  136. package/tools/lib/service.class.d.ts +2 -2
  137. package/tools/lib/source.class.d.ts +1 -1
  138. package/tools/public-api.d.ts +11 -0
  139. package/esm2022/components/index.mjs +0 -17
  140. package/esm2022/components/lib/coer-alert/coer-alert.component.mjs +0 -227
  141. package/esm2022/directives/index.mjs +0 -4
  142. package/esm2022/interfaces/index.mjs +0 -39
  143. package/esm2022/pipes/index.mjs +0 -5
  144. package/esm2022/public_api.mjs +0 -6
  145. package/esm2022/signals/index.mjs +0 -6
  146. package/esm2022/tools/index.mjs +0 -11
  147. package/public_api.d.ts +0 -5
  148. /package/{components → tools}/lib/coer-alert/coer-alert.component.d.ts +0 -0
@@ -1,13 +1,9 @@
1
1
  import { Component, Input, computed, inject, input, output, signal, viewChild, viewChildren } from "@angular/core";
2
- import { CoerAlert } from "../../lib/coer-alert/coer-alert.component";
3
2
  import { CoerCheckbox } from "../../lib/coer-checkbox/coer-checkbox.component";
4
3
  import { CoerNumberBox } from "../../lib/coer-numberbox/coer-numberbox.component";
5
4
  import { CoerSelectbox } from "../../lib/coer-selectbox/coer-selectbox.component";
6
5
  import { CoerTextBox } from "../../lib/coer-textbox/coer-textbox.component";
7
- import { ControlValue } from '../../../tools/lib/control-value.class';
8
- import { DateTime } from '../../../tools/lib/date-time.class';
9
- import { Screen } from '../../../tools/lib/screen.class';
10
- import { Tools } from '../../../tools/lib/tools';
6
+ import { CoerAlert, ControlValue, DateTime, Screen, Tools } from 'coer-elements/tools';
11
7
  import * as i0 from "@angular/core";
12
8
  export class CoerGridExtension extends ControlValue {
13
9
  constructor() {
@@ -409,4 +405,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
409
405
  }], checkbox: [{
410
406
  type: Input
411
407
  }] } });
412
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1ncmlkLmV4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvbGliL2NvZXItZ3JpZC9jb2VyLWdyaWQuZXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBTWpELE1BQU0sT0FBTyxpQkFBcUIsU0FBUSxZQUFZO0lBSnREOztRQU1JLFlBQVk7UUFDTyxVQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdDLFVBQVU7UUFDQSxjQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBYSxjQUFjLENBQUMsQ0FBQztRQUMzRCxnQkFBVyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQWMsYUFBYSxDQUFDLENB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QUFDLEtBQUssQ0FBQztJQUN0RSxDQUFDOytHQXJkUSxpQkFBaUI7bUdBQWpCLGlCQUFpQiw2c0lBUWUsV0FBVyx1RkFDVCxhQUFhLHVGQUNiLGFBQWEsc0ZBQ2QsWUFBWSx1RkFiNUMsRUFBRTs7NEZBRUgsaUJBQWlCO2tCQUo3QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRSxFQUFFO2lCQUNmOzhCQWlDWSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUdyaWRCdXR0b25CeVJvdywgSUdyaWRDb2x1bW4sIElHcmlkRGF0YVNvdXJjZSwgSUdyaWRJbXBvcnQsIElHcmlkSGVhZGVyQnV0dG9uLCBJR3JpZEhlYWRlckV4cG9ydEJ1dHRvbiwgSUdyaWRLZXl1cEVudGVyLCBJR3JpZFNlYXJjaCwgSUdyaWRJbnB1dFN3aXRjaENoYW5nZSwgSUdyaWRJbnB1dFRleHRib3gsIElHcmlkU29ydCwgSUdyaWRDaGVja2JveCwgSUdyaWRJbnB1dENoZWNrYm94LCBJR3JpZEhlYWRlciB9IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgdmlld0NoaWxkLCB2aWV3Q2hpbGRyZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb2VyQWxlcnQgfSBmcm9tIFwiLi4vLi4vbGliL2NvZXItYWxlcnQvY29lci1hbGVydC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29lckNoZWNrYm94IH0gZnJvbSBcIi4uLy4uL2xpYi9jb2VyLWNoZWNrYm94L2NvZXItY2hlY2tib3guY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvZXJOdW1iZXJCb3ggfSBmcm9tIFwiLi4vLi4vbGliL2NvZXItbnVtYmVyYm94L2NvZXItbnVtYmVyYm94LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBDb2VyU2VsZWN0Ym94IH0gZnJvbSBcIi4uLy4uL2xpYi9jb2VyLXNlbGVjdGJveC9jb2VyLXNlbGVjdGJveC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29lclRleHRCb3ggfSBmcm9tIFwiLi4vLi4vbGliL2NvZXItdGV4dGJveC9jb2VyLXRleHRib3guY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZSB9IGZyb20gJy4uLy4uLy4uL3Rvb2xzL2xpYi9jb250cm9sLXZhbHVlLmNsYXNzJztcclxuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICcuLi8uLi8uLi90b29scy9saWIvZGF0ZS10aW1lLmNsYXNzJztcclxuaW1wb3J0IHsgU2NyZWVuIH0gZnJvbSAnLi4vLi4vLi4vdG9vbHMvbGliL3NjcmVlbi5jbGFzcyc7XHJcbmltcG9ydCB7IFRvb2xzIH0gZnJvbSAnLi4vLi4vLi4vdG9vbHMvbGliL3Rvb2xzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjb2VyLWdyaWQtZXh0ZW5zaW9uJyxcclxuICAgIHRlbXBsYXRlOiAnJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29lckdyaWRFeHRlbnNpb248VD4gZXh0ZW5kcyBDb250cm9sVmFsdWUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgICAvL0luamVjdGlvbnNcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBhbGVydCA9IGluamVjdChDb2VyQWxlcnQpO1xyXG5cclxuICAgIC8vRWxlbWVudHNcclxuICAgIHByb3RlY3RlZCBpbnB1dEZpbGUgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZj4oJ2lucHV0RmlsZVJlZicpO1xyXG4gICAgcHJvdGVjdGVkIGlucHV0U2VhcmNoID0gdmlld0NoaWxkLnJlcXVpcmVkPENvZXJUZXh0Qm94PignaW5wdXRTZWFyY2gnKTtcclxuICAgIHByb3RlY3RlZCBjb2VyVGV4dGJveExpc3QgPSB2aWV3Q2hpbGRyZW4oQ29lclRleHRCb3gpO1xyXG4gICAgcHJvdGVjdGVkIGNvZXJOdW1iZXJib3hMaXN0ID0gdmlld0NoaWxkcmVuKENvZXJOdW1iZXJCb3gpO1xyXG4gICAgcHJvdGVjdGVkIGNvZXJTZWxlY3Rib3hMaXN0ID0gdmlld0NoaWxkcmVuKENvZXJTZWxlY3Rib3gpO1xyXG4gICAgcHJvdGVjdGVkIGNvZXJDaGVja2JveExpc3QgPSB2aWV3Q2hpbGRyZW4oQ29lckNoZWNrYm94KTtcclxuXHJcbiAgICAvL1ZhcmlhYmxlc1xyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF92YWx1ZTogVFtdID0gW107XHJcbiAgICBwcm90ZWN0ZWQgdmFsdWVfc2lnbmFsID0gc2lnbmFsPFRbXT4oW10pO1xyXG4gICAgcHJvdGVjdGVkIF9ncmlkU2VhcmNoID0gc2lnbmFsPHN0cmluZyB8IG51bWJlcj4oJycpO1xyXG4gICAgcHJvdGVjdGVkIF9pc0xvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgcHJvdGVjdGVkIF9pc0xvYWRpbmdNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHByb3RlY3RlZCBfaWQ6IHN0cmluZyA9IFRvb2xzLkdldEd1aWQoJ2NvZXItZ3JpZCcpO1xyXG4gICAgcHJvdGVjdGVkIF9leHBhbmRlZEdyb3Vwczogc3RyaW5nW10gPSBbXTtcclxuICAgIHByb3RlY3RlZCBfZW5hYmxlQW5pbWF0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIF9pbmRleEZvY3VzID0gc2lnbmFsPG51bWJlcj4oMCk7XHJcbiAgICBwcm90ZWN0ZWQgX3NvcnQgPSBzaWduYWw8SUdyaWRTb3J0Pih7IGNvbHVtbk5hbWU6ICcnLCBkaXJlY3Rpb246ICdub25lJywgaWNvbjogJycgfSk7XHJcblxyXG4gICAgLy9HZW5lcmljIFRvb2xzXHJcbiAgICBwcm90ZWN0ZWQgR2V0TnVtZXJpY0Zvcm1hdCA9IFRvb2xzLkdldE51bWVyaWNGb3JtYXQ7XHJcbiAgICBwcm90ZWN0ZWQgR2V0RGF0ZUZvcm1hdCA9IERhdGVUaW1lLkdldERhdGVGb3JtYXQ7XHJcblxyXG4gICAgLy9JbnB1dHNcclxuICAgIHB1YmxpYyBjb2x1bW5zID0gaW5wdXQ8SUdyaWRDb2x1bW48VD5bXT4oW10pO1xyXG4gICAgcHVibGljIGNsZWFuQ29sdW1uTmFtZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gICAgQElucHV0KCkgYWRkQnV0dG9uOiBJR3JpZEhlYWRlckJ1dHRvbiA9IHsgc2hvdzogZmFsc2UgfTtcclxuICAgIEBJbnB1dCgpIGV4cG9ydEJ1dHRvbjogSUdyaWRIZWFkZXJFeHBvcnRCdXR0b24gPSB7IHNob3c6IGZhbHNlIH07XHJcbiAgICBASW5wdXQoKSBpbXBvcnRCdXR0b246IElHcmlkSGVhZGVyQnV0dG9uID0geyBzaG93OiBmYWxzZSB9O1xyXG4gICAgQElucHV0KCkgc2VhcmNoOiBJR3JpZFNlYXJjaCA9IHsgc2hvdzogZmFsc2UsIGlnbm9yZTogZmFsc2UgfTtcclxuICAgIEBJbnB1dCgpIGJ1dHRvbkJ5Um93OiBJR3JpZEJ1dHRvbkJ5Um93PFQ+ID0ge307XHJcbiAgICBASW5wdXQoKSBjaGVja2JveDogSUdyaWRDaGVja2JveCA9IHsgc2hvdzogZmFsc2UgfTtcclxuICAgIHB1YmxpYyB0b29sdGlwQnlSb3cgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICAgIHB1YmxpYyBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwdWJsaWMgaXNEaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyByb3dzQnlQYWdlID0gaW5wdXQ8bnVtYmVyPig1MCk7XHJcbiAgICBwdWJsaWMgZ3JvdXBCeSA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gICAgcHVibGljIHNob3dDb2x1bW5Hcm91cGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIHJvd3NCeUdyb3VwID0gaW5wdXQ8bnVtYmVyPig1MCk7XHJcbiAgICBwdWJsaWMgaXNJbnZpc2libGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwdWJsaWMgc2hvd0Zvb3RlciA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gICAgcHVibGljIHdpZHRoID0gaW5wdXQ8c3RyaW5nPignMTAwJScpO1xyXG4gICAgcHVibGljIE1pbldpZHRoID0gaW5wdXQ8c3RyaW5nPignMjUwcHgnKTtcclxuICAgIHB1YmxpYyBNYXhXaWR0aCA9IGlucHV0PHN0cmluZz4oJzEwMCUnKTtcclxuICAgIHB1YmxpYyBoZWlnaHQgPSBpbnB1dDxzdHJpbmc+KCczNTBweCcpO1xyXG4gICAgcHVibGljIG1pbkhlaWdodCA9IGlucHV0PHN0cmluZz4oJzE0MHB4Jyk7XHJcbiAgICBwdWJsaWMgbWF4SGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPignMTAwdmgnKTtcclxuICAgIHB1YmxpYyBtYXJnaW4gPSBpbnB1dDxzdHJpbmc+KCdhdXRvJyk7XHJcbiAgICBwdWJsaWMgZW5hYmxlU29ydCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gICAgcHVibGljIGVuYWJsZVJvd0ZvY3VzID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gICAgLy9PdXRwdXRzXHJcbiAgICBwdWJsaWMgb25DbGlja0FkZCA9IG91dHB1dDx2b2lkPigpO1xyXG4gICAgcHVibGljIG9uQ2xpY2tJbXBvcnQgPSBvdXRwdXQ8SUdyaWRJbXBvcnQ8VD4+KCk7XHJcbiAgICBwdWJsaWMgb25DbGlja0V4cG9ydCA9IG91dHB1dDxUW10+KCk7XHJcbiAgICBwdWJsaWMgb25DbGlja1JvdyA9IG91dHB1dDxUPigpO1xyXG4gICAgcHVibGljIG9uRG91YmxlQ2xpY2tSb3cgPSBvdXRwdXQ8VD4oKTtcclxuICAgIHB1YmxpYyBvbkNsaWNrRGVsZXRlUm93ID0gb3V0cHV0PFQ+KCk7XHJcbiAgICBwdWJsaWMgb25DbGlja0VkaXRSb3cgPSBvdXRwdXQ8VD4oKTtcclxuICAgIHB1YmxpYyBvbkNsaWNrR29Sb3cgPSBvdXRwdXQ8VD4oKTtcclxuICAgIHB1YmxpYyBvbktleXVwRW50ZXIgPSBvdXRwdXQ8SUdyaWRLZXl1cEVudGVyPigpO1xyXG4gICAgcHVibGljIG9uS2V5dXBFbnRlckxhc3QgPSBvdXRwdXQ8dm9pZD4oKTtcclxuICAgIHB1YmxpYyBvblN3aXRjaENoYW5nZSA9IG91dHB1dDxJR3JpZElucHV0U3dpdGNoQ2hhbmdlPFQ+PigpO1xyXG4gICAgcHVibGljIG9uVGV4dGJveENoYW5nZSA9IG91dHB1dDxJR3JpZElucHV0VGV4dGJveDxUPj4oKTtcclxuICAgIHB1YmxpYyBvblNlbGVjdGJveENoYW5nZSA9IG91dHB1dDxJR3JpZElucHV0VGV4dGJveDxUPj4oKTtcclxuICAgIHB1YmxpYyBvbkNoZWNrYm94Q2hhbmdlID0gb3V0cHV0PElHcmlkSW5wdXRDaGVja2JveDxUPj4oKTtcclxuXHJcbiAgICAvL2NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgX2lzRGlzYWJsZWQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNEaXNhYmxlZCgpIHx8IHRoaXMuaXNMb2FkaW5nKCkgfHwgdGhpcy5pc0ludmlzaWJsZSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy9jb21wdXRlZFxyXG4gICAgcHJvdGVjdGVkIF9pc0dyb3VwZWQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBCeSgpLmxlbmd0aCA+IDA7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHJvdGVjdGVkIGdldCBfaGVpZ2h0KCk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IHRoaXMuaGVpZ2h0KCk7XHJcblxyXG4gICAgICAgIGlmIChoZWlnaHQgPT0gJ2Z1bGwnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IFRPT0xCQVIgPSA0NTtcclxuICAgICAgICAgICAgY29uc3QgUEFHRV9IRUFERVIgPSA3MDtcclxuICAgICAgICAgICAgY29uc3QgR1JJRF9IRUFERVIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHt0aGlzLl9pZH0taGVhZGVyYCkhO1xyXG4gICAgICAgICAgICBjb25zdCBIRUFERVIgPSAoR1JJRF9IRUFERVIgJiYgR1JJRF9IRUFERVIuY2hpbGRyZW4ubGVuZ3RoID4gMCkgPyA1MCA6IDA7XHJcbiAgICAgICAgICAgIGNvbnN0IE1BUkdJTiA9IDMwO1xyXG4gICAgICAgICAgICBjb25zdCBQQURESU5HID0gMjA7XHJcbiAgICAgICAgICAgIGNvbnN0IEZPT1RFUiA9IHRoaXMuc2hvd0Zvb3RlcigpID8gMjQuNSA6IDA7XHJcbiAgICAgICAgICAgIGhlaWdodCA9IChTY3JlZW4uV0lORE9XX0hFSUdIVCAtIFRPT0xCQVIgLSBQQUdFX0hFQURFUiAtIE1BUkdJTiAtIEhFQURFUiAtIFBBRERJTkcgLSBGT09URVIpICsgJ3B4JztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBoZWlnaHQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vZ2V0dGVyXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF9vbmx5T25lQ2hlY2soKSB7XHJcbiAgICAgICAgcmV0dXJuIFRvb2xzLklzTm90TnVsbCh0aGlzLmNoZWNrYm94Lm9ubHlPbmVDaGVjaykgJiYgdGhpcy5jaGVja2JveC5vbmx5T25lQ2hlY2s7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBUb29scy5TbGVlcCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9lbmFibGVBbmltYXRpb25zID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5faXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuX2lzTG9hZGluZ01lc3NhZ2UgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvL0NvbnRyb2xWYWx1ZUFjY2Vzc29yXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgU2V0VmFsdWUodmFsdWU6IFRbXSk6IHZvaWQge1xyXG4gICAgICAgIGxldCBpbmRleFJvdyA9IDA7XHJcbiAgICAgICAgaWYoIVRvb2xzLklzTm90TnVsbCh2YWx1ZSkpIHZhbHVlID0gW107XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBUb29scy5CcmVha1JlZmVyZW5jZSh2YWx1ZSkubWFwKChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oeyBjaGVja2VkOiBmYWxzZSB9LCB7IC4uLml0ZW0gfSwgeyBpbmRleFJvdzogaW5kZXhSb3crKyB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuX1VwZGF0ZVZhbHVlKGRhdGFTb3VyY2UpO1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gZGF0YVNvdXJjZTtcclxuICAgICAgICB0aGlzLnZhbHVlX3NpZ25hbC5zZXQoZGF0YVNvdXJjZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICAgIHB1YmxpYyBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBUW10pOiB2b2lkIHtcclxuICAgICAgICBsZXQgaW5kZXhSb3cgPSAwO1xyXG4gICAgICAgIGlmKCFUb29scy5Jc05vdE51bGwodmFsdWUpKSB2YWx1ZSA9IFtdO1xyXG5cclxuICAgICAgICBjb25zdCBkYXRhU291cmNlID0gVG9vbHMuQnJlYWtSZWZlcmVuY2UodmFsdWUpLm1hcCgoaXRlbTogYW55KSA9PlxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHsgY2hlY2tlZDogZmFsc2UgfSwgeyAuLi5pdGVtIH0sIHsgaW5kZXhSb3c6IGluZGV4Um93KysgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLl92YWx1ZSA9IGRhdGFTb3VyY2U7XHJcbiAgICAgICAgdGhpcy52YWx1ZV9zaWduYWwuc2V0KGRhdGFTb3VyY2UpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAgLy9jb21wdXRlZFxyXG4gICAgIHByb3RlY3RlZCBncmlkQ29sdW1ucyA9IGNvbXB1dGVkPElHcmlkSGVhZGVyW10+KCgpID0+IHtcclxuICAgICAgICBjb25zdCBTRVRfQ09MVU1OUyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cclxuICAgICAgICAvL0hhcyBmaWx0ZXIgY29sdW1ucz9cclxuICAgICAgICBpZiAodGhpcy5jb2x1bW5zKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHsgcHJvcGVydHkgfSBvZiB0aGlzLmNvbHVtbnMoKSkge1xyXG4gICAgICAgICAgICAgICAgU0VUX0NPTFVNTlMuYWRkKHByb3BlcnR5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9HZXQgYWxsIGNvbHVtbnNcclxuICAgICAgICBlbHNlIGZvciAoY29uc3Qgcm93IG9mIHRoaXMudmFsdWVfc2lnbmFsKCkpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiByb3cpIHtcclxuICAgICAgICAgICAgICAgIFNFVF9DT0xVTU5TLmFkZChwcm9wZXJ0eSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vUmVtb3ZlIGluZGV4Um93IGNvbHVtblxyXG4gICAgICAgIGlmIChTRVRfQ09MVU1OUy5oYXMoJ2luZGV4Um93JykpIHtcclxuICAgICAgICAgICAgU0VUX0NPTFVNTlMuZGVsZXRlKCdpbmRleFJvdycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9SZW1vdmUgZ3JvdXBCeSBjb2x1bW5cclxuICAgICAgICBpZiAodGhpcy5faXNHcm91cGVkKCkgJiYgIXRoaXMuc2hvd0NvbHVtbkdyb3VwZWQoKSAmJiBTRVRfQ09MVU1OUy5oYXModGhpcy5ncm91cEJ5KCkpKSB7XHJcbiAgICAgICAgICAgIFNFVF9DT0xVTU5TLmRlbGV0ZSh0aGlzLmdyb3VwQnkoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL1NldCBpbmRleCBjb2x1bW5cclxuICAgICAgICBsZXQgaW5kZXhDb2x1bW4gPSAwO1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKFNFVF9DT0xVTU5TKS5tYXAocHJvcGVydHkgPT4gVG9vbHMuQnJlYWtSZWZlcmVuY2U8SUdyaWRIZWFkZXI+KHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogcHJvcGVydHksXHJcbiAgICAgICAgICAgIGluZGV4Q29sdW1uOiBpbmRleENvbHVtbisrLFxyXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5fR2V0Q29sdW1uQ29uZmlnKHByb3BlcnR5KT8ud2lkdGggfHwgJ2F1dG8nXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIC8vY29tcHV0ZWRcclxuICAgIHByb3RlY3RlZCBncmlkRGF0YVNvdXJjZSA9IGNvbXB1dGVkPElHcmlkRGF0YVNvdXJjZVtdPigoKSA9PiB7XHJcbiAgICAgICAgbGV0IGxpc3QgPSB0aGlzLmdyaWREYXRhU291cmNlRmlsdGVyZWQoKTtcclxuXHJcbiAgICAgICAgLy9JdCdzIEdyb3VwZWQ/XHJcbiAgICAgICAgaWYgKHRoaXMuX2lzR3JvdXBlZCgpKSB7XHJcbiAgICAgICAgICAgIC8vbGV0IGluZGV4Um93ID0gMDtcclxuICAgICAgICAgICAgbGV0IGluZGV4R3JvdXAgPSAwO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgU0VUX0NPTFVNTiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBsaXN0IGFzIGFueSkge1xyXG4gICAgICAgICAgICAgICAgU0VUX0NPTFVNTi5hZGQocm93W3RoaXMuZ3JvdXBCeSgpXSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IERBVEFfU09VUkNFX0dST1BVRUQgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgU0VUX0NPTFVNTikge1xyXG4gICAgICAgICAgICAgICAgREFUQV9TT1VSQ0VfR1JPUFVFRC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBncm91cEJ5OiBjb2x1bW4sXHJcbiAgICAgICAgICAgICAgICAgICAgaW5kZXhHcm91cDogaW5kZXhHcm91cCsrLFxyXG4gICAgICAgICAgICAgICAgICAgIGxlbmd0aDogbGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbVt0aGlzLmdyb3VwQnkoKV0gPT0gY29sdW1uKS5sZW5ndGgsXHJcbiAgICAgICAgICAgICAgICAgICAgcm93czogWy4uLmxpc3RdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbVt0aGlzLmdyb3VwQnkoKV0gPT0gY29sdW1uKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3BsaWNlKDAsIHRoaXMucm93c0J5R3JvdXAoKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8ubWFwKChpdGVtOiBhbnkpID0+IE9iamVjdC5hc3NpZ24oeyBpbmRleFJvdzogaW5kZXhSb3crKyB9LCBpdGVtKSlcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL1Jlc3BvbnNlIGJ5IGdyb3VwXHJcbiAgICAgICAgICAgIHJldHVybiBbLi4uREFUQV9TT1VSQ0VfR1JPUFVFRF0uc3BsaWNlKDAsIHRoaXMucm93c0J5UGFnZSgpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vUmVzcG9uc2VcclxuICAgICAgICByZXR1cm4gW3tcclxuICAgICAgICAgICAgZ3JvdXBCeTogJ05vdCBHcm91cGVkJyxcclxuICAgICAgICAgICAgaW5kZXhHcm91cDogLTEsXHJcbiAgICAgICAgICAgIGxlbmd0aDogLTEsXHJcbiAgICAgICAgICAgIHJvd3M6IFsuLi5saXN0XS5zcGxpY2UoMCwgdGhpcy5yb3dzQnlQYWdlKCkpXHJcbiAgICAgICAgfV07XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgLy9jb21wdXRlZFxyXG4gICAgcHJvdGVjdGVkIGdyaWREYXRhU291cmNlRmlsdGVyZWQgPSBjb21wdXRlZDxUW10+KCgpID0+IHtcclxuICAgICAgICBsZXQgbGlzdDogVFtdID0gW107XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBUb29scy5CcmVha1JlZmVyZW5jZSh0aGlzLnZhbHVlX3NpZ25hbCgpKTtcclxuXHJcbiAgICAgICAgLy9JZ25vcmUgRmlsdGVyXHJcbiAgICAgICAgaWYgKHRoaXMuX2dyaWRTZWFyY2goKSA9PSAnJyB8fCB0aGlzLnNlYXJjaD8uaWdub3JlKSB7XHJcbiAgICAgICAgICAgIGxpc3QgPSBkYXRhU291cmNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9GaWx0ZXIgYnkgc2VhcmNoXHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IFNFVF9ST1cgPSBuZXcgU2V0PG51bWJlcj4oKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBsaXN0RmlsdGVyZWQ6IGFueVtdID0gW107XHJcbiAgICAgICAgICAgIGZvcihjb25zdCB7IGNvbHVtbk5hbWUgfSBvZiB0aGlzLmdyaWRDb2x1bW5zKCkpIHtcclxuICAgICAgICAgICAgICAgIGxpc3RGaWx0ZXJlZCA9IGRhdGFTb3VyY2UuZmlsdGVyKChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgIVNFVF9ST1cuaGFzKGl0ZW1bJ2luZGV4Um93J10pXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgU3RyaW5nKGl0ZW1bVG9vbHMuRmlyc3RDaGFyVG9Mb3dlcihjb2x1bW5OYW1lKV0pLnRyaW0oKS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKFN0cmluZyh0aGlzLl9ncmlkU2VhcmNoKCkpLnRyaW0oKS50b1VwcGVyQ2FzZSgpKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBmb3IoY29uc3QgeyBpbmRleFJvdyB9IG9mIGxpc3RGaWx0ZXJlZCBhcyBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICBTRVRfUk9XLmFkZChpbmRleFJvdyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGlzdCA9IFRvb2xzLkJyZWFrUmVmZXJlbmNlKGxpc3QuY29uY2F0KGxpc3RGaWx0ZXJlZCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gVG9vbHMuQnJlYWtSZWZlcmVuY2UobGlzdCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgLyoqIEdldCBDb2x1bW4gQ29uZmlndXJhdGlvbiAqL1xyXG4gICAgcHJvdGVjdGVkIF9HZXRDb2x1bW5Db25maWcgPSAoY29sdW1uTmFtZTogc3RyaW5nKTogSUdyaWRDb2x1bW48VD4gfCB1bmRlZmluZWQgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbnMoKS5maW5kKHggPT4geC5wcm9wZXJ0eS5yZXBsYWNlQWxsKCcgJywgJycpLnRvVXBwZXJDYXNlKCkgPT0gY29sdW1uTmFtZS5yZXBsYWNlQWxsKCcgJywgJycpLnRvVXBwZXJDYXNlKCkpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogQ2xlYW4gTmFtZSBvciBnZXQgYWxpYXMgKi9cclxuICAgIHByb3RlY3RlZCBfR2V0Q29sdW1uTmFtZSA9IChjb2x1bW5OYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbkNvbmZpZyA9IHRoaXMuX0dldENvbHVtbkNvbmZpZyhjb2x1bW5OYW1lKTtcclxuXHJcbiAgICAgICAgLy9HZXQgQWxpYXNcclxuICAgICAgICBpZiAoY29sdW1uQ29uZmlnICYmIGNvbHVtbkNvbmZpZy5hbGlhcyAmJiBjb2x1bW5Db25maWcuYWxpYXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY29sdW1uQ29uZmlnLmFsaWFzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9DbGVhbiBoZWFkZXJOYW1lXHJcbiAgICAgICAgaWYgKHRoaXMuY2xlYW5Db2x1bW5OYW1lKCkgJiYgY29sdW1uTmFtZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWUgPSBUb29scy5GaXJzdENoYXJUb0xvd2VyKGNvbHVtbk5hbWUpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgY2hhckFycmF5ID0gW107XHJcbiAgICAgICAgICAgIGZvcihjb25zdCBjaGFyIG9mIGNvbHVtbk5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGlmKGNoYXIgPT09IGNoYXIudG9VcHBlckNhc2UoKSkgY2hhckFycmF5LnB1c2goJyAnKTtcclxuICAgICAgICAgICAgICAgIGNoYXJBcnJheS5wdXNoKGNoYXIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjaGFyQXJyYXlbMF0gPSBjaGFyQXJyYXlbMF0udG9VcHBlckNhc2UoKTtcclxuICAgICAgICAgICAgY29sdW1uTmFtZSA9IGNoYXJBcnJheS5qb2luKCcnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjb2x1bW5OYW1lLnRyaW0oKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgX0dldFNob3J0SWNvbiA9IChjb2x1bW5OYW1lOiBzdHJpbmcpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc29ydCgpLmNvbHVtbk5hbWUgPT0gY29sdW1uTmFtZSA/IHRoaXMuX3NvcnQoKS5pY29uIDogJyc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIF9HZXRJZCA9IChpbmRleFJvdzogbnVtYmVyLCBpbmRleENvbHVtbjogbnVtYmVyLCBzdWZmaXg6IHN0cmluZyA9ICcnKTogc3RyaW5nID0+IHtcclxuICAgICAgICBpZiAoc3VmZml4Lmxlbmd0aCA+IDApIHN1ZmZpeCA9IGAtJHtzdWZmaXh9YDtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5faWR9LXJvdyR7aW5kZXhSb3d9Y29sdW1uJHtpbmRleENvbHVtbn0ke3N1ZmZpeH1gO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBfR2V0Q2VsbFZhbHVlID0gKHJvdzogYW55LCBjb2x1bW5OYW1lOiBzdHJpbmcpOiBhbnkgPT4ge1xyXG4gICAgICAgIHJldHVybiByb3dbVG9vbHMuRmlyc3RDaGFyVG9Mb3dlcihjb2x1bW5OYW1lKS5yZXBsYWNlQWxsKCcgJywgJycpXTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgX0dldFRvb2x0aXAgPSAocHJlZml4OiBzdHJpbmcsIHJvdzogYW55LCBzdWZmaXg6IHN0cmluZyA9ICcnKTogc3RyaW5nID0+IHtcclxuICAgICAgICBsZXQgY29sdW1uID0gVG9vbHMuRmlyc3RDaGFyVG9Mb3dlcih0aGlzLnRvb2x0aXBCeVJvdygpKS5yZXBsYWNlQWxsKCcgJywgJycpO1xyXG5cclxuICAgICAgICBpZiAoc3VmZml4Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgc3VmZml4ID0gYCAke3N1ZmZpeH1gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbHRpcEJ5Um93KCkubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICA/IGAke3ByZWZpeH0gJHtyb3dbY29sdW1uXX0ke3N1ZmZpeH1gXHJcbiAgICAgICAgICAgIDogYCR7cHJlZml4fSR7c3VmZml4fWA7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIF9IaWRlUm93ID0gKGdyb3VwOiBJR3JpZERhdGFTb3VyY2UpOiBib29sZWFuID0+IHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuX2lzR3JvdXBlZCgpID8gISh0aGlzLl9leHBhbmRlZEdyb3Vwcy5zb21lKHggPT4geCA9PSBncm91cC5ncm91cEJ5KSkgOiBmYWxzZSlcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgX0lzQ2VsbFR5cGUocHJvcGVydHk6IHN0cmluZywgZGF0YTogYW55LCB0eXBlOiAnbnVtYmVyJyB8ICdkYXRlJyB8ICd0ZW1wbGF0ZScgfCAnY29lclRleHRib3gnIHwgJ2NvZXJOdW1iZXJib3gnIHwgJ2NvZXJTZWxlY3Rib3gnICB8ICdjb2VyU3dpdGNoJyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCByZXNwb25zZSA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbkNvbmZpZyA9IHRoaXMuX0dldENvbHVtbkNvbmZpZyhwcm9wZXJ0eSk7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhW3Byb3BlcnR5XTtcclxuICAgICAgICBjb25zdCByb3cgPSBUb29scy5CcmVha1JlZmVyZW5jZShkYXRhKTtcclxuXHJcbiAgICAgICAgaWYgKGNvbHVtbkNvbmZpZykge1xyXG4gICAgICAgICAgICBpZiAoWydjb2VyVGV4dGJveCcsICdjb2VyTnVtYmVyYm94JywgJ2NvZXJTZWxlY3Rib3gnLCAnY29lclN3aXRjaCddLmluY2x1ZGVzKHR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbnB1dENvbmZpZzogYW55ID0gY29sdW1uQ29uZmlnO1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBpbnB1dENvbmZpZy5oYXNPd25Qcm9wZXJ0eSh0eXBlKVxyXG4gICAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiBpbnB1dENvbmZpZ1t0eXBlXSA9PT0gJ2Z1bmN0aW9uJ1xyXG4gICAgICAgICAgICAgICAgICAgICYmIGlucHV0Q29uZmlnW3R5cGVdKHsgcHJvcGVydHksIHJvdywgdmFsdWUgfSkuaXNJbnB1dDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZWxzZSBzd2l0Y2godHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29sdW1uQ29uZmlnLnR5cGVOdW1iZXIgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IGNvbHVtbkNvbmZpZy50eXBlTnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGNvbHVtbkNvbmZpZy50eXBlTnVtYmVyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gKGRhdGEgPT09IG51bGwpID8gZmFsc2UgOiBjb2x1bW5Db25maWcudHlwZU51bWJlcih7IHByb3BlcnR5LCByb3csIHZhbHVlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSAnZGF0ZSc6IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbHVtbkNvbmZpZy50eXBlRGF0ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY29sdW1uQ29uZmlnLnR5cGVEYXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGNvbHVtbkNvbmZpZy50eXBlRGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IChkYXRhID09PSBudWxsKSA/IGZhbHNlIDogY29sdW1uQ29uZmlnLnR5cGVEYXRlKHsgcHJvcGVydHksIHJvdywgdmFsdWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICd0ZW1wbGF0ZSc6IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gKHR5cGVvZiBjb2x1bW5Db25maWcudGVtcGxhdGUgPT09ICdzdHJpbmcnKSB8fCAodHlwZW9mIGNvbHVtbkNvbmZpZy50ZW1wbGF0ZSA9PT0gJ2Z1bmN0aW9uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgX0lzQ2VsbENvbG9yKHByb3BlcnR5OiBzdHJpbmcsIGRhdGE6IGFueSwgY29sb3I6ICdjb2xvckJsdWUnIHwgJ2NvbG9yR3JlZW4nIHwgJ2NvbG9yWWVsbG93JyB8ICdjb2xvclJlZCcpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBjb2x1bW5Db25maWc6IGFueSA9IHRoaXMuX0dldENvbHVtbkNvbmZpZyhwcm9wZXJ0eSk7XHJcblxyXG4gICAgICAgIGlmIChjb2x1bW5Db25maWcpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW5Db25maWdbY29sb3JdID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY29sdW1uQ29uZmlnW2NvbG9yXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGNvbHVtbkNvbmZpZ1tjb2xvcl0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY29sdW1uQ29uZmlnW2NvbG9yXSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHksXHJcbiAgICAgICAgICAgICAgICAgICAgcm93OiBUb29scy5CcmVha1JlZmVyZW5jZShkYXRhKSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGF0YVtwcm9wZXJ0eV1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIEdldEF0dHJpYnV0ZShwcm9wZXJ0eTogc3RyaW5nLCBkYXRhOiBhbnksIGF0dHJpYnV0ZTogc3RyaW5nLCB0eXBlOiAnY29lclN3aXRjaCcgfCAnY29lclRleHRib3gnIHwgJ2NvZXJOdW1iZXJib3gnfCAnY29lclNlbGVjdGJveCcgfCAnZGVmYXVsLWNlbGwnICk6IGFueSB7XHJcbiAgICAgICAgY29uc3QgY29sdW1uQ29uZmlnID0gdGhpcy5fR2V0Q29sdW1uQ29uZmlnKHByb3BlcnR5KTtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IFRvb2xzLklzTm90TnVsbChkYXRhKSA/IGRhdGFbcHJvcGVydHldIDogbnVsbDtcclxuICAgICAgICBjb25zdCByb3cgPSBUb29scy5CcmVha1JlZmVyZW5jZShkYXRhKTtcclxuXHJcbiAgICAgICAgaWYgKGNvbHVtbkNvbmZpZykge1xyXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2RlZmF1bC1jZWxsJykge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoKGF0dHJpYnV0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RleHRBbGlnbic6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbkNvbmZpZz8udGV4dEFsaWduIHx8ICdsZWZ0JztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RlbXBsYXRlJzoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dENvbmZpZzogYW55ID0gY29sdW1uQ29uZmlnO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0Q29uZmlnLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHR5cGVvZiBpbnB1dENvbmZpZ1thdHRyaWJ1dGVdID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dENvbmZpZ1thdHRyaWJ1dGVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodHlwZW9mIGlucHV0Q29uZmlnW2F0dHJpYnV0ZV0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5wdXRDb25maWdbYXR0cmlidXRlXSh7IHByb3BlcnR5LCByb3csIHZhbHVlIH0pIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmKFsnY29lclRleHRib3gnLCAnY29lck51bWJlcmJveCcsICdjb2VyU2VsZWN0Ym94JywgJ2NvZXJTd2l0Y2gnXS5pbmNsdWRlcyh0eXBlKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaW5wdXRDb25maWc6IGFueSA9IGNvbHVtbkNvbmZpZztcclxuICAgICAgICAgICAgICAgIGlmIChpbnB1dENvbmZpZy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSAmJiB0eXBlb2YgaW5wdXRDb25maWdbdHlwZV0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5wdXRDb25maWdbdHlwZV0oeyBwcm9wZXJ0eSwgcm93LCB2YWx1ZSB9KVthdHRyaWJ1dGVdIHx8IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBCdXR0b25CeVJvdyhwcm9wZXJ0eTogJ3Nob3dEZWxldGVCdXR0b24nIHwgJ3Nob3dFZGl0QnV0dG9uJyB8ICdzaG93R29CdXR0b24nLCBkYXRhOiBhbnkgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IHJlc3BvbnNlID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uQnlSb3c6IGFueSA9IHRoaXMuYnV0dG9uQnlSb3c7XHJcbiAgICAgICAgY29uc3Qgcm93ID0gVG9vbHMuSXNOb3ROdWxsKGRhdGEpID8gVG9vbHMuQnJlYWtSZWZlcmVuY2UoZGF0YSkgOiBudWxsO1xyXG5cclxuICAgICAgICBpZiAoYnV0dG9uQnlSb3cuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKSB7XHJcbiAgICAgICAgICAgIGlmIChyb3cgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gKHR5cGVvZiBidXR0b25CeVJvd1twcm9wZXJ0eV0gPT09ICdib29sZWFuJykgPyBidXR0b25CeVJvd1twcm9wZXJ0eV0gOiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgYnV0dG9uQnlSb3dbcHJvcGVydHldID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gYnV0dG9uQnlSb3dbcHJvcGVydHldO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgYnV0dG9uQnlSb3dbcHJvcGVydHldID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9IGJ1dHRvbkJ5Um93W3Byb3BlcnR5XSh7IHByb3BlcnR5LCByb3csIHZhbHVlOiBudWxsIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzcG9uc2UgPyAodGhpcy5fdmFsdWUgJiYgdGhpcy5fdmFsdWUubGVuZ3RoID4gMCkgOiBmYWxzZTtcclxuICAgIH1cclxufSJdfQ==
408
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1ncmlkLmV4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvY29tcG9uZW50cy9saWIvY29lci1ncmlkL2NvZXItZ3JpZC5leHRlbnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFpQixTQUFTLEVBQWMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNsRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFNdkYsTUFBTSxPQUFPLGlCQUFxQixTQUFRLFlBQVk7SUFKdEQ7O1FBTUksWUFBWTtRQUNPLFVBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFN0MsVUFBVTtRQUNBLGNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFhLGNBQWMsQ0FBQyxDQUFDO1FBQzNELGdCQUFXLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBYyxhQUFhLENBQUMsQ0FBQztRQUM3RCxvQkFBZSxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxzQkFBaUIsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEQsc0JBQWlCLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hE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bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsUUFBUSxFQUFFLEVBQUU7aUJBQ2Y7OEJBaUNZLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJR3JpZEJ1dHRvbkJ5Um93LCBJR3JpZENvbHVtbiwgSUdyaWREYXRhU291cmNlLCBJR3JpZEltcG9ydCwgSUdyaWRIZWFkZXJCdXR0b24sIElHcmlkSGVhZGVyRXhwb3J0QnV0dG9uLCBJR3JpZEtleXVwRW50ZXIsIElHcmlkU2VhcmNoLCBJR3JpZElucHV0U3dpdGNoQ2hhbmdlLCBJR3JpZElucHV0VGV4dGJveCwgSUdyaWRTb3J0LCBJR3JpZENoZWNrYm94LCBJR3JpZElucHV0Q2hlY2tib3gsIElHcmlkSGVhZGVyIH0gZnJvbSBcImNvZXItZWxlbWVudHMvaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIHZpZXdDaGlsZCwgdmlld0NoaWxkcmVuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29lckNoZWNrYm94IH0gZnJvbSBcIi4uLy4uL2xpYi9jb2VyLWNoZWNrYm94L2NvZXItY2hlY2tib3guY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvZXJOdW1iZXJCb3ggfSBmcm9tIFwiLi4vLi4vbGliL2NvZXItbnVtYmVyYm94L2NvZXItbnVtYmVyYm94LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBDb2VyU2VsZWN0Ym94IH0gZnJvbSBcIi4uLy4uL2xpYi9jb2VyLXNlbGVjdGJveC9jb2VyLXNlbGVjdGJveC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29lclRleHRCb3ggfSBmcm9tIFwiLi4vLi4vbGliL2NvZXItdGV4dGJveC9jb2VyLXRleHRib3guY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvZXJBbGVydCwgQ29udHJvbFZhbHVlLCBEYXRlVGltZSwgU2NyZWVuLCBUb29scyB9IGZyb20gJ2NvZXItZWxlbWVudHMvdG9vbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NvZXItZ3JpZC1leHRlbnNpb24nLFxyXG4gICAgdGVtcGxhdGU6ICcnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2VyR3JpZEV4dGVuc2lvbjxUPiBleHRlbmRzIENvbnRyb2xWYWx1ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuICAgIC8vSW5qZWN0aW9uc1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFsZXJ0ID0gaW5qZWN0KENvZXJBbGVydCk7XHJcblxyXG4gICAgLy9FbGVtZW50c1xyXG4gICAgcHJvdGVjdGVkIGlucHV0RmlsZSA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPignaW5wdXRGaWxlUmVmJyk7XHJcbiAgICBwcm90ZWN0ZWQgaW5wdXRTZWFyY2ggPSB2aWV3Q2hpbGQucmVxdWlyZWQ8Q29lclRleHRCb3g+KCdpbnB1dFNlYXJjaCcpO1xyXG4gICAgcHJvdGVjdGVkIGNvZXJUZXh0Ym94TGlzdCA9IHZpZXdDaGlsZHJlbihDb2VyVGV4dEJveCk7XHJcbiAgICBwcm90ZWN0ZWQgY29lck51bWJlcmJveExpc3QgPSB2aWV3Q2hpbGRyZW4oQ29lck51bWJlckJveCk7XHJcbiAgICBwcm90ZWN0ZWQgY29lclNlbGVjdGJveExpc3QgPSB2aWV3Q2hpbGRyZW4oQ29lclNlbGVjdGJveCk7XHJcbiAgICBwcm90ZWN0ZWQgY29lckNoZWNrYm94TGlzdCA9IHZpZXdDaGlsZHJlbihDb2VyQ2hlY2tib3gpO1xyXG5cclxuICAgIC8vVmFyaWFibGVzXHJcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX3ZhbHVlOiBUW10gPSBbXTtcclxuICAgIHByb3RlY3RlZCB2YWx1ZV9zaWduYWwgPSBzaWduYWw8VFtdPihbXSk7XHJcbiAgICBwcm90ZWN0ZWQgX2dyaWRTZWFyY2ggPSBzaWduYWw8c3RyaW5nIHwgbnVtYmVyPignJyk7XHJcbiAgICBwcm90ZWN0ZWQgX2lzTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBwcm90ZWN0ZWQgX2lzTG9hZGluZ01lc3NhZ2U6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgcHJvdGVjdGVkIF9pZDogc3RyaW5nID0gVG9vbHMuR2V0R3VpZCgnY29lci1ncmlkJyk7XHJcbiAgICBwcm90ZWN0ZWQgX2V4cGFuZGVkR3JvdXBzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgcHJvdGVjdGVkIF9lbmFibGVBbmltYXRpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgX2luZGV4Rm9jdXMgPSBzaWduYWw8bnVtYmVyPigwKTtcclxuICAgIHByb3RlY3RlZCBfc29ydCA9IHNpZ25hbDxJR3JpZFNvcnQ+KHsgY29sdW1uTmFtZTogJycsIGRpcmVjdGlvbjogJ25vbmUnLCBpY29uOiAnJyB9KTtcclxuXHJcbiAgICAvL0dlbmVyaWMgVG9vbHNcclxuICAgIHByb3RlY3RlZCBHZXROdW1lcmljRm9ybWF0ID0gVG9vbHMuR2V0TnVtZXJpY0Zvcm1hdDtcclxuICAgIHByb3RlY3RlZCBHZXREYXRlRm9ybWF0ID0gRGF0ZVRpbWUuR2V0RGF0ZUZvcm1hdDtcclxuXHJcbiAgICAvL0lucHV0c1xyXG4gICAgcHVibGljIGNvbHVtbnMgPSBpbnB1dDxJR3JpZENvbHVtbjxUPltdPihbXSk7XHJcbiAgICBwdWJsaWMgY2xlYW5Db2x1bW5OYW1lID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgICBASW5wdXQoKSBhZGRCdXR0b246IElHcmlkSGVhZGVyQnV0dG9uID0geyBzaG93OiBmYWxzZSB9O1xyXG4gICAgQElucHV0KCkgZXhwb3J0QnV0dG9uOiBJR3JpZEhlYWRlckV4cG9ydEJ1dHRvbiA9IHsgc2hvdzogZmFsc2UgfTtcclxuICAgIEBJbnB1dCgpIGltcG9ydEJ1dHRvbjogSUdyaWRIZWFkZXJCdXR0b24gPSB7IHNob3c6IGZhbHNlIH07XHJcbiAgICBASW5wdXQoKSBzZWFyY2g6IElHcmlkU2VhcmNoID0geyBzaG93OiBmYWxzZSwgaWdub3JlOiBmYWxzZSB9O1xyXG4gICAgQElucHV0KCkgYnV0dG9uQnlSb3c6IElHcmlkQnV0dG9uQnlSb3c8VD4gPSB7fTtcclxuICAgIEBJbnB1dCgpIGNoZWNrYm94OiBJR3JpZENoZWNrYm94ID0geyBzaG93OiBmYWxzZSB9O1xyXG4gICAgcHVibGljIHRvb2x0aXBCeVJvdyA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gICAgcHVibGljIGlzTG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyBpc0Rpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIHJvd3NCeVBhZ2UgPSBpbnB1dDxudW1iZXI+KDUwKTtcclxuICAgIHB1YmxpYyBncm91cEJ5ID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgICBwdWJsaWMgc2hvd0NvbHVtbkdyb3VwZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwdWJsaWMgcm93c0J5R3JvdXAgPSBpbnB1dDxudW1iZXI+KDUwKTtcclxuICAgIHB1YmxpYyBpc0ludmlzaWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyBzaG93Rm9vdGVyID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgICBwdWJsaWMgd2lkdGggPSBpbnB1dDxzdHJpbmc+KCcxMDAlJyk7XHJcbiAgICBwdWJsaWMgTWluV2lkdGggPSBpbnB1dDxzdHJpbmc+KCcyNTBweCcpO1xyXG4gICAgcHVibGljIE1heFdpZHRoID0gaW5wdXQ8c3RyaW5nPignMTAwJScpO1xyXG4gICAgcHVibGljIGhlaWdodCA9IGlucHV0PHN0cmluZz4oJzM1MHB4Jyk7XHJcbiAgICBwdWJsaWMgbWluSGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPignMTQwcHgnKTtcclxuICAgIHB1YmxpYyBtYXhIZWlnaHQgPSBpbnB1dDxzdHJpbmc+KCcxMDB2aCcpO1xyXG4gICAgcHVibGljIG1hcmdpbiA9IGlucHV0PHN0cmluZz4oJ2F1dG8nKTtcclxuICAgIHB1YmxpYyBlbmFibGVTb3J0ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgICBwdWJsaWMgZW5hYmxlUm93Rm9jdXMgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgICAvL091dHB1dHNcclxuICAgIHB1YmxpYyBvbkNsaWNrQWRkID0gb3V0cHV0PHZvaWQ+KCk7XHJcbiAgICBwdWJsaWMgb25DbGlja0ltcG9ydCA9IG91dHB1dDxJR3JpZEltcG9ydDxUPj4oKTtcclxuICAgIHB1YmxpYyBvbkNsaWNrRXhwb3J0ID0gb3V0cHV0PFRbXT4oKTtcclxuICAgIHB1YmxpYyBvbkNsaWNrUm93ID0gb3V0cHV0PFQ+KCk7XHJcbiAgICBwdWJsaWMgb25Eb3VibGVDbGlja1JvdyA9IG91dHB1dDxUPigpO1xyXG4gICAgcHVibGljIG9uQ2xpY2tEZWxldGVSb3cgPSBvdXRwdXQ8VD4oKTtcclxuICAgIHB1YmxpYyBvbkNsaWNrRWRpdFJvdyA9IG91dHB1dDxUPigpO1xyXG4gICAgcHVibGljIG9uQ2xpY2tHb1JvdyA9IG91dHB1dDxUPigpO1xyXG4gICAgcHVibGljIG9uS2V5dXBFbnRlciA9IG91dHB1dDxJR3JpZEtleXVwRW50ZXI+KCk7XHJcbiAgICBwdWJsaWMgb25LZXl1cEVudGVyTGFzdCA9IG91dHB1dDx2b2lkPigpO1xyXG4gICAgcHVibGljIG9uU3dpdGNoQ2hhbmdlID0gb3V0cHV0PElHcmlkSW5wdXRTd2l0Y2hDaGFuZ2U8VD4+KCk7XHJcbiAgICBwdWJsaWMgb25UZXh0Ym94Q2hhbmdlID0gb3V0cHV0PElHcmlkSW5wdXRUZXh0Ym94PFQ+PigpO1xyXG4gICAgcHVibGljIG9uU2VsZWN0Ym94Q2hhbmdlID0gb3V0cHV0PElHcmlkSW5wdXRUZXh0Ym94PFQ+PigpO1xyXG4gICAgcHVibGljIG9uQ2hlY2tib3hDaGFuZ2UgPSBvdXRwdXQ8SUdyaWRJbnB1dENoZWNrYm94PFQ+PigpO1xyXG5cclxuICAgIC8vY29tcHV0ZWRcclxuICAgIHByb3RlY3RlZCBfaXNEaXNhYmxlZCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0Rpc2FibGVkKCkgfHwgdGhpcy5pc0xvYWRpbmcoKSB8fCB0aGlzLmlzSW52aXNpYmxlKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL2NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgX2lzR3JvdXBlZCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ncm91cEJ5KCkubGVuZ3RoID4gMDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vZ2V0dGVyXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF9oZWlnaHQoKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gdGhpcy5oZWlnaHQoKTtcclxuXHJcbiAgICAgICAgaWYgKGhlaWdodCA9PSAnZnVsbCcpIHtcclxuICAgICAgICAgICAgY29uc3QgVE9PTEJBUiA9IDQ1O1xyXG4gICAgICAgICAgICBjb25zdCBQQUdFX0hFQURFUiA9IDcwO1xyXG4gICAgICAgICAgICBjb25zdCBHUklEX0hFQURFUiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGAke3RoaXMuX2lkfS1oZWFkZXJgKSE7XHJcbiAgICAgICAgICAgIGNvbnN0IEhFQURFUiA9IChHUklEX0hFQURFUiAmJiBHUklEX0hFQURFUi5jaGlsZHJlbi5sZW5ndGggPiAwKSA/IDUwIDogMDtcclxuICAgICAgICAgICAgY29uc3QgTUFSR0lOID0gMzA7XHJcbiAgICAgICAgICAgIGNvbnN0IFBBRERJTkcgPSAyMDtcclxuICAgICAgICAgICAgY29uc3QgRk9PVEVSID0gdGhpcy5zaG93Rm9vdGVyKCkgPyAyNC41IDogMDtcclxuICAgICAgICAgICAgaGVpZ2h0ID0gKFNjcmVlbi5XSU5ET1dfSEVJR0hUIC0gVE9PTEJBUiAtIFBBR0VfSEVBREVSIC0gTUFSR0lOIC0gSEVBREVSIC0gUEFERElORyAtIEZPT1RFUikgKyAncHgnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGhlaWdodDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy9nZXR0ZXJcclxuICAgIHByb3RlY3RlZCBnZXQgX29ubHlPbmVDaGVjaygpIHtcclxuICAgICAgICByZXR1cm4gVG9vbHMuSXNOb3ROdWxsKHRoaXMuY2hlY2tib3gub25seU9uZUNoZWNrKSAmJiB0aGlzLmNoZWNrYm94Lm9ubHlPbmVDaGVjaztcclxuICAgIH1cclxuXHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIFRvb2xzLlNsZWVwKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX2VuYWJsZUFuaW1hdGlvbnMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLl9pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5faXNMb2FkaW5nTWVzc2FnZSA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICAgIHB1YmxpYyBvdmVycmlkZSBTZXRWYWx1ZSh2YWx1ZTogVFtdKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IGluZGV4Um93ID0gMDtcclxuICAgICAgICBpZighVG9vbHMuSXNOb3ROdWxsKHZhbHVlKSkgdmFsdWUgPSBbXTtcclxuXHJcbiAgICAgICAgY29uc3QgZGF0YVNvdXJjZSA9IFRvb2xzLkJyZWFrUmVmZXJlbmNlKHZhbHVlKS5tYXAoKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih7IGNoZWNrZWQ6IGZhbHNlIH0sIHsgLi4uaXRlbSB9LCB7IGluZGV4Um93OiBpbmRleFJvdysrIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5fVXBkYXRlVmFsdWUoZGF0YVNvdXJjZSk7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBkYXRhU291cmNlO1xyXG4gICAgICAgIHRoaXMudmFsdWVfc2lnbmFsLnNldChkYXRhU291cmNlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy9Db250cm9sVmFsdWVBY2Nlc3NvclxyXG4gICAgcHVibGljIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IFRbXSk6IHZvaWQge1xyXG4gICAgICAgIGxldCBpbmRleFJvdyA9IDA7XHJcbiAgICAgICAgaWYoIVRvb2xzLklzTm90TnVsbCh2YWx1ZSkpIHZhbHVlID0gW107XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBUb29scy5CcmVha1JlZmVyZW5jZSh2YWx1ZSkubWFwKChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oeyBjaGVja2VkOiBmYWxzZSB9LCB7IC4uLml0ZW0gfSwgeyBpbmRleFJvdzogaW5kZXhSb3crKyB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gZGF0YVNvdXJjZTtcclxuICAgICAgICB0aGlzLnZhbHVlX3NpZ25hbC5zZXQoZGF0YVNvdXJjZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgICAvL2NvbXB1dGVkXHJcbiAgICAgcHJvdGVjdGVkIGdyaWRDb2x1bW5zID0gY29tcHV0ZWQ8SUdyaWRIZWFkZXJbXT4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IFNFVF9DT0xVTU5TID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcblxyXG4gICAgICAgIC8vSGFzIGZpbHRlciBjb2x1bW5zP1xyXG4gICAgICAgIGlmICh0aGlzLmNvbHVtbnMoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgeyBwcm9wZXJ0eSB9IG9mIHRoaXMuY29sdW1ucygpKSB7XHJcbiAgICAgICAgICAgICAgICBTRVRfQ09MVU1OUy5hZGQocHJvcGVydHkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL0dldCBhbGwgY29sdW1uc1xyXG4gICAgICAgIGVsc2UgZm9yIChjb25zdCByb3cgb2YgdGhpcy52YWx1ZV9zaWduYWwoKSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIHJvdykge1xyXG4gICAgICAgICAgICAgICAgU0VUX0NPTFVNTlMuYWRkKHByb3BlcnR5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9SZW1vdmUgaW5kZXhSb3cgY29sdW1uXHJcbiAgICAgICAgaWYgKFNFVF9DT0xVTU5TLmhhcygnaW5kZXhSb3cnKSkge1xyXG4gICAgICAgICAgICBTRVRfQ09MVU1OUy5kZWxldGUoJ2luZGV4Um93Jyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL1JlbW92ZSBncm91cEJ5IGNvbHVtblxyXG4gICAgICAgIGlmICh0aGlzLl9pc0dyb3VwZWQoKSAmJiAhdGhpcy5zaG93Q29sdW1uR3JvdXBlZCgpICYmIFNFVF9DT0xVTU5TLmhhcyh0aGlzLmdyb3VwQnkoKSkpIHtcclxuICAgICAgICAgICAgU0VUX0NPTFVNTlMuZGVsZXRlKHRoaXMuZ3JvdXBCeSgpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vU2V0IGluZGV4IGNvbHVtblxyXG4gICAgICAgIGxldCBpbmRleENvbHVtbiA9IDA7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oU0VUX0NPTFVNTlMpLm1hcChwcm9wZXJ0eSA9PiBUb29scy5CcmVha1JlZmVyZW5jZTxJR3JpZEhlYWRlcj4oe1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBwcm9wZXJ0eSxcclxuICAgICAgICAgICAgaW5kZXhDb2x1bW46IGluZGV4Q29sdW1uKyssXHJcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLl9HZXRDb2x1bW5Db25maWcocHJvcGVydHkpPy53aWR0aCB8fCAnYXV0bydcclxuICAgICAgICB9KSk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgLy9jb21wdXRlZFxyXG4gICAgcHJvdGVjdGVkIGdyaWREYXRhU291cmNlID0gY29tcHV0ZWQ8SUdyaWREYXRhU291cmNlW10+KCgpID0+IHtcclxuICAgICAgICBsZXQgbGlzdCA9IHRoaXMuZ3JpZERhdGFTb3VyY2VGaWx0ZXJlZCgpO1xyXG5cclxuICAgICAgICAvL0l0J3MgR3JvdXBlZD9cclxuICAgICAgICBpZiAodGhpcy5faXNHcm91cGVkKCkpIHtcclxuICAgICAgICAgICAgLy9sZXQgaW5kZXhSb3cgPSAwO1xyXG4gICAgICAgICAgICBsZXQgaW5kZXhHcm91cCA9IDA7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBTRVRfQ09MVU1OID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIGxpc3QgYXMgYW55KSB7XHJcbiAgICAgICAgICAgICAgICBTRVRfQ09MVU1OLmFkZChyb3dbdGhpcy5ncm91cEJ5KCldKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgREFUQV9TT1VSQ0VfR1JPUFVFRCA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBTRVRfQ09MVU1OKSB7XHJcbiAgICAgICAgICAgICAgICBEQVRBX1NPVVJDRV9HUk9QVUVELnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwQnk6IGNvbHVtbixcclxuICAgICAgICAgICAgICAgICAgICBpbmRleEdyb3VwOiBpbmRleEdyb3VwKyssXHJcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoOiBsaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtW3RoaXMuZ3JvdXBCeSgpXSA9PSBjb2x1bW4pLmxlbmd0aCxcclxuICAgICAgICAgICAgICAgICAgICByb3dzOiBbLi4ubGlzdF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtW3RoaXMuZ3JvdXBCeSgpXSA9PSBjb2x1bW4pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpY2UoMCwgdGhpcy5yb3dzQnlHcm91cCgpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLy5tYXAoKGl0ZW06IGFueSkgPT4gT2JqZWN0LmFzc2lnbih7IGluZGV4Um93OiBpbmRleFJvdysrIH0sIGl0ZW0pKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vUmVzcG9uc2UgYnkgZ3JvdXBcclxuICAgICAgICAgICAgcmV0dXJuIFsuLi5EQVRBX1NPVVJDRV9HUk9QVUVEXS5zcGxpY2UoMCwgdGhpcy5yb3dzQnlQYWdlKCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9SZXNwb25zZVxyXG4gICAgICAgIHJldHVybiBbe1xyXG4gICAgICAgICAgICBncm91cEJ5OiAnTm90IEdyb3VwZWQnLFxyXG4gICAgICAgICAgICBpbmRleEdyb3VwOiAtMSxcclxuICAgICAgICAgICAgbGVuZ3RoOiAtMSxcclxuICAgICAgICAgICAgcm93czogWy4uLmxpc3RdLnNwbGljZSgwLCB0aGlzLnJvd3NCeVBhZ2UoKSlcclxuICAgICAgICB9XTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICAvL2NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgZ3JpZERhdGFTb3VyY2VGaWx0ZXJlZCA9IGNvbXB1dGVkPFRbXT4oKCkgPT4ge1xyXG4gICAgICAgIGxldCBsaXN0OiBUW10gPSBbXTtcclxuXHJcbiAgICAgICAgY29uc3QgZGF0YVNvdXJjZSA9IFRvb2xzLkJyZWFrUmVmZXJlbmNlKHRoaXMudmFsdWVfc2lnbmFsKCkpO1xyXG5cclxuICAgICAgICAvL0lnbm9yZSBGaWx0ZXJcclxuICAgICAgICBpZiAodGhpcy5fZ3JpZFNlYXJjaCgpID09ICcnIHx8IHRoaXMuc2VhcmNoPy5pZ25vcmUpIHtcclxuICAgICAgICAgICAgbGlzdCA9IGRhdGFTb3VyY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL0ZpbHRlciBieSBzZWFyY2hcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgU0VUX1JPVyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xyXG5cclxuICAgICAgICAgICAgbGV0IGxpc3RGaWx0ZXJlZDogYW55W10gPSBbXTtcclxuICAgICAgICAgICAgZm9yKGNvbnN0IHsgY29sdW1uTmFtZSB9IG9mIHRoaXMuZ3JpZENvbHVtbnMoKSkge1xyXG4gICAgICAgICAgICAgICAgbGlzdEZpbHRlcmVkID0gZGF0YVNvdXJjZS5maWx0ZXIoKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAhU0VUX1JPVy5oYXMoaXRlbVsnaW5kZXhSb3cnXSlcclxuICAgICAgICAgICAgICAgICAgICAmJiBTdHJpbmcoaXRlbVtUb29scy5GaXJzdENoYXJUb0xvd2VyKGNvbHVtbk5hbWUpXSkudHJpbSgpLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoU3RyaW5nKHRoaXMuX2dyaWRTZWFyY2goKSkudHJpbSgpLnRvVXBwZXJDYXNlKCkpXHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvcihjb25zdCB7IGluZGV4Um93IH0gb2YgbGlzdEZpbHRlcmVkIGFzIGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgIFNFVF9ST1cuYWRkKGluZGV4Um93KTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsaXN0ID0gVG9vbHMuQnJlYWtSZWZlcmVuY2UobGlzdC5jb25jYXQobGlzdEZpbHRlcmVkKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBUb29scy5CcmVha1JlZmVyZW5jZShsaXN0KTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICAvKiogR2V0IENvbHVtbiBDb25maWd1cmF0aW9uICovXHJcbiAgICBwcm90ZWN0ZWQgX0dldENvbHVtbkNvbmZpZyA9IChjb2x1bW5OYW1lOiBzdHJpbmcpOiBJR3JpZENvbHVtbjxUPiB8IHVuZGVmaW5lZCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1ucygpLmZpbmQoeCA9PiB4LnByb3BlcnR5LnJlcGxhY2VBbGwoJyAnLCAnJykudG9VcHBlckNhc2UoKSA9PSBjb2x1bW5OYW1lLnJlcGxhY2VBbGwoJyAnLCAnJykudG9VcHBlckNhc2UoKSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBDbGVhbiBOYW1lIG9yIGdldCBhbGlhcyAqL1xyXG4gICAgcHJvdGVjdGVkIF9HZXRDb2x1bW5OYW1lID0gKGNvbHVtbk5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcbiAgICAgICAgY29uc3QgY29sdW1uQ29uZmlnID0gdGhpcy5fR2V0Q29sdW1uQ29uZmlnKGNvbHVtbk5hbWUpO1xyXG5cclxuICAgICAgICAvL0dldCBBbGlhc1xyXG4gICAgICAgIGlmIChjb2x1bW5Db25maWcgJiYgY29sdW1uQ29uZmlnLmFsaWFzICYmIGNvbHVtbkNvbmZpZy5hbGlhcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5Db25maWcuYWxpYXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL0NsZWFuIGhlYWRlck5hbWVcclxuICAgICAgICBpZiAodGhpcy5jbGVhbkNvbHVtbk5hbWUoKSAmJiBjb2x1bW5OYW1lLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZSA9IFRvb2xzLkZpcnN0Q2hhclRvTG93ZXIoY29sdW1uTmFtZSk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjaGFyQXJyYXkgPSBbXTtcclxuICAgICAgICAgICAgZm9yKGNvbnN0IGNoYXIgb2YgY29sdW1uTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgaWYoY2hhciA9PT0gY2hhci50b1VwcGVyQ2FzZSgpKSBjaGFyQXJyYXkucHVzaCgnICcpO1xyXG4gICAgICAgICAgICAgICAgY2hhckFycmF5LnB1c2goY2hhcik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNoYXJBcnJheVswXSA9IGNoYXJBcnJheVswXS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lID0gY2hhckFycmF5LmpvaW4oJycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWUudHJpbSgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBfR2V0U2hvcnRJY29uID0gKGNvbHVtbk5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zb3J0KCkuY29sdW1uTmFtZSA9PSBjb2x1bW5OYW1lID8gdGhpcy5fc29ydCgpLmljb24gOiAnJztcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgX0dldElkID0gKGluZGV4Um93OiBudW1iZXIsIGluZGV4Q29sdW1uOiBudW1iZXIsIHN1ZmZpeDogc3RyaW5nID0gJycpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgIGlmIChzdWZmaXgubGVuZ3RoID4gMCkgc3VmZml4ID0gYC0ke3N1ZmZpeH1gO1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLl9pZH0tcm93JHtpbmRleFJvd31jb2x1bW4ke2luZGV4Q29sdW1ufSR7c3VmZml4fWA7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIF9HZXRDZWxsVmFsdWUgPSAocm93OiBhbnksIGNvbHVtbk5hbWU6IHN0cmluZyk6IGFueSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHJvd1tUb29scy5GaXJzdENoYXJUb0xvd2VyKGNvbHVtbk5hbWUpLnJlcGxhY2VBbGwoJyAnLCAnJyldO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBfR2V0VG9vbHRpcCA9IChwcmVmaXg6IHN0cmluZywgcm93OiBhbnksIHN1ZmZpeDogc3RyaW5nID0gJycpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgIGxldCBjb2x1bW4gPSBUb29scy5GaXJzdENoYXJUb0xvd2VyKHRoaXMudG9vbHRpcEJ5Um93KCkpLnJlcGxhY2VBbGwoJyAnLCAnJyk7XHJcblxyXG4gICAgICAgIGlmIChzdWZmaXgubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBzdWZmaXggPSBgICR7c3VmZml4fWA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy50b29sdGlwQnlSb3coKS5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgID8gYCR7cHJlZml4fSAke3Jvd1tjb2x1bW5dfSR7c3VmZml4fWBcclxuICAgICAgICAgICAgOiBgJHtwcmVmaXh9JHtzdWZmaXh9YDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgX0hpZGVSb3cgPSAoZ3JvdXA6IElHcmlkRGF0YVNvdXJjZSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5faXNHcm91cGVkKCkgPyAhKHRoaXMuX2V4cGFuZGVkR3JvdXBzLnNvbWUoeCA9PiB4ID09IGdyb3VwLmdyb3VwQnkpKSA6IGZhbHNlKVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBfSXNDZWxsVHlwZShwcm9wZXJ0eTogc3RyaW5nLCBkYXRhOiBhbnksIHR5cGU6ICdudW1iZXInIHwgJ2RhdGUnIHwgJ3RlbXBsYXRlJyB8ICdjb2VyVGV4dGJveCcgfCAnY29lck51bWJlcmJveCcgfCAnY29lclNlbGVjdGJveCcgIHwgJ2NvZXJTd2l0Y2gnKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IHJlc3BvbnNlID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgY29sdW1uQ29uZmlnID0gdGhpcy5fR2V0Q29sdW1uQ29uZmlnKHByb3BlcnR5KTtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGFbcHJvcGVydHldO1xyXG4gICAgICAgIGNvbnN0IHJvdyA9IFRvb2xzLkJyZWFrUmVmZXJlbmNlKGRhdGEpO1xyXG5cclxuICAgICAgICBpZiAoY29sdW1uQ29uZmlnKSB7XHJcbiAgICAgICAgICAgIGlmIChbJ2NvZXJUZXh0Ym94JywgJ2NvZXJOdW1iZXJib3gnLCAnY29lclNlbGVjdGJveCcsICdjb2VyU3dpdGNoJ10uaW5jbHVkZXModHlwZSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0Q29uZmlnOiBhbnkgPSBjb2x1bW5Db25maWc7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9IGlucHV0Q29uZmlnLmhhc093blByb3BlcnR5KHR5cGUpXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgdHlwZW9mIGlucHV0Q29uZmlnW3R5cGVdID09PSAnZnVuY3Rpb24nXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgaW5wdXRDb25maWdbdHlwZV0oeyBwcm9wZXJ0eSwgcm93LCB2YWx1ZSB9KS5pc0lucHV0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbHNlIHN3aXRjaCh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdudW1iZXInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW5Db25maWcudHlwZU51bWJlciA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY29sdW1uQ29uZmlnLnR5cGVOdW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgY29sdW1uQ29uZmlnLnR5cGVOdW1iZXIgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSAoZGF0YSA9PT0gbnVsbCkgPyBmYWxzZSA6IGNvbHVtbkNvbmZpZy50eXBlTnVtYmVyKHsgcHJvcGVydHksIHJvdywgdmFsdWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29sdW1uQ29uZmlnLnR5cGVEYXRlID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBjb2x1bW5Db25maWcudHlwZURhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgY29sdW1uQ29uZmlnLnR5cGVEYXRlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gKGRhdGEgPT09IG51bGwpID8gZmFsc2UgOiBjb2x1bW5Db25maWcudHlwZURhdGUoeyBwcm9wZXJ0eSwgcm93LCB2YWx1ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgJ3RlbXBsYXRlJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSAodHlwZW9mIGNvbHVtbkNvbmZpZy50ZW1wbGF0ZSA9PT0gJ3N0cmluZycpIHx8ICh0eXBlb2YgY29sdW1uQ29uZmlnLnRlbXBsYXRlID09PSAnZnVuY3Rpb24nKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBfSXNDZWxsQ29sb3IocHJvcGVydHk6IHN0cmluZywgZGF0YTogYW55LCBjb2xvcjogJ2NvbG9yQmx1ZScgfCAnY29sb3JHcmVlbicgfCAnY29sb3JZZWxsb3cnIHwgJ2NvbG9yUmVkJyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCByZXNwb25zZSA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbkNvbmZpZzogYW55ID0gdGhpcy5fR2V0Q29sdW1uQ29uZmlnKHByb3BlcnR5KTtcclxuXHJcbiAgICAgICAgaWYgKGNvbHVtbkNvbmZpZykge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbHVtbkNvbmZpZ1tjb2xvcl0gPT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBjb2x1bW5Db25maWdbY29sb3JdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgY29sdW1uQ29uZmlnW2NvbG9yXSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBjb2x1bW5Db25maWdbY29sb3JdKHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eSxcclxuICAgICAgICAgICAgICAgICAgICByb3c6IFRvb2xzLkJyZWFrUmVmZXJlbmNlKGRhdGEpLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkYXRhW3Byb3BlcnR5XVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgR2V0QXR0cmlidXRlKHByb3BlcnR5OiBzdHJpbmcsIGRhdGE6IGFueSwgYXR0cmlidXRlOiBzdHJpbmcsIHR5cGU6ICdjb2VyU3dpdGNoJyB8ICdjb2VyVGV4dGJveCcgfCAnY29lck51bWJlcmJveCd8ICdjb2VyU2VsZWN0Ym94JyB8ICdkZWZhdWwtY2VsbCcgKTogYW55IHtcclxuICAgICAgICBjb25zdCBjb2x1bW5Db25maWcgPSB0aGlzLl9HZXRDb2x1bW5Db25maWcocHJvcGVydHkpO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gVG9vbHMuSXNOb3ROdWxsKGRhdGEpID8gZGF0YVtwcm9wZXJ0eV0gOiBudWxsO1xyXG4gICAgICAgIGNvbnN0IHJvdyA9IFRvb2xzLkJyZWFrUmVmZXJlbmNlKGRhdGEpO1xyXG5cclxuICAgICAgICBpZiAoY29sdW1uQ29uZmlnKSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlID09PSAnZGVmYXVsLWNlbGwnKSB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2goYXR0cmlidXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndGV4dEFsaWduJzoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sdW1uQ29uZmlnPy50ZXh0QWxpZ24gfHwgJ2xlZnQnO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndGVtcGxhdGUnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0Q29uZmlnOiBhbnkgPSBjb2x1bW5Db25maWc7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRDb25maWcuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodHlwZW9mIGlucHV0Q29uZmlnW2F0dHJpYnV0ZV0gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlucHV0Q29uZmlnW2F0dHJpYnV0ZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih0eXBlb2YgaW5wdXRDb25maWdbYXR0cmlidXRlXSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dENvbmZpZ1thdHRyaWJ1dGVdKHsgcHJvcGVydHksIHJvdywgdmFsdWUgfSkgfHwgJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYoWydjb2VyVGV4dGJveCcsICdjb2VyTnVtYmVyYm94JywgJ2NvZXJTZWxlY3Rib3gnLCAnY29lclN3aXRjaCddLmluY2x1ZGVzKHR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbnB1dENvbmZpZzogYW55ID0gY29sdW1uQ29uZmlnO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0Q29uZmlnLmhhc093blByb3BlcnR5KHR5cGUpICYmIHR5cGVvZiBpbnB1dENvbmZpZ1t0eXBlXSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dENvbmZpZ1t0eXBlXSh7IHByb3BlcnR5LCByb3csIHZhbHVlIH0pW2F0dHJpYnV0ZV0gfHwgbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIEJ1dHRvbkJ5Um93KHByb3BlcnR5OiAnc2hvd0RlbGV0ZUJ1dHRvbicgfCAnc2hvd0VkaXRCdXR0b24nIHwgJ3Nob3dHb0J1dHRvbicsIGRhdGE6IGFueSA9IG51bGwpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBidXR0b25CeVJvdzogYW55ID0gdGhpcy5idXR0b25CeVJvdztcclxuICAgICAgICBjb25zdCByb3cgPSBUb29scy5Jc05vdE51bGwoZGF0YSkgPyBUb29scy5CcmVha1JlZmVyZW5jZShkYXRhKSA6IG51bGw7XHJcblxyXG4gICAgICAgIGlmIChidXR0b25CeVJvdy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcclxuICAgICAgICAgICAgaWYgKHJvdyA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSAodHlwZW9mIGJ1dHRvbkJ5Um93W3Byb3BlcnR5XSA9PT0gJ2Jvb2xlYW4nKSA/IGJ1dHRvbkJ5Um93W3Byb3BlcnR5XSA6IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBidXR0b25CeVJvd1twcm9wZXJ0eV0gPT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBidXR0b25CeVJvd1twcm9wZXJ0eV07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBidXR0b25CeVJvd1twcm9wZXJ0eV0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gYnV0dG9uQnlSb3dbcHJvcGVydHldKHsgcHJvcGVydHksIHJvdywgdmFsdWU6IG51bGwgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXNwb25zZSA/ICh0aGlzLl92YWx1ZSAmJiB0aGlzLl92YWx1ZS5sZW5ndGggPiAwKSA6IGZhbHNlO1xyXG4gICAgfVxyXG59Il19
@@ -27,4 +27,4 @@ export const GridTemplates = {
27
27
  isInvalid: item.value.length <= 0
28
28
  })
29
29
  };
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1ncmlkLnRlbXBsYXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvbGliL2NvZXItZ3JpZC9jb2VyLWdyaWQudGVtcGxhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUV6QixvQ0FBb0M7SUFDcEMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFvQixFQUFVLEVBQUU7UUFDL0MsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPOzs7O2FBSU4sQ0FBQztRQUNOLENBQUM7YUFFSSxDQUFDO1lBQ0YsT0FBTzs7OzthQUlOLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxrQkFBa0IsRUFBRSxDQUFDLElBQW9CLEVBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQzVELE9BQU8sRUFBRSxJQUFJO1FBQ2IsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFXLEVBQUU7S0FDcEQsQ0FBQztJQUdGLGlDQUFpQztJQUNqQyxtQkFBbUIsRUFBRSxDQUFDLElBQW9CLEVBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE9BQU8sRUFBRSxJQUFJO1FBQ2IsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7S0FDcEMsQ0FBQztDQUNMLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJR3JpZENvZXJTd2l0Y2gsIElHcmlkQ29lclRleHRCb3gsIElHcmlkSXRlbSB9IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgR3JpZFRlbXBsYXRlcyA9IHtcclxuXHJcbiAgICAvKiogVGVtcGxhdGUgZm9yIGJvb2xlYW4gcHJvcGVydHkgKi9cclxuICAgIGlzQWN0aXZlVGVtcGxhdGU6IChpdGVtOiBJR3JpZEl0ZW08YW55Pik6IHN0cmluZyA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0udmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSd0ZXh0LWdyZWVuLWJvbGQnPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2lyY2xlLWNoZWNrXCI+PC9pPiBBY3RpdmVcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgYDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gYFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9J3RleHQtZ3JheS1ib2xkJz5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNpcmNsZS1taW51c1wiPjwvaT4gRGlzYWJsZWRcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgYDtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIC8qKiBUZW1wbGF0ZSBmb3IgYm9vbGVhbiBwcm9wZXJ0eSAqL1xyXG4gICAgY29lclN3aXRjaFRlbXBsYXRlOiAoaXRlbTogSUdyaWRJdGVtPGFueT4pOiBJR3JpZENvZXJTd2l0Y2ggPT4gKHtcclxuICAgICAgICBpc0lucHV0OiB0cnVlLFxyXG4gICAgICAgIHRvb2x0aXA6IGAke2l0ZW0udmFsdWUgPyAnQWN0aXZlJyA6ICdEaXNhYmxlZCcgfWBcclxuICAgIH0pLFxyXG5cclxuXHJcbiAgICAvKiogVGVtcGxhdGUgZm9yIHRleHQgcHJvcGVydHkgKi9cclxuICAgIGNvZXJUZXh0Ym94VGVtcGxhdGU6IChpdGVtOiBJR3JpZEl0ZW08YW55Pik6IElHcmlkQ29lclRleHRCb3ggPT4gKHtcclxuICAgICAgICBpc0lucHV0OiB0cnVlLFxyXG4gICAgICAgIGlzSW52YWxpZDogaXRlbS52YWx1ZS5sZW5ndGggPD0gMFxyXG4gICAgfSlcclxufSJdfQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1ncmlkLnRlbXBsYXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvY29tcG9uZW50cy9saWIvY29lci1ncmlkL2NvZXItZ3JpZC50ZW1wbGF0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBRXpCLG9DQUFvQztJQUNwQyxnQkFBZ0IsRUFBRSxDQUFDLElBQW9CLEVBQVUsRUFBRTtRQUMvQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU87Ozs7YUFJTixDQUFDO1FBQ04sQ0FBQzthQUVJLENBQUM7WUFDRixPQUFPOzs7O2FBSU4sQ0FBQztRQUNOLENBQUM7SUFDTCxDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLGtCQUFrQixFQUFFLENBQUMsSUFBb0IsRUFBbUIsRUFBRSxDQUFDLENBQUM7UUFDNUQsT0FBTyxFQUFFLElBQUk7UUFDYixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVcsRUFBRTtLQUNwRCxDQUFDO0lBR0YsaUNBQWlDO0lBQ2pDLG1CQUFtQixFQUFFLENBQUMsSUFBb0IsRUFBb0IsRUFBRSxDQUFDLENBQUM7UUFDOUQsT0FBTyxFQUFFLElBQUk7UUFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztLQUNwQyxDQUFDO0NBQ0wsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElHcmlkQ29lclN3aXRjaCwgSUdyaWRDb2VyVGV4dEJveCwgSUdyaWRJdGVtIH0gZnJvbSBcImNvZXItZWxlbWVudHMvaW50ZXJmYWNlc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IEdyaWRUZW1wbGF0ZXMgPSB7XHJcblxyXG4gICAgLyoqIFRlbXBsYXRlIGZvciBib29sZWFuIHByb3BlcnR5ICovXHJcbiAgICBpc0FjdGl2ZVRlbXBsYXRlOiAoaXRlbTogSUdyaWRJdGVtPGFueT4pOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ndGV4dC1ncmVlbi1ib2xkJz5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNpcmNsZS1jaGVja1wiPjwvaT4gQWN0aXZlXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIGA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSd0ZXh0LWdyYXktYm9sZCc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jaXJjbGUtbWludXNcIj48L2k+IERpc2FibGVkXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIGA7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvKiogVGVtcGxhdGUgZm9yIGJvb2xlYW4gcHJvcGVydHkgKi9cclxuICAgIGNvZXJTd2l0Y2hUZW1wbGF0ZTogKGl0ZW06IElHcmlkSXRlbTxhbnk+KTogSUdyaWRDb2VyU3dpdGNoID0+ICh7XHJcbiAgICAgICAgaXNJbnB1dDogdHJ1ZSxcclxuICAgICAgICB0b29sdGlwOiBgJHtpdGVtLnZhbHVlID8gJ0FjdGl2ZScgOiAnRGlzYWJsZWQnIH1gXHJcbiAgICB9KSxcclxuXHJcblxyXG4gICAgLyoqIFRlbXBsYXRlIGZvciB0ZXh0IHByb3BlcnR5ICovXHJcbiAgICBjb2VyVGV4dGJveFRlbXBsYXRlOiAoaXRlbTogSUdyaWRJdGVtPGFueT4pOiBJR3JpZENvZXJUZXh0Qm94ID0+ICh7XHJcbiAgICAgICAgaXNJbnB1dDogdHJ1ZSxcclxuICAgICAgICBpc0ludmFsaWQ6IGl0ZW0udmFsdWUubGVuZ3RoIDw9IDBcclxuICAgIH0pXHJcbn0iXX0=
@@ -1,8 +1,7 @@
1
1
  import { Component, computed, ContentChildren, input, Input, output } from '@angular/core';
2
- import { CoerRefDirective } from '../../../directives/lib/coer-ref.directive';
3
- import { isModalOpenSIGNAL } from '../../../signals/lib/is-modal-open.signal';
4
- import { Screen } from '../../../tools/lib/screen.class';
5
- import { Tools } from '../../../tools/lib/tools';
2
+ import { CoerRefDirective } from 'coer-elements/directives';
3
+ import { isModalOpenSIGNAL } from 'coer-elements/signals';
4
+ import { Screen, Tools } from 'coer-elements/tools';
6
5
  import { Modal } from 'bootstrap';
7
6
  import * as i0 from "@angular/core";
8
7
  import * as i1 from "@angular/common";
@@ -105,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
105
104
  }], id: [{
106
105
  type: Input
107
106
  }] } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL3NyYy9jb21wb25lbnRzL2xpYi9jb2VyLW1vZGFsL2NvZXItbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9saWIvY29lci1tb2RhbC9jb2VyLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFFbkgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDOUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFRbEMsTUFBTSxPQUFPLFNBQVM7SUFMdEI7UUFTSSxXQUFXO1FBQ0QsUUFBRyxHQUFXLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUV6QixpQkFBWSxHQUE0QixpQkFBaUIsQ0FBQztRQUM1RCxnQkFBVyxHQUFXLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFFbEQsUUFBUTtRQUNDLE9BQUUsR0FBVyxFQUFFLENBQUM7UUFDbEIsVUFBSyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMxQixTQUFJLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFD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QyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0wsQ0FBQztJQUdELE1BQU07SUFDQyxLQUFLO1FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVuQixJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0wsQ0FBQzsrR0EzR1EsU0FBUzttR0FBVCxTQUFTLHMvQkFFRCxnQkFBZ0IsNkJDaEJyQyw0eURBeUNROzs0RkQzQkssU0FBUztrQkFMckIsU0FBUzsrQkFDSSxZQUFZOzhCQU1hLFVBQVU7c0JBQTVDLGVBQWU7dUJBQUMsZ0JBQWdCO2dCQVV4QixFQUFFO3NCQUFWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBDb250ZW50Q2hpbGRyZW4sIGlucHV0LCBJbnB1dCwgT25Jbml0LCBvdXRwdXQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElDb2VyUmVmLCBJU2NyZWVuU2l6ZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDb2VyUmVmRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9saWIvY29lci1yZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgaXNNb2RhbE9wZW5TSUdOQUwgfSBmcm9tICcuLi8uLi8uLi9zaWduYWxzL2xpYi9pcy1tb2RhbC1vcGVuLnNpZ25hbCc7XHJcbmltcG9ydCB7IFNjcmVlbiB9IGZyb20gJy4uLy4uLy4uL3Rvb2xzL2xpYi9zY3JlZW4uY2xhc3MnO1xyXG5pbXBvcnQgeyBUb29scyB9IGZyb20gJy4uLy4uLy4uL3Rvb2xzL2xpYi90b29scyc7XHJcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSAnYm9vdHN0cmFwJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY29lci1tb2RhbCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29lci1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vY29lci1tb2RhbC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENvZXJNb2RhbCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihDb2VyUmVmRGlyZWN0aXZlKSBjb250ZW50UmVmITogYW55O1xyXG5cclxuICAgIC8vVmFyaWFibGVzXHJcbiAgICBwcm90ZWN0ZWQgX2lkOiBzdHJpbmcgPSBUb29scy5HZXRHdWlkKCdjb2VyLW1vZGFsJyk7XHJcbiAgICBwcm90ZWN0ZWQgX2lzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIF9tb2RhbCE6IE1vZGFsO1xyXG4gICAgcHJvdGVjdGVkIF9pc01vZGFsT3BlbjogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBpc01vZGFsT3BlblNJR05BTDtcclxuICAgIHByaXZhdGUgd2luZG93V2lkdGg6IG51bWJlciA9IFNjcmVlbi5XSU5ET1dfV0lEVEg7XHJcblxyXG4gICAgLy9JbnB1dHNcclxuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgPSAnJztcclxuICAgIHB1YmxpYyB0aXRsZSA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gICAgcHVibGljIGljb24gPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICAgIHB1YmxpYyBzaG93Q2xvc2VCdXR0b24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICAgIHB1YmxpYyB3aWR0aCA9IGlucHV0PCdzbWFsbCd8ICdmdWxsJz4oJ3NtYWxsJyk7XHJcbiAgICBwdWJsaWMgaGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPignYXV0bycpO1xyXG4gICAgcHVibGljIG1heEhlaWdodCA9IGlucHV0PHN0cmluZz4oJycpO1xyXG5cclxuICAgIC8vZ2V0dGVyXHJcbiAgICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXNPcGVuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vZ2V0dGVyXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF93aWR0aCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHN3aXRjaCh0aGlzLndpZHRoKCkpIHtcclxuICAgICAgICAgICAgY2FzZSAnc21hbGwnOiByZXR1cm4gJzQ1MHB4JztcclxuICAgICAgICAgICAgY2FzZSAnZnVsbCc6IHJldHVybiBgJHt0aGlzLndpbmRvd1dpZHRoIC0gNTB9cHhgO1xyXG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gJ2F1dG8nO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL0NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgY29udGVudExpc3QgPSBjb21wdXRlZDxJQ29lclJlZltdPigoKSA9PiBBcnJheS5mcm9tKHRoaXMuY29udGVudFJlZi5fcmVzdWx0cykpO1xyXG5cclxuICAgIC8vQ29tcHV0ZWRcclxuICAgIHByb3RlY3RlZCBoZWFkZXIgPSBjb21wdXRlZDxJQ29lclJlZiB8IG51bGw+KCgpID0+IHtcclxuICAgICAgICBjb25zdCBoZWFkZXIgPSB0aGlzLmNvbnRlbnRMaXN0KCkuZmluZCh4ID0+IHguY29lclJlZigpID09PSAnaGVhZGVyJyk7XHJcbiAgICAgICAgcmV0dXJuIFRvb2xzLklzTm90TnVsbChoZWFkZXIpID8gaGVhZGVyISA6IG51bGw7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL0NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgYm9keSA9IGNvbXB1dGVkPElDb2VyUmVmIHwgbnVsbD4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLmNvbnRlbnRMaXN0KCkuZmluZCh4ID0+IHguY29lclJlZigpID09PSAnJyB8fCB4LmNvZXJSZWYoKSA9PT0gJ2JvZHknKTtcclxuICAgICAgICByZXR1cm4gVG9vbHMuSXNOb3ROdWxsKGJvZHkpID8gYm9keSEgOiBudWxsO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy9Db21wdXRlZFxyXG4gICAgcHJvdGVjdGVkIGZvb3RlciA9IGNvbXB1dGVkPElDb2VyUmVmIHwgbnVsbD4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZvb3RlciA9IHRoaXMuY29udGVudExpc3QoKS5maW5kKHggPT4geC5jb2VyUmVmKCkgPT09ICdmb290ZXInKTtcclxuICAgICAgICByZXR1cm4gVG9vbHMuSXNOb3ROdWxsKGZvb3RlcikgPyBmb290ZXIhIDogbnVsbDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vQ29tcHV0ZWRcclxuICAgIHByb3RlY3RlZCBfdGl0bGUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gVG9vbHMuSXNOb3ROdWxsKHRoaXMuaGVhZGVyKCkpICYmIHRoaXMuaGVhZGVyKCkhLnRpdGxlKCkubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICA/IHRoaXMuaGVhZGVyKCkhLnRpdGxlKCkgOiB0aGlzLnRpdGxlKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL0NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgX2ljb24gPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gVG9vbHMuSXNOb3ROdWxsKHRoaXMuaGVhZGVyKCkpICYmIHRoaXMuaGVhZGVyKCkhLmljb24oKS5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgID8gdGhpcy5oZWFkZXIoKSEuaWNvbigpIDogdGhpcy5pY29uKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL091dHB1dHNcclxuICAgIHB1YmxpYyBvbk9wZW4gPSBvdXRwdXQ8dm9pZD4oKTtcclxuICAgIHB1YmxpYyBvbkNsb3NlID0gb3V0cHV0PHZvaWQ+KCk7XHJcblxyXG4gICAgLy9HZW5lcmljIFRvb2xzXHJcbiAgICBwcm90ZWN0ZWQgSXNOdWxsID0gVG9vbHMuSXNOdWxsO1xyXG4gICAgcHJvdGVjdGVkIElzTm90TnVsbCA9IFRvb2xzLklzTm90TnVsbDtcclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBTY3JlZW4uUmVzaXplLnN1YnNjcmliZSgocmVzcG9uc2U6IElTY3JlZW5TaXplKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93V2lkdGggPSByZXNwb25zZS53aWR0aDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgVG9vbHMuU2xlZXAoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fbW9kYWwgPSBuZXcgTW9kYWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5faWQpISlcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgT3BlbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9tb2RhbC5zaG93KCk7XHJcblxyXG4gICAgICAgIGlmKCF0aGlzLl9pc09wZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5faXNPcGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5faXNNb2RhbE9wZW4uc2V0KHRydWUpO1xyXG4gICAgICAgICAgICBUb29scy5TbGVlcCgxMDAwKS50aGVuKCgpID0+IHRoaXMub25PcGVuLmVtaXQoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBDbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9tb2RhbC5oaWRlKCk7XHJcblxyXG4gICAgICAgIGlmKHRoaXMuX2lzT3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5faXNNb2RhbE9wZW4uc2V0KGZhbHNlKTtcclxuICAgICAgICAgICAgVG9vbHMuU2xlZXAoMTAwMCkudGhlbigoKSA9PiB0aGlzLm9uQ2xvc2UuZW1pdCgpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCI8YXNpZGUgdGl0bGU9JycgW2lkXT1cIl9pZFwiIGNsYXNzPVwibW9kYWwgZmFkZVwiIGRhdGEtYnMtYmFja2Ryb3A9XCJzdGF0aWNcIiB0YWJpbmRleD1cIi0xXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCBtb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZVwiIFtuZ1N0eWxlXT1cInsgJ21heC13aWR0aCc6IF93aWR0aCB9XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgQGlmKElzTnVsbChoZWFkZXIoKSkgfHwgKElzTm90TnVsbChoZWFkZXIoKSkgJiYgaGVhZGVyKCk/LnNob3coKSkpIHtcclxuICAgICAgICAgICAgICAgIDxoZWFkZXIgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJtb2RhbC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiX2ljb24oKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieyAnbXMtMSc6IF9pY29uKCkubGVuZ3RoID4gMCB9XCI+IHt7IF90aXRsZSgpIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2g2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYoc2hvd0Nsb3NlQnV0dG9uKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwiQ2xvc2UoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1vZGFsLWJvZHlcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCc6IGhlaWdodCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICdtYXgtaGVpZ2h0JzogbWF4SGVpZ2h0KCksXHJcbiAgICAgICAgICAgICAgICAgICAgJ292ZXJmbG93JzogbWF4SGVpZ2h0KCkgPT09ICcnID8gJ3Zpc2libGUnIDogJ2F1dG8nXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICBAaWYoSXNOb3ROdWxsKGJvZHkoKSkgJiYgYm9keSgpPy5zaG93KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJvZHkoKSEudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgICAgICBAaWYoSXNOb3ROdWxsKGZvb3RlcigpKSkge1xyXG4gICAgICAgICAgICAgICAgPGZvb3RlciBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZihmb290ZXIoKT8uc2hvdygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyKCkhLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9mb290ZXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnYmFja2Ryb3AnOiBfaXNNb2RhbE9wZW4oKSB9XCI+PC9kaXY+XHJcbjwvYXNpZGU+Il19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2NvbXBvbmVudHMvbGliL2NvZXItbW9kYWwvY29lci1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2NvbXBvbmVudHMvbGliL2NvZXItbW9kYWwvY29lci1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBRW5ILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBUWxDLE1BQU0sT0FBTyxTQUFTO0lBTHRCO1FBU0ksV0FBVztRQUNELFFBQUcsR0FBVyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFDLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFekIsaUJBQVksR0FBNEIsaUJBQWlCLENBQUM7UUFDNUQsZ0JBQVcsR0FBVyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBRWxELFFBQVE7UUFDQyxPQUFFLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLFVBQUssR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDMUIsU0FBSSxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUN6QixvQkFBZSxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FB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QztJQUNMLENBQUM7SUFHRCxNQUFNO0lBQ0MsS0FBSztRQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFbkIsSUFBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNMLENBQUM7K0dBM0dRLFNBQVM7bUdBQVQsU0FBUyxzL0JBRUQsZ0JBQWdCLDZCQ2ZyQyw0eURBeUNROzs0RkQ1QkssU0FBUztrQkFMckIsU0FBUzsrQkFDSSxZQUFZOzhCQU1hLFVBQVU7c0JBQTVDLGVBQWU7dUJBQUMsZ0JBQWdCO2dCQVV4QixFQUFFO3NCQUFWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBDb250ZW50Q2hpbGRyZW4sIGlucHV0LCBJbnB1dCwgT25Jbml0LCBvdXRwdXQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElDb2VyUmVmLCBJU2NyZWVuU2l6ZSB9IGZyb20gJ2NvZXItZWxlbWVudHMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IENvZXJSZWZEaXJlY3RpdmUgfSBmcm9tICdjb2VyLWVsZW1lbnRzL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyBpc01vZGFsT3BlblNJR05BTCB9IGZyb20gJ2NvZXItZWxlbWVudHMvc2lnbmFscyc7XHJcbmltcG9ydCB7IFNjcmVlbiwgVG9vbHMgfSBmcm9tICdjb2VyLWVsZW1lbnRzL3Rvb2xzJzsgXHJcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSAnYm9vdHN0cmFwJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY29lci1tb2RhbCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29lci1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vY29lci1tb2RhbC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENvZXJNb2RhbCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihDb2VyUmVmRGlyZWN0aXZlKSBjb250ZW50UmVmITogYW55O1xyXG5cclxuICAgIC8vVmFyaWFibGVzXHJcbiAgICBwcm90ZWN0ZWQgX2lkOiBzdHJpbmcgPSBUb29scy5HZXRHdWlkKCdjb2VyLW1vZGFsJyk7XHJcbiAgICBwcm90ZWN0ZWQgX2lzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIF9tb2RhbCE6IE1vZGFsO1xyXG4gICAgcHJvdGVjdGVkIF9pc01vZGFsT3BlbjogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBpc01vZGFsT3BlblNJR05BTDtcclxuICAgIHByaXZhdGUgd2luZG93V2lkdGg6IG51bWJlciA9IFNjcmVlbi5XSU5ET1dfV0lEVEg7XHJcblxyXG4gICAgLy9JbnB1dHNcclxuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgPSAnJztcclxuICAgIHB1YmxpYyB0aXRsZSA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gICAgcHVibGljIGljb24gPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICAgIHB1YmxpYyBzaG93Q2xvc2VCdXR0b24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICAgIHB1YmxpYyB3aWR0aCA9IGlucHV0PCdzbWFsbCd8ICdmdWxsJz4oJ3NtYWxsJyk7XHJcbiAgICBwdWJsaWMgaGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPignYXV0bycpO1xyXG4gICAgcHVibGljIG1heEhlaWdodCA9IGlucHV0PHN0cmluZz4oJycpO1xyXG5cclxuICAgIC8vZ2V0dGVyXHJcbiAgICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXNPcGVuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vZ2V0dGVyXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF93aWR0aCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHN3aXRjaCh0aGlzLndpZHRoKCkpIHtcclxuICAgICAgICAgICAgY2FzZSAnc21hbGwnOiByZXR1cm4gJzQ1MHB4JztcclxuICAgICAgICAgICAgY2FzZSAnZnVsbCc6IHJldHVybiBgJHt0aGlzLndpbmRvd1dpZHRoIC0gNTB9cHhgO1xyXG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gJ2F1dG8nO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL0NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgY29udGVudExpc3QgPSBjb21wdXRlZDxJQ29lclJlZltdPigoKSA9PiBBcnJheS5mcm9tKHRoaXMuY29udGVudFJlZi5fcmVzdWx0cykpO1xyXG5cclxuICAgIC8vQ29tcHV0ZWRcclxuICAgIHByb3RlY3RlZCBoZWFkZXIgPSBjb21wdXRlZDxJQ29lclJlZiB8IG51bGw+KCgpID0+IHtcclxuICAgICAgICBjb25zdCBoZWFkZXIgPSB0aGlzLmNvbnRlbnRMaXN0KCkuZmluZCh4ID0+IHguY29lclJlZigpID09PSAnaGVhZGVyJyk7XHJcbiAgICAgICAgcmV0dXJuIFRvb2xzLklzTm90TnVsbChoZWFkZXIpID8gaGVhZGVyISA6IG51bGw7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL0NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgYm9keSA9IGNvbXB1dGVkPElDb2VyUmVmIHwgbnVsbD4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLmNvbnRlbnRMaXN0KCkuZmluZCh4ID0+IHguY29lclJlZigpID09PSAnJyB8fCB4LmNvZXJSZWYoKSA9PT0gJ2JvZHknKTtcclxuICAgICAgICByZXR1cm4gVG9vbHMuSXNOb3ROdWxsKGJvZHkpID8gYm9keSEgOiBudWxsO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy9Db21wdXRlZFxyXG4gICAgcHJvdGVjdGVkIGZvb3RlciA9IGNvbXB1dGVkPElDb2VyUmVmIHwgbnVsbD4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZvb3RlciA9IHRoaXMuY29udGVudExpc3QoKS5maW5kKHggPT4geC5jb2VyUmVmKCkgPT09ICdmb290ZXInKTtcclxuICAgICAgICByZXR1cm4gVG9vbHMuSXNOb3ROdWxsKGZvb3RlcikgPyBmb290ZXIhIDogbnVsbDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vQ29tcHV0ZWRcclxuICAgIHByb3RlY3RlZCBfdGl0bGUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gVG9vbHMuSXNOb3ROdWxsKHRoaXMuaGVhZGVyKCkpICYmIHRoaXMuaGVhZGVyKCkhLnRpdGxlKCkubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICA/IHRoaXMuaGVhZGVyKCkhLnRpdGxlKCkgOiB0aGlzLnRpdGxlKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL0NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgX2ljb24gPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gVG9vbHMuSXNOb3ROdWxsKHRoaXMuaGVhZGVyKCkpICYmIHRoaXMuaGVhZGVyKCkhLmljb24oKS5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgID8gdGhpcy5oZWFkZXIoKSEuaWNvbigpIDogdGhpcy5pY29uKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL091dHB1dHNcclxuICAgIHB1YmxpYyBvbk9wZW4gPSBvdXRwdXQ8dm9pZD4oKTtcclxuICAgIHB1YmxpYyBvbkNsb3NlID0gb3V0cHV0PHZvaWQ+KCk7XHJcblxyXG4gICAgLy9HZW5lcmljIFRvb2xzXHJcbiAgICBwcm90ZWN0ZWQgSXNOdWxsID0gVG9vbHMuSXNOdWxsO1xyXG4gICAgcHJvdGVjdGVkIElzTm90TnVsbCA9IFRvb2xzLklzTm90TnVsbDtcclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBTY3JlZW4uUmVzaXplLnN1YnNjcmliZSgocmVzcG9uc2U6IElTY3JlZW5TaXplKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93V2lkdGggPSByZXNwb25zZS53aWR0aDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgVG9vbHMuU2xlZXAoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fbW9kYWwgPSBuZXcgTW9kYWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5faWQpISlcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgT3BlbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9tb2RhbC5zaG93KCk7XHJcblxyXG4gICAgICAgIGlmKCF0aGlzLl9pc09wZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5faXNPcGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5faXNNb2RhbE9wZW4uc2V0KHRydWUpO1xyXG4gICAgICAgICAgICBUb29scy5TbGVlcCgxMDAwKS50aGVuKCgpID0+IHRoaXMub25PcGVuLmVtaXQoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBDbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9tb2RhbC5oaWRlKCk7XHJcblxyXG4gICAgICAgIGlmKHRoaXMuX2lzT3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5faXNNb2RhbE9wZW4uc2V0KGZhbHNlKTtcclxuICAgICAgICAgICAgVG9vbHMuU2xlZXAoMTAwMCkudGhlbigoKSA9PiB0aGlzLm9uQ2xvc2UuZW1pdCgpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCI8YXNpZGUgdGl0bGU9JycgW2lkXT1cIl9pZFwiIGNsYXNzPVwibW9kYWwgZmFkZVwiIGRhdGEtYnMtYmFja2Ryb3A9XCJzdGF0aWNcIiB0YWJpbmRleD1cIi0xXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCBtb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZVwiIFtuZ1N0eWxlXT1cInsgJ21heC13aWR0aCc6IF93aWR0aCB9XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgQGlmKElzTnVsbChoZWFkZXIoKSkgfHwgKElzTm90TnVsbChoZWFkZXIoKSkgJiYgaGVhZGVyKCk/LnNob3coKSkpIHtcclxuICAgICAgICAgICAgICAgIDxoZWFkZXIgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJtb2RhbC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiX2ljb24oKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieyAnbXMtMSc6IF9pY29uKCkubGVuZ3RoID4gMCB9XCI+IHt7IF90aXRsZSgpIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2g2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYoc2hvd0Nsb3NlQnV0dG9uKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwiQ2xvc2UoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1vZGFsLWJvZHlcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCc6IGhlaWdodCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICdtYXgtaGVpZ2h0JzogbWF4SGVpZ2h0KCksXHJcbiAgICAgICAgICAgICAgICAgICAgJ292ZXJmbG93JzogbWF4SGVpZ2h0KCkgPT09ICcnID8gJ3Zpc2libGUnIDogJ2F1dG8nXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICBAaWYoSXNOb3ROdWxsKGJvZHkoKSkgJiYgYm9keSgpPy5zaG93KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJvZHkoKSEudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgICAgICBAaWYoSXNOb3ROdWxsKGZvb3RlcigpKSkge1xyXG4gICAgICAgICAgICAgICAgPGZvb3RlciBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZihmb290ZXIoKT8uc2hvdygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyKCkhLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9mb290ZXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnYmFja2Ryb3AnOiBfaXNNb2RhbE9wZW4oKSB9XCI+PC9kaXY+XHJcbjwvYXNpZGU+Il19
@@ -1,7 +1,5 @@
1
1
  import { Component, computed, inject, Input, input, output, signal, viewChild } from '@angular/core';
2
- import { CoerAlert } from '../../lib/coer-alert/coer-alert.component';
3
- import { CONTROL_VALUE, ControlValue } from '../../../tools/lib/control-value.class';
4
- import { Tools } from '../../../tools/lib/tools';
2
+ import { CoerAlert, CONTROL_VALUE, ControlValue, Tools } from 'coer-elements/tools';
5
3
  import * as i0 from "@angular/core";
6
4
  import * as i1 from "@angular/common";
7
5
  import * as i2 from "@angular/material/input";
@@ -257,4 +255,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
257
255
  }], id: [{
258
256
  type: Input
259
257
  }] } });
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1udW1iZXJib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9saWIvY29lci1udW1iZXJib3gvY29lci1udW1iZXJib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9saWIvY29lci1udW1iZXJib3gvY29lci1udW1iZXJib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDckYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQVFqRCxNQUFNLE9BQU8sYUFBYyxTQUFRLFlBQVk7SUFOL0M7O1FBUUksWUFBWTtRQUNPLFVBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFN0MsaUJBQWlCO1FBQ0QsV0FBTSxHQUFvQixFQUFFLENBQUM7UUFDbkMsaUJBQVksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFhLGNBQWMsQ0FBQyxDQUFDO1FBQzlELGtCQUFhLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBYSxlQUFlLENBQUMsQ0FBQztRQUUxRSxXQUFXO1FBQ0QsUUFBRyxHQUFXLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM5QyxvQkFBZSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FB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QUcsRUFBRTtZQUNwQixJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUVwQixVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNaLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxxQ0FBcUMsQ0FBQyxDQUFDO29CQUMxRixJQUFJLE9BQU87d0JBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztvQkFDakUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxDQUFBO1lBQ04sQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0FuUlEsYUFBYTttR0FBYixhQUFhLGl4RkFGWCxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxnU0NUN0MsMjBEQWtETTs7NEZEdkNPLGFBQWE7a0JBTnpCLFNBQVM7K0JBQ0ksZ0JBQWdCLGFBR2YsQ0FBQyxhQUFhLGVBQWUsQ0FBQzs4QkFtQjVCLEtBQUs7c0JBQWpCLEtBQUs7Z0JBS0csRUFBRTtzQkFBVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgaW5wdXQsIE9uSW5pdCwgb3V0cHV0LCBzaWduYWwsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb2VyQWxlcnQgfSBmcm9tICcuLi8uLi9saWIvY29lci1hbGVydC9jb2VyLWFsZXJ0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENPTlRST0xfVkFMVUUsIENvbnRyb2xWYWx1ZSB9IGZyb20gJy4uLy4uLy4uL3Rvb2xzL2xpYi9jb250cm9sLXZhbHVlLmNsYXNzJztcclxuaW1wb3J0IHsgVG9vbHMgfSBmcm9tICcuLi8uLi8uLi90b29scy9saWIvdG9vbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NvZXItbnVtYmVyYm94JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2VyLW51bWJlcmJveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vY29lci1udW1iZXJib3guY29tcG9uZW50LnNjc3MnLFxyXG4gICAgcHJvdmlkZXJzOiBbQ09OVFJPTF9WQUxVRShDb2VyTnVtYmVyQm94KV1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvZXJOdW1iZXJCb3ggZXh0ZW5kcyBDb250cm9sVmFsdWUgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIC8vSW5qZWN0aW9uc1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFsZXJ0ID0gaW5qZWN0KENvZXJBbGVydCk7XHJcblxyXG4gICAgLy9Db21wb25lbnQgVmFsdWVcclxuICAgIHB1YmxpYyBvdmVycmlkZSBfdmFsdWU6IHN0cmluZyB8IG51bWJlciA9ICcnO1xyXG4gICAgcHJvdGVjdGVkIG1hdEZvcm1GaWVsZCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPignbWF0Rm9ybUZpZWxkJyk7XHJcbiAgICBwcm90ZWN0ZWQgY29lck51bWJlcmJveCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPignY29lck51bWJlcmJveCcpO1xyXG5cclxuICAgIC8vVmFyaWFibGVzXHJcbiAgICBwcm90ZWN0ZWQgX2lkOiBzdHJpbmcgPSBUb29scy5HZXRHdWlkKCdjb2VyLW51bWJlcmJveCcpO1xyXG4gICAgcHJvdGVjdGVkIF9pc0xvYWRpbmdFdmVudCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcml2YXRlIGVsZW1lbnQhOiBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgcHJvdGVjdGVkIGhpZGVDYXJldDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8vSW5wdXRzXHJcbiAgICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZihUb29scy5Jc051bGwodmFsdWUpKSB2YWx1ZSA9IDA7XHJcbiAgICAgICAgdGhpcy5TZXRWYWx1ZSh2YWx1ZSBhcyBzdHJpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgPSAnJztcclxuICAgIHB1YmxpYyBsYWJlbCA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gICAgcHVibGljIHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgICBwdWJsaWMgbWluID0gaW5wdXQ8bnVtYmVyPigwKTtcclxuICAgIHB1YmxpYyBtYXggPSBpbnB1dDxudW1iZXI+KDIxNDc0ODM2NDcpO1xyXG4gICAgcHVibGljIGRlY2ltYWxzID0gaW5wdXQ8bnVtYmVyPigwKTtcclxuICAgIHB1YmxpYyB3aWR0aCA9IGlucHV0PHN0cmluZz4oJzEwMCUnKTtcclxuICAgIHB1YmxpYyBtaW5XaWR0aCA9IGlucHV0PHN0cmluZz4oJzE5MHB4Jyk7XHJcbiAgICBwdWJsaWMgbWF4V2lkdGggPSBpbnB1dDxzdHJpbmc+KCcxMDAlJyk7XHJcbiAgICBwdWJsaWMgbWFyZ2luVG9wID0gaW5wdXQ8c3RyaW5nPignMHB4Jyk7XHJcbiAgICBwdWJsaWMgbWFyZ2luUmlnaHQgPSBpbnB1dDxzdHJpbmc+KCcwcHgnKTtcclxuICAgIHB1YmxpYyBtYXJnaW5Cb3R0b20gPSBpbnB1dDxzdHJpbmc+KCcwcHgnKTtcclxuICAgIHB1YmxpYyBtYXJnaW5MZWZ0ID0gaW5wdXQ8c3RyaW5nPignMHB4Jyk7XHJcbiAgICBwdWJsaWMgaXNJbnZhbGlkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIGlzVmFsaWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwdWJsaWMgaXNEaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyBpc1JlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIGlzTG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyBzZWxlY3RPbkZvY3VzID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgICBwdWJsaWMgdGV4dFBvc2l0aW9uID0gaW5wdXQ8J2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnPigncmlnaHQnKTtcclxuXHJcbiAgICAvL091dHB1dHNcclxuICAgIHB1YmxpYyBvbktleXVwRW50ZXIgPSBvdXRwdXQ8c3RyaW5nIHwgbnVtYmVyPigpO1xyXG4gICAgcHVibGljIG9uSW5wdXQgPSBvdXRwdXQ8c3RyaW5nIHwgbnVtYmVyPigpO1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIFRvb2xzLlNsZWVwKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuX2lkKSEgYXMgSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2lzRW5hYmxlKCkpIHRoaXMuQmx1cigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0T25Gb2N1cygpKSB0aGlzLlNlbGVjdCgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB0aGlzLkJsdXIoKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzRW5hYmxlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBrZXkgfSA9IGV2ZW50O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jb2VyTnVtYmVyYm94KCkubmF0aXZlRWxlbWVudC52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5Pbmx5TnVtYmVycyh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuVmFsaWRhdGVSYW5nZVZhbHVlKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25LZXl1cEVudGVyLmVtaXQodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5CbHVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICdBcnJvd1VwJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlQ2FyZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5TZXRWYWx1ZShOdW1iZXIodGhpcy5fdmFsdWUpICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb29scy5TbGVlcCg1MDAsICdBcnJvd1VwJykudGhlbigoKSA9PiB0aGlzLmhpZGVDYXJldCA9IGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZUNhcmV0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuU2V0VmFsdWUoTnVtYmVyKHRoaXMuX3ZhbHVlKSAtIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9vbHMuU2xlZXAoNTAwLCAnQXJyb3dEb3duJykudGhlbigoKSA9PiB0aGlzLmhpZGVDYXJldCA9IGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBUb29scy5TbGVlcCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmNvZXJOdW1iZXJib3goKS5uYXRpdmVFbGVtZW50LnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuT25seU51bWJlcnModmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuVmFsaWRhdGVSYW5nZVZhbHVlKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzRW5hYmxlKCkpIHRoaXMub25JbnB1dC5lbWl0KHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9nZXR0ZXJcclxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vY29tcHV0ZWRcclxuICAgIHByb3RlY3RlZCBfaXNFbmFibGUgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzRGlzYWJsZWQoKSAmJiAhdGhpcy5pc0xvYWRpbmcoKSAmJiAhdGhpcy5pc1JlYWRvbmx5KCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL2NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgZmxvYXRMYWJlbCA9IGNvbXB1dGVkPCdhdXRvJyB8ICdhbHdheXMnPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGFiZWwoKSA9PSAnJyA/ICdhbHdheXMnIDogJ2F1dG8nXHJcbiAgICB9KTtcclxuXHJcbiAgICAvL2NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgcGFkZGluZ1JpZ2h0ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzSW52YWxpZCgpIHx8IHRoaXMuaXNWYWxpZCgpXHJcbiAgICAgICAgICAgID8gJzE4cHgnIDogJzBweCc7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL0NvbnRyb2xWYWx1ZUFjY2Vzc29yXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgU2V0VmFsdWUodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHZhbHVlID0gdGhpcy5Pbmx5TnVtYmVycyh2YWx1ZSk7XHJcbiAgICAgICAgdmFsdWUgPSB0aGlzLlZhbGlkYXRlUmFuZ2VWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5fVXBkYXRlVmFsdWUodmFsdWUpO1xyXG4gICAgICAgIHRoaXMuY29lck51bWJlcmJveCgpLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvL0NvbnRyb2xWYWx1ZUFjY2Vzc29yXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgdmFsdWUgPSB0aGlzLk9ubHlOdW1iZXJzKHZhbHVlKTtcclxuICAgICAgICB2YWx1ZSA9IHRoaXMuVmFsaWRhdGVSYW5nZVZhbHVlKHZhbHVlKTtcclxuICAgICAgICB0aGlzLmNvZXJOdW1iZXJib3goKS5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIE9ubHlOdW1iZXJzKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcgfCBudW1iZXIge1xyXG4gICAgICAgIGxldCBpc05lZ2F0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IHZhbHVlU3RyaW5nID0gU3RyaW5nKHZhbHVlKS50cmltKCk7XHJcblxyXG4gICAgICAgIC8vTmVnYXRpdmVzXHJcbiAgICAgICAgaWYgKHZhbHVlU3RyaW5nLmluY2x1ZGVzKCctJykpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWluKCkgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICBpc05lZ2F0aXZlID0gdmFsdWVTdHJpbmcuc3RhcnRzV2l0aCgnLScpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlU3RyaW5nID09ICctJykgcmV0dXJuICctJztcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZVN0cmluZyA9PSAnLS4nKSByZXR1cm4gJy0wLic7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVTdHJpbmcgPT0gJy0wJykgcmV0dXJuICctMCc7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVTdHJpbmcgPT0gJy0wLicpIHJldHVybiAnLTAuJztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZWxzZSBpZihOdW1iZXIodmFsdWUpIDwgdGhpcy5taW4oKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGVydC5XYXJuaW5nKGBNaW5pbXVtICR7dGhpcy5taW4oKX1gLCAnT3V0IG9mIHJhbmdlJywgJ2ZhLXNvbGlkIGZhLWhhc2h0YWcnKTtcclxuICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nID0gJzAnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBjaGFyQXJyYXkgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNoYXIgb2YgdmFsdWVTdHJpbmcpIHtcclxuICAgICAgICAgICAgaWYgKFsnMCcsJzEnLCcyJywnMycsJzQnLCc1JywnNicsJzcnLCc4JywnOSddLmluY2x1ZGVzKGNoYXIpKSB7XHJcbiAgICAgICAgICAgICAgICBjaGFyQXJyYXkucHVzaChjaGFyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PSAnLicgJiYgdGhpcy5kZWNpbWFscygpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY2hhckFycmF5LnB1c2goY2hhcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhbHVlU3RyaW5nID0gY2hhckFycmF5LmpvaW4oJycpO1xyXG5cclxuICAgICAgICAvL0RlY2ltYWxzXHJcbiAgICAgICAgaWYgKHRoaXMuZGVjaW1hbHMoKSA+IDApIHtcclxuICAgICAgICAgICAgbGV0IGludGVnZXJTdHJpbmcgPSB2YWx1ZVN0cmluZy5zcGxpdCgnLicpWzBdIHx8ICcnO1xyXG4gICAgICAgICAgICBsZXQgZGVjaW1hbFN0cmluZyA9IHZhbHVlU3RyaW5nLnNwbGl0KCcuJylbMV0gfHwgJyc7XHJcbiAgICAgICAgICAgIGRlY2ltYWxTdHJpbmcgPSBkZWNpbWFsU3RyaW5nLnN1YnN0cmluZygwLCB0aGlzLmRlY2ltYWxzKCkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHZhbHVlU3RyaW5nID09ICcuJykgcmV0dXJuICcwLic7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZVN0cmluZy5pbmNsdWRlcygnLicpICYmIGRlY2ltYWxTdHJpbmcgPT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoaXNOZWdhdGl2ZSkgPyBgLSR7aW50ZWdlclN0cmluZ30uYCA6IGAke2ludGVnZXJTdHJpbmd9LmA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlU3RyaW5nLmluY2x1ZGVzKCcuJykgJiYgZGVjaW1hbFN0cmluZy5lbmRzV2l0aCgnMCcpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKGlzTmVnYXRpdmUpID8gYC0ke2ludGVnZXJTdHJpbmd9LiR7ZGVjaW1hbFN0cmluZ31gIDogYCR7aW50ZWdlclN0cmluZ30uJHtkZWNpbWFsU3RyaW5nfWA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGludGVnZXJTdHJpbmcgPT0gJycgJiYgZGVjaW1hbFN0cmluZyA9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICcwJztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmFsdWVTdHJpbmcgPSBgJHtpbnRlZ2VyU3RyaW5nfS4ke2RlY2ltYWxTdHJpbmd9YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpc05lZ2F0aXZlKSB7XHJcbiAgICAgICAgICAgIHZhbHVlU3RyaW5nID0gYC0ke3ZhbHVlU3RyaW5nfWA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlU3RyaW5nKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIFZhbGlkYXRlUmFuZ2VWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICBpZihbJy0nLCAnLicsICctLicsICctMCcsICctMC4nXS5pbmNsdWRlcyhTdHJpbmcodmFsdWUpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKE51bWJlcih2YWx1ZSkgPCB0aGlzLm1pbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnQuV2FybmluZyhgTWluaW11bSAke3RoaXMubWluKCl9YCwgJ091dCBvZiByYW5nZScsICdmYS1zb2xpZCBmYS1oYXNodGFnJyk7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5taW4oKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKE51bWJlcih2YWx1ZSkgPiB0aGlzLm1heCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnQuV2FybmluZyhgQ2Fubm90IGV4Y2VlZCAke3RoaXMubWF4KCl9YCwgJ091dCBvZiByYW5nZScsICdmYS1zb2xpZCBmYS1oYXNodGFnJyk7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5tYXgoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRlY2ltYWxzKCkgPD0gMCkge1xyXG4gICAgICAgICAgICBpZiAoU3RyaW5nKHZhbHVlKS5pbmNsdWRlcygnLicpKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSkuc3BsaXQoJy4nKVswXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIEZvY3VzKHRpbWVvdXQ6IG51bWJlciA9IDApOiB2b2lkIHtcclxuICAgICAgICBpZih0aGlzLl9pc0xvYWRpbmdFdmVudCgpKSByZXR1cm47XHJcbiAgICAgICAgZWxzZSB0aGlzLl9pc0xvYWRpbmdFdmVudC5zZXQodHJ1ZSk7XHJcblxyXG4gICAgICAgIFRvb2xzLlNsZWVwKHRpbWVvdXQpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBpZih0aGlzLl9pc0VuYWJsZSgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5faXNMb2FkaW5nRXZlbnQuc2V0KGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgU2VsZWN0KHRpbWVvdXQ6IG51bWJlciA9IDApOiB2b2lkIHtcclxuICAgICAgICBpZih0aGlzLl9pc0xvYWRpbmdFdmVudCgpKSByZXR1cm47XHJcbiAgICAgICAgZWxzZSB0aGlzLl9pc0xvYWRpbmdFdmVudC5zZXQodHJ1ZSk7XHJcblxyXG4gICAgICAgIFRvb2xzLlNsZWVwKHRpbWVvdXQpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBpZih0aGlzLl9pc0VuYWJsZSgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zZWxlY3QoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5faXNMb2FkaW5nRXZlbnQuc2V0KGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgQmx1cigpOiB2b2lkIHtcclxuICAgICAgICBpZih0aGlzLl9pc0xvYWRpbmdFdmVudCgpKSByZXR1cm47XHJcbiAgICAgICAgZWxzZSB0aGlzLl9pc0xvYWRpbmdFdmVudC5zZXQodHJ1ZSk7XHJcblxyXG4gICAgICAgIFRvb2xzLlNsZWVwKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmJsdXIoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7dGhpcy5faWR9LWNvbnRhaW5lciAubWRjLWxpbmUtcmlwcGxlLS1hY3RpdmVgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCkgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdtZGMtbGluZS1yaXBwbGUtLWFjdGl2ZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzTG9hZGluZ0V2ZW50LnNldChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY29lci1udW1iZXItYm94XCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGRcclxuICAgICAgICBbaWRdPVwiX2lkICsgJy1jb250YWluZXInXCJcclxuICAgICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgJ3JlYWRvbmx5JzogaXNSZWFkb25seSgpICYmICFpc0xvYWRpbmcoKVxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIFtzdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICd3aWR0aCc6IHdpZHRoKCksXHJcbiAgICAgICAgICAgICdtaW4td2lkdGgnOiBtaW5XaWR0aCgpLFxyXG4gICAgICAgICAgICAnbWF4LXdpZHRoJzogbWF4V2lkdGgoKSxcclxuICAgICAgICAgICAgJ21hcmdpbi10b3AnOiBtYXJnaW5Ub3AoKSxcclxuICAgICAgICAgICAgJ21hcmdpbi1yaWdodCc6IG1hcmdpblJpZ2h0KCksXHJcbiAgICAgICAgICAgICdtYXJnaW4tYm90dG9tJzogbWFyZ2luQm90dG9tKCksXHJcbiAgICAgICAgICAgICdtYXJnaW4tbGVmdCc6IG1hcmdpbkxlZnQoKVxyXG4gICAgICAgIH1cIj5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7IGxhYmVsKCkgfX08L21hdC1sYWJlbD5cclxuXHJcbiAgICAgICAgPGlucHV0ICNjb2VyTnVtYmVyYm94IG1hdElucHV0XHJcbiAgICAgICAgICAgIFtpZF09XCJfaWRcIlxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFfaXNFbmFibGUoKVwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJfdmFsdWVcIlxyXG4gICAgICAgICAgICAoaW5wdXQpPVwiU2V0VmFsdWUoY29lck51bWJlcmJveC52YWx1ZSlcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJTZXRUb3VjaGVkKHRydWUpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2FyZXQtbm9uZSc6IGhpZGVDYXJldCB9XCJcclxuICAgICAgICAgICAgW3N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICdjdXJzb3InOiBpc0xvYWRpbmcoKSA/ICd3YWl0JyA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAnbWFyZ2luLXRvcCc6IChmbG9hdExhYmVsKCkgPT0gJ2F1dG8nKSA/ICcxNXB4JyA6ICc5cHgnLFxyXG4gICAgICAgICAgICAgICAgJ3BhZGRpbmctcmlnaHQnOiBwYWRkaW5nUmlnaHQoKSxcclxuICAgICAgICAgICAgICAgICd0ZXh0LWFsaWduJzogdGV4dFBvc2l0aW9uKClcclxuICAgICAgICAgICAgfVwiPlxyXG5cclxuICAgICAgICBAaWYoaXNMb2FkaW5nKCkpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLWdsb3dcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGxhY2Vob2xkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPHNwYW4gbmdDbGFzcz1cImljb24tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIEBpZihpc0ludmFsaWQoKSAmJiAhaXNEaXNhYmxlZCgpICYmICFpc0xvYWRpbmcoKSkge1xyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jaXJjbGUtZXhjbGFtYXRpb25cIj48L2k+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEBlbHNlIGlmKGlzVmFsaWQoKSAmJiAhaXNEaXNhYmxlZCgpICYmICFpc0xvYWRpbmcoKSkge1xyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jaXJjbGUtY2hlY2sgdGV4dC1ncmVlblwiPjwvaT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvZGl2PiJdfQ==
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1udW1iZXJib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy9jb21wb25lbnRzL2xpYi9jb2VyLW51bWJlcmJveC9jb2VyLW51bWJlcmJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2NvbXBvbmVudHMvbGliL2NvZXItbnVtYmVyYm94L2NvZXItbnVtYmVyYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFRcEYsTUFBTSxPQUFPLGFBQWMsU0FBUSxZQUFZO0lBTi9DOztRQVFJLFlBQVk7UUFDTyxVQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdDLGlCQUFpQjtRQUNELFdBQU0sR0FBb0IsRUFBRSxDQUFDO1FBQ25DLGlCQUFZLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBYSxjQUFjLENBQUMsQ0FBQztRQUM5RCxrQkFBYSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQWEsZUFBZSxDQUFDLENBQUM7UUFFMUUsV0FBVztRQUNELFFBQUcsR0FBVyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDOUMsb0JBQWUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFekMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQVE1QixPQUFFLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLFVBQUssR0FBRyxLQUFL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LEVBQUUsQ0FBQztnQkFFcEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDWixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcscUNBQXFDLENBQUMsQ0FBQztvQkFDMUYsSUFBSSxPQUFPO3dCQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7b0JBQ2pFLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsQ0FBQTtZQUNOLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBblJRLGFBQWE7bUdBQWIsYUFBYSxpeEZBRlgsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsZ1NDUDdDLDIwREFrRE07OzRGRHpDTyxhQUFhO2tCQU56QixTQUFTOytCQUNJLGdCQUFnQixhQUdmLENBQUMsYUFBYSxlQUFlLENBQUM7OEJBbUI1QixLQUFLO3NCQUFqQixLQUFLO2dCQUtHLEVBQUU7c0JBQVYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIGlucHV0LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29lckFsZXJ0LCBDT05UUk9MX1ZBTFVFLCBDb250cm9sVmFsdWUsIFRvb2xzIH0gZnJvbSAnY29lci1lbGVtZW50cy90b29scyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY29lci1udW1iZXJib3gnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZXItbnVtYmVyYm94LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsOiAnLi9jb2VyLW51bWJlcmJveC5jb21wb25lbnQuc2NzcycsXHJcbiAgICBwcm92aWRlcnM6IFtDT05UUk9MX1ZBTFVFKENvZXJOdW1iZXJCb3gpXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29lck51bWJlckJveCBleHRlbmRzIENvbnRyb2xWYWx1ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gICAgLy9JbmplY3Rpb25zXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWxlcnQgPSBpbmplY3QoQ29lckFsZXJ0KTtcclxuXHJcbiAgICAvL0NvbXBvbmVudCBWYWx1ZVxyXG4gICAgcHVibGljIG92ZXJyaWRlIF92YWx1ZTogc3RyaW5nIHwgbnVtYmVyID0gJyc7XHJcbiAgICBwcm90ZWN0ZWQgbWF0Rm9ybUZpZWxkID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY+KCdtYXRGb3JtRmllbGQnKTtcclxuICAgIHByb3RlY3RlZCBjb2VyTnVtYmVyYm94ID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY+KCdjb2VyTnVtYmVyYm94Jyk7XHJcblxyXG4gICAgLy9WYXJpYWJsZXNcclxuICAgIHByb3RlY3RlZCBfaWQ6IHN0cmluZyA9IFRvb2xzLkdldEd1aWQoJ2NvZXItbnVtYmVyYm94Jyk7XHJcbiAgICBwcm90ZWN0ZWQgX2lzTG9hZGluZ0V2ZW50ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHByaXZhdGUgZWxlbWVudCE6IEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBwcm90ZWN0ZWQgaGlkZUNhcmV0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLy9JbnB1dHNcclxuICAgIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmKFRvb2xzLklzTnVsbCh2YWx1ZSkpIHZhbHVlID0gMDtcclxuICAgICAgICB0aGlzLlNldFZhbHVlKHZhbHVlIGFzIHN0cmluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZyA9ICcnO1xyXG4gICAgcHVibGljIGxhYmVsID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgICBwdWJsaWMgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICAgIHB1YmxpYyBtaW4gPSBpbnB1dDxudW1iZXI+KDApO1xyXG4gICAgcHVibGljIG1heCA9IGlucHV0PG51bWJlcj4oMjE0NzQ4MzY0Nyk7XHJcbiAgICBwdWJsaWMgZGVjaW1hbHMgPSBpbnB1dDxudW1iZXI+KDApO1xyXG4gICAgcHVibGljIHdpZHRoID0gaW5wdXQ8c3RyaW5nPignMTAwJScpO1xyXG4gICAgcHVibGljIG1pbldpZHRoID0gaW5wdXQ8c3RyaW5nPignMTkwcHgnKTtcclxuICAgIHB1YmxpYyBtYXhXaWR0aCA9IGlucHV0PHN0cmluZz4oJzEwMCUnKTtcclxuICAgIHB1YmxpYyBtYXJnaW5Ub3AgPSBpbnB1dDxzdHJpbmc+KCcwcHgnKTtcclxuICAgIHB1YmxpYyBtYXJnaW5SaWdodCA9IGlucHV0PHN0cmluZz4oJzBweCcpO1xyXG4gICAgcHVibGljIG1hcmdpbkJvdHRvbSA9IGlucHV0PHN0cmluZz4oJzBweCcpO1xyXG4gICAgcHVibGljIG1hcmdpbkxlZnQgPSBpbnB1dDxzdHJpbmc+KCcwcHgnKTtcclxuICAgIHB1YmxpYyBpc0ludmFsaWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwdWJsaWMgaXNWYWxpZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyBpc0Rpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIGlzUmVhZG9ubHkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwdWJsaWMgaXNMb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIHNlbGVjdE9uRm9jdXMgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICAgIHB1YmxpYyB0ZXh0UG9zaXRpb24gPSBpbnB1dDwnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCc+KCdyaWdodCcpO1xyXG5cclxuICAgIC8vT3V0cHV0c1xyXG4gICAgcHVibGljIG9uS2V5dXBFbnRlciA9IG91dHB1dDxzdHJpbmcgfCBudW1iZXI+KCk7XHJcbiAgICBwdWJsaWMgb25JbnB1dCA9IG91dHB1dDxzdHJpbmcgfCBudW1iZXI+KCk7XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgVG9vbHMuU2xlZXAoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5faWQpISBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5faXNFbmFibGUoKSkgdGhpcy5CbHVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3RPbkZvY3VzKCkpIHRoaXMuU2VsZWN0KCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHRoaXMuQmx1cigpKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNFbmFibGUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGtleSB9ID0gZXZlbnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAnRW50ZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmNvZXJOdW1iZXJib3goKS5uYXRpdmVFbGVtZW50LnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLk9ubHlOdW1iZXJzKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5WYWxpZGF0ZVJhbmdlVmFsdWUodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbktleXVwRW50ZXIuZW1pdCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkJsdXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ0Fycm93VXAnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVDYXJldCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlNldFZhbHVlKE51bWJlcih0aGlzLl92YWx1ZSkgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvb2xzLlNsZWVwKDUwMCwgJ0Fycm93VXAnKS50aGVuKCgpID0+IHRoaXMuaGlkZUNhcmV0ID0gZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlQ2FyZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5TZXRWYWx1ZShOdW1iZXIodGhpcy5fdmFsdWUpIC0gMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb29scy5TbGVlcCg1MDAsICdBcnJvd0Rvd24nKS50aGVuKCgpID0+IHRoaXMuaGlkZUNhcmV0ID0gZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIFRvb2xzLlNsZWVwKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY29lck51bWJlcmJveCgpLm5hdGl2ZUVsZW1lbnQudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5Pbmx5TnVtYmVycyh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5WYWxpZGF0ZVJhbmdlVmFsdWUodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNFbmFibGUoKSkgdGhpcy5vbklucHV0LmVtaXQodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHVibGljIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy9jb21wdXRlZFxyXG4gICAgcHJvdGVjdGVkIF9pc0VuYWJsZSA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuaXNEaXNhYmxlZCgpICYmICF0aGlzLmlzTG9hZGluZygpICYmICF0aGlzLmlzUmVhZG9ubHkoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vY29tcHV0ZWRcclxuICAgIHByb3RlY3RlZCBmbG9hdExhYmVsID0gY29tcHV0ZWQ8J2F1dG8nIHwgJ2Fsd2F5cyc+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sYWJlbCgpID09ICcnID8gJ2Fsd2F5cycgOiAnYXV0bydcclxuICAgIH0pO1xyXG5cclxuICAgIC8vY29tcHV0ZWRcclxuICAgIHByb3RlY3RlZCBwYWRkaW5nUmlnaHQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNJbnZhbGlkKCkgfHwgdGhpcy5pc1ZhbGlkKClcclxuICAgICAgICAgICAgPyAnMThweCcgOiAnMHB4JztcclxuICAgIH0pO1xyXG5cclxuICAgIC8vQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICAgIHB1YmxpYyBvdmVycmlkZSBTZXRWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgdmFsdWUgPSB0aGlzLk9ubHlOdW1iZXJzKHZhbHVlKTtcclxuICAgICAgICB2YWx1ZSA9IHRoaXMuVmFsaWRhdGVSYW5nZVZhbHVlKHZhbHVlKTtcclxuICAgICAgICB0aGlzLl9VcGRhdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5jb2VyTnVtYmVyYm94KCkubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICAgIHB1YmxpYyBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB2YWx1ZSA9IHRoaXMuT25seU51bWJlcnModmFsdWUpO1xyXG4gICAgICAgIHZhbHVlID0gdGhpcy5WYWxpZGF0ZVJhbmdlVmFsdWUodmFsdWUpO1xyXG4gICAgICAgIHRoaXMuY29lck51bWJlcmJveCgpLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByaXZhdGUgT25seU51bWJlcnModmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB8IG51bWJlciB7XHJcbiAgICAgICAgbGV0IGlzTmVnYXRpdmUgPSBmYWxzZTtcclxuICAgICAgICBsZXQgdmFsdWVTdHJpbmcgPSBTdHJpbmcodmFsdWUpLnRyaW0oKTtcclxuXHJcbiAgICAgICAgLy9OZWdhdGl2ZXNcclxuICAgICAgICBpZiAodmFsdWVTdHJpbmcuaW5jbHVkZXMoJy0nKSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5taW4oKSA8IDApIHtcclxuICAgICAgICAgICAgICAgIGlzTmVnYXRpdmUgPSB2YWx1ZVN0cmluZy5zdGFydHNXaXRoKCctJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVTdHJpbmcgPT0gJy0nKSByZXR1cm4gJy0nO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlU3RyaW5nID09ICctLicpIHJldHVybiAnLTAuJztcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZVN0cmluZyA9PSAnLTAnKSByZXR1cm4gJy0wJztcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZVN0cmluZyA9PSAnLTAuJykgcmV0dXJuICctMC4nO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmKE51bWJlcih2YWx1ZSkgPCB0aGlzLm1pbigpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0Lldhcm5pbmcoYE1pbmltdW0gJHt0aGlzLm1pbigpfWAsICdPdXQgb2YgcmFuZ2UnLCAnZmEtc29saWQgZmEtaGFzaHRhZycpO1xyXG4gICAgICAgICAgICAgICAgdmFsdWVTdHJpbmcgPSAnMCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNoYXJBcnJheSA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgY2hhciBvZiB2YWx1ZVN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAoWycwJywnMScsJzInLCczJywnNCcsJzUnLCc2JywnNycsJzgnLCc5J10uaW5jbHVkZXMoY2hhcikpIHtcclxuICAgICAgICAgICAgICAgIGNoYXJBcnJheS5wdXNoKGNoYXIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmIChjaGFyID09ICcuJyAmJiB0aGlzLmRlY2ltYWxzKCkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBjaGFyQXJyYXkucHVzaChjaGFyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFsdWVTdHJpbmcgPSBjaGFyQXJyYXkuam9pbignJyk7XHJcblxyXG4gICAgICAgIC8vRGVjaW1hbHNcclxuICAgICAgICBpZiAodGhpcy5kZWNpbWFscygpID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgaW50ZWdlclN0cmluZyA9IHZhbHVlU3RyaW5nLnNwbGl0KCcuJylbMF0gfHwgJyc7XHJcbiAgICAgICAgICAgIGxldCBkZWNpbWFsU3RyaW5nID0gdmFsdWVTdHJpbmcuc3BsaXQoJy4nKVsxXSB8fCAnJztcclxuICAgICAgICAgICAgZGVjaW1hbFN0cmluZyA9IGRlY2ltYWxTdHJpbmcuc3Vic3RyaW5nKDAsIHRoaXMuZGVjaW1hbHMoKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodmFsdWVTdHJpbmcgPT0gJy4nKSByZXR1cm4gJzAuJztcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlU3RyaW5nLmluY2x1ZGVzKCcuJykgJiYgZGVjaW1hbFN0cmluZyA9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChpc05lZ2F0aXZlKSA/IGAtJHtpbnRlZ2VyU3RyaW5nfS5gIDogYCR7aW50ZWdlclN0cmluZ30uYDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVTdHJpbmcuaW5jbHVkZXMoJy4nKSAmJiBkZWNpbWFsU3RyaW5nLmVuZHNXaXRoKCcwJykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoaXNOZWdhdGl2ZSkgPyBgLSR7aW50ZWdlclN0cmluZ30uJHtkZWNpbWFsU3RyaW5nfWAgOiBgJHtpbnRlZ2VyU3RyaW5nfS4ke2RlY2ltYWxTdHJpbmd9YDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZWxzZSBpZiAoaW50ZWdlclN0cmluZyA9PSAnJyAmJiBkZWNpbWFsU3RyaW5nID09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJzAnO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YWx1ZVN0cmluZyA9IGAke2ludGVnZXJTdHJpbmd9LiR7ZGVjaW1hbFN0cmluZ31gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGlzTmVnYXRpdmUpIHtcclxuICAgICAgICAgICAgdmFsdWVTdHJpbmcgPSBgLSR7dmFsdWVTdHJpbmd9YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsdWVTdHJpbmcpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByaXZhdGUgVmFsaWRhdGVSYW5nZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmKFsnLScsICcuJywgJy0uJywgJy0wJywgJy0wLiddLmluY2x1ZGVzKFN0cmluZyh2YWx1ZSkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYoTnVtYmVyKHZhbHVlKSA8IHRoaXMubWluKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5hbGVydC5XYXJuaW5nKGBNaW5pbXVtICR7dGhpcy5taW4oKX1gLCAnT3V0IG9mIHJhbmdlJywgJ2ZhLXNvbGlkIGZhLWhhc2h0YWcnKTtcclxuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLm1pbigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYoTnVtYmVyKHZhbHVlKSA+IHRoaXMubWF4KCkpIHtcclxuICAgICAgICAgICAgdGhpcy5hbGVydC5XYXJuaW5nKGBDYW5ub3QgZXhjZWVkICR7dGhpcy5tYXgoKX1gLCAnT3V0IG9mIHJhbmdlJywgJ2ZhLXNvbGlkIGZhLWhhc2h0YWcnKTtcclxuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLm1heCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGVjaW1hbHMoKSA8PSAwKSB7XHJcbiAgICAgICAgICAgIGlmIChTdHJpbmcodmFsdWUpLmluY2x1ZGVzKCcuJykpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKS5zcGxpdCgnLicpWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgRm9jdXModGltZW91dDogbnVtYmVyID0gMCk6IHZvaWQge1xyXG4gICAgICAgIGlmKHRoaXMuX2lzTG9hZGluZ0V2ZW50KCkpIHJldHVybjtcclxuICAgICAgICBlbHNlIHRoaXMuX2lzTG9hZGluZ0V2ZW50LnNldCh0cnVlKTtcclxuXHJcbiAgICAgICAgVG9vbHMuU2xlZXAodGltZW91dCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuX2lzRW5hYmxlKCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9pc0xvYWRpbmdFdmVudC5zZXQoZmFsc2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBTZWxlY3QodGltZW91dDogbnVtYmVyID0gMCk6IHZvaWQge1xyXG4gICAgICAgIGlmKHRoaXMuX2lzTG9hZGluZ0V2ZW50KCkpIHJldHVybjtcclxuICAgICAgICBlbHNlIHRoaXMuX2lzTG9hZGluZ0V2ZW50LnNldCh0cnVlKTtcclxuXHJcbiAgICAgICAgVG9vbHMuU2xlZXAodGltZW91dCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuX2lzRW5hYmxlKCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNlbGVjdCgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9pc0xvYWRpbmdFdmVudC5zZXQoZmFsc2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBCbHVyKCk6IHZvaWQge1xyXG4gICAgICAgIGlmKHRoaXMuX2lzTG9hZGluZ0V2ZW50KCkpIHJldHVybjtcclxuICAgICAgICBlbHNlIHRoaXMuX2lzTG9hZGluZ0V2ZW50LnNldCh0cnVlKTtcclxuXHJcbiAgICAgICAgVG9vbHMuU2xlZXAoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYmx1cigpO1xyXG5cclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHt0aGlzLl9pZH0tY29udGFpbmVyIC5tZGMtbGluZS1yaXBwbGUtLWFjdGl2ZWApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KSBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ21kYy1saW5lLXJpcHBsZS0tYWN0aXZlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNMb2FkaW5nRXZlbnQuc2V0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSIsIjxkaXYgY2xhc3M9XCJjb2VyLW51bWJlci1ib3hcIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgICAgIFtpZF09XCJfaWQgKyAnLWNvbnRhaW5lcidcIlxyXG4gICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwoKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAncmVhZG9ubHknOiBpc1JlYWRvbmx5KCkgJiYgIWlzTG9hZGluZygpXHJcbiAgICAgICAgfVwiXHJcbiAgICAgICAgW3N0eWxlXT1cIntcclxuICAgICAgICAgICAgJ3dpZHRoJzogd2lkdGgoKSxcclxuICAgICAgICAgICAgJ21pbi13aWR0aCc6IG1pbldpZHRoKCksXHJcbiAgICAgICAgICAgICdtYXgtd2lkdGgnOiBtYXhXaWR0aCgpLFxyXG4gICAgICAgICAgICAnbWFyZ2luLXRvcCc6IG1hcmdpblRvcCgpLFxyXG4gICAgICAgICAgICAnbWFyZ2luLXJpZ2h0JzogbWFyZ2luUmlnaHQoKSxcclxuICAgICAgICAgICAgJ21hcmdpbi1ib3R0b20nOiBtYXJnaW5Cb3R0b20oKSxcclxuICAgICAgICAgICAgJ21hcmdpbi1sZWZ0JzogbWFyZ2luTGVmdCgpXHJcbiAgICAgICAgfVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3sgbGFiZWwoKSB9fTwvbWF0LWxhYmVsPlxyXG5cclxuICAgICAgICA8aW5wdXQgI2NvZXJOdW1iZXJib3ggbWF0SW5wdXRcclxuICAgICAgICAgICAgW2lkXT1cIl9pZFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIV9pc0VuYWJsZSgpXCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cIl92YWx1ZVwiXHJcbiAgICAgICAgICAgIChpbnB1dCk9XCJTZXRWYWx1ZShjb2VyTnVtYmVyYm94LnZhbHVlKVwiXHJcbiAgICAgICAgICAgIChibHVyKT1cIlNldFRvdWNoZWQodHJ1ZSlcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjYXJldC1ub25lJzogaGlkZUNhcmV0IH1cIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgJ2N1cnNvcic6IGlzTG9hZGluZygpID8gJ3dhaXQnIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICdtYXJnaW4tdG9wJzogKGZsb2F0TGFiZWwoKSA9PSAnYXV0bycpID8gJzE1cHgnIDogJzlweCcsXHJcbiAgICAgICAgICAgICAgICAncGFkZGluZy1yaWdodCc6IHBhZGRpbmdSaWdodCgpLFxyXG4gICAgICAgICAgICAgICAgJ3RleHQtYWxpZ24nOiB0ZXh0UG9zaXRpb24oKVxyXG4gICAgICAgICAgICB9XCI+XHJcblxyXG4gICAgICAgIEBpZihpc0xvYWRpbmcoKSkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXItZ2xvd1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8c3BhbiBuZ0NsYXNzPVwiaWNvbi1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgQGlmKGlzSW52YWxpZCgpICYmICFpc0Rpc2FibGVkKCkgJiYgIWlzTG9hZGluZygpKSB7XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNpcmNsZS1leGNsYW1hdGlvblwiPjwvaT5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgQGVsc2UgaWYoaXNWYWxpZCgpICYmICFpc0Rpc2FibGVkKCkgJiYgIWlzTG9hZGluZygpKSB7XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNpcmNsZS1jaGVjayB0ZXh0LWdyZWVuXCI+PC9pPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9kaXY+Il19
@@ -1,5 +1,5 @@
1
1
  import { Component, Input } from '@angular/core';
2
- import { Menu } from '../../../tools/lib/menu.class';
2
+ import { Menu } from 'coer-elements/tools';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
5
  import * as i2 from "@angular/router";
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
41
41
  }], showInformation: [{
42
42
  type: Input
43
43
  }] } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1wYWdlLXRpdGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvc3JjL2NvbXBvbmVudHMvbGliL2NvZXItcGFnZS10aXRsZS9jb2VyLXBhZ2UtdGl0bGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy9zcmMvY29tcG9uZW50cy9saWIvY29lci1wYWdlLXRpdGxlL2NvZXItcGFnZS10aXRsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFDckQsMkRBQTJEO0FBQzNELHdEQUF3RDtBQUN4RCw0RUFBNEU7QUFPNUUsTUFBTSxPQUFPLGFBQWE7SUFMMUI7UUFPYSxVQUFLLEdBQWtCLElBQUksQ0FBQztRQUM1QixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUMvQixnQkFBVyxHQUFrQixFQUFFLENBQUM7UUFDaEMsV0FBTSxHQUFZLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2xDLG9CQUFlLEdBQVksS0FBSyxDQUFDO0tBK0I3QztJQTdCRyxJQUFjLEtBQUs7UUFDZixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFeEIsSUFBRyxJQUFJLEVBQUUsQ0FBQztZQUNOLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEMsSUFBRyxhQUFhLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNyQyxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDOUIsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLHVCQUF1QixDQUFDO0lBQ25DLENBQUM7K0dBbkJRLGFBQWE7bUdBQWIsYUFBYSx1TUNaMUIsa2lHQXFGZTs7NEZEekVGLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0ksaUJBQWlCOzhCQU1sQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJQnJlYWRjcnVtYiwgSUdvQmFjayB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAnLi4vLi4vLi4vdG9vbHMvbGliL21lbnUuY2xhc3MnO1xyXG4vL2ltcG9ydCB7IG5hdmlnYXRpb24gfSBmcm9tICdzcmMvYXBwL2FwcC1yb3V0aW5nLnNpZGVuYXYnO1xyXG4vL2ltcG9ydCB7IFNvdXJjZSB9IGZyb20gJ3NyYy9hcHAvbW9kdWxlcy9ob21lL2NsYXNzZXMnO1xyXG4vL2ltcG9ydCB7IElBcHBOYXZpZ2F0aW9uLCBJR29CYWNrIH0gZnJvbSAnc3JjL2FwcC9tb2R1bGVzL2hvbWUvaW50ZXJmYWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY29lci1wYWdlLXRpdGxlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2VyLXBhZ2UtdGl0bGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY29lci1wYWdlLXRpdGxlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvZXJQYWdlVGl0bGUge1xyXG5cclxuICAgIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIHNob3dOYXZpZ2F0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGJyZWFkY3J1bWJzOiBJQnJlYWRjcnVtYltdID0gW107XHJcbiAgICBASW5wdXQoKSBnb0JhY2s6IElHb0JhY2sgPSB7IHNob3c6IGZhbHNlIH07XHJcbiAgICBASW5wdXQoKSBzaG93SW5mb3JtYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF9pY29uKCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgTUVOVSA9IE1lbnUuR2V0KCk7XHJcblxyXG4gICAgICAgIGlmKE1FTlUpIHtcclxuICAgICAgICAgICAgY29uc3QgTUVOVV9TRUxFQ1RFRCA9IE1FTlUudHJlZS5zaGlmdCgpO1xyXG4gICAgICAgICAgICBpZihNRU5VX1NFTEVDVEVEICYmIE1FTlVfU0VMRUNURUQuaWNvbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIE1FTlVfU0VMRUNURUQuaWNvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuICdiaSBiaS1ob3VzZS1kb29yLWZpbGwnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vTW9kYWwgSW5mb3JtYXRpb25cclxuICAgIC8vcHJvdGVjdGVkIHNob3dNb2RhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgLy9ASW5wdXQoKSB1cmxUZW1wbGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICAvL0BJbnB1dCgpIGluZm9ybWF0aW9uVGl0bGU6IHN0cmluZyA9ICdJbmZvcm1hdGlvbic7XHJcbiAgICAvL0BJbnB1dCgpIGluZm9ybWF0aW9uSWNvbjogc3RyaW5nID0gJ2JpIGJpLWluZm8tY2lyY2xlJztcclxuICAgIC8vQElucHV0KCkgaW5mb3JtYXRpb25JY29uQ29sb3I6IHN0cmluZyA9ICdibGFjayc7XHJcbiAgICAvL0BJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnNTAwcHgnO1xyXG4gICAgLy9ASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyA9ICc0MzBweCc7XHJcblxyXG4gICAgLy9uZ09uSW5pdCgpIHtcclxuICAgIC8vICAgIGxldCBtb2R1bGUgPSBTb3VyY2UuR2V0Q3VycmVudE1vZHVsZSgpIGFzIGFueTtcclxuICAgIC8vICAgIGlmIChtb2R1bGUubW9kdWxlKSB7XHJcbiAgICAvLyAgICAgICAgbW9kdWxlID0gbmF2aWdhdGlvbi5maW5kKHggPT4geC50ZXh0ID09IG1vZHVsZS5tb2R1bGUpO1xyXG4gICAgLy8gICAgICAgIGlmIChtb2R1bGUgJiYgbW9kdWxlLmljb24pIHRoaXMuaWNvbiA9IG1vZHVsZS5pY29uO1xyXG4gICAgLy8gICAgfVxyXG4gICAgLy99XHJcbn0iLCI8aGVhZGVyIGNsYXNzPVwiY29lci1wYWdlLXRpdGxlXCIgdGl0bGU9Jyc+XHJcbiAgICA8aDI+XHJcbiAgICAgICAgPHNwYW4+IHt7IHRpdGxlIH19IDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPCEtLSBCdXR0b24gSW5mb3JtYXRpb24gLS0+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dJbmZvcm1hdGlvblwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLWluZm8tY2lyY2xlXCI+PC9pPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9oMj5cclxuXHJcbiAgICA8IS0tIE5hdmlnYXRpb24gLS0+XHJcbiAgICA8bmF2ICpuZ0lmPVwic2hvd05hdmlnYXRpb25cIiBhcmlhLWxhYmVsPVwiYnJlYWRjcnVtYlwiPlxyXG4gICAgICAgIDxvbCBjbGFzcz1cImJyZWFkY3J1bWJcIj5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwiYnJlYWRjcnVtYi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8YT48aSBbY2xhc3NdPVwiX2ljb25cIj48L2k+PC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBuYXYgb2YgYnJlYWRjcnVtYnNcIiBjbGFzcz1cImJyZWFkY3J1bWItaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgIFtyb3V0ZXJMaW5rXT0nKG5hdi5wYXRoICYmIG5hdi5wYXRoLmxlbmd0aCA+IDApID8gbmF2LnBhdGggOiBudWxsJ1xyXG4gICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109J25hdi5xdWVyeVBhcmFtcydcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiKG5hdi5jbGljaykgPyBuYXYuY2xpY2soKSA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBuYXYucGFnZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvb2w+XHJcblxyXG4gICAgICAgIDwhLS0gR28gQmFjayAtLT5cclxuICAgICAgICA8YSAgKm5nSWY9XCJnb0JhY2suc2hvd1wiXHJcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImdvQmFjay5wYXRoXCJcclxuICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT0nZ29CYWNrLnF1ZXJ5UGFyYW1zJ1xyXG4gICAgICAgICAgICAoY2xpY2spPVwiKGdvQmFjay5jbGljaykgPyBnb0JhY2suY2xpY2soKSA6IG51bGxcIj5cclxuICAgICAgICAgICAgR28gYmFja1xyXG4gICAgICAgIDwvYT5cclxuICAgIDwvbmF2PlxyXG5cclxuICAgIDwhLS0gVG9vbHRpcFxyXG4gICAgPGR4LXRvb2x0aXAgY29lci10b29sdGlwIHRhcmdldD1cIiNidG4taW5mb3JtYXRpb25cIiB0ZXh0PSdJbmZvcm1hdGlvbic+PC9keC10b29sdGlwPiAtLT5cclxuPC9oZWFkZXI+XHJcblxyXG5cclxuPCEtLSBJbmZvcm1hdGlvblxyXG48ZHgtcG9wdXBcclxuICAgIFsodmlzaWJsZSldPVwic2hvd01vZGFsXCJcclxuICAgIG1pbldpZHRoPVwiNTAwcHhcIiBtaW5IZWlnaHQ9XCI0MzBweFwiXHJcbiAgICBbd2lkdGhdPVwid2lkdGhcIiBbaGVpZ2h0XT1cImhlaWdodFwiXHJcbiAgICBbaGlkZU9uT3V0c2lkZUNsaWNrXT1cInRydWVcIlxyXG4gICAgW3Jlc2l6ZUVuYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgW2RyYWdFbmFibGVkXT1cInRydWVcIlxyXG4gICAgKG9uSGlkZGVuKT1cIihzaG93TW9kYWwgPSBmYWxzZSlcIlxyXG4gICAgPlxyXG5cclxuICAgIC0tIEhlYWRlciAtLVxyXG4gICAgPGhlYWRlciAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICd0aXRsZSdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxoNT4gPGkgW2NsYXNzXT1cImluZm9ybWF0aW9uSWNvblwiIFtzdHlsZV09XCJ7ICdjb2xvcic6IGluZm9ybWF0aW9uSWNvbkNvbG9yIH1cIj48L2k+IHt7IGluZm9ybWF0aW9uVGl0bGUgfX0gPC9oNT5cclxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiKHNob3dNb2RhbCA9IGZhbHNlKVwiIGNsYXNzPVwiYnRuIGJ0bi1jbG9zZVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9oZWFkZXI+XHJcblxyXG4gICAgLS0gQm9keSAtLVxyXG4gICAgPHNlY3Rpb24gKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY29udGVudCdcIj5cclxuICAgICAgICA8ZHgtc2Nyb2xsLXZpZXcgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiPlxyXG4gICAgICAgICAgICA8b2wgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtbnVtYmVyZWRcIj5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbVwiPlJlc3BlY3RzIHRoZSBvcmRlciBvZiB0aGUgY29sdW1ucyBsaWtlIHRoZSB0ZW1wbGF0ZS48L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uPGEgW2hyZWZdPVwidXJsVGVtcGxhdGVcIj5jbGljayBoZXJlIDwvYT50byBkb3dubG9hZCB0aGUgdGVtcGxhdGVcclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvb2w+XHJcbiAgICAgICAgPC9keC1zY3JvbGwtdmlldz5cclxuICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICAtLSBCdXR0b24gLS1cclxuICAgIDxkeGktdG9vbGJhci1pdGVtIHRvb2xiYXI9XCJib3R0b21cIiBsb2NhdGlvbj1cImFmdGVyXCI+XHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdtZW51LWl0ZW0nXCIgY2xhc3M9XCJoLTEwMFwiPlxyXG4gICAgICAgICAgICA8ZHgtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjb2VyLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgaWNvbj1cImZhLXNvbGlkIGZhLXhtYXJrXCIgdGV4dD1cIkNMT1NFXCJcclxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTI1cHhcIiBoZWlnaHQ9XCI0MHB4XCJcclxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIihzaG93TW9kYWwgPSBmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgY29sb3I9XCJyZWRcIlxyXG4gICAgICAgICAgICA+PC9keC1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2R4aS10b29sYmFyLWl0ZW0+XHJcbjwvZHgtcG9wdXA+IC0tPiJdfQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1wYWdlLXRpdGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvY29tcG9uZW50cy9saWIvY29lci1wYWdlLXRpdGxlL2NvZXItcGFnZS10aXRsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2NvbXBvbmVudHMvbGliL2NvZXItcGFnZS10aXRsZS9jb2VyLXBhZ2UtdGl0bGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7O0FBQzNDLDJEQUEyRDtBQUMzRCx3REFBd0Q7QUFDeEQsNEVBQTRFO0FBTzVFLE1BQU0sT0FBTyxhQUFhO0lBTDFCO1FBT2EsVUFBSyxHQUFrQixJQUFJLENBQUM7UUFDNUIsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFDL0IsZ0JBQVcsR0FBa0IsRUFBRSxDQUFDO1FBQ2hDLFdBQU0sR0FBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNsQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztLQStCN0M7SUE3QkcsSUFBYyxLQUFLO1FBQ2YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXhCLElBQUcsSUFBSSxFQUFFLENBQUM7WUFDTixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hDLElBQUcsYUFBYSxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQzlCLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyx1QkFBdUIsQ0FBQztJQUNuQyxDQUFDOytHQW5CUSxhQUFhO21HQUFiLGFBQWEsdU1DWjFCLGtpR0FxRmU7OzRGRHpFRixhQUFhO2tCQUx6QixTQUFTOytCQUNJLGlCQUFpQjs4QkFNbEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSUJyZWFkY3J1bWIsIElHb0JhY2sgfSBmcm9tICdjb2VyLWVsZW1lbnRzL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAnY29lci1lbGVtZW50cy90b29scyc7XHJcbi8vaW1wb3J0IHsgbmF2aWdhdGlvbiB9IGZyb20gJ3NyYy9hcHAvYXBwLXJvdXRpbmcuc2lkZW5hdic7XHJcbi8vaW1wb3J0IHsgU291cmNlIH0gZnJvbSAnc3JjL2FwcC9tb2R1bGVzL2hvbWUvY2xhc3Nlcyc7XHJcbi8vaW1wb3J0IHsgSUFwcE5hdmlnYXRpb24sIElHb0JhY2sgfSBmcm9tICdzcmMvYXBwL21vZHVsZXMvaG9tZS9pbnRlcmZhY2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjb2VyLXBhZ2UtdGl0bGUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZXItcGFnZS10aXRsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jb2VyLXBhZ2UtdGl0bGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29lclBhZ2VUaXRsZSB7XHJcblxyXG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgQElucHV0KCkgc2hvd05hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgYnJlYWRjcnVtYnM6IElCcmVhZGNydW1iW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIGdvQmFjazogSUdvQmFjayA9IHsgc2hvdzogZmFsc2UgfTtcclxuICAgIEBJbnB1dCgpIHNob3dJbmZvcm1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHByb3RlY3RlZCBnZXQgX2ljb24oKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBNRU5VID0gTWVudS5HZXQoKTtcclxuXHJcbiAgICAgICAgaWYoTUVOVSkge1xyXG4gICAgICAgICAgICBjb25zdCBNRU5VX1NFTEVDVEVEID0gTUVOVS50cmVlLnNoaWZ0KCk7XHJcbiAgICAgICAgICAgIGlmKE1FTlVfU0VMRUNURUQgJiYgTUVOVV9TRUxFQ1RFRC5pY29uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gTUVOVV9TRUxFQ1RFRC5pY29uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gJ2JpIGJpLWhvdXNlLWRvb3ItZmlsbCc7XHJcbiAgICB9XHJcblxyXG4gICAgLy9Nb2RhbCBJbmZvcm1hdGlvblxyXG4gICAgLy9wcm90ZWN0ZWQgc2hvd01vZGFsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvL0BJbnB1dCgpIHVybFRlbXBsYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgIC8vQElucHV0KCkgaW5mb3JtYXRpb25UaXRsZTogc3RyaW5nID0gJ0luZm9ybWF0aW9uJztcclxuICAgIC8vQElucHV0KCkgaW5mb3JtYXRpb25JY29uOiBzdHJpbmcgPSAnYmkgYmktaW5mby1jaXJjbGUnO1xyXG4gICAgLy9ASW5wdXQoKSBpbmZvcm1hdGlvbkljb25Db2xvcjogc3RyaW5nID0gJ2JsYWNrJztcclxuICAgIC8vQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICc1MDBweCc7XHJcbiAgICAvL0BJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gJzQzMHB4JztcclxuXHJcbiAgICAvL25nT25Jbml0KCkge1xyXG4gICAgLy8gICAgbGV0IG1vZHVsZSA9IFNvdXJjZS5HZXRDdXJyZW50TW9kdWxlKCkgYXMgYW55O1xyXG4gICAgLy8gICAgaWYgKG1vZHVsZS5tb2R1bGUpIHtcclxuICAgIC8vICAgICAgICBtb2R1bGUgPSBuYXZpZ2F0aW9uLmZpbmQoeCA9PiB4LnRleHQgPT0gbW9kdWxlLm1vZHVsZSk7XHJcbiAgICAvLyAgICAgICAgaWYgKG1vZHVsZSAmJiBtb2R1bGUuaWNvbikgdGhpcy5pY29uID0gbW9kdWxlLmljb247XHJcbiAgICAvLyAgICB9XHJcbiAgICAvL31cclxufSIsIjxoZWFkZXIgY2xhc3M9XCJjb2VyLXBhZ2UtdGl0bGVcIiB0aXRsZT0nJz5cclxuICAgIDxoMj5cclxuICAgICAgICA8c3Bhbj4ge3sgdGl0bGUgfX0gPC9zcGFuPlxyXG5cclxuICAgICAgICA8IS0tIEJ1dHRvbiBJbmZvcm1hdGlvbiAtLT5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0luZm9ybWF0aW9uXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmktaW5mby1jaXJjbGVcIj48L2k+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2gyPlxyXG5cclxuICAgIDwhLS0gTmF2aWdhdGlvbiAtLT5cclxuICAgIDxuYXYgKm5nSWY9XCJzaG93TmF2aWdhdGlvblwiIGFyaWEtbGFiZWw9XCJicmVhZGNydW1iXCI+XHJcbiAgICAgICAgPG9sIGNsYXNzPVwiYnJlYWRjcnVtYlwiPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJicmVhZGNydW1iLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxhPjxpIFtjbGFzc109XCJfaWNvblwiPjwvaT48L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG5hdiBvZiBicmVhZGNydW1ic1wiIGNsYXNzPVwiYnJlYWRjcnVtYi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8YSAgW3JvdXRlckxpbmtdPScobmF2LnBhdGggJiYgbmF2LnBhdGgubGVuZ3RoID4gMCkgPyBuYXYucGF0aCA6IG51bGwnXHJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT0nbmF2LnF1ZXJ5UGFyYW1zJ1xyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIobmF2LmNsaWNrKSA/IG5hdi5jbGljaygpIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG5hdi5wYWdlIH19XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC9vbD5cclxuXHJcbiAgICAgICAgPCEtLSBHbyBCYWNrIC0tPlxyXG4gICAgICAgIDxhICAqbmdJZj1cImdvQmFjay5zaG93XCJcclxuICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiZ29CYWNrLnBhdGhcIlxyXG4gICAgICAgICAgICBbcXVlcnlQYXJhbXNdPSdnb0JhY2sucXVlcnlQYXJhbXMnXHJcbiAgICAgICAgICAgIChjbGljayk9XCIoZ29CYWNrLmNsaWNrKSA/IGdvQmFjay5jbGljaygpIDogbnVsbFwiPlxyXG4gICAgICAgICAgICBHbyBiYWNrXHJcbiAgICAgICAgPC9hPlxyXG4gICAgPC9uYXY+XHJcblxyXG4gICAgPCEtLSBUb29sdGlwXHJcbiAgICA8ZHgtdG9vbHRpcCBjb2VyLXRvb2x0aXAgdGFyZ2V0PVwiI2J0bi1pbmZvcm1hdGlvblwiIHRleHQ9J0luZm9ybWF0aW9uJz48L2R4LXRvb2x0aXA+IC0tPlxyXG48L2hlYWRlcj5cclxuXHJcblxyXG48IS0tIEluZm9ybWF0aW9uXHJcbjxkeC1wb3B1cFxyXG4gICAgWyh2aXNpYmxlKV09XCJzaG93TW9kYWxcIlxyXG4gICAgbWluV2lkdGg9XCI1MDBweFwiIG1pbkhlaWdodD1cIjQzMHB4XCJcclxuICAgIFt3aWR0aF09XCJ3aWR0aFwiIFtoZWlnaHRdPVwiaGVpZ2h0XCJcclxuICAgIFtoaWRlT25PdXRzaWRlQ2xpY2tdPVwidHJ1ZVwiXHJcbiAgICBbcmVzaXplRW5hYmxlZF09XCJmYWxzZVwiXHJcbiAgICBbZHJhZ0VuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAob25IaWRkZW4pPVwiKHNob3dNb2RhbCA9IGZhbHNlKVwiXHJcbiAgICA+XHJcblxyXG4gICAgLS0gSGVhZGVyIC0tXHJcbiAgICA8aGVhZGVyICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ3RpdGxlJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGg1PiA8aSBbY2xhc3NdPVwiaW5mb3JtYXRpb25JY29uXCIgW3N0eWxlXT1cInsgJ2NvbG9yJzogaW5mb3JtYXRpb25JY29uQ29sb3IgfVwiPjwvaT4ge3sgaW5mb3JtYXRpb25UaXRsZSB9fSA8L2g1PlxyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCIoc2hvd01vZGFsID0gZmFsc2UpXCIgY2xhc3M9XCJidG4gYnRuLWNsb3NlXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2hlYWRlcj5cclxuXHJcbiAgICAtLSBCb2R5IC0tXHJcbiAgICA8c2VjdGlvbiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjb250ZW50J1wiPlxyXG4gICAgICAgIDxkeC1zY3JvbGwtdmlldyB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCI+XHJcbiAgICAgICAgICAgIDxvbCBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1udW1iZXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtXCI+UmVzcGVjdHMgdGhlIG9yZGVyIG9mIHRoZSBjb2x1bW5zIGxpa2UgdGhlIHRlbXBsYXRlLjwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb248YSBbaHJlZl09XCJ1cmxUZW1wbGF0ZVwiPmNsaWNrIGhlcmUgPC9hPnRvIGRvd25sb2FkIHRoZSB0ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC9vbD5cclxuICAgICAgICA8L2R4LXNjcm9sbC12aWV3PlxyXG4gICAgPC9zZWN0aW9uPlxyXG5cclxuICAgIC0tIEJ1dHRvbiAtLVxyXG4gICAgPGR4aS10b29sYmFyLWl0ZW0gdG9vbGJhcj1cImJvdHRvbVwiIGxvY2F0aW9uPVwiYWZ0ZXJcIj5cclxuICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ21lbnUtaXRlbSdcIiBjbGFzcz1cImgtMTAwXCI+XHJcbiAgICAgICAgICAgIDxkeC1idXR0b25cclxuICAgICAgICAgICAgICAgIGNvZXItYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBpY29uPVwiZmEtc29saWQgZmEteG1hcmtcIiB0ZXh0PVwiQ0xPU0VcIlxyXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMjVweFwiIGhlaWdodD1cIjQwcHhcIlxyXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiKHNob3dNb2RhbCA9IGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInJlZFwiXHJcbiAgICAgICAgICAgID48L2R4LWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZHhpLXRvb2xiYXItaXRlbT5cclxuPC9keC1wb3B1cD4gLS0+Il19