@sapphire-ion/framework 0.30.20 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/esm2022/lib/components/default/default-list/list.mjs +1 -1
  2. package/esm2022/lib/components/default/default-table/default-table.component.mjs +6 -5
  3. package/esm2022/lib/components/default/default-table/th-filter/th-filter.component.mjs +10 -9
  4. package/esm2022/lib/components/default/default-view/default-view.component.mjs +10 -10
  5. package/esm2022/lib/components/default/default.module.mjs +12 -4
  6. package/esm2022/lib/components/filter/filter.component.mjs +2 -2
  7. package/esm2022/lib/components/inputs/custom-input.mjs +57 -49
  8. package/esm2022/lib/components/inputs/input-bool/input-bool.component.mjs +31 -34
  9. package/esm2022/lib/components/inputs/input-bool/input-bool.configuration.mjs +4 -4
  10. package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.mjs +33 -46
  11. package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.mjs +2 -2
  12. package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +86 -97
  13. package/esm2022/lib/components/inputs/input-decimal/input-decimal.component.mjs +158 -190
  14. package/esm2022/lib/components/inputs/input-decimal/input-decimal.configuration.mjs +6 -1
  15. package/esm2022/lib/components/inputs/input-file/download-button/download-button.component.mjs +12 -10
  16. package/esm2022/lib/components/inputs/input-file/input-file.component.mjs +60 -98
  17. package/esm2022/lib/components/inputs/input-file/input-file.configuration.mjs +18 -5
  18. package/esm2022/lib/components/inputs/input-provider-factory.mjs +4 -7
  19. package/esm2022/lib/components/inputs/input-select/directives/sion-label-template.directive.mjs +16 -0
  20. package/esm2022/lib/components/inputs/input-select/directives/sion-option-template.directive.mjs +18 -0
  21. package/esm2022/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.mjs +16 -0
  22. package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +235 -264
  23. package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +50 -29
  24. package/esm2022/lib/components/inputs/input-string/input-string.component.mjs +27 -42
  25. package/esm2022/lib/components/inputs/input-string/input-string.configuration.mjs +1 -1
  26. package/esm2022/lib/components/inputs/input-textarea/input-textarea.component.mjs +26 -38
  27. package/esm2022/lib/components/inputs/input-textarea/input-textarea.configuration.mjs +7 -0
  28. package/esm2022/lib/components/inputs/inputs.module.mjs +72 -81
  29. package/esm2022/lib/components/login/login-admin/login-admin.component.mjs +1 -1
  30. package/esm2022/lib/components/popover/sion-popover/sion-popover.component.mjs +171 -0
  31. package/esm2022/lib/components/popover/sion-popover.module.mjs +23 -0
  32. package/esm2022/lib/components/stepper/step/step.component.mjs +3 -3
  33. package/esm2022/lib/components/stepper/stepper.component.mjs +13 -13
  34. package/esm2022/lib/index.mjs +10 -6
  35. package/esm2022/lib/services/utils.service.mjs +3 -3
  36. package/esm2022/lib/services/web/http.ativo.service.mjs +2 -2
  37. package/esm2022/lib/services/web/http.service.mjs +4 -7
  38. package/fesm2022/sapphire-ion-framework.mjs +1226 -1737
  39. package/fesm2022/sapphire-ion-framework.mjs.map +1 -1
  40. package/lib/components/default/default.module.d.ts +3 -1
  41. package/lib/components/inputs/custom-input.d.ts +26 -22
  42. package/lib/components/inputs/input-bool/input-bool.component.d.ts +13 -16
  43. package/lib/components/inputs/input-bool/input-bool.configuration.d.ts +2 -2
  44. package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.d.ts +13 -18
  45. package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.d.ts +1 -1
  46. package/lib/components/inputs/input-date/input-date.component.d.ts +21 -24
  47. package/lib/components/inputs/input-decimal/input-decimal.component.d.ts +21 -36
  48. package/lib/components/inputs/input-decimal/input-decimal.configuration.d.ts +3 -0
  49. package/lib/components/inputs/input-file/download-button/download-button.component.d.ts +2 -1
  50. package/lib/components/inputs/input-file/input-file.component.d.ts +20 -32
  51. package/lib/components/inputs/input-file/input-file.configuration.d.ts +2 -5
  52. package/lib/components/inputs/input-provider-factory.d.ts +1 -1
  53. package/lib/components/inputs/input-select/directives/sion-label-template.directive.d.ts +12 -0
  54. package/lib/components/inputs/input-select/directives/sion-option-template.directive.d.ts +11 -0
  55. package/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.d.ts +12 -0
  56. package/lib/components/inputs/input-select/input-select.component.d.ts +60 -58
  57. package/lib/components/inputs/input-select/input.select.configuration.d.ts +11 -9
  58. package/lib/components/inputs/input-string/input-string.component.d.ts +11 -16
  59. package/lib/components/inputs/input-textarea/input-textarea.component.d.ts +11 -15
  60. package/lib/components/inputs/input-textarea/input-textarea.configuration.d.ts +4 -0
  61. package/lib/components/inputs/inputs.module.d.ts +18 -21
  62. package/lib/components/popover/sion-popover/sion-popover.component.d.ts +36 -0
  63. package/lib/components/popover/sion-popover.module.d.ts +8 -0
  64. package/lib/components/stepper/stepper.component.d.ts +3 -6
  65. package/lib/index.d.ts +5 -4
  66. package/lib/services/utils.service.d.ts +1 -1
  67. package/package.json +5 -4
  68. package/themes/compiled-styles.scss +157 -4
  69. package/themes/components/default/default-table/default-table.component.scss +0 -13
  70. package/themes/components/default/default-table/th-filter/th-filter.component.scss +0 -3
  71. package/themes/components/inputs/input-bool/input-bool.component.scss +2 -13
  72. package/themes/components/inputs/input-date/input-date.component.scss +33 -34
  73. package/themes/components/inputs/input-decimal/input-decimal.component.scss +8 -42
  74. package/themes/components/inputs/input-file/input-file.component.scss +16 -2
  75. package/themes/components/inputs/input-select/input-select.component.scss +47 -24
  76. package/themes/components/inputs/input-textarea/input-textarea.component.scss +7 -0
  77. package/themes/components/inputs/inputs.scss +103 -49
  78. package/themes/components/inputs_old/inputs.scss +67 -0
  79. package/themes/components/popover/sion-popover/sion-popover.component.scss +46 -0
  80. package/themes/styles/components.scss +34 -0
  81. package/themes/styles/ionic/ion-datetime.scss +3 -2
  82. package/esm2022/lib/components/inputs/custom-signal-input.mjs +0 -74
  83. package/esm2022/lib/components/inputs/input-color/input-color.component.mjs +0 -487
  84. package/esm2022/lib/components/inputs/input-loading/input-loading.component.mjs +0 -16
  85. package/esm2022/lib/components/inputs/input-select/ISelect.mjs +0 -11
  86. package/esm2022/lib/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.mjs +0 -42
  87. package/esm2022/lib/components/inputs/input-select/input-select-option/input-select-option.component.mjs +0 -46
  88. package/esm2022/lib/components/inputs/input-select/input-select-template.directive.mjs +0 -16
  89. package/lib/components/inputs/custom-signal-input.d.ts +0 -38
  90. package/lib/components/inputs/input-color/input-color.component.d.ts +0 -80
  91. package/lib/components/inputs/input-loading/input-loading.component.d.ts +0 -7
  92. package/lib/components/inputs/input-select/ISelect.d.ts +0 -21
  93. package/lib/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.d.ts +0 -18
  94. package/lib/components/inputs/input-select/input-select-option/input-select-option.component.d.ts +0 -24
  95. package/lib/components/inputs/input-select/input-select-template.directive.d.ts +0 -8
  96. package/themes/components/inputs/input-loading/input-loading.component.scss +0 -0
  97. package/themes/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.scss +0 -0
  98. package/themes/components/inputs/input-select/input-select-option/input-select-option.component.scss +0 -0
  99. /package/themes/components/{inputs → inputs_old}/input-color/input-color.component.scss +0 -0
@@ -107,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
107
107
  }], lstTableFields: [{
108
108
  type: Input
109
109
  }] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtbGlzdC9saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFjLEtBQUssRUFBRSxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBYyxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFjLE1BQU0sd0NBQXdDLENBQUM7QUFHMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7QUFFcEYsa0VBQWtFO0FBRWxFLE1BQU0sT0FBZ0IsSUFBSTtJQU94QjtRQU1BLGtFQUFrRTtRQUNsRSxrQkFBYSxHQUE4QixLQUFLLENBQWUsRUFBRSxDQUFDLENBQUM7UUFNbkUsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUVuQixXQUFNLEdBQWMsS0FBSyxDQUFDO1FBQzFCLFlBQU8sR0FBYSxJQUFJLENBQUM7UUFFekIsb0JBQWUsR0FBaUIsRUFBRSxDQUFDO1FBRW5DLDJCQUEyQjtRQUNsQixRQUFHLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7UUFFOUMscUdBQXFHO1FBQzVGLG1CQUFjLEdBQWlCLEVBQUUsQ0FBQztRQXZCekMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFzQkQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBRXZDLElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFD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Q0FBQztRQUNwQixDQUFDO2dCQUNNLENBQUMsQ0FBQyxDQUFDO1FBRVYsSUFBRyxLQUFLLEVBQUMsQ0FBQztZQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksUUFBcUIsQ0FBQztRQUUxQixJQUFHLENBQUM7WUFDRixJQUFHLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQztnQkFDaEIsUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5RSxDQUFDO2lCQUNHLENBQUM7Z0JBQ0gsUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9ELENBQUM7WUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBTSxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ2pDLENBQUM7Z0JBQVEsQ0FBQyxDQUFDLENBQUM7UUFDWixPQUFPO0lBQ1QsQ0FBQzsrR0F2R21CLElBQUk7bUdBQUosSUFBSSwyd0JBREgsRUFBRTs7NEZBQ0gsSUFBSTtrQkFEekIsU0FBUzsrQkFBYSxFQUFFO3dEQU1kLE9BQU87c0JBQWYsS0FBSztnQkFZRyxRQUFRO3NCQUFoQixLQUFLO2dCQVdHLEdBQUc7c0JBQVgsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IENvbXBvbmVudCwgZWZmZWN0LCBFbGVtZW50UmVmLCBJbnB1dCwgbW9kZWwsIE1vZGVsU2lnbmFsLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVmcmVzaGVyQ3VzdG9tRXZlbnQgfSBmcm9tIFwiQGlvbmljL2FuZ3VsYXJcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBDb21waWxlTHN0VGFibGVGaWVsZCwgQ29tcGFyaXNvbiB9IGZyb20gXCIuLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vY29tcGFyaXNvblwiO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSwgVmlld1JldG9ybm8gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy93ZWIvaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2VuZXJpY1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvZ2VuZXJpY3Muc2VydmljZVwiO1xyXG5pbXBvcnQgeyBWaWV3RmlsdHJvcyB9IGZyb20gXCIuLi8uLi8uLi9jbGFzc2VzL2ZpbHRlcnMvdmlldy1maWx0cm9zXCI7XHJcbmltcG9ydCB7IFRhYmxlRmllbGQgfSBmcm9tIFwiLi4vLi4vLi4vY2xhc3Nlcy9pbnB1dHMvdGFibGUtZmllbGRcIjtcclxuaW1wb3J0IHsgUm91dGVEYXRhIH0gZnJvbSBcIi4uLy4uLy4uL2NsYXNzZXMvcm91dGVzL3JvdXRlLWRhdGFcIjtcclxuaW1wb3J0IHsgTG9uZ1Byb3BlcnR5IH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb21wYXJpc29uL3Byb3BlcnRpZXMvbG9uZy1wcm9wZXJ0eSc7XHJcblxyXG4vL0NsYXNzZSBkZSBsaXN0YWdlbSwgaW1wbGVtZW50ZSBjYXJyZWdhbWVudG8gZSBmaWx0cmFnZW0gZGUgZGFkb3NcclxuQENvbXBvbmVudCh7IHRlbXBsYXRlOiAnJywgc3R5bGVzOiAnJyB9KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTGlzdDxUIGV4dGVuZHMgSHR0cFNlcnZpY2U8Vj4sIFYgPSBhbnk+IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgcHJvdGVjdGVkIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZTtcclxuICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlO1xyXG4gIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xyXG4gIEBJbnB1dCgpIHNlcnZpY2U6IFQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyBcclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuU2V0RmlsdGVycygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIFxyXG4gIC8qKiBAb3B0aW9uYWwgRmlsdHJvIGEgc2VyIGFwbGljYWRvIG5hIGJ1c2NhIGRhIGxpc3RhZ2VtIG5hIEFQSSAqL1xyXG4gIHByZWxvYWRGaWx0ZXI6IE1vZGVsU2lnbmFsPENvbXBhcmlzb25bXT4gPSBtb2RlbDxDb21wYXJpc29uW10+KFtdKTsgXHJcbiAgXHJcbiAgLyoqIEVuZC1wb2ludCBkZSBjYXJyZWdhbWVudG8gZGUgZGFkb3MuIERldmUgc2VyIHVtYSBmdW7Dp8OjbyBubyBzZXJ2aWNlIGFwbGljYWRvICovXHJcbiAgQElucHV0KCkgbG9hZEZyb206ICh2aWV3OiBWaWV3RmlsdHJvcykgPT4gT2JzZXJ2YWJsZTxWaWV3UmV0b3Jubz47XHJcblxyXG5cclxuICBsc3REYWRvczogVltdID0gW107XHJcbiAgdG90YWwgICA6IG51bWJlcjtcclxuICBuZXN0ZWQgIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxvYWRpbmcgOiBib29sZWFuID0gdHJ1ZTtcclxuICBcclxuICBvcmlnaW5hbEZpbHRlcnM6IENvbXBhcmlzb25bXSA9IFtdO1xyXG5cclxuICAvKiogRmlsdHJvIHByw6ljYXJyZWdhZG8gICovXHJcbiAgQElucHV0KCkgZnJtOiBWaWV3RmlsdHJvcyA9IG5ldyBWaWV3RmlsdHJvcygpO1xyXG5cclxuICAvKiogTGlzdGEgZGUgY2FtcG9zIGEgc2VyZW0gc3Vic3RpdHXDrWRvcyBwZWxvIHBhZHLDo28sIGFybWF6ZW5hZG8gbm8gc2VydmljZSBlbnZpYWRvIGNvbW8gcGFyw6JtZXRybyAqL1xyXG4gIEBJbnB1dCgpIGxzdFRhYmxlRmllbGRzOiBUYWJsZUZpZWxkW10gPSBbXTtcclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLm9yaWdpbmFsRmlsdGVycyA9IHRoaXMuZnJtLmZpbHRlcjtcclxuXHJcbiAgICBpZih0aGlzLmxzdFRhYmxlRmllbGRzLmxlbmd0aCA9PSAwKXtcclxuICAgICAgdGhpcy5sc3RUYWJsZUZpZWxkcyA9IHRoaXMuc2VydmljZS5sc3RUYWJsZUZpZWxkcztcclxuICAgIH1cclxuICAgIGlmKCF0aGlzLnNlcnZpY2Uucm91dGUpeyBjb25zb2xlLndhcm4oXCJbIFdhcm5pbmchIF0gWyBVcmwgaXMgdW5kZWZpbmVkIF1cIil9XHJcbiAgICBpZighdGhpcy5zZXJ2aWNlLnRpdGxlKXsgY29uc29sZS53YXJuKFwiWyBXYXJuaW5nISBdIFsgdGl0dWxvIGlzIHVuZGVmaW5lZCBdXCIpfVxyXG4gICAgXHJcbiAgICAvL1sgTmVzdGVkIGVsZW1lbnQgXVxyXG4gICAgaWYodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCl7XHJcbiAgICAgIHRoaXMubmVzdGVkID0gKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQudGFnTmFtZSBhcyBzdHJpbmcpLnRvVXBwZXJDYXNlKCkgIT0gXCJJT04tQ09OVEVOVFwiO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMubmVzdGVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBhd2FpdCB0aGlzLlNldEZpbHRlcnMoKTtcclxuICAgIGlmKHRoaXMubmVzdGVkKXsgdGhpcy5SZWZyZXNoKCk7IH1cclxuICB9XHJcblxyXG4gIC8qKiBDYXJyZWdhIG9zIGZpbHRyb3MgcHLDqS1jYXJyZWdhZG9zIGUgb3MgZmlsdHJvcyBjb21waWxhZG9zICovXHJcbiAgcHJvdGVjdGVkIGFzeW5jIFNldEZpbHRlcnMoKTogUHJvbWlzZTx2b2lkPntcclxuICAgIGF3YWl0IHRoaXMuTG9hZElkQ29tcGFyaXNvbigpO1xyXG4gICAgY29uc3QgY29tcGlsZWQgICAgICA9IENvbXBpbGVMc3RUYWJsZUZpZWxkKHRoaXMubHN0VGFibGVGaWVsZHMpO1xyXG4gICAgY29uc3QgcHJlbG9hZEZpbHRlciA9IHRoaXMucHJlbG9hZEZpbHRlcigpO1xyXG4gICAgLy8gQWRpY2lvbmEgb3MgZmlsdHJvcyBwcsOpLWNhcnJlZ2Fkb3MsIG9zIGZpbHRyb3MgY29tcGlsYWRvcyBlIG9zIGZpbHRyb3Mgb3JpZ2luYWlzIGUgcmVtb3ZlIG9zIG51bG9zXHJcbiAgICB0aGlzLmZybS5maWx0ZXIgICAgID0gWy4uLnByZWxvYWRGaWx0ZXIsIC4uLmNvbXBpbGVkLCAuLi50aGlzLm9yaWdpbmFsRmlsdGVyc10uZmlsdGVyKHAgPT4gcCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBMb2FkSWRDb21wYXJpc29uKCk6IFByb21pc2U8dm9pZD57XHJcbiAgICB0cnl7XHJcbiAgICAgIGNvbnN0IGRhdGE6IFJvdXRlRGF0YSA9IChhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmFjdGl2YXRlZFJvdXRlLmRhdGEpKSBhcyBSb3V0ZURhdGE7XHJcblxyXG4gICAgICBjb25zdCBpZCAgID0gdGhpcy5nZW5lcmljU2VydmljZS5HZXRJZCh0aGlzLmFjdGl2YXRlZFJvdXRlLCBkYXRhLmlkUHJlbG9hZGVyQ29uZmlndXJhdGlvbi5yb3V0ZURlcHRoKTtcclxuICAgICAgdmFyIGluZGV4OiBudW1iZXIgPSB0aGlzLmxzdFRhYmxlRmllbGRzLmluZGV4T2YodGhpcy5sc3RUYWJsZUZpZWxkcy5maW5kKHAgPT4gcC5pbmRleCA9PSBkYXRhLmlkUHJlbG9hZGVyQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWUpKTtcclxuICAgICAgY29uc3QgZmlsdGVyOiBDb21wYXJpc29uID0gbmV3IExvbmdQcm9wZXJ0eShkYXRhLmlkUHJlbG9hZGVyQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWUpLkVxdWFscyhpZCk7XHJcblxyXG4gICAgICBmaWx0ZXIudmFsdWUgPSBpZDtcclxuICAgICAgZmlsdGVyLmRpc2FibGVDaGFuZ2UgPSBkYXRhLmlkUHJlbG9hZGVyQ29uZmlndXJhdGlvbi5kaXNhYmxlQ2hhbmdlO1xyXG4gICAgICB0aGlzLmxzdFRhYmxlRmllbGRzW2luZGV4XS5maWx0ZXIgPSBbZmlsdGVyXTtcclxuICAgIH1maW5hbGx5eyBcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgUmVmcmVzaChldmVudD86IFJlZnJlc2hlckN1c3RvbUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdHJ5e1xyXG4gICAgICBhd2FpdCB0aGlzLkxvYWQoKTtcclxuICAgIH1cclxuICAgIGZpbmFsbHl7IH1cclxuXHJcbiAgICBpZihldmVudCl7IGV2ZW50LnRhcmdldC5jb21wbGV0ZSgpOyB9XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcbiAgXHJcbiAgYXN5bmMgTG9hZCgpOiBQcm9taXNlPHZvaWQ+e1xyXG4gICAgdmFyIHZSZXRvcm5vOiBWaWV3UmV0b3JubztcclxuXHJcbiAgICB0cnl7XHJcbiAgICAgIGlmKHRoaXMubG9hZEZyb20pe1xyXG4gICAgICAgIHZSZXRvcm5vID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlW3RoaXMubG9hZEZyb20ubmFtZV0odGhpcy5mcm0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHZSZXRvcm5vID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLkxpc3QodGhpcy5mcm0pKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxzdERhZG9zID0gdlJldG9ybm8ubHN0RGFkb3M7IFxyXG4gICAgICB0aGlzLnRvdGFsICAgID0gdlJldG9ybm8udG90YWw7IFxyXG4gICAgfSBmaW5hbGx5eyB9XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG59Il19
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtbGlzdC9saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFjLEtBQUssRUFBRSxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBYyxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFjLE1BQU0sd0NBQXdDLENBQUM7QUFHMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7QUFFcEYsa0VBQWtFO0FBRWxFLE1BQU0sT0FBZ0IsSUFBSTtJQU94QjtRQU1BLGtFQUFrRTtRQUNsRSxrQkFBYSxHQUE4QixLQUFLLENBQWUsRUFBRSxDQUFDLENBQUM7UUFPbkUsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUVuQixXQUFNLEdBQWMsS0FBSyxDQUFDO1FBQzFCLFlBQU8sR0FBYSxJQUFJLENBQUM7UUFFekIsb0JBQWUsR0FBaUIsRUFBRSxDQUFDO1FBRW5DLDJCQUEyQjtRQUNsQixRQUFHLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7UUFFOUMscUdBQXFHO1FBQzVGLG1CQUFjLEdBQWlCLEVBQUUsQ0FBQztRQXhCekMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUF1QkQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBRXZDLElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsSUFBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFDLENBQUM7WUFBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUE7UUFBQSxDQUFDO1FBQzNFLElBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBQyxDQUFDO1lBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFBO1FBQUEsQ0FBQztRQUU5RSxvQkFBb0I7UUFDcEIsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFrQixDQUFDLFdBQVcsRUFBRSxJQUFJLGFBQWEsQ0FBQztRQUMvRyxDQUFDO2FBQUksQ0FBQztZQUNKLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFFRCxNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN4QixJQUFHLElBQUksQ0FBQyxNQUFNLEVBQUMsQ0FBQztZQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGdFQUFnRTtJQUN0RCxLQUFLLENBQUMsVUFBVTtRQUN4QixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzlCLE1BQU0sUUFBUSxHQUFRLG9CQUFvQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0MscUdBQXFHO1FBQ3JHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFPLENBQUMsR0FBRyxhQUFhLEVBQUUsR0FBRyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0I7UUFDcEIsSUFBRyxDQUFDO1lBQ0YsTUFBTSxJQUFJLEdBQWMsQ0FBQyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFjLENBQUM7WUFFdEYsTUFBTSxFQUFFLEdBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEcsSUFBSSxLQUFLLEdBQVcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3RJLE1BQU0sTUFBTSxHQUFlLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFbkcsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDbEIsTUFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDO1lBQ25FLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsQ0FBQztnQkFBTyxDQUFDO1lBQ1AsT0FBTztRQUNULENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUE0QjtRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFHLENBQUM7WUFDRixNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQixDQUFDO2dCQUNNLENBQUMsQ0FBQyxDQUFDO1FBRVYsSUFBRyxLQUFLLEVBQUMsQ0FBQztZQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksUUFBcUIsQ0FBQztRQUUxQixJQUFHLENBQUM7WUFDRixJQUFHLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQztnQkFDaEIsUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5RSxDQUFDO2lCQUNHLENBQUM7Z0JBQ0gsUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9ELENBQUM7WUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBTSxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ2pDLENBQUM7Z0JBQVEsQ0FBQyxDQUFDLENBQUM7UUFDWixPQUFPO0lBQ1QsQ0FBQzsrR0F4R21CLElBQUk7bUdBQUosSUFBSSwyd0JBREgsRUFBRTs7NEZBQ0gsSUFBSTtrQkFEekIsU0FBUzsrQkFBYSxFQUFFO3dEQU1kLE9BQU87c0JBQWYsS0FBSztnQkFhRyxRQUFRO3NCQUFoQixLQUFLO2dCQVdHLEdBQUc7c0JBQVgsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IENvbXBvbmVudCwgZWZmZWN0LCBFbGVtZW50UmVmLCBJbnB1dCwgbW9kZWwsIE1vZGVsU2lnbmFsLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVmcmVzaGVyQ3VzdG9tRXZlbnQgfSBmcm9tIFwiQGlvbmljL2FuZ3VsYXJcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBDb21waWxlTHN0VGFibGVGaWVsZCwgQ29tcGFyaXNvbiB9IGZyb20gXCIuLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vY29tcGFyaXNvblwiO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSwgVmlld1JldG9ybm8gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy93ZWIvaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2VuZXJpY1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvZ2VuZXJpY3Muc2VydmljZVwiO1xyXG5pbXBvcnQgeyBWaWV3RmlsdHJvcyB9IGZyb20gXCIuLi8uLi8uLi9jbGFzc2VzL2ZpbHRlcnMvdmlldy1maWx0cm9zXCI7XHJcbmltcG9ydCB7IFRhYmxlRmllbGQgfSBmcm9tIFwiLi4vLi4vLi4vY2xhc3Nlcy9pbnB1dHMvdGFibGUtZmllbGRcIjtcclxuaW1wb3J0IHsgUm91dGVEYXRhIH0gZnJvbSBcIi4uLy4uLy4uL2NsYXNzZXMvcm91dGVzL3JvdXRlLWRhdGFcIjtcclxuaW1wb3J0IHsgTG9uZ1Byb3BlcnR5IH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb21wYXJpc29uL3Byb3BlcnRpZXMvbG9uZy1wcm9wZXJ0eSc7XHJcblxyXG4vL0NsYXNzZSBkZSBsaXN0YWdlbSwgaW1wbGVtZW50ZSBjYXJyZWdhbWVudG8gZSBmaWx0cmFnZW0gZGUgZGFkb3NcclxuQENvbXBvbmVudCh7IHRlbXBsYXRlOiAnJywgc3R5bGVzOiAnJyB9KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTGlzdDxUIGV4dGVuZHMgSHR0cFNlcnZpY2U8Vj4sIFYgPSBhbnk+IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgcHJvdGVjdGVkIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZTtcclxuICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlO1xyXG4gIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xyXG4gIEBJbnB1dCgpIHNlcnZpY2U6IFQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyBcclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuU2V0RmlsdGVycygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIFxyXG4gIC8qKiBAb3B0aW9uYWwgRmlsdHJvIGEgc2VyIGFwbGljYWRvIG5hIGJ1c2NhIGRhIGxpc3RhZ2VtIG5hIEFQSSAqL1xyXG4gIHByZWxvYWRGaWx0ZXI6IE1vZGVsU2lnbmFsPENvbXBhcmlzb25bXT4gPSBtb2RlbDxDb21wYXJpc29uW10+KFtdKTsgXHJcbiAgXHJcbiAgLy9UT0RPIEZJWCBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNzM3NjE4MDUgXHJcbiAgLyoqIEVuZC1wb2ludCBkZSBjYXJyZWdhbWVudG8gZGUgZGFkb3MuIERldmUgc2VyIHVtYSBmdW7Dp8OjbyBubyBzZXJ2aWNlIGFwbGljYWRvICovXHJcbiAgQElucHV0KCkgbG9hZEZyb206ICh2aWV3OiBWaWV3RmlsdHJvcykgPT4gT2JzZXJ2YWJsZTxWaWV3UmV0b3Jubz47XHJcblxyXG5cclxuICBsc3REYWRvczogVltdID0gW107XHJcbiAgdG90YWwgICA6IG51bWJlcjtcclxuICBuZXN0ZWQgIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxvYWRpbmcgOiBib29sZWFuID0gdHJ1ZTtcclxuICBcclxuICBvcmlnaW5hbEZpbHRlcnM6IENvbXBhcmlzb25bXSA9IFtdO1xyXG5cclxuICAvKiogRmlsdHJvIHByw6ljYXJyZWdhZG8gICovXHJcbiAgQElucHV0KCkgZnJtOiBWaWV3RmlsdHJvcyA9IG5ldyBWaWV3RmlsdHJvcygpO1xyXG5cclxuICAvKiogTGlzdGEgZGUgY2FtcG9zIGEgc2VyZW0gc3Vic3RpdHXDrWRvcyBwZWxvIHBhZHLDo28sIGFybWF6ZW5hZG8gbm8gc2VydmljZSBlbnZpYWRvIGNvbW8gcGFyw6JtZXRybyAqL1xyXG4gIEBJbnB1dCgpIGxzdFRhYmxlRmllbGRzOiBUYWJsZUZpZWxkW10gPSBbXTtcclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLm9yaWdpbmFsRmlsdGVycyA9IHRoaXMuZnJtLmZpbHRlcjtcclxuXHJcbiAgICBpZih0aGlzLmxzdFRhYmxlRmllbGRzLmxlbmd0aCA9PSAwKXtcclxuICAgICAgdGhpcy5sc3RUYWJsZUZpZWxkcyA9IHRoaXMuc2VydmljZS5sc3RUYWJsZUZpZWxkcztcclxuICAgIH1cclxuICAgIGlmKCF0aGlzLnNlcnZpY2Uucm91dGUpeyBjb25zb2xlLndhcm4oXCJbIFdhcm5pbmchIF0gWyBVcmwgaXMgdW5kZWZpbmVkIF1cIil9XHJcbiAgICBpZighdGhpcy5zZXJ2aWNlLnRpdGxlKXsgY29uc29sZS53YXJuKFwiWyBXYXJuaW5nISBdIFsgdGl0dWxvIGlzIHVuZGVmaW5lZCBdXCIpfVxyXG4gICAgXHJcbiAgICAvL1sgTmVzdGVkIGVsZW1lbnQgXVxyXG4gICAgaWYodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCl7XHJcbiAgICAgIHRoaXMubmVzdGVkID0gKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQudGFnTmFtZSBhcyBzdHJpbmcpLnRvVXBwZXJDYXNlKCkgIT0gXCJJT04tQ09OVEVOVFwiO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMubmVzdGVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBhd2FpdCB0aGlzLlNldEZpbHRlcnMoKTtcclxuICAgIGlmKHRoaXMubmVzdGVkKXsgdGhpcy5SZWZyZXNoKCk7IH1cclxuICB9XHJcblxyXG4gIC8qKiBDYXJyZWdhIG9zIGZpbHRyb3MgcHLDqS1jYXJyZWdhZG9zIGUgb3MgZmlsdHJvcyBjb21waWxhZG9zICovXHJcbiAgcHJvdGVjdGVkIGFzeW5jIFNldEZpbHRlcnMoKTogUHJvbWlzZTx2b2lkPntcclxuICAgIGF3YWl0IHRoaXMuTG9hZElkQ29tcGFyaXNvbigpO1xyXG4gICAgY29uc3QgY29tcGlsZWQgICAgICA9IENvbXBpbGVMc3RUYWJsZUZpZWxkKHRoaXMubHN0VGFibGVGaWVsZHMpO1xyXG4gICAgY29uc3QgcHJlbG9hZEZpbHRlciA9IHRoaXMucHJlbG9hZEZpbHRlcigpO1xyXG4gICAgLy8gQWRpY2lvbmEgb3MgZmlsdHJvcyBwcsOpLWNhcnJlZ2Fkb3MsIG9zIGZpbHRyb3MgY29tcGlsYWRvcyBlIG9zIGZpbHRyb3Mgb3JpZ2luYWlzIGUgcmVtb3ZlIG9zIG51bG9zXHJcbiAgICB0aGlzLmZybS5maWx0ZXIgICAgID0gWy4uLnByZWxvYWRGaWx0ZXIsIC4uLmNvbXBpbGVkLCAuLi50aGlzLm9yaWdpbmFsRmlsdGVyc10uZmlsdGVyKHAgPT4gcCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBMb2FkSWRDb21wYXJpc29uKCk6IFByb21pc2U8dm9pZD57XHJcbiAgICB0cnl7XHJcbiAgICAgIGNvbnN0IGRhdGE6IFJvdXRlRGF0YSA9IChhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmFjdGl2YXRlZFJvdXRlLmRhdGEpKSBhcyBSb3V0ZURhdGE7XHJcblxyXG4gICAgICBjb25zdCBpZCAgID0gdGhpcy5nZW5lcmljU2VydmljZS5HZXRJZCh0aGlzLmFjdGl2YXRlZFJvdXRlLCBkYXRhLmlkUHJlbG9hZGVyQ29uZmlndXJhdGlvbi5yb3V0ZURlcHRoKTtcclxuICAgICAgdmFyIGluZGV4OiBudW1iZXIgPSB0aGlzLmxzdFRhYmxlRmllbGRzLmluZGV4T2YodGhpcy5sc3RUYWJsZUZpZWxkcy5maW5kKHAgPT4gcC5pbmRleCA9PSBkYXRhLmlkUHJlbG9hZGVyQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWUpKTtcclxuICAgICAgY29uc3QgZmlsdGVyOiBDb21wYXJpc29uID0gbmV3IExvbmdQcm9wZXJ0eShkYXRhLmlkUHJlbG9hZGVyQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWUpLkVxdWFscyhpZCk7XHJcblxyXG4gICAgICBmaWx0ZXIudmFsdWUgPSBpZDtcclxuICAgICAgZmlsdGVyLmRpc2FibGVDaGFuZ2UgPSBkYXRhLmlkUHJlbG9hZGVyQ29uZmlndXJhdGlvbi5kaXNhYmxlQ2hhbmdlO1xyXG4gICAgICB0aGlzLmxzdFRhYmxlRmllbGRzW2luZGV4XS5maWx0ZXIgPSBbZmlsdGVyXTtcclxuICAgIH1maW5hbGx5eyBcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgUmVmcmVzaChldmVudD86IFJlZnJlc2hlckN1c3RvbUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdHJ5e1xyXG4gICAgICBhd2FpdCB0aGlzLkxvYWQoKTtcclxuICAgIH1cclxuICAgIGZpbmFsbHl7IH1cclxuXHJcbiAgICBpZihldmVudCl7IGV2ZW50LnRhcmdldC5jb21wbGV0ZSgpOyB9XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcbiAgXHJcbiAgYXN5bmMgTG9hZCgpOiBQcm9taXNlPHZvaWQ+e1xyXG4gICAgdmFyIHZSZXRvcm5vOiBWaWV3UmV0b3JubztcclxuXHJcbiAgICB0cnl7XHJcbiAgICAgIGlmKHRoaXMubG9hZEZyb20pe1xyXG4gICAgICAgIHZSZXRvcm5vID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlW3RoaXMubG9hZEZyb20ubmFtZV0odGhpcy5mcm0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHZSZXRvcm5vID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLkxpc3QodGhpcy5mcm0pKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxzdERhZG9zID0gdlJldG9ybm8ubHN0RGFkb3M7IFxyXG4gICAgICB0aGlzLnRvdGFsICAgID0gdlJldG9ybm8udG90YWw7IFxyXG4gICAgfSBmaW5hbGx5eyB9XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG59Il19
@@ -14,8 +14,9 @@ import * as i4 from "@angular/common";
14
14
  import * as i5 from "../../inputs/input-file/download-button/download-button.component";
15
15
  import * as i6 from "@angular/forms";
16
16
  import * as i7 from "../../loading/loading.component";
17
- import * as i8 from "../default-pagination/default-pagination.component";
18
- import * as i9 from "./th-filter/th-filter.component";
17
+ import * as i8 from "../../content-block/content-block.component";
18
+ import * as i9 from "../default-pagination/default-pagination.component";
19
+ import * as i10 from "./th-filter/th-filter.component";
19
20
  /** Componente de tabela padrão */
20
21
  export class DefaultTableComponent {
21
22
  constructor(storageService, activatedRoute, router) {
@@ -158,11 +159,11 @@ export class DefaultTableComponent {
158
159
  return "";
159
160
  }
160
161
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultTableComponent, deps: [{ token: i1.StorageService }, { token: i2.ActivatedRoute }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
161
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DefaultTableComponent, selector: "default-table", inputs: { defaultService: ["service", "defaultService"], acoesTemplate: "acoesTemplate", total: "total", limit: "limit", page: "page", orderByProperty: "orderByProperty", ascending: "ascending", filter: "filter", loading: "loading", items: "items", lstTableFields: "lstTableFields", noFilters: "noFilters", columnClass: "columnClass", columnStyle: "columnStyle", noPagination: "noPagination", itemPath: "itemPath" }, outputs: { limitChange: "limitChange", pageChange: "pageChange", orderByPropertyChange: "orderByPropertyChange", ascendingChange: "ascendingChange", filterChange: "filterChange", ativarEmitter: "ativar", refreshEmitter: "refresh" }, ngImport: i0, template: "<section class=\"w-full h-full rounded-2xl flex flex-col overflow-y-hidden relative\" [ngClass]=\"{ 'loading' : loading }\">\r\n \r\n <div class=\"unique-conteiner default-transition\" [ngClass]=\"{'!-z-50 !-translate-y-12 !opacity-0': !loading }\">\r\n <loading [type]=\"2\"></loading>\r\n </div>\r\n <div class=\"unique-conteiner default-transition\" [ngClass]=\"{'!-z-50 !-translate-y-12 !opacity-0': items.length != 0 || loading }\">\r\n <b><ion-icon class=\"align-sub\" name=\"remove-circle\"></ion-icon> Sem dados</b>\r\n </div>\r\n\r\n <div id=\"wrapper\" class=\"relative overflow-y-auto w-full grow-0 mb-auto pb-2\">\r\n <table class=\"z-20\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\" class=\"px-3 !h-10\" *ngIf=\"acoesTemplate\">\r\n <span>A\u00E7\u00F5es</span>\r\n </th>\r\n @for (field of lstTableFields; let i = $index; track i) {\r\n @if (!field.hidden) {\r\n <th scope=\"col\" class=\"p-2 px-3\" id=\"th-filter-select\">\r\n <div class=\"flex items-center justify-start h-full\" style=\"white-space: var(--ion-table-filter-wrap);\"> \r\n @if(!noFilters){\r\n <th-filter *ngIf=\"(field.type != InputTypeFile) && !(field.filter && field.disabledChange()) && !noFilters\"\r\n [field]=\"field\"\r\n (change)=\"ChangeFilter()\"\r\n ></th-filter>\r\n }\r\n <span>{{field.header}}</span>\r\n\r\n <a *ngIf=\"!(!(field.type != InputTypeFile) && !(field.filter && field.disabledChange())) && !noFilters\" class=\"order-switch h-5 flex items-center justify-center px-1 ml-2 shrink-0 cursor-pointer rounded-2xl\" (click)=\"SwitchOrder(field)\" [ngClass]=\"{ 'ordering-asc' : orderByProperty == field.index && ascending, 'ordering-desc' : orderByProperty == field.index && !ascending}\">\r\n <ion-icon id=\"up\" name=\"arrow-up\" class=\"-mt-1\"></ion-icon>\r\n <ion-icon id=\"down\" name=\"arrow-down\" class=\"-ml-1 -mb-1\"></ion-icon>\r\n </a>\r\n </div>\r\n </th>\r\n }\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr [hidden]=\"loading\" *ngFor=\"let item of items\">\r\n @if(acoesTemplate){\r\n <td class=\"whitespace-nowrap py-1 px-3\" [style]=\"GetTdStyle('Acoes', item)\" >\r\n <ng-container *ngTemplateOutlet=\"acoesTemplate; context: { $implicit: item }\"></ng-container>\r\n </td>\r\n }\r\n\r\n @for (field of lstTableFields; track $index) {\r\n @if (!field.hidden) {\r\n <td class=\"px-3 py-2\" \r\n [ngClass]=\"GetTdClasses(field, item)\" \r\n [style]=\"GetTdStyle(field, item)\" \r\n (click)=\"Redirect(field, item)\"\r\n style=\"white-space: var(--ion-table-row-wrap);\"\r\n >\r\n @if (field.index == 'ativo') {\r\n <div class=\"w-full h-full flex items-center justify-start\" [routerLink]=\"null\">\r\n <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"loading\" (ionChange)=\"Ativar(item.id)\" ></ion-toggle>\r\n </div>\r\n } @else {\r\n @switch (field.type) {\r\n @case (\"Bool\") {\r\n @if (field.configuration.type == \"toggle\") {\r\n <div class=\"-full h-full flex items-center justify-start\">\r\n <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-toggle>\r\n </div>\r\n }\r\n @else {\r\n <div class=\"-full h-full flex items-center justify-start\">\r\n <ion-checkbox [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-checkbox>\r\n </div>\r\n }\r\n }\r\n @case (\"File\") {\r\n <download-button [(ngModel)]=\"item[field.index]\" [configuration]=\"field.configuration\"></download-button>\r\n }\r\n @case (\"Select\") {\r\n {{GetSelectLabel(item, field)}}\r\n }\r\n @default {\r\n {{GetField(item, field)}} \r\n }\r\n }\r\n }\r\n </td>\r\n }\r\n }\r\n </tr>\r\n\r\n <ng-content select=\"[slot=item-end]\"></ng-content>\r\n </tbody>\r\n </table>\r\n </div>\r\n @if(!noPagination){\r\n <div class=\"shrink-0 mt-auto w-full\">\r\n <default-pagination\r\n [page]=\"page\"\r\n (pageChange)=\"EmitPage($event)\"\r\n [total]=\"total\"\r\n [limit]=\"limit\"\r\n [length]=\"items.length\"\r\n [loading]=\"loading\"\r\n ></default-pagination>\r\n </div>\r\n }\r\n</section>\r\n", styles: ["section{transition:height .6s;transition-timing-function:ease-in-out}#th-filter-select:hover .order-switch{background-color:var(--ion-color-step-200)}#th-filter-select:hover .order-switch #up,#th-filter-select:hover .order-switch #down{opacity:1!important;color:var(--ion-color-step-700)!important}#th-filter-select .order-switch{transition:background-color .3s}#th-filter-select .order-switch #up,#th-filter-select .order-switch #down{opacity:0;transition:all .3s}#th-filter-select .order-switch.ordering-asc #up{color:var(--ion-color-primary)!important;opacity:1}#th-filter-select .order-switch.ordering-asc #down,#th-filter-select .order-switch.ordering-desc #up{color:var(--ion-color-step-800)!important;opacity:1}#th-filter-select .order-switch.ordering-desc #down{color:var(--ion-color-primary)!important;opacity:1}.unique-conteiner{position:absolute;top:2.5rem;z-index:30;margin-top:2.5rem;margin-bottom:2.5rem;display:flex;min-height:2.5rem;width:100%;--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));align-items:center;justify-content:center;padding-left:.75rem;padding-right:.75rem;text-align:center}#wrapper{-webkit-mask-image:linear-gradient(180deg,#000 98%,#0000);mask-image:linear-gradient(180deg,#000 98%,#0000)}\n"], dependencies: [{ kind: "component", type: i3.IonCheckbox, selector: "ion-checkbox", inputs: ["alignment", "checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "required", "value"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonToggle, selector: "ion-toggle", inputs: ["alignment", "checked", "color", "disabled", "enableOnOffLabels", "errorText", "helperText", "justify", "labelPlacement", "mode", "name", "required", "value"] }, { kind: "directive", type: i3.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i3.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.DownloadButtonComponent, selector: "download-button", inputs: ["expand", "value", "size", "params", "disabled", "post", "configuration"], outputs: ["valueChange"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.LoadingComponent, selector: "loading", inputs: ["text", "type", "loading"] }, { kind: "component", type: i8.DefaultPaginationComponent, selector: "default-pagination", inputs: ["total", "limit", "length", "loading", "page"], outputs: ["pageChange", "change"] }, { kind: "component", type: i9.ThFilterComponent, selector: "th-filter", inputs: ["field"], outputs: ["change"] }] }); }
162
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DefaultTableComponent, selector: "default-table", inputs: { defaultService: ["service", "defaultService"], acoesTemplate: "acoesTemplate", total: "total", limit: "limit", page: "page", orderByProperty: "orderByProperty", ascending: "ascending", filter: "filter", loading: "loading", items: "items", lstTableFields: "lstTableFields", noFilters: "noFilters", columnClass: "columnClass", columnStyle: "columnStyle", noPagination: "noPagination", itemPath: "itemPath" }, outputs: { limitChange: "limitChange", pageChange: "pageChange", orderByPropertyChange: "orderByPropertyChange", ascendingChange: "ascendingChange", filterChange: "filterChange", ativarEmitter: "ativar", refreshEmitter: "refresh" }, ngImport: i0, template: "<!-- <section class=\"w-full h-full rounded-2xl flex flex-col overflow-y-hidden relative\" [ngClass]=\"{ 'loading' : loading }\">\r\n \r\n <div class=\"unique-conteiner default-transition\" [ngClass]=\"{'!-z-50 !-translate-y-12 !opacity-0': !loading }\">\r\n <loading [type]=\"2\"></loading>\r\n </div>\r\n <div class=\"unique-conteiner default-transition\" [ngClass]=\"{'!-z-50 !-translate-y-12 !opacity-0': items.length != 0 || loading }\">\r\n <b><ion-icon class=\"align-sub\" name=\"remove-circle\"></ion-icon> Sem dados</b>\r\n </div>\r\n\r\n <div id=\"wrapper\" class=\"relative overflow-y-auto w-full grow-0 mb-auto pb-2\">\r\n <table class=\"z-20 overflow-visible\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\" class=\"px-3 !h-10\" *ngIf=\"acoesTemplate\">\r\n <span>A\u00E7\u00F5es</span>\r\n </th>\r\n @for (field of lstTableFields; let i = $index; track i) {\r\n @if (!field.hidden) {\r\n <th scope=\"col\" class=\"p-2 px-3\" id=\"th-filter-select\">\r\n <div class=\"flex items-center justify-start h-full\" style=\"white-space: var(--ion-table-filter-wrap);\"> \r\n @if(!noFilters){\r\n <th-filter class=\"!text-base\" style=\"text-transform: none !important\" *ngIf=\"(field.type != InputTypeFile) && !(field.filter && field.disabledChange()) && !noFilters\"\r\n [field]=\"field\"\r\n (change)=\"ChangeFilter()\"\r\n ></th-filter>\r\n }\r\n <span>{{field.header}}</span>\r\n\r\n <a *ngIf=\"!(!(field.type != InputTypeFile) && !(field.filter && field.disabledChange())) && !noFilters\" class=\"order-switch h-5 flex items-center justify-center px-1 ml-2 shrink-0 cursor-pointer rounded-2xl\" (click)=\"SwitchOrder(field)\" [ngClass]=\"{ 'ordering-asc' : orderByProperty == field.index && ascending, 'ordering-desc' : orderByProperty == field.index && !ascending}\">\r\n <ion-icon id=\"up\" name=\"arrow-up\" class=\"-mt-1\"></ion-icon>\r\n <ion-icon id=\"down\" name=\"arrow-down\" class=\"-ml-1 -mb-1\"></ion-icon>\r\n </a>\r\n </div>\r\n </th>\r\n }\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr [hidden]=\"loading\" *ngFor=\"let item of items\">\r\n @if(acoesTemplate){\r\n <td class=\"whitespace-nowrap py-1 px-3\" [style]=\"GetTdStyle('Acoes', item)\" >\r\n <ng-container *ngTemplateOutlet=\"acoesTemplate; context: { $implicit: item }\"></ng-container>\r\n </td>\r\n }\r\n\r\n @for (field of lstTableFields; track $index) {\r\n @if (!field.hidden) {\r\n <td class=\"px-3 py-2\" \r\n [ngClass]=\"GetTdClasses(field, item)\" \r\n [style]=\"GetTdStyle(field, item)\" \r\n (click)=\"Redirect(field, item)\"\r\n style=\"white-space: var(--ion-table-row-wrap);\"\r\n >\r\n @if (field.index == 'ativo') {\r\n <div class=\"w-full h-full flex items-center justify-start\" [routerLink]=\"null\">\r\n <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"loading\" (ionChange)=\"Ativar(item.id)\" ></ion-toggle>\r\n </div>\r\n } @else {\r\n @switch (field.type) {\r\n @case (\"Bool\") {\r\n @if (field.configuration.type == \"toggle\") {\r\n <div class=\"-full h-full flex items-center justify-start\">\r\n <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-toggle>\r\n </div>\r\n }\r\n @else {\r\n <div class=\"-full h-full flex items-center justify-start\">\r\n <ion-checkbox [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-checkbox>\r\n </div>\r\n }\r\n }\r\n @case (\"File\") {\r\n <download-button [(ngModel)]=\"item[field.index]\" [configuration]=\"field.configuration\"></download-button>\r\n }\r\n @case (\"Select\") {\r\n {{GetSelectLabel(item, field)}}\r\n }\r\n @default {\r\n {{GetField(item, field)}} \r\n }\r\n }\r\n }\r\n </td>\r\n }\r\n }\r\n </tr>\r\n\r\n <ng-content select=\"[slot=item-end]\"></ng-content>\r\n </tbody>\r\n </table>\r\n </div>\r\n @if(!noPagination){\r\n <div class=\"shrink-0 mt-auto w-full\">\r\n <default-pagination\r\n [page]=\"page\"\r\n (pageChange)=\"EmitPage($event)\"\r\n [total]=\"total\"\r\n [limit]=\"limit\"\r\n [length]=\"items.length\"\r\n [loading]=\"loading\"\r\n ></default-pagination>\r\n </div>\r\n }\r\n</section> -->\r\n<div class=\"size-full rounded-2xl flex flex-col overflow-hidden relative\">\r\n <loading [type]=\"3\" [loading]=\"loading\"></loading>\r\n <content-block text=\"Sem Dados\" [value]=\"!(items.length != 0 || loading)\"></content-block>\r\n\r\n <div class=\"size-full shrink relative overflow-y-auto\">\r\n <table>\r\n <thead>\r\n <tr>\r\n <th scope=\"col\" class=\"px-3 !h-10\" *ngIf=\"acoesTemplate\"> A\u00E7\u00F5es </th>\r\n @for (field of lstTableFields; let i = $index; track i) {\r\n @if (!field.hidden) {\r\n <th scope=\"col\" class=\"p-2 px-3\" id=\"th-filter-select\">\r\n <div class=\"flex items-center justify-start h-full\" style=\"white-space: var(--ion-table-filter-wrap);\"> \r\n @if(!noFilters){\r\n <th-filter class=\"!text-base\" style=\"text-transform: none !important\" *ngIf=\"(field.type != InputTypeFile) && !(field.filter && field.disabledChange()) && !noFilters\"\r\n [field]=\"field\"\r\n (change)=\"ChangeFilter()\"\r\n ></th-filter>\r\n }\r\n <span>{{field.header}}</span>\r\n\r\n <a *ngIf=\"!(!(field.type != InputTypeFile) && !(field.filter && field.disabledChange())) && !noFilters\" class=\"order-switch h-5 flex items-center justify-center px-1 ml-2 shrink-0 cursor-pointer rounded-2xl\" (click)=\"SwitchOrder(field)\" [ngClass]=\"{ 'ordering-asc' : orderByProperty == field.index && ascending, 'ordering-desc' : orderByProperty == field.index && !ascending}\">\r\n <ion-icon id=\"up\" name=\"arrow-up\" class=\"-mt-1\"></ion-icon>\r\n <ion-icon id=\"down\" name=\"arrow-down\" class=\"-ml-1 -mb-1\"></ion-icon>\r\n </a>\r\n </div>\r\n </th>\r\n }\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr [hidden]=\"loading\" *ngFor=\"let item of items\">\r\n @if(acoesTemplate){\r\n <td class=\"whitespace-nowrap py-1 px-3\" [style]=\"GetTdStyle('Acoes', item)\" >\r\n <ng-container *ngTemplateOutlet=\"acoesTemplate; context: { $implicit: item }\"></ng-container>\r\n </td>\r\n }\r\n\r\n @for (field of lstTableFields; track $index) {\r\n @if (!field.hidden) {\r\n <td class=\"px-3 py-2\" \r\n [ngClass]=\"GetTdClasses(field, item)\" \r\n [style]=\"GetTdStyle(field, item)\" \r\n (click)=\"Redirect(field, item)\"\r\n style=\"white-space: var(--ion-table-row-wrap);\"\r\n >\r\n @if (field.index == 'ativo') {\r\n <div class=\"w-full h-full flex items-center justify-start\" [routerLink]=\"null\">\r\n <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"loading\" (ionChange)=\"Ativar(item.id)\" ></ion-toggle>\r\n </div>\r\n } @else {\r\n @switch (field.type) {\r\n @case (\"Bool\") {\r\n @if (field.configuration.type == \"toggle\") {\r\n <div class=\"-full h-full flex items-center justify-start\">\r\n <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-toggle>\r\n </div>\r\n }\r\n @else {\r\n <div class=\"-full h-full flex items-center justify-start\">\r\n <ion-checkbox [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-checkbox>\r\n </div>\r\n }\r\n }\r\n @case (\"File\") {\r\n <download-button [(ngModel)]=\"item[field.index]\" [configuration]=\"field.configuration\"></download-button>\r\n }\r\n @case (\"Select\") {\r\n {{GetSelectLabel(item, field)}}\r\n }\r\n @default {\r\n {{GetField(item, field)}} \r\n }\r\n }\r\n }\r\n </td>\r\n }\r\n }\r\n </tr>\r\n\r\n <ng-content select=\"[slot=item-end]\"></ng-content>\r\n </tbody>\r\n </table>\r\n </div>\r\n @if(!noPagination){\r\n <div class=\"shrink-0 z-[100]\">\r\n <default-pagination\r\n [page]=\"page\"\r\n (pageChange)=\"EmitPage($event)\"\r\n [total]=\"total\"\r\n [limit]=\"limit\"\r\n [length]=\"items.length\"\r\n [loading]=\"loading\"\r\n ></default-pagination>\r\n </div>\r\n }\r\n</div>", styles: ["#th-filter-select:hover .order-switch{background-color:var(--ion-color-step-200)}#th-filter-select:hover .order-switch #up,#th-filter-select:hover .order-switch #down{opacity:1!important;color:var(--ion-color-step-700)!important}#th-filter-select .order-switch{transition:background-color .3s}#th-filter-select .order-switch #up,#th-filter-select .order-switch #down{opacity:0;transition:all .3s}#th-filter-select .order-switch.ordering-asc #up{color:var(--ion-color-primary)!important;opacity:1}#th-filter-select .order-switch.ordering-asc #down,#th-filter-select .order-switch.ordering-desc #up{color:var(--ion-color-step-800)!important;opacity:1}#th-filter-select .order-switch.ordering-desc #down{color:var(--ion-color-primary)!important;opacity:1}\n"], dependencies: [{ kind: "component", type: i3.IonCheckbox, selector: "ion-checkbox", inputs: ["alignment", "checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "required", "value"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonToggle, selector: "ion-toggle", inputs: ["alignment", "checked", "color", "disabled", "enableOnOffLabels", "errorText", "helperText", "justify", "labelPlacement", "mode", "name", "required", "value"] }, { kind: "directive", type: i3.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i3.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.DownloadButtonComponent, selector: "download-button", inputs: ["expand", "value", "size", "color", "params", "disabled", "post", "configuration"], outputs: ["valueChange"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.LoadingComponent, selector: "loading", inputs: ["text", "type", "loading"] }, { kind: "component", type: i8.ContentBlockComponent, selector: "content-block", inputs: ["text", "value"] }, { kind: "component", type: i9.DefaultPaginationComponent, selector: "default-pagination", inputs: ["total", "limit", "length", "loading", "page"], outputs: ["pageChange", "change"] }, { kind: "component", type: i10.ThFilterComponent, selector: "th-filter", inputs: ["field"], outputs: ["change"] }] }); }
162
163
  }
163
164
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultTableComponent, decorators: [{
164
165
  type: Component,
165
- args: [{ selector: 'default-table', template: "<section class=\"w-full h-full rounded-2xl flex flex-col overflow-y-hidden relative\" [ngClass]=\"{ 'loading' : loading }\">\r\n \r\n <div class=\"unique-conteiner default-transition\" [ngClass]=\"{'!-z-50 !-translate-y-12 !opacity-0': !loading }\">\r\n <loading [type]=\"2\"></loading>\r\n </div>\r\n <div class=\"unique-conteiner default-transition\" [ngClass]=\"{'!-z-50 !-translate-y-12 !opacity-0': items.length != 0 || loading }\">\r\n <b><ion-icon class=\"align-sub\" name=\"remove-circle\"></ion-icon> Sem dados</b>\r\n </div>\r\n\r\n <div id=\"wrapper\" class=\"relative overflow-y-auto w-full grow-0 mb-auto pb-2\">\r\n <table class=\"z-20\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\" class=\"px-3 !h-10\" *ngIf=\"acoesTemplate\">\r\n <span>A\u00E7\u00F5es</span>\r\n </th>\r\n @for (field of lstTableFields; let i = $index; track i) {\r\n @if (!field.hidden) {\r\n <th scope=\"col\" class=\"p-2 px-3\" id=\"th-filter-select\">\r\n <div class=\"flex items-center justify-start h-full\" style=\"white-space: var(--ion-table-filter-wrap);\"> \r\n @if(!noFilters){\r\n <th-filter *ngIf=\"(field.type != InputTypeFile) && !(field.filter && field.disabledChange()) && !noFilters\"\r\n [field]=\"field\"\r\n (change)=\"ChangeFilter()\"\r\n ></th-filter>\r\n }\r\n <span>{{field.header}}</span>\r\n\r\n <a *ngIf=\"!(!(field.type != InputTypeFile) && !(field.filter && field.disabledChange())) && !noFilters\" class=\"order-switch h-5 flex items-center justify-center px-1 ml-2 shrink-0 cursor-pointer rounded-2xl\" (click)=\"SwitchOrder(field)\" [ngClass]=\"{ 'ordering-asc' : orderByProperty == field.index && ascending, 'ordering-desc' : orderByProperty == field.index && !ascending}\">\r\n <ion-icon id=\"up\" name=\"arrow-up\" class=\"-mt-1\"></ion-icon>\r\n <ion-icon id=\"down\" name=\"arrow-down\" class=\"-ml-1 -mb-1\"></ion-icon>\r\n </a>\r\n </div>\r\n </th>\r\n }\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr [hidden]=\"loading\" *ngFor=\"let item of items\">\r\n @if(acoesTemplate){\r\n <td class=\"whitespace-nowrap py-1 px-3\" [style]=\"GetTdStyle('Acoes', item)\" >\r\n <ng-container *ngTemplateOutlet=\"acoesTemplate; context: { $implicit: item }\"></ng-container>\r\n </td>\r\n }\r\n\r\n @for (field of lstTableFields; track $index) {\r\n @if (!field.hidden) {\r\n <td class=\"px-3 py-2\" \r\n [ngClass]=\"GetTdClasses(field, item)\" \r\n [style]=\"GetTdStyle(field, item)\" \r\n (click)=\"Redirect(field, item)\"\r\n style=\"white-space: var(--ion-table-row-wrap);\"\r\n >\r\n @if (field.index == 'ativo') {\r\n <div class=\"w-full h-full flex items-center justify-start\" [routerLink]=\"null\">\r\n <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"loading\" (ionChange)=\"Ativar(item.id)\" ></ion-toggle>\r\n </div>\r\n } @else {\r\n @switch (field.type) {\r\n @case (\"Bool\") {\r\n @if (field.configuration.type == \"toggle\") {\r\n <div class=\"-full h-full flex items-center justify-start\">\r\n <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-toggle>\r\n </div>\r\n }\r\n @else {\r\n <div class=\"-full h-full flex items-center justify-start\">\r\n <ion-checkbox [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-checkbox>\r\n </div>\r\n }\r\n }\r\n @case (\"File\") {\r\n <download-button [(ngModel)]=\"item[field.index]\" [configuration]=\"field.configuration\"></download-button>\r\n }\r\n @case (\"Select\") {\r\n {{GetSelectLabel(item, field)}}\r\n }\r\n @default {\r\n {{GetField(item, field)}} \r\n }\r\n }\r\n }\r\n </td>\r\n }\r\n }\r\n </tr>\r\n\r\n <ng-content select=\"[slot=item-end]\"></ng-content>\r\n </tbody>\r\n </table>\r\n </div>\r\n @if(!noPagination){\r\n <div class=\"shrink-0 mt-auto w-full\">\r\n <default-pagination\r\n [page]=\"page\"\r\n (pageChange)=\"EmitPage($event)\"\r\n [total]=\"total\"\r\n [limit]=\"limit\"\r\n [length]=\"items.length\"\r\n [loading]=\"loading\"\r\n ></default-pagination>\r\n </div>\r\n }\r\n</section>\r\n", styles: ["section{transition:height .6s;transition-timing-function:ease-in-out}#th-filter-select:hover .order-switch{background-color:var(--ion-color-step-200)}#th-filter-select:hover .order-switch #up,#th-filter-select:hover .order-switch #down{opacity:1!important;color:var(--ion-color-step-700)!important}#th-filter-select .order-switch{transition:background-color .3s}#th-filter-select .order-switch #up,#th-filter-select .order-switch #down{opacity:0;transition:all .3s}#th-filter-select .order-switch.ordering-asc #up{color:var(--ion-color-primary)!important;opacity:1}#th-filter-select .order-switch.ordering-asc #down,#th-filter-select .order-switch.ordering-desc #up{color:var(--ion-color-step-800)!important;opacity:1}#th-filter-select .order-switch.ordering-desc #down{color:var(--ion-color-primary)!important;opacity:1}.unique-conteiner{position:absolute;top:2.5rem;z-index:30;margin-top:2.5rem;margin-bottom:2.5rem;display:flex;min-height:2.5rem;width:100%;--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));align-items:center;justify-content:center;padding-left:.75rem;padding-right:.75rem;text-align:center}#wrapper{-webkit-mask-image:linear-gradient(180deg,#000 98%,#0000);mask-image:linear-gradient(180deg,#000 98%,#0000)}\n"] }]
166
+ args: [{ selector: 'default-table', template: "<!-- <section class=\"w-full h-full rounded-2xl flex flex-col overflow-y-hidden relative\" [ngClass]=\"{ 'loading' : loading }\">\r\n \r\n <div class=\"unique-conteiner default-transition\" [ngClass]=\"{'!-z-50 !-translate-y-12 !opacity-0': !loading }\">\r\n <loading [type]=\"2\"></loading>\r\n </div>\r\n <div class=\"unique-conteiner default-transition\" [ngClass]=\"{'!-z-50 !-translate-y-12 !opacity-0': items.length != 0 || loading }\">\r\n <b><ion-icon class=\"align-sub\" name=\"remove-circle\"></ion-icon> Sem dados</b>\r\n </div>\r\n\r\n <div id=\"wrapper\" class=\"relative overflow-y-auto w-full grow-0 mb-auto pb-2\">\r\n <table class=\"z-20 overflow-visible\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\" class=\"px-3 !h-10\" *ngIf=\"acoesTemplate\">\r\n <span>A\u00E7\u00F5es</span>\r\n </th>\r\n @for (field of lstTableFields; let i = $index; track i) {\r\n @if (!field.hidden) {\r\n <th scope=\"col\" class=\"p-2 px-3\" id=\"th-filter-select\">\r\n <div class=\"flex items-center justify-start h-full\" style=\"white-space: var(--ion-table-filter-wrap);\"> \r\n @if(!noFilters){\r\n <th-filter class=\"!text-base\" style=\"text-transform: none !important\" *ngIf=\"(field.type != InputTypeFile) && !(field.filter && field.disabledChange()) && !noFilters\"\r\n [field]=\"field\"\r\n (change)=\"ChangeFilter()\"\r\n ></th-filter>\r\n }\r\n <span>{{field.header}}</span>\r\n\r\n <a *ngIf=\"!(!(field.type != InputTypeFile) && !(field.filter && field.disabledChange())) && !noFilters\" class=\"order-switch h-5 flex items-center justify-center px-1 ml-2 shrink-0 cursor-pointer rounded-2xl\" (click)=\"SwitchOrder(field)\" [ngClass]=\"{ 'ordering-asc' : orderByProperty == field.index && ascending, 'ordering-desc' : orderByProperty == field.index && !ascending}\">\r\n <ion-icon id=\"up\" name=\"arrow-up\" class=\"-mt-1\"></ion-icon>\r\n <ion-icon id=\"down\" name=\"arrow-down\" class=\"-ml-1 -mb-1\"></ion-icon>\r\n </a>\r\n </div>\r\n </th>\r\n }\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr [hidden]=\"loading\" *ngFor=\"let item of items\">\r\n @if(acoesTemplate){\r\n <td class=\"whitespace-nowrap py-1 px-3\" [style]=\"GetTdStyle('Acoes', item)\" >\r\n <ng-container *ngTemplateOutlet=\"acoesTemplate; context: { $implicit: item }\"></ng-container>\r\n </td>\r\n }\r\n\r\n @for (field of lstTableFields; track $index) {\r\n @if (!field.hidden) {\r\n <td class=\"px-3 py-2\" \r\n [ngClass]=\"GetTdClasses(field, item)\" \r\n [style]=\"GetTdStyle(field, item)\" \r\n (click)=\"Redirect(field, item)\"\r\n style=\"white-space: var(--ion-table-row-wrap);\"\r\n >\r\n @if (field.index == 'ativo') {\r\n <div class=\"w-full h-full flex items-center justify-start\" [routerLink]=\"null\">\r\n <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"loading\" (ionChange)=\"Ativar(item.id)\" ></ion-toggle>\r\n </div>\r\n } @else {\r\n @switch (field.type) {\r\n @case (\"Bool\") {\r\n @if (field.configuration.type == \"toggle\") {\r\n <div class=\"-full h-full flex items-center justify-start\">\r\n <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-toggle>\r\n </div>\r\n }\r\n @else {\r\n <div class=\"-full h-full flex items-center justify-start\">\r\n <ion-checkbox [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-checkbox>\r\n </div>\r\n }\r\n }\r\n @case (\"File\") {\r\n <download-button [(ngModel)]=\"item[field.index]\" [configuration]=\"field.configuration\"></download-button>\r\n }\r\n @case (\"Select\") {\r\n {{GetSelectLabel(item, field)}}\r\n }\r\n @default {\r\n {{GetField(item, field)}} \r\n }\r\n }\r\n }\r\n </td>\r\n }\r\n }\r\n </tr>\r\n\r\n <ng-content select=\"[slot=item-end]\"></ng-content>\r\n </tbody>\r\n </table>\r\n </div>\r\n @if(!noPagination){\r\n <div class=\"shrink-0 mt-auto w-full\">\r\n <default-pagination\r\n [page]=\"page\"\r\n (pageChange)=\"EmitPage($event)\"\r\n [total]=\"total\"\r\n [limit]=\"limit\"\r\n [length]=\"items.length\"\r\n [loading]=\"loading\"\r\n ></default-pagination>\r\n </div>\r\n }\r\n</section> -->\r\n<div class=\"size-full rounded-2xl flex flex-col overflow-hidden relative\">\r\n <loading [type]=\"3\" [loading]=\"loading\"></loading>\r\n <content-block text=\"Sem Dados\" [value]=\"!(items.length != 0 || loading)\"></content-block>\r\n\r\n <div class=\"size-full shrink relative overflow-y-auto\">\r\n <table>\r\n <thead>\r\n <tr>\r\n <th scope=\"col\" class=\"px-3 !h-10\" *ngIf=\"acoesTemplate\"> A\u00E7\u00F5es </th>\r\n @for (field of lstTableFields; let i = $index; track i) {\r\n @if (!field.hidden) {\r\n <th scope=\"col\" class=\"p-2 px-3\" id=\"th-filter-select\">\r\n <div class=\"flex items-center justify-start h-full\" style=\"white-space: var(--ion-table-filter-wrap);\"> \r\n @if(!noFilters){\r\n <th-filter class=\"!text-base\" style=\"text-transform: none !important\" *ngIf=\"(field.type != InputTypeFile) && !(field.filter && field.disabledChange()) && !noFilters\"\r\n [field]=\"field\"\r\n (change)=\"ChangeFilter()\"\r\n ></th-filter>\r\n }\r\n <span>{{field.header}}</span>\r\n\r\n <a *ngIf=\"!(!(field.type != InputTypeFile) && !(field.filter && field.disabledChange())) && !noFilters\" class=\"order-switch h-5 flex items-center justify-center px-1 ml-2 shrink-0 cursor-pointer rounded-2xl\" (click)=\"SwitchOrder(field)\" [ngClass]=\"{ 'ordering-asc' : orderByProperty == field.index && ascending, 'ordering-desc' : orderByProperty == field.index && !ascending}\">\r\n <ion-icon id=\"up\" name=\"arrow-up\" class=\"-mt-1\"></ion-icon>\r\n <ion-icon id=\"down\" name=\"arrow-down\" class=\"-ml-1 -mb-1\"></ion-icon>\r\n </a>\r\n </div>\r\n </th>\r\n }\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr [hidden]=\"loading\" *ngFor=\"let item of items\">\r\n @if(acoesTemplate){\r\n <td class=\"whitespace-nowrap py-1 px-3\" [style]=\"GetTdStyle('Acoes', item)\" >\r\n <ng-container *ngTemplateOutlet=\"acoesTemplate; context: { $implicit: item }\"></ng-container>\r\n </td>\r\n }\r\n\r\n @for (field of lstTableFields; track $index) {\r\n @if (!field.hidden) {\r\n <td class=\"px-3 py-2\" \r\n [ngClass]=\"GetTdClasses(field, item)\" \r\n [style]=\"GetTdStyle(field, item)\" \r\n (click)=\"Redirect(field, item)\"\r\n style=\"white-space: var(--ion-table-row-wrap);\"\r\n >\r\n @if (field.index == 'ativo') {\r\n <div class=\"w-full h-full flex items-center justify-start\" [routerLink]=\"null\">\r\n <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"loading\" (ionChange)=\"Ativar(item.id)\" ></ion-toggle>\r\n </div>\r\n } @else {\r\n @switch (field.type) {\r\n @case (\"Bool\") {\r\n @if (field.configuration.type == \"toggle\") {\r\n <div class=\"-full h-full flex items-center justify-start\">\r\n <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-toggle>\r\n </div>\r\n }\r\n @else {\r\n <div class=\"-full h-full flex items-center justify-start\">\r\n <ion-checkbox [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-checkbox>\r\n </div>\r\n }\r\n }\r\n @case (\"File\") {\r\n <download-button [(ngModel)]=\"item[field.index]\" [configuration]=\"field.configuration\"></download-button>\r\n }\r\n @case (\"Select\") {\r\n {{GetSelectLabel(item, field)}}\r\n }\r\n @default {\r\n {{GetField(item, field)}} \r\n }\r\n }\r\n }\r\n </td>\r\n }\r\n }\r\n </tr>\r\n\r\n <ng-content select=\"[slot=item-end]\"></ng-content>\r\n </tbody>\r\n </table>\r\n </div>\r\n @if(!noPagination){\r\n <div class=\"shrink-0 z-[100]\">\r\n <default-pagination\r\n [page]=\"page\"\r\n (pageChange)=\"EmitPage($event)\"\r\n [total]=\"total\"\r\n [limit]=\"limit\"\r\n [length]=\"items.length\"\r\n [loading]=\"loading\"\r\n ></default-pagination>\r\n </div>\r\n }\r\n</div>", styles: ["#th-filter-select:hover .order-switch{background-color:var(--ion-color-step-200)}#th-filter-select:hover .order-switch #up,#th-filter-select:hover .order-switch #down{opacity:1!important;color:var(--ion-color-step-700)!important}#th-filter-select .order-switch{transition:background-color .3s}#th-filter-select .order-switch #up,#th-filter-select .order-switch #down{opacity:0;transition:all .3s}#th-filter-select .order-switch.ordering-asc #up{color:var(--ion-color-primary)!important;opacity:1}#th-filter-select .order-switch.ordering-asc #down,#th-filter-select .order-switch.ordering-desc #up{color:var(--ion-color-step-800)!important;opacity:1}#th-filter-select .order-switch.ordering-desc #down{color:var(--ion-color-primary)!important;opacity:1}\n"] }]
166
167
  }], ctorParameters: () => [{ type: i1.StorageService }, { type: i2.ActivatedRoute }, { type: i2.Router }], propDecorators: { defaultService: [{
167
168
  type: Input,
168
169
  args: ['service']
@@ -214,4 +215,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
214
215
  }], itemPath: [{
215
216
  type: Input
216
217
  }] } });
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZGVmYXVsdC9kZWZhdWx0LXRhYmxlL2RlZmF1bHQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC10YWJsZS9kZWZhdWx0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRyxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBYyxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTFGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUd2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7OztBQUV4RCxrQ0FBa0M7QUFNbEMsTUFBTSxPQUFPLHFCQUFxQjtJQTBEaEMsWUFDUyxjQUErQixFQUM5QixjQUE4QixFQUM5QixNQUFzQjtRQUZ2QixtQkFBYyxHQUFkLGNBQWMsQ0FBaUI7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBaER0QixnQkFBVyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBSS9ELGVBQVUsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUk5RCwwQkFBcUIsR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFNdkYsb0JBQWUsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMvRSwyQkFBMkI7UUFFM0IsNENBQTRDO1FBQzNCLFdBQU0sR0FBaUIsRUFBRSxDQUFDO1FBQ2pDLGlCQUFZLEdBQStCLElBQUksWUFBWSxFQUFnQixDQUFDO1FBRXRGLHVFQUF1RTtRQUNyRCxrQkFBYSxHQUF5QixJQUFJLFlBQW9CLENBQUM7UUFDOUQsbUJBQWMsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUdqRixvQ0FBb0M7UUFDM0IsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUUzQixxQ0FBcUM7UUFDNUIsbUJBQWMsR0FBaUIsRUFBRSxDQUFDO1FBRTNDLGdEQUFnRDtRQUN2QyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRXBDLGdHQUFnRztRQUN2RixnQkFBVyxHQUFtRCxJQUFJLENBQUM7UUFDNUUsOEZBQThGO1FBQ3JGLGdCQUFXLEdBQW1ELElBQUksQ0FBQztRQUM1RSxxQ0FBcUM7UUFDNUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDdkMsMENBQTBDO1FBQ2pDLGFBQVEsR0FBa0IsVUFBVSxDQUFBO1FBQzdDLGtCQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQTtJQU0xQixDQUFDO0lBRUwsUUFBUSxDQUFDLEtBQWlCLEVBQUUsSUFBUztRQUNuQyxJQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksT0FBTyxFQUFDLENBQUM7WUFDekIsT0FBTztRQUNULENBQUM7YUFDRCxJQUFHLEtBQUssQ0FBQyxJQUFJLElBQUssTUFBTSxFQUFDLENBQUM7WUFDeEIsT0FBTztRQUNULENBQUM7YUFBSSxDQUFDO1lBQ0osSUFBRyxJQUFJLENBQUMsUUFBUSxFQUFDLENBQUM7Z0JBQ2hCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUE7WUFDMUUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDO1FBQzNELENBQUM7UUFDRCxJQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQyxDQUFDO1lBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFBO1FBQUMsQ0FBQztRQUVuRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLFlBQVksd0JBQXdCLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzFJLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUI7UUFDM0IsSUFBRyxJQUFJLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDeEIsQ0FBQzthQUNJLElBQUcsSUFBSSxDQUFDLFNBQVMsRUFBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUM7YUFDRyxDQUFDO1lBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBQ3JELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUNuQixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFTLEVBQUUsS0FBa0I7UUFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUcsQ0FBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDO1lBQ2pELE1BQU0sTUFBTSxHQUErQixLQUFLLENBQUMsYUFBMkMsQ0FBQTtZQUM1RixPQUFPLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUM5SCxDQUFDO2FBQ0QsSUFBRyxJQUFJLElBQUksVUFBVSxFQUFDLENBQUM7WUFDckIsSUFBRyxDQUFDLEtBQUssRUFBQyxDQUFDO2dCQUFDLE9BQU8sR0FBRyxDQUFDO1lBQUMsQ0FBQztZQUN6QixPQUFPLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQ0QsSUFBRyxJQUFJLElBQUksTUFBTSxFQUFDLENBQUM7WUFDakIsSUFBRyxDQUFDLEtBQUssRUFBQyxDQUFDO2dCQUFDLE9BQU8sR0FBRyxDQUFDO1lBQUMsQ0FBQztZQUN6QixPQUFPLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVMsRUFBRSxNQUFrQjtRQUMxQyxNQUFNLGFBQWEsR0FBNkIsTUFBTSxDQUFDLGFBQWEsQ0FBQztRQUNyRSxJQUFHLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBQyxDQUFDO1lBQzFCLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNwRSxDQUFDO2FBQUksQ0FBQztZQUNKLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzNDLElBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDLENBQUM7Z0JBQzlCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RFLENBQUM7aUJBQUksQ0FBQztnQkFDSixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFHO1FBQ1gsT0FBTyxPQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDcEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFFO1FBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUk7UUFDdEIsSUFBSSxPQUFPLEdBQVksRUFBRSxDQUFDO1FBQzFCLElBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQztZQUNwRCxPQUFPLElBQUksWUFBWSxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFHLElBQUksQ0FBQyxXQUFXLEVBQUMsQ0FBQztZQUNuQixPQUFPLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBQ0QsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJO1FBQ3BCLElBQUcsSUFBSSxDQUFDLFdBQVcsRUFBQyxDQUFDO1lBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzsrR0E3S1UscUJBQXFCO21HQUFyQixxQkFBcUIsK3JCQ25CbEMsazFNQXlHQTs7NEZEdEZhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlO3FJQU9QLGNBQWM7c0JBQS9CLEtBQUs7dUJBQUMsU0FBUztnQkFFUCxhQUFhO3NCQUFyQixLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFHRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFHRSxlQUFlO3NCQUF2QixLQUFLO2dCQUNJLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFLRSxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU07Z0JBSVUsTUFBTTtzQkFBdEIsS0FBSzt1QkFBQyxRQUFRO2dCQUNMLFlBQVk7c0JBQXJCLE1BQU07Z0JBR1csYUFBYTtzQkFBOUIsTUFBTTt1QkFBQyxRQUFRO2dCQUNHLGNBQWM7c0JBQWhDLE1BQU07dUJBQUMsU0FBUztnQkFDUixPQUFPO3NCQUFmLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGZvcm1hdE51bWJlciAgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgQ29tcGFyaXNvbiwgQ29tcGlsZUxzdFRhYmxlRmllbGQgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vY29tcGFyaXNvbic7XHJcbmltcG9ydCB7IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2lucHV0cy9pbnB1dC1kZWNpbWFsL2lucHV0LWRlY2ltYWwuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LXNlbGVjdC9pbnB1dC5zZWxlY3QuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvd2ViL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvd2ViL2h0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IFRhYmxlRmllbGQgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2lucHV0cy90YWJsZS1maWVsZCc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uL2lucHV0cy9pbnB1dC10eXBlJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcclxuXHJcbi8qKiBDb21wb25lbnRlIGRlIHRhYmVsYSBwYWRyw6NvICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGVmYXVsdC10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RlZmF1bHQtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RlZmF1bHQtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERlZmF1bHRUYWJsZUNvbXBvbmVudDxUIGV4dGVuZHMgSHR0cFNlcnZpY2U+IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBcclxuICAvKiogU2VydmljZSBhIHNlciB1dGlsaXphZG8gbmEgbGlzdGFnZW0gKi9cclxuICBASW5wdXQoJ3NlcnZpY2UnKSBkZWZhdWx0U2VydmljZTogVDtcclxuLyoqIFRlbXBsYXRlIGRlIGHDp8O1ZXMsIGRldmUgc2VyIHVtIGVsZW1lbnRvIGBgYDxuZy10ZW1wbGF0ZT5gYGAgKi9cclxuICBASW5wdXQoKSBhY29lc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvLyNyZWdpb24gWyBQYWdpbmF0aW9uIF1cclxuICAvKiogVmFsb3IgdG90YWwgZGUgZGFkb3MgKi9cclxuICBASW5wdXQoKSB0b3RhbDogbnVtYmVyO1xyXG5cclxuICAvKiogTsO6bWVybyBkZSBww6FnaW5hcyBtw6F4aW1vICh1c2FuZG8gdHdvIHdheSBkYXRhIGJpbmRpbmcpICovXHJcbiAgQElucHV0KCkgbGltaXQ6IG51bWJlcjtcclxuICBAT3V0cHV0KCkgbGltaXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgXHJcbiAgLyoqIFZhbG9yIGRhIHBhZ2luYSwgc2V0YWRvID0gMSBxdWFuZG8gdHJvY2Etc2UgbyB2YWxvciBkZSBsaW1pdGUgZGUgcGFnaW5hcyAodXNhbmRvIHR3byB3YXkgZGF0YSBiaW5kaW5nKSAqL1xyXG4gIEBJbnB1dCgpIHBhZ2U6IG51bWJlcjtcclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBcclxuICAvKiogUHJvcHJpZWRhZGUgZGUgb3JkZW5hw6fDo28gKHVzYW5kbyB0d28gd2F5IGRhdGEgYmluZGluZykgKi9cclxuICBASW5wdXQoKSBvcmRlckJ5UHJvcGVydHk6IHN0cmluZyB8IG51bGw7XHJcbiAgQE91dHB1dCgpIG9yZGVyQnlQcm9wZXJ0eUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xyXG4gIFxyXG4gIC8qKiBQcm9wcmllZGFkZSBkZSBvcmRlbmHDp8Ojb1xyXG4gICAqIFNlID0gdHJ1ZSAgT3JkZW5hcsOhIGRlIG1lbm9yIGFvIG1haW9yIFxyXG4gICAqIFNlID0gZmFsc2UgT3JkZW5hcsOhIGRlIG1haW9yIGFvIG1lbm9yICh1c2FuZG8gdHdvIHdheSBkYXRhIGJpbmRpbmcpICovXHJcbiAgQElucHV0KCkgYXNjZW5kaW5nOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSBhc2NlbmRpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAvLyNlbmRyZWdpb24gWyBQYWdpbmF0aW9uIF1cclxuXHJcbiAgLyoqIEZpbHRyb3MgKHVzYW5kbyB0d28gd2F5IGRhdGEgYmluZGluZykgKi8gIFxyXG4gIEBJbnB1dCgnZmlsdGVyJykgZmlsdGVyOiBDb21wYXJpc29uW10gPSBbXTtcclxuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q29tcGFyaXNvbltdPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tcGFyaXNvbltdPigpO1xyXG4gIFxyXG4gIC8qKiBFdmVudG8gZW1pdGlkbyBxdWFuZG8gdW0gZG9zIGRhZG9zIMOpIGF0aXZhZG8uIEVtaXRlIG8gaWQgZG8gZGFkbyAqLyAgXHJcbiAgQE91dHB1dCgnYXRpdmFyJykgYXRpdmFyRW1pdHRlcjogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj47XHJcbiAgQE91dHB1dCgncmVmcmVzaCcpIHJlZnJlc2hFbWl0dGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcclxuXHJcbiAgLyoqIExpc3RhIGRlIGRhZG9zIGEgc2VyIGV4aWJpZG9zICovXHJcbiAgQElucHV0KCkgaXRlbXM6IGFueVtdID0gW107XHJcbiAgXHJcbiAgLyoqIExpc3RhIGRlIGNhbXBvcyBhIHNlciBleGliaWRvcyAqL1xyXG4gIEBJbnB1dCgpIGxzdFRhYmxlRmllbGRzOiBUYWJsZUZpZWxkW10gPSBbXTtcclxuXHJcbiAgLyoqIFJlbW92ZSBvcyBmaWx0cm9zIG5vIGNhYmXDp2FsaG8gZGEgdGFiZWxhICAqL1xyXG4gIEBJbnB1dCgpIG5vRmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKiBBcGxpY2EgY2xhc3NlcyBkZSBDU1MgbmEgY29sdW5hIGRlIGFjaXJkbyBjb20gbyByZXRvcm5vIGRhIGZ1bsOnw6NvIHBhc3NhZGEgY29tbyBwYXJhbWV0cm8gICovXHJcbiAgQElucHV0KCkgY29sdW1uQ2xhc3M6ICgoaW5kZXg6c3RyaW5nLCBvYmplY3Q6IGFueSkgPT4gc3RyaW5nKSB8IG51bGwgPSBudWxsO1xyXG4gIC8qKiBBcGxpY2Egc3R5bGUgZGUgQ1NTIG5hIGNvbHVuYSBkZSBhY2lyZG8gY29tIG8gcmV0b3JubyBkYSBmdW7Dp8OjbyBwYXNzYWRhIGNvbW8gcGFyYW1ldHJvICAqL1xyXG4gIEBJbnB1dCgpIGNvbHVtblN0eWxlOiAoKGluZGV4OnN0cmluZywgb2JqZWN0OiBhbnkpID0+IHN0cmluZykgfCBudWxsID0gbnVsbDtcclxuICAvKiogUmVtb3ZlIGEgcGFnaW5hw6fDo28gZGEgbGlzdGFnZW0gKi9cclxuICBASW5wdXQoKSBub1BhZ2luYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiogQ2FtaW5obyBkZSByZWRpcmVjaW9uYW1lbnRvIGRvIGl0ZW0gKi9cclxuICBASW5wdXQoKSBpdGVtUGF0aDogc3RyaW5nIHwgbnVsbCA9IFwidmlldy86aWRcIlxyXG4gIElucHV0VHlwZUZpbGUgPSBJbnB1dFR5cGUuRmlsZVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzdG9yYWdlU2VydmljZSA6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHJvdXRlciAgICAgICAgOiBSb3V0ZXIsXHJcbiAgKSB7IH1cclxuXHJcbiAgUmVkaXJlY3QoZmllbGQ6IFRhYmxlRmllbGQsIGl0ZW06IGFueSk6IHZvaWR7XHJcbiAgICBpZihmaWVsZC5pbmRleCA9PSAnYXRpdm8nKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfWVsc2VcclxuICAgIGlmKGZpZWxkLnR5cGUgID09ICdGaWxlJyl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1lbHNle1xyXG4gICAgICBpZih0aGlzLml0ZW1QYXRoKXtcclxuICAgICAgICBjb25zdCBpZCA9IGl0ZW0uaWQ7IFxyXG4gICAgICAgIGNvbnN0IHBhdGggPSB0aGlzLml0ZW1QYXRoLnJlcGxhY2UoXCI6aWRcIiwgaWQudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AuLyR7cGF0aH1gXSwgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYodGhpcy5kZWZhdWx0U2VydmljZSAmJiB0aGlzLmxzdFRhYmxlRmllbGRzLmxlbmd0aCA9PSAwKXtcclxuICAgICAgdGhpcy5sc3RUYWJsZUZpZWxkcyA9IHRoaXMuZGVmYXVsdFNlcnZpY2UubHN0VGFibGVGaWVsZHM7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmxzdFRhYmxlRmllbGRzLmxlbmd0aCA9PSAwKXsgY29uc29sZS53YXJuKFwiWyBXYXJuaW5nISBdIFsgVGFibGUgY29uZmlndXJhdGlvbiBpcyBlbXB0eV1cIikgfVxyXG5cclxuICAgIHRoaXMubHN0VGFibGVGaWVsZHMuZmlsdGVyKHRmID0+IHRmLmNvbmZpZ3VyYXRpb24gaW5zdGFuY2VvZiBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24pLmZvckVhY2godGYgPT4gdGYuY29uZmlndXJhdGlvbi5sb2FkZXIuUmVmcmVzaCgpKTtcclxuICB9XHJcblxyXG4gIFN3aXRjaE9yZGVyKGZpZWxkOiBUYWJsZUZpZWxkKTogdm9pZHtcclxuICAgIGlmKHRoaXMub3JkZXJCeVByb3BlcnR5ICE9IGZpZWxkLmluZGV4KXtcclxuICAgICAgdGhpcy5vcmRlckJ5UHJvcGVydHkgPSBmaWVsZC5pbmRleDtcclxuICAgICAgdGhpcy5hc2NlbmRpbmcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLmFzY2VuZGluZyl7XHJcbiAgICAgIHRoaXMuYXNjZW5kaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNleyB0aGlzLm9yZGVyQnlQcm9wZXJ0eSA9IG51bGw7IH1cclxuXHJcbiAgICB0aGlzLm9yZGVyQnlQcm9wZXJ0eUNoYW5nZS5lbWl0KHRoaXMub3JkZXJCeVByb3BlcnR5KVxyXG4gICAgdGhpcy5hc2NlbmRpbmdDaGFuZ2UuZW1pdCh0aGlzLmFzY2VuZGluZyk7XHJcblxyXG4gICAgdGhpcy5FbWl0Q2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBFbWl0UGFnZSh2YWx1ZTogbnVtYmVyKTogdm9pZHtcclxuICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHZhbHVlKTtcclxuICAgIHRoaXMuRW1pdENoYW5nZSgpXHJcbiAgfVxyXG5cclxuICBFbWl0Q2hhbmdlKCk6IHZvaWR7XHJcbiAgICB0aGlzLnJlZnJlc2hFbWl0dGVyLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIEdldEZpZWxkKGl0ZW06IGFueSwgZmllbGQgOiBUYWJsZUZpZWxkKTogYW55e1xyXG4gICAgY29uc3QgdmFsdWUgPSBpdGVtW2ZpZWxkLmluZGV4XTtcclxuICAgIGNvbnN0IHR5cGUgPSBmaWVsZC50eXBlO1xyXG4gICAgaWYoWydOdW1iZXInLCdEZWNpbWFsJywnQ3VycmVuY3knXS5pbmNsdWRlcyh0eXBlKSl7XHJcbiAgICAgIGNvbnN0IGNvbmZpZzogSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbiA9IChmaWVsZC5jb25maWd1cmF0aW9uIGFzIElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24pXHJcbiAgICAgIHJldHVybiBjb25maWcucHJlZml4ICsgJyAnICsgZm9ybWF0TnVtYmVyKHZhbHVlLCBcInB0LUJSXCIsIGAxLiR7Y29uZmlnLnByZWNpc2lvbn0tJHtjb25maWcucHJlY2lzaW9ufWApICsgJyAnICsgY29uZmlnLnN1Zml4O1xyXG4gICAgfWVsc2VcclxuICAgIGlmKHR5cGUgPT0gJ0RhdGVUaW1lJyl7XHJcbiAgICAgIGlmKCF2YWx1ZSl7IHJldHVybiBcIi1cIjsgfVxyXG4gICAgICByZXR1cm4gVXRpbHMuRGF0ZUlTT1RvRERNTVlZWVlISE1NKHZhbHVlKTtcclxuICAgIH1lbHNlXHJcbiAgICBpZih0eXBlID09ICdEYXRlJyl7XHJcbiAgICAgIGlmKCF2YWx1ZSl7IHJldHVybiBcIi1cIjsgfVxyXG4gICAgICByZXR1cm4gVXRpbHMuRGF0ZUlTT1RvRERNTVlZWVkodmFsdWUpO1xyXG4gICAgfSBcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEdldFNlbGVjdExhYmVsKGl0ZW06IGFueSwgdEZpZWxkOiBUYWJsZUZpZWxkKTogc3RyaW5ne1xyXG4gICAgY29uc3QgY29uZmlndXJhdGlvbjogSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uID0gdEZpZWxkLmNvbmZpZ3VyYXRpb247XHJcbiAgICBpZighY29uZmlndXJhdGlvbi5tdWx0aXBsZSl7XHJcbiAgICAgIHJldHVybiBjb25maWd1cmF0aW9uLmxvYWRlci5HZXRMYWJlbCh0aGlzLkdldEZpZWxkKGl0ZW0sIHRGaWVsZCkpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuR2V0RmllbGQoaXRlbSwgdEZpZWxkKTtcclxuICAgICAgaWYodmFsdWVzICYmIHZhbHVlcy5sZW5ndGggPiAwKXtcclxuICAgICAgICByZXR1cm4gdmFsdWVzLm1hcCh2ID0+IGNvbmZpZ3VyYXRpb24ubG9hZGVyLkdldExhYmVsKHYpKS5qb2luKFwiLCBcIik7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBHZXRUeXBlT2YodmFsKTogc3RyaW5ne1xyXG4gICAgcmV0dXJuIHR5cGVvZih2YWwpXHJcbiAgfVxyXG5cclxuICBBdGl2YXIoaWQpOiB2b2lke1xyXG4gICAgdGhpcy5hdGl2YXJFbWl0dGVyLmVtaXQoaWQpO1xyXG4gIH1cclxuXHJcbiAgQ2hhbmdlRmlsdGVyKCk6IHZvaWR7XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KENvbXBpbGVMc3RUYWJsZUZpZWxkKHRoaXMubHN0VGFibGVGaWVsZHMpKTtcclxuICAgIHRoaXMucmVmcmVzaEVtaXR0ZXIuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgR2V0VGRDbGFzc2VzKGZpZWxkLCBpdGVtKTogc3RyaW5ne1xyXG4gICAgdmFyIGNsYXNzZXMgOiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgaWYoWydEYXRlVGltZScsICdUaW1lJywgJ0RhdGUnXS5pbmNsdWRlcyhmaWVsZC50eXBlKSl7XHJcbiAgICAgIGNsYXNzZXMgKz0gJ2ZvbnQtbW9ubyAnO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5jb2x1bW5DbGFzcyl7XHJcbiAgICAgIGNsYXNzZXMgKz0gdGhpcy5jb2x1bW5DbGFzcyhmaWVsZC5pbmRleCwgaXRlbSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2xhc3NlcztcclxuICB9XHJcbiAgR2V0VGRTdHlsZShmaWVsZCwgaXRlbSk6IHN0cmluZ3tcclxuICAgIGlmKHRoaXMuY29sdW1uU3R5bGUpe1xyXG4gICAgICByZXR1cm4gdGhpcy5jb2x1bW5TdHlsZShmaWVsZCwgaXRlbSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcbn0iLCI8c2VjdGlvbiBjbGFzcz1cInctZnVsbCBoLWZ1bGwgcm91bmRlZC0yeGwgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy15LWhpZGRlbiByZWxhdGl2ZVwiIFtuZ0NsYXNzXT1cInsgJ2xvYWRpbmcnIDogbG9hZGluZyB9XCI+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJ1bmlxdWUtY29udGVpbmVyIGRlZmF1bHQtdHJhbnNpdGlvblwiIFtuZ0NsYXNzXT1cInsnIS16LTUwICEtdHJhbnNsYXRlLXktMTIgIW9wYWNpdHktMCc6ICFsb2FkaW5nIH1cIj5cclxuICAgICAgICA8bG9hZGluZyBbdHlwZV09XCIyXCI+PC9sb2FkaW5nPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidW5pcXVlLWNvbnRlaW5lciBkZWZhdWx0LXRyYW5zaXRpb25cIiBbbmdDbGFzc109XCJ7JyEtei01MCAhLXRyYW5zbGF0ZS15LTEyICFvcGFjaXR5LTAnOiBpdGVtcy5sZW5ndGggIT0gMCB8fCBsb2FkaW5nIH1cIj5cclxuICAgICAgICA8Yj48aW9uLWljb24gY2xhc3M9XCJhbGlnbi1zdWJcIiBuYW1lPVwicmVtb3ZlLWNpcmNsZVwiPjwvaW9uLWljb24+IFNlbSBkYWRvczwvYj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgaWQ9XCJ3cmFwcGVyXCIgY2xhc3M9XCJyZWxhdGl2ZSBvdmVyZmxvdy15LWF1dG8gdy1mdWxsIGdyb3ctMCBtYi1hdXRvIHBiLTJcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ6LTIwXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cInB4LTMgIWgtMTBcIiAqbmdJZj1cImFjb2VzVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QcOnw7Vlczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGZpZWxkIG9mIGxzdFRhYmxlRmllbGRzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFmaWVsZC5oaWRkZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicC0yIHB4LTNcIiBpZD1cInRoLWZpbHRlci1zZWxlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydCBoLWZ1bGxcIiBzdHlsZT1cIndoaXRlLXNwYWNlOiB2YXIoLS1pb24tdGFibGUtZmlsdGVyLXdyYXApO1wiPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKCFub0ZpbHRlcnMpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoLWZpbHRlciAqbmdJZj1cIihmaWVsZC50eXBlICE9IElucHV0VHlwZUZpbGUpICYmICEoZmllbGQuZmlsdGVyICYmIGZpZWxkLmRpc2FibGVkQ2hhbmdlKCkpICYmICFub0ZpbHRlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiQ2hhbmdlRmlsdGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdGgtZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ZmllbGQuaGVhZGVyfX08L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIiEoIShmaWVsZC50eXBlICE9IElucHV0VHlwZUZpbGUpICYmICEoZmllbGQuZmlsdGVyICYmIGZpZWxkLmRpc2FibGVkQ2hhbmdlKCkpKSAmJiAhbm9GaWx0ZXJzXCIgY2xhc3M9XCJvcmRlci1zd2l0Y2ggaC01IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB4LTEgbWwtMiBzaHJpbmstMCBjdXJzb3ItcG9pbnRlciByb3VuZGVkLTJ4bFwiIChjbGljayk9XCJTd2l0Y2hPcmRlcihmaWVsZClcIiBbbmdDbGFzc109XCJ7ICdvcmRlcmluZy1hc2MnIDogb3JkZXJCeVByb3BlcnR5ID09IGZpZWxkLmluZGV4ICYmIGFzY2VuZGluZywgJ29yZGVyaW5nLWRlc2MnIDogb3JkZXJCeVByb3BlcnR5ID09IGZpZWxkLmluZGV4ICYmICFhc2NlbmRpbmd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gaWQ9XCJ1cFwiICAgbmFtZT1cImFycm93LXVwXCIgICBjbGFzcz1cIi1tdC0xXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBpZD1cImRvd25cIiBuYW1lPVwiYXJyb3ctZG93blwiIGNsYXNzPVwiLW1sLTEgLW1iLTFcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgPHRyIFtoaWRkZW5dPVwibG9hZGluZ1wiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmKGFjb2VzVGVtcGxhdGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcCBweS0xIHB4LTNcIiBbc3R5bGVdPVwiR2V0VGRTdHlsZSgnQWNvZXMnLCBpdGVtKVwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhY29lc1RlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAZm9yIChmaWVsZCBvZiBsc3RUYWJsZUZpZWxkczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWZpZWxkLmhpZGRlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicHgtMyBweS0yXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiR2V0VGRDbGFzc2VzKGZpZWxkLCBpdGVtKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJHZXRUZFN0eWxlKGZpZWxkLCBpdGVtKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJSZWRpcmVjdChmaWVsZCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IHZhcigtLWlvbi10YWJsZS1yb3ctd3JhcCk7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGZpZWxkLmluZGV4ID09ICdhdGl2bycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydFwiIFtyb3V0ZXJMaW5rXT1cIm51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdG9nZ2xlIFtjaGVja2VkXT1cIml0ZW1bZmllbGQuaW5kZXhdXCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIiAoaW9uQ2hhbmdlKT1cIkF0aXZhcihpdGVtLmlkKVwiID48L2lvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc3dpdGNoIChmaWVsZC50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoXCJCb29sXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGZpZWxkLmNvbmZpZ3VyYXRpb24udHlwZSA9PSBcInRvZ2dsZVwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCItZnVsbCBoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10b2dnbGUgW2NoZWNrZWRdPVwiaXRlbVtmaWVsZC5pbmRleF1cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvaW9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIi1mdWxsIGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNoZWNrYm94IFtjaGVja2VkXT1cIml0ZW1bZmllbGQuaW5kZXhdXCIgW2Rpc2FibGVkXT1cInRydWVcIj48L2lvbi1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKFwiRmlsZVwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRvd25sb2FkLWJ1dHRvbiBbKG5nTW9kZWwpXT1cIml0ZW1bZmllbGQuaW5kZXhdXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvZG93bmxvYWQtYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKFwiU2VsZWN0XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e0dldFNlbGVjdExhYmVsKGl0ZW0sIGZpZWxkKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tHZXRGaWVsZChpdGVtLCBmaWVsZCl9fSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PWl0ZW0tZW5kXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgICBAaWYoIW5vUGFnaW5hdGlvbil7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNocmluay0wIG10LWF1dG8gdy1mdWxsXCI+XHJcbiAgICAgICAgICAgIDxkZWZhdWx0LXBhZ2luYXRpb25cclxuICAgICAgICAgICAgICAgIFtwYWdlXT1cInBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwiRW1pdFBhZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbdG90YWxdPVwidG90YWxcIlxyXG4gICAgICAgICAgICAgICAgW2xpbWl0XT1cImxpbWl0XCJcclxuICAgICAgICAgICAgICAgIFtsZW5ndGhdPVwiaXRlbXMubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICA+PC9kZWZhdWx0LXBhZ2luYXRpb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbjwvc2VjdGlvbj5cclxuIl19
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZGVmYXVsdC9kZWZhdWx0LXRhYmxlL2RlZmF1bHQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC10YWJsZS9kZWZhdWx0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRyxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBYyxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTFGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUd2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFFeEQsa0NBQWtDO0FBTWxDLE1BQU0sT0FBTyxxQkFBcUI7SUEwRGhDLFlBQ1MsY0FBK0IsRUFDOUIsY0FBOEIsRUFDOUIsTUFBc0I7UUFGdkIsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQWhEdEIsZ0JBQVcsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUkvRCxlQUFVLEdBQXlC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QUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU07Z0JBR0UsZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBS0UsU0FBUztzQkFBakIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUlVLE1BQU07c0JBQXRCLEtBQUs7dUJBQUMsUUFBUTtnQkFDTCxZQUFZO3NCQUFyQixNQUFNO2dCQUdXLGFBQWE7c0JBQTlCLE1BQU07dUJBQUMsUUFBUTtnQkFDRyxjQUFjO3NCQUFoQyxNQUFNO3VCQUFDLFNBQVM7Z0JBQ1IsT0FBTztzQkFBZixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBmb3JtYXROdW1iZXIgIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7IENvbXBhcmlzb24sIENvbXBpbGVMc3RUYWJsZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb21wYXJpc29uL2NvbXBhcmlzb24nO1xyXG5pbXBvcnQgeyBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9pbnB1dHMvaW5wdXQtZGVjaW1hbC9pbnB1dC1kZWNpbWFsLmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2lucHV0cy9pbnB1dC1zZWxlY3QvaW5wdXQuc2VsZWN0LmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9odHRwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUYWJsZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9pbnB1dHMvdGFibGUtZmllbGQnO1xyXG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9pbnB1dHMvaW5wdXQtdHlwZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XHJcblxyXG4vKiogQ29tcG9uZW50ZSBkZSB0YWJlbGEgcGFkcsOjbyAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RlZmF1bHQtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kZWZhdWx0LXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kZWZhdWx0LXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0VGFibGVDb21wb25lbnQ8VCBleHRlbmRzIEh0dHBTZXJ2aWNlPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgXHJcbiAgLyoqIFNlcnZpY2UgYSBzZXIgdXRpbGl6YWRvIG5hIGxpc3RhZ2VtICovXHJcbiAgQElucHV0KCdzZXJ2aWNlJykgZGVmYXVsdFNlcnZpY2U6IFQ7XHJcbi8qKiBUZW1wbGF0ZSBkZSBhw6fDtWVzLCBkZXZlIHNlciB1bSBlbGVtZW50byBgYGA8bmctdGVtcGxhdGU+YGBgICovXHJcbiAgQElucHV0KCkgYWNvZXNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLy8jcmVnaW9uIFsgUGFnaW5hdGlvbiBdXHJcbiAgLyoqIFZhbG9yIHRvdGFsIGRlIGRhZG9zICovXHJcbiAgQElucHV0KCkgdG90YWw6IG51bWJlcjtcclxuXHJcbiAgLyoqIE7Dum1lcm8gZGUgcMOhZ2luYXMgbcOheGltbyAodXNhbmRvIHR3byB3YXkgZGF0YSBiaW5kaW5nKSAqL1xyXG4gIEBJbnB1dCgpIGxpbWl0OiBudW1iZXI7XHJcbiAgQE91dHB1dCgpIGxpbWl0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIFxyXG4gIC8qKiBWYWxvciBkYSBwYWdpbmEsIHNldGFkbyA9IDEgcXVhbmRvIHRyb2NhLXNlIG8gdmFsb3IgZGUgbGltaXRlIGRlIHBhZ2luYXMgKHVzYW5kbyB0d28gd2F5IGRhdGEgYmluZGluZykgKi9cclxuICBASW5wdXQoKSBwYWdlOiBudW1iZXI7XHJcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgXHJcbiAgLyoqIFByb3ByaWVkYWRlIGRlIG9yZGVuYcOnw6NvICh1c2FuZG8gdHdvIHdheSBkYXRhIGJpbmRpbmcpICovXHJcbiAgQElucHV0KCkgb3JkZXJCeVByb3BlcnR5OiBzdHJpbmcgfCBudWxsO1xyXG4gIEBPdXRwdXQoKSBvcmRlckJ5UHJvcGVydHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTtcclxuICBcclxuICAvKiogUHJvcHJpZWRhZGUgZGUgb3JkZW5hw6fDo29cclxuICAgKiBTZSA9IHRydWUgIE9yZGVuYXLDoSBkZSBtZW5vciBhbyBtYWlvciBcclxuICAgKiBTZSA9IGZhbHNlIE9yZGVuYXLDoSBkZSBtYWlvciBhbyBtZW5vciAodXNhbmRvIHR3byB3YXkgZGF0YSBiaW5kaW5nKSAqL1xyXG4gIEBJbnB1dCgpIGFzY2VuZGluZzogYm9vbGVhbjtcclxuICBAT3V0cHV0KCkgYXNjZW5kaW5nQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgLy8jZW5kcmVnaW9uIFsgUGFnaW5hdGlvbiBdXHJcblxyXG4gIC8qKiBGaWx0cm9zICh1c2FuZG8gdHdvIHdheSBkYXRhIGJpbmRpbmcpICovICBcclxuICBASW5wdXQoJ2ZpbHRlcicpIGZpbHRlcjogQ29tcGFyaXNvbltdID0gW107XHJcbiAgQE91dHB1dCgpIGZpbHRlckNoYW5nZTogRXZlbnRFbWl0dGVyPENvbXBhcmlzb25bXT4gPSBuZXcgRXZlbnRFbWl0dGVyPENvbXBhcmlzb25bXT4oKTtcclxuICBcclxuICAvKiogRXZlbnRvIGVtaXRpZG8gcXVhbmRvIHVtIGRvcyBkYWRvcyDDqSBhdGl2YWRvLiBFbWl0ZSBvIGlkIGRvIGRhZG8gKi8gIFxyXG4gIEBPdXRwdXQoJ2F0aXZhcicpIGF0aXZhckVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+O1xyXG4gIEBPdXRwdXQoJ3JlZnJlc2gnKSByZWZyZXNoRW1pdHRlcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XHJcblxyXG4gIC8qKiBMaXN0YSBkZSBkYWRvcyBhIHNlciBleGliaWRvcyAqL1xyXG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIFxyXG4gIC8qKiBMaXN0YSBkZSBjYW1wb3MgYSBzZXIgZXhpYmlkb3MgKi9cclxuICBASW5wdXQoKSBsc3RUYWJsZUZpZWxkczogVGFibGVGaWVsZFtdID0gW107XHJcblxyXG4gIC8qKiBSZW1vdmUgb3MgZmlsdHJvcyBubyBjYWJlw6dhbGhvIGRhIHRhYmVsYSAgKi9cclxuICBASW5wdXQoKSBub0ZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKiogQXBsaWNhIGNsYXNzZXMgZGUgQ1NTIG5hIGNvbHVuYSBkZSBhY2lyZG8gY29tIG8gcmV0b3JubyBkYSBmdW7Dp8OjbyBwYXNzYWRhIGNvbW8gcGFyYW1ldHJvICAqL1xyXG4gIEBJbnB1dCgpIGNvbHVtbkNsYXNzOiAoKGluZGV4OnN0cmluZywgb2JqZWN0OiBhbnkpID0+IHN0cmluZykgfCBudWxsID0gbnVsbDtcclxuICAvKiogQXBsaWNhIHN0eWxlIGRlIENTUyBuYSBjb2x1bmEgZGUgYWNpcmRvIGNvbSBvIHJldG9ybm8gZGEgZnVuw6fDo28gcGFzc2FkYSBjb21vIHBhcmFtZXRybyAgKi9cclxuICBASW5wdXQoKSBjb2x1bW5TdHlsZTogKChpbmRleDpzdHJpbmcsIG9iamVjdDogYW55KSA9PiBzdHJpbmcpIHwgbnVsbCA9IG51bGw7XHJcbiAgLyoqIFJlbW92ZSBhIHBhZ2luYcOnw6NvIGRhIGxpc3RhZ2VtICovXHJcbiAgQElucHV0KCkgbm9QYWdpbmF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIENhbWluaG8gZGUgcmVkaXJlY2lvbmFtZW50byBkbyBpdGVtICovXHJcbiAgQElucHV0KCkgaXRlbVBhdGg6IHN0cmluZyB8IG51bGwgPSBcInZpZXcvOmlkXCJcclxuICBJbnB1dFR5cGVGaWxlID0gSW5wdXRUeXBlLkZpbGVcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgc3RvcmFnZVNlcnZpY2UgOiBTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXIgICAgICAgIDogUm91dGVyLFxyXG4gICkgeyB9XHJcblxyXG4gIFJlZGlyZWN0KGZpZWxkOiBUYWJsZUZpZWxkLCBpdGVtOiBhbnkpOiB2b2lke1xyXG4gICAgaWYoZmllbGQuaW5kZXggPT0gJ2F0aXZvJyl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1lbHNlXHJcbiAgICBpZihmaWVsZC50eXBlICA9PSAnRmlsZScpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9ZWxzZXtcclxuICAgICAgaWYodGhpcy5pdGVtUGF0aCl7XHJcbiAgICAgICAgY29uc3QgaWQgPSBpdGVtLmlkOyBcclxuICAgICAgICBjb25zdCBwYXRoID0gdGhpcy5pdGVtUGF0aC5yZXBsYWNlKFwiOmlkXCIsIGlkLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgLi8ke3BhdGh9YF0sIHsgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmKHRoaXMuZGVmYXVsdFNlcnZpY2UgJiYgdGhpcy5sc3RUYWJsZUZpZWxkcy5sZW5ndGggPT0gMCl7XHJcbiAgICAgIHRoaXMubHN0VGFibGVGaWVsZHMgPSB0aGlzLmRlZmF1bHRTZXJ2aWNlLmxzdFRhYmxlRmllbGRzO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5sc3RUYWJsZUZpZWxkcy5sZW5ndGggPT0gMCl7IGNvbnNvbGUud2FybihcIlsgV2FybmluZyEgXSBbIFRhYmxlIGNvbmZpZ3VyYXRpb24gaXMgZW1wdHldXCIpIH1cclxuXHJcbiAgICB0aGlzLmxzdFRhYmxlRmllbGRzLmZpbHRlcih0ZiA9PiB0Zi5jb25maWd1cmF0aW9uIGluc3RhbmNlb2YgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKS5mb3JFYWNoKHRmID0+IHRmLmNvbmZpZ3VyYXRpb24ubG9hZGVyLlJlZnJlc2goKSk7XHJcbiAgfVxyXG5cclxuICBTd2l0Y2hPcmRlcihmaWVsZDogVGFibGVGaWVsZCk6IHZvaWR7XHJcbiAgICBpZih0aGlzLm9yZGVyQnlQcm9wZXJ0eSAhPSBmaWVsZC5pbmRleCl7XHJcbiAgICAgIHRoaXMub3JkZXJCeVByb3BlcnR5ID0gZmllbGQuaW5kZXg7XHJcbiAgICAgIHRoaXMuYXNjZW5kaW5nID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5hc2NlbmRpbmcpe1xyXG4gICAgICB0aGlzLmFzY2VuZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZXsgdGhpcy5vcmRlckJ5UHJvcGVydHkgPSBudWxsOyB9XHJcblxyXG4gICAgdGhpcy5vcmRlckJ5UHJvcGVydHlDaGFuZ2UuZW1pdCh0aGlzLm9yZGVyQnlQcm9wZXJ0eSlcclxuICAgIHRoaXMuYXNjZW5kaW5nQ2hhbmdlLmVtaXQodGhpcy5hc2NlbmRpbmcpO1xyXG5cclxuICAgIHRoaXMuRW1pdENoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgRW1pdFBhZ2UodmFsdWU6IG51bWJlcik6IHZvaWR7XHJcbiAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICB0aGlzLkVtaXRDaGFuZ2UoKVxyXG4gIH1cclxuXHJcbiAgRW1pdENoYW5nZSgpOiB2b2lke1xyXG4gICAgdGhpcy5yZWZyZXNoRW1pdHRlci5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBHZXRGaWVsZChpdGVtOiBhbnksIGZpZWxkIDogVGFibGVGaWVsZCk6IGFueXtcclxuICAgIGNvbnN0IHZhbHVlID0gaXRlbVtmaWVsZC5pbmRleF07XHJcbiAgICBjb25zdCB0eXBlID0gZmllbGQudHlwZTtcclxuICAgIGlmKFsnTnVtYmVyJywnRGVjaW1hbCcsJ0N1cnJlbmN5J10uaW5jbHVkZXModHlwZSkpe1xyXG4gICAgICBjb25zdCBjb25maWc6IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24gPSAoZmllbGQuY29uZmlndXJhdGlvbiBhcyBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uKVxyXG4gICAgICByZXR1cm4gY29uZmlnLnByZWZpeCArICcgJyArIGZvcm1hdE51bWJlcih2YWx1ZSwgXCJwdC1CUlwiLCBgMS4ke2NvbmZpZy5wcmVjaXNpb259LSR7Y29uZmlnLnByZWNpc2lvbn1gKSArICcgJyArIGNvbmZpZy5zdWZpeDtcclxuICAgIH1lbHNlXHJcbiAgICBpZih0eXBlID09ICdEYXRlVGltZScpe1xyXG4gICAgICBpZighdmFsdWUpeyByZXR1cm4gXCItXCI7IH1cclxuICAgICAgcmV0dXJuIFV0aWxzLkRhdGVJU09Ub0RETU1ZWVlZSEhNTSh2YWx1ZSk7XHJcbiAgICB9ZWxzZVxyXG4gICAgaWYodHlwZSA9PSAnRGF0ZScpe1xyXG4gICAgICBpZighdmFsdWUpeyByZXR1cm4gXCItXCI7IH1cclxuICAgICAgcmV0dXJuIFV0aWxzLkRhdGVJU09Ub0RETU1ZWVlZKHZhbHVlKTtcclxuICAgIH0gXHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBHZXRTZWxlY3RMYWJlbChpdGVtOiBhbnksIHRGaWVsZDogVGFibGVGaWVsZCk6IHN0cmluZ3tcclxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbiA9IHRGaWVsZC5jb25maWd1cmF0aW9uO1xyXG4gICAgaWYoIWNvbmZpZ3VyYXRpb24ubXVsdGlwbGUpe1xyXG4gICAgICByZXR1cm4gY29uZmlndXJhdGlvbi5sb2FkZXIuR2V0TGFiZWwodGhpcy5HZXRGaWVsZChpdGVtLCB0RmllbGQpKTtcclxuICAgIH1lbHNle1xyXG4gICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLkdldEZpZWxkKGl0ZW0sIHRGaWVsZCk7XHJcbiAgICAgIGlmKHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5tYXAodiA9PiBjb25maWd1cmF0aW9uLmxvYWRlci5HZXRMYWJlbCh2KSkuam9pbihcIiwgXCIpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgR2V0VHlwZU9mKHZhbCk6IHN0cmluZ3tcclxuICAgIHJldHVybiB0eXBlb2YodmFsKVxyXG4gIH1cclxuXHJcbiAgQXRpdmFyKGlkKTogdm9pZHtcclxuICAgIHRoaXMuYXRpdmFyRW1pdHRlci5lbWl0KGlkKTtcclxuICB9XHJcblxyXG4gIENoYW5nZUZpbHRlcigpOiB2b2lke1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdChDb21waWxlTHN0VGFibGVGaWVsZCh0aGlzLmxzdFRhYmxlRmllbGRzKSk7XHJcbiAgICB0aGlzLnJlZnJlc2hFbWl0dGVyLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIEdldFRkQ2xhc3NlcyhmaWVsZCwgaXRlbSk6IHN0cmluZ3tcclxuICAgIHZhciBjbGFzc2VzIDogc3RyaW5nID0gXCJcIjtcclxuICAgIGlmKFsnRGF0ZVRpbWUnLCAnVGltZScsICdEYXRlJ10uaW5jbHVkZXMoZmllbGQudHlwZSkpe1xyXG4gICAgICBjbGFzc2VzICs9ICdmb250LW1vbm8gJztcclxuICAgIH1cclxuICAgIGlmKHRoaXMuY29sdW1uQ2xhc3Mpe1xyXG4gICAgICBjbGFzc2VzICs9IHRoaXMuY29sdW1uQ2xhc3MoZmllbGQuaW5kZXgsIGl0ZW0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNsYXNzZXM7XHJcbiAgfVxyXG4gIEdldFRkU3R5bGUoZmllbGQsIGl0ZW0pOiBzdHJpbmd7XHJcbiAgICBpZih0aGlzLmNvbHVtblN0eWxlKXtcclxuICAgICAgcmV0dXJuIHRoaXMuY29sdW1uU3R5bGUoZmllbGQsIGl0ZW0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG59IiwiPCEtLSA8c2VjdGlvbiBjbGFzcz1cInctZnVsbCBoLWZ1bGwgcm91bmRlZC0yeGwgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy15LWhpZGRlbiByZWxhdGl2ZVwiIFtuZ0NsYXNzXT1cInsgJ2xvYWRpbmcnIDogbG9hZGluZyB9XCI+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJ1bmlxdWUtY29udGVpbmVyIGRlZmF1bHQtdHJhbnNpdGlvblwiIFtuZ0NsYXNzXT1cInsnIS16LTUwICEtdHJhbnNsYXRlLXktMTIgIW9wYWNpdHktMCc6ICFsb2FkaW5nIH1cIj5cclxuICAgICAgICA8bG9hZGluZyBbdHlwZV09XCIyXCI+PC9sb2FkaW5nPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidW5pcXVlLWNvbnRlaW5lciBkZWZhdWx0LXRyYW5zaXRpb25cIiBbbmdDbGFzc109XCJ7JyEtei01MCAhLXRyYW5zbGF0ZS15LTEyICFvcGFjaXR5LTAnOiBpdGVtcy5sZW5ndGggIT0gMCB8fCBsb2FkaW5nIH1cIj5cclxuICAgICAgICA8Yj48aW9uLWljb24gY2xhc3M9XCJhbGlnbi1zdWJcIiBuYW1lPVwicmVtb3ZlLWNpcmNsZVwiPjwvaW9uLWljb24+IFNlbSBkYWRvczwvYj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgaWQ9XCJ3cmFwcGVyXCIgY2xhc3M9XCJyZWxhdGl2ZSBvdmVyZmxvdy15LWF1dG8gdy1mdWxsIGdyb3ctMCBtYi1hdXRvIHBiLTJcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ6LTIwIG92ZXJmbG93LXZpc2libGVcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicHgtMyAhaC0xMFwiICpuZ0lmPVwiYWNvZXNUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Bw6fDtWVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgQGZvciAoZmllbGQgb2YgbHN0VGFibGVGaWVsZHM7IGxldCBpID0gJGluZGV4OyB0cmFjayBpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWZpZWxkLmhpZGRlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJwLTIgcHgtM1wiIGlkPVwidGgtZmlsdGVyLXNlbGVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IGgtZnVsbFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IHZhcigtLWlvbi10YWJsZS1maWx0ZXItd3JhcCk7XCI+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoIW5vRmlsdGVycyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGgtZmlsdGVyIGNsYXNzPVwiIXRleHQtYmFzZVwiIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudFwiICpuZ0lmPVwiKGZpZWxkLnR5cGUgIT0gSW5wdXRUeXBlRmlsZSkgJiYgIShmaWVsZC5maWx0ZXIgJiYgZmllbGQuZGlzYWJsZWRDaGFuZ2UoKSkgJiYgIW5vRmlsdGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIkNoYW5nZUZpbHRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3RoLWZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2ZpZWxkLmhlYWRlcn19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCIhKCEoZmllbGQudHlwZSAhPSBJbnB1dFR5cGVGaWxlKSAmJiAhKGZpZWxkLmZpbHRlciAmJiBmaWVsZC5kaXNhYmxlZENoYW5nZSgpKSkgJiYgIW5vRmlsdGVyc1wiIGNsYXNzPVwib3JkZXItc3dpdGNoIGgtNSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweC0xIG1sLTIgc2hyaW5rLTAgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC0yeGxcIiAoY2xpY2spPVwiU3dpdGNoT3JkZXIoZmllbGQpXCIgW25nQ2xhc3NdPVwieyAnb3JkZXJpbmctYXNjJyA6IG9yZGVyQnlQcm9wZXJ0eSA9PSBmaWVsZC5pbmRleCAmJiBhc2NlbmRpbmcsICdvcmRlcmluZy1kZXNjJyA6IG9yZGVyQnlQcm9wZXJ0eSA9PSBmaWVsZC5pbmRleCAmJiAhYXNjZW5kaW5nfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIGlkPVwidXBcIiAgIG5hbWU9XCJhcnJvdy11cFwiICAgY2xhc3M9XCItbXQtMVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gaWQ9XCJkb3duXCIgbmFtZT1cImFycm93LWRvd25cIiBjbGFzcz1cIi1tbC0xIC1tYi0xXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgIDx0ciBbaGlkZGVuXT1cImxvYWRpbmdcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZihhY29lc1RlbXBsYXRlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwid2hpdGVzcGFjZS1ub3dyYXAgcHktMSBweC0zXCIgW3N0eWxlXT1cIkdldFRkU3R5bGUoJ0Fjb2VzJywgaXRlbSlcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWNvZXNUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGZvciAoZmllbGQgb2YgbHN0VGFibGVGaWVsZHM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFmaWVsZC5oaWRkZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInB4LTMgcHktMlwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIkdldFRkQ2xhc3NlcyhmaWVsZCwgaXRlbSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiR2V0VGRTdHlsZShmaWVsZCwgaXRlbSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiUmVkaXJlY3QoZmllbGQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndoaXRlLXNwYWNlOiB2YXIoLS1pb24tdGFibGUtcm93LXdyYXApO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmaWVsZC5pbmRleCA9PSAnYXRpdm8nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnRcIiBbcm91dGVyTGlua109XCJudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRvZ2dsZSBbY2hlY2tlZF09XCJpdGVtW2ZpZWxkLmluZGV4XVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCIgKGlvbkNoYW5nZSk9XCJBdGl2YXIoaXRlbS5pZClcIiA+PC9pb24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAoZmllbGQudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKFwiQm9vbFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmaWVsZC5jb25maWd1cmF0aW9uLnR5cGUgPT0gXCJ0b2dnbGVcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiLWZ1bGwgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdG9nZ2xlIFtjaGVja2VkXT1cIml0ZW1bZmllbGQuaW5kZXhdXCIgW2Rpc2FibGVkXT1cInRydWVcIj48L2lvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCItZnVsbCBoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveCBbY2hlY2tlZF09XCJpdGVtW2ZpZWxkLmluZGV4XVwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC9pb24tY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChcIkZpbGVcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkb3dubG9hZC1idXR0b24gWyhuZ01vZGVsKV09XCJpdGVtW2ZpZWxkLmluZGV4XVwiIFtjb25maWd1cmF0aW9uXT1cImZpZWxkLmNvbmZpZ3VyYXRpb25cIj48L2Rvd25sb2FkLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChcIlNlbGVjdFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tHZXRTZWxlY3RMYWJlbChpdGVtLCBmaWVsZCl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRlZmF1bHQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7R2V0RmllbGQoaXRlbSwgZmllbGQpfX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1pdGVtLWVuZF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgQGlmKCFub1BhZ2luYXRpb24pe1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaHJpbmstMCBtdC1hdXRvIHctZnVsbFwiPlxyXG4gICAgICAgICAgICA8ZGVmYXVsdC1wYWdpbmF0aW9uXHJcbiAgICAgICAgICAgICAgICBbcGFnZV09XCJwYWdlXCJcclxuICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIkVtaXRQYWdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW3RvdGFsXT1cInRvdGFsXCJcclxuICAgICAgICAgICAgICAgIFtsaW1pdF09XCJsaW1pdFwiXHJcbiAgICAgICAgICAgICAgICBbbGVuZ3RoXT1cIml0ZW1zLmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgPjwvZGVmYXVsdC1wYWdpbmF0aW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG48L3NlY3Rpb24+IC0tPlxyXG48ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIHJvdW5kZWQtMnhsIGZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIHJlbGF0aXZlXCI+XHJcbiAgICA8bG9hZGluZyBbdHlwZV09XCIzXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiPjwvbG9hZGluZz5cclxuICAgIDxjb250ZW50LWJsb2NrIHRleHQ9XCJTZW0gRGFkb3NcIiBbdmFsdWVdPVwiIShpdGVtcy5sZW5ndGggIT0gMCB8fCBsb2FkaW5nKVwiPjwvY29udGVudC1ibG9jaz5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIHNocmluayByZWxhdGl2ZSBvdmVyZmxvdy15LWF1dG9cIj5cclxuICAgICAgICA8dGFibGU+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cInB4LTMgIWgtMTBcIiAqbmdJZj1cImFjb2VzVGVtcGxhdGVcIj4gQcOnw7VlcyA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChmaWVsZCBvZiBsc3RUYWJsZUZpZWxkczsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIGkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWZpZWxkLmhpZGRlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicC0yIHB4LTNcIiBpZD1cInRoLWZpbHRlci1zZWxlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgaC1mdWxsXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogdmFyKC0taW9uLXRhYmxlLWZpbHRlci13cmFwKTtcIj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoIW5vRmlsdGVycyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoLWZpbHRlciBjbGFzcz1cIiF0ZXh0LWJhc2VcIiBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnRcIiAqbmdJZj1cIihmaWVsZC50eXBlICE9IElucHV0VHlwZUZpbGUpICYmICEoZmllbGQuZmlsdGVyICYmIGZpZWxkLmRpc2FibGVkQ2hhbmdlKCkpICYmICFub0ZpbHRlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIkNoYW5nZUZpbHRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC90aC1maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2ZpZWxkLmhlYWRlcn19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiISghKGZpZWxkLnR5cGUgIT0gSW5wdXRUeXBlRmlsZSkgJiYgIShmaWVsZC5maWx0ZXIgJiYgZmllbGQuZGlzYWJsZWRDaGFuZ2UoKSkpICYmICFub0ZpbHRlcnNcIiBjbGFzcz1cIm9yZGVyLXN3aXRjaCBoLTUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtMSBtbC0yIHNocmluay0wIGN1cnNvci1wb2ludGVyIHJvdW5kZWQtMnhsXCIgKGNsaWNrKT1cIlN3aXRjaE9yZGVyKGZpZWxkKVwiIFtuZ0NsYXNzXT1cInsgJ29yZGVyaW5nLWFzYycgOiBvcmRlckJ5UHJvcGVydHkgPT0gZmllbGQuaW5kZXggJiYgYXNjZW5kaW5nLCAnb3JkZXJpbmctZGVzYycgOiBvcmRlckJ5UHJvcGVydHkgPT0gZmllbGQuaW5kZXggJiYgIWFzY2VuZGluZ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gaWQ9XCJ1cFwiICAgbmFtZT1cImFycm93LXVwXCIgICBjbGFzcz1cIi1tdC0xXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gaWQ9XCJkb3duXCIgbmFtZT1cImFycm93LWRvd25cIiBjbGFzcz1cIi1tbC0xIC1tYi0xXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgPHRyIFtoaWRkZW5dPVwibG9hZGluZ1wiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmKGFjb2VzVGVtcGxhdGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcCBweS0xIHB4LTNcIiBbc3R5bGVdPVwiR2V0VGRTdHlsZSgnQWNvZXMnLCBpdGVtKVwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhY29lc1RlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAZm9yIChmaWVsZCBvZiBsc3RUYWJsZUZpZWxkczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWZpZWxkLmhpZGRlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicHgtMyBweS0yXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiR2V0VGRDbGFzc2VzKGZpZWxkLCBpdGVtKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJHZXRUZFN0eWxlKGZpZWxkLCBpdGVtKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJSZWRpcmVjdChmaWVsZCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IHZhcigtLWlvbi10YWJsZS1yb3ctd3JhcCk7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGZpZWxkLmluZGV4ID09ICdhdGl2bycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydFwiIFtyb3V0ZXJMaW5rXT1cIm51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdG9nZ2xlIFtjaGVja2VkXT1cIml0ZW1bZmllbGQuaW5kZXhdXCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIiAoaW9uQ2hhbmdlKT1cIkF0aXZhcihpdGVtLmlkKVwiID48L2lvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc3dpdGNoIChmaWVsZC50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoXCJCb29sXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGZpZWxkLmNvbmZpZ3VyYXRpb24udHlwZSA9PSBcInRvZ2dsZVwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCItZnVsbCBoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10b2dnbGUgW2NoZWNrZWRdPVwiaXRlbVtmaWVsZC5pbmRleF1cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvaW9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIi1mdWxsIGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNoZWNrYm94IFtjaGVja2VkXT1cIml0ZW1bZmllbGQuaW5kZXhdXCIgW2Rpc2FibGVkXT1cInRydWVcIj48L2lvbi1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKFwiRmlsZVwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRvd25sb2FkLWJ1dHRvbiBbKG5nTW9kZWwpXT1cIml0ZW1bZmllbGQuaW5kZXhdXCIgW2NvbmZpZ3VyYXRpb25dPVwiZmllbGQuY29uZmlndXJhdGlvblwiPjwvZG93bmxvYWQtYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKFwiU2VsZWN0XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e0dldFNlbGVjdExhYmVsKGl0ZW0sIGZpZWxkKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tHZXRGaWVsZChpdGVtLCBmaWVsZCl9fSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PWl0ZW0tZW5kXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgICBAaWYoIW5vUGFnaW5hdGlvbil7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNocmluay0wIHotWzEwMF1cIj5cclxuICAgICAgICAgICAgPGRlZmF1bHQtcGFnaW5hdGlvblxyXG4gICAgICAgICAgICAgICAgW3BhZ2VdPVwicGFnZVwiXHJcbiAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJFbWl0UGFnZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFt0b3RhbF09XCJ0b3RhbFwiXHJcbiAgICAgICAgICAgICAgICBbbGltaXRdPVwibGltaXRcIlxyXG4gICAgICAgICAgICAgICAgW2xlbmd0aF09XCJpdGVtcy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICAgICAgICAgID48L2RlZmF1bHQtcGFnaW5hdGlvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIH1cclxuPC9kaXY+Il19