@ng-nest/ui 14.0.6 → 14.0.8

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 (250) hide show
  1. package/avatar/avatar-group.component.d.ts +8 -0
  2. package/avatar/avatar.component.d.ts +15 -4
  3. package/avatar/avatar.module.d.ts +5 -4
  4. package/avatar/avatar.property.d.ts +31 -3
  5. package/avatar/examples/en_US/default/badge/README.md +6 -0
  6. package/avatar/examples/en_US/default/group/README.md +6 -0
  7. package/avatar/examples/en_US/default/label/README.md +6 -0
  8. package/avatar/examples/en_US/default/response/README.md +6 -0
  9. package/avatar/examples/zh_CN/default/badge/README.md +6 -0
  10. package/avatar/examples/zh_CN/default/group/README.md +6 -0
  11. package/avatar/examples/zh_CN/default/label/README.md +6 -0
  12. package/avatar/examples/zh_CN/default/response/README.md +6 -0
  13. package/avatar/public-api.d.ts +1 -0
  14. package/badge/badge.component.d.ts +4 -1
  15. package/badge/badge.property.d.ts +6 -1
  16. package/badge/examples/en_US/default/animation/README.md +4 -0
  17. package/badge/examples/en_US/default/standalone/README.md +6 -0
  18. package/badge/examples/zh_CN/default/animation/README.md +4 -0
  19. package/badge/examples/zh_CN/default/standalone/README.md +6 -0
  20. package/calendar/calendar.component.d.ts +1 -0
  21. package/calendar/calendar.property.d.ts +18 -3
  22. package/calendar/examples/en_US/default/card/README.md +6 -0
  23. package/calendar/examples/en_US/default/header/README.md +6 -0
  24. package/calendar/examples/zh_CN/default/card/README.md +6 -0
  25. package/calendar/examples/zh_CN/default/header/README.md +6 -0
  26. package/collapse/collapse.property.d.ts +6 -1
  27. package/collapse/examples/en_US/default/disabled/README.md +6 -0
  28. package/collapse/examples/zh_CN/default/disabled/README.md +6 -0
  29. package/core/animation/badge.d.ts +1 -0
  30. package/core/config/config.d.ts +30 -0
  31. package/core/interfaces/identify.type.d.ts +2 -0
  32. package/core/interfaces/layout.type.d.ts +15 -0
  33. package/esm2020/avatar/avatar-group.component.mjs +19 -0
  34. package/esm2020/avatar/avatar.component.mjs +91 -11
  35. package/esm2020/avatar/avatar.module.mjs +6 -5
  36. package/esm2020/avatar/avatar.property.mjs +31 -3
  37. package/esm2020/avatar/public-api.mjs +2 -1
  38. package/esm2020/badge/badge.component.mjs +24 -8
  39. package/esm2020/badge/badge.property.mjs +7 -2
  40. package/esm2020/calendar/calendar.component.mjs +8 -4
  41. package/esm2020/calendar/calendar.property.mjs +11 -2
  42. package/esm2020/collapse/collapse-panel.component.mjs +3 -3
  43. package/esm2020/collapse/collapse.property.mjs +7 -2
  44. package/esm2020/core/animation/badge.mjs +17 -1
  45. package/esm2020/core/config/config.mjs +1 -1
  46. package/esm2020/core/interfaces/identify.type.mjs +1 -1
  47. package/esm2020/core/interfaces/layout.type.mjs +1 -1
  48. package/esm2020/date-picker/date-picker.component.mjs +5 -1
  49. package/esm2020/form/form.component.mjs +3 -3
  50. package/esm2020/i18n/i18n.property.mjs +1 -1
  51. package/esm2020/i18n/languages/en_US.mjs +8 -1
  52. package/esm2020/i18n/languages/zh_CN.mjs +8 -1
  53. package/esm2020/i18n/languages/zh_TW.mjs +8 -1
  54. package/esm2020/image/image-group.component.mjs +18 -0
  55. package/esm2020/image/image-preview.component.mjs +136 -0
  56. package/esm2020/image/image.component.mjs +89 -0
  57. package/esm2020/image/image.module.mjs +27 -0
  58. package/esm2020/image/image.property.mjs +82 -0
  59. package/esm2020/image/ng-nest-ui-image.mjs +5 -0
  60. package/esm2020/image/public-api.mjs +6 -0
  61. package/esm2020/index.mjs +4 -1
  62. package/esm2020/keyword/keyword.directive.mjs +66 -0
  63. package/esm2020/keyword/keyword.module.mjs +19 -0
  64. package/esm2020/keyword/keyword.property.mjs +41 -0
  65. package/esm2020/keyword/ng-nest-ui-keyword.mjs +5 -0
  66. package/esm2020/keyword/public-api.mjs +4 -0
  67. package/esm2020/list/list-option.component.mjs +4 -4
  68. package/esm2020/list/list.component.mjs +71 -10
  69. package/esm2020/list/list.module.mjs +12 -4
  70. package/esm2020/list/list.property.mjs +54 -3
  71. package/esm2020/select/select-portal.component.mjs +6 -3
  72. package/esm2020/select/select.component.mjs +31 -23
  73. package/esm2020/select/select.property.mjs +8 -2
  74. package/esm2020/table/table-head.component.mjs +2 -2
  75. package/esm2020/table/table.component.mjs +4 -4
  76. package/esm2020/textarea/textarea.component.mjs +2 -2
  77. package/esm2020/timeline/timeline.component.mjs +6 -4
  78. package/esm2020/tree/tree-node.component.mjs +52 -27
  79. package/esm2020/tree/tree.component.mjs +173 -58
  80. package/esm2020/tree/tree.module.mjs +5 -4
  81. package/esm2020/tree/tree.property.mjs +38 -2
  82. package/esm2020/tree-select/ng-nest-ui-tree-select.mjs +5 -0
  83. package/esm2020/tree-select/public-api.mjs +5 -0
  84. package/esm2020/tree-select/tree-select-portal.component.mjs +110 -0
  85. package/esm2020/tree-select/tree-select.component.mjs +632 -0
  86. package/esm2020/tree-select/tree-select.module.mjs +65 -0
  87. package/esm2020/tree-select/tree-select.property.mjs +153 -0
  88. package/esm2020/upload/upload.component.mjs +9 -6
  89. package/esm2020/upload/upload.module.mjs +12 -4
  90. package/esm2020/upload/upload.property.mjs +10 -3
  91. package/fesm2015/ng-nest-ui-avatar.mjs +143 -17
  92. package/fesm2015/ng-nest-ui-avatar.mjs.map +1 -1
  93. package/fesm2015/ng-nest-ui-badge.mjs +29 -8
  94. package/fesm2015/ng-nest-ui-badge.mjs.map +1 -1
  95. package/fesm2015/ng-nest-ui-calendar.mjs +17 -4
  96. package/fesm2015/ng-nest-ui-calendar.mjs.map +1 -1
  97. package/fesm2015/ng-nest-ui-collapse.mjs +8 -3
  98. package/fesm2015/ng-nest-ui-collapse.mjs.map +1 -1
  99. package/fesm2015/ng-nest-ui-core.mjs +17 -1
  100. package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
  101. package/fesm2015/ng-nest-ui-date-picker.mjs +4 -0
  102. package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
  103. package/fesm2015/ng-nest-ui-form.mjs +2 -2
  104. package/fesm2015/ng-nest-ui-form.mjs.map +1 -1
  105. package/fesm2015/ng-nest-ui-i18n.mjs +21 -0
  106. package/fesm2015/ng-nest-ui-i18n.mjs.map +1 -1
  107. package/fesm2015/ng-nest-ui-image.mjs +340 -0
  108. package/fesm2015/ng-nest-ui-image.mjs.map +1 -0
  109. package/fesm2015/ng-nest-ui-keyword.mjs +125 -0
  110. package/fesm2015/ng-nest-ui-keyword.mjs.map +1 -0
  111. package/fesm2015/ng-nest-ui-list.mjs +138 -17
  112. package/fesm2015/ng-nest-ui-list.mjs.map +1 -1
  113. package/fesm2015/ng-nest-ui-select.mjs +42 -25
  114. package/fesm2015/ng-nest-ui-select.mjs.map +1 -1
  115. package/fesm2015/ng-nest-ui-table.mjs +4 -4
  116. package/fesm2015/ng-nest-ui-table.mjs.map +1 -1
  117. package/fesm2015/ng-nest-ui-textarea.mjs +2 -2
  118. package/fesm2015/ng-nest-ui-textarea.mjs.map +1 -1
  119. package/fesm2015/ng-nest-ui-timeline.mjs +5 -3
  120. package/fesm2015/ng-nest-ui-timeline.mjs.map +1 -1
  121. package/fesm2015/ng-nest-ui-tree-select.mjs +951 -0
  122. package/fesm2015/ng-nest-ui-tree-select.mjs.map +1 -0
  123. package/fesm2015/ng-nest-ui-tree.mjs +271 -94
  124. package/fesm2015/ng-nest-ui-tree.mjs.map +1 -1
  125. package/fesm2015/ng-nest-ui-upload.mjs +28 -10
  126. package/fesm2015/ng-nest-ui-upload.mjs.map +1 -1
  127. package/fesm2015/ng-nest-ui.mjs +3 -0
  128. package/fesm2015/ng-nest-ui.mjs.map +1 -1
  129. package/fesm2020/ng-nest-ui-avatar.mjs +140 -17
  130. package/fesm2020/ng-nest-ui-avatar.mjs.map +1 -1
  131. package/fesm2020/ng-nest-ui-badge.mjs +29 -8
  132. package/fesm2020/ng-nest-ui-badge.mjs.map +1 -1
  133. package/fesm2020/ng-nest-ui-calendar.mjs +17 -4
  134. package/fesm2020/ng-nest-ui-calendar.mjs.map +1 -1
  135. package/fesm2020/ng-nest-ui-collapse.mjs +8 -3
  136. package/fesm2020/ng-nest-ui-collapse.mjs.map +1 -1
  137. package/fesm2020/ng-nest-ui-core.mjs +17 -1
  138. package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
  139. package/fesm2020/ng-nest-ui-date-picker.mjs +4 -0
  140. package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
  141. package/fesm2020/ng-nest-ui-form.mjs +2 -2
  142. package/fesm2020/ng-nest-ui-form.mjs.map +1 -1
  143. package/fesm2020/ng-nest-ui-i18n.mjs +21 -0
  144. package/fesm2020/ng-nest-ui-i18n.mjs.map +1 -1
  145. package/fesm2020/ng-nest-ui-image.mjs +336 -0
  146. package/fesm2020/ng-nest-ui-image.mjs.map +1 -0
  147. package/fesm2020/ng-nest-ui-keyword.mjs +125 -0
  148. package/fesm2020/ng-nest-ui-keyword.mjs.map +1 -0
  149. package/fesm2020/ng-nest-ui-list.mjs +137 -17
  150. package/fesm2020/ng-nest-ui-list.mjs.map +1 -1
  151. package/fesm2020/ng-nest-ui-select.mjs +42 -25
  152. package/fesm2020/ng-nest-ui-select.mjs.map +1 -1
  153. package/fesm2020/ng-nest-ui-table.mjs +4 -4
  154. package/fesm2020/ng-nest-ui-table.mjs.map +1 -1
  155. package/fesm2020/ng-nest-ui-textarea.mjs +2 -2
  156. package/fesm2020/ng-nest-ui-textarea.mjs.map +1 -1
  157. package/fesm2020/ng-nest-ui-timeline.mjs +5 -3
  158. package/fesm2020/ng-nest-ui-timeline.mjs.map +1 -1
  159. package/fesm2020/ng-nest-ui-tree-select.mjs +946 -0
  160. package/fesm2020/ng-nest-ui-tree-select.mjs.map +1 -0
  161. package/fesm2020/ng-nest-ui-tree.mjs +267 -91
  162. package/fesm2020/ng-nest-ui-tree.mjs.map +1 -1
  163. package/fesm2020/ng-nest-ui-upload.mjs +28 -10
  164. package/fesm2020/ng-nest-ui-upload.mjs.map +1 -1
  165. package/fesm2020/ng-nest-ui.mjs +3 -0
  166. package/fesm2020/ng-nest-ui.mjs.map +1 -1
  167. package/i18n/i18n.property.d.ts +9 -0
  168. package/i18n/languages/en_US.d.ts +7 -0
  169. package/i18n/languages/zh_CN.d.ts +7 -0
  170. package/i18n/languages/zh_TW.d.ts +7 -0
  171. package/image/examples/en_US/default/README.md +4 -0
  172. package/image/examples/en_US/default/default/README.md +6 -0
  173. package/image/examples/en_US/default/fallback/README.md +6 -0
  174. package/image/examples/en_US/default/group/README.md +6 -0
  175. package/image/examples/en_US/default/placeholder/README.md +6 -0
  176. package/image/examples/zh_CN/default/README.md +4 -0
  177. package/image/examples/zh_CN/default/default/README.md +6 -0
  178. package/image/examples/zh_CN/default/fallback/README.md +6 -0
  179. package/image/examples/zh_CN/default/group/README.md +6 -0
  180. package/image/examples/zh_CN/default/placeholder/README.md +6 -0
  181. package/image/image-group.component.d.ts +8 -0
  182. package/image/image-preview.component.d.ts +39 -0
  183. package/image/image.component.d.ts +29 -0
  184. package/image/image.module.d.ts +17 -0
  185. package/image/image.property.d.ts +112 -0
  186. package/image/index.d.ts +5 -0
  187. package/image/public-api.d.ts +5 -0
  188. package/index.d.ts +3 -0
  189. package/keyword/index.d.ts +5 -0
  190. package/keyword/keyword.directive.d.ts +19 -0
  191. package/keyword/keyword.module.d.ts +9 -0
  192. package/keyword/keyword.property.d.ts +40 -0
  193. package/keyword/public-api.d.ts +3 -0
  194. package/list/examples/en_US/default/scroll/README.md +8 -0
  195. package/list/examples/zh_CN/default/scroll/README.md +8 -0
  196. package/list/list-option.component.d.ts +0 -1
  197. package/list/list.component.d.ts +13 -1
  198. package/list/list.module.d.ts +3 -1
  199. package/list/list.property.d.ts +62 -3
  200. package/package.json +25 -1
  201. package/select/examples/en_US/default/default/README.md +1 -2
  202. package/select/examples/zh_CN/default/default/README.md +1 -2
  203. package/select/select-portal.component.d.ts +5 -1
  204. package/select/select.component.d.ts +2 -2
  205. package/select/select.property.d.ts +6 -1
  206. package/style/core/index.css +29 -0
  207. package/style/core/index.css.map +1 -1
  208. package/style/directives/index.scss +1 -0
  209. package/style/directives/keyword/index.scss +6 -0
  210. package/style/directives/keyword/mixin.scss +24 -0
  211. package/style/directives/keyword/param.scss +3 -0
  212. package/tree/tree-node.component.d.ts +4 -4
  213. package/tree/tree.component.d.ts +13 -1
  214. package/tree/tree.module.d.ts +2 -1
  215. package/tree/tree.property.d.ts +44 -14
  216. package/tree-select/examples/en_US/default/README.md +4 -0
  217. package/tree-select/examples/en_US/default/async/README.md +6 -0
  218. package/tree-select/examples/en_US/default/bordered/README.md +6 -0
  219. package/tree-select/examples/en_US/default/custom/README.md +6 -0
  220. package/tree-select/examples/en_US/default/default/README.md +6 -0
  221. package/tree-select/examples/en_US/default/disabled/README.md +6 -0
  222. package/tree-select/examples/en_US/default/label/README.md +6 -0
  223. package/tree-select/examples/en_US/default/multiple/README.md +6 -0
  224. package/tree-select/examples/en_US/default/path/README.md +6 -0
  225. package/tree-select/examples/en_US/default/required/README.md +6 -0
  226. package/tree-select/examples/en_US/default/scroll/README.md +6 -0
  227. package/tree-select/examples/en_US/default/search/README.md +7 -0
  228. package/tree-select/examples/en_US/default/size/README.md +6 -0
  229. package/tree-select/examples/zh_CN/default/README.md +4 -0
  230. package/tree-select/examples/zh_CN/default/async/README.md +6 -0
  231. package/tree-select/examples/zh_CN/default/bordered/README.md +6 -0
  232. package/tree-select/examples/zh_CN/default/custom/README.md +6 -0
  233. package/tree-select/examples/zh_CN/default/default/README.md +6 -0
  234. package/tree-select/examples/zh_CN/default/disabled/README.md +6 -0
  235. package/tree-select/examples/zh_CN/default/label/README.md +6 -0
  236. package/tree-select/examples/zh_CN/default/multiple/README.md +6 -0
  237. package/tree-select/examples/zh_CN/default/path/README.md +6 -0
  238. package/tree-select/examples/zh_CN/default/required/README.md +6 -0
  239. package/tree-select/examples/zh_CN/default/scroll/README.md +6 -0
  240. package/tree-select/examples/zh_CN/default/search/README.md +7 -0
  241. package/tree-select/examples/zh_CN/default/size/README.md +6 -0
  242. package/tree-select/index.d.ts +5 -0
  243. package/tree-select/public-api.d.ts +4 -0
  244. package/tree-select/tree-select-portal.component.d.ts +62 -0
  245. package/tree-select/tree-select.component.d.ts +101 -0
  246. package/tree-select/tree-select.module.d.ts +20 -0
  247. package/tree-select/tree-select.property.d.ts +202 -0
  248. package/upload/upload.component.d.ts +1 -1
  249. package/upload/upload.module.d.ts +3 -1
  250. package/upload/upload.property.d.ts +13 -3
@@ -0,0 +1,65 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
+ import { XTreeSelectComponent } from './tree-select.component';
5
+ import { XInputModule } from '@ng-nest/ui/input';
6
+ import { XPortalModule } from '@ng-nest/ui/portal';
7
+ import { XListModule } from '@ng-nest/ui/list';
8
+ import { XTreeSelectPortalComponent } from './tree-select-portal.component';
9
+ import { XTreeSelectProperty } from './tree-select.property';
10
+ import { XBaseFormModule } from '@ng-nest/ui/base-form';
11
+ import { XI18nModule } from '@ng-nest/ui/i18n';
12
+ import { XTagModule } from '@ng-nest/ui/tag';
13
+ import { XOutletModule } from '@ng-nest/ui/outlet';
14
+ import { XTreeModule } from '@ng-nest/ui/tree';
15
+ import { XEmptyModule } from '@ng-nest/ui/empty';
16
+ import * as i0 from "@angular/core";
17
+ export class XTreeSelectModule {
18
+ }
19
+ /** @nocollapse */ XTreeSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20
+ /** @nocollapse */ XTreeSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: XTreeSelectModule, declarations: [XTreeSelectComponent, XTreeSelectPortalComponent, XTreeSelectProperty], imports: [CommonModule,
21
+ FormsModule,
22
+ ReactiveFormsModule,
23
+ XPortalModule,
24
+ XInputModule,
25
+ XListModule,
26
+ XBaseFormModule,
27
+ XTagModule,
28
+ XI18nModule,
29
+ XOutletModule,
30
+ XTreeModule,
31
+ XEmptyModule], exports: [XTreeSelectComponent, XTreeSelectPortalComponent] });
32
+ /** @nocollapse */ XTreeSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeSelectModule, imports: [CommonModule,
33
+ FormsModule,
34
+ ReactiveFormsModule,
35
+ XPortalModule,
36
+ XInputModule,
37
+ XListModule,
38
+ XBaseFormModule,
39
+ XTagModule,
40
+ XI18nModule,
41
+ XOutletModule,
42
+ XTreeModule,
43
+ XEmptyModule] });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeSelectModule, decorators: [{
45
+ type: NgModule,
46
+ args: [{
47
+ declarations: [XTreeSelectComponent, XTreeSelectPortalComponent, XTreeSelectProperty],
48
+ exports: [XTreeSelectComponent, XTreeSelectPortalComponent],
49
+ imports: [
50
+ CommonModule,
51
+ FormsModule,
52
+ ReactiveFormsModule,
53
+ XPortalModule,
54
+ XInputModule,
55
+ XListModule,
56
+ XBaseFormModule,
57
+ XTagModule,
58
+ XI18nModule,
59
+ XOutletModule,
60
+ XTreeModule,
61
+ XEmptyModule
62
+ ]
63
+ }]
64
+ }] });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWxlY3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJlZS1zZWxlY3QvdHJlZS1zZWxlY3QubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFvQmpELE1BQU0sT0FBTyxpQkFBaUI7O2lJQUFqQixpQkFBaUI7a0lBQWpCLGlCQUFpQixpQkFqQmIsb0JBQW9CLEVBQUUsMEJBQTBCLEVBQUUsbUJBQW1CLGFBR2xGLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLGFBQWE7UUFDYixZQUFZO1FBQ1osV0FBVztRQUNYLGVBQWU7UUFDZixVQUFVO1FBQ1YsV0FBVztRQUNYLGFBQWE7UUFDYixXQUFXO1FBQ1gsWUFBWSxhQWJKLG9CQUFvQixFQUFFLDBCQUEwQjtrSUFnQi9DLGlCQUFpQixZQWQxQixZQUFZO1FBQ1osV0FBVztRQUNYLG1CQUFtQjtRQUNuQixhQUFhO1FBQ2IsWUFBWTtRQUNaLFdBQVc7UUFDWCxlQUFlO1FBQ2YsVUFBVTtRQUNWLFdBQVc7UUFDWCxhQUFhO1FBQ2IsV0FBVztRQUNYLFlBQVk7MkZBR0gsaUJBQWlCO2tCQWxCN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSwwQkFBMEIsRUFBRSxtQkFBbUIsQ0FBQztvQkFDckYsT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsMEJBQTBCLENBQUM7b0JBQzNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxlQUFlO3dCQUNmLFVBQVU7d0JBQ1YsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsWUFBWTtxQkFDYjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBYVHJlZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWElucHV0TW9kdWxlIH0gZnJvbSAnQG5nLW5lc3QvdWkvaW5wdXQnO1xyXG5pbXBvcnQgeyBYUG9ydGFsTW9kdWxlIH0gZnJvbSAnQG5nLW5lc3QvdWkvcG9ydGFsJztcclxuaW1wb3J0IHsgWExpc3RNb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS9saXN0JztcclxuaW1wb3J0IHsgWFRyZWVTZWxlY3RQb3J0YWxDb21wb25lbnQgfSBmcm9tICcuL3RyZWUtc2VsZWN0LXBvcnRhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYVHJlZVNlbGVjdFByb3BlcnR5IH0gZnJvbSAnLi90cmVlLXNlbGVjdC5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhCYXNlRm9ybU1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcbmltcG9ydCB7IFhJMThuTW9kdWxlIH0gZnJvbSAnQG5nLW5lc3QvdWkvaTE4bic7XHJcbmltcG9ydCB7IFhUYWdNb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS90YWcnO1xyXG5pbXBvcnQgeyBYT3V0bGV0TW9kdWxlIH0gZnJvbSAnQG5nLW5lc3QvdWkvb3V0bGV0JztcclxuaW1wb3J0IHsgWFRyZWVNb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS90cmVlJztcclxuaW1wb3J0IHsgWEVtcHR5TW9kdWxlIH0gZnJvbSAnQG5nLW5lc3QvdWkvZW1wdHknO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtYVHJlZVNlbGVjdENvbXBvbmVudCwgWFRyZWVTZWxlY3RQb3J0YWxDb21wb25lbnQsIFhUcmVlU2VsZWN0UHJvcGVydHldLFxyXG4gIGV4cG9ydHM6IFtYVHJlZVNlbGVjdENvbXBvbmVudCwgWFRyZWVTZWxlY3RQb3J0YWxDb21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFhQb3J0YWxNb2R1bGUsXHJcbiAgICBYSW5wdXRNb2R1bGUsXHJcbiAgICBYTGlzdE1vZHVsZSxcclxuICAgIFhCYXNlRm9ybU1vZHVsZSxcclxuICAgIFhUYWdNb2R1bGUsXHJcbiAgICBYSTE4bk1vZHVsZSxcclxuICAgIFhPdXRsZXRNb2R1bGUsXHJcbiAgICBYVHJlZU1vZHVsZSxcclxuICAgIFhFbXB0eU1vZHVsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhUcmVlU2VsZWN0TW9kdWxlIHt9XHJcbiJdfQ==
@@ -0,0 +1,153 @@
1
+ import { __decorate } from "tslib";
2
+ import { XDataConvert, XInputBoolean, XWithConfig, XInputNumber } from '@ng-nest/ui/core';
3
+ import { Input, Component } from '@angular/core';
4
+ import { XControlValueAccessor } from '@ng-nest/ui/base-form';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Tree Select
8
+ * @selector x-tree-select
9
+ * @decorator component
10
+ */
11
+ export const XTreeSelectPrefix = 'x-tree-select';
12
+ const X_CONFIG_NAME = 'treeSelect';
13
+ /**
14
+ * Tree Select Property
15
+ */
16
+ export class XTreeSelectProperty extends XControlValueAccessor {
17
+ constructor() {
18
+ super(...arguments);
19
+ /**
20
+ * @zh_CN 节点数据
21
+ * @en_US Node data
22
+ */
23
+ this.data = [];
24
+ /**
25
+ * @zh_CN 默认展开的层级
26
+ * @en_US Default expanded level
27
+ */
28
+ this.expandedLevel = -1;
29
+ /**
30
+ * @zh_CN 路径分隔符
31
+ * @en_US Path separator
32
+ * @default ' / '
33
+ */
34
+ this.separator = ' / ';
35
+ }
36
+ }
37
+ /** @nocollapse */ XTreeSelectProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeSelectProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
38
+ /** @nocollapse */ XTreeSelectProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTreeSelectProperty, selector: "ng-component", inputs: { data: "data", clearable: "clearable", async: "async", placement: "placement", multiple: "multiple", selectAll: "selectAll", selectAllText: "selectAllText", nodeTpl: "nodeTpl", size: "size", expandedLevel: "expandedLevel", bordered: "bordered", portalMaxHeight: "portalMaxHeight", search: "search", caseSensitive: "caseSensitive", debounceTime: "debounceTime", maxTagCount: "maxTagCount", maxTagContent: "maxTagContent", virtualScroll: "virtualScroll", showPath: "showPath", separator: "separator" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
39
+ __decorate([
40
+ XDataConvert()
41
+ ], XTreeSelectProperty.prototype, "data", void 0);
42
+ __decorate([
43
+ XWithConfig(X_CONFIG_NAME, true),
44
+ XInputBoolean()
45
+ ], XTreeSelectProperty.prototype, "clearable", void 0);
46
+ __decorate([
47
+ XInputBoolean()
48
+ ], XTreeSelectProperty.prototype, "async", void 0);
49
+ __decorate([
50
+ XWithConfig(X_CONFIG_NAME, 'bottom')
51
+ ], XTreeSelectProperty.prototype, "placement", void 0);
52
+ __decorate([
53
+ XInputBoolean()
54
+ ], XTreeSelectProperty.prototype, "multiple", void 0);
55
+ __decorate([
56
+ XInputBoolean()
57
+ ], XTreeSelectProperty.prototype, "selectAll", void 0);
58
+ __decorate([
59
+ XWithConfig(X_CONFIG_NAME)
60
+ ], XTreeSelectProperty.prototype, "selectAllText", void 0);
61
+ __decorate([
62
+ XWithConfig(X_CONFIG_NAME, 'medium')
63
+ ], XTreeSelectProperty.prototype, "size", void 0);
64
+ __decorate([
65
+ XInputNumber()
66
+ ], XTreeSelectProperty.prototype, "expandedLevel", void 0);
67
+ __decorate([
68
+ XInputBoolean(),
69
+ XWithConfig(X_CONFIG_NAME, true)
70
+ ], XTreeSelectProperty.prototype, "bordered", void 0);
71
+ __decorate([
72
+ XWithConfig(X_CONFIG_NAME, '12rem')
73
+ ], XTreeSelectProperty.prototype, "portalMaxHeight", void 0);
74
+ __decorate([
75
+ XInputBoolean(),
76
+ XWithConfig(X_CONFIG_NAME, false)
77
+ ], XTreeSelectProperty.prototype, "search", void 0);
78
+ __decorate([
79
+ XInputBoolean(),
80
+ XWithConfig(X_CONFIG_NAME, true)
81
+ ], XTreeSelectProperty.prototype, "caseSensitive", void 0);
82
+ __decorate([
83
+ XWithConfig(X_CONFIG_NAME, 200)
84
+ ], XTreeSelectProperty.prototype, "debounceTime", void 0);
85
+ __decorate([
86
+ XInputNumber(),
87
+ XWithConfig(X_CONFIG_NAME)
88
+ ], XTreeSelectProperty.prototype, "maxTagCount", void 0);
89
+ __decorate([
90
+ XWithConfig(X_CONFIG_NAME)
91
+ ], XTreeSelectProperty.prototype, "maxTagContent", void 0);
92
+ __decorate([
93
+ XWithConfig(X_CONFIG_NAME),
94
+ XInputBoolean()
95
+ ], XTreeSelectProperty.prototype, "virtualScroll", void 0);
96
+ __decorate([
97
+ XWithConfig(X_CONFIG_NAME, false),
98
+ XInputBoolean()
99
+ ], XTreeSelectProperty.prototype, "showPath", void 0);
100
+ __decorate([
101
+ XWithConfig(X_CONFIG_NAME)
102
+ ], XTreeSelectProperty.prototype, "separator", void 0);
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeSelectProperty, decorators: [{
104
+ type: Component,
105
+ args: [{ template: '' }]
106
+ }], propDecorators: { data: [{
107
+ type: Input
108
+ }], clearable: [{
109
+ type: Input
110
+ }], async: [{
111
+ type: Input
112
+ }], placement: [{
113
+ type: Input
114
+ }], multiple: [{
115
+ type: Input
116
+ }], selectAll: [{
117
+ type: Input
118
+ }], selectAllText: [{
119
+ type: Input
120
+ }], nodeTpl: [{
121
+ type: Input
122
+ }], size: [{
123
+ type: Input
124
+ }], expandedLevel: [{
125
+ type: Input
126
+ }], bordered: [{
127
+ type: Input
128
+ }], portalMaxHeight: [{
129
+ type: Input
130
+ }], search: [{
131
+ type: Input
132
+ }], caseSensitive: [{
133
+ type: Input
134
+ }], debounceTime: [{
135
+ type: Input
136
+ }], maxTagCount: [{
137
+ type: Input
138
+ }], maxTagContent: [{
139
+ type: Input
140
+ }], virtualScroll: [{
141
+ type: Input
142
+ }], showPath: [{
143
+ type: Input
144
+ }], separator: [{
145
+ type: Input
146
+ }] } });
147
+ /**
148
+ * Tree Select Portal
149
+ * @selector x-tree-select-portal
150
+ * @decorator component
151
+ */
152
+ export const XTreeSelectPortalPrefix = 'x-tree-select-portal';
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWxlY3QucHJvcGVydHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC5wcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFlBQVksRUFDWixhQUFhLEVBR2IsV0FBVyxFQUdYLFlBQVksRUFHYixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBZSxNQUFNLHVCQUF1QixDQUFDOztBQUUzRTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDO0FBQ2pELE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQztBQUVuQzs7R0FFRztBQUVILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxxQkFBMEI7SUFEbkU7O1FBRUU7OztXQUdHO1FBQ3NCLFNBQUksR0FBMkIsRUFBRSxDQUFDO1FBeUMzRDs7O1dBR0c7UUFDc0Isa0JBQWEsR0FBWSxDQUFDLENBQUMsQ0FBQztRQStDckQ7Ozs7V0FJRztRQUMwQyxjQUFTLEdBQVcsS0FBSyxDQUFDO0tBQ3hFOzttSUF2R1ksbUJBQW1CO3VIQUFuQixtQkFBbUIseWtCQURULEVBQUU7QUFNRTtJQUFmLFlBQVksRUFBRTtpREFBbUM7QUFLVztJQUE1RCxXQUFXLENBQVcsYUFBYSxFQUFFLElBQUksQ0FBQztJQUFFLGFBQWEsRUFBRTtzREFBc0I7QUFLakU7SUFBaEIsYUFBYSxFQUFFO2tEQUFrQjtBQUt3QjtJQUF6RCxXQUFXLENBQXFCLGFBQWEsRUFBRSxRQUFRLENBQUM7c0RBQWdDO0FBS3hFO0lBQWhCLGFBQWEsRUFBRTtxREFBcUI7QUFLcEI7SUFBaEIsYUFBYSxFQUFFO3NEQUFzQjtBQUtGO0lBQW5DLFdBQVcsQ0FBUyxhQUFhLENBQUM7MERBQXdCO0FBVWQ7SUFBNUMsV0FBVyxDQUFRLGFBQWEsRUFBRSxRQUFRLENBQUM7aURBQXVCO0FBS25EO0lBQWYsWUFBWSxFQUFFOzBEQUE2QjtBQUtpQjtJQUE1RCxhQUFhLEVBQUU7SUFBRSxXQUFXLENBQVcsYUFBYSxFQUFFLElBQUksQ0FBQztxREFBcUI7QUFLcEM7SUFBNUMsV0FBVyxDQUFTLGFBQWEsRUFBRSxPQUFPLENBQUM7NERBQTBCO0FBS1I7SUFBN0QsYUFBYSxFQUFFO0lBQUUsV0FBVyxDQUFXLGFBQWEsRUFBRSxLQUFLLENBQUM7bURBQW1CO0FBS25CO0lBQTVELGFBQWEsRUFBRTtJQUFFLFdBQVcsQ0FBVyxhQUFhLEVBQUUsSUFBSSxDQUFDOzBEQUEwQjtBQUs3QztJQUF4QyxXQUFXLENBQVMsYUFBYSxFQUFFLEdBQUcsQ0FBQzt5REFBdUI7QUFLVjtJQUFwRCxZQUFZLEVBQUU7SUFBRSxXQUFXLENBQVUsYUFBYSxDQUFDO3dEQUF1QjtBQU1wQztJQUF0QyxXQUFXLENBQVksYUFBYSxDQUFDOzBEQUEyQjtBQUtWO0lBQXRELFdBQVcsQ0FBVyxhQUFhLENBQUM7SUFBRSxhQUFhLEVBQUU7MERBQTBCO0FBS2xCO0lBQTdELFdBQVcsQ0FBVyxhQUFhLEVBQUUsS0FBSyxDQUFDO0lBQUUsYUFBYSxFQUFFO3FEQUFxQjtBQU05QztJQUFuQyxXQUFXLENBQVMsYUFBYSxDQUFDO3NEQUEyQjsyRkF0RzVELG1CQUFtQjtrQkFEL0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7OEJBTUEsSUFBSTtzQkFBNUIsS0FBSztnQkFLZ0UsU0FBUztzQkFBOUUsS0FBSztnQkFLb0IsS0FBSztzQkFBOUIsS0FBSztnQkFLNkQsU0FBUztzQkFBM0UsS0FBSztnQkFLb0IsUUFBUTtzQkFBakMsS0FBSztnQkFLb0IsU0FBUztzQkFBbEMsS0FBSztnQkFLdUMsYUFBYTtzQkFBekQsS0FBSztnQkFLRyxPQUFPO3NCQUFmLEtBQUs7Z0JBS3lELElBQUk7c0JBQWxFLEtBQUs7Z0JBS21CLGFBQWE7c0JBQXJDLEtBQUs7Z0JBS2dFLFFBQVE7c0JBQTdFLEtBQUs7Z0JBS2dELGVBQWU7c0JBQXBFLEtBQUs7Z0JBS2lFLE1BQU07c0JBQTVFLEtBQUs7Z0JBS2dFLGFBQWE7c0JBQWxGLEtBQUs7Z0JBSzRDLFlBQVk7c0JBQTdELEtBQUs7Z0JBS3dELFdBQVc7c0JBQXhFLEtBQUs7Z0JBTTBDLGFBQWE7c0JBQTVELEtBQUs7Z0JBSzBELGFBQWE7c0JBQTVFLEtBQUs7Z0JBS2lFLFFBQVE7c0JBQTlFLEtBQUs7Z0JBTXVDLFNBQVM7c0JBQXJELEtBQUs7O0FBa0ZSOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgWFBhcmVudElkZW50aXR5UHJvcGVydHksXHJcbiAgWERhdGFDb252ZXJ0LFxyXG4gIFhJbnB1dEJvb2xlYW4sXHJcbiAgWERhdGEsXHJcbiAgWEJvb2xlYW4sXHJcbiAgWFdpdGhDb25maWcsXHJcbiAgWFBvc2l0aW9uVG9wQm90dG9tLFxyXG4gIFhTaXplLFxyXG4gIFhJbnB1dE51bWJlcixcclxuICBYTnVtYmVyLFxyXG4gIFhUZW1wbGF0ZVxyXG59IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBJbnB1dCwgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYQ29udHJvbFZhbHVlQWNjZXNzb3IsIFhGb3JtT3B0aW9uIH0gZnJvbSAnQG5nLW5lc3QvdWkvYmFzZS1mb3JtJztcclxuXHJcbi8qKlxyXG4gKiBUcmVlIFNlbGVjdFxyXG4gKiBAc2VsZWN0b3IgeC10cmVlLXNlbGVjdFxyXG4gKiBAZGVjb3JhdG9yIGNvbXBvbmVudFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFhUcmVlU2VsZWN0UHJlZml4ID0gJ3gtdHJlZS1zZWxlY3QnO1xyXG5jb25zdCBYX0NPTkZJR19OQU1FID0gJ3RyZWVTZWxlY3QnO1xyXG5cclxuLyoqXHJcbiAqIFRyZWUgU2VsZWN0IFByb3BlcnR5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnIH0pXHJcbmV4cG9ydCBjbGFzcyBYVHJlZVNlbGVjdFByb3BlcnR5IGV4dGVuZHMgWENvbnRyb2xWYWx1ZUFjY2Vzc29yPGFueT4ge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnmlbDmja5cclxuICAgKiBAZW5fVVMgTm9kZSBkYXRhXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhEYXRhQ29udmVydCgpIGRhdGE6IFhEYXRhPFhUcmVlU2VsZWN0Tm9kZT4gPSBbXTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5riF6Zmk5oyJ6ZKuXHJcbiAgICogQGVuX1VTIENsZWFyIGJ1dHRvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYQm9vbGVhbj4oWF9DT05GSUdfTkFNRSwgdHJ1ZSkgQFhJbnB1dEJvb2xlYW4oKSBjbGVhcmFibGU/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5byC5q2l5Yqg6L29XHJcbiAgICogQGVuX1VTIEFzeW5jaHJvbm91cyBsb2FkaW5nXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBhc3luYz86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlsZXnpLrmlrnkvY1cclxuICAgKiBAZW5fVVMgRGlzcGxheSBwb3NpdGlvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYUG9zaXRpb25Ub3BCb3R0b20+KFhfQ09ORklHX05BTUUsICdib3R0b20nKSBwbGFjZW1lbnQ/OiBYUG9zaXRpb25Ub3BCb3R0b207XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWkmumAieWKn+iDvVxyXG4gICAqIEBlbl9VUyBNdWx0aXBsZSBjaG9pY2VcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIG11bHRpcGxlPzogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWkmumAiea3u+WKoOWFqOmAieWKn+iDvVxyXG4gICAqIEBlbl9VUyBNdWx0aSBjaG9pY2UgdG8gYWRkIGZ1bGwgc2VsZWN0aW9uIGZ1bmN0aW9uXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBzZWxlY3RBbGw/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5YWo6YCJ55qE5paH5a2XXHJcbiAgICogQGVuX1VTIFNlbGVjdGVkIGFsbCB0ZXh0XHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPHN0cmluZz4oWF9DT05GSUdfTkFNRSkgc2VsZWN0QWxsVGV4dD86IHN0cmluZztcclxuICAvKipcclxuICAgKiBAemhfQ04g6IqC54K55qih5p2/XHJcbiAgICogQGVuX1VTIE5vZGUgdGVtcGxhdGVcclxuICAgKi9cclxuICBASW5wdXQoKSBub2RlVHBsPzogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5bC65a+4XHJcbiAgICogQGVuX1VTIFNpemVcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WFNpemU+KFhfQ09ORklHX05BTUUsICdtZWRpdW0nKSBvdmVycmlkZSBzaXplITogWFNpemU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOm7mOiupOWxleW8gOeahOWxgue6p1xyXG4gICAqIEBlbl9VUyBEZWZhdWx0IGV4cGFuZGVkIGxldmVsXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dE51bWJlcigpIGV4cGFuZGVkTGV2ZWw6IFhOdW1iZXIgPSAtMTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pi+56S66L655qGGXHJcbiAgICogQGVuX1VTIERpc3BsYXkgQm9yZGVyXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBAWFdpdGhDb25maWc8WEJvb2xlYW4+KFhfQ09ORklHX05BTUUsIHRydWUpIGJvcmRlcmVkITogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOS4i+aLieahhueahOacgOWkp+mrmOW6plxyXG4gICAqIEBlbl9VUyBUaGUgYmlnZ2VzdCBoZWlnaHQgb2YgdGhlIGRyb3AtZG93biBib3hcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8c3RyaW5nPihYX0NPTkZJR19OQU1FLCAnMTJyZW0nKSBwb3J0YWxNYXhIZWlnaHQhOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOi+k+WFpeaQnOe0olxyXG4gICAqIEBlbl9VUyBJbnB1dCBzZWFyY2hcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIEBYV2l0aENvbmZpZzxYQm9vbGVhbj4oWF9DT05GSUdfTkFNRSwgZmFsc2UpIHNlYXJjaCE6IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDljLnphY3ljLrliIblpKflsI/lhplcclxuICAgKiBAZW5fVVMgQ2FzZS1zZW5zaXRpdmVcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIEBYV2l0aENvbmZpZzxYQm9vbGVhbj4oWF9DT05GSUdfTkFNRSwgdHJ1ZSkgY2FzZVNlbnNpdGl2ZSE6IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDovpPlhaXlu7bov5/miafooYzml7bpl7TvvIxtc1xyXG4gICAqIEBlbl9VUyBFbnRlciBhIGRlbGF5IGV4ZWN1dGlvbiB0aW1lLCBtc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxudW1iZXI+KFhfQ09ORklHX05BTUUsIDIwMCkgZGVib3VuY2VUaW1lPzogbnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlpJrpgInml7bmmL7npLrnmoTpgInkuK3mlbDmja7kuKrmlbDvvIzlhbblroPnmoTlnKjmm7TlpJrkuK3mmL7npLrvvIzpu5jorqTlhajpg6jmmL7npLpcclxuICAgKiBAZW5fVVMgRGlzcGxheSB0aGUgbnVtYmVyIG9mIGRhdGEgaW4gdGhlIG1heGltdW0gZWxlY3Rpb24sIGFuZCB0aGUgb3RoZXJzIGFyZSBkaXNwbGF5ZWQgaW4gbW9yZSBvZiB0aGVtXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dE51bWJlcigpIEBYV2l0aENvbmZpZzxYTnVtYmVyPihYX0NPTkZJR19OQU1FKSBtYXhUYWdDb3VudD86IFhOdW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWkmumAieaXtuaYvuekuueahOS4quaVsOi2hei/h+aMh+WumuS4quaVsO+8jOaYvuekuueahOaWh+Wtl+aooeeJiFxyXG4gICAqIEBlbl9VUyBUaGUgbnVtYmVyIGRpc3BsYXllZCB3aGVuIG11bHRpcGxlIGNob2ljZXMgZXhjZWVkcyB0aGUgc3BlY2lmaWVkIG51bWJlciwgdGhlIGRpc3BsYXllZCB0ZXh0IHRlbXBsYXRlIGRpc3BsYXllZFxyXG4gICAqIEBkZWZhdWx0ICfmm7TlpJp7e3N1cnBsdXN9feS4qumAieS4rSdcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WFRlbXBsYXRlPihYX0NPTkZJR19OQU1FKSBtYXhUYWdDb250ZW50PzogWFRlbXBsYXRlO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvIDlkK/omZrmi5/mu5rliqhcclxuICAgKiBAZW5fVVMgVHVybiBvbiB2aXJ0dWFsIHNjcm9sbGluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYQm9vbGVhbj4oWF9DT05GSUdfTkFNRSkgQFhJbnB1dEJvb2xlYW4oKSB2aXJ0dWFsU2Nyb2xsITogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuueahOWAvOWxleekuui3r+W+hCBBQSA+IEJCID4gQ0NcclxuICAgKiBAZW5fVVMgRGlzcGxheSB2YWx1ZSBkaXNwbGF5IHBhdGguIEFBID4gQkIgPiBDQ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYQm9vbGVhbj4oWF9DT05GSUdfTkFNRSwgZmFsc2UpIEBYSW5wdXRCb29sZWFuKCkgc2hvd1BhdGghOiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6Lev5b6E5YiG6ZqU56ymXHJcbiAgICogQGVuX1VTIFBhdGggc2VwYXJhdG9yXHJcbiAgICogQGRlZmF1bHQgJyAvICdcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8c3RyaW5nPihYX0NPTkZJR19OQU1FKSBzZXBhcmF0b3I6IHN0cmluZyA9ICcgLyAnO1xyXG59XHJcblxyXG4vKipcclxuICogVHJlZSBTZWxlY3QgT3B0aW9uXHJcbiAqIEB1bmRvY3VtZW50IHRydWVcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRyZWVTZWxlY3RPcHRpb24gZXh0ZW5kcyBYRm9ybU9wdGlvbiB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOiKgueCueaVsOaNrlxyXG4gICAqIEBlbl9VUyBOb2RlIGRhdGFcclxuICAgKi9cclxuICBkYXRhPzogWERhdGE8WFRyZWVTZWxlY3ROb2RlPjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5byC5q2l5Yqg6L29XHJcbiAgICogQGVuX1VTIEFzeW5jaHJvbm91cyBsb2FkaW5nXHJcbiAgICovXHJcbiAgYXN5bmM/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5bGV56S65pa55L2NXHJcbiAgICogQGVuX1VTIERpc3BsYXkgcG9zaXRpb25cclxuICAgKi9cclxuICBwbGFjZW1lbnQ/OiBYUG9zaXRpb25Ub3BCb3R0b207XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWkmumAieWKn+iDvVxyXG4gICAqIEBlbl9VUyBNdWx0aXBsZSBjaG9pY2VcclxuICAgKi9cclxuICBtdWx0aXBsZT86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlpJrpgInmt7vliqDlhajpgInlip/og71cclxuICAgKiBAZW5fVVMgTXVsdGkgY2hvaWNlIHRvIGFkZCBmdWxsIHNlbGVjdGlvbiBmdW5jdGlvblxyXG4gICAqL1xyXG4gIHNlbGVjdEFsbD86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlhajpgInnmoTmloflrZdcclxuICAgKiBAZW5fVVMgU2VsZWN0ZWQgYWxsIHRleHRcclxuICAgKi9cclxuICBzZWxlY3RBbGxUZXh0Pzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoioLngrnmqKHmnb9cclxuICAgKiBAZW5fVVMgTm9kZSB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIG5vZGVUcGw/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlsLrlr7hcclxuICAgKiBAZW5fVVMgU2l6ZVxyXG4gICAqL1xyXG4gIHNpemU/OiBYU2l6ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pi+56S66L655qGGXHJcbiAgICogQGVuX1VTIERpc3BsYXkgQm9yZGVyXHJcbiAgICovXHJcbiAgYm9yZGVyZWQ/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5LiL5ouJ5qGG55qE5pyA5aSn6auY5bqmXHJcbiAgICogQGVuX1VTIFRoZSBiaWdnZXN0IGhlaWdodCBvZiB0aGUgZHJvcC1kb3duIGJveFxyXG4gICAqL1xyXG4gIHBvcnRhbE1heEhlaWdodD86IHN0cmluZztcclxuICAvKipcclxuICAgKiBAemhfQ04g6L6T5YWl5pCc57SiXHJcbiAgICogQGVuX1VTIElucHV0IHNlYXJjaFxyXG4gICAqL1xyXG4gIHNlYXJjaD86IFhCb29sZWFuO1xyXG59XHJcblxyXG4vKipcclxuICogQHpoX0NOIFRyZWUgU2VsZWN0IOaVsOaNruWvueixoVxyXG4gKiBAZW5fVVMgVHJlZSBTZWxlY3QgZGF0YSBvYmplY3RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgWFRyZWVTZWxlY3ROb2RlIGV4dGVuZHMgWFBhcmVudElkZW50aXR5UHJvcGVydHk8WFRyZWVTZWxlY3ROb2RlPiB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW9k+WJjeiKgueCuei3r+W+hOWQjeensFxyXG4gICAqIEBlbl9VUyBDdXJyZW50IG5vZGUgcGF0aCBuYW1lXHJcbiAgICovXHJcbiAgcGF0aD86IHN0cmluZztcclxuICAvKipcclxuICAgKiBAemhfQ04g6Ieq5a6a5LmJ5bGe5oCnXHJcbiAgICogQGVuX1VTIEN1c3RvbSBhdHRyaWJ1dGVcclxuICAgKi9cclxuICBbcHJvcGVydHk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRyZWUgU2VsZWN0IFBvcnRhbFxyXG4gKiBAc2VsZWN0b3IgeC10cmVlLXNlbGVjdC1wb3J0YWxcclxuICogQGRlY29yYXRvciBjb21wb25lbnRcclxuICovXHJcbmV4cG9ydCBjb25zdCBYVHJlZVNlbGVjdFBvcnRhbFByZWZpeCA9ICd4LXRyZWUtc2VsZWN0LXBvcnRhbCc7XHJcbiJdfQ==
@@ -15,6 +15,8 @@ import * as i5 from "@angular/common";
15
15
  import * as i6 from "@ng-nest/ui/outlet";
16
16
  import * as i7 from "@ng-nest/ui/button";
17
17
  import * as i8 from "@ng-nest/ui/icon";
18
+ import * as i9 from "@ng-nest/ui/image";
19
+ import * as i10 from "@ng-nest/ui/progress";
18
20
  export class XUploadComponent extends XUploadProperty {
19
21
  constructor(renderer, elementRef, http, cdr, portalService, viewContainerRef, i18n, configService) {
20
22
  super();
@@ -72,7 +74,8 @@ export class XUploadComponent extends XUploadProperty {
72
74
  if (typeof input === 'undefined' || input.files?.length === 0)
73
75
  return;
74
76
  let files = [];
75
- for (let i = 0; i < input.files.length; i++) {
77
+ let max = this.maxLimit ? Number(this.maxLimit) : input.files.length;
78
+ for (let i = 0; i < max; i++) {
76
79
  let file = input.files.item(i);
77
80
  file.state = 'ready';
78
81
  files = [...files, file];
@@ -132,6 +135,7 @@ export class XUploadComponent extends XUploadProperty {
132
135
  reader.readAsText(blob, 'utf-8');
133
136
  reader.onload = () => {
134
137
  file.url = JSON.parse(reader.result)[0];
138
+ console.log(file);
135
139
  if (index === -1) {
136
140
  // this.value.push(file);
137
141
  }
@@ -216,9 +220,8 @@ export class XUploadComponent extends XUploadProperty {
216
220
  destroyPortal() {
217
221
  this.portal?.overlayRef?.dispose();
218
222
  }
219
- imgError(event, file) {
223
+ imgError(_event, file) {
220
224
  file.state = 'error';
221
- console.error(event.error);
222
225
  this.cdr.detectChanges();
223
226
  }
224
227
  imgLoad(file) {
@@ -227,12 +230,12 @@ export class XUploadComponent extends XUploadProperty {
227
230
  }
228
231
  }
229
232
  /** @nocollapse */ XUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XUploadComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.HttpClient }, { token: i0.ChangeDetectorRef }, { token: i2.XPortalService }, { token: i0.ViewContainerRef }, { token: i3.XI18nService }, { token: i4.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
230
- /** @nocollapse */ XUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XUploadComponent, selector: "x-upload", providers: [XValueAccessor(XUploadComponent)], viewQueries: [{ propertyName: "file", first: true, predicate: ["file"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div #upload class=\"x-upload x-upload-{{ type }}\" [class.x-disabled]=\"disabled\">\r\n <input type=\"file\" #file (change)=\"change($event)\" [attr.accept]=\"accept\" [multiple]=\"multiple\" style=\"display: none\" />\r\n <div class=\"x-upload-buttons\" [class.x-upload-buttons-template]=\"isTemplateText\" (click)=\"uploadClick()\">\r\n <ng-container *xOutlet=\"getText\">\r\n <x-button icon=\"fto-upload\" [disabled]=\"disabled\" type=\"primary\">{{ getText }}</x-button>\r\n </ng-container>\r\n </div>\r\n <ng-container *xOutlet=\"filesTpl; context: { $files: files }\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <ul class=\"x-upload-files\">\r\n <li *ngFor=\"let file of files; index as i; trackBy: trackByItem\" [class.x-upload-disabled]=\"!download\">\r\n <ng-container *ngIf=\"download\">\r\n <a [href]=\"file.url\" target=\"_blank\" [title]=\"file.name\">\r\n <x-icon type=\"fto-file-text\"></x-icon>\r\n <span class=\"x-upload-filename\">{{ file.name }}</span>\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"!download\">\r\n <a>\r\n <x-icon type=\"fto-file-text\"></x-icon>\r\n <span class=\"x-upload-filename\">{{ file.name }}</span>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-container [ngSwitch]=\"file.state\">\r\n <x-icon class=\"x-upload-state\" *ngSwitchCase=\"'ready'\" type=\"fto-clock\"></x-icon>\r\n <span class=\"x-upload-percent\" *ngSwitchCase=\"'uploading'\">{{ file.percent }}%</span>\r\n <x-icon class=\"x-upload-state success\" *ngSwitchCase=\"'success'\" type=\"fto-check\"></x-icon>\r\n <x-icon class=\"x-upload-state error\" *ngSwitchCase=\"'error'\" type=\"fto-info\"></x-icon>\r\n </ng-container>\r\n <x-button *ngIf=\"file.state !== 'uploading'\" icon=\"fto-x\" (click)=\"remove(file, i)\" onlyIcon closable size=\"mini\"></x-button>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'img'\">\r\n <div class=\"x-upload-img-item {{ file.state }}\" *ngFor=\"let file of files; index as i; trackBy: trackByItem\" [title]=\"file.name\">\r\n <div class=\"x-upload-img-inner\">\r\n <img [src]=\"file.url\" (load)=\"imgLoad(file)\" (error)=\"imgError($event, file)\" />\r\n <x-icon type=\"fto-image\"></x-icon>\r\n <span *ngIf=\"file.state == 'uploading'\">{{ file.percent }}%</span>\r\n </div>\r\n <div class=\"x-upload-img-btns\">\r\n <div class=\"x-upload-img-btns-inner\">\r\n <ng-container [ngSwitch]=\"file.state\">\r\n <x-icon class=\"x-upload-state\" *ngSwitchCase=\"'ready'\" type=\"fto-clock\"></x-icon>\r\n <x-icon class=\"x-upload-state error\" *ngSwitchCase=\"'error'\" type=\"fto-info\"></x-icon>\r\n <a [href]=\"file.url\" target=\"_blank\" *ngSwitchCase=\"'success'\">\r\n <x-icon type=\"fto-eye\"></x-icon>\r\n </a>\r\n </ng-container>\r\n <x-icon *ngIf=\"imgCut && file.state === 'success'\" type=\"fto-crop\" (click)=\"onImgCut(file, i)\"></x-icon>\r\n <x-icon *ngIf=\"file.state !== 'uploading'\" type=\"fto-trash-2\" (click)=\"remove(file, i)\"></x-icon>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n", styles: [".x-upload{margin:0;padding:0;color:var(--x-text);font-size:var(--x-font-size)}.x-upload-buttons{display:inline-flex}.x-upload-buttons>.x-button:not(:first-child){margin-left:.4rem}.x-upload-buttons-template{cursor:pointer}.x-upload-files{margin-top:.4rem}.x-upload-files>li{padding:0 .2rem;height:calc(var(--x-font-size) + .6rem);line-height:calc(var(--x-font-size) + .6rem);display:flex;align-items:center;overflow:hidden;cursor:pointer;border-radius:var(--x-border-radius)}.x-upload-files>li .x-icon{color:var(--x-text-400);font-size:1rem}.x-upload-files>li .x-icon.x-upload-state.success{color:var(--x-success)}.x-upload-files>li .x-icon.x-upload-state.error{color:var(--x-danger)}.x-upload-files>li a{flex:1;display:flex;align-items:center;height:calc(var(--x-font-size) + .6rem);line-height:calc(var(--x-font-size) + .6rem);color:inherit;text-decoration:none;overflow:hidden}.x-upload-files>li span.x-upload-filename{margin-left:.2rem;flex:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.x-upload-files>li span.x-upload-percent{color:var(--x-text-400)}.x-upload-files>li>.x-button{display:none;padding:0}.x-upload-files>li:not(:first-child){margin-top:.2rem}.x-upload-files>li.x-upload-disabled{cursor:default}.x-upload-files>li.x-upload-disabled>a{cursor:default}.x-upload-files>li:hover:not(.x-upload-disabled){color:var(--x-primary);background-color:var(--x-background)}.x-upload-files>li:hover>.x-button{display:inline-block}.x-upload-files>li:hover>.x-upload-state{display:none}.x-upload-img{display:flex;flex-wrap:wrap}.x-upload-img .x-upload-buttons-template{display:inline-flex;align-items:center;justify-content:center;flex-direction:column;width:6.25rem;height:6.25rem;margin-right:.5rem;margin-bottom:.5rem;border:var(--x-border-width) dashed var(--x-border);background:var(--x-background);border-radius:var(--x-border-radius);transition:border-color var(--x-animation-duration-base)}.x-upload-img .x-upload-buttons-template:hover{border-color:var(--x-primary)}.x-upload-img-item{height:6.25rem;width:6.25rem;padding:.325rem;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);transition:border-color var(--x-animation-duration-base);margin-right:.5rem;margin-bottom:.5rem;position:relative;display:flex;align-items:center;justify-content:center}.x-upload-img-item .x-upload-img-inner{height:100%;width:100%;overflow:hidden;display:flex;align-items:center;justify-content:center;flex-direction:column}.x-upload-img-item .x-upload-img-inner>img{width:100%;border-radius:var(--x-border-radius)}.x-upload-img-item .x-upload-img-inner>x-icon{display:none;font-size:3rem;color:var(--x-danger)}.x-upload-img-item.error{border-color:var(--x-danger)}.x-upload-img-item.error .x-upload-img-inner>img{display:none}.x-upload-img-item.error .x-upload-img-inner>x-icon{display:inherit}.x-upload-img-item:hover .x-upload-img-btns{background-color:#00000073}.x-upload-img-item:hover .x-upload-img-btns-inner{display:initial}.x-upload-img-btns{position:absolute;height:100%;width:100%;display:flex;align-items:center;justify-content:center;border-radius:var(--x-border-radius);background-color:#0000;transition:all var(--x-animation-duration-base)}.x-upload-img-btns x-icon{cursor:pointer;font-size:1rem;padding:.25rem;color:#ffffffb3}.x-upload-img-btns x-icon:hover{color:#fff}.x-upload-img-btns-inner{display:none}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: i7.XButtonComponent, selector: "x-button" }, { kind: "component", type: i8.XIconComponent, selector: "x-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
233
+ /** @nocollapse */ XUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XUploadComponent, selector: "x-upload", providers: [XValueAccessor(XUploadComponent)], viewQueries: [{ propertyName: "file", first: true, predicate: ["file"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div #upload class=\"x-upload x-upload-{{ type }}\" [class.x-disabled]=\"disabled\">\r\n <input type=\"file\" #file (change)=\"change($event)\" [attr.accept]=\"accept\" [multiple]=\"multiple\" style=\"display: none\" />\r\n\r\n <ng-container *xOutlet=\"filesTpl; context: { $files: files }\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <ng-container *ngTemplateOutlet=\"uploadBtnTpl\"></ng-container>\r\n <ul class=\"x-upload-files\">\r\n <li *ngFor=\"let file of files; index as i; trackBy: trackByItem\" [class.x-upload-disabled]=\"!download\">\r\n <ng-container *ngIf=\"download\">\r\n <a [href]=\"file.url\" target=\"_blank\" [title]=\"file.name\">\r\n <x-icon type=\"fto-file-text\"></x-icon>\r\n <span class=\"x-upload-filename\">{{ file.name }}</span>\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"!download\">\r\n <a>\r\n <x-icon type=\"fto-file-text\"></x-icon>\r\n <span class=\"x-upload-filename\">{{ file.name }}</span>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-container [ngSwitch]=\"file.state\">\r\n <x-icon class=\"x-upload-state\" *ngSwitchCase=\"'ready'\" type=\"fto-clock\"></x-icon>\r\n <span class=\"x-upload-percent\" *ngSwitchCase=\"'uploading'\">{{ file.percent }}%</span>\r\n <x-icon class=\"x-upload-state success\" *ngSwitchCase=\"'success'\" type=\"fto-check\"></x-icon>\r\n <x-icon class=\"x-upload-state error\" *ngSwitchCase=\"'error'\" type=\"fto-info\"></x-icon>\r\n </ng-container>\r\n <x-button *ngIf=\"file.state !== 'uploading'\" icon=\"fto-x\" (click)=\"remove(file, i)\" onlyIcon closable size=\"mini\"></x-button>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'img'\">\r\n <x-image-group>\r\n <ng-container *ngFor=\"let file of files; index as i; trackBy: trackByItem\">\r\n <x-image\r\n [src]=\"file.url\"\r\n (load)=\"imgLoad(file)\"\r\n (error)=\"imgError($event, file)\"\r\n class=\"{{ file.state }}\"\r\n [previewTpl]=\"previewTpl\"\r\n [fallback]=\"imgFallback\"\r\n >\r\n </x-image>\r\n <ng-template #previewTpl let-image=\"$image\">\r\n <div class=\"x-upload-uploading\" *ngIf=\"file.state == 'uploading'\">\r\n <x-progress [percent]=\"file.percent!\" info=\"false\"></x-progress>\r\n </div>\r\n <div class=\"x-image-overlay\">\r\n <ng-container [ngSwitch]=\"file.state\">\r\n <x-icon class=\"x-upload-state\" *ngSwitchCase=\"'ready'\" type=\"fto-clock\"></x-icon>\r\n <x-icon type=\"fto-eye\" *ngSwitchCase=\"'success'\" (click)=\"image.onPreview()\"></x-icon>\r\n </ng-container>\r\n <x-icon *ngIf=\"imgCut && file.state === 'success'\" type=\"fto-crop\" (click)=\"onImgCut(file, i)\"></x-icon>\r\n <x-icon *ngIf=\"file.state !== 'uploading'\" type=\"fto-trash-2\" (click)=\"remove(file, i)\"></x-icon>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"uploadBtnTpl\"></ng-container>\r\n </x-image-group>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #uploadBtnTpl>\r\n <div class=\"x-upload-buttons\" [class.x-upload-buttons-template]=\"isTemplateText\" (click)=\"uploadClick()\">\r\n <ng-container *xOutlet=\"getText\">\r\n <x-button icon=\"fto-upload\" [disabled]=\"disabled\" type=\"primary\">{{ getText }}</x-button>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: [".x-upload{margin:0;padding:0;color:var(--x-text);font-size:var(--x-font-size)}.x-upload-buttons{display:inline-flex}.x-upload-buttons>.x-button:not(:first-child){margin-left:.4rem}.x-upload-buttons-template{cursor:pointer}.x-upload-files{margin-top:.4rem}.x-upload-files>li{padding:0 .2rem;height:calc(var(--x-font-size) + .6rem);line-height:calc(var(--x-font-size) + .6rem);display:flex;align-items:center;overflow:hidden;cursor:pointer;border-radius:var(--x-border-radius)}.x-upload-files>li .x-icon{color:var(--x-text-400);font-size:1rem}.x-upload-files>li .x-icon.x-upload-state.success{color:var(--x-success)}.x-upload-files>li .x-icon.x-upload-state.error{color:var(--x-danger)}.x-upload-files>li a{flex:1;display:flex;align-items:center;height:calc(var(--x-font-size) + .6rem);line-height:calc(var(--x-font-size) + .6rem);color:inherit;text-decoration:none;overflow:hidden}.x-upload-files>li span.x-upload-filename{margin-left:.2rem;flex:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.x-upload-files>li span.x-upload-percent{color:var(--x-text-400)}.x-upload-files>li>.x-button{display:none;padding:0}.x-upload-files>li:not(:first-child){margin-top:.2rem}.x-upload-files>li.x-upload-disabled{cursor:default}.x-upload-files>li.x-upload-disabled>a{cursor:default}.x-upload-files>li:hover:not(.x-upload-disabled){color:var(--x-primary);background-color:var(--x-background)}.x-upload-files>li:hover>.x-button{display:inline-block}.x-upload-files>li:hover>.x-upload-state{display:none}.x-upload-img{display:flex;flex-wrap:wrap}.x-upload-img .x-upload-buttons-template{display:inline-flex;align-items:center;justify-content:center;flex-direction:column;width:6.25rem;height:6.25rem;margin-right:.5rem;margin-bottom:.5rem;border:var(--x-border-width) dashed var(--x-border);background:var(--x-background);border-radius:var(--x-border-radius);transition:border-color var(--x-animation-duration-base)}.x-upload-img .x-upload-buttons-template:hover{border-color:var(--x-primary)}.x-upload-img .x-image{height:6.25rem;width:6.25rem;padding:.325rem;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);transition:border-color var(--x-animation-duration-base);margin-right:.5rem;margin-bottom:.5rem;position:relative;display:flex;align-items:center;justify-content:center}.x-upload-img .x-image-overlay x-icon{font-size:1rem;color:#fffc;padding:.25rem;transition:color var(--x-animation-duration-base)}.x-upload-img .x-image-overlay x-icon:hover{color:#fff}.x-upload-img x-image.error .x-image{border-color:var(--x-danger)}.x-upload-img x-image.error .x-image-error-icon{color:var(--x-danger)}.x-upload-uploading{position:absolute;margin-top:3rem;width:calc(100% - 1rem)}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: i7.XButtonComponent, selector: "x-button" }, { kind: "component", type: i8.XIconComponent, selector: "x-icon" }, { kind: "component", type: i9.XImageComponent, selector: "x-image" }, { kind: "component", type: i9.XImageGroupComponent, selector: "x-image-group" }, { kind: "component", type: i10.XProgressComponent, selector: "x-progress" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
231
234
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XUploadComponent, decorators: [{
232
235
  type: Component,
233
- args: [{ selector: `${XUploadPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XUploadComponent)], template: "<div #upload class=\"x-upload x-upload-{{ type }}\" [class.x-disabled]=\"disabled\">\r\n <input type=\"file\" #file (change)=\"change($event)\" [attr.accept]=\"accept\" [multiple]=\"multiple\" style=\"display: none\" />\r\n <div class=\"x-upload-buttons\" [class.x-upload-buttons-template]=\"isTemplateText\" (click)=\"uploadClick()\">\r\n <ng-container *xOutlet=\"getText\">\r\n <x-button icon=\"fto-upload\" [disabled]=\"disabled\" type=\"primary\">{{ getText }}</x-button>\r\n </ng-container>\r\n </div>\r\n <ng-container *xOutlet=\"filesTpl; context: { $files: files }\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <ul class=\"x-upload-files\">\r\n <li *ngFor=\"let file of files; index as i; trackBy: trackByItem\" [class.x-upload-disabled]=\"!download\">\r\n <ng-container *ngIf=\"download\">\r\n <a [href]=\"file.url\" target=\"_blank\" [title]=\"file.name\">\r\n <x-icon type=\"fto-file-text\"></x-icon>\r\n <span class=\"x-upload-filename\">{{ file.name }}</span>\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"!download\">\r\n <a>\r\n <x-icon type=\"fto-file-text\"></x-icon>\r\n <span class=\"x-upload-filename\">{{ file.name }}</span>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-container [ngSwitch]=\"file.state\">\r\n <x-icon class=\"x-upload-state\" *ngSwitchCase=\"'ready'\" type=\"fto-clock\"></x-icon>\r\n <span class=\"x-upload-percent\" *ngSwitchCase=\"'uploading'\">{{ file.percent }}%</span>\r\n <x-icon class=\"x-upload-state success\" *ngSwitchCase=\"'success'\" type=\"fto-check\"></x-icon>\r\n <x-icon class=\"x-upload-state error\" *ngSwitchCase=\"'error'\" type=\"fto-info\"></x-icon>\r\n </ng-container>\r\n <x-button *ngIf=\"file.state !== 'uploading'\" icon=\"fto-x\" (click)=\"remove(file, i)\" onlyIcon closable size=\"mini\"></x-button>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'img'\">\r\n <div class=\"x-upload-img-item {{ file.state }}\" *ngFor=\"let file of files; index as i; trackBy: trackByItem\" [title]=\"file.name\">\r\n <div class=\"x-upload-img-inner\">\r\n <img [src]=\"file.url\" (load)=\"imgLoad(file)\" (error)=\"imgError($event, file)\" />\r\n <x-icon type=\"fto-image\"></x-icon>\r\n <span *ngIf=\"file.state == 'uploading'\">{{ file.percent }}%</span>\r\n </div>\r\n <div class=\"x-upload-img-btns\">\r\n <div class=\"x-upload-img-btns-inner\">\r\n <ng-container [ngSwitch]=\"file.state\">\r\n <x-icon class=\"x-upload-state\" *ngSwitchCase=\"'ready'\" type=\"fto-clock\"></x-icon>\r\n <x-icon class=\"x-upload-state error\" *ngSwitchCase=\"'error'\" type=\"fto-info\"></x-icon>\r\n <a [href]=\"file.url\" target=\"_blank\" *ngSwitchCase=\"'success'\">\r\n <x-icon type=\"fto-eye\"></x-icon>\r\n </a>\r\n </ng-container>\r\n <x-icon *ngIf=\"imgCut && file.state === 'success'\" type=\"fto-crop\" (click)=\"onImgCut(file, i)\"></x-icon>\r\n <x-icon *ngIf=\"file.state !== 'uploading'\" type=\"fto-trash-2\" (click)=\"remove(file, i)\"></x-icon>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n", styles: [".x-upload{margin:0;padding:0;color:var(--x-text);font-size:var(--x-font-size)}.x-upload-buttons{display:inline-flex}.x-upload-buttons>.x-button:not(:first-child){margin-left:.4rem}.x-upload-buttons-template{cursor:pointer}.x-upload-files{margin-top:.4rem}.x-upload-files>li{padding:0 .2rem;height:calc(var(--x-font-size) + .6rem);line-height:calc(var(--x-font-size) + .6rem);display:flex;align-items:center;overflow:hidden;cursor:pointer;border-radius:var(--x-border-radius)}.x-upload-files>li .x-icon{color:var(--x-text-400);font-size:1rem}.x-upload-files>li .x-icon.x-upload-state.success{color:var(--x-success)}.x-upload-files>li .x-icon.x-upload-state.error{color:var(--x-danger)}.x-upload-files>li a{flex:1;display:flex;align-items:center;height:calc(var(--x-font-size) + .6rem);line-height:calc(var(--x-font-size) + .6rem);color:inherit;text-decoration:none;overflow:hidden}.x-upload-files>li span.x-upload-filename{margin-left:.2rem;flex:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.x-upload-files>li span.x-upload-percent{color:var(--x-text-400)}.x-upload-files>li>.x-button{display:none;padding:0}.x-upload-files>li:not(:first-child){margin-top:.2rem}.x-upload-files>li.x-upload-disabled{cursor:default}.x-upload-files>li.x-upload-disabled>a{cursor:default}.x-upload-files>li:hover:not(.x-upload-disabled){color:var(--x-primary);background-color:var(--x-background)}.x-upload-files>li:hover>.x-button{display:inline-block}.x-upload-files>li:hover>.x-upload-state{display:none}.x-upload-img{display:flex;flex-wrap:wrap}.x-upload-img .x-upload-buttons-template{display:inline-flex;align-items:center;justify-content:center;flex-direction:column;width:6.25rem;height:6.25rem;margin-right:.5rem;margin-bottom:.5rem;border:var(--x-border-width) dashed var(--x-border);background:var(--x-background);border-radius:var(--x-border-radius);transition:border-color var(--x-animation-duration-base)}.x-upload-img .x-upload-buttons-template:hover{border-color:var(--x-primary)}.x-upload-img-item{height:6.25rem;width:6.25rem;padding:.325rem;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);transition:border-color var(--x-animation-duration-base);margin-right:.5rem;margin-bottom:.5rem;position:relative;display:flex;align-items:center;justify-content:center}.x-upload-img-item .x-upload-img-inner{height:100%;width:100%;overflow:hidden;display:flex;align-items:center;justify-content:center;flex-direction:column}.x-upload-img-item .x-upload-img-inner>img{width:100%;border-radius:var(--x-border-radius)}.x-upload-img-item .x-upload-img-inner>x-icon{display:none;font-size:3rem;color:var(--x-danger)}.x-upload-img-item.error{border-color:var(--x-danger)}.x-upload-img-item.error .x-upload-img-inner>img{display:none}.x-upload-img-item.error .x-upload-img-inner>x-icon{display:inherit}.x-upload-img-item:hover .x-upload-img-btns{background-color:#00000073}.x-upload-img-item:hover .x-upload-img-btns-inner{display:initial}.x-upload-img-btns{position:absolute;height:100%;width:100%;display:flex;align-items:center;justify-content:center;border-radius:var(--x-border-radius);background-color:#0000;transition:all var(--x-animation-duration-base)}.x-upload-img-btns x-icon{cursor:pointer;font-size:1rem;padding:.25rem;color:#ffffffb3}.x-upload-img-btns x-icon:hover{color:#fff}.x-upload-img-btns-inner{display:none}\n"] }]
236
+ args: [{ selector: `${XUploadPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XUploadComponent)], template: "<div #upload class=\"x-upload x-upload-{{ type }}\" [class.x-disabled]=\"disabled\">\r\n <input type=\"file\" #file (change)=\"change($event)\" [attr.accept]=\"accept\" [multiple]=\"multiple\" style=\"display: none\" />\r\n\r\n <ng-container *xOutlet=\"filesTpl; context: { $files: files }\">\r\n <ng-container [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <ng-container *ngTemplateOutlet=\"uploadBtnTpl\"></ng-container>\r\n <ul class=\"x-upload-files\">\r\n <li *ngFor=\"let file of files; index as i; trackBy: trackByItem\" [class.x-upload-disabled]=\"!download\">\r\n <ng-container *ngIf=\"download\">\r\n <a [href]=\"file.url\" target=\"_blank\" [title]=\"file.name\">\r\n <x-icon type=\"fto-file-text\"></x-icon>\r\n <span class=\"x-upload-filename\">{{ file.name }}</span>\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"!download\">\r\n <a>\r\n <x-icon type=\"fto-file-text\"></x-icon>\r\n <span class=\"x-upload-filename\">{{ file.name }}</span>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-container [ngSwitch]=\"file.state\">\r\n <x-icon class=\"x-upload-state\" *ngSwitchCase=\"'ready'\" type=\"fto-clock\"></x-icon>\r\n <span class=\"x-upload-percent\" *ngSwitchCase=\"'uploading'\">{{ file.percent }}%</span>\r\n <x-icon class=\"x-upload-state success\" *ngSwitchCase=\"'success'\" type=\"fto-check\"></x-icon>\r\n <x-icon class=\"x-upload-state error\" *ngSwitchCase=\"'error'\" type=\"fto-info\"></x-icon>\r\n </ng-container>\r\n <x-button *ngIf=\"file.state !== 'uploading'\" icon=\"fto-x\" (click)=\"remove(file, i)\" onlyIcon closable size=\"mini\"></x-button>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'img'\">\r\n <x-image-group>\r\n <ng-container *ngFor=\"let file of files; index as i; trackBy: trackByItem\">\r\n <x-image\r\n [src]=\"file.url\"\r\n (load)=\"imgLoad(file)\"\r\n (error)=\"imgError($event, file)\"\r\n class=\"{{ file.state }}\"\r\n [previewTpl]=\"previewTpl\"\r\n [fallback]=\"imgFallback\"\r\n >\r\n </x-image>\r\n <ng-template #previewTpl let-image=\"$image\">\r\n <div class=\"x-upload-uploading\" *ngIf=\"file.state == 'uploading'\">\r\n <x-progress [percent]=\"file.percent!\" info=\"false\"></x-progress>\r\n </div>\r\n <div class=\"x-image-overlay\">\r\n <ng-container [ngSwitch]=\"file.state\">\r\n <x-icon class=\"x-upload-state\" *ngSwitchCase=\"'ready'\" type=\"fto-clock\"></x-icon>\r\n <x-icon type=\"fto-eye\" *ngSwitchCase=\"'success'\" (click)=\"image.onPreview()\"></x-icon>\r\n </ng-container>\r\n <x-icon *ngIf=\"imgCut && file.state === 'success'\" type=\"fto-crop\" (click)=\"onImgCut(file, i)\"></x-icon>\r\n <x-icon *ngIf=\"file.state !== 'uploading'\" type=\"fto-trash-2\" (click)=\"remove(file, i)\"></x-icon>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"uploadBtnTpl\"></ng-container>\r\n </x-image-group>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #uploadBtnTpl>\r\n <div class=\"x-upload-buttons\" [class.x-upload-buttons-template]=\"isTemplateText\" (click)=\"uploadClick()\">\r\n <ng-container *xOutlet=\"getText\">\r\n <x-button icon=\"fto-upload\" [disabled]=\"disabled\" type=\"primary\">{{ getText }}</x-button>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: [".x-upload{margin:0;padding:0;color:var(--x-text);font-size:var(--x-font-size)}.x-upload-buttons{display:inline-flex}.x-upload-buttons>.x-button:not(:first-child){margin-left:.4rem}.x-upload-buttons-template{cursor:pointer}.x-upload-files{margin-top:.4rem}.x-upload-files>li{padding:0 .2rem;height:calc(var(--x-font-size) + .6rem);line-height:calc(var(--x-font-size) + .6rem);display:flex;align-items:center;overflow:hidden;cursor:pointer;border-radius:var(--x-border-radius)}.x-upload-files>li .x-icon{color:var(--x-text-400);font-size:1rem}.x-upload-files>li .x-icon.x-upload-state.success{color:var(--x-success)}.x-upload-files>li .x-icon.x-upload-state.error{color:var(--x-danger)}.x-upload-files>li a{flex:1;display:flex;align-items:center;height:calc(var(--x-font-size) + .6rem);line-height:calc(var(--x-font-size) + .6rem);color:inherit;text-decoration:none;overflow:hidden}.x-upload-files>li span.x-upload-filename{margin-left:.2rem;flex:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.x-upload-files>li span.x-upload-percent{color:var(--x-text-400)}.x-upload-files>li>.x-button{display:none;padding:0}.x-upload-files>li:not(:first-child){margin-top:.2rem}.x-upload-files>li.x-upload-disabled{cursor:default}.x-upload-files>li.x-upload-disabled>a{cursor:default}.x-upload-files>li:hover:not(.x-upload-disabled){color:var(--x-primary);background-color:var(--x-background)}.x-upload-files>li:hover>.x-button{display:inline-block}.x-upload-files>li:hover>.x-upload-state{display:none}.x-upload-img{display:flex;flex-wrap:wrap}.x-upload-img .x-upload-buttons-template{display:inline-flex;align-items:center;justify-content:center;flex-direction:column;width:6.25rem;height:6.25rem;margin-right:.5rem;margin-bottom:.5rem;border:var(--x-border-width) dashed var(--x-border);background:var(--x-background);border-radius:var(--x-border-radius);transition:border-color var(--x-animation-duration-base)}.x-upload-img .x-upload-buttons-template:hover{border-color:var(--x-primary)}.x-upload-img .x-image{height:6.25rem;width:6.25rem;padding:.325rem;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);transition:border-color var(--x-animation-duration-base);margin-right:.5rem;margin-bottom:.5rem;position:relative;display:flex;align-items:center;justify-content:center}.x-upload-img .x-image-overlay x-icon{font-size:1rem;color:#fffc;padding:.25rem;transition:color var(--x-animation-duration-base)}.x-upload-img .x-image-overlay x-icon:hover{color:#fff}.x-upload-img x-image.error .x-image{border-color:var(--x-danger)}.x-upload-img x-image.error .x-image-error-icon{color:var(--x-danger)}.x-upload-uploading{position:absolute;margin-top:3rem;width:calc(100% - 1rem)}\n"] }]
234
237
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i2.XPortalService }, { type: i0.ViewContainerRef }, { type: i3.XI18nService }, { type: i4.XConfigService }]; }, propDecorators: { file: [{
235
238
  type: ViewChild,
236
239
  args: ['file', { static: true }]
237
240
  }] } });
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3VwbG9hZC91cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdXBsb2FkL3VwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsYUFBYSxFQUFFLFdBQVcsRUFBYSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUl2QixTQUFTLEVBSVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBZSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRyxPQUFPLEVBQWtCLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcvQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7QUFVdkQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGVBQWU7SUF3Qm5ELFlBQ1MsUUFBbUIsRUFDbkIsVUFBc0IsRUFDdEIsSUFBZ0IsRUFDUCxHQUFzQixFQUMvQixhQUE2QixFQUM3QixnQkFBa0MsRUFDbEMsSUFBa0IsRUFDbEIsYUFBNkI7UUFFcEMsS0FBSyxFQUFFLENBQUM7UUFURCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNQLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQy9CLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQUM3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFNBQUksR0FBSixJQUFJLENBQWM7UUFDbEIsa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBOUJ0QyxVQUFLLEdBQWtCLEVBQUUsQ0FBQztRQUMxQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGdCQUFXLEdBQWtCLEVBQUUsQ0FBQztRQUNoQyxXQUFNLEdBQWdCLEVBQUUsQ0FBQztRQVdqQixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQW1CekMsQ0FBQztJQTNCRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUlRLFVBQVUsQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBZUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTthQUNuQixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBcUIsQ0FBQyxFQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUMzQjthQUNBLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUNMLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLO1lBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDbkQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTztRQUN2QyxtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSztnQkFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztZQUNsQyxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFZO1FBQ2pCLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQzdDLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQ3RFLElBQUksS0FBSyxHQUFrQixFQUFFLENBQUM7UUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFJLEtBQUssQ0FBQyxLQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN6RCxJQUFJLElBQUksR0FBaUIsS0FBSyxDQUFDLEtBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztZQUN6RSxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztZQUNyQixLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMxQjtRQUNELElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDN0MsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLE9BQU8sRUFBRTtZQUNsQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNwQjthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxLQUFLLEVBQUU7WUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFpQixFQUFFLEtBQWE7UUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDdEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3pCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFpQixFQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM5QixRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQWdCLEVBQUUsUUFBUSxFQUFFO1lBQ25FLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFlBQVksRUFBRSxhQUFhO1NBQzVCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJO2FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQzthQUNaLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNaLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLElBQWMsRUFBRSxFQUFFO1lBQ25ELElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM1QixJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO2dCQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ2hCLHlCQUF5QjtpQkFDMUI7cUJBQU07b0JBQ0wsNEJBQTRCO29CQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztpQkFDMUI7Z0JBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUNGO2FBQ0EsU0FBUyxDQUNSLEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxFQUNELEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUNGLENBQUM7SUFDTixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQXFCLEVBQUUsSUFBaUIsRUFBRSxHQUFhO1FBQ3JFLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNsQixLQUFLLGFBQWEsQ0FBQyxJQUFJO2dCQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztnQkFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVCLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssYUFBYSxDQUFDLGNBQWM7Z0JBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDO2dCQUN6QixJQUFJLEtBQUssQ0FBQyxLQUFLO29CQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUIsT0FBTyxLQUFLLENBQUM7WUFDZixLQUFLLGFBQWEsQ0FBQyxRQUFRO2dCQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztnQkFDdkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLE9BQU8sUUFBUSxDQUFDO1NBQ25CO1FBQ0QsT0FBTztJQUNULENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYyxFQUFFLElBQWlCO1FBQzNDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQWlCLEVBQUUsS0FBYTtRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxzQkFBc0I7WUFDL0IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2QyxhQUFhLEVBQUU7Z0JBQ2IsVUFBVSxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQ2pDLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7YUFDeEQ7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQWlCLEVBQUUsS0FBYTtRQUMxQyxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQztRQUM3QyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFDMUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFO1lBQ25DLElBQUksRUFBRSxJQUFJO1lBQ1YsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckMsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDekMsVUFBVSxFQUFFLENBQUMsSUFBVSxFQUFFLEVBQUU7Z0JBQ3pCLE1BQU0sRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQWdCLENBQUM7Z0JBQzNFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO2dCQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM3QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWlCLEVBQUUsSUFBaUI7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7UUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQWlCO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7Z0lBeE9VLGdCQUFnQjtvSEFBaEIsZ0JBQWdCLG1DQUZoQixDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLDZKQzVCL0Msb2pIQTREQTsyRkQ5QmEsZ0JBQWdCO2tCQVI1QixTQUFTOytCQUNFLEdBQUcsYUFBYSxFQUFFLGlCQUdiLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxjQUFjLGtCQUFrQixDQUFDO3NTQUdSLElBQUk7c0JBQXhDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudFR5cGUsIEh0dHBSZXF1ZXN0LCBIdHRwRXZlbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFVwbG9hZFByZWZpeCwgWFVwbG9hZE5vZGUsIFhVcGxvYWRQcm9wZXJ0eSwgWFVwbG9hZFBvcnRhbFByZWZpeCB9IGZyb20gJy4vdXBsb2FkLnByb3BlcnR5JztcclxuaW1wb3J0IHsgWENvbmZpZ1NlcnZpY2UsIFhJc1RlbXBsYXRlUmVmIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFhJMThuU2VydmljZSwgWEkxOG5VcGxvYWQgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuaW1wb3J0IHsgWFBvcnRhbE92ZXJsYXlSZWYsIFhQb3J0YWxTZXJ2aWNlIH0gZnJvbSAnQG5nLW5lc3QvdWkvcG9ydGFsJztcclxuaW1wb3J0IHsgWFVwbG9hZFBvcnRhbENvbXBvbmVudCB9IGZyb20gJy4vdXBsb2FkLXBvcnRhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WFVwbG9hZFByZWZpeH1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VwbG9hZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWFVwbG9hZENvbXBvbmVudCldXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYVXBsb2FkQ29tcG9uZW50IGV4dGVuZHMgWFVwbG9hZFByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBmaWxlITogRWxlbWVudFJlZjtcclxuICBmaWxlczogWFVwbG9hZE5vZGVbXSA9IFtdO1xyXG4gIHNob3dVcGxvYWQgPSBmYWxzZTtcclxuICB1cGxvYWROb2RlczogWFVwbG9hZE5vZGVbXSA9IFtdO1xyXG4gIGxvY2FsZTogWEkxOG5VcGxvYWQgPSB7fTtcclxuICBwb3J0YWwhOiBYUG9ydGFsT3ZlcmxheVJlZjxYVXBsb2FkUG9ydGFsQ29tcG9uZW50PjtcclxuXHJcbiAgZ2V0IGdldFRleHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZXh0IHx8IHRoaXMubG9jYWxlLnVwbG9hZFRleHQ7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNUZW1wbGF0ZVRleHQoKSB7XHJcbiAgICByZXR1cm4gWElzVGVtcGxhdGVSZWYodGhpcy5nZXRUZXh0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IFhVcGxvYWROb2RlW10pIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2V0RmlsZXMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgcG9ydGFsU2VydmljZTogWFBvcnRhbFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHB1YmxpYyBpMThuOiBYSTE4blNlcnZpY2UsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaTE4bi5sb2NhbGVDaGFuZ2VcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKCh4KSA9PiB4LnVwbG9hZCBhcyBYSTE4blVwbG9hZCksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2NhbGUgPSB4O1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdpbWcnKSB0aGlzLmFjY2VwdCA9ICdpbWFnZS8qJztcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RmlsZXMoKSB7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHJldHVybjtcclxuICAgIC8vIGlmICh0aGlzLnR5cGUgIT09ICdpbWcnKSByZXR1cm47XHJcbiAgICB0aGlzLmZpbGVzID0gdGhpcy52YWx1ZS5tYXAoKHgpID0+IHtcclxuICAgICAgaWYgKCF4LnN0YXRlKSB4LnN0YXRlID0gJ3N1Y2Nlc3MnO1xyXG4gICAgICByZXR1cm4geDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgbGV0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSAndW5kZWZpbmVkJyB8fCBpbnB1dC5maWxlcz8ubGVuZ3RoID09PSAwKSByZXR1cm47XHJcbiAgICBsZXQgZmlsZXM6IFhVcGxvYWROb2RlW10gPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgKGlucHV0LmZpbGVzIGFzIEZpbGVMaXN0KS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZmlsZTogWFVwbG9hZE5vZGUgPSAoaW5wdXQuZmlsZXMgYXMgRmlsZUxpc3QpLml0ZW0oaSkgYXMgWFVwbG9hZE5vZGU7XHJcbiAgICAgIGZpbGUuc3RhdGUgPSAncmVhZHknO1xyXG4gICAgICBmaWxlcyA9IFsuLi5maWxlcywgZmlsZV07XHJcbiAgICB9XHJcbiAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCkgdGhpcy5zaG93VXBsb2FkID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlTW9kZWwgPT09ICdjb3ZlcicpIHtcclxuICAgICAgdGhpcy5maWxlcyA9IGZpbGVzO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm11bHRpcGxlTW9kZWwgPT09ICdhZGQnKSB7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBbLi4udGhpcy5maWxlcywgLi4uZmlsZXNdO1xyXG4gICAgfVxyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuZmlsZXM7XHJcbiAgICB0aGlzLm9uQ2hhbmdlICYmIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLm9uVXBsb2FkaW5nKCk7XHJcbiAgICBpbnB1dC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGZpbGU6IFhVcGxvYWROb2RlLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPT09IDApIHRoaXMuZmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnNob3dVcGxvYWQgPSB0aGlzLmZpbGVzLmZpbmQoKHgpID0+IHguc3RhdGUgPT09ICdyZWFkeScpICE9IG51bGw7XHJcbiAgICBjb25zdCB2aW5kZXggPSB0aGlzLnZhbHVlLmluZGV4T2YoZmlsZSk7XHJcbiAgICBpZiAodmluZGV4ID4gLTEpIHtcclxuICAgICAgdGhpcy52YWx1ZS5zcGxpY2UodmluZGV4LCAxKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZSAmJiB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZW1vdmVDbGljay5lbWl0KHsgZmlsZTogZmlsZSwgaW5kZXg6IGluZGV4IH0pO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkQ2xpY2soKSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5maWxlLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIG9uVXBsb2FkaW5nKCkge1xyXG4gICAgaWYgKCF0aGlzLmFjdGlvbikgcmV0dXJuO1xyXG4gICAgbGV0IHJlYWR5RmlsZXMgPSB0aGlzLmZpbGVzLmZpbHRlcigoeCkgPT4geC5zdGF0ZSA9PT0gJ3JlYWR5Jyk7XHJcbiAgICByZWFkeUZpbGVzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgdGhpcy51cGxvYWRGaWxlKHgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRGaWxlKGZpbGU6IFhVcGxvYWROb2RlLCBpbmRleCA9IC0xKSB7XHJcbiAgICBsZXQgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xyXG4gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQT1NUJywgdGhpcy5hY3Rpb24gYXMgc3RyaW5nLCBmb3JtRGF0YSwge1xyXG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInXHJcbiAgICB9KTtcclxuICAgIHRoaXMuaHR0cFxyXG4gICAgICAucmVxdWVzdChyZXEpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoZXZlbnQpID0+XHJcbiAgICAgICAgICB0aGlzLmdldEV2ZW50TWVzc2FnZShldmVudCwgZmlsZSwgKGJvZHk6IEJsb2JQYXJ0KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBibG9iID0gbmV3IEJsb2IoW2JvZHldKTtcclxuICAgICAgICAgICAgbGV0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IsICd1dGYtOCcpO1xyXG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGZpbGUudXJsID0gSlNPTi5wYXJzZShyZWFkZXIucmVzdWx0IGFzIHN0cmluZylbMF07XHJcbiAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy52YWx1ZS5wdXNoKGZpbGUpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnZhbHVlW2luZGV4XSA9IGZpbGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVzW2luZGV4XSA9IGZpbGU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaG93VXBsb2FkID0gdGhpcy5maWxlcy5maW5kKCh5KSA9PiB5LnN0YXRlID09PSAncmVhZHknKSAhPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgZmlsZS5zdGF0ZSA9ICdlcnJvcic7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZEVycm9yLmVtaXQoZmlsZSk7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXZlbnRNZXNzYWdlKGV2ZW50OiBIdHRwRXZlbnQ8YW55PiwgZmlsZTogWFVwbG9hZE5vZGUsIGZ1bjogRnVuY3Rpb24pIHtcclxuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xyXG4gICAgICBjYXNlIEh0dHBFdmVudFR5cGUuU2VudDpcclxuICAgICAgICBmaWxlLnN0YXRlID0gJ3JlYWR5JztcclxuICAgICAgICB0aGlzLnVwbG9hZFJlYWR5LmVtaXQoZmlsZSk7XHJcbiAgICAgICAgcmV0dXJuIGDlvIDlp4vkuIrkvKDmlofku7ZgO1xyXG4gICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XHJcbiAgICAgICAgZmlsZS5zdGF0ZSA9ICd1cGxvYWRpbmcnO1xyXG4gICAgICAgIGlmIChldmVudC50b3RhbCkgZmlsZS5wZXJjZW50ID0gTWF0aC5yb3VuZCgoMTAwICogZXZlbnQubG9hZGVkKSAvIGV2ZW50LnRvdGFsKTtcclxuICAgICAgICB0aGlzLnVwbG9hZGluZy5lbWl0KGZpbGUpO1xyXG4gICAgICAgIHJldHVybiBg5LiK5Lyg5LitYDtcclxuICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxyXG4gICAgICAgIGZpbGUuc3RhdGUgPSAnc3VjY2Vzcyc7XHJcbiAgICAgICAgZnVuKGV2ZW50LmJvZHkpO1xyXG4gICAgICAgIHRoaXMudXBsb2FkU3VjY2Vzcy5lbWl0KGZpbGUpO1xyXG4gICAgICAgIHJldHVybiBg5paH5Lu25LiK5Lyg5a6M5q+VYDtcclxuICAgIH1cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJdGVtKF9pbmRleDogbnVtYmVyLCBpdGVtOiBYVXBsb2FkTm9kZSkge1xyXG4gICAgcmV0dXJuIGAke2l0ZW0ubmFtZX0tJHtpdGVtLmxhc3RNb2RpZmllZH1gO1xyXG4gIH1cclxuXHJcbiAgb25JbWdDdXQoZmlsZTogWFVwbG9hZE5vZGUsIGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMucG9ydGFsID0gdGhpcy5wb3J0YWxTZXJ2aWNlLmF0dGFjaCh7XHJcbiAgICAgIGNvbnRlbnQ6IFhVcGxvYWRQb3J0YWxDb21wb25lbnQsXHJcbiAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcclxuICAgICAgb3ZlcmxheUNvbmZpZzoge1xyXG4gICAgICAgIHBhbmVsQ2xhc3M6IFtYVXBsb2FkUG9ydGFsUHJlZml4XSxcclxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLnBvcnRhbFNlcnZpY2Uuc2V0UGxhY2UoJ2NlbnRlcicpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRJbnN0YW5jZShmaWxlLCBpbmRleCk7XHJcbiAgfVxyXG5cclxuICBzZXRJbnN0YW5jZShmaWxlOiBYVXBsb2FkTm9kZSwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgbGV0IGNvbXBvbmVudFJlZiA9IHRoaXMucG9ydGFsPy5jb21wb25lbnRSZWY7XHJcbiAgICBpZiAoIWNvbXBvbmVudFJlZikgcmV0dXJuO1xyXG4gICAgT2JqZWN0LmFzc2lnbihjb21wb25lbnRSZWYuaW5zdGFuY2UsIHtcclxuICAgICAgZmlsZTogZmlsZSxcclxuICAgICAgY2xvc2VQb3J0YWw6ICgpID0+IHRoaXMuY2xvc2VQb3J0YWwoKSxcclxuICAgICAgZGVzdHJveVBvcnRhbDogKCkgPT4gdGhpcy5kZXN0cm95UG9ydGFsKCksXHJcbiAgICAgIHN1cmVQb3J0YWw6IChibG9iOiBCbG9iKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmwgPSBuZXcgRmlsZShbYmxvYl0sIGZpbGUubmFtZSwgeyB0eXBlOiBibG9iLnR5cGUgfSkgYXMgWFVwbG9hZE5vZGU7XHJcbiAgICAgICAgZmwuc3RhdGUgPSAncmVhZHknO1xyXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZShmbCwgaW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwb3J0YWxBdHRhY2hlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlUG9ydGFsKCkge1xyXG4gICAgaWYgKHRoaXMucG9ydGFsQXR0YWNoZWQoKSkge1xyXG4gICAgICB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8uZGV0YWNoKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBkZXN0cm95UG9ydGFsKCkge1xyXG4gICAgdGhpcy5wb3J0YWw/Lm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcclxuICB9XHJcblxyXG4gIGltZ0Vycm9yKGV2ZW50OiBFcnJvckV2ZW50LCBmaWxlOiBYVXBsb2FkTm9kZSkge1xyXG4gICAgZmlsZS5zdGF0ZSA9ICdlcnJvcic7XHJcbiAgICBjb25zb2xlLmVycm9yKGV2ZW50LmVycm9yKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGltZ0xvYWQoZmlsZTogWFVwbG9hZE5vZGUpIHtcclxuICAgIGZpbGUuc3RhdGUgPSAnc3VjY2Vzcyc7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI3VwbG9hZCBjbGFzcz1cIngtdXBsb2FkIHgtdXBsb2FkLXt7IHR5cGUgfX1cIiBbY2xhc3MueC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gIDxpbnB1dCB0eXBlPVwiZmlsZVwiICNmaWxlIChjaGFuZ2UpPVwiY2hhbmdlKCRldmVudClcIiBbYXR0ci5hY2NlcHRdPVwiYWNjZXB0XCIgW211bHRpcGxlXT1cIm11bHRpcGxlXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgLz5cclxuICA8ZGl2IGNsYXNzPVwieC11cGxvYWQtYnV0dG9uc1wiIFtjbGFzcy54LXVwbG9hZC1idXR0b25zLXRlbXBsYXRlXT1cImlzVGVtcGxhdGVUZXh0XCIgKGNsaWNrKT1cInVwbG9hZENsaWNrKClcIj5cclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJnZXRUZXh0XCI+XHJcbiAgICAgIDx4LWJ1dHRvbiBpY29uPVwiZnRvLXVwbG9hZFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIHR5cGU9XCJwcmltYXJ5XCI+e3sgZ2V0VGV4dCB9fTwveC1idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwiZmlsZXNUcGw7IGNvbnRleHQ6IHsgJGZpbGVzOiBmaWxlcyB9XCI+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0eXBlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsaXN0J1wiPlxyXG4gICAgICAgIDx1bCBjbGFzcz1cIngtdXBsb2FkLWZpbGVzXCI+XHJcbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXM7IGluZGV4IGFzIGk7IHRyYWNrQnk6IHRyYWNrQnlJdGVtXCIgW2NsYXNzLngtdXBsb2FkLWRpc2FibGVkXT1cIiFkb3dubG9hZFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRcIj5cclxuICAgICAgICAgICAgICA8YSBbaHJlZl09XCJmaWxlLnVybFwiIHRhcmdldD1cIl9ibGFua1wiIFt0aXRsZV09XCJmaWxlLm5hbWVcIj5cclxuICAgICAgICAgICAgICAgIDx4LWljb24gdHlwZT1cImZ0by1maWxlLXRleHRcIj48L3gtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwieC11cGxvYWQtZmlsZW5hbWVcIj57eyBmaWxlLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkb3dubG9hZFwiPlxyXG4gICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgPHgtaWNvbiB0eXBlPVwiZnRvLWZpbGUtdGV4dFwiPjwveC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ4LXVwbG9hZC1maWxlbmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmlsZS5zdGF0ZVwiPlxyXG4gICAgICAgICAgICAgIDx4LWljb24gY2xhc3M9XCJ4LXVwbG9hZC1zdGF0ZVwiICpuZ1N3aXRjaENhc2U9XCIncmVhZHknXCIgdHlwZT1cImZ0by1jbG9ja1wiPjwveC1pY29uPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwieC11cGxvYWQtcGVyY2VudFwiICpuZ1N3aXRjaENhc2U9XCIndXBsb2FkaW5nJ1wiPnt7IGZpbGUucGVyY2VudCB9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHgtaWNvbiBjbGFzcz1cIngtdXBsb2FkLXN0YXRlIHN1Y2Nlc3NcIiAqbmdTd2l0Y2hDYXNlPVwiJ3N1Y2Nlc3MnXCIgdHlwZT1cImZ0by1jaGVja1wiPjwveC1pY29uPlxyXG4gICAgICAgICAgICAgIDx4LWljb24gY2xhc3M9XCJ4LXVwbG9hZC1zdGF0ZSBlcnJvclwiICpuZ1N3aXRjaENhc2U9XCInZXJyb3InXCIgdHlwZT1cImZ0by1pbmZvXCI+PC94LWljb24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8eC1idXR0b24gKm5nSWY9XCJmaWxlLnN0YXRlICE9PSAndXBsb2FkaW5nJ1wiIGljb249XCJmdG8teFwiIChjbGljayk9XCJyZW1vdmUoZmlsZSwgaSlcIiBvbmx5SWNvbiBjbG9zYWJsZSBzaXplPVwibWluaVwiPjwveC1idXR0b24+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaW1nJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ4LXVwbG9hZC1pbWctaXRlbSB7eyBmaWxlLnN0YXRlIH19XCIgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXM7IGluZGV4IGFzIGk7IHRyYWNrQnk6IHRyYWNrQnlJdGVtXCIgW3RpdGxlXT1cImZpbGUubmFtZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIngtdXBsb2FkLWltZy1pbm5lclwiPlxyXG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwiZmlsZS51cmxcIiAobG9hZCk9XCJpbWdMb2FkKGZpbGUpXCIgKGVycm9yKT1cImltZ0Vycm9yKCRldmVudCwgZmlsZSlcIiAvPlxyXG4gICAgICAgICAgICA8eC1pY29uIHR5cGU9XCJmdG8taW1hZ2VcIj48L3gtaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWxlLnN0YXRlID09ICd1cGxvYWRpbmcnXCI+e3sgZmlsZS5wZXJjZW50IH19JTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIngtdXBsb2FkLWltZy1idG5zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ4LXVwbG9hZC1pbWctYnRucy1pbm5lclwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZpbGUuc3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDx4LWljb24gY2xhc3M9XCJ4LXVwbG9hZC1zdGF0ZVwiICpuZ1N3aXRjaENhc2U9XCIncmVhZHknXCIgdHlwZT1cImZ0by1jbG9ja1wiPjwveC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHgtaWNvbiBjbGFzcz1cIngtdXBsb2FkLXN0YXRlIGVycm9yXCIgKm5nU3dpdGNoQ2FzZT1cIidlcnJvcidcIiB0eXBlPVwiZnRvLWluZm9cIj48L3gtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImZpbGUudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgKm5nU3dpdGNoQ2FzZT1cIidzdWNjZXNzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8eC1pY29uIHR5cGU9XCJmdG8tZXllXCI+PC94LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPHgtaWNvbiAqbmdJZj1cImltZ0N1dCAmJiBmaWxlLnN0YXRlID09PSAnc3VjY2VzcydcIiB0eXBlPVwiZnRvLWNyb3BcIiAoY2xpY2spPVwib25JbWdDdXQoZmlsZSwgaSlcIj48L3gtaWNvbj5cclxuICAgICAgICAgICAgICA8eC1pY29uICpuZ0lmPVwiZmlsZS5zdGF0ZSAhPT0gJ3VwbG9hZGluZydcIiB0eXBlPVwiZnRvLXRyYXNoLTJcIiAoY2xpY2spPVwicmVtb3ZlKGZpbGUsIGkpXCI+PC94LWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG4iXX0=
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3VwbG9hZC91cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdXBsb2FkL3VwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsYUFBYSxFQUFFLFdBQVcsRUFBYSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUl2QixTQUFTLEVBSVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBZSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRyxPQUFPLEVBQWtCLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcvQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7OztBQVV2RCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsZUFBZTtJQXdCbkQsWUFDUyxRQUFtQixFQUNuQixVQUFzQixFQUN0QixJQUFnQixFQUNQLEdBQXNCLEVBQy9CLGFBQTZCLEVBQzdCLGdCQUFrQyxFQUNsQyxJQUFrQixFQUNsQixhQUE2QjtRQUVwQyxLQUFLLEVBQUUsQ0FBQztRQVRELGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ1AsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDL0Isa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQzdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsU0FBSSxHQUFKLElBQUksQ0FBYztRQUNsQixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUE5QnRDLFVBQUssR0FBa0IsRUFBRSxDQUFDO1FBQzFCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsZ0JBQVcsR0FBa0IsRUFBRSxDQUFDO1FBQ2hDLFdBQU0sR0FBZ0IsRUFBRSxDQUFDO1FBV2pCLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBbUJ6QyxDQUFDO0lBM0JELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBSVEsVUFBVSxDQUFDLEtBQW9CO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFlRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO2FBQ25CLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFxQixDQUFDLEVBQ25DLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQzNCO2FBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUs7WUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQ3ZDLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLO2dCQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1lBQ2xDLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVk7UUFDakIsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDN0MsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU87UUFDdEUsSUFBSSxLQUFLLEdBQWtCLEVBQUUsQ0FBQztRQUM5QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBRSxLQUFLLENBQUMsS0FBa0IsQ0FBQyxNQUFNLENBQUM7UUFDbkYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QixJQUFJLElBQUksR0FBaUIsS0FBSyxDQUFDLEtBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztZQUN6RSxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztZQUNyQixLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMxQjtRQUNELElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDN0MsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLE9BQU8sRUFBRTtZQUNsQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNwQjthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxLQUFLLEVBQUU7WUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFpQixFQUFFLEtBQWE7UUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDdEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3pCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFpQixFQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM5QixRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQWdCLEVBQUUsUUFBUSxFQUFFO1lBQ25FLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFlBQVksRUFBRSxhQUFhO1NBQzVCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJO2FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQzthQUNaLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNaLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLElBQWMsRUFBRSxFQUFFO1lBQ25ELElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM1QixJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO2dCQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEIsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ2hCLHlCQUF5QjtpQkFDMUI7cUJBQU07b0JBQ0wsNEJBQTRCO29CQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztpQkFDMUI7Z0JBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUNGO2FBQ0EsU0FBUyxDQUNSLEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxFQUNELEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUNGLENBQUM7SUFDTixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQXFCLEVBQUUsSUFBaUIsRUFBRSxHQUFhO1FBQ3JFLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNsQixLQUFLLGFBQWEsQ0FBQyxJQUFJO2dCQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztnQkFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVCLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssYUFBYSxDQUFDLGNBQWM7Z0JBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDO2dCQUN6QixJQUFJLEtBQUssQ0FBQyxLQUFLO29CQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUIsT0FBTyxLQUFLLENBQUM7WUFDZixLQUFLLGFBQWEsQ0FBQyxRQUFRO2dCQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztnQkFDdkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLE9BQU8sUUFBUSxDQUFDO1NBQ25CO1FBQ0QsT0FBTztJQUNULENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYyxFQUFFLElBQWlCO1FBQzNDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQWlCLEVBQUUsS0FBYTtRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxzQkFBc0I7WUFDL0IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2QyxhQUFhLEVBQUU7Z0JBQ2IsVUFBVSxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQ2pDLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7YUFDeEQ7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQWlCLEVBQUUsS0FBYTtRQUMxQyxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQztRQUM3QyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFDMUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFO1lBQ25DLElBQUksRUFBRSxJQUFJO1lBQ1YsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckMsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDekMsVUFBVSxFQUFFLENBQUMsSUFBVSxFQUFFLEVBQUU7Z0JBQ3pCLE1BQU0sRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQWdCLENBQUM7Z0JBQzNFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO2dCQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM3QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQWtCLEVBQUUsSUFBaUI7UUFDNUMsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQWlCO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7Z0lBek9VLGdCQUFnQjtvSEFBaEIsZ0JBQWdCLG1DQUZoQixDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLDZKQzVCL0MseTJIQXdFQTsyRkQxQ2EsZ0JBQWdCO2tCQVI1QixTQUFTOytCQUNFLEdBQUcsYUFBYSxFQUFFLGlCQUdiLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxjQUFjLGtCQUFrQixDQUFDO3NTQUdSLElBQUk7c0JBQXhDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFdmVudFR5cGUsIEh0dHBSZXF1ZXN0LCBIdHRwRXZlbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFJlbmRlcmVyMixcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFVwbG9hZFByZWZpeCwgWFVwbG9hZE5vZGUsIFhVcGxvYWRQcm9wZXJ0eSwgWFVwbG9hZFBvcnRhbFByZWZpeCB9IGZyb20gJy4vdXBsb2FkLnByb3BlcnR5JztcclxuaW1wb3J0IHsgWENvbmZpZ1NlcnZpY2UsIFhJc1RlbXBsYXRlUmVmIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFhJMThuU2VydmljZSwgWEkxOG5VcGxvYWQgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuaW1wb3J0IHsgWFBvcnRhbE92ZXJsYXlSZWYsIFhQb3J0YWxTZXJ2aWNlIH0gZnJvbSAnQG5nLW5lc3QvdWkvcG9ydGFsJztcclxuaW1wb3J0IHsgWFVwbG9hZFBvcnRhbENvbXBvbmVudCB9IGZyb20gJy4vdXBsb2FkLXBvcnRhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WFVwbG9hZFByZWZpeH1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VwbG9hZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbWFZhbHVlQWNjZXNzb3IoWFVwbG9hZENvbXBvbmVudCldXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYVXBsb2FkQ29tcG9uZW50IGV4dGVuZHMgWFVwbG9hZFByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBmaWxlITogRWxlbWVudFJlZjtcclxuICBmaWxlczogWFVwbG9hZE5vZGVbXSA9IFtdO1xyXG4gIHNob3dVcGxvYWQgPSBmYWxzZTtcclxuICB1cGxvYWROb2RlczogWFVwbG9hZE5vZGVbXSA9IFtdO1xyXG4gIGxvY2FsZTogWEkxOG5VcGxvYWQgPSB7fTtcclxuICBwb3J0YWwhOiBYUG9ydGFsT3ZlcmxheVJlZjxYVXBsb2FkUG9ydGFsQ29tcG9uZW50PjtcclxuXHJcbiAgZ2V0IGdldFRleHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZXh0IHx8IHRoaXMubG9jYWxlLnVwbG9hZFRleHQ7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNUZW1wbGF0ZVRleHQoKSB7XHJcbiAgICByZXR1cm4gWElzVGVtcGxhdGVSZWYodGhpcy5nZXRUZXh0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IFhVcGxvYWROb2RlW10pIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2V0RmlsZXMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgcG9ydGFsU2VydmljZTogWFBvcnRhbFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHB1YmxpYyBpMThuOiBYSTE4blNlcnZpY2UsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaTE4bi5sb2NhbGVDaGFuZ2VcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKCh4KSA9PiB4LnVwbG9hZCBhcyBYSTE4blVwbG9hZCksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2NhbGUgPSB4O1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdpbWcnKSB0aGlzLmFjY2VwdCA9ICdpbWFnZS8qJztcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RmlsZXMoKSB7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHJldHVybjtcclxuICAgIC8vIGlmICh0aGlzLnR5cGUgIT09ICdpbWcnKSByZXR1cm47XHJcbiAgICB0aGlzLmZpbGVzID0gdGhpcy52YWx1ZS5tYXAoKHgpID0+IHtcclxuICAgICAgaWYgKCF4LnN0YXRlKSB4LnN0YXRlID0gJ3N1Y2Nlc3MnO1xyXG4gICAgICByZXR1cm4geDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgbGV0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSAndW5kZWZpbmVkJyB8fCBpbnB1dC5maWxlcz8ubGVuZ3RoID09PSAwKSByZXR1cm47XHJcbiAgICBsZXQgZmlsZXM6IFhVcGxvYWROb2RlW10gPSBbXTtcclxuICAgIGxldCBtYXggPSB0aGlzLm1heExpbWl0ID8gTnVtYmVyKHRoaXMubWF4TGltaXQpIDogKGlucHV0LmZpbGVzIGFzIEZpbGVMaXN0KS5sZW5ndGg7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heDsgaSsrKSB7XHJcbiAgICAgIGxldCBmaWxlOiBYVXBsb2FkTm9kZSA9IChpbnB1dC5maWxlcyBhcyBGaWxlTGlzdCkuaXRlbShpKSBhcyBYVXBsb2FkTm9kZTtcclxuICAgICAgZmlsZS5zdGF0ZSA9ICdyZWFkeSc7XHJcbiAgICAgIGZpbGVzID0gWy4uLmZpbGVzLCBmaWxlXTtcclxuICAgIH1cclxuICAgIGlmIChmaWxlcy5sZW5ndGggPiAwKSB0aGlzLnNob3dVcGxvYWQgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGVNb2RlbCA9PT0gJ2NvdmVyJykge1xyXG4gICAgICB0aGlzLmZpbGVzID0gZmlsZXM7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlwbGVNb2RlbCA9PT0gJ2FkZCcpIHtcclxuICAgICAgdGhpcy5maWxlcyA9IFsuLi50aGlzLmZpbGVzLCAuLi5maWxlc107XHJcbiAgICB9XHJcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5maWxlcztcclxuICAgIHRoaXMub25DaGFuZ2UgJiYgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMub25VcGxvYWRpbmcoKTtcclxuICAgIGlucHV0LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUoZmlsZTogWFVwbG9hZE5vZGUsIGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGlmICh0aGlzLmZpbGVzLmxlbmd0aCA9PT0gMCkgdGhpcy5maWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgIHRoaXMuc2hvd1VwbG9hZCA9IHRoaXMuZmlsZXMuZmluZCgoeCkgPT4geC5zdGF0ZSA9PT0gJ3JlYWR5JykgIT0gbnVsbDtcclxuICAgIGNvbnN0IHZpbmRleCA9IHRoaXMudmFsdWUuaW5kZXhPZihmaWxlKTtcclxuICAgIGlmICh2aW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLnZhbHVlLnNwbGljZSh2aW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlICYmIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlbW92ZUNsaWNrLmVtaXQoeyBmaWxlOiBmaWxlLCBpbmRleDogaW5kZXggfSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRDbGljaygpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcbiAgICB0aGlzLmZpbGUubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgb25VcGxvYWRpbmcoKSB7XHJcbiAgICBpZiAoIXRoaXMuYWN0aW9uKSByZXR1cm47XHJcbiAgICBsZXQgcmVhZHlGaWxlcyA9IHRoaXMuZmlsZXMuZmlsdGVyKCh4KSA9PiB4LnN0YXRlID09PSAncmVhZHknKTtcclxuICAgIHJlYWR5RmlsZXMuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICB0aGlzLnVwbG9hZEZpbGUoeCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHVwbG9hZEZpbGUoZmlsZTogWFVwbG9hZE5vZGUsIGluZGV4ID0gLTEpIHtcclxuICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XHJcbiAgICBjb25zdCByZXEgPSBuZXcgSHR0cFJlcXVlc3QoJ1BPU1QnLCB0aGlzLmFjdGlvbiBhcyBzdHJpbmcsIGZvcm1EYXRhLCB7XHJcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcidcclxuICAgIH0pO1xyXG4gICAgdGhpcy5odHRwXHJcbiAgICAgIC5yZXF1ZXN0KHJlcSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChldmVudCkgPT5cclxuICAgICAgICAgIHRoaXMuZ2V0RXZlbnRNZXNzYWdlKGV2ZW50LCBmaWxlLCAoYm9keTogQmxvYlBhcnQpID0+IHtcclxuICAgICAgICAgICAgbGV0IGJsb2IgPSBuZXcgQmxvYihbYm9keV0pO1xyXG4gICAgICAgICAgICBsZXQgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYiwgJ3V0Zi04Jyk7XHJcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgZmlsZS51cmwgPSBKU09OLnBhcnNlKHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nKVswXTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhmaWxlKTtcclxuICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnZhbHVlLnB1c2goZmlsZSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMudmFsdWVbaW5kZXhdID0gZmlsZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNbaW5kZXhdID0gZmlsZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3dVcGxvYWQgPSB0aGlzLmZpbGVzLmZpbmQoKHkpID0+IHkuc3RhdGUgPT09ICdyZWFkeScpICE9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICBmaWxlLnN0YXRlID0gJ2Vycm9yJztcclxuICAgICAgICAgIHRoaXMudXBsb2FkRXJyb3IuZW1pdChmaWxlKTtcclxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRFdmVudE1lc3NhZ2UoZXZlbnQ6IEh0dHBFdmVudDxhbnk+LCBmaWxlOiBYVXBsb2FkTm9kZSwgZnVuOiBGdW5jdGlvbikge1xyXG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5TZW50OlxyXG4gICAgICAgIGZpbGUuc3RhdGUgPSAncmVhZHknO1xyXG4gICAgICAgIHRoaXMudXBsb2FkUmVhZHkuZW1pdChmaWxlKTtcclxuICAgICAgICByZXR1cm4gYOW8gOWni+S4iuS8oOaWh+S7tmA7XHJcbiAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzczpcclxuICAgICAgICBmaWxlLnN0YXRlID0gJ3VwbG9hZGluZyc7XHJcbiAgICAgICAgaWYgKGV2ZW50LnRvdGFsKSBmaWxlLnBlcmNlbnQgPSBNYXRoLnJvdW5kKCgxMDAgKiBldmVudC5sb2FkZWQpIC8gZXZlbnQudG90YWwpO1xyXG4gICAgICAgIHRoaXMudXBsb2FkaW5nLmVtaXQoZmlsZSk7XHJcbiAgICAgICAgcmV0dXJuIGDkuIrkvKDkuK1gO1xyXG4gICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XHJcbiAgICAgICAgZmlsZS5zdGF0ZSA9ICdzdWNjZXNzJztcclxuICAgICAgICBmdW4oZXZlbnQuYm9keSk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRTdWNjZXNzLmVtaXQoZmlsZSk7XHJcbiAgICAgICAgcmV0dXJuIGDmlofku7bkuIrkvKDlrozmr5VgO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUl0ZW0oX2luZGV4OiBudW1iZXIsIGl0ZW06IFhVcGxvYWROb2RlKSB7XHJcbiAgICByZXR1cm4gYCR7aXRlbS5uYW1lfS0ke2l0ZW0ubGFzdE1vZGlmaWVkfWA7XHJcbiAgfVxyXG5cclxuICBvbkltZ0N1dChmaWxlOiBYVXBsb2FkTm9kZSwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5wb3J0YWwgPSB0aGlzLnBvcnRhbFNlcnZpY2UuYXR0YWNoKHtcclxuICAgICAgY29udGVudDogWFVwbG9hZFBvcnRhbENvbXBvbmVudCxcclxuICAgICAgdmlld0NvbnRhaW5lclJlZjogdGhpcy52aWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICBvdmVybGF5Q29uZmlnOiB7XHJcbiAgICAgICAgcGFuZWxDbGFzczogW1hVcGxvYWRQb3J0YWxQcmVmaXhdLFxyXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMucG9ydGFsU2VydmljZS5zZXRQbGFjZSgnY2VudGVyJylcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldEluc3RhbmNlKGZpbGUsIGluZGV4KTtcclxuICB9XHJcblxyXG4gIHNldEluc3RhbmNlKGZpbGU6IFhVcGxvYWROb2RlLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBsZXQgY29tcG9uZW50UmVmID0gdGhpcy5wb3J0YWw/LmNvbXBvbmVudFJlZjtcclxuICAgIGlmICghY29tcG9uZW50UmVmKSByZXR1cm47XHJcbiAgICBPYmplY3QuYXNzaWduKGNvbXBvbmVudFJlZi5pbnN0YW5jZSwge1xyXG4gICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICBjbG9zZVBvcnRhbDogKCkgPT4gdGhpcy5jbG9zZVBvcnRhbCgpLFxyXG4gICAgICBkZXN0cm95UG9ydGFsOiAoKSA9PiB0aGlzLmRlc3Ryb3lQb3J0YWwoKSxcclxuICAgICAgc3VyZVBvcnRhbDogKGJsb2I6IEJsb2IpID0+IHtcclxuICAgICAgICBjb25zdCBmbCA9IG5ldyBGaWxlKFtibG9iXSwgZmlsZS5uYW1lLCB7IHR5cGU6IGJsb2IudHlwZSB9KSBhcyBYVXBsb2FkTm9kZTtcclxuICAgICAgICBmbC5zdGF0ZSA9ICdyZWFkeSc7XHJcbiAgICAgICAgdGhpcy51cGxvYWRGaWxlKGZsLCBpbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHBvcnRhbEF0dGFjaGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucG9ydGFsPy5vdmVybGF5UmVmPy5oYXNBdHRhY2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VQb3J0YWwoKSB7XHJcbiAgICBpZiAodGhpcy5wb3J0YWxBdHRhY2hlZCgpKSB7XHJcbiAgICAgIHRoaXMucG9ydGFsPy5vdmVybGF5UmVmPy5kZXRhY2goKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGRlc3Ryb3lQb3J0YWwoKSB7XHJcbiAgICB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgaW1nRXJyb3IoX2V2ZW50OiBFcnJvckV2ZW50LCBmaWxlOiBYVXBsb2FkTm9kZSkge1xyXG4gICAgZmlsZS5zdGF0ZSA9ICdlcnJvcic7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBpbWdMb2FkKGZpbGU6IFhVcGxvYWROb2RlKSB7XHJcbiAgICBmaWxlLnN0YXRlID0gJ3N1Y2Nlc3MnO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICN1cGxvYWQgY2xhc3M9XCJ4LXVwbG9hZCB4LXVwbG9hZC17eyB0eXBlIH19XCIgW2NsYXNzLngtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cclxuICA8aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZSAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCIgW2F0dHIuYWNjZXB0XT1cImFjY2VwdFwiIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIC8+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJmaWxlc1RwbDsgY29udGV4dDogeyAkZmlsZXM6IGZpbGVzIH1cIj5cclxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInR5cGVcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xpc3QnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVwbG9hZEJ0blRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDx1bCBjbGFzcz1cIngtdXBsb2FkLWZpbGVzXCI+XHJcbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXM7IGluZGV4IGFzIGk7IHRyYWNrQnk6IHRyYWNrQnlJdGVtXCIgW2NsYXNzLngtdXBsb2FkLWRpc2FibGVkXT1cIiFkb3dubG9hZFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRcIj5cclxuICAgICAgICAgICAgICA8YSBbaHJlZl09XCJmaWxlLnVybFwiIHRhcmdldD1cIl9ibGFua1wiIFt0aXRsZV09XCJmaWxlLm5hbWVcIj5cclxuICAgICAgICAgICAgICAgIDx4LWljb24gdHlwZT1cImZ0by1maWxlLXRleHRcIj48L3gtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwieC11cGxvYWQtZmlsZW5hbWVcIj57eyBmaWxlLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkb3dubG9hZFwiPlxyXG4gICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgPHgtaWNvbiB0eXBlPVwiZnRvLWZpbGUtdGV4dFwiPjwveC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ4LXVwbG9hZC1maWxlbmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmlsZS5zdGF0ZVwiPlxyXG4gICAgICAgICAgICAgIDx4LWljb24gY2xhc3M9XCJ4LXVwbG9hZC1zdGF0ZVwiICpuZ1N3aXRjaENhc2U9XCIncmVhZHknXCIgdHlwZT1cImZ0by1jbG9ja1wiPjwveC1pY29uPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwieC11cGxvYWQtcGVyY2VudFwiICpuZ1N3aXRjaENhc2U9XCIndXBsb2FkaW5nJ1wiPnt7IGZpbGUucGVyY2VudCB9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHgtaWNvbiBjbGFzcz1cIngtdXBsb2FkLXN0YXRlIHN1Y2Nlc3NcIiAqbmdTd2l0Y2hDYXNlPVwiJ3N1Y2Nlc3MnXCIgdHlwZT1cImZ0by1jaGVja1wiPjwveC1pY29uPlxyXG4gICAgICAgICAgICAgIDx4LWljb24gY2xhc3M9XCJ4LXVwbG9hZC1zdGF0ZSBlcnJvclwiICpuZ1N3aXRjaENhc2U9XCInZXJyb3InXCIgdHlwZT1cImZ0by1pbmZvXCI+PC94LWljb24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8eC1idXR0b24gKm5nSWY9XCJmaWxlLnN0YXRlICE9PSAndXBsb2FkaW5nJ1wiIGljb249XCJmdG8teFwiIChjbGljayk9XCJyZW1vdmUoZmlsZSwgaSlcIiBvbmx5SWNvbiBjbG9zYWJsZSBzaXplPVwibWluaVwiPjwveC1idXR0b24+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaW1nJ1wiPlxyXG4gICAgICAgIDx4LWltYWdlLWdyb3VwPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlczsgaW5kZXggYXMgaTsgdHJhY2tCeTogdHJhY2tCeUl0ZW1cIj5cclxuICAgICAgICAgICAgPHgtaW1hZ2VcclxuICAgICAgICAgICAgICBbc3JjXT1cImZpbGUudXJsXCJcclxuICAgICAgICAgICAgICAobG9hZCk9XCJpbWdMb2FkKGZpbGUpXCJcclxuICAgICAgICAgICAgICAoZXJyb3IpPVwiaW1nRXJyb3IoJGV2ZW50LCBmaWxlKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ7eyBmaWxlLnN0YXRlIH19XCJcclxuICAgICAgICAgICAgICBbcHJldmlld1RwbF09XCJwcmV2aWV3VHBsXCJcclxuICAgICAgICAgICAgICBbZmFsbGJhY2tdPVwiaW1nRmFsbGJhY2tcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwveC1pbWFnZT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwcmV2aWV3VHBsIGxldC1pbWFnZT1cIiRpbWFnZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ4LXVwbG9hZC11cGxvYWRpbmdcIiAqbmdJZj1cImZpbGUuc3RhdGUgPT0gJ3VwbG9hZGluZydcIj5cclxuICAgICAgICAgICAgICAgIDx4LXByb2dyZXNzIFtwZXJjZW50XT1cImZpbGUucGVyY2VudCFcIiBpbmZvPVwiZmFsc2VcIj48L3gtcHJvZ3Jlc3M+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIngtaW1hZ2Utb3ZlcmxheVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmlsZS5zdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8eC1pY29uIGNsYXNzPVwieC11cGxvYWQtc3RhdGVcIiAqbmdTd2l0Y2hDYXNlPVwiJ3JlYWR5J1wiIHR5cGU9XCJmdG8tY2xvY2tcIj48L3gtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgPHgtaWNvbiB0eXBlPVwiZnRvLWV5ZVwiICpuZ1N3aXRjaENhc2U9XCInc3VjY2VzcydcIiAoY2xpY2spPVwiaW1hZ2Uub25QcmV2aWV3KClcIj48L3gtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPHgtaWNvbiAqbmdJZj1cImltZ0N1dCAmJiBmaWxlLnN0YXRlID09PSAnc3VjY2VzcydcIiB0eXBlPVwiZnRvLWNyb3BcIiAoY2xpY2spPVwib25JbWdDdXQoZmlsZSwgaSlcIj48L3gtaWNvbj5cclxuICAgICAgICAgICAgICAgIDx4LWljb24gKm5nSWY9XCJmaWxlLnN0YXRlICE9PSAndXBsb2FkaW5nJ1wiIHR5cGU9XCJmdG8tdHJhc2gtMlwiIChjbGljayk9XCJyZW1vdmUoZmlsZSwgaSlcIj48L3gtaWNvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVwbG9hZEJ0blRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwveC1pbWFnZS1ncm91cD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI3VwbG9hZEJ0blRwbD5cclxuICA8ZGl2IGNsYXNzPVwieC11cGxvYWQtYnV0dG9uc1wiIFtjbGFzcy54LXVwbG9hZC1idXR0b25zLXRlbXBsYXRlXT1cImlzVGVtcGxhdGVUZXh0XCIgKGNsaWNrKT1cInVwbG9hZENsaWNrKClcIj5cclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJnZXRUZXh0XCI+XHJcbiAgICAgIDx4LWJ1dHRvbiBpY29uPVwiZnRvLXVwbG9hZFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIHR5cGU9XCJwcmltYXJ5XCI+e3sgZ2V0VGV4dCB9fTwveC1idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -11,6 +11,8 @@ import { XPortalModule } from '@ng-nest/ui/portal';
11
11
  import { XUploadPortalComponent } from './upload-portal.component';
12
12
  import { DragDropModule } from '@angular/cdk/drag-drop';
13
13
  import { XBaseFormModule } from '@ng-nest/ui/base-form';
14
+ import { XImageModule } from '@ng-nest/ui/image';
15
+ import { XProgressModule } from '@ng-nest/ui/progress';
14
16
  import * as i0 from "@angular/core";
15
17
  export class XUploadModule {
16
18
  }
@@ -24,7 +26,9 @@ export class XUploadModule {
24
26
  XButtonModule,
25
27
  XIconModule,
26
28
  XI18nModule,
27
- XBaseFormModule], exports: [XUploadComponent] });
29
+ XBaseFormModule,
30
+ XImageModule,
31
+ XProgressModule], exports: [XUploadComponent] });
28
32
  /** @nocollapse */ XUploadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XUploadModule, imports: [CommonModule,
29
33
  FormsModule,
30
34
  ReactiveFormsModule,
@@ -34,7 +38,9 @@ export class XUploadModule {
34
38
  XButtonModule,
35
39
  XIconModule,
36
40
  XI18nModule,
37
- XBaseFormModule] });
41
+ XBaseFormModule,
42
+ XImageModule,
43
+ XProgressModule] });
38
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XUploadModule, decorators: [{
39
45
  type: NgModule,
40
46
  args: [{
@@ -50,8 +56,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
50
56
  XButtonModule,
51
57
  XIconModule,
52
58
  XI18nModule,
53
- XBaseFormModule
59
+ XBaseFormModule,
60
+ XImageModule,
61
+ XProgressModule
54
62
  ]
55
63
  }]
56
64
  }] });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3VwbG9hZC91cGxvYWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQWtCeEQsTUFBTSxPQUFPLGFBQWE7OzZIQUFiLGFBQWE7OEhBQWIsYUFBYSxpQkFmVCxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxlQUFlLGFBR3RFLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCxhQUFhO1FBQ2IsYUFBYTtRQUNiLGFBQWE7UUFDYixXQUFXO1FBQ1gsV0FBVztRQUNYLGVBQWUsYUFYUCxnQkFBZ0I7OEhBY2YsYUFBYSxZQVp0QixZQUFZO1FBQ1osV0FBVztRQUNYLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2QsYUFBYTtRQUNiLGFBQWE7UUFDYixhQUFhO1FBQ2IsV0FBVztRQUNYLFdBQVc7UUFDWCxlQUFlOzJGQUdOLGFBQWE7a0JBaEJ6QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLGVBQWUsQ0FBQztvQkFDekUsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxlQUFlO3FCQUNoQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFhVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuL3VwbG9hZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2J1dHRvbic7XHJcbmltcG9ydCB7IFhJY29uTW9kdWxlIH0gZnJvbSAnQG5nLW5lc3QvdWkvaWNvbic7XHJcbmltcG9ydCB7IFhVcGxvYWRQcm9wZXJ0eSB9IGZyb20gJy4vdXBsb2FkLnByb3BlcnR5JztcclxuaW1wb3J0IHsgWEkxOG5Nb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuaW1wb3J0IHsgWE91dGxldE1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL291dGxldCc7XHJcbmltcG9ydCB7IFhQb3J0YWxNb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS9wb3J0YWwnO1xyXG5pbXBvcnQgeyBYVXBsb2FkUG9ydGFsQ29tcG9uZW50IH0gZnJvbSAnLi91cGxvYWQtcG9ydGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFhCYXNlRm9ybU1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1hVcGxvYWRDb21wb25lbnQsIFhVcGxvYWRQb3J0YWxDb21wb25lbnQsIFhVcGxvYWRQcm9wZXJ0eV0sXHJcbiAgZXhwb3J0czogW1hVcGxvYWRDb21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIERyYWdEcm9wTW9kdWxlLFxyXG4gICAgWFBvcnRhbE1vZHVsZSxcclxuICAgIFhPdXRsZXRNb2R1bGUsXHJcbiAgICBYQnV0dG9uTW9kdWxlLFxyXG4gICAgWEljb25Nb2R1bGUsXHJcbiAgICBYSTE4bk1vZHVsZSxcclxuICAgIFhCYXNlRm9ybU1vZHVsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhVcGxvYWRNb2R1bGUge31cclxuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3VwbG9hZC91cGxvYWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBb0J2RCxNQUFNLE9BQU8sYUFBYTs7NkhBQWIsYUFBYTs4SEFBYixhQUFhLGlCQWpCVCxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxlQUFlLGFBR3RFLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCxhQUFhO1FBQ2IsYUFBYTtRQUNiLGFBQWE7UUFDYixXQUFXO1FBQ1gsV0FBVztRQUNYLGVBQWU7UUFDZixZQUFZO1FBQ1osZUFBZSxhQWJQLGdCQUFnQjs4SEFnQmYsYUFBYSxZQWR0QixZQUFZO1FBQ1osV0FBVztRQUNYLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2QsYUFBYTtRQUNiLGFBQWE7UUFDYixhQUFhO1FBQ2IsV0FBVztRQUNYLFdBQVc7UUFDWCxlQUFlO1FBQ2YsWUFBWTtRQUNaLGVBQWU7MkZBR04sYUFBYTtrQkFsQnpCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxDQUFDO29CQUN6RSxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDM0IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixlQUFlO3FCQUNoQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFhVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuL3VwbG9hZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2J1dHRvbic7XHJcbmltcG9ydCB7IFhJY29uTW9kdWxlIH0gZnJvbSAnQG5nLW5lc3QvdWkvaWNvbic7XHJcbmltcG9ydCB7IFhVcGxvYWRQcm9wZXJ0eSB9IGZyb20gJy4vdXBsb2FkLnByb3BlcnR5JztcclxuaW1wb3J0IHsgWEkxOG5Nb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuaW1wb3J0IHsgWE91dGxldE1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL291dGxldCc7XHJcbmltcG9ydCB7IFhQb3J0YWxNb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS9wb3J0YWwnO1xyXG5pbXBvcnQgeyBYVXBsb2FkUG9ydGFsQ29tcG9uZW50IH0gZnJvbSAnLi91cGxvYWQtcG9ydGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFhCYXNlRm9ybU1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcbmltcG9ydCB7IFhJbWFnZU1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2ltYWdlJztcclxuaW1wb3J0IHsgWFByb2dyZXNzTW9kdWxlIH0gZnJvbSAnQG5nLW5lc3QvdWkvcHJvZ3Jlc3MnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtYVXBsb2FkQ29tcG9uZW50LCBYVXBsb2FkUG9ydGFsQ29tcG9uZW50LCBYVXBsb2FkUHJvcGVydHldLFxyXG4gIGV4cG9ydHM6IFtYVXBsb2FkQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBEcmFnRHJvcE1vZHVsZSxcclxuICAgIFhQb3J0YWxNb2R1bGUsXHJcbiAgICBYT3V0bGV0TW9kdWxlLFxyXG4gICAgWEJ1dHRvbk1vZHVsZSxcclxuICAgIFhJY29uTW9kdWxlLFxyXG4gICAgWEkxOG5Nb2R1bGUsXHJcbiAgICBYQmFzZUZvcm1Nb2R1bGUsXHJcbiAgICBYSW1hZ2VNb2R1bGUsXHJcbiAgICBYUHJvZ3Jlc3NNb2R1bGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYVXBsb2FkTW9kdWxlIHt9XHJcbiJdfQ==