@wavemaker/app-ng-runtime 11.8.0-rc.5666 → 11.8.0-rc.5668

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 (2827) hide show
  1. app-ng-runtime/build-task/.npmignore +2 -0
  2. app-ng-runtime/build-task/package.json +28 -0
  3. app-ng-runtime/components/advanced/carousel/.npmignore +2 -0
  4. app-ng-runtime/components/advanced/carousel/package.json +23 -0
  5. app-ng-runtime/components/advanced/login/.npmignore +2 -0
  6. app-ng-runtime/components/advanced/login/package.json +23 -0
  7. app-ng-runtime/components/advanced/marquee/.npmignore +2 -0
  8. app-ng-runtime/components/advanced/marquee/package.json +23 -0
  9. app-ng-runtime/components/base/.npmignore +2 -0
  10. app-ng-runtime/components/base/bundles/index.umd.js +5364 -0
  11. app-ng-runtime/components/base/directives/show-in-device.directive.d.ts +15 -0
  12. app-ng-runtime/components/base/esm2022/directives/show-in-device.directive.mjs +71 -0
  13. app-ng-runtime/components/base/esm2022/widgets/common/base/base-field-validations.mjs +265 -0
  14. app-ng-runtime/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +43 -0
  15. app-ng-runtime/components/base/fesm2022/index.mjs +5242 -0
  16. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -0
  17. app-ng-runtime/components/base/package.json +28 -0
  18. app-ng-runtime/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +15 -0
  19. app-ng-runtime/components/basic/default/.npmignore +2 -0
  20. app-ng-runtime/components/basic/default/package.json +23 -0
  21. app-ng-runtime/components/basic/progress/.npmignore +2 -0
  22. app-ng-runtime/components/basic/progress/package.json +23 -0
  23. app-ng-runtime/components/basic/rich-text-editor/.npmignore +2 -0
  24. app-ng-runtime/components/basic/rich-text-editor/package.json +23 -0
  25. app-ng-runtime/components/basic/search/.npmignore +2 -0
  26. app-ng-runtime/components/basic/search/bundles/index.umd.js +1285 -0
  27. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +922 -0
  28. app-ng-runtime/components/basic/search/fesm2022/index.mjs +1273 -0
  29. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -0
  30. app-ng-runtime/components/basic/search/package.json +23 -0
  31. app-ng-runtime/components/basic/tree/.npmignore +2 -0
  32. app-ng-runtime/components/basic/tree/package.json +23 -0
  33. app-ng-runtime/components/chart/.npmignore +2 -0
  34. app-ng-runtime/components/chart/package.json +23 -0
  35. app-ng-runtime/components/containers/accordion/.npmignore +2 -0
  36. app-ng-runtime/components/containers/accordion/package.json +23 -0
  37. app-ng-runtime/components/containers/layout-grid/.npmignore +2 -0
  38. app-ng-runtime/components/containers/layout-grid/package.json +23 -0
  39. app-ng-runtime/components/containers/linear-layout/.npmignore +2 -0
  40. app-ng-runtime/components/containers/linear-layout/package.json +23 -0
  41. app-ng-runtime/components/containers/panel/.npmignore +2 -0
  42. app-ng-runtime/components/containers/panel/package.json +23 -0
  43. app-ng-runtime/components/containers/tabs/.npmignore +2 -0
  44. app-ng-runtime/components/containers/tabs/package.json +23 -0
  45. app-ng-runtime/components/containers/tile/.npmignore +2 -0
  46. app-ng-runtime/components/containers/tile/package.json +23 -0
  47. app-ng-runtime/components/containers/wizard/.npmignore +2 -0
  48. app-ng-runtime/components/containers/wizard/package.json +23 -0
  49. app-ng-runtime/components/data/card/.npmignore +2 -0
  50. app-ng-runtime/components/data/card/package.json +23 -0
  51. app-ng-runtime/components/data/form/.npmignore +2 -0
  52. app-ng-runtime/components/data/form/package.json +23 -0
  53. app-ng-runtime/components/data/list/.npmignore +2 -0
  54. app-ng-runtime/components/data/list/package.json +23 -0
  55. app-ng-runtime/components/data/live-table/.npmignore +2 -0
  56. app-ng-runtime/components/data/live-table/package.json +23 -0
  57. app-ng-runtime/components/data/pagination/.npmignore +2 -0
  58. app-ng-runtime/components/data/pagination/bundles/index.umd.js +835 -0
  59. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +771 -0
  60. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +828 -0
  61. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -0
  62. app-ng-runtime/components/data/pagination/package.json +23 -0
  63. app-ng-runtime/components/data/table/.npmignore +2 -0
  64. app-ng-runtime/components/data/table/bundles/index.umd.js +4530 -0
  65. app-ng-runtime/components/data/table/esm2022/table.component.mjs +2203 -0
  66. app-ng-runtime/components/data/table/fesm2022/index.mjs +4517 -0
  67. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -0
  68. app-ng-runtime/components/data/table/package.json +23 -0
  69. app-ng-runtime/components/dialogs/alert-dialog/.npmignore +2 -0
  70. app-ng-runtime/components/dialogs/alert-dialog/package.json +23 -0
  71. app-ng-runtime/components/dialogs/confirm-dialog/.npmignore +2 -0
  72. app-ng-runtime/components/dialogs/confirm-dialog/package.json +23 -0
  73. app-ng-runtime/components/dialogs/default/.npmignore +2 -0
  74. app-ng-runtime/components/dialogs/default/package.json +23 -0
  75. app-ng-runtime/components/dialogs/design-dialog/.npmignore +2 -0
  76. app-ng-runtime/components/dialogs/design-dialog/package.json +23 -0
  77. app-ng-runtime/components/dialogs/iframe-dialog/.npmignore +2 -0
  78. app-ng-runtime/components/dialogs/iframe-dialog/package.json +23 -0
  79. app-ng-runtime/components/dialogs/login-dialog/.npmignore +2 -0
  80. app-ng-runtime/components/dialogs/login-dialog/package.json +23 -0
  81. app-ng-runtime/components/dialogs/partial-dialog/.npmignore +2 -0
  82. app-ng-runtime/components/dialogs/partial-dialog/package.json +23 -0
  83. app-ng-runtime/components/input/calendar/.npmignore +2 -0
  84. app-ng-runtime/components/input/calendar/package.json +23 -0
  85. app-ng-runtime/components/input/chips/.npmignore +2 -0
  86. app-ng-runtime/components/input/chips/package.json +23 -0
  87. app-ng-runtime/components/input/color-picker/.npmignore +2 -0
  88. app-ng-runtime/components/input/color-picker/bundles/index.umd.js +202 -0
  89. app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +133 -0
  90. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +188 -0
  91. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -0
  92. app-ng-runtime/components/input/color-picker/package.json +23 -0
  93. app-ng-runtime/components/input/currency/.npmignore +2 -0
  94. app-ng-runtime/components/input/currency/package.json +23 -0
  95. app-ng-runtime/components/input/default/.npmignore +2 -0
  96. app-ng-runtime/components/input/default/bundles/index.umd.js +3416 -0
  97. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +176 -0
  98. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +203 -0
  99. app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +90 -0
  100. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +66 -0
  101. app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +66 -0
  102. app-ng-runtime/components/input/default/fesm2022/index.mjs +3385 -0
  103. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -0
  104. app-ng-runtime/components/input/default/package.json +23 -0
  105. app-ng-runtime/components/input/default/text/base/base-input.d.ts +33 -0
  106. app-ng-runtime/components/input/epoch/.npmignore +2 -0
  107. app-ng-runtime/components/input/epoch/bundles/index.umd.js +3140 -0
  108. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +353 -0
  109. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +508 -0
  110. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +381 -0
  111. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +3125 -0
  112. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -0
  113. app-ng-runtime/components/input/epoch/package.json +23 -0
  114. app-ng-runtime/components/input/file-upload/.npmignore +2 -0
  115. app-ng-runtime/components/input/file-upload/package.json +23 -0
  116. app-ng-runtime/components/input/rating/.npmignore +2 -0
  117. app-ng-runtime/components/input/rating/bundles/index.umd.js +343 -0
  118. app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +271 -0
  119. app-ng-runtime/components/input/rating/fesm2022/index.mjs +329 -0
  120. app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -0
  121. app-ng-runtime/components/input/rating/package.json +23 -0
  122. app-ng-runtime/components/input/slider/.npmignore +2 -0
  123. app-ng-runtime/components/input/slider/bundles/index.umd.js +156 -0
  124. app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +88 -0
  125. app-ng-runtime/components/input/slider/fesm2022/index.mjs +141 -0
  126. app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -0
  127. app-ng-runtime/components/input/slider/package.json +23 -0
  128. app-ng-runtime/components/navigation/breadcrumb/.npmignore +2 -0
  129. app-ng-runtime/components/navigation/breadcrumb/package.json +23 -0
  130. app-ng-runtime/components/navigation/menu/.npmignore +2 -0
  131. app-ng-runtime/components/navigation/menu/package.json +23 -0
  132. app-ng-runtime/components/navigation/navbar/.npmignore +2 -0
  133. app-ng-runtime/components/navigation/navbar/package.json +23 -0
  134. app-ng-runtime/components/navigation/popover/.npmignore +2 -0
  135. app-ng-runtime/components/navigation/popover/package.json +23 -0
  136. app-ng-runtime/components/page/default/.npmignore +2 -0
  137. app-ng-runtime/components/page/default/package.json +23 -0
  138. app-ng-runtime/components/page/footer/.npmignore +2 -0
  139. app-ng-runtime/components/page/footer/package.json +23 -0
  140. app-ng-runtime/components/page/header/.npmignore +2 -0
  141. app-ng-runtime/components/page/header/package.json +23 -0
  142. app-ng-runtime/components/page/left-panel/.npmignore +2 -0
  143. app-ng-runtime/components/page/left-panel/package.json +23 -0
  144. app-ng-runtime/components/page/right-panel/.npmignore +2 -0
  145. app-ng-runtime/components/page/right-panel/package.json +23 -0
  146. app-ng-runtime/components/page/top-nav/.npmignore +2 -0
  147. app-ng-runtime/components/page/top-nav/package.json +23 -0
  148. app-ng-runtime/components/prefab/.npmignore +2 -0
  149. app-ng-runtime/components/prefab/package.json +23 -0
  150. app-ng-runtime/core/.npmignore +2 -0
  151. app-ng-runtime/core/bundles/index.umd.js +5352 -0
  152. app-ng-runtime/core/esm2022/public_api.mjs +27 -0
  153. app-ng-runtime/core/esm2022/services/custom-icons-loader.service.mjs +26 -0
  154. app-ng-runtime/core/fesm2022/index.mjs +5182 -0
  155. app-ng-runtime/core/fesm2022/index.mjs.map +1 -0
  156. app-ng-runtime/core/package.json +29 -0
  157. app-ng-runtime/core/public_api.d.ts +23 -0
  158. app-ng-runtime/core/services/custom-icons-loader.service.d.ts +7 -0
  159. app-ng-runtime/http/.npmignore +2 -0
  160. app-ng-runtime/http/package.json +28 -0
  161. app-ng-runtime/mobile/components/basic/default/.npmignore +2 -0
  162. app-ng-runtime/mobile/components/basic/default/package.json +23 -0
  163. app-ng-runtime/mobile/components/basic/search/.npmignore +2 -0
  164. app-ng-runtime/mobile/components/basic/search/package.json +23 -0
  165. app-ng-runtime/mobile/components/containers/segmented-control/.npmignore +2 -0
  166. app-ng-runtime/mobile/components/containers/segmented-control/package.json +23 -0
  167. app-ng-runtime/mobile/components/data/media-list/.npmignore +2 -0
  168. app-ng-runtime/mobile/components/data/media-list/package.json +23 -0
  169. app-ng-runtime/mobile/components/device/barcode-scanner/.npmignore +2 -0
  170. app-ng-runtime/mobile/components/device/barcode-scanner/package.json +23 -0
  171. app-ng-runtime/mobile/components/device/camera/.npmignore +2 -0
  172. app-ng-runtime/mobile/components/device/camera/package.json +23 -0
  173. app-ng-runtime/mobile/components/input/file-upload/.npmignore +2 -0
  174. app-ng-runtime/mobile/components/input/file-upload/package.json +23 -0
  175. app-ng-runtime/mobile/components/page/default/.npmignore +2 -0
  176. app-ng-runtime/mobile/components/page/default/package.json +23 -0
  177. app-ng-runtime/mobile/components/page/left-panel/.npmignore +2 -0
  178. app-ng-runtime/mobile/components/page/left-panel/package.json +23 -0
  179. app-ng-runtime/mobile/components/page/mobile-navbar/.npmignore +2 -0
  180. app-ng-runtime/mobile/components/page/mobile-navbar/package.json +23 -0
  181. app-ng-runtime/mobile/components/page/tab-bar/.npmignore +2 -0
  182. app-ng-runtime/mobile/components/page/tab-bar/package.json +23 -0
  183. app-ng-runtime/mobile/core/.npmignore +2 -0
  184. app-ng-runtime/mobile/core/package.json +28 -0
  185. app-ng-runtime/mobile/offline/.npmignore +2 -0
  186. app-ng-runtime/mobile/offline/package.json +28 -0
  187. app-ng-runtime/mobile/placeholder/runtime/.npmignore +2 -0
  188. app-ng-runtime/mobile/placeholder/runtime/package.json +27 -0
  189. app-ng-runtime/mobile/placeholder/runtime-dynamic/.npmignore +2 -0
  190. app-ng-runtime/mobile/placeholder/runtime-dynamic/package.json +23 -0
  191. app-ng-runtime/mobile/runtime/.npmignore +2 -0
  192. app-ng-runtime/mobile/runtime/package.json +28 -0
  193. app-ng-runtime/mobile/runtime-dynamic/.npmignore +2 -0
  194. app-ng-runtime/mobile/runtime-dynamic/package.json +23 -0
  195. app-ng-runtime/mobile/variables/.npmignore +2 -0
  196. app-ng-runtime/mobile/variables/package.json +28 -0
  197. app-ng-runtime/oAuth/.npmignore +2 -0
  198. app-ng-runtime/oAuth/package.json +28 -0
  199. app-ng-runtime/package.json +11 -0
  200. app-ng-runtime/runtime/base/.npmignore +2 -0
  201. app-ng-runtime/runtime/base/bundles/index.umd.js +5216 -0
  202. app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +40 -0
  203. app-ng-runtime/runtime/base/directives/accessroles.directive.d.ts +39 -0
  204. app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +238 -0
  205. app-ng-runtime/runtime/base/esm2022/directives/accessroles.directive.mjs +108 -0
  206. app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +334 -0
  207. app-ng-runtime/runtime/base/fesm2022/index.mjs +5243 -0
  208. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -0
  209. app-ng-runtime/runtime/base/package.json +28 -0
  210. app-ng-runtime/runtime/dynamic/.npmignore +2 -0
  211. app-ng-runtime/runtime/dynamic/package.json +28 -0
  212. app-ng-runtime/security/.npmignore +2 -0
  213. app-ng-runtime/security/package.json +28 -0
  214. app-ng-runtime/swipey/.npmignore +2 -0
  215. app-ng-runtime/swipey/package.json +28 -0
  216. app-ng-runtime/transpiler/.npmignore +2 -0
  217. app-ng-runtime/transpiler/package.json +29 -0
  218. app-ng-runtime/variables/.npmignore +2 -0
  219. app-ng-runtime/variables/package.json +28 -0
  220. package/components/base/bundles/index.umd.js +0 -5360
  221. package/components/base/directives/show-in-device.directive.d.ts +0 -18
  222. package/components/base/esm2022/directives/show-in-device.directive.mjs +0 -73
  223. package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +0 -267
  224. package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +0 -36
  225. package/components/base/fesm2022/index.mjs +0 -5238
  226. package/components/base/fesm2022/index.mjs.map +0 -1
  227. package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +0 -15
  228. package/components/basic/search/bundles/index.umd.js +0 -1284
  229. package/components/basic/search/esm2022/search.component.mjs +0 -921
  230. package/components/basic/search/fesm2022/index.mjs +0 -1272
  231. package/components/basic/search/fesm2022/index.mjs.map +0 -1
  232. package/components/data/pagination/bundles/index.umd.js +0 -834
  233. package/components/data/pagination/esm2022/pagination.component.mjs +0 -770
  234. package/components/data/pagination/fesm2022/index.mjs +0 -827
  235. package/components/data/pagination/fesm2022/index.mjs.map +0 -1
  236. package/components/data/table/bundles/index.umd.js +0 -4531
  237. package/components/data/table/esm2022/table.component.mjs +0 -2204
  238. package/components/data/table/fesm2022/index.mjs +0 -4518
  239. package/components/data/table/fesm2022/index.mjs.map +0 -1
  240. package/components/input/color-picker/bundles/index.umd.js +0 -202
  241. package/components/input/color-picker/esm2022/color-picker.component.mjs +0 -133
  242. package/components/input/color-picker/fesm2022/index.mjs +0 -188
  243. package/components/input/color-picker/fesm2022/index.mjs.map +0 -1
  244. package/components/input/default/bundles/index.umd.js +0 -3411
  245. package/components/input/default/esm2022/checkbox/checkbox.component.mjs +0 -175
  246. package/components/input/default/esm2022/select/select.component.mjs +0 -202
  247. package/components/input/default/esm2022/text/base/base-input.mjs +0 -89
  248. package/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +0 -65
  249. package/components/input/default/esm2022/text/color/input-color.component.mjs +0 -65
  250. package/components/input/default/fesm2022/index.mjs +0 -3380
  251. package/components/input/default/fesm2022/index.mjs.map +0 -1
  252. package/components/input/default/text/base/base-input.d.ts +0 -32
  253. package/components/input/epoch/bundles/index.umd.js +0 -3138
  254. package/components/input/epoch/esm2022/date/date.component.mjs +0 -353
  255. package/components/input/epoch/esm2022/date-time/date-time.component.mjs +0 -507
  256. package/components/input/epoch/esm2022/time/time.component.mjs +0 -380
  257. package/components/input/epoch/fesm2022/index.mjs +0 -3123
  258. package/components/input/epoch/fesm2022/index.mjs.map +0 -1
  259. package/components/input/rating/bundles/index.umd.js +0 -341
  260. package/components/input/rating/esm2022/rating.component.mjs +0 -269
  261. package/components/input/rating/fesm2022/index.mjs +0 -327
  262. package/components/input/rating/fesm2022/index.mjs.map +0 -1
  263. package/components/input/slider/bundles/index.umd.js +0 -155
  264. package/components/input/slider/esm2022/slider.component.mjs +0 -87
  265. package/components/input/slider/fesm2022/index.mjs +0 -140
  266. package/components/input/slider/fesm2022/index.mjs.map +0 -1
  267. package/core/bundles/index.umd.js +0 -5329
  268. package/core/esm2022/public_api.mjs +0 -26
  269. package/core/fesm2022/index.mjs +0 -5160
  270. package/core/fesm2022/index.mjs.map +0 -1
  271. package/core/public_api.d.ts +0 -22
  272. package/npm-shrinkwrap.json +0 -17
  273. package/package.json +0 -16
  274. package/runtime/base/bundles/index.umd.js +0 -5205
  275. package/runtime/base/components/app-component/app.component.d.ts +0 -38
  276. package/runtime/base/directives/accessroles.directive.d.ts +0 -38
  277. package/runtime/base/esm2022/components/app-component/app.component.mjs +0 -234
  278. package/runtime/base/esm2022/directives/accessroles.directive.mjs +0 -101
  279. package/runtime/base/esm2022/services/i18n.service.mjs +0 -334
  280. package/runtime/base/fesm2022/index.mjs +0 -5232
  281. package/runtime/base/fesm2022/index.mjs.map +0 -1
  282. {package → app-ng-runtime}/build-task/advanced/carousel/carousel-template/carousel-template.build.d.ts +0 -0
  283. {package → app-ng-runtime}/build-task/advanced/carousel/carousel.build.d.ts +0 -0
  284. {package → app-ng-runtime}/build-task/advanced/login/login.build.d.ts +0 -0
  285. {package → app-ng-runtime}/build-task/advanced/marquee/marquee.build.d.ts +0 -0
  286. {package → app-ng-runtime}/build-task/basic/default/anchor/anchor.build.d.ts +0 -0
  287. {package → app-ng-runtime}/build-task/basic/default/audio/audio.build.d.ts +0 -0
  288. {package → app-ng-runtime}/build-task/basic/default/html/html.build.d.ts +0 -0
  289. {package → app-ng-runtime}/build-task/basic/default/icon/icon.build.d.ts +0 -0
  290. {package → app-ng-runtime}/build-task/basic/default/iframe/iframe.build.d.ts +0 -0
  291. {package → app-ng-runtime}/build-task/basic/default/label/label.build.d.ts +0 -0
  292. {package → app-ng-runtime}/build-task/basic/default/picture/picture.build.d.ts +0 -0
  293. {package → app-ng-runtime}/build-task/basic/default/spinner/spinner.build.d.ts +0 -0
  294. {package → app-ng-runtime}/build-task/basic/default/video/video.build.d.ts +0 -0
  295. {package → app-ng-runtime}/build-task/basic/progress/progress-bar/progress-bar.build.d.ts +0 -0
  296. {package → app-ng-runtime}/build-task/basic/progress/progress-circle/progress-circle.build.d.ts +0 -0
  297. {package → app-ng-runtime}/build-task/basic/rich-text-editor/rich-text-editor.build.d.ts +0 -0
  298. {package → app-ng-runtime}/build-task/basic/search/search.build.d.ts +0 -0
  299. {package → app-ng-runtime}/build-task/basic/tree/tree.build.d.ts +0 -0
  300. {package → app-ng-runtime}/build-task/bundles/index.umd.js +0 -0
  301. {package → app-ng-runtime}/build-task/chart/chart.build.d.ts +0 -0
  302. {package → app-ng-runtime}/build-task/containers/accordion/accordion-pane/accordion-pane.build.d.ts +0 -0
  303. {package → app-ng-runtime}/build-task/containers/accordion/accordion.build.d.ts +0 -0
  304. {package → app-ng-runtime}/build-task/containers/container.build.d.ts +0 -0
  305. {package → app-ng-runtime}/build-task/containers/layout-grid/layout-grid-column/layout-grid-column.build.d.ts +0 -0
  306. {package → app-ng-runtime}/build-task/containers/layout-grid/layout-grid-row/layout-grid-row.build.d.ts +0 -0
  307. {package → app-ng-runtime}/build-task/containers/layout-grid/layout-grid.build.d.ts +0 -0
  308. {package → app-ng-runtime}/build-task/containers/linear-layout/linear-layout-item/linear-layout-item.build.d.ts +0 -0
  309. {package → app-ng-runtime}/build-task/containers/linear-layout/linear-layout.build.d.ts +0 -0
  310. {package → app-ng-runtime}/build-task/containers/panel/panel.build.d.ts +0 -0
  311. {package → app-ng-runtime}/build-task/containers/repeat-template.build.d.ts +0 -0
  312. {package → app-ng-runtime}/build-task/containers/segmented-control/segment-content/segment-content.build.d.ts +0 -0
  313. {package → app-ng-runtime}/build-task/containers/segmented-control/segmented-control.build.d.ts +0 -0
  314. {package → app-ng-runtime}/build-task/containers/tabs/tab-pane/tab-pane.build.d.ts +0 -0
  315. {package → app-ng-runtime}/build-task/containers/tabs/tabs.build.d.ts +0 -0
  316. {package → app-ng-runtime}/build-task/containers/tile/tile.build.d.ts +0 -0
  317. {package → app-ng-runtime}/build-task/containers/wizard/wizard-step/wizard-step.build.d.ts +0 -0
  318. {package → app-ng-runtime}/build-task/containers/wizard/wizard.build.d.ts +0 -0
  319. {package → app-ng-runtime}/build-task/data/card/card-actions/card-actions.build.d.ts +0 -0
  320. {package → app-ng-runtime}/build-task/data/card/card-content/card-content.build.d.ts +0 -0
  321. {package → app-ng-runtime}/build-task/data/card/card-footer/card-footer.build.d.ts +0 -0
  322. {package → app-ng-runtime}/build-task/data/card/card.build.d.ts +0 -0
  323. {package → app-ng-runtime}/build-task/data/form/form-action/form-action.build.d.ts +0 -0
  324. {package → app-ng-runtime}/build-task/data/form/form-field/form-field.build.d.ts +0 -0
  325. {package → app-ng-runtime}/build-task/data/form/form.build.d.ts +0 -0
  326. {package → app-ng-runtime}/build-task/data/list/list.build.d.ts +0 -0
  327. {package → app-ng-runtime}/build-task/data/live-table/live-table.build.d.ts +0 -0
  328. {package → app-ng-runtime}/build-task/data/media-list/media-list-item/media-list-item.build.d.ts +0 -0
  329. {package → app-ng-runtime}/build-task/data/media-list/media-list.build.d.ts +0 -0
  330. {package → app-ng-runtime}/build-task/data/pagination/pagination.build.d.ts +0 -0
  331. {package → app-ng-runtime}/build-task/data/table/table-action/table-action.build.d.ts +0 -0
  332. {package → app-ng-runtime}/build-task/data/table/table-column/table-column.build.d.ts +0 -0
  333. {package → app-ng-runtime}/build-task/data/table/table-column-group/table-column-group.build.d.ts +0 -0
  334. {package → app-ng-runtime}/build-task/data/table/table-row/table-row.build.d.ts +0 -0
  335. {package → app-ng-runtime}/build-task/data/table/table-row-action/table-row-action.build.d.ts +0 -0
  336. {package → app-ng-runtime}/build-task/data/table/table.build.d.ts +0 -0
  337. {package → app-ng-runtime}/build-task/device/barcode-scanner/barcode-scanner.build.d.ts +0 -0
  338. {package → app-ng-runtime}/build-task/device/camera/camera.build.d.ts +0 -0
  339. {package → app-ng-runtime}/build-task/dialogs/alert-dialog/alert-dialog.build.d.ts +0 -0
  340. {package → app-ng-runtime}/build-task/dialogs/base/dialog-footer/dialog-footer.build.d.ts +0 -0
  341. {package → app-ng-runtime}/build-task/dialogs/confirm-dialog/confirm-dialog.build.d.ts +0 -0
  342. {package → app-ng-runtime}/build-task/dialogs/design-dialog/dialog.build.d.ts +0 -0
  343. {package → app-ng-runtime}/build-task/dialogs/iframe-dialog/iframe-dialog.build.d.ts +0 -0
  344. {package → app-ng-runtime}/build-task/dialogs/login-dialog/login-dialog.build.d.ts +0 -0
  345. {package → app-ng-runtime}/build-task/dialogs/partial-dialog/partial-dialog.build.d.ts +0 -0
  346. {package → app-ng-runtime}/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +0 -0
  347. {package → app-ng-runtime}/build-task/esm2022/advanced/carousel/carousel.build.mjs +0 -0
  348. {package → app-ng-runtime}/build-task/esm2022/advanced/login/login.build.mjs +0 -0
  349. {package → app-ng-runtime}/build-task/esm2022/advanced/marquee/marquee.build.mjs +0 -0
  350. {package → app-ng-runtime}/build-task/esm2022/basic/default/anchor/anchor.build.mjs +0 -0
  351. {package → app-ng-runtime}/build-task/esm2022/basic/default/audio/audio.build.mjs +0 -0
  352. {package → app-ng-runtime}/build-task/esm2022/basic/default/html/html.build.mjs +0 -0
  353. {package → app-ng-runtime}/build-task/esm2022/basic/default/icon/icon.build.mjs +0 -0
  354. {package → app-ng-runtime}/build-task/esm2022/basic/default/iframe/iframe.build.mjs +0 -0
  355. {package → app-ng-runtime}/build-task/esm2022/basic/default/label/label.build.mjs +0 -0
  356. {package → app-ng-runtime}/build-task/esm2022/basic/default/picture/picture.build.mjs +0 -0
  357. {package → app-ng-runtime}/build-task/esm2022/basic/default/spinner/spinner.build.mjs +0 -0
  358. {package → app-ng-runtime}/build-task/esm2022/basic/default/video/video.build.mjs +0 -0
  359. {package → app-ng-runtime}/build-task/esm2022/basic/progress/progress-bar/progress-bar.build.mjs +0 -0
  360. {package → app-ng-runtime}/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +0 -0
  361. {package → app-ng-runtime}/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +0 -0
  362. {package → app-ng-runtime}/build-task/esm2022/basic/search/search.build.mjs +0 -0
  363. {package → app-ng-runtime}/build-task/esm2022/basic/tree/tree.build.mjs +0 -0
  364. {package → app-ng-runtime}/build-task/esm2022/chart/chart.build.mjs +0 -0
  365. {package → app-ng-runtime}/build-task/esm2022/containers/accordion/accordion-pane/accordion-pane.build.mjs +0 -0
  366. {package → app-ng-runtime}/build-task/esm2022/containers/accordion/accordion.build.mjs +0 -0
  367. {package → app-ng-runtime}/build-task/esm2022/containers/container.build.mjs +0 -0
  368. {package → app-ng-runtime}/build-task/esm2022/containers/layout-grid/layout-grid-column/layout-grid-column.build.mjs +0 -0
  369. {package → app-ng-runtime}/build-task/esm2022/containers/layout-grid/layout-grid-row/layout-grid-row.build.mjs +0 -0
  370. {package → app-ng-runtime}/build-task/esm2022/containers/layout-grid/layout-grid.build.mjs +0 -0
  371. {package → app-ng-runtime}/build-task/esm2022/containers/linear-layout/linear-layout-item/linear-layout-item.build.mjs +0 -0
  372. {package → app-ng-runtime}/build-task/esm2022/containers/linear-layout/linear-layout.build.mjs +0 -0
  373. {package → app-ng-runtime}/build-task/esm2022/containers/panel/panel.build.mjs +0 -0
  374. {package → app-ng-runtime}/build-task/esm2022/containers/repeat-template.build.mjs +0 -0
  375. {package → app-ng-runtime}/build-task/esm2022/containers/segmented-control/segment-content/segment-content.build.mjs +0 -0
  376. {package → app-ng-runtime}/build-task/esm2022/containers/segmented-control/segmented-control.build.mjs +0 -0
  377. {package → app-ng-runtime}/build-task/esm2022/containers/tabs/tab-pane/tab-pane.build.mjs +0 -0
  378. {package → app-ng-runtime}/build-task/esm2022/containers/tabs/tabs.build.mjs +0 -0
  379. {package → app-ng-runtime}/build-task/esm2022/containers/tile/tile.build.mjs +0 -0
  380. {package → app-ng-runtime}/build-task/esm2022/containers/wizard/wizard-step/wizard-step.build.mjs +0 -0
  381. {package → app-ng-runtime}/build-task/esm2022/containers/wizard/wizard.build.mjs +0 -0
  382. {package → app-ng-runtime}/build-task/esm2022/data/card/card-actions/card-actions.build.mjs +0 -0
  383. {package → app-ng-runtime}/build-task/esm2022/data/card/card-content/card-content.build.mjs +0 -0
  384. {package → app-ng-runtime}/build-task/esm2022/data/card/card-footer/card-footer.build.mjs +0 -0
  385. {package → app-ng-runtime}/build-task/esm2022/data/card/card.build.mjs +0 -0
  386. {package → app-ng-runtime}/build-task/esm2022/data/form/form-action/form-action.build.mjs +0 -0
  387. {package → app-ng-runtime}/build-task/esm2022/data/form/form-field/form-field.build.mjs +0 -0
  388. {package → app-ng-runtime}/build-task/esm2022/data/form/form.build.mjs +0 -0
  389. {package → app-ng-runtime}/build-task/esm2022/data/list/list.build.mjs +0 -0
  390. {package → app-ng-runtime}/build-task/esm2022/data/live-table/live-table.build.mjs +0 -0
  391. {package → app-ng-runtime}/build-task/esm2022/data/media-list/media-list-item/media-list-item.build.mjs +0 -0
  392. {package → app-ng-runtime}/build-task/esm2022/data/media-list/media-list.build.mjs +0 -0
  393. {package → app-ng-runtime}/build-task/esm2022/data/pagination/pagination.build.mjs +0 -0
  394. {package → app-ng-runtime}/build-task/esm2022/data/table/table-action/table-action.build.mjs +0 -0
  395. {package → app-ng-runtime}/build-task/esm2022/data/table/table-column/table-column.build.mjs +0 -0
  396. {package → app-ng-runtime}/build-task/esm2022/data/table/table-column-group/table-column-group.build.mjs +0 -0
  397. {package → app-ng-runtime}/build-task/esm2022/data/table/table-row/table-row.build.mjs +0 -0
  398. {package → app-ng-runtime}/build-task/esm2022/data/table/table-row-action/table-row-action.build.mjs +0 -0
  399. {package → app-ng-runtime}/build-task/esm2022/data/table/table.build.mjs +0 -0
  400. {package → app-ng-runtime}/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +0 -0
  401. {package → app-ng-runtime}/build-task/esm2022/device/camera/camera.build.mjs +0 -0
  402. {package → app-ng-runtime}/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +0 -0
  403. {package → app-ng-runtime}/build-task/esm2022/dialogs/base/dialog-footer/dialog-footer.build.mjs +0 -0
  404. {package → app-ng-runtime}/build-task/esm2022/dialogs/confirm-dialog/confirm-dialog.build.mjs +0 -0
  405. {package → app-ng-runtime}/build-task/esm2022/dialogs/design-dialog/dialog.build.mjs +0 -0
  406. {package → app-ng-runtime}/build-task/esm2022/dialogs/iframe-dialog/iframe-dialog.build.mjs +0 -0
  407. {package → app-ng-runtime}/build-task/esm2022/dialogs/login-dialog/login-dialog.build.mjs +0 -0
  408. {package → app-ng-runtime}/build-task/esm2022/dialogs/partial-dialog/partial-dialog.build.mjs +0 -0
  409. {package → app-ng-runtime}/build-task/esm2022/index.mjs +0 -0
  410. {package → app-ng-runtime}/build-task/esm2022/input/calendar/calendar.build.mjs +0 -0
  411. {package → app-ng-runtime}/build-task/esm2022/input/chips/chips.build.mjs +0 -0
  412. {package → app-ng-runtime}/build-task/esm2022/input/color-picker/color-picker.build.mjs +0 -0
  413. {package → app-ng-runtime}/build-task/esm2022/input/currency/currency.build.mjs +0 -0
  414. {package → app-ng-runtime}/build-task/esm2022/input/default/button/button.build.mjs +0 -0
  415. {package → app-ng-runtime}/build-task/esm2022/input/default/button-group/button-group.build.mjs +0 -0
  416. {package → app-ng-runtime}/build-task/esm2022/input/default/checkbox/checkbox.build.mjs +0 -0
  417. {package → app-ng-runtime}/build-task/esm2022/input/default/checkboxset/checkboxset.build.mjs +0 -0
  418. {package → app-ng-runtime}/build-task/esm2022/input/default/composite/composite.build.mjs +0 -0
  419. {package → app-ng-runtime}/build-task/esm2022/input/default/number/number.build.mjs +0 -0
  420. {package → app-ng-runtime}/build-task/esm2022/input/default/radioset/radioset.build.mjs +0 -0
  421. {package → app-ng-runtime}/build-task/esm2022/input/default/select/select.build.mjs +0 -0
  422. {package → app-ng-runtime}/build-task/esm2022/input/default/switch/switch.build.mjs +0 -0
  423. {package → app-ng-runtime}/build-task/esm2022/input/default/text/text.build.mjs +0 -0
  424. {package → app-ng-runtime}/build-task/esm2022/input/default/textarea/textarea.build.mjs +0 -0
  425. {package → app-ng-runtime}/build-task/esm2022/input/epoch/date/date.build.mjs +0 -0
  426. {package → app-ng-runtime}/build-task/esm2022/input/epoch/date-time/date-time.build.mjs +0 -0
  427. {package → app-ng-runtime}/build-task/esm2022/input/epoch/time/time.build.mjs +0 -0
  428. {package → app-ng-runtime}/build-task/esm2022/input/file-upload/file-upload.build.mjs +0 -0
  429. {package → app-ng-runtime}/build-task/esm2022/input/rating/rating.build.mjs +0 -0
  430. {package → app-ng-runtime}/build-task/esm2022/input/slider/slider.build.mjs +0 -0
  431. {package → app-ng-runtime}/build-task/esm2022/message/message.build.mjs +0 -0
  432. {package → app-ng-runtime}/build-task/esm2022/navigation/breadcrumb/breadcrumb.build.mjs +0 -0
  433. {package → app-ng-runtime}/build-task/esm2022/navigation/menu/menu.build.mjs +0 -0
  434. {package → app-ng-runtime}/build-task/esm2022/navigation/nav/nav-item/nav-item.build.mjs +0 -0
  435. {package → app-ng-runtime}/build-task/esm2022/navigation/nav/nav.build.mjs +0 -0
  436. {package → app-ng-runtime}/build-task/esm2022/navigation/navbar/navbar.build.mjs +0 -0
  437. {package → app-ng-runtime}/build-task/esm2022/navigation/popover/popover.build.mjs +0 -0
  438. {package → app-ng-runtime}/build-task/esm2022/page/content/content.build.mjs +0 -0
  439. {package → app-ng-runtime}/build-task/esm2022/page/footer/footer.build.mjs +0 -0
  440. {package → app-ng-runtime}/build-task/esm2022/page/header/header.build.mjs +0 -0
  441. {package → app-ng-runtime}/build-task/esm2022/page/layout.build.mjs +0 -0
  442. {package → app-ng-runtime}/build-task/esm2022/page/left-panel/left-panel.build.mjs +0 -0
  443. {package → app-ng-runtime}/build-task/esm2022/page/mobile-navbar/mobile-navbar.build.mjs +0 -0
  444. {package → app-ng-runtime}/build-task/esm2022/page/page-content/page-content.build.mjs +0 -0
  445. {package → app-ng-runtime}/build-task/esm2022/page/page.build.mjs +0 -0
  446. {package → app-ng-runtime}/build-task/esm2022/page/right-panel/right-panel.build.mjs +0 -0
  447. {package → app-ng-runtime}/build-task/esm2022/page/router-outlet/router-outlet.build.mjs +0 -0
  448. {package → app-ng-runtime}/build-task/esm2022/page/tab-bar/tab-bar.build.mjs +0 -0
  449. {package → app-ng-runtime}/build-task/esm2022/page/top-nav/top-nav.build.mjs +0 -0
  450. {package → app-ng-runtime}/build-task/esm2022/partial/partial.build.mjs +0 -0
  451. {package → app-ng-runtime}/build-task/esm2022/partial-param/partial-param.build.mjs +0 -0
  452. {package → app-ng-runtime}/build-task/esm2022/prefab/prefab-container/prefab-container.build.mjs +0 -0
  453. {package → app-ng-runtime}/build-task/esm2022/prefab/prefab.build.mjs +0 -0
  454. {package → app-ng-runtime}/build-task/esm2022/public_api.mjs +0 -0
  455. {package → app-ng-runtime}/build-task/esm2022/utils/utils.mjs +0 -0
  456. {package → app-ng-runtime}/build-task/fesm2022/index.mjs +0 -0
  457. {package → app-ng-runtime}/build-task/fesm2022/index.mjs.map +0 -0
  458. {package → app-ng-runtime}/build-task/index.d.ts +0 -0
  459. {package → app-ng-runtime}/build-task/input/calendar/calendar.build.d.ts +0 -0
  460. {package → app-ng-runtime}/build-task/input/chips/chips.build.d.ts +0 -0
  461. {package → app-ng-runtime}/build-task/input/color-picker/color-picker.build.d.ts +0 -0
  462. {package → app-ng-runtime}/build-task/input/currency/currency.build.d.ts +0 -0
  463. {package → app-ng-runtime}/build-task/input/default/button/button.build.d.ts +0 -0
  464. {package → app-ng-runtime}/build-task/input/default/button-group/button-group.build.d.ts +0 -0
  465. {package → app-ng-runtime}/build-task/input/default/checkbox/checkbox.build.d.ts +0 -0
  466. {package → app-ng-runtime}/build-task/input/default/checkboxset/checkboxset.build.d.ts +0 -0
  467. {package → app-ng-runtime}/build-task/input/default/composite/composite.build.d.ts +0 -0
  468. {package → app-ng-runtime}/build-task/input/default/number/number.build.d.ts +0 -0
  469. {package → app-ng-runtime}/build-task/input/default/radioset/radioset.build.d.ts +0 -0
  470. {package → app-ng-runtime}/build-task/input/default/select/select.build.d.ts +0 -0
  471. {package → app-ng-runtime}/build-task/input/default/switch/switch.build.d.ts +0 -0
  472. {package → app-ng-runtime}/build-task/input/default/text/text.build.d.ts +0 -0
  473. {package → app-ng-runtime}/build-task/input/default/textarea/textarea.build.d.ts +0 -0
  474. {package → app-ng-runtime}/build-task/input/epoch/date/date.build.d.ts +0 -0
  475. {package → app-ng-runtime}/build-task/input/epoch/date-time/date-time.build.d.ts +0 -0
  476. {package → app-ng-runtime}/build-task/input/epoch/time/time.build.d.ts +0 -0
  477. {package → app-ng-runtime}/build-task/input/file-upload/file-upload.build.d.ts +0 -0
  478. {package → app-ng-runtime}/build-task/input/rating/rating.build.d.ts +0 -0
  479. {package → app-ng-runtime}/build-task/input/slider/slider.build.d.ts +0 -0
  480. {package → app-ng-runtime}/build-task/message/message.build.d.ts +0 -0
  481. {package → app-ng-runtime}/build-task/navigation/breadcrumb/breadcrumb.build.d.ts +0 -0
  482. {package → app-ng-runtime}/build-task/navigation/menu/menu.build.d.ts +0 -0
  483. {package → app-ng-runtime}/build-task/navigation/nav/nav-item/nav-item.build.d.ts +0 -0
  484. {package → app-ng-runtime}/build-task/navigation/nav/nav.build.d.ts +0 -0
  485. {package → app-ng-runtime}/build-task/navigation/navbar/navbar.build.d.ts +0 -0
  486. {package → app-ng-runtime}/build-task/navigation/popover/popover.build.d.ts +0 -0
  487. {package → app-ng-runtime}/build-task/page/content/content.build.d.ts +0 -0
  488. {package → app-ng-runtime}/build-task/page/footer/footer.build.d.ts +0 -0
  489. {package → app-ng-runtime}/build-task/page/header/header.build.d.ts +0 -0
  490. {package → app-ng-runtime}/build-task/page/layout.build.d.ts +0 -0
  491. {package → app-ng-runtime}/build-task/page/left-panel/left-panel.build.d.ts +0 -0
  492. {package → app-ng-runtime}/build-task/page/mobile-navbar/mobile-navbar.build.d.ts +0 -0
  493. {package → app-ng-runtime}/build-task/page/page-content/page-content.build.d.ts +0 -0
  494. {package → app-ng-runtime}/build-task/page/page.build.d.ts +0 -0
  495. {package → app-ng-runtime}/build-task/page/right-panel/right-panel.build.d.ts +0 -0
  496. {package → app-ng-runtime}/build-task/page/router-outlet/router-outlet.build.d.ts +0 -0
  497. {package → app-ng-runtime}/build-task/page/tab-bar/tab-bar.build.d.ts +0 -0
  498. {package → app-ng-runtime}/build-task/page/top-nav/top-nav.build.d.ts +0 -0
  499. {package → app-ng-runtime}/build-task/partial/partial.build.d.ts +0 -0
  500. {package → app-ng-runtime}/build-task/partial-param/partial-param.build.d.ts +0 -0
  501. {package → app-ng-runtime}/build-task/prefab/prefab-container/prefab-container.build.d.ts +0 -0
  502. {package → app-ng-runtime}/build-task/prefab/prefab.build.d.ts +0 -0
  503. {package → app-ng-runtime}/build-task/public_api.d.ts +0 -0
  504. {package → app-ng-runtime}/build-task/utils/utils.d.ts +0 -0
  505. {package → app-ng-runtime}/components/advanced/carousel/bundles/index.umd.js +0 -0
  506. {package → app-ng-runtime}/components/advanced/carousel/carousel-template/carousel-template.directive.d.ts +0 -0
  507. {package → app-ng-runtime}/components/advanced/carousel/carousel-template/carousel-template.props.d.ts +0 -0
  508. {package → app-ng-runtime}/components/advanced/carousel/carousel.animator.d.ts +0 -0
  509. {package → app-ng-runtime}/components/advanced/carousel/carousel.directive.d.ts +0 -0
  510. {package → app-ng-runtime}/components/advanced/carousel/carousel.module.d.ts +0 -0
  511. {package → app-ng-runtime}/components/advanced/carousel/carousel.props.d.ts +0 -0
  512. {package → app-ng-runtime}/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +0 -0
  513. {package → app-ng-runtime}/components/advanced/carousel/esm2022/carousel-template/carousel-template.props.mjs +0 -0
  514. {package → app-ng-runtime}/components/advanced/carousel/esm2022/carousel.animator.mjs +0 -0
  515. {package → app-ng-runtime}/components/advanced/carousel/esm2022/carousel.directive.mjs +0 -0
  516. {package → app-ng-runtime}/components/advanced/carousel/esm2022/carousel.module.mjs +0 -0
  517. {package → app-ng-runtime}/components/advanced/carousel/esm2022/carousel.props.mjs +0 -0
  518. {package → app-ng-runtime}/components/advanced/carousel/esm2022/index.mjs +0 -0
  519. {package → app-ng-runtime}/components/advanced/carousel/esm2022/public_api.mjs +0 -0
  520. {package → app-ng-runtime}/components/advanced/carousel/fesm2022/index.mjs +0 -0
  521. {package → app-ng-runtime}/components/advanced/carousel/fesm2022/index.mjs.map +0 -0
  522. {package → app-ng-runtime}/components/advanced/carousel/index.d.ts +0 -0
  523. {package → app-ng-runtime}/components/advanced/carousel/public_api.d.ts +0 -0
  524. {package → app-ng-runtime}/components/advanced/login/bundles/index.umd.js +0 -0
  525. {package → app-ng-runtime}/components/advanced/login/esm2022/index.mjs +0 -0
  526. {package → app-ng-runtime}/components/advanced/login/esm2022/login.component.mjs +0 -0
  527. {package → app-ng-runtime}/components/advanced/login/esm2022/login.module.mjs +0 -0
  528. {package → app-ng-runtime}/components/advanced/login/esm2022/login.props.mjs +0 -0
  529. {package → app-ng-runtime}/components/advanced/login/esm2022/public_api.mjs +0 -0
  530. {package → app-ng-runtime}/components/advanced/login/fesm2022/index.mjs +0 -0
  531. {package → app-ng-runtime}/components/advanced/login/fesm2022/index.mjs.map +0 -0
  532. {package → app-ng-runtime}/components/advanced/login/index.d.ts +0 -0
  533. {package → app-ng-runtime}/components/advanced/login/login.component.d.ts +0 -0
  534. {package → app-ng-runtime}/components/advanced/login/login.module.d.ts +0 -0
  535. {package → app-ng-runtime}/components/advanced/login/login.props.d.ts +0 -0
  536. {package → app-ng-runtime}/components/advanced/login/public_api.d.ts +0 -0
  537. {package → app-ng-runtime}/components/advanced/marquee/bundles/index.umd.js +0 -0
  538. {package → app-ng-runtime}/components/advanced/marquee/esm2022/index.mjs +0 -0
  539. {package → app-ng-runtime}/components/advanced/marquee/esm2022/marquee.directive.mjs +0 -0
  540. {package → app-ng-runtime}/components/advanced/marquee/esm2022/marquee.module.mjs +0 -0
  541. {package → app-ng-runtime}/components/advanced/marquee/esm2022/marquee.props.mjs +0 -0
  542. {package → app-ng-runtime}/components/advanced/marquee/esm2022/public_api.mjs +0 -0
  543. {package → app-ng-runtime}/components/advanced/marquee/fesm2022/index.mjs +0 -0
  544. {package → app-ng-runtime}/components/advanced/marquee/fesm2022/index.mjs.map +0 -0
  545. {package → app-ng-runtime}/components/advanced/marquee/index.d.ts +0 -0
  546. {package → app-ng-runtime}/components/advanced/marquee/marquee.directive.d.ts +0 -0
  547. {package → app-ng-runtime}/components/advanced/marquee/marquee.module.d.ts +0 -0
  548. {package → app-ng-runtime}/components/advanced/marquee/marquee.props.d.ts +0 -0
  549. {package → app-ng-runtime}/components/advanced/marquee/public_api.d.ts +0 -0
  550. {package → app-ng-runtime}/components/base/components.module.d.ts +0 -0
  551. {package → app-ng-runtime}/components/base/esm2022/components.module.mjs +0 -0
  552. {package → app-ng-runtime}/components/base/esm2022/index.mjs +0 -0
  553. {package → app-ng-runtime}/components/base/esm2022/pipes/custom-pipes.mjs +0 -0
  554. {package → app-ng-runtime}/components/base/esm2022/pipes/image.pipe.mjs +0 -0
  555. {package → app-ng-runtime}/components/base/esm2022/pipes/sanitize.pipe.mjs +0 -0
  556. {package → app-ng-runtime}/components/base/esm2022/pipes/trust-as.pipe.mjs +0 -0
  557. {package → app-ng-runtime}/components/base/esm2022/pipes/wm-pipe.mjs +0 -0
  558. {package → app-ng-runtime}/components/base/esm2022/public_api.mjs +0 -0
  559. {package → app-ng-runtime}/components/base/esm2022/utils/data-utils.mjs +0 -0
  560. {package → app-ng-runtime}/components/base/esm2022/utils/form-utils.mjs +0 -0
  561. {package → app-ng-runtime}/components/base/esm2022/utils/live-utils.mjs +0 -0
  562. {package → app-ng-runtime}/components/base/esm2022/utils/widget-utils.mjs +0 -0
  563. {package → app-ng-runtime}/components/base/esm2022/widgets/common/base/base-container.component.mjs +0 -0
  564. {package → app-ng-runtime}/components/base/esm2022/widgets/common/base/base.component.mjs +0 -0
  565. {package → app-ng-runtime}/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +0 -0
  566. {package → app-ng-runtime}/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +0 -0
  567. {package → app-ng-runtime}/components/base/esm2022/widgets/common/base/stylable.component.mjs +0 -0
  568. {package → app-ng-runtime}/components/base/esm2022/widgets/common/base/text-content.directive.mjs +0 -0
  569. {package → app-ng-runtime}/components/base/esm2022/widgets/common/container/container.directive.mjs +0 -0
  570. {package → app-ng-runtime}/components/base/esm2022/widgets/common/container/container.props.mjs +0 -0
  571. {package → app-ng-runtime}/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +0 -0
  572. {package → app-ng-runtime}/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +0 -0
  573. {package → app-ng-runtime}/components/base/esm2022/widgets/common/item-template/item-template.props.mjs +0 -0
  574. {package → app-ng-runtime}/components/base/esm2022/widgets/common/message/message.component.mjs +0 -0
  575. {package → app-ng-runtime}/components/base/esm2022/widgets/common/message/message.props.mjs +0 -0
  576. {package → app-ng-runtime}/components/base/esm2022/widgets/common/partial/partial.directive.mjs +0 -0
  577. {package → app-ng-runtime}/components/base/esm2022/widgets/common/partial/partial.props.mjs +0 -0
  578. {package → app-ng-runtime}/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +0 -0
  579. {package → app-ng-runtime}/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +0 -0
  580. {package → app-ng-runtime}/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +0 -0
  581. {package → app-ng-runtime}/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +0 -0
  582. {package → app-ng-runtime}/components/base/esm2022/widgets/common/repeat-template/repeat-template.props.mjs +0 -0
  583. {package → app-ng-runtime}/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +0 -0
  584. {package → app-ng-runtime}/components/base/esm2022/widgets/framework/constants.mjs +0 -0
  585. {package → app-ng-runtime}/components/base/esm2022/widgets/framework/deviceview.mjs +0 -0
  586. {package → app-ng-runtime}/components/base/esm2022/widgets/framework/property-change-handler.mjs +0 -0
  587. {package → app-ng-runtime}/components/base/esm2022/widgets/framework/styler.mjs +0 -0
  588. {package → app-ng-runtime}/components/base/esm2022/widgets/framework/types.mjs +0 -0
  589. {package → app-ng-runtime}/components/base/esm2022/widgets/framework/widget-id-generator.mjs +0 -0
  590. {package → app-ng-runtime}/components/base/esm2022/widgets/framework/widget-props.mjs +0 -0
  591. {package → app-ng-runtime}/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +0 -0
  592. {package → app-ng-runtime}/components/base/esm2022/widgets/framework/widget-registry.mjs +0 -0
  593. {package → app-ng-runtime}/components/base/index.d.ts +0 -0
  594. {package → app-ng-runtime}/components/base/pipes/custom-pipes.d.ts +0 -0
  595. {package → app-ng-runtime}/components/base/pipes/image.pipe.d.ts +0 -0
  596. {package → app-ng-runtime}/components/base/pipes/sanitize.pipe.d.ts +0 -0
  597. {package → app-ng-runtime}/components/base/pipes/trust-as.pipe.d.ts +0 -0
  598. {package → app-ng-runtime}/components/base/pipes/wm-pipe.d.ts +0 -0
  599. {package → app-ng-runtime}/components/base/public_api.d.ts +0 -0
  600. {package → app-ng-runtime}/components/base/utils/data-utils.d.ts +0 -0
  601. {package → app-ng-runtime}/components/base/utils/form-utils.d.ts +0 -0
  602. {package → app-ng-runtime}/components/base/utils/live-utils.d.ts +0 -0
  603. {package → app-ng-runtime}/components/base/utils/widget-utils.d.ts +0 -0
  604. {package → app-ng-runtime}/components/base/widgets/common/base/base-container.component.d.ts +0 -0
  605. {package → app-ng-runtime}/components/base/widgets/common/base/base-field-validations.d.ts +0 -0
  606. {package → app-ng-runtime}/components/base/widgets/common/base/base.component.d.ts +0 -0
  607. {package → app-ng-runtime}/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +0 -0
  608. {package → app-ng-runtime}/components/base/widgets/common/base/partial-container.directive.d.ts +0 -0
  609. {package → app-ng-runtime}/components/base/widgets/common/base/stylable.component.d.ts +0 -0
  610. {package → app-ng-runtime}/components/base/widgets/common/base/text-content.directive.d.ts +0 -0
  611. {package → app-ng-runtime}/components/base/widgets/common/container/container.directive.d.ts +0 -0
  612. {package → app-ng-runtime}/components/base/widgets/common/container/container.props.d.ts +0 -0
  613. {package → app-ng-runtime}/components/base/widgets/common/dialog/dialog.service.d.ts +0 -0
  614. {package → app-ng-runtime}/components/base/widgets/common/item-template/item-template.directive.d.ts +0 -0
  615. {package → app-ng-runtime}/components/base/widgets/common/item-template/item-template.props.d.ts +0 -0
  616. {package → app-ng-runtime}/components/base/widgets/common/message/message.component.d.ts +0 -0
  617. {package → app-ng-runtime}/components/base/widgets/common/message/message.props.d.ts +0 -0
  618. {package → app-ng-runtime}/components/base/widgets/common/partial/partial.directive.d.ts +0 -0
  619. {package → app-ng-runtime}/components/base/widgets/common/partial/partial.props.d.ts +0 -0
  620. {package → app-ng-runtime}/components/base/widgets/common/partial-param/partial-param.directive.d.ts +0 -0
  621. {package → app-ng-runtime}/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +0 -0
  622. {package → app-ng-runtime}/components/base/widgets/common/redraw/redrawable.directive.d.ts +0 -0
  623. {package → app-ng-runtime}/components/base/widgets/common/repeat-template/repeat-template.directive.d.ts +0 -0
  624. {package → app-ng-runtime}/components/base/widgets/common/repeat-template/repeat-template.props.d.ts +0 -0
  625. {package → app-ng-runtime}/components/base/widgets/common/smooth-scroll/smooth-scroll.directive.d.ts +0 -0
  626. {package → app-ng-runtime}/components/base/widgets/framework/constants.d.ts +0 -0
  627. {package → app-ng-runtime}/components/base/widgets/framework/deviceview.d.ts +0 -0
  628. {package → app-ng-runtime}/components/base/widgets/framework/property-change-handler.d.ts +0 -0
  629. {package → app-ng-runtime}/components/base/widgets/framework/styler.d.ts +0 -0
  630. {package → app-ng-runtime}/components/base/widgets/framework/types.d.ts +0 -0
  631. {package → app-ng-runtime}/components/base/widgets/framework/widget-id-generator.d.ts +0 -0
  632. {package → app-ng-runtime}/components/base/widgets/framework/widget-props.d.ts +0 -0
  633. {package → app-ng-runtime}/components/base/widgets/framework/widget-proxy-provider.d.ts +0 -0
  634. {package → app-ng-runtime}/components/base/widgets/framework/widget-registry.d.ts +0 -0
  635. {package → app-ng-runtime}/components/basic/default/anchor/anchor.component.d.ts +0 -0
  636. {package → app-ng-runtime}/components/basic/default/anchor/anchor.props.d.ts +0 -0
  637. {package → app-ng-runtime}/components/basic/default/audio/audio.component.d.ts +0 -0
  638. {package → app-ng-runtime}/components/basic/default/audio/audio.props.d.ts +0 -0
  639. {package → app-ng-runtime}/components/basic/default/basic.module.d.ts +0 -0
  640. {package → app-ng-runtime}/components/basic/default/bundles/index.umd.js +0 -0
  641. {package → app-ng-runtime}/components/basic/default/esm2022/anchor/anchor.component.mjs +0 -0
  642. {package → app-ng-runtime}/components/basic/default/esm2022/anchor/anchor.props.mjs +0 -0
  643. {package → app-ng-runtime}/components/basic/default/esm2022/audio/audio.component.mjs +0 -0
  644. {package → app-ng-runtime}/components/basic/default/esm2022/audio/audio.props.mjs +0 -0
  645. {package → app-ng-runtime}/components/basic/default/esm2022/basic.module.mjs +0 -0
  646. {package → app-ng-runtime}/components/basic/default/esm2022/html/html.directive.mjs +0 -0
  647. {package → app-ng-runtime}/components/basic/default/esm2022/html/html.props.mjs +0 -0
  648. {package → app-ng-runtime}/components/basic/default/esm2022/icon/icon.component.mjs +0 -0
  649. {package → app-ng-runtime}/components/basic/default/esm2022/icon/icon.props.mjs +0 -0
  650. {package → app-ng-runtime}/components/basic/default/esm2022/iframe/iframe.component.mjs +0 -0
  651. {package → app-ng-runtime}/components/basic/default/esm2022/iframe/iframe.props.mjs +0 -0
  652. {package → app-ng-runtime}/components/basic/default/esm2022/index.mjs +0 -0
  653. {package → app-ng-runtime}/components/basic/default/esm2022/label/label.directive.mjs +0 -0
  654. {package → app-ng-runtime}/components/basic/default/esm2022/label/label.props.mjs +0 -0
  655. {package → app-ng-runtime}/components/basic/default/esm2022/picture/picture.directive.mjs +0 -0
  656. {package → app-ng-runtime}/components/basic/default/esm2022/picture/picture.props.mjs +0 -0
  657. {package → app-ng-runtime}/components/basic/default/esm2022/public_api.mjs +0 -0
  658. {package → app-ng-runtime}/components/basic/default/esm2022/spinner/spinner.component.mjs +0 -0
  659. {package → app-ng-runtime}/components/basic/default/esm2022/spinner/spinner.props.mjs +0 -0
  660. {package → app-ng-runtime}/components/basic/default/esm2022/video/video.component.mjs +0 -0
  661. {package → app-ng-runtime}/components/basic/default/esm2022/video/video.props.mjs +0 -0
  662. {package → app-ng-runtime}/components/basic/default/fesm2022/index.mjs +0 -0
  663. {package → app-ng-runtime}/components/basic/default/fesm2022/index.mjs.map +0 -0
  664. {package → app-ng-runtime}/components/basic/default/html/html.directive.d.ts +0 -0
  665. {package → app-ng-runtime}/components/basic/default/html/html.props.d.ts +0 -0
  666. {package → app-ng-runtime}/components/basic/default/icon/icon.component.d.ts +0 -0
  667. {package → app-ng-runtime}/components/basic/default/icon/icon.props.d.ts +0 -0
  668. {package → app-ng-runtime}/components/basic/default/iframe/iframe.component.d.ts +0 -0
  669. {package → app-ng-runtime}/components/basic/default/iframe/iframe.props.d.ts +0 -0
  670. {package → app-ng-runtime}/components/basic/default/index.d.ts +0 -0
  671. {package → app-ng-runtime}/components/basic/default/label/label.directive.d.ts +0 -0
  672. {package → app-ng-runtime}/components/basic/default/label/label.props.d.ts +0 -0
  673. {package → app-ng-runtime}/components/basic/default/picture/picture.directive.d.ts +0 -0
  674. {package → app-ng-runtime}/components/basic/default/picture/picture.props.d.ts +0 -0
  675. {package → app-ng-runtime}/components/basic/default/public_api.d.ts +0 -0
  676. {package → app-ng-runtime}/components/basic/default/spinner/spinner.component.d.ts +0 -0
  677. {package → app-ng-runtime}/components/basic/default/spinner/spinner.props.d.ts +0 -0
  678. {package → app-ng-runtime}/components/basic/default/video/video.component.d.ts +0 -0
  679. {package → app-ng-runtime}/components/basic/default/video/video.props.d.ts +0 -0
  680. {package → app-ng-runtime}/components/basic/progress/bundles/index.umd.js +0 -0
  681. {package → app-ng-runtime}/components/basic/progress/esm2022/index.mjs +0 -0
  682. {package → app-ng-runtime}/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +0 -0
  683. {package → app-ng-runtime}/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +0 -0
  684. {package → app-ng-runtime}/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +0 -0
  685. {package → app-ng-runtime}/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +0 -0
  686. {package → app-ng-runtime}/components/basic/progress/esm2022/progress.module.mjs +0 -0
  687. {package → app-ng-runtime}/components/basic/progress/esm2022/public_api.mjs +0 -0
  688. {package → app-ng-runtime}/components/basic/progress/esm2022/utils.mjs +0 -0
  689. {package → app-ng-runtime}/components/basic/progress/fesm2022/index.mjs +0 -0
  690. {package → app-ng-runtime}/components/basic/progress/fesm2022/index.mjs.map +0 -0
  691. {package → app-ng-runtime}/components/basic/progress/index.d.ts +0 -0
  692. {package → app-ng-runtime}/components/basic/progress/progress-bar/progress-bar.component.d.ts +0 -0
  693. {package → app-ng-runtime}/components/basic/progress/progress-bar/progress-bar.props.d.ts +0 -0
  694. {package → app-ng-runtime}/components/basic/progress/progress-circle/progress-circle.component.d.ts +0 -0
  695. {package → app-ng-runtime}/components/basic/progress/progress-circle/progress-circle.props.d.ts +0 -0
  696. {package → app-ng-runtime}/components/basic/progress/progress.module.d.ts +0 -0
  697. {package → app-ng-runtime}/components/basic/progress/public_api.d.ts +0 -0
  698. {package → app-ng-runtime}/components/basic/progress/utils.d.ts +0 -0
  699. {package → app-ng-runtime}/components/basic/rich-text-editor/bundles/index.umd.js +0 -0
  700. {package → app-ng-runtime}/components/basic/rich-text-editor/esm2022/index.mjs +0 -0
  701. {package → app-ng-runtime}/components/basic/rich-text-editor/esm2022/public_api.mjs +0 -0
  702. {package → app-ng-runtime}/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +0 -0
  703. {package → app-ng-runtime}/components/basic/rich-text-editor/esm2022/rich-text-editor.module.mjs +0 -0
  704. {package → app-ng-runtime}/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +0 -0
  705. {package → app-ng-runtime}/components/basic/rich-text-editor/fesm2022/index.mjs +0 -0
  706. {package → app-ng-runtime}/components/basic/rich-text-editor/fesm2022/index.mjs.map +0 -0
  707. {package → app-ng-runtime}/components/basic/rich-text-editor/index.d.ts +0 -0
  708. {package → app-ng-runtime}/components/basic/rich-text-editor/public_api.d.ts +0 -0
  709. {package → app-ng-runtime}/components/basic/rich-text-editor/rich-text-editor.component.d.ts +0 -0
  710. {package → app-ng-runtime}/components/basic/rich-text-editor/rich-text-editor.module.d.ts +0 -0
  711. {package → app-ng-runtime}/components/basic/rich-text-editor/rich-text-editor.props.d.ts +0 -0
  712. {package → app-ng-runtime}/components/basic/search/data-provider/data-provider.d.ts +0 -0
  713. {package → app-ng-runtime}/components/basic/search/data-provider/local-data-provider.d.ts +0 -0
  714. {package → app-ng-runtime}/components/basic/search/data-provider/remote-data-provider.d.ts +0 -0
  715. {package → app-ng-runtime}/components/basic/search/esm2022/data-provider/data-provider.mjs +0 -0
  716. {package → app-ng-runtime}/components/basic/search/esm2022/data-provider/local-data-provider.mjs +0 -0
  717. {package → app-ng-runtime}/components/basic/search/esm2022/data-provider/remote-data-provider.mjs +0 -0
  718. {package → app-ng-runtime}/components/basic/search/esm2022/index.mjs +0 -0
  719. {package → app-ng-runtime}/components/basic/search/esm2022/public_api.mjs +0 -0
  720. {package → app-ng-runtime}/components/basic/search/esm2022/scrollable.directive.mjs +0 -0
  721. {package → app-ng-runtime}/components/basic/search/esm2022/search.module.mjs +0 -0
  722. {package → app-ng-runtime}/components/basic/search/esm2022/search.props.mjs +0 -0
  723. {package → app-ng-runtime}/components/basic/search/index.d.ts +0 -0
  724. {package → app-ng-runtime}/components/basic/search/public_api.d.ts +0 -0
  725. {package → app-ng-runtime}/components/basic/search/scrollable.directive.d.ts +0 -0
  726. {package → app-ng-runtime}/components/basic/search/search.component.d.ts +0 -0
  727. {package → app-ng-runtime}/components/basic/search/search.module.d.ts +0 -0
  728. {package → app-ng-runtime}/components/basic/search/search.props.d.ts +0 -0
  729. {package → app-ng-runtime}/components/basic/tree/bundles/index.umd.js +0 -0
  730. {package → app-ng-runtime}/components/basic/tree/esm2022/index.mjs +0 -0
  731. {package → app-ng-runtime}/components/basic/tree/esm2022/public_api.mjs +0 -0
  732. {package → app-ng-runtime}/components/basic/tree/esm2022/tree.component.mjs +0 -0
  733. {package → app-ng-runtime}/components/basic/tree/esm2022/tree.module.mjs +0 -0
  734. {package → app-ng-runtime}/components/basic/tree/esm2022/tree.props.mjs +0 -0
  735. {package → app-ng-runtime}/components/basic/tree/fesm2022/index.mjs +0 -0
  736. {package → app-ng-runtime}/components/basic/tree/fesm2022/index.mjs.map +0 -0
  737. {package → app-ng-runtime}/components/basic/tree/index.d.ts +0 -0
  738. {package → app-ng-runtime}/components/basic/tree/public_api.d.ts +0 -0
  739. {package → app-ng-runtime}/components/basic/tree/tree.component.d.ts +0 -0
  740. {package → app-ng-runtime}/components/basic/tree/tree.module.d.ts +0 -0
  741. {package → app-ng-runtime}/components/basic/tree/tree.props.d.ts +0 -0
  742. {package → app-ng-runtime}/components/chart/bundles/index.umd.js +0 -0
  743. {package → app-ng-runtime}/components/chart/chart.component.d.ts +0 -0
  744. {package → app-ng-runtime}/components/chart/chart.module.d.ts +0 -0
  745. {package → app-ng-runtime}/components/chart/chart.props.d.ts +0 -0
  746. {package → app-ng-runtime}/components/chart/chart.utils.d.ts +0 -0
  747. {package → app-ng-runtime}/components/chart/esm2022/chart.component.mjs +0 -0
  748. {package → app-ng-runtime}/components/chart/esm2022/chart.module.mjs +0 -0
  749. {package → app-ng-runtime}/components/chart/esm2022/chart.props.mjs +0 -0
  750. {package → app-ng-runtime}/components/chart/esm2022/chart.utils.mjs +0 -0
  751. {package → app-ng-runtime}/components/chart/esm2022/index.mjs +0 -0
  752. {package → app-ng-runtime}/components/chart/esm2022/public_api.mjs +0 -0
  753. {package → app-ng-runtime}/components/chart/fesm2022/index.mjs +0 -0
  754. {package → app-ng-runtime}/components/chart/fesm2022/index.mjs.map +0 -0
  755. {package → app-ng-runtime}/components/chart/index.d.ts +0 -0
  756. {package → app-ng-runtime}/components/chart/public_api.d.ts +0 -0
  757. {package → app-ng-runtime}/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +0 -0
  758. {package → app-ng-runtime}/components/containers/accordion/accordion-pane/accordion-pane.props.d.ts +0 -0
  759. {package → app-ng-runtime}/components/containers/accordion/accordion.directive.d.ts +0 -0
  760. {package → app-ng-runtime}/components/containers/accordion/accordion.module.d.ts +0 -0
  761. {package → app-ng-runtime}/components/containers/accordion/accordion.props.d.ts +0 -0
  762. {package → app-ng-runtime}/components/containers/accordion/bundles/index.umd.js +0 -0
  763. {package → app-ng-runtime}/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +0 -0
  764. {package → app-ng-runtime}/components/containers/accordion/esm2022/accordion-pane/accordion-pane.props.mjs +0 -0
  765. {package → app-ng-runtime}/components/containers/accordion/esm2022/accordion.directive.mjs +0 -0
  766. {package → app-ng-runtime}/components/containers/accordion/esm2022/accordion.module.mjs +0 -0
  767. {package → app-ng-runtime}/components/containers/accordion/esm2022/accordion.props.mjs +0 -0
  768. {package → app-ng-runtime}/components/containers/accordion/esm2022/index.mjs +0 -0
  769. {package → app-ng-runtime}/components/containers/accordion/esm2022/public_api.mjs +0 -0
  770. {package → app-ng-runtime}/components/containers/accordion/fesm2022/index.mjs +0 -0
  771. {package → app-ng-runtime}/components/containers/accordion/fesm2022/index.mjs.map +0 -0
  772. {package → app-ng-runtime}/components/containers/accordion/index.d.ts +0 -0
  773. {package → app-ng-runtime}/components/containers/accordion/public_api.d.ts +0 -0
  774. {package → app-ng-runtime}/components/containers/layout-grid/bundles/index.umd.js +0 -0
  775. {package → app-ng-runtime}/components/containers/layout-grid/esm2022/index.mjs +0 -0
  776. {package → app-ng-runtime}/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +0 -0
  777. {package → app-ng-runtime}/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.props.mjs +0 -0
  778. {package → app-ng-runtime}/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +0 -0
  779. {package → app-ng-runtime}/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.props.mjs +0 -0
  780. {package → app-ng-runtime}/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +0 -0
  781. {package → app-ng-runtime}/components/containers/layout-grid/esm2022/layout-grid.module.mjs +0 -0
  782. {package → app-ng-runtime}/components/containers/layout-grid/esm2022/layout-grid.props.mjs +0 -0
  783. {package → app-ng-runtime}/components/containers/layout-grid/esm2022/public_api.mjs +0 -0
  784. {package → app-ng-runtime}/components/containers/layout-grid/fesm2022/index.mjs +0 -0
  785. {package → app-ng-runtime}/components/containers/layout-grid/fesm2022/index.mjs.map +0 -0
  786. {package → app-ng-runtime}/components/containers/layout-grid/index.d.ts +0 -0
  787. {package → app-ng-runtime}/components/containers/layout-grid/layout-grid-column/layout-grid-column.directive.d.ts +0 -0
  788. {package → app-ng-runtime}/components/containers/layout-grid/layout-grid-column/layout-grid-column.props.d.ts +0 -0
  789. {package → app-ng-runtime}/components/containers/layout-grid/layout-grid-row/layout-grid-row.directive.d.ts +0 -0
  790. {package → app-ng-runtime}/components/containers/layout-grid/layout-grid-row/layout-grid-row.props.d.ts +0 -0
  791. {package → app-ng-runtime}/components/containers/layout-grid/layout-grid.directive.d.ts +0 -0
  792. {package → app-ng-runtime}/components/containers/layout-grid/layout-grid.module.d.ts +0 -0
  793. {package → app-ng-runtime}/components/containers/layout-grid/layout-grid.props.d.ts +0 -0
  794. {package → app-ng-runtime}/components/containers/layout-grid/public_api.d.ts +0 -0
  795. {package → app-ng-runtime}/components/containers/linear-layout/bundles/index.umd.js +0 -0
  796. {package → app-ng-runtime}/components/containers/linear-layout/esm2022/index.mjs +0 -0
  797. {package → app-ng-runtime}/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +0 -0
  798. {package → app-ng-runtime}/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.props.mjs +0 -0
  799. {package → app-ng-runtime}/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +0 -0
  800. {package → app-ng-runtime}/components/containers/linear-layout/esm2022/linear-layout.module.mjs +0 -0
  801. {package → app-ng-runtime}/components/containers/linear-layout/esm2022/linear-layout.props.mjs +0 -0
  802. {package → app-ng-runtime}/components/containers/linear-layout/esm2022/public_api.mjs +0 -0
  803. {package → app-ng-runtime}/components/containers/linear-layout/fesm2022/index.mjs +0 -0
  804. {package → app-ng-runtime}/components/containers/linear-layout/fesm2022/index.mjs.map +0 -0
  805. {package → app-ng-runtime}/components/containers/linear-layout/index.d.ts +0 -0
  806. {package → app-ng-runtime}/components/containers/linear-layout/linear-layout-item/linear-layout-item.directive.d.ts +0 -0
  807. {package → app-ng-runtime}/components/containers/linear-layout/linear-layout-item/linear-layout-item.props.d.ts +0 -0
  808. {package → app-ng-runtime}/components/containers/linear-layout/linear-layout.directive.d.ts +0 -0
  809. {package → app-ng-runtime}/components/containers/linear-layout/linear-layout.module.d.ts +0 -0
  810. {package → app-ng-runtime}/components/containers/linear-layout/linear-layout.props.d.ts +0 -0
  811. {package → app-ng-runtime}/components/containers/linear-layout/public_api.d.ts +0 -0
  812. {package → app-ng-runtime}/components/containers/panel/bundles/index.umd.js +0 -0
  813. {package → app-ng-runtime}/components/containers/panel/esm2022/index.mjs +0 -0
  814. {package → app-ng-runtime}/components/containers/panel/esm2022/panel.component.mjs +0 -0
  815. {package → app-ng-runtime}/components/containers/panel/esm2022/panel.module.mjs +0 -0
  816. {package → app-ng-runtime}/components/containers/panel/esm2022/panel.props.mjs +0 -0
  817. {package → app-ng-runtime}/components/containers/panel/esm2022/public_api.mjs +0 -0
  818. {package → app-ng-runtime}/components/containers/panel/fesm2022/index.mjs +0 -0
  819. {package → app-ng-runtime}/components/containers/panel/fesm2022/index.mjs.map +0 -0
  820. {package → app-ng-runtime}/components/containers/panel/index.d.ts +0 -0
  821. {package → app-ng-runtime}/components/containers/panel/panel.component.d.ts +0 -0
  822. {package → app-ng-runtime}/components/containers/panel/panel.module.d.ts +0 -0
  823. {package → app-ng-runtime}/components/containers/panel/panel.props.d.ts +0 -0
  824. {package → app-ng-runtime}/components/containers/panel/public_api.d.ts +0 -0
  825. {package → app-ng-runtime}/components/containers/tabs/bundles/index.umd.js +0 -0
  826. {package → app-ng-runtime}/components/containers/tabs/esm2022/index.mjs +0 -0
  827. {package → app-ng-runtime}/components/containers/tabs/esm2022/public_api.mjs +0 -0
  828. {package → app-ng-runtime}/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +0 -0
  829. {package → app-ng-runtime}/components/containers/tabs/esm2022/tab-pane/tab-pane.props.mjs +0 -0
  830. {package → app-ng-runtime}/components/containers/tabs/esm2022/tabs.animator.mjs +0 -0
  831. {package → app-ng-runtime}/components/containers/tabs/esm2022/tabs.component.mjs +0 -0
  832. {package → app-ng-runtime}/components/containers/tabs/esm2022/tabs.module.mjs +0 -0
  833. {package → app-ng-runtime}/components/containers/tabs/esm2022/tabs.props.mjs +0 -0
  834. {package → app-ng-runtime}/components/containers/tabs/fesm2022/index.mjs +0 -0
  835. {package → app-ng-runtime}/components/containers/tabs/fesm2022/index.mjs.map +0 -0
  836. {package → app-ng-runtime}/components/containers/tabs/index.d.ts +0 -0
  837. {package → app-ng-runtime}/components/containers/tabs/public_api.d.ts +0 -0
  838. {package → app-ng-runtime}/components/containers/tabs/tab-pane/tab-pane.component.d.ts +0 -0
  839. {package → app-ng-runtime}/components/containers/tabs/tab-pane/tab-pane.props.d.ts +0 -0
  840. {package → app-ng-runtime}/components/containers/tabs/tabs.animator.d.ts +0 -0
  841. {package → app-ng-runtime}/components/containers/tabs/tabs.component.d.ts +0 -0
  842. {package → app-ng-runtime}/components/containers/tabs/tabs.module.d.ts +0 -0
  843. {package → app-ng-runtime}/components/containers/tabs/tabs.props.d.ts +0 -0
  844. {package → app-ng-runtime}/components/containers/tile/bundles/index.umd.js +0 -0
  845. {package → app-ng-runtime}/components/containers/tile/esm2022/index.mjs +0 -0
  846. {package → app-ng-runtime}/components/containers/tile/esm2022/public_api.mjs +0 -0
  847. {package → app-ng-runtime}/components/containers/tile/esm2022/tile.directive.mjs +0 -0
  848. {package → app-ng-runtime}/components/containers/tile/esm2022/tile.module.mjs +0 -0
  849. {package → app-ng-runtime}/components/containers/tile/esm2022/tile.props.mjs +0 -0
  850. {package → app-ng-runtime}/components/containers/tile/fesm2022/index.mjs +0 -0
  851. {package → app-ng-runtime}/components/containers/tile/fesm2022/index.mjs.map +0 -0
  852. {package → app-ng-runtime}/components/containers/tile/index.d.ts +0 -0
  853. {package → app-ng-runtime}/components/containers/tile/public_api.d.ts +0 -0
  854. {package → app-ng-runtime}/components/containers/tile/tile.directive.d.ts +0 -0
  855. {package → app-ng-runtime}/components/containers/tile/tile.module.d.ts +0 -0
  856. {package → app-ng-runtime}/components/containers/tile/tile.props.d.ts +0 -0
  857. {package → app-ng-runtime}/components/containers/wizard/bundles/index.umd.js +0 -0
  858. {package → app-ng-runtime}/components/containers/wizard/esm2022/index.mjs +0 -0
  859. {package → app-ng-runtime}/components/containers/wizard/esm2022/public_api.mjs +0 -0
  860. {package → app-ng-runtime}/components/containers/wizard/esm2022/wizard-step/wizard-step.directive.mjs +0 -0
  861. {package → app-ng-runtime}/components/containers/wizard/esm2022/wizard-step/wizard-step.props.mjs +0 -0
  862. {package → app-ng-runtime}/components/containers/wizard/esm2022/wizard.component.mjs +0 -0
  863. {package → app-ng-runtime}/components/containers/wizard/esm2022/wizard.module.mjs +0 -0
  864. {package → app-ng-runtime}/components/containers/wizard/esm2022/wizard.props.mjs +0 -0
  865. {package → app-ng-runtime}/components/containers/wizard/fesm2022/index.mjs +0 -0
  866. {package → app-ng-runtime}/components/containers/wizard/fesm2022/index.mjs.map +0 -0
  867. {package → app-ng-runtime}/components/containers/wizard/index.d.ts +0 -0
  868. {package → app-ng-runtime}/components/containers/wizard/public_api.d.ts +0 -0
  869. {package → app-ng-runtime}/components/containers/wizard/wizard-step/wizard-step.directive.d.ts +0 -0
  870. {package → app-ng-runtime}/components/containers/wizard/wizard-step/wizard-step.props.d.ts +0 -0
  871. {package → app-ng-runtime}/components/containers/wizard/wizard.component.d.ts +0 -0
  872. {package → app-ng-runtime}/components/containers/wizard/wizard.module.d.ts +0 -0
  873. {package → app-ng-runtime}/components/containers/wizard/wizard.props.d.ts +0 -0
  874. {package → app-ng-runtime}/components/data/card/bundles/index.umd.js +0 -0
  875. {package → app-ng-runtime}/components/data/card/card-actions/card-actions.directive.d.ts +0 -0
  876. {package → app-ng-runtime}/components/data/card/card-actions/card-actions.props.d.ts +0 -0
  877. {package → app-ng-runtime}/components/data/card/card-content/card-content.component.d.ts +0 -0
  878. {package → app-ng-runtime}/components/data/card/card-content/card-content.props.d.ts +0 -0
  879. {package → app-ng-runtime}/components/data/card/card-footer/card-footer.directive.d.ts +0 -0
  880. {package → app-ng-runtime}/components/data/card/card-footer/card-footer.props.d.ts +0 -0
  881. {package → app-ng-runtime}/components/data/card/card.component.d.ts +0 -0
  882. {package → app-ng-runtime}/components/data/card/card.module.d.ts +0 -0
  883. {package → app-ng-runtime}/components/data/card/card.props.d.ts +0 -0
  884. {package → app-ng-runtime}/components/data/card/esm2022/card-actions/card-actions.directive.mjs +0 -0
  885. {package → app-ng-runtime}/components/data/card/esm2022/card-actions/card-actions.props.mjs +0 -0
  886. {package → app-ng-runtime}/components/data/card/esm2022/card-content/card-content.component.mjs +0 -0
  887. {package → app-ng-runtime}/components/data/card/esm2022/card-content/card-content.props.mjs +0 -0
  888. {package → app-ng-runtime}/components/data/card/esm2022/card-footer/card-footer.directive.mjs +0 -0
  889. {package → app-ng-runtime}/components/data/card/esm2022/card-footer/card-footer.props.mjs +0 -0
  890. {package → app-ng-runtime}/components/data/card/esm2022/card.component.mjs +0 -0
  891. {package → app-ng-runtime}/components/data/card/esm2022/card.module.mjs +0 -0
  892. {package → app-ng-runtime}/components/data/card/esm2022/card.props.mjs +0 -0
  893. {package → app-ng-runtime}/components/data/card/esm2022/index.mjs +0 -0
  894. {package → app-ng-runtime}/components/data/card/esm2022/public_api.mjs +0 -0
  895. {package → app-ng-runtime}/components/data/card/fesm2022/index.mjs +0 -0
  896. {package → app-ng-runtime}/components/data/card/fesm2022/index.mjs.map +0 -0
  897. {package → app-ng-runtime}/components/data/card/index.d.ts +0 -0
  898. {package → app-ng-runtime}/components/data/card/public_api.d.ts +0 -0
  899. {package → app-ng-runtime}/components/data/form/bundles/index.umd.js +0 -0
  900. {package → app-ng-runtime}/components/data/form/esm2022/form-action/form-action.directive.mjs +0 -0
  901. {package → app-ng-runtime}/components/data/form/esm2022/form-action/form-action.props.mjs +0 -0
  902. {package → app-ng-runtime}/components/data/form/esm2022/form-field/form-field.directive.mjs +0 -0
  903. {package → app-ng-runtime}/components/data/form/esm2022/form-field/form-field.props.mjs +0 -0
  904. {package → app-ng-runtime}/components/data/form/esm2022/form-widget.directive.mjs +0 -0
  905. {package → app-ng-runtime}/components/data/form/esm2022/form.component.mjs +0 -0
  906. {package → app-ng-runtime}/components/data/form/esm2022/form.module.mjs +0 -0
  907. {package → app-ng-runtime}/components/data/form/esm2022/form.props.mjs +0 -0
  908. {package → app-ng-runtime}/components/data/form/esm2022/index.mjs +0 -0
  909. {package → app-ng-runtime}/components/data/form/esm2022/live-actions/dependson.directive.mjs +0 -0
  910. {package → app-ng-runtime}/components/data/form/esm2022/live-actions/live-actions.directive.mjs +0 -0
  911. {package → app-ng-runtime}/components/data/form/esm2022/live-filter/live-filter.directive.mjs +0 -0
  912. {package → app-ng-runtime}/components/data/form/esm2022/live-form/live-form.directive.mjs +0 -0
  913. {package → app-ng-runtime}/components/data/form/esm2022/public_api.mjs +0 -0
  914. {package → app-ng-runtime}/components/data/form/fesm2022/index.mjs +0 -0
  915. {package → app-ng-runtime}/components/data/form/fesm2022/index.mjs.map +0 -0
  916. {package → app-ng-runtime}/components/data/form/form-action/form-action.directive.d.ts +0 -0
  917. {package → app-ng-runtime}/components/data/form/form-action/form-action.props.d.ts +0 -0
  918. {package → app-ng-runtime}/components/data/form/form-field/form-field.directive.d.ts +0 -0
  919. {package → app-ng-runtime}/components/data/form/form-field/form-field.props.d.ts +0 -0
  920. {package → app-ng-runtime}/components/data/form/form-widget.directive.d.ts +0 -0
  921. {package → app-ng-runtime}/components/data/form/form.component.d.ts +0 -0
  922. {package → app-ng-runtime}/components/data/form/form.module.d.ts +0 -0
  923. {package → app-ng-runtime}/components/data/form/form.props.d.ts +0 -0
  924. {package → app-ng-runtime}/components/data/form/index.d.ts +0 -0
  925. {package → app-ng-runtime}/components/data/form/live-actions/dependson.directive.d.ts +0 -0
  926. {package → app-ng-runtime}/components/data/form/live-actions/live-actions.directive.d.ts +0 -0
  927. {package → app-ng-runtime}/components/data/form/live-filter/live-filter.directive.d.ts +0 -0
  928. {package → app-ng-runtime}/components/data/form/live-form/live-form.directive.d.ts +0 -0
  929. {package → app-ng-runtime}/components/data/form/public_api.d.ts +0 -0
  930. {package → app-ng-runtime}/components/data/list/bundles/index.umd.js +0 -0
  931. {package → app-ng-runtime}/components/data/list/esm2022/index.mjs +0 -0
  932. {package → app-ng-runtime}/components/data/list/esm2022/list-item.directive.mjs +0 -0
  933. {package → app-ng-runtime}/components/data/list/esm2022/list.animator.mjs +0 -0
  934. {package → app-ng-runtime}/components/data/list/esm2022/list.component.mjs +0 -0
  935. {package → app-ng-runtime}/components/data/list/esm2022/list.module.mjs +0 -0
  936. {package → app-ng-runtime}/components/data/list/esm2022/list.props.mjs +0 -0
  937. {package → app-ng-runtime}/components/data/list/esm2022/public_api.mjs +0 -0
  938. {package → app-ng-runtime}/components/data/list/fesm2022/index.mjs +0 -0
  939. {package → app-ng-runtime}/components/data/list/fesm2022/index.mjs.map +0 -0
  940. {package → app-ng-runtime}/components/data/list/index.d.ts +0 -0
  941. {package → app-ng-runtime}/components/data/list/list-item.directive.d.ts +0 -0
  942. {package → app-ng-runtime}/components/data/list/list.animator.d.ts +0 -0
  943. {package → app-ng-runtime}/components/data/list/list.component.d.ts +0 -0
  944. {package → app-ng-runtime}/components/data/list/list.module.d.ts +0 -0
  945. {package → app-ng-runtime}/components/data/list/list.props.d.ts +0 -0
  946. {package → app-ng-runtime}/components/data/list/public_api.d.ts +0 -0
  947. {package → app-ng-runtime}/components/data/live-table/bundles/index.umd.js +0 -0
  948. {package → app-ng-runtime}/components/data/live-table/esm2022/index.mjs +0 -0
  949. {package → app-ng-runtime}/components/data/live-table/esm2022/live-table.component.mjs +0 -0
  950. {package → app-ng-runtime}/components/data/live-table/esm2022/live-table.module.mjs +0 -0
  951. {package → app-ng-runtime}/components/data/live-table/esm2022/live-table.props.mjs +0 -0
  952. {package → app-ng-runtime}/components/data/live-table/esm2022/public_api.mjs +0 -0
  953. {package → app-ng-runtime}/components/data/live-table/fesm2022/index.mjs +0 -0
  954. {package → app-ng-runtime}/components/data/live-table/fesm2022/index.mjs.map +0 -0
  955. {package → app-ng-runtime}/components/data/live-table/index.d.ts +0 -0
  956. {package → app-ng-runtime}/components/data/live-table/live-table.component.d.ts +0 -0
  957. {package → app-ng-runtime}/components/data/live-table/live-table.module.d.ts +0 -0
  958. {package → app-ng-runtime}/components/data/live-table/live-table.props.d.ts +0 -0
  959. {package → app-ng-runtime}/components/data/live-table/public_api.d.ts +0 -0
  960. {package → app-ng-runtime}/components/data/pagination/esm2022/index.mjs +0 -0
  961. {package → app-ng-runtime}/components/data/pagination/esm2022/pagination.module.mjs +0 -0
  962. {package → app-ng-runtime}/components/data/pagination/esm2022/pagination.props.mjs +0 -0
  963. {package → app-ng-runtime}/components/data/pagination/esm2022/public_api.mjs +0 -0
  964. {package → app-ng-runtime}/components/data/pagination/index.d.ts +0 -0
  965. {package → app-ng-runtime}/components/data/pagination/pagination.component.d.ts +0 -0
  966. {package → app-ng-runtime}/components/data/pagination/pagination.module.d.ts +0 -0
  967. {package → app-ng-runtime}/components/data/pagination/pagination.props.d.ts +0 -0
  968. {package → app-ng-runtime}/components/data/pagination/public_api.d.ts +0 -0
  969. {package → app-ng-runtime}/components/data/table/esm2022/index.mjs +0 -0
  970. {package → app-ng-runtime}/components/data/table/esm2022/public_api.mjs +0 -0
  971. {package → app-ng-runtime}/components/data/table/esm2022/table-action/table-action.directive.mjs +0 -0
  972. {package → app-ng-runtime}/components/data/table/esm2022/table-action/table-action.props.mjs +0 -0
  973. {package → app-ng-runtime}/components/data/table/esm2022/table-column/table-column.directive.mjs +0 -0
  974. {package → app-ng-runtime}/components/data/table/esm2022/table-column/table-column.props.mjs +0 -0
  975. {package → app-ng-runtime}/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +0 -0
  976. {package → app-ng-runtime}/components/data/table/esm2022/table-column-group/table-column-group.props.mjs +0 -0
  977. {package → app-ng-runtime}/components/data/table/esm2022/table-cud.directive.mjs +0 -0
  978. {package → app-ng-runtime}/components/data/table/esm2022/table-filter.directive.mjs +0 -0
  979. {package → app-ng-runtime}/components/data/table/esm2022/table-row/table-row.directive.mjs +0 -0
  980. {package → app-ng-runtime}/components/data/table/esm2022/table-row/table-row.props.mjs +0 -0
  981. {package → app-ng-runtime}/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +0 -0
  982. {package → app-ng-runtime}/components/data/table/esm2022/table-row-action/table-row-action.props.mjs +0 -0
  983. {package → app-ng-runtime}/components/data/table/esm2022/table.module.mjs +0 -0
  984. {package → app-ng-runtime}/components/data/table/esm2022/table.props.mjs +0 -0
  985. {package → app-ng-runtime}/components/data/table/index.d.ts +0 -0
  986. {package → app-ng-runtime}/components/data/table/public_api.d.ts +0 -0
  987. {package → app-ng-runtime}/components/data/table/table-action/table-action.directive.d.ts +0 -0
  988. {package → app-ng-runtime}/components/data/table/table-action/table-action.props.d.ts +0 -0
  989. {package → app-ng-runtime}/components/data/table/table-column/table-column.directive.d.ts +0 -0
  990. {package → app-ng-runtime}/components/data/table/table-column/table-column.props.d.ts +0 -0
  991. {package → app-ng-runtime}/components/data/table/table-column-group/table-column-group.directive.d.ts +0 -0
  992. {package → app-ng-runtime}/components/data/table/table-column-group/table-column-group.props.d.ts +0 -0
  993. {package → app-ng-runtime}/components/data/table/table-cud.directive.d.ts +0 -0
  994. {package → app-ng-runtime}/components/data/table/table-filter.directive.d.ts +0 -0
  995. {package → app-ng-runtime}/components/data/table/table-row/table-row.directive.d.ts +0 -0
  996. {package → app-ng-runtime}/components/data/table/table-row/table-row.props.d.ts +0 -0
  997. {package → app-ng-runtime}/components/data/table/table-row-action/table-row-action.directive.d.ts +0 -0
  998. {package → app-ng-runtime}/components/data/table/table-row-action/table-row-action.props.d.ts +0 -0
  999. {package → app-ng-runtime}/components/data/table/table.component.d.ts +0 -0
  1000. {package → app-ng-runtime}/components/data/table/table.module.d.ts +0 -0
  1001. {package → app-ng-runtime}/components/data/table/table.props.d.ts +0 -0
  1002. {package → app-ng-runtime}/components/dialogs/alert-dialog/alert-dialog.component.d.ts +0 -0
  1003. {package → app-ng-runtime}/components/dialogs/alert-dialog/alert-dialog.module.d.ts +0 -0
  1004. {package → app-ng-runtime}/components/dialogs/alert-dialog/alert-dialog.props.d.ts +0 -0
  1005. {package → app-ng-runtime}/components/dialogs/alert-dialog/bundles/index.umd.js +0 -0
  1006. {package → app-ng-runtime}/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +0 -0
  1007. {package → app-ng-runtime}/components/dialogs/alert-dialog/esm2022/alert-dialog.module.mjs +0 -0
  1008. {package → app-ng-runtime}/components/dialogs/alert-dialog/esm2022/alert-dialog.props.mjs +0 -0
  1009. {package → app-ng-runtime}/components/dialogs/alert-dialog/esm2022/index.mjs +0 -0
  1010. {package → app-ng-runtime}/components/dialogs/alert-dialog/esm2022/public_api.mjs +0 -0
  1011. {package → app-ng-runtime}/components/dialogs/alert-dialog/fesm2022/index.mjs +0 -0
  1012. {package → app-ng-runtime}/components/dialogs/alert-dialog/fesm2022/index.mjs.map +0 -0
  1013. {package → app-ng-runtime}/components/dialogs/alert-dialog/index.d.ts +0 -0
  1014. {package → app-ng-runtime}/components/dialogs/alert-dialog/public_api.d.ts +0 -0
  1015. {package → app-ng-runtime}/components/dialogs/confirm-dialog/bundles/index.umd.js +0 -0
  1016. {package → app-ng-runtime}/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +0 -0
  1017. {package → app-ng-runtime}/components/dialogs/confirm-dialog/confirm-dialog.module.d.ts +0 -0
  1018. {package → app-ng-runtime}/components/dialogs/confirm-dialog/confirm-dialog.props.d.ts +0 -0
  1019. {package → app-ng-runtime}/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +0 -0
  1020. {package → app-ng-runtime}/components/dialogs/confirm-dialog/esm2022/confirm-dialog.module.mjs +0 -0
  1021. {package → app-ng-runtime}/components/dialogs/confirm-dialog/esm2022/confirm-dialog.props.mjs +0 -0
  1022. {package → app-ng-runtime}/components/dialogs/confirm-dialog/esm2022/index.mjs +0 -0
  1023. {package → app-ng-runtime}/components/dialogs/confirm-dialog/esm2022/public_api.mjs +0 -0
  1024. {package → app-ng-runtime}/components/dialogs/confirm-dialog/fesm2022/index.mjs +0 -0
  1025. {package → app-ng-runtime}/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +0 -0
  1026. {package → app-ng-runtime}/components/dialogs/confirm-dialog/index.d.ts +0 -0
  1027. {package → app-ng-runtime}/components/dialogs/confirm-dialog/public_api.d.ts +0 -0
  1028. {package → app-ng-runtime}/components/dialogs/default/base-dialog.d.ts +0 -0
  1029. {package → app-ng-runtime}/components/dialogs/default/bundles/index.umd.js +0 -0
  1030. {package → app-ng-runtime}/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +0 -0
  1031. {package → app-ng-runtime}/components/dialogs/default/dialog-footer/dialog-footer.directive.d.ts +0 -0
  1032. {package → app-ng-runtime}/components/dialogs/default/dialog-footer/dialog-footer.props.d.ts +0 -0
  1033. {package → app-ng-runtime}/components/dialogs/default/dialog-header/dialog-header.component.d.ts +0 -0
  1034. {package → app-ng-runtime}/components/dialogs/default/dialog.module.d.ts +0 -0
  1035. {package → app-ng-runtime}/components/dialogs/default/esm2022/base-dialog.mjs +0 -0
  1036. {package → app-ng-runtime}/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +0 -0
  1037. {package → app-ng-runtime}/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +0 -0
  1038. {package → app-ng-runtime}/components/dialogs/default/esm2022/dialog-footer/dialog-footer.props.mjs +0 -0
  1039. {package → app-ng-runtime}/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +0 -0
  1040. {package → app-ng-runtime}/components/dialogs/default/esm2022/dialog.module.mjs +0 -0
  1041. {package → app-ng-runtime}/components/dialogs/default/esm2022/index.mjs +0 -0
  1042. {package → app-ng-runtime}/components/dialogs/default/esm2022/public_api.mjs +0 -0
  1043. {package → app-ng-runtime}/components/dialogs/default/fesm2022/index.mjs +0 -0
  1044. {package → app-ng-runtime}/components/dialogs/default/fesm2022/index.mjs.map +0 -0
  1045. {package → app-ng-runtime}/components/dialogs/default/index.d.ts +0 -0
  1046. {package → app-ng-runtime}/components/dialogs/default/public_api.d.ts +0 -0
  1047. {package → app-ng-runtime}/components/dialogs/design-dialog/bundles/index.umd.js +0 -0
  1048. {package → app-ng-runtime}/components/dialogs/design-dialog/design-dialog.module.d.ts +0 -0
  1049. {package → app-ng-runtime}/components/dialogs/design-dialog/dialog.component.d.ts +0 -0
  1050. {package → app-ng-runtime}/components/dialogs/design-dialog/dialog.props.d.ts +0 -0
  1051. {package → app-ng-runtime}/components/dialogs/design-dialog/esm2022/design-dialog.module.mjs +0 -0
  1052. {package → app-ng-runtime}/components/dialogs/design-dialog/esm2022/dialog.component.mjs +0 -0
  1053. {package → app-ng-runtime}/components/dialogs/design-dialog/esm2022/dialog.props.mjs +0 -0
  1054. {package → app-ng-runtime}/components/dialogs/design-dialog/esm2022/index.mjs +0 -0
  1055. {package → app-ng-runtime}/components/dialogs/design-dialog/esm2022/public_api.mjs +0 -0
  1056. {package → app-ng-runtime}/components/dialogs/design-dialog/fesm2022/index.mjs +0 -0
  1057. {package → app-ng-runtime}/components/dialogs/design-dialog/fesm2022/index.mjs.map +0 -0
  1058. {package → app-ng-runtime}/components/dialogs/design-dialog/index.d.ts +0 -0
  1059. {package → app-ng-runtime}/components/dialogs/design-dialog/public_api.d.ts +0 -0
  1060. {package → app-ng-runtime}/components/dialogs/iframe-dialog/bundles/index.umd.js +0 -0
  1061. {package → app-ng-runtime}/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +0 -0
  1062. {package → app-ng-runtime}/components/dialogs/iframe-dialog/esm2022/iframe-dialog.module.mjs +0 -0
  1063. {package → app-ng-runtime}/components/dialogs/iframe-dialog/esm2022/iframe-dialog.props.mjs +0 -0
  1064. {package → app-ng-runtime}/components/dialogs/iframe-dialog/esm2022/index.mjs +0 -0
  1065. {package → app-ng-runtime}/components/dialogs/iframe-dialog/esm2022/public_api.mjs +0 -0
  1066. {package → app-ng-runtime}/components/dialogs/iframe-dialog/fesm2022/index.mjs +0 -0
  1067. {package → app-ng-runtime}/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +0 -0
  1068. {package → app-ng-runtime}/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +0 -0
  1069. {package → app-ng-runtime}/components/dialogs/iframe-dialog/iframe-dialog.module.d.ts +0 -0
  1070. {package → app-ng-runtime}/components/dialogs/iframe-dialog/iframe-dialog.props.d.ts +0 -0
  1071. {package → app-ng-runtime}/components/dialogs/iframe-dialog/index.d.ts +0 -0
  1072. {package → app-ng-runtime}/components/dialogs/iframe-dialog/public_api.d.ts +0 -0
  1073. {package → app-ng-runtime}/components/dialogs/login-dialog/bundles/index.umd.js +0 -0
  1074. {package → app-ng-runtime}/components/dialogs/login-dialog/esm2022/index.mjs +0 -0
  1075. {package → app-ng-runtime}/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +0 -0
  1076. {package → app-ng-runtime}/components/dialogs/login-dialog/esm2022/login-dialog.module.mjs +0 -0
  1077. {package → app-ng-runtime}/components/dialogs/login-dialog/esm2022/public_api.mjs +0 -0
  1078. {package → app-ng-runtime}/components/dialogs/login-dialog/fesm2022/index.mjs +0 -0
  1079. {package → app-ng-runtime}/components/dialogs/login-dialog/fesm2022/index.mjs.map +0 -0
  1080. {package → app-ng-runtime}/components/dialogs/login-dialog/index.d.ts +0 -0
  1081. {package → app-ng-runtime}/components/dialogs/login-dialog/login-dialog.directive.d.ts +0 -0
  1082. {package → app-ng-runtime}/components/dialogs/login-dialog/login-dialog.module.d.ts +0 -0
  1083. {package → app-ng-runtime}/components/dialogs/login-dialog/public_api.d.ts +0 -0
  1084. {package → app-ng-runtime}/components/dialogs/partial-dialog/bundles/index.umd.js +0 -0
  1085. {package → app-ng-runtime}/components/dialogs/partial-dialog/esm2022/index.mjs +0 -0
  1086. {package → app-ng-runtime}/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +0 -0
  1087. {package → app-ng-runtime}/components/dialogs/partial-dialog/esm2022/partial-dialog.module.mjs +0 -0
  1088. {package → app-ng-runtime}/components/dialogs/partial-dialog/esm2022/partial-dialog.props.mjs +0 -0
  1089. {package → app-ng-runtime}/components/dialogs/partial-dialog/esm2022/public_api.mjs +0 -0
  1090. {package → app-ng-runtime}/components/dialogs/partial-dialog/fesm2022/index.mjs +0 -0
  1091. {package → app-ng-runtime}/components/dialogs/partial-dialog/fesm2022/index.mjs.map +0 -0
  1092. {package → app-ng-runtime}/components/dialogs/partial-dialog/index.d.ts +0 -0
  1093. {package → app-ng-runtime}/components/dialogs/partial-dialog/partial-dialog.component.d.ts +0 -0
  1094. {package → app-ng-runtime}/components/dialogs/partial-dialog/partial-dialog.module.d.ts +0 -0
  1095. {package → app-ng-runtime}/components/dialogs/partial-dialog/partial-dialog.props.d.ts +0 -0
  1096. {package → app-ng-runtime}/components/dialogs/partial-dialog/public_api.d.ts +0 -0
  1097. {package → app-ng-runtime}/components/input/calendar/bundles/index.umd.js +0 -0
  1098. {package → app-ng-runtime}/components/input/calendar/calendar.component.d.ts +0 -0
  1099. {package → app-ng-runtime}/components/input/calendar/calendar.module.d.ts +0 -0
  1100. {package → app-ng-runtime}/components/input/calendar/calendar.props.d.ts +0 -0
  1101. {package → app-ng-runtime}/components/input/calendar/esm2022/calendar.component.mjs +0 -0
  1102. {package → app-ng-runtime}/components/input/calendar/esm2022/calendar.module.mjs +0 -0
  1103. {package → app-ng-runtime}/components/input/calendar/esm2022/calendar.props.mjs +0 -0
  1104. {package → app-ng-runtime}/components/input/calendar/esm2022/index.mjs +0 -0
  1105. {package → app-ng-runtime}/components/input/calendar/esm2022/public_api.mjs +0 -0
  1106. {package → app-ng-runtime}/components/input/calendar/fesm2022/index.mjs +0 -0
  1107. {package → app-ng-runtime}/components/input/calendar/fesm2022/index.mjs.map +0 -0
  1108. {package → app-ng-runtime}/components/input/calendar/index.d.ts +0 -0
  1109. {package → app-ng-runtime}/components/input/calendar/public_api.d.ts +0 -0
  1110. {package → app-ng-runtime}/components/input/chips/bundles/index.umd.js +0 -0
  1111. {package → app-ng-runtime}/components/input/chips/chips.component.d.ts +0 -0
  1112. {package → app-ng-runtime}/components/input/chips/chips.module.d.ts +0 -0
  1113. {package → app-ng-runtime}/components/input/chips/chips.props.d.ts +0 -0
  1114. {package → app-ng-runtime}/components/input/chips/esm2022/chips.component.mjs +0 -0
  1115. {package → app-ng-runtime}/components/input/chips/esm2022/chips.module.mjs +0 -0
  1116. {package → app-ng-runtime}/components/input/chips/esm2022/chips.props.mjs +0 -0
  1117. {package → app-ng-runtime}/components/input/chips/esm2022/index.mjs +0 -0
  1118. {package → app-ng-runtime}/components/input/chips/esm2022/public_api.mjs +0 -0
  1119. {package → app-ng-runtime}/components/input/chips/fesm2022/index.mjs +0 -0
  1120. {package → app-ng-runtime}/components/input/chips/fesm2022/index.mjs.map +0 -0
  1121. {package → app-ng-runtime}/components/input/chips/index.d.ts +0 -0
  1122. {package → app-ng-runtime}/components/input/chips/public_api.d.ts +0 -0
  1123. {package → app-ng-runtime}/components/input/color-picker/color-picker.component.d.ts +0 -0
  1124. {package → app-ng-runtime}/components/input/color-picker/color-picker.module.d.ts +0 -0
  1125. {package → app-ng-runtime}/components/input/color-picker/color-picker.props.d.ts +0 -0
  1126. {package → app-ng-runtime}/components/input/color-picker/esm2022/color-picker.module.mjs +0 -0
  1127. {package → app-ng-runtime}/components/input/color-picker/esm2022/color-picker.props.mjs +0 -0
  1128. {package → app-ng-runtime}/components/input/color-picker/esm2022/index.mjs +0 -0
  1129. {package → app-ng-runtime}/components/input/color-picker/esm2022/public_api.mjs +0 -0
  1130. {package → app-ng-runtime}/components/input/color-picker/index.d.ts +0 -0
  1131. {package → app-ng-runtime}/components/input/color-picker/public_api.d.ts +0 -0
  1132. {package → app-ng-runtime}/components/input/currency/bundles/index.umd.js +0 -0
  1133. {package → app-ng-runtime}/components/input/currency/currency.component.d.ts +0 -0
  1134. {package → app-ng-runtime}/components/input/currency/currency.module.d.ts +0 -0
  1135. {package → app-ng-runtime}/components/input/currency/currency.props.d.ts +0 -0
  1136. {package → app-ng-runtime}/components/input/currency/esm2022/currency.component.mjs +0 -0
  1137. {package → app-ng-runtime}/components/input/currency/esm2022/currency.module.mjs +0 -0
  1138. {package → app-ng-runtime}/components/input/currency/esm2022/currency.props.mjs +0 -0
  1139. {package → app-ng-runtime}/components/input/currency/esm2022/index.mjs +0 -0
  1140. {package → app-ng-runtime}/components/input/currency/esm2022/public_api.mjs +0 -0
  1141. {package → app-ng-runtime}/components/input/currency/fesm2022/index.mjs +0 -0
  1142. {package → app-ng-runtime}/components/input/currency/fesm2022/index.mjs.map +0 -0
  1143. {package → app-ng-runtime}/components/input/currency/index.d.ts +0 -0
  1144. {package → app-ng-runtime}/components/input/currency/public_api.d.ts +0 -0
  1145. {package → app-ng-runtime}/components/input/default/base-form-custom.component.d.ts +0 -0
  1146. {package → app-ng-runtime}/components/input/default/base-form.component.d.ts +0 -0
  1147. {package → app-ng-runtime}/components/input/default/button/button.component.d.ts +0 -0
  1148. {package → app-ng-runtime}/components/input/default/button/button.props.d.ts +0 -0
  1149. {package → app-ng-runtime}/components/input/default/button-group/button-group.directive.d.ts +0 -0
  1150. {package → app-ng-runtime}/components/input/default/button-group/button-group.props.d.ts +0 -0
  1151. {package → app-ng-runtime}/components/input/default/caption-position.directive.d.ts +0 -0
  1152. {package → app-ng-runtime}/components/input/default/checkbox/checkbox.component.d.ts +0 -0
  1153. {package → app-ng-runtime}/components/input/default/checkbox/checkbox.props.d.ts +0 -0
  1154. {package → app-ng-runtime}/components/input/default/checkboxset/checkboxset.component.d.ts +0 -0
  1155. {package → app-ng-runtime}/components/input/default/checkboxset/checkboxset.props.d.ts +0 -0
  1156. {package → app-ng-runtime}/components/input/default/composite/composite.directive.d.ts +0 -0
  1157. {package → app-ng-runtime}/components/input/default/composite/composite.props.d.ts +0 -0
  1158. {package → app-ng-runtime}/components/input/default/dataset-aware-form.component.d.ts +0 -0
  1159. {package → app-ng-runtime}/components/input/default/esm2022/base-form-custom.component.mjs +0 -0
  1160. {package → app-ng-runtime}/components/input/default/esm2022/base-form.component.mjs +0 -0
  1161. {package → app-ng-runtime}/components/input/default/esm2022/button/button.component.mjs +0 -0
  1162. {package → app-ng-runtime}/components/input/default/esm2022/button/button.props.mjs +0 -0
  1163. {package → app-ng-runtime}/components/input/default/esm2022/button-group/button-group.directive.mjs +0 -0
  1164. {package → app-ng-runtime}/components/input/default/esm2022/button-group/button-group.props.mjs +0 -0
  1165. {package → app-ng-runtime}/components/input/default/esm2022/caption-position.directive.mjs +0 -0
  1166. {package → app-ng-runtime}/components/input/default/esm2022/checkbox/checkbox.props.mjs +0 -0
  1167. {package → app-ng-runtime}/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +0 -0
  1168. {package → app-ng-runtime}/components/input/default/esm2022/checkboxset/checkboxset.props.mjs +0 -0
  1169. {package → app-ng-runtime}/components/input/default/esm2022/composite/composite.directive.mjs +0 -0
  1170. {package → app-ng-runtime}/components/input/default/esm2022/composite/composite.props.mjs +0 -0
  1171. {package → app-ng-runtime}/components/input/default/esm2022/dataset-aware-form.component.mjs +0 -0
  1172. {package → app-ng-runtime}/components/input/default/esm2022/index.mjs +0 -0
  1173. {package → app-ng-runtime}/components/input/default/esm2022/input.module.mjs +0 -0
  1174. {package → app-ng-runtime}/components/input/default/esm2022/number/number.component.mjs +0 -0
  1175. {package → app-ng-runtime}/components/input/default/esm2022/number/number.props.mjs +0 -0
  1176. {package → app-ng-runtime}/components/input/default/esm2022/public_api.mjs +0 -0
  1177. {package → app-ng-runtime}/components/input/default/esm2022/radioset/radioset.component.mjs +0 -0
  1178. {package → app-ng-runtime}/components/input/default/esm2022/radioset/radioset.props.mjs +0 -0
  1179. {package → app-ng-runtime}/components/input/default/esm2022/select/select.props.mjs +0 -0
  1180. {package → app-ng-runtime}/components/input/default/esm2022/switch/switch.component.mjs +0 -0
  1181. {package → app-ng-runtime}/components/input/default/esm2022/switch/switch.props.mjs +0 -0
  1182. {package → app-ng-runtime}/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +0 -0
  1183. {package → app-ng-runtime}/components/input/default/esm2022/text/color/input-color.props.mjs +0 -0
  1184. {package → app-ng-runtime}/components/input/default/esm2022/text/email/input-email.component.mjs +0 -0
  1185. {package → app-ng-runtime}/components/input/default/esm2022/text/email/input-email.props.mjs +0 -0
  1186. {package → app-ng-runtime}/components/input/default/esm2022/text/locale/number-locale.mjs +0 -0
  1187. {package → app-ng-runtime}/components/input/default/esm2022/text/number/input-number.component.mjs +0 -0
  1188. {package → app-ng-runtime}/components/input/default/esm2022/text/number/input-number.props.mjs +0 -0
  1189. {package → app-ng-runtime}/components/input/default/esm2022/text/text/input-text.component.mjs +0 -0
  1190. {package → app-ng-runtime}/components/input/default/esm2022/text/text/input-text.props.mjs +0 -0
  1191. {package → app-ng-runtime}/components/input/default/esm2022/textarea/textarea.component.mjs +0 -0
  1192. {package → app-ng-runtime}/components/input/default/esm2022/textarea/textarea.props.mjs +0 -0
  1193. {package → app-ng-runtime}/components/input/default/index.d.ts +0 -0
  1194. {package → app-ng-runtime}/components/input/default/input.module.d.ts +0 -0
  1195. {package → app-ng-runtime}/components/input/default/number/number.component.d.ts +0 -0
  1196. {package → app-ng-runtime}/components/input/default/number/number.props.d.ts +0 -0
  1197. {package → app-ng-runtime}/components/input/default/public_api.d.ts +0 -0
  1198. {package → app-ng-runtime}/components/input/default/radioset/radioset.component.d.ts +0 -0
  1199. {package → app-ng-runtime}/components/input/default/radioset/radioset.props.d.ts +0 -0
  1200. {package → app-ng-runtime}/components/input/default/select/select.component.d.ts +0 -0
  1201. {package → app-ng-runtime}/components/input/default/select/select.props.d.ts +0 -0
  1202. {package → app-ng-runtime}/components/input/default/switch/switch.component.d.ts +0 -0
  1203. {package → app-ng-runtime}/components/input/default/switch/switch.props.d.ts +0 -0
  1204. {package → app-ng-runtime}/components/input/default/text/calendar/input-calendar.component.d.ts +0 -0
  1205. {package → app-ng-runtime}/components/input/default/text/calendar/input-calendar.props.d.ts +0 -0
  1206. {package → app-ng-runtime}/components/input/default/text/color/input-color.component.d.ts +0 -0
  1207. {package → app-ng-runtime}/components/input/default/text/color/input-color.props.d.ts +0 -0
  1208. {package → app-ng-runtime}/components/input/default/text/email/input-email.component.d.ts +0 -0
  1209. {package → app-ng-runtime}/components/input/default/text/email/input-email.props.d.ts +0 -0
  1210. {package → app-ng-runtime}/components/input/default/text/locale/number-locale.d.ts +0 -0
  1211. {package → app-ng-runtime}/components/input/default/text/number/input-number.component.d.ts +0 -0
  1212. {package → app-ng-runtime}/components/input/default/text/number/input-number.props.d.ts +0 -0
  1213. {package → app-ng-runtime}/components/input/default/text/text/input-text.component.d.ts +0 -0
  1214. {package → app-ng-runtime}/components/input/default/text/text/input-text.props.d.ts +0 -0
  1215. {package → app-ng-runtime}/components/input/default/textarea/textarea.component.d.ts +0 -0
  1216. {package → app-ng-runtime}/components/input/default/textarea/textarea.props.d.ts +0 -0
  1217. {package → app-ng-runtime}/components/input/epoch/base-date-time.component.d.ts +0 -0
  1218. {package → app-ng-runtime}/components/input/epoch/date/date.component.d.ts +0 -0
  1219. {package → app-ng-runtime}/components/input/epoch/date/date.props.d.ts +0 -0
  1220. {package → app-ng-runtime}/components/input/epoch/date/imaskUtil.d.ts +0 -0
  1221. {package → app-ng-runtime}/components/input/epoch/date-time/date-time-picker.component.d.ts +0 -0
  1222. {package → app-ng-runtime}/components/input/epoch/date-time/date-time.component.d.ts +0 -0
  1223. {package → app-ng-runtime}/components/input/epoch/date-time/date-time.props.d.ts +0 -0
  1224. {package → app-ng-runtime}/components/input/epoch/epoch.module.d.ts +0 -0
  1225. {package → app-ng-runtime}/components/input/epoch/esm2022/base-date-time.component.mjs +0 -0
  1226. {package → app-ng-runtime}/components/input/epoch/esm2022/date/date.props.mjs +0 -0
  1227. {package → app-ng-runtime}/components/input/epoch/esm2022/date/imaskUtil.mjs +0 -0
  1228. {package → app-ng-runtime}/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +0 -0
  1229. {package → app-ng-runtime}/components/input/epoch/esm2022/date-time/date-time.props.mjs +0 -0
  1230. {package → app-ng-runtime}/components/input/epoch/esm2022/epoch.module.mjs +0 -0
  1231. {package → app-ng-runtime}/components/input/epoch/esm2022/index.mjs +0 -0
  1232. {package → app-ng-runtime}/components/input/epoch/esm2022/picker/picker.component.mjs +0 -0
  1233. {package → app-ng-runtime}/components/input/epoch/esm2022/public_api.mjs +0 -0
  1234. {package → app-ng-runtime}/components/input/epoch/esm2022/time/time.props.mjs +0 -0
  1235. {package → app-ng-runtime}/components/input/epoch/index.d.ts +0 -0
  1236. {package → app-ng-runtime}/components/input/epoch/picker/picker.component.d.ts +0 -0
  1237. {package → app-ng-runtime}/components/input/epoch/public_api.d.ts +0 -0
  1238. {package → app-ng-runtime}/components/input/epoch/time/time.component.d.ts +0 -0
  1239. {package → app-ng-runtime}/components/input/epoch/time/time.props.d.ts +0 -0
  1240. {package → app-ng-runtime}/components/input/file-upload/bundles/index.umd.js +0 -0
  1241. {package → app-ng-runtime}/components/input/file-upload/esm2022/file-upload.component.mjs +0 -0
  1242. {package → app-ng-runtime}/components/input/file-upload/esm2022/file-upload.module.mjs +0 -0
  1243. {package → app-ng-runtime}/components/input/file-upload/esm2022/file-upload.props.mjs +0 -0
  1244. {package → app-ng-runtime}/components/input/file-upload/esm2022/index.mjs +0 -0
  1245. {package → app-ng-runtime}/components/input/file-upload/esm2022/public_api.mjs +0 -0
  1246. {package → app-ng-runtime}/components/input/file-upload/fesm2022/index.mjs +0 -0
  1247. {package → app-ng-runtime}/components/input/file-upload/fesm2022/index.mjs.map +0 -0
  1248. {package → app-ng-runtime}/components/input/file-upload/file-upload.component.d.ts +0 -0
  1249. {package → app-ng-runtime}/components/input/file-upload/file-upload.module.d.ts +0 -0
  1250. {package → app-ng-runtime}/components/input/file-upload/file-upload.props.d.ts +0 -0
  1251. {package → app-ng-runtime}/components/input/file-upload/index.d.ts +0 -0
  1252. {package → app-ng-runtime}/components/input/file-upload/public_api.d.ts +0 -0
  1253. {package → app-ng-runtime}/components/input/rating/esm2022/index.mjs +0 -0
  1254. {package → app-ng-runtime}/components/input/rating/esm2022/public_api.mjs +0 -0
  1255. {package → app-ng-runtime}/components/input/rating/esm2022/rating.module.mjs +0 -0
  1256. {package → app-ng-runtime}/components/input/rating/esm2022/rating.props.mjs +0 -0
  1257. {package → app-ng-runtime}/components/input/rating/index.d.ts +0 -0
  1258. {package → app-ng-runtime}/components/input/rating/public_api.d.ts +0 -0
  1259. {package → app-ng-runtime}/components/input/rating/rating.component.d.ts +0 -0
  1260. {package → app-ng-runtime}/components/input/rating/rating.module.d.ts +0 -0
  1261. {package → app-ng-runtime}/components/input/rating/rating.props.d.ts +0 -0
  1262. {package → app-ng-runtime}/components/input/slider/esm2022/index.mjs +0 -0
  1263. {package → app-ng-runtime}/components/input/slider/esm2022/public_api.mjs +0 -0
  1264. {package → app-ng-runtime}/components/input/slider/esm2022/slider.module.mjs +0 -0
  1265. {package → app-ng-runtime}/components/input/slider/esm2022/slider.props.mjs +0 -0
  1266. {package → app-ng-runtime}/components/input/slider/index.d.ts +0 -0
  1267. {package → app-ng-runtime}/components/input/slider/public_api.d.ts +0 -0
  1268. {package → app-ng-runtime}/components/input/slider/slider.component.d.ts +0 -0
  1269. {package → app-ng-runtime}/components/input/slider/slider.module.d.ts +0 -0
  1270. {package → app-ng-runtime}/components/input/slider/slider.props.d.ts +0 -0
  1271. {package → app-ng-runtime}/components/navigation/breadcrumb/breadcrumb.component.d.ts +0 -0
  1272. {package → app-ng-runtime}/components/navigation/breadcrumb/breadcrumb.module.d.ts +0 -0
  1273. {package → app-ng-runtime}/components/navigation/breadcrumb/breadcrumb.props.d.ts +0 -0
  1274. {package → app-ng-runtime}/components/navigation/breadcrumb/bundles/index.umd.js +0 -0
  1275. {package → app-ng-runtime}/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +0 -0
  1276. {package → app-ng-runtime}/components/navigation/breadcrumb/esm2022/breadcrumb.module.mjs +0 -0
  1277. {package → app-ng-runtime}/components/navigation/breadcrumb/esm2022/breadcrumb.props.mjs +0 -0
  1278. {package → app-ng-runtime}/components/navigation/breadcrumb/esm2022/index.mjs +0 -0
  1279. {package → app-ng-runtime}/components/navigation/breadcrumb/esm2022/public_api.mjs +0 -0
  1280. {package → app-ng-runtime}/components/navigation/breadcrumb/fesm2022/index.mjs +0 -0
  1281. {package → app-ng-runtime}/components/navigation/breadcrumb/fesm2022/index.mjs.map +0 -0
  1282. {package → app-ng-runtime}/components/navigation/breadcrumb/index.d.ts +0 -0
  1283. {package → app-ng-runtime}/components/navigation/breadcrumb/public_api.d.ts +0 -0
  1284. {package → app-ng-runtime}/components/navigation/menu/bundles/index.umd.js +0 -0
  1285. {package → app-ng-runtime}/components/navigation/menu/esm2022/index.mjs +0 -0
  1286. {package → app-ng-runtime}/components/navigation/menu/esm2022/menu-adapator.component.mjs +0 -0
  1287. {package → app-ng-runtime}/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +0 -0
  1288. {package → app-ng-runtime}/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +0 -0
  1289. {package → app-ng-runtime}/components/navigation/menu/esm2022/menu.component.mjs +0 -0
  1290. {package → app-ng-runtime}/components/navigation/menu/esm2022/menu.module.mjs +0 -0
  1291. {package → app-ng-runtime}/components/navigation/menu/esm2022/menu.props.mjs +0 -0
  1292. {package → app-ng-runtime}/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +0 -0
  1293. {package → app-ng-runtime}/components/navigation/menu/esm2022/nav/nav-item/nav-item.props.mjs +0 -0
  1294. {package → app-ng-runtime}/components/navigation/menu/esm2022/nav/nav.component.mjs +0 -0
  1295. {package → app-ng-runtime}/components/navigation/menu/esm2022/nav/nav.props.mjs +0 -0
  1296. {package → app-ng-runtime}/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +0 -0
  1297. {package → app-ng-runtime}/components/navigation/menu/esm2022/public_api.mjs +0 -0
  1298. {package → app-ng-runtime}/components/navigation/menu/fesm2022/index.mjs +0 -0
  1299. {package → app-ng-runtime}/components/navigation/menu/fesm2022/index.mjs.map +0 -0
  1300. {package → app-ng-runtime}/components/navigation/menu/index.d.ts +0 -0
  1301. {package → app-ng-runtime}/components/navigation/menu/menu-adapator.component.d.ts +0 -0
  1302. {package → app-ng-runtime}/components/navigation/menu/menu-dropdown/menu-dropdown.component.d.ts +0 -0
  1303. {package → app-ng-runtime}/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +0 -0
  1304. {package → app-ng-runtime}/components/navigation/menu/menu.component.d.ts +0 -0
  1305. {package → app-ng-runtime}/components/navigation/menu/menu.module.d.ts +0 -0
  1306. {package → app-ng-runtime}/components/navigation/menu/menu.props.d.ts +0 -0
  1307. {package → app-ng-runtime}/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +0 -0
  1308. {package → app-ng-runtime}/components/navigation/menu/nav/nav-item/nav-item.props.d.ts +0 -0
  1309. {package → app-ng-runtime}/components/navigation/menu/nav/nav.component.d.ts +0 -0
  1310. {package → app-ng-runtime}/components/navigation/menu/nav/nav.props.d.ts +0 -0
  1311. {package → app-ng-runtime}/components/navigation/menu/nav/navigation-control.directive.d.ts +0 -0
  1312. {package → app-ng-runtime}/components/navigation/menu/public_api.d.ts +0 -0
  1313. {package → app-ng-runtime}/components/navigation/navbar/bundles/index.umd.js +0 -0
  1314. {package → app-ng-runtime}/components/navigation/navbar/esm2022/index.mjs +0 -0
  1315. {package → app-ng-runtime}/components/navigation/navbar/esm2022/navbar.component.mjs +0 -0
  1316. {package → app-ng-runtime}/components/navigation/navbar/esm2022/navbar.module.mjs +0 -0
  1317. {package → app-ng-runtime}/components/navigation/navbar/esm2022/navbar.props.mjs +0 -0
  1318. {package → app-ng-runtime}/components/navigation/navbar/esm2022/public_api.mjs +0 -0
  1319. {package → app-ng-runtime}/components/navigation/navbar/fesm2022/index.mjs +0 -0
  1320. {package → app-ng-runtime}/components/navigation/navbar/fesm2022/index.mjs.map +0 -0
  1321. {package → app-ng-runtime}/components/navigation/navbar/index.d.ts +0 -0
  1322. {package → app-ng-runtime}/components/navigation/navbar/navbar.component.d.ts +0 -0
  1323. {package → app-ng-runtime}/components/navigation/navbar/navbar.module.d.ts +0 -0
  1324. {package → app-ng-runtime}/components/navigation/navbar/navbar.props.d.ts +0 -0
  1325. {package → app-ng-runtime}/components/navigation/navbar/public_api.d.ts +0 -0
  1326. {package → app-ng-runtime}/components/navigation/popover/bundles/index.umd.js +0 -0
  1327. {package → app-ng-runtime}/components/navigation/popover/esm2022/index.mjs +0 -0
  1328. {package → app-ng-runtime}/components/navigation/popover/esm2022/popover.component.mjs +0 -0
  1329. {package → app-ng-runtime}/components/navigation/popover/esm2022/popover.module.mjs +0 -0
  1330. {package → app-ng-runtime}/components/navigation/popover/esm2022/popover.props.mjs +0 -0
  1331. {package → app-ng-runtime}/components/navigation/popover/esm2022/public_api.mjs +0 -0
  1332. {package → app-ng-runtime}/components/navigation/popover/fesm2022/index.mjs +0 -0
  1333. {package → app-ng-runtime}/components/navigation/popover/fesm2022/index.mjs.map +0 -0
  1334. {package → app-ng-runtime}/components/navigation/popover/index.d.ts +0 -0
  1335. {package → app-ng-runtime}/components/navigation/popover/popover.component.d.ts +0 -0
  1336. {package → app-ng-runtime}/components/navigation/popover/popover.module.d.ts +0 -0
  1337. {package → app-ng-runtime}/components/navigation/popover/popover.props.d.ts +0 -0
  1338. {package → app-ng-runtime}/components/navigation/popover/public_api.d.ts +0 -0
  1339. {package → app-ng-runtime}/components/page/default/bundles/index.umd.js +0 -0
  1340. {package → app-ng-runtime}/components/page/default/content/content.component.d.ts +0 -0
  1341. {package → app-ng-runtime}/components/page/default/content/content.props.d.ts +0 -0
  1342. {package → app-ng-runtime}/components/page/default/esm2022/content/content.component.mjs +0 -0
  1343. {package → app-ng-runtime}/components/page/default/esm2022/content/content.props.mjs +0 -0
  1344. {package → app-ng-runtime}/components/page/default/esm2022/index.mjs +0 -0
  1345. {package → app-ng-runtime}/components/page/default/esm2022/layout.directive.mjs +0 -0
  1346. {package → app-ng-runtime}/components/page/default/esm2022/layout.props.mjs +0 -0
  1347. {package → app-ng-runtime}/components/page/default/esm2022/page-content/page-content.component.mjs +0 -0
  1348. {package → app-ng-runtime}/components/page/default/esm2022/page-content/page-content.props.mjs +0 -0
  1349. {package → app-ng-runtime}/components/page/default/esm2022/page.directive.mjs +0 -0
  1350. {package → app-ng-runtime}/components/page/default/esm2022/page.module.mjs +0 -0
  1351. {package → app-ng-runtime}/components/page/default/esm2022/page.props.mjs +0 -0
  1352. {package → app-ng-runtime}/components/page/default/esm2022/public_api.mjs +0 -0
  1353. {package → app-ng-runtime}/components/page/default/esm2022/router-outlet.directive.mjs +0 -0
  1354. {package → app-ng-runtime}/components/page/default/esm2022/router-outlet.props.mjs +0 -0
  1355. {package → app-ng-runtime}/components/page/default/esm2022/spa-page.directive.mjs +0 -0
  1356. {package → app-ng-runtime}/components/page/default/esm2022/spa-page.props.mjs +0 -0
  1357. {package → app-ng-runtime}/components/page/default/fesm2022/index.mjs +0 -0
  1358. {package → app-ng-runtime}/components/page/default/fesm2022/index.mjs.map +0 -0
  1359. {package → app-ng-runtime}/components/page/default/index.d.ts +0 -0
  1360. {package → app-ng-runtime}/components/page/default/layout.directive.d.ts +0 -0
  1361. {package → app-ng-runtime}/components/page/default/layout.props.d.ts +0 -0
  1362. {package → app-ng-runtime}/components/page/default/page-content/page-content.component.d.ts +0 -0
  1363. {package → app-ng-runtime}/components/page/default/page-content/page-content.props.d.ts +0 -0
  1364. {package → app-ng-runtime}/components/page/default/page.directive.d.ts +0 -0
  1365. {package → app-ng-runtime}/components/page/default/page.module.d.ts +0 -0
  1366. {package → app-ng-runtime}/components/page/default/page.props.d.ts +0 -0
  1367. {package → app-ng-runtime}/components/page/default/public_api.d.ts +0 -0
  1368. {package → app-ng-runtime}/components/page/default/router-outlet.directive.d.ts +0 -0
  1369. {package → app-ng-runtime}/components/page/default/router-outlet.props.d.ts +0 -0
  1370. {package → app-ng-runtime}/components/page/default/spa-page.directive.d.ts +0 -0
  1371. {package → app-ng-runtime}/components/page/default/spa-page.props.d.ts +0 -0
  1372. {package → app-ng-runtime}/components/page/footer/bundles/index.umd.js +0 -0
  1373. {package → app-ng-runtime}/components/page/footer/esm2022/footer.directive.mjs +0 -0
  1374. {package → app-ng-runtime}/components/page/footer/esm2022/footer.module.mjs +0 -0
  1375. {package → app-ng-runtime}/components/page/footer/esm2022/footer.props.mjs +0 -0
  1376. {package → app-ng-runtime}/components/page/footer/esm2022/index.mjs +0 -0
  1377. {package → app-ng-runtime}/components/page/footer/esm2022/public_api.mjs +0 -0
  1378. {package → app-ng-runtime}/components/page/footer/fesm2022/index.mjs +0 -0
  1379. {package → app-ng-runtime}/components/page/footer/fesm2022/index.mjs.map +0 -0
  1380. {package → app-ng-runtime}/components/page/footer/footer.directive.d.ts +0 -0
  1381. {package → app-ng-runtime}/components/page/footer/footer.module.d.ts +0 -0
  1382. {package → app-ng-runtime}/components/page/footer/footer.props.d.ts +0 -0
  1383. {package → app-ng-runtime}/components/page/footer/index.d.ts +0 -0
  1384. {package → app-ng-runtime}/components/page/footer/public_api.d.ts +0 -0
  1385. {package → app-ng-runtime}/components/page/header/bundles/index.umd.js +0 -0
  1386. {package → app-ng-runtime}/components/page/header/esm2022/header.component.mjs +0 -0
  1387. {package → app-ng-runtime}/components/page/header/esm2022/header.module.mjs +0 -0
  1388. {package → app-ng-runtime}/components/page/header/esm2022/header.props.mjs +0 -0
  1389. {package → app-ng-runtime}/components/page/header/esm2022/index.mjs +0 -0
  1390. {package → app-ng-runtime}/components/page/header/esm2022/public_api.mjs +0 -0
  1391. {package → app-ng-runtime}/components/page/header/fesm2022/index.mjs +0 -0
  1392. {package → app-ng-runtime}/components/page/header/fesm2022/index.mjs.map +0 -0
  1393. {package → app-ng-runtime}/components/page/header/header.component.d.ts +0 -0
  1394. {package → app-ng-runtime}/components/page/header/header.module.d.ts +0 -0
  1395. {package → app-ng-runtime}/components/page/header/header.props.d.ts +0 -0
  1396. {package → app-ng-runtime}/components/page/header/index.d.ts +0 -0
  1397. {package → app-ng-runtime}/components/page/header/public_api.d.ts +0 -0
  1398. {package → app-ng-runtime}/components/page/left-panel/bundles/index.umd.js +0 -0
  1399. {package → app-ng-runtime}/components/page/left-panel/esm2022/index.mjs +0 -0
  1400. {package → app-ng-runtime}/components/page/left-panel/esm2022/left-panel.animator.mjs +0 -0
  1401. {package → app-ng-runtime}/components/page/left-panel/esm2022/left-panel.directive.mjs +0 -0
  1402. {package → app-ng-runtime}/components/page/left-panel/esm2022/left-panel.module.mjs +0 -0
  1403. {package → app-ng-runtime}/components/page/left-panel/esm2022/left-panel.props.mjs +0 -0
  1404. {package → app-ng-runtime}/components/page/left-panel/esm2022/public_api.mjs +0 -0
  1405. {package → app-ng-runtime}/components/page/left-panel/fesm2022/index.mjs +0 -0
  1406. {package → app-ng-runtime}/components/page/left-panel/fesm2022/index.mjs.map +0 -0
  1407. {package → app-ng-runtime}/components/page/left-panel/index.d.ts +0 -0
  1408. {package → app-ng-runtime}/components/page/left-panel/left-panel.animator.d.ts +0 -0
  1409. {package → app-ng-runtime}/components/page/left-panel/left-panel.directive.d.ts +0 -0
  1410. {package → app-ng-runtime}/components/page/left-panel/left-panel.module.d.ts +0 -0
  1411. {package → app-ng-runtime}/components/page/left-panel/left-panel.props.d.ts +0 -0
  1412. {package → app-ng-runtime}/components/page/left-panel/public_api.d.ts +0 -0
  1413. {package → app-ng-runtime}/components/page/right-panel/bundles/index.umd.js +0 -0
  1414. {package → app-ng-runtime}/components/page/right-panel/esm2022/index.mjs +0 -0
  1415. {package → app-ng-runtime}/components/page/right-panel/esm2022/public_api.mjs +0 -0
  1416. {package → app-ng-runtime}/components/page/right-panel/esm2022/right-panel.directive.mjs +0 -0
  1417. {package → app-ng-runtime}/components/page/right-panel/esm2022/right-panel.module.mjs +0 -0
  1418. {package → app-ng-runtime}/components/page/right-panel/esm2022/right-panel.props.mjs +0 -0
  1419. {package → app-ng-runtime}/components/page/right-panel/fesm2022/index.mjs +0 -0
  1420. {package → app-ng-runtime}/components/page/right-panel/fesm2022/index.mjs.map +0 -0
  1421. {package → app-ng-runtime}/components/page/right-panel/index.d.ts +0 -0
  1422. {package → app-ng-runtime}/components/page/right-panel/public_api.d.ts +0 -0
  1423. {package → app-ng-runtime}/components/page/right-panel/right-panel.directive.d.ts +0 -0
  1424. {package → app-ng-runtime}/components/page/right-panel/right-panel.module.d.ts +0 -0
  1425. {package → app-ng-runtime}/components/page/right-panel/right-panel.props.d.ts +0 -0
  1426. {package → app-ng-runtime}/components/page/top-nav/bundles/index.umd.js +0 -0
  1427. {package → app-ng-runtime}/components/page/top-nav/esm2022/index.mjs +0 -0
  1428. {package → app-ng-runtime}/components/page/top-nav/esm2022/public_api.mjs +0 -0
  1429. {package → app-ng-runtime}/components/page/top-nav/esm2022/top-nav.directive.mjs +0 -0
  1430. {package → app-ng-runtime}/components/page/top-nav/esm2022/top-nav.module.mjs +0 -0
  1431. {package → app-ng-runtime}/components/page/top-nav/esm2022/top-nav.props.mjs +0 -0
  1432. {package → app-ng-runtime}/components/page/top-nav/fesm2022/index.mjs +0 -0
  1433. {package → app-ng-runtime}/components/page/top-nav/fesm2022/index.mjs.map +0 -0
  1434. {package → app-ng-runtime}/components/page/top-nav/index.d.ts +0 -0
  1435. {package → app-ng-runtime}/components/page/top-nav/public_api.d.ts +0 -0
  1436. {package → app-ng-runtime}/components/page/top-nav/top-nav.directive.d.ts +0 -0
  1437. {package → app-ng-runtime}/components/page/top-nav/top-nav.module.d.ts +0 -0
  1438. {package → app-ng-runtime}/components/page/top-nav/top-nav.props.d.ts +0 -0
  1439. {package → app-ng-runtime}/components/prefab/bundles/index.umd.js +0 -0
  1440. {package → app-ng-runtime}/components/prefab/esm2022/index.mjs +0 -0
  1441. {package → app-ng-runtime}/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +0 -0
  1442. {package → app-ng-runtime}/components/prefab/esm2022/prefab-container/prefab-container.props.mjs +0 -0
  1443. {package → app-ng-runtime}/components/prefab/esm2022/prefab.directive.mjs +0 -0
  1444. {package → app-ng-runtime}/components/prefab/esm2022/prefab.module.mjs +0 -0
  1445. {package → app-ng-runtime}/components/prefab/esm2022/prefab.props.mjs +0 -0
  1446. {package → app-ng-runtime}/components/prefab/esm2022/public_api.mjs +0 -0
  1447. {package → app-ng-runtime}/components/prefab/fesm2022/index.mjs +0 -0
  1448. {package → app-ng-runtime}/components/prefab/fesm2022/index.mjs.map +0 -0
  1449. {package → app-ng-runtime}/components/prefab/index.d.ts +0 -0
  1450. {package → app-ng-runtime}/components/prefab/prefab-container/prefab-container.directive.d.ts +0 -0
  1451. {package → app-ng-runtime}/components/prefab/prefab-container/prefab-container.props.d.ts +0 -0
  1452. {package → app-ng-runtime}/components/prefab/prefab.directive.d.ts +0 -0
  1453. {package → app-ng-runtime}/components/prefab/prefab.module.d.ts +0 -0
  1454. {package → app-ng-runtime}/components/prefab/prefab.props.d.ts +0 -0
  1455. {package → app-ng-runtime}/components/prefab/public_api.d.ts +0 -0
  1456. {package → app-ng-runtime}/core/constants/currency-constants.d.ts +0 -0
  1457. {package → app-ng-runtime}/core/core.module.d.ts +0 -0
  1458. {package → app-ng-runtime}/core/enums/enums.d.ts +0 -0
  1459. {package → app-ng-runtime}/core/esm2022/constants/currency-constants.mjs +0 -0
  1460. {package → app-ng-runtime}/core/esm2022/core.module.mjs +0 -0
  1461. {package → app-ng-runtime}/core/esm2022/enums/enums.mjs +0 -0
  1462. {package → app-ng-runtime}/core/esm2022/index.mjs +0 -0
  1463. {package → app-ng-runtime}/core/esm2022/services/constant.service.mjs +0 -0
  1464. {package → app-ng-runtime}/core/esm2022/services/field-type.service.mjs +0 -0
  1465. {package → app-ng-runtime}/core/esm2022/services/field-widget.service.mjs +0 -0
  1466. {package → app-ng-runtime}/core/esm2022/services/pagination.service.mjs +0 -0
  1467. {package → app-ng-runtime}/core/esm2022/services/script-loader.service.mjs +0 -0
  1468. {package → app-ng-runtime}/core/esm2022/services/state-persistence.service.mjs +0 -0
  1469. {package → app-ng-runtime}/core/esm2022/services/user-custom-pipe-manager.service.mjs +0 -0
  1470. {package → app-ng-runtime}/core/esm2022/services/utils.service.mjs +0 -0
  1471. {package → app-ng-runtime}/core/esm2022/services/viewport.service.mjs +0 -0
  1472. {package → app-ng-runtime}/core/esm2022/types/types.mjs +0 -0
  1473. {package → app-ng-runtime}/core/esm2022/utils/build-utils.mjs +0 -0
  1474. {package → app-ng-runtime}/core/esm2022/utils/dom.mjs +0 -0
  1475. {package → app-ng-runtime}/core/esm2022/utils/event-notifier.mjs +0 -0
  1476. {package → app-ng-runtime}/core/esm2022/utils/expression-parser.mjs +0 -0
  1477. {package → app-ng-runtime}/core/esm2022/utils/id-generator.mjs +0 -0
  1478. {package → app-ng-runtime}/core/esm2022/utils/lru-cache.mjs +0 -0
  1479. {package → app-ng-runtime}/core/esm2022/utils/utils.mjs +0 -0
  1480. {package → app-ng-runtime}/core/esm2022/utils/watcher.mjs +0 -0
  1481. {package → app-ng-runtime}/core/esm2022/utils/wm-project-properties.mjs +0 -0
  1482. {package → app-ng-runtime}/core/index.d.ts +0 -0
  1483. {package → app-ng-runtime}/core/services/constant.service.d.ts +0 -0
  1484. {package → app-ng-runtime}/core/services/field-type.service.d.ts +0 -0
  1485. {package → app-ng-runtime}/core/services/field-widget.service.d.ts +0 -0
  1486. {package → app-ng-runtime}/core/services/pagination.service.d.ts +0 -0
  1487. {package → app-ng-runtime}/core/services/script-loader.service.d.ts +0 -0
  1488. {package → app-ng-runtime}/core/services/state-persistence.service.d.ts +0 -0
  1489. {package → app-ng-runtime}/core/services/user-custom-pipe-manager.service.d.ts +0 -0
  1490. {package → app-ng-runtime}/core/services/utils.service.d.ts +0 -0
  1491. {package → app-ng-runtime}/core/services/viewport.service.d.ts +0 -0
  1492. {package → app-ng-runtime}/core/types/types.d.ts +0 -0
  1493. {package → app-ng-runtime}/core/utils/build-utils.d.ts +0 -0
  1494. {package → app-ng-runtime}/core/utils/dom.d.ts +0 -0
  1495. {package → app-ng-runtime}/core/utils/event-notifier.d.ts +0 -0
  1496. {package → app-ng-runtime}/core/utils/expression-parser.d.ts +0 -0
  1497. {package → app-ng-runtime}/core/utils/id-generator.d.ts +0 -0
  1498. {package → app-ng-runtime}/core/utils/lru-cache.d.ts +0 -0
  1499. {package → app-ng-runtime}/core/utils/utils.d.ts +0 -0
  1500. {package → app-ng-runtime}/core/utils/watcher.d.ts +0 -0
  1501. {package → app-ng-runtime}/core/utils/wm-project-properties.d.ts +0 -0
  1502. {package → app-ng-runtime}/http/bundles/index.umd.js +0 -0
  1503. {package → app-ng-runtime}/http/esm2022/http-service.module.mjs +0 -0
  1504. {package → app-ng-runtime}/http/esm2022/http.service.mjs +0 -0
  1505. {package → app-ng-runtime}/http/esm2022/index.mjs +0 -0
  1506. {package → app-ng-runtime}/http/esm2022/public_api.mjs +0 -0
  1507. {package → app-ng-runtime}/http/esm2022/wm-http-request.mjs +0 -0
  1508. {package → app-ng-runtime}/http/esm2022/wm-http-response.mjs +0 -0
  1509. {package → app-ng-runtime}/http/fesm2022/index.mjs +0 -0
  1510. {package → app-ng-runtime}/http/fesm2022/index.mjs.map +0 -0
  1511. {package → app-ng-runtime}/http/http-service.module.d.ts +0 -0
  1512. {package → app-ng-runtime}/http/http.service.d.ts +0 -0
  1513. {package → app-ng-runtime}/http/index.d.ts +0 -0
  1514. {package → app-ng-runtime}/http/public_api.d.ts +0 -0
  1515. {package → app-ng-runtime}/http/wm-http-request.d.ts +0 -0
  1516. {package → app-ng-runtime}/http/wm-http-response.d.ts +0 -0
  1517. {package → app-ng-runtime}/locales/angular/global/af-na.js +0 -0
  1518. {package → app-ng-runtime}/locales/angular/global/af.js +0 -0
  1519. {package → app-ng-runtime}/locales/angular/global/agq.js +0 -0
  1520. {package → app-ng-runtime}/locales/angular/global/ak.js +0 -0
  1521. {package → app-ng-runtime}/locales/angular/global/am.js +0 -0
  1522. {package → app-ng-runtime}/locales/angular/global/ar-ae.js +0 -0
  1523. {package → app-ng-runtime}/locales/angular/global/ar-bh.js +0 -0
  1524. {package → app-ng-runtime}/locales/angular/global/ar-dj.js +0 -0
  1525. {package → app-ng-runtime}/locales/angular/global/ar-dz.js +0 -0
  1526. {package → app-ng-runtime}/locales/angular/global/ar-eg.js +0 -0
  1527. {package → app-ng-runtime}/locales/angular/global/ar-eh.js +0 -0
  1528. {package → app-ng-runtime}/locales/angular/global/ar-er.js +0 -0
  1529. {package → app-ng-runtime}/locales/angular/global/ar-il.js +0 -0
  1530. {package → app-ng-runtime}/locales/angular/global/ar-iq.js +0 -0
  1531. {package → app-ng-runtime}/locales/angular/global/ar-jo.js +0 -0
  1532. {package → app-ng-runtime}/locales/angular/global/ar-km.js +0 -0
  1533. {package → app-ng-runtime}/locales/angular/global/ar-kw.js +0 -0
  1534. {package → app-ng-runtime}/locales/angular/global/ar-lb.js +0 -0
  1535. {package → app-ng-runtime}/locales/angular/global/ar-ly.js +0 -0
  1536. {package → app-ng-runtime}/locales/angular/global/ar-ma.js +0 -0
  1537. {package → app-ng-runtime}/locales/angular/global/ar-mr.js +0 -0
  1538. {package → app-ng-runtime}/locales/angular/global/ar-om.js +0 -0
  1539. {package → app-ng-runtime}/locales/angular/global/ar-ps.js +0 -0
  1540. {package → app-ng-runtime}/locales/angular/global/ar-qa.js +0 -0
  1541. {package → app-ng-runtime}/locales/angular/global/ar-sa.js +0 -0
  1542. {package → app-ng-runtime}/locales/angular/global/ar-sd.js +0 -0
  1543. {package → app-ng-runtime}/locales/angular/global/ar-so.js +0 -0
  1544. {package → app-ng-runtime}/locales/angular/global/ar-ss.js +0 -0
  1545. {package → app-ng-runtime}/locales/angular/global/ar-sy.js +0 -0
  1546. {package → app-ng-runtime}/locales/angular/global/ar-td.js +0 -0
  1547. {package → app-ng-runtime}/locales/angular/global/ar-tn.js +0 -0
  1548. {package → app-ng-runtime}/locales/angular/global/ar-ye.js +0 -0
  1549. {package → app-ng-runtime}/locales/angular/global/ar.js +0 -0
  1550. {package → app-ng-runtime}/locales/angular/global/as.js +0 -0
  1551. {package → app-ng-runtime}/locales/angular/global/asa.js +0 -0
  1552. {package → app-ng-runtime}/locales/angular/global/ast.js +0 -0
  1553. {package → app-ng-runtime}/locales/angular/global/az-cyrl.js +0 -0
  1554. {package → app-ng-runtime}/locales/angular/global/az-latn.js +0 -0
  1555. {package → app-ng-runtime}/locales/angular/global/az.js +0 -0
  1556. {package → app-ng-runtime}/locales/angular/global/bas.js +0 -0
  1557. {package → app-ng-runtime}/locales/angular/global/be-tarask.js +0 -0
  1558. {package → app-ng-runtime}/locales/angular/global/be.js +0 -0
  1559. {package → app-ng-runtime}/locales/angular/global/bem.js +0 -0
  1560. {package → app-ng-runtime}/locales/angular/global/bez.js +0 -0
  1561. {package → app-ng-runtime}/locales/angular/global/bg.js +0 -0
  1562. {package → app-ng-runtime}/locales/angular/global/bm.js +0 -0
  1563. {package → app-ng-runtime}/locales/angular/global/bn-in.js +0 -0
  1564. {package → app-ng-runtime}/locales/angular/global/bn.js +0 -0
  1565. {package → app-ng-runtime}/locales/angular/global/bo-in.js +0 -0
  1566. {package → app-ng-runtime}/locales/angular/global/bo.js +0 -0
  1567. {package → app-ng-runtime}/locales/angular/global/br.js +0 -0
  1568. {package → app-ng-runtime}/locales/angular/global/brx.js +0 -0
  1569. {package → app-ng-runtime}/locales/angular/global/bs-cyrl.js +0 -0
  1570. {package → app-ng-runtime}/locales/angular/global/bs-latn.js +0 -0
  1571. {package → app-ng-runtime}/locales/angular/global/bs.js +0 -0
  1572. {package → app-ng-runtime}/locales/angular/global/ca-ad.js +0 -0
  1573. {package → app-ng-runtime}/locales/angular/global/ca-es-valencia.js +0 -0
  1574. {package → app-ng-runtime}/locales/angular/global/ca-fr.js +0 -0
  1575. {package → app-ng-runtime}/locales/angular/global/ca-it.js +0 -0
  1576. {package → app-ng-runtime}/locales/angular/global/ca.js +0 -0
  1577. {package → app-ng-runtime}/locales/angular/global/ccp-in.js +0 -0
  1578. {package → app-ng-runtime}/locales/angular/global/ccp.js +0 -0
  1579. {package → app-ng-runtime}/locales/angular/global/ce.js +0 -0
  1580. {package → app-ng-runtime}/locales/angular/global/ceb.js +0 -0
  1581. {package → app-ng-runtime}/locales/angular/global/cgg.js +0 -0
  1582. {package → app-ng-runtime}/locales/angular/global/chr.js +0 -0
  1583. {package → app-ng-runtime}/locales/angular/global/ckb-ir.js +0 -0
  1584. {package → app-ng-runtime}/locales/angular/global/ckb.js +0 -0
  1585. {package → app-ng-runtime}/locales/angular/global/cs.js +0 -0
  1586. {package → app-ng-runtime}/locales/angular/global/cy.js +0 -0
  1587. {package → app-ng-runtime}/locales/angular/global/da-gl.js +0 -0
  1588. {package → app-ng-runtime}/locales/angular/global/da.js +0 -0
  1589. {package → app-ng-runtime}/locales/angular/global/dav.js +0 -0
  1590. {package → app-ng-runtime}/locales/angular/global/de-at.js +0 -0
  1591. {package → app-ng-runtime}/locales/angular/global/de-be.js +0 -0
  1592. {package → app-ng-runtime}/locales/angular/global/de-ch.js +0 -0
  1593. {package → app-ng-runtime}/locales/angular/global/de-it.js +0 -0
  1594. {package → app-ng-runtime}/locales/angular/global/de-li.js +0 -0
  1595. {package → app-ng-runtime}/locales/angular/global/de-lu.js +0 -0
  1596. {package → app-ng-runtime}/locales/angular/global/de.js +0 -0
  1597. {package → app-ng-runtime}/locales/angular/global/dje.js +0 -0
  1598. {package → app-ng-runtime}/locales/angular/global/doi.js +0 -0
  1599. {package → app-ng-runtime}/locales/angular/global/dsb.js +0 -0
  1600. {package → app-ng-runtime}/locales/angular/global/dua.js +0 -0
  1601. {package → app-ng-runtime}/locales/angular/global/dyo.js +0 -0
  1602. {package → app-ng-runtime}/locales/angular/global/dz.js +0 -0
  1603. {package → app-ng-runtime}/locales/angular/global/ebu.js +0 -0
  1604. {package → app-ng-runtime}/locales/angular/global/ee-tg.js +0 -0
  1605. {package → app-ng-runtime}/locales/angular/global/ee.js +0 -0
  1606. {package → app-ng-runtime}/locales/angular/global/el-cy.js +0 -0
  1607. {package → app-ng-runtime}/locales/angular/global/el.js +0 -0
  1608. {package → app-ng-runtime}/locales/angular/global/en-001.js +0 -0
  1609. {package → app-ng-runtime}/locales/angular/global/en-150.js +0 -0
  1610. {package → app-ng-runtime}/locales/angular/global/en-ae.js +0 -0
  1611. {package → app-ng-runtime}/locales/angular/global/en-ag.js +0 -0
  1612. {package → app-ng-runtime}/locales/angular/global/en-ai.js +0 -0
  1613. {package → app-ng-runtime}/locales/angular/global/en-as.js +0 -0
  1614. {package → app-ng-runtime}/locales/angular/global/en-at.js +0 -0
  1615. {package → app-ng-runtime}/locales/angular/global/en-au.js +0 -0
  1616. {package → app-ng-runtime}/locales/angular/global/en-bb.js +0 -0
  1617. {package → app-ng-runtime}/locales/angular/global/en-be.js +0 -0
  1618. {package → app-ng-runtime}/locales/angular/global/en-bi.js +0 -0
  1619. {package → app-ng-runtime}/locales/angular/global/en-bm.js +0 -0
  1620. {package → app-ng-runtime}/locales/angular/global/en-bs.js +0 -0
  1621. {package → app-ng-runtime}/locales/angular/global/en-bw.js +0 -0
  1622. {package → app-ng-runtime}/locales/angular/global/en-bz.js +0 -0
  1623. {package → app-ng-runtime}/locales/angular/global/en-ca.js +0 -0
  1624. {package → app-ng-runtime}/locales/angular/global/en-cc.js +0 -0
  1625. {package → app-ng-runtime}/locales/angular/global/en-ch.js +0 -0
  1626. {package → app-ng-runtime}/locales/angular/global/en-ck.js +0 -0
  1627. {package → app-ng-runtime}/locales/angular/global/en-cm.js +0 -0
  1628. {package → app-ng-runtime}/locales/angular/global/en-cx.js +0 -0
  1629. {package → app-ng-runtime}/locales/angular/global/en-cy.js +0 -0
  1630. {package → app-ng-runtime}/locales/angular/global/en-de.js +0 -0
  1631. {package → app-ng-runtime}/locales/angular/global/en-dg.js +0 -0
  1632. {package → app-ng-runtime}/locales/angular/global/en-dk.js +0 -0
  1633. {package → app-ng-runtime}/locales/angular/global/en-dm.js +0 -0
  1634. {package → app-ng-runtime}/locales/angular/global/en-er.js +0 -0
  1635. {package → app-ng-runtime}/locales/angular/global/en-fi.js +0 -0
  1636. {package → app-ng-runtime}/locales/angular/global/en-fj.js +0 -0
  1637. {package → app-ng-runtime}/locales/angular/global/en-fk.js +0 -0
  1638. {package → app-ng-runtime}/locales/angular/global/en-fm.js +0 -0
  1639. {package → app-ng-runtime}/locales/angular/global/en-gb.js +0 -0
  1640. {package → app-ng-runtime}/locales/angular/global/en-gd.js +0 -0
  1641. {package → app-ng-runtime}/locales/angular/global/en-gg.js +0 -0
  1642. {package → app-ng-runtime}/locales/angular/global/en-gh.js +0 -0
  1643. {package → app-ng-runtime}/locales/angular/global/en-gi.js +0 -0
  1644. {package → app-ng-runtime}/locales/angular/global/en-gm.js +0 -0
  1645. {package → app-ng-runtime}/locales/angular/global/en-gu.js +0 -0
  1646. {package → app-ng-runtime}/locales/angular/global/en-gy.js +0 -0
  1647. {package → app-ng-runtime}/locales/angular/global/en-hk.js +0 -0
  1648. {package → app-ng-runtime}/locales/angular/global/en-ie.js +0 -0
  1649. {package → app-ng-runtime}/locales/angular/global/en-il.js +0 -0
  1650. {package → app-ng-runtime}/locales/angular/global/en-im.js +0 -0
  1651. {package → app-ng-runtime}/locales/angular/global/en-in.js +0 -0
  1652. {package → app-ng-runtime}/locales/angular/global/en-io.js +0 -0
  1653. {package → app-ng-runtime}/locales/angular/global/en-je.js +0 -0
  1654. {package → app-ng-runtime}/locales/angular/global/en-jm.js +0 -0
  1655. {package → app-ng-runtime}/locales/angular/global/en-ke.js +0 -0
  1656. {package → app-ng-runtime}/locales/angular/global/en-ki.js +0 -0
  1657. {package → app-ng-runtime}/locales/angular/global/en-kn.js +0 -0
  1658. {package → app-ng-runtime}/locales/angular/global/en-ky.js +0 -0
  1659. {package → app-ng-runtime}/locales/angular/global/en-lc.js +0 -0
  1660. {package → app-ng-runtime}/locales/angular/global/en-lr.js +0 -0
  1661. {package → app-ng-runtime}/locales/angular/global/en-ls.js +0 -0
  1662. {package → app-ng-runtime}/locales/angular/global/en-mg.js +0 -0
  1663. {package → app-ng-runtime}/locales/angular/global/en-mh.js +0 -0
  1664. {package → app-ng-runtime}/locales/angular/global/en-mo.js +0 -0
  1665. {package → app-ng-runtime}/locales/angular/global/en-mp.js +0 -0
  1666. {package → app-ng-runtime}/locales/angular/global/en-ms.js +0 -0
  1667. {package → app-ng-runtime}/locales/angular/global/en-mt.js +0 -0
  1668. {package → app-ng-runtime}/locales/angular/global/en-mu.js +0 -0
  1669. {package → app-ng-runtime}/locales/angular/global/en-mv.js +0 -0
  1670. {package → app-ng-runtime}/locales/angular/global/en-mw.js +0 -0
  1671. {package → app-ng-runtime}/locales/angular/global/en-my.js +0 -0
  1672. {package → app-ng-runtime}/locales/angular/global/en-na.js +0 -0
  1673. {package → app-ng-runtime}/locales/angular/global/en-nf.js +0 -0
  1674. {package → app-ng-runtime}/locales/angular/global/en-ng.js +0 -0
  1675. {package → app-ng-runtime}/locales/angular/global/en-nl.js +0 -0
  1676. {package → app-ng-runtime}/locales/angular/global/en-nr.js +0 -0
  1677. {package → app-ng-runtime}/locales/angular/global/en-nu.js +0 -0
  1678. {package → app-ng-runtime}/locales/angular/global/en-nz.js +0 -0
  1679. {package → app-ng-runtime}/locales/angular/global/en-pg.js +0 -0
  1680. {package → app-ng-runtime}/locales/angular/global/en-ph.js +0 -0
  1681. {package → app-ng-runtime}/locales/angular/global/en-pk.js +0 -0
  1682. {package → app-ng-runtime}/locales/angular/global/en-pn.js +0 -0
  1683. {package → app-ng-runtime}/locales/angular/global/en-pr.js +0 -0
  1684. {package → app-ng-runtime}/locales/angular/global/en-pw.js +0 -0
  1685. {package → app-ng-runtime}/locales/angular/global/en-rw.js +0 -0
  1686. {package → app-ng-runtime}/locales/angular/global/en-sb.js +0 -0
  1687. {package → app-ng-runtime}/locales/angular/global/en-sc.js +0 -0
  1688. {package → app-ng-runtime}/locales/angular/global/en-sd.js +0 -0
  1689. {package → app-ng-runtime}/locales/angular/global/en-se.js +0 -0
  1690. {package → app-ng-runtime}/locales/angular/global/en-sg.js +0 -0
  1691. {package → app-ng-runtime}/locales/angular/global/en-sh.js +0 -0
  1692. {package → app-ng-runtime}/locales/angular/global/en-si.js +0 -0
  1693. {package → app-ng-runtime}/locales/angular/global/en-sl.js +0 -0
  1694. {package → app-ng-runtime}/locales/angular/global/en-ss.js +0 -0
  1695. {package → app-ng-runtime}/locales/angular/global/en-sx.js +0 -0
  1696. {package → app-ng-runtime}/locales/angular/global/en-sz.js +0 -0
  1697. {package → app-ng-runtime}/locales/angular/global/en-tc.js +0 -0
  1698. {package → app-ng-runtime}/locales/angular/global/en-tk.js +0 -0
  1699. {package → app-ng-runtime}/locales/angular/global/en-to.js +0 -0
  1700. {package → app-ng-runtime}/locales/angular/global/en-tt.js +0 -0
  1701. {package → app-ng-runtime}/locales/angular/global/en-tv.js +0 -0
  1702. {package → app-ng-runtime}/locales/angular/global/en-tz.js +0 -0
  1703. {package → app-ng-runtime}/locales/angular/global/en-ug.js +0 -0
  1704. {package → app-ng-runtime}/locales/angular/global/en-um.js +0 -0
  1705. {package → app-ng-runtime}/locales/angular/global/en-vc.js +0 -0
  1706. {package → app-ng-runtime}/locales/angular/global/en-vg.js +0 -0
  1707. {package → app-ng-runtime}/locales/angular/global/en-vi.js +0 -0
  1708. {package → app-ng-runtime}/locales/angular/global/en-vu.js +0 -0
  1709. {package → app-ng-runtime}/locales/angular/global/en-ws.js +0 -0
  1710. {package → app-ng-runtime}/locales/angular/global/en-za.js +0 -0
  1711. {package → app-ng-runtime}/locales/angular/global/en-zm.js +0 -0
  1712. {package → app-ng-runtime}/locales/angular/global/en-zw.js +0 -0
  1713. {package → app-ng-runtime}/locales/angular/global/en.js +0 -0
  1714. {package → app-ng-runtime}/locales/angular/global/eo.js +0 -0
  1715. {package → app-ng-runtime}/locales/angular/global/es-419.js +0 -0
  1716. {package → app-ng-runtime}/locales/angular/global/es-ar.js +0 -0
  1717. {package → app-ng-runtime}/locales/angular/global/es-bo.js +0 -0
  1718. {package → app-ng-runtime}/locales/angular/global/es-br.js +0 -0
  1719. {package → app-ng-runtime}/locales/angular/global/es-bz.js +0 -0
  1720. {package → app-ng-runtime}/locales/angular/global/es-cl.js +0 -0
  1721. {package → app-ng-runtime}/locales/angular/global/es-co.js +0 -0
  1722. {package → app-ng-runtime}/locales/angular/global/es-cr.js +0 -0
  1723. {package → app-ng-runtime}/locales/angular/global/es-cu.js +0 -0
  1724. {package → app-ng-runtime}/locales/angular/global/es-do.js +0 -0
  1725. {package → app-ng-runtime}/locales/angular/global/es-ea.js +0 -0
  1726. {package → app-ng-runtime}/locales/angular/global/es-ec.js +0 -0
  1727. {package → app-ng-runtime}/locales/angular/global/es-gq.js +0 -0
  1728. {package → app-ng-runtime}/locales/angular/global/es-gt.js +0 -0
  1729. {package → app-ng-runtime}/locales/angular/global/es-hn.js +0 -0
  1730. {package → app-ng-runtime}/locales/angular/global/es-ic.js +0 -0
  1731. {package → app-ng-runtime}/locales/angular/global/es-mx.js +0 -0
  1732. {package → app-ng-runtime}/locales/angular/global/es-ni.js +0 -0
  1733. {package → app-ng-runtime}/locales/angular/global/es-pa.js +0 -0
  1734. {package → app-ng-runtime}/locales/angular/global/es-pe.js +0 -0
  1735. {package → app-ng-runtime}/locales/angular/global/es-ph.js +0 -0
  1736. {package → app-ng-runtime}/locales/angular/global/es-pr.js +0 -0
  1737. {package → app-ng-runtime}/locales/angular/global/es-py.js +0 -0
  1738. {package → app-ng-runtime}/locales/angular/global/es-sv.js +0 -0
  1739. {package → app-ng-runtime}/locales/angular/global/es-us.js +0 -0
  1740. {package → app-ng-runtime}/locales/angular/global/es-uy.js +0 -0
  1741. {package → app-ng-runtime}/locales/angular/global/es-ve.js +0 -0
  1742. {package → app-ng-runtime}/locales/angular/global/es.js +0 -0
  1743. {package → app-ng-runtime}/locales/angular/global/et.js +0 -0
  1744. {package → app-ng-runtime}/locales/angular/global/eu.js +0 -0
  1745. {package → app-ng-runtime}/locales/angular/global/ewo.js +0 -0
  1746. {package → app-ng-runtime}/locales/angular/global/fa-af.js +0 -0
  1747. {package → app-ng-runtime}/locales/angular/global/fa.js +0 -0
  1748. {package → app-ng-runtime}/locales/angular/global/ff-adlm-bf.js +0 -0
  1749. {package → app-ng-runtime}/locales/angular/global/ff-adlm-cm.js +0 -0
  1750. {package → app-ng-runtime}/locales/angular/global/ff-adlm-gh.js +0 -0
  1751. {package → app-ng-runtime}/locales/angular/global/ff-adlm-gm.js +0 -0
  1752. {package → app-ng-runtime}/locales/angular/global/ff-adlm-gw.js +0 -0
  1753. {package → app-ng-runtime}/locales/angular/global/ff-adlm-lr.js +0 -0
  1754. {package → app-ng-runtime}/locales/angular/global/ff-adlm-mr.js +0 -0
  1755. {package → app-ng-runtime}/locales/angular/global/ff-adlm-ne.js +0 -0
  1756. {package → app-ng-runtime}/locales/angular/global/ff-adlm-ng.js +0 -0
  1757. {package → app-ng-runtime}/locales/angular/global/ff-adlm-sl.js +0 -0
  1758. {package → app-ng-runtime}/locales/angular/global/ff-adlm-sn.js +0 -0
  1759. {package → app-ng-runtime}/locales/angular/global/ff-adlm.js +0 -0
  1760. {package → app-ng-runtime}/locales/angular/global/ff-cm.js +0 -0
  1761. {package → app-ng-runtime}/locales/angular/global/ff-gn.js +0 -0
  1762. {package → app-ng-runtime}/locales/angular/global/ff-latn-bf.js +0 -0
  1763. {package → app-ng-runtime}/locales/angular/global/ff-latn-cm.js +0 -0
  1764. {package → app-ng-runtime}/locales/angular/global/ff-latn-gh.js +0 -0
  1765. {package → app-ng-runtime}/locales/angular/global/ff-latn-gm.js +0 -0
  1766. {package → app-ng-runtime}/locales/angular/global/ff-latn-gn.js +0 -0
  1767. {package → app-ng-runtime}/locales/angular/global/ff-latn-gw.js +0 -0
  1768. {package → app-ng-runtime}/locales/angular/global/ff-latn-lr.js +0 -0
  1769. {package → app-ng-runtime}/locales/angular/global/ff-latn-mr.js +0 -0
  1770. {package → app-ng-runtime}/locales/angular/global/ff-latn-ne.js +0 -0
  1771. {package → app-ng-runtime}/locales/angular/global/ff-latn-ng.js +0 -0
  1772. {package → app-ng-runtime}/locales/angular/global/ff-latn-sl.js +0 -0
  1773. {package → app-ng-runtime}/locales/angular/global/ff-latn.js +0 -0
  1774. {package → app-ng-runtime}/locales/angular/global/ff-mr.js +0 -0
  1775. {package → app-ng-runtime}/locales/angular/global/ff.js +0 -0
  1776. {package → app-ng-runtime}/locales/angular/global/fi.js +0 -0
  1777. {package → app-ng-runtime}/locales/angular/global/fil.js +0 -0
  1778. {package → app-ng-runtime}/locales/angular/global/fo-dk.js +0 -0
  1779. {package → app-ng-runtime}/locales/angular/global/fo.js +0 -0
  1780. {package → app-ng-runtime}/locales/angular/global/fr-be.js +0 -0
  1781. {package → app-ng-runtime}/locales/angular/global/fr-bf.js +0 -0
  1782. {package → app-ng-runtime}/locales/angular/global/fr-bi.js +0 -0
  1783. {package → app-ng-runtime}/locales/angular/global/fr-bj.js +0 -0
  1784. {package → app-ng-runtime}/locales/angular/global/fr-bl.js +0 -0
  1785. {package → app-ng-runtime}/locales/angular/global/fr-ca.js +0 -0
  1786. {package → app-ng-runtime}/locales/angular/global/fr-cd.js +0 -0
  1787. {package → app-ng-runtime}/locales/angular/global/fr-cf.js +0 -0
  1788. {package → app-ng-runtime}/locales/angular/global/fr-cg.js +0 -0
  1789. {package → app-ng-runtime}/locales/angular/global/fr-ch.js +0 -0
  1790. {package → app-ng-runtime}/locales/angular/global/fr-ci.js +0 -0
  1791. {package → app-ng-runtime}/locales/angular/global/fr-cm.js +0 -0
  1792. {package → app-ng-runtime}/locales/angular/global/fr-dj.js +0 -0
  1793. {package → app-ng-runtime}/locales/angular/global/fr-dz.js +0 -0
  1794. {package → app-ng-runtime}/locales/angular/global/fr-ga.js +0 -0
  1795. {package → app-ng-runtime}/locales/angular/global/fr-gf.js +0 -0
  1796. {package → app-ng-runtime}/locales/angular/global/fr-gn.js +0 -0
  1797. {package → app-ng-runtime}/locales/angular/global/fr-gp.js +0 -0
  1798. {package → app-ng-runtime}/locales/angular/global/fr-gq.js +0 -0
  1799. {package → app-ng-runtime}/locales/angular/global/fr-ht.js +0 -0
  1800. {package → app-ng-runtime}/locales/angular/global/fr-km.js +0 -0
  1801. {package → app-ng-runtime}/locales/angular/global/fr-lu.js +0 -0
  1802. {package → app-ng-runtime}/locales/angular/global/fr-ma.js +0 -0
  1803. {package → app-ng-runtime}/locales/angular/global/fr-mc.js +0 -0
  1804. {package → app-ng-runtime}/locales/angular/global/fr-mf.js +0 -0
  1805. {package → app-ng-runtime}/locales/angular/global/fr-mg.js +0 -0
  1806. {package → app-ng-runtime}/locales/angular/global/fr-ml.js +0 -0
  1807. {package → app-ng-runtime}/locales/angular/global/fr-mq.js +0 -0
  1808. {package → app-ng-runtime}/locales/angular/global/fr-mr.js +0 -0
  1809. {package → app-ng-runtime}/locales/angular/global/fr-mu.js +0 -0
  1810. {package → app-ng-runtime}/locales/angular/global/fr-nc.js +0 -0
  1811. {package → app-ng-runtime}/locales/angular/global/fr-ne.js +0 -0
  1812. {package → app-ng-runtime}/locales/angular/global/fr-pf.js +0 -0
  1813. {package → app-ng-runtime}/locales/angular/global/fr-pm.js +0 -0
  1814. {package → app-ng-runtime}/locales/angular/global/fr-re.js +0 -0
  1815. {package → app-ng-runtime}/locales/angular/global/fr-rw.js +0 -0
  1816. {package → app-ng-runtime}/locales/angular/global/fr-sc.js +0 -0
  1817. {package → app-ng-runtime}/locales/angular/global/fr-sn.js +0 -0
  1818. {package → app-ng-runtime}/locales/angular/global/fr-sy.js +0 -0
  1819. {package → app-ng-runtime}/locales/angular/global/fr-td.js +0 -0
  1820. {package → app-ng-runtime}/locales/angular/global/fr-tg.js +0 -0
  1821. {package → app-ng-runtime}/locales/angular/global/fr-tn.js +0 -0
  1822. {package → app-ng-runtime}/locales/angular/global/fr-vu.js +0 -0
  1823. {package → app-ng-runtime}/locales/angular/global/fr-wf.js +0 -0
  1824. {package → app-ng-runtime}/locales/angular/global/fr-yt.js +0 -0
  1825. {package → app-ng-runtime}/locales/angular/global/fr.js +0 -0
  1826. {package → app-ng-runtime}/locales/angular/global/fur.js +0 -0
  1827. {package → app-ng-runtime}/locales/angular/global/fy.js +0 -0
  1828. {package → app-ng-runtime}/locales/angular/global/ga-gb.js +0 -0
  1829. {package → app-ng-runtime}/locales/angular/global/ga.js +0 -0
  1830. {package → app-ng-runtime}/locales/angular/global/gd.js +0 -0
  1831. {package → app-ng-runtime}/locales/angular/global/gl.js +0 -0
  1832. {package → app-ng-runtime}/locales/angular/global/gsw-fr.js +0 -0
  1833. {package → app-ng-runtime}/locales/angular/global/gsw-li.js +0 -0
  1834. {package → app-ng-runtime}/locales/angular/global/gsw.js +0 -0
  1835. {package → app-ng-runtime}/locales/angular/global/gu.js +0 -0
  1836. {package → app-ng-runtime}/locales/angular/global/guz.js +0 -0
  1837. {package → app-ng-runtime}/locales/angular/global/gv.js +0 -0
  1838. {package → app-ng-runtime}/locales/angular/global/ha-gh.js +0 -0
  1839. {package → app-ng-runtime}/locales/angular/global/ha-ne.js +0 -0
  1840. {package → app-ng-runtime}/locales/angular/global/ha.js +0 -0
  1841. {package → app-ng-runtime}/locales/angular/global/haw.js +0 -0
  1842. {package → app-ng-runtime}/locales/angular/global/he.js +0 -0
  1843. {package → app-ng-runtime}/locales/angular/global/hi-latn.js +0 -0
  1844. {package → app-ng-runtime}/locales/angular/global/hi.js +0 -0
  1845. {package → app-ng-runtime}/locales/angular/global/hr-ba.js +0 -0
  1846. {package → app-ng-runtime}/locales/angular/global/hr.js +0 -0
  1847. {package → app-ng-runtime}/locales/angular/global/hsb.js +0 -0
  1848. {package → app-ng-runtime}/locales/angular/global/hu.js +0 -0
  1849. {package → app-ng-runtime}/locales/angular/global/hy.js +0 -0
  1850. {package → app-ng-runtime}/locales/angular/global/ia.js +0 -0
  1851. {package → app-ng-runtime}/locales/angular/global/id.js +0 -0
  1852. {package → app-ng-runtime}/locales/angular/global/ig.js +0 -0
  1853. {package → app-ng-runtime}/locales/angular/global/ii.js +0 -0
  1854. {package → app-ng-runtime}/locales/angular/global/is.js +0 -0
  1855. {package → app-ng-runtime}/locales/angular/global/it-ch.js +0 -0
  1856. {package → app-ng-runtime}/locales/angular/global/it-sm.js +0 -0
  1857. {package → app-ng-runtime}/locales/angular/global/it-va.js +0 -0
  1858. {package → app-ng-runtime}/locales/angular/global/it.js +0 -0
  1859. {package → app-ng-runtime}/locales/angular/global/ja.js +0 -0
  1860. {package → app-ng-runtime}/locales/angular/global/jgo.js +0 -0
  1861. {package → app-ng-runtime}/locales/angular/global/jmc.js +0 -0
  1862. {package → app-ng-runtime}/locales/angular/global/jv.js +0 -0
  1863. {package → app-ng-runtime}/locales/angular/global/ka.js +0 -0
  1864. {package → app-ng-runtime}/locales/angular/global/kab.js +0 -0
  1865. {package → app-ng-runtime}/locales/angular/global/kam.js +0 -0
  1866. {package → app-ng-runtime}/locales/angular/global/kde.js +0 -0
  1867. {package → app-ng-runtime}/locales/angular/global/kea.js +0 -0
  1868. {package → app-ng-runtime}/locales/angular/global/kgp.js +0 -0
  1869. {package → app-ng-runtime}/locales/angular/global/khq.js +0 -0
  1870. {package → app-ng-runtime}/locales/angular/global/ki.js +0 -0
  1871. {package → app-ng-runtime}/locales/angular/global/kk.js +0 -0
  1872. {package → app-ng-runtime}/locales/angular/global/kkj.js +0 -0
  1873. {package → app-ng-runtime}/locales/angular/global/kl.js +0 -0
  1874. {package → app-ng-runtime}/locales/angular/global/kln.js +0 -0
  1875. {package → app-ng-runtime}/locales/angular/global/km.js +0 -0
  1876. {package → app-ng-runtime}/locales/angular/global/kn.js +0 -0
  1877. {package → app-ng-runtime}/locales/angular/global/ko-kp.js +0 -0
  1878. {package → app-ng-runtime}/locales/angular/global/ko.js +0 -0
  1879. {package → app-ng-runtime}/locales/angular/global/kok.js +0 -0
  1880. {package → app-ng-runtime}/locales/angular/global/ks-arab.js +0 -0
  1881. {package → app-ng-runtime}/locales/angular/global/ks-deva.js +0 -0
  1882. {package → app-ng-runtime}/locales/angular/global/ks.js +0 -0
  1883. {package → app-ng-runtime}/locales/angular/global/ksb.js +0 -0
  1884. {package → app-ng-runtime}/locales/angular/global/ksf.js +0 -0
  1885. {package → app-ng-runtime}/locales/angular/global/ksh.js +0 -0
  1886. {package → app-ng-runtime}/locales/angular/global/ku.js +0 -0
  1887. {package → app-ng-runtime}/locales/angular/global/kw.js +0 -0
  1888. {package → app-ng-runtime}/locales/angular/global/ky.js +0 -0
  1889. {package → app-ng-runtime}/locales/angular/global/lag.js +0 -0
  1890. {package → app-ng-runtime}/locales/angular/global/lb.js +0 -0
  1891. {package → app-ng-runtime}/locales/angular/global/lg.js +0 -0
  1892. {package → app-ng-runtime}/locales/angular/global/lkt.js +0 -0
  1893. {package → app-ng-runtime}/locales/angular/global/ln-ao.js +0 -0
  1894. {package → app-ng-runtime}/locales/angular/global/ln-cf.js +0 -0
  1895. {package → app-ng-runtime}/locales/angular/global/ln-cg.js +0 -0
  1896. {package → app-ng-runtime}/locales/angular/global/ln.js +0 -0
  1897. {package → app-ng-runtime}/locales/angular/global/lo.js +0 -0
  1898. {package → app-ng-runtime}/locales/angular/global/lrc-iq.js +0 -0
  1899. {package → app-ng-runtime}/locales/angular/global/lrc.js +0 -0
  1900. {package → app-ng-runtime}/locales/angular/global/lt.js +0 -0
  1901. {package → app-ng-runtime}/locales/angular/global/lu.js +0 -0
  1902. {package → app-ng-runtime}/locales/angular/global/luo.js +0 -0
  1903. {package → app-ng-runtime}/locales/angular/global/luy.js +0 -0
  1904. {package → app-ng-runtime}/locales/angular/global/lv.js +0 -0
  1905. {package → app-ng-runtime}/locales/angular/global/mai.js +0 -0
  1906. {package → app-ng-runtime}/locales/angular/global/mas-tz.js +0 -0
  1907. {package → app-ng-runtime}/locales/angular/global/mas.js +0 -0
  1908. {package → app-ng-runtime}/locales/angular/global/mer.js +0 -0
  1909. {package → app-ng-runtime}/locales/angular/global/mfe.js +0 -0
  1910. {package → app-ng-runtime}/locales/angular/global/mg.js +0 -0
  1911. {package → app-ng-runtime}/locales/angular/global/mgh.js +0 -0
  1912. {package → app-ng-runtime}/locales/angular/global/mgo.js +0 -0
  1913. {package → app-ng-runtime}/locales/angular/global/mi.js +0 -0
  1914. {package → app-ng-runtime}/locales/angular/global/mk.js +0 -0
  1915. {package → app-ng-runtime}/locales/angular/global/ml.js +0 -0
  1916. {package → app-ng-runtime}/locales/angular/global/mn.js +0 -0
  1917. {package → app-ng-runtime}/locales/angular/global/mni-beng.js +0 -0
  1918. {package → app-ng-runtime}/locales/angular/global/mni.js +0 -0
  1919. {package → app-ng-runtime}/locales/angular/global/mr.js +0 -0
  1920. {package → app-ng-runtime}/locales/angular/global/ms-bn.js +0 -0
  1921. {package → app-ng-runtime}/locales/angular/global/ms-id.js +0 -0
  1922. {package → app-ng-runtime}/locales/angular/global/ms-sg.js +0 -0
  1923. {package → app-ng-runtime}/locales/angular/global/ms.js +0 -0
  1924. {package → app-ng-runtime}/locales/angular/global/mt.js +0 -0
  1925. {package → app-ng-runtime}/locales/angular/global/mua.js +0 -0
  1926. {package → app-ng-runtime}/locales/angular/global/my.js +0 -0
  1927. {package → app-ng-runtime}/locales/angular/global/mzn.js +0 -0
  1928. {package → app-ng-runtime}/locales/angular/global/naq.js +0 -0
  1929. {package → app-ng-runtime}/locales/angular/global/nb-sj.js +0 -0
  1930. {package → app-ng-runtime}/locales/angular/global/nb.js +0 -0
  1931. {package → app-ng-runtime}/locales/angular/global/nd.js +0 -0
  1932. {package → app-ng-runtime}/locales/angular/global/nds-nl.js +0 -0
  1933. {package → app-ng-runtime}/locales/angular/global/nds.js +0 -0
  1934. {package → app-ng-runtime}/locales/angular/global/ne-in.js +0 -0
  1935. {package → app-ng-runtime}/locales/angular/global/ne.js +0 -0
  1936. {package → app-ng-runtime}/locales/angular/global/nl-aw.js +0 -0
  1937. {package → app-ng-runtime}/locales/angular/global/nl-be.js +0 -0
  1938. {package → app-ng-runtime}/locales/angular/global/nl-bq.js +0 -0
  1939. {package → app-ng-runtime}/locales/angular/global/nl-cw.js +0 -0
  1940. {package → app-ng-runtime}/locales/angular/global/nl-sr.js +0 -0
  1941. {package → app-ng-runtime}/locales/angular/global/nl-sx.js +0 -0
  1942. {package → app-ng-runtime}/locales/angular/global/nl.js +0 -0
  1943. {package → app-ng-runtime}/locales/angular/global/nmg.js +0 -0
  1944. {package → app-ng-runtime}/locales/angular/global/nn.js +0 -0
  1945. {package → app-ng-runtime}/locales/angular/global/nnh.js +0 -0
  1946. {package → app-ng-runtime}/locales/angular/global/no.js +0 -0
  1947. {package → app-ng-runtime}/locales/angular/global/nus.js +0 -0
  1948. {package → app-ng-runtime}/locales/angular/global/nyn.js +0 -0
  1949. {package → app-ng-runtime}/locales/angular/global/om-ke.js +0 -0
  1950. {package → app-ng-runtime}/locales/angular/global/om.js +0 -0
  1951. {package → app-ng-runtime}/locales/angular/global/or.js +0 -0
  1952. {package → app-ng-runtime}/locales/angular/global/os-ru.js +0 -0
  1953. {package → app-ng-runtime}/locales/angular/global/os.js +0 -0
  1954. {package → app-ng-runtime}/locales/angular/global/pa-arab.js +0 -0
  1955. {package → app-ng-runtime}/locales/angular/global/pa-guru.js +0 -0
  1956. {package → app-ng-runtime}/locales/angular/global/pa.js +0 -0
  1957. {package → app-ng-runtime}/locales/angular/global/pcm.js +0 -0
  1958. {package → app-ng-runtime}/locales/angular/global/pl.js +0 -0
  1959. {package → app-ng-runtime}/locales/angular/global/ps-pk.js +0 -0
  1960. {package → app-ng-runtime}/locales/angular/global/ps.js +0 -0
  1961. {package → app-ng-runtime}/locales/angular/global/pt-ao.js +0 -0
  1962. {package → app-ng-runtime}/locales/angular/global/pt-ch.js +0 -0
  1963. {package → app-ng-runtime}/locales/angular/global/pt-cv.js +0 -0
  1964. {package → app-ng-runtime}/locales/angular/global/pt-gq.js +0 -0
  1965. {package → app-ng-runtime}/locales/angular/global/pt-gw.js +0 -0
  1966. {package → app-ng-runtime}/locales/angular/global/pt-lu.js +0 -0
  1967. {package → app-ng-runtime}/locales/angular/global/pt-mo.js +0 -0
  1968. {package → app-ng-runtime}/locales/angular/global/pt-mz.js +0 -0
  1969. {package → app-ng-runtime}/locales/angular/global/pt-pt.js +0 -0
  1970. {package → app-ng-runtime}/locales/angular/global/pt-st.js +0 -0
  1971. {package → app-ng-runtime}/locales/angular/global/pt-tl.js +0 -0
  1972. {package → app-ng-runtime}/locales/angular/global/pt.js +0 -0
  1973. {package → app-ng-runtime}/locales/angular/global/qu-bo.js +0 -0
  1974. {package → app-ng-runtime}/locales/angular/global/qu-ec.js +0 -0
  1975. {package → app-ng-runtime}/locales/angular/global/qu.js +0 -0
  1976. {package → app-ng-runtime}/locales/angular/global/rm.js +0 -0
  1977. {package → app-ng-runtime}/locales/angular/global/rn.js +0 -0
  1978. {package → app-ng-runtime}/locales/angular/global/ro-md.js +0 -0
  1979. {package → app-ng-runtime}/locales/angular/global/ro.js +0 -0
  1980. {package → app-ng-runtime}/locales/angular/global/rof.js +0 -0
  1981. {package → app-ng-runtime}/locales/angular/global/ru-by.js +0 -0
  1982. {package → app-ng-runtime}/locales/angular/global/ru-kg.js +0 -0
  1983. {package → app-ng-runtime}/locales/angular/global/ru-kz.js +0 -0
  1984. {package → app-ng-runtime}/locales/angular/global/ru-md.js +0 -0
  1985. {package → app-ng-runtime}/locales/angular/global/ru-ua.js +0 -0
  1986. {package → app-ng-runtime}/locales/angular/global/ru.js +0 -0
  1987. {package → app-ng-runtime}/locales/angular/global/rw.js +0 -0
  1988. {package → app-ng-runtime}/locales/angular/global/rwk.js +0 -0
  1989. {package → app-ng-runtime}/locales/angular/global/sa.js +0 -0
  1990. {package → app-ng-runtime}/locales/angular/global/sah.js +0 -0
  1991. {package → app-ng-runtime}/locales/angular/global/saq.js +0 -0
  1992. {package → app-ng-runtime}/locales/angular/global/sat-olck.js +0 -0
  1993. {package → app-ng-runtime}/locales/angular/global/sat.js +0 -0
  1994. {package → app-ng-runtime}/locales/angular/global/sbp.js +0 -0
  1995. {package → app-ng-runtime}/locales/angular/global/sc.js +0 -0
  1996. {package → app-ng-runtime}/locales/angular/global/sd-arab.js +0 -0
  1997. {package → app-ng-runtime}/locales/angular/global/sd-deva.js +0 -0
  1998. {package → app-ng-runtime}/locales/angular/global/sd.js +0 -0
  1999. {package → app-ng-runtime}/locales/angular/global/se-fi.js +0 -0
  2000. {package → app-ng-runtime}/locales/angular/global/se-se.js +0 -0
  2001. {package → app-ng-runtime}/locales/angular/global/se.js +0 -0
  2002. {package → app-ng-runtime}/locales/angular/global/seh.js +0 -0
  2003. {package → app-ng-runtime}/locales/angular/global/ses.js +0 -0
  2004. {package → app-ng-runtime}/locales/angular/global/sg.js +0 -0
  2005. {package → app-ng-runtime}/locales/angular/global/shi-latn.js +0 -0
  2006. {package → app-ng-runtime}/locales/angular/global/shi-tfng.js +0 -0
  2007. {package → app-ng-runtime}/locales/angular/global/shi.js +0 -0
  2008. {package → app-ng-runtime}/locales/angular/global/si.js +0 -0
  2009. {package → app-ng-runtime}/locales/angular/global/sk.js +0 -0
  2010. {package → app-ng-runtime}/locales/angular/global/sl.js +0 -0
  2011. {package → app-ng-runtime}/locales/angular/global/smn.js +0 -0
  2012. {package → app-ng-runtime}/locales/angular/global/sn.js +0 -0
  2013. {package → app-ng-runtime}/locales/angular/global/so-dj.js +0 -0
  2014. {package → app-ng-runtime}/locales/angular/global/so-et.js +0 -0
  2015. {package → app-ng-runtime}/locales/angular/global/so-ke.js +0 -0
  2016. {package → app-ng-runtime}/locales/angular/global/so.js +0 -0
  2017. {package → app-ng-runtime}/locales/angular/global/sq-mk.js +0 -0
  2018. {package → app-ng-runtime}/locales/angular/global/sq-xk.js +0 -0
  2019. {package → app-ng-runtime}/locales/angular/global/sq.js +0 -0
  2020. {package → app-ng-runtime}/locales/angular/global/sr-cyrl-ba.js +0 -0
  2021. {package → app-ng-runtime}/locales/angular/global/sr-cyrl-me.js +0 -0
  2022. {package → app-ng-runtime}/locales/angular/global/sr-cyrl-xk.js +0 -0
  2023. {package → app-ng-runtime}/locales/angular/global/sr-cyrl.js +0 -0
  2024. {package → app-ng-runtime}/locales/angular/global/sr-latn-ba.js +0 -0
  2025. {package → app-ng-runtime}/locales/angular/global/sr-latn-me.js +0 -0
  2026. {package → app-ng-runtime}/locales/angular/global/sr-latn-xk.js +0 -0
  2027. {package → app-ng-runtime}/locales/angular/global/sr-latn.js +0 -0
  2028. {package → app-ng-runtime}/locales/angular/global/sr.js +0 -0
  2029. {package → app-ng-runtime}/locales/angular/global/su-latn.js +0 -0
  2030. {package → app-ng-runtime}/locales/angular/global/su.js +0 -0
  2031. {package → app-ng-runtime}/locales/angular/global/sv-ax.js +0 -0
  2032. {package → app-ng-runtime}/locales/angular/global/sv-fi.js +0 -0
  2033. {package → app-ng-runtime}/locales/angular/global/sv.js +0 -0
  2034. {package → app-ng-runtime}/locales/angular/global/sw-cd.js +0 -0
  2035. {package → app-ng-runtime}/locales/angular/global/sw-ke.js +0 -0
  2036. {package → app-ng-runtime}/locales/angular/global/sw-ug.js +0 -0
  2037. {package → app-ng-runtime}/locales/angular/global/sw.js +0 -0
  2038. {package → app-ng-runtime}/locales/angular/global/ta-lk.js +0 -0
  2039. {package → app-ng-runtime}/locales/angular/global/ta-my.js +0 -0
  2040. {package → app-ng-runtime}/locales/angular/global/ta-sg.js +0 -0
  2041. {package → app-ng-runtime}/locales/angular/global/ta.js +0 -0
  2042. {package → app-ng-runtime}/locales/angular/global/te.js +0 -0
  2043. {package → app-ng-runtime}/locales/angular/global/teo-ke.js +0 -0
  2044. {package → app-ng-runtime}/locales/angular/global/teo.js +0 -0
  2045. {package → app-ng-runtime}/locales/angular/global/tg.js +0 -0
  2046. {package → app-ng-runtime}/locales/angular/global/th.js +0 -0
  2047. {package → app-ng-runtime}/locales/angular/global/ti-er.js +0 -0
  2048. {package → app-ng-runtime}/locales/angular/global/ti.js +0 -0
  2049. {package → app-ng-runtime}/locales/angular/global/tk.js +0 -0
  2050. {package → app-ng-runtime}/locales/angular/global/to.js +0 -0
  2051. {package → app-ng-runtime}/locales/angular/global/tr-cy.js +0 -0
  2052. {package → app-ng-runtime}/locales/angular/global/tr.js +0 -0
  2053. {package → app-ng-runtime}/locales/angular/global/tt.js +0 -0
  2054. {package → app-ng-runtime}/locales/angular/global/twq.js +0 -0
  2055. {package → app-ng-runtime}/locales/angular/global/tzm.js +0 -0
  2056. {package → app-ng-runtime}/locales/angular/global/ug.js +0 -0
  2057. {package → app-ng-runtime}/locales/angular/global/uk.js +0 -0
  2058. {package → app-ng-runtime}/locales/angular/global/und.js +0 -0
  2059. {package → app-ng-runtime}/locales/angular/global/ur-in.js +0 -0
  2060. {package → app-ng-runtime}/locales/angular/global/ur.js +0 -0
  2061. {package → app-ng-runtime}/locales/angular/global/uz-arab.js +0 -0
  2062. {package → app-ng-runtime}/locales/angular/global/uz-cyrl.js +0 -0
  2063. {package → app-ng-runtime}/locales/angular/global/uz-latn.js +0 -0
  2064. {package → app-ng-runtime}/locales/angular/global/uz.js +0 -0
  2065. {package → app-ng-runtime}/locales/angular/global/vai-latn.js +0 -0
  2066. {package → app-ng-runtime}/locales/angular/global/vai-vaii.js +0 -0
  2067. {package → app-ng-runtime}/locales/angular/global/vai.js +0 -0
  2068. {package → app-ng-runtime}/locales/angular/global/vi.js +0 -0
  2069. {package → app-ng-runtime}/locales/angular/global/vun.js +0 -0
  2070. {package → app-ng-runtime}/locales/angular/global/wae.js +0 -0
  2071. {package → app-ng-runtime}/locales/angular/global/wo.js +0 -0
  2072. {package → app-ng-runtime}/locales/angular/global/xh.js +0 -0
  2073. {package → app-ng-runtime}/locales/angular/global/xog.js +0 -0
  2074. {package → app-ng-runtime}/locales/angular/global/yav.js +0 -0
  2075. {package → app-ng-runtime}/locales/angular/global/yi.js +0 -0
  2076. {package → app-ng-runtime}/locales/angular/global/yo-bj.js +0 -0
  2077. {package → app-ng-runtime}/locales/angular/global/yo.js +0 -0
  2078. {package → app-ng-runtime}/locales/angular/global/yrl-co.js +0 -0
  2079. {package → app-ng-runtime}/locales/angular/global/yrl-ve.js +0 -0
  2080. {package → app-ng-runtime}/locales/angular/global/yrl.js +0 -0
  2081. {package → app-ng-runtime}/locales/angular/global/yue-hans.js +0 -0
  2082. {package → app-ng-runtime}/locales/angular/global/yue-hant.js +0 -0
  2083. {package → app-ng-runtime}/locales/angular/global/yue.js +0 -0
  2084. {package → app-ng-runtime}/locales/angular/global/zgh.js +0 -0
  2085. {package → app-ng-runtime}/locales/angular/global/zh-hans-hk.js +0 -0
  2086. {package → app-ng-runtime}/locales/angular/global/zh-hans-mo.js +0 -0
  2087. {package → app-ng-runtime}/locales/angular/global/zh-hans-sg.js +0 -0
  2088. {package → app-ng-runtime}/locales/angular/global/zh-hans.js +0 -0
  2089. {package → app-ng-runtime}/locales/angular/global/zh-hant-hk.js +0 -0
  2090. {package → app-ng-runtime}/locales/angular/global/zh-hant-mo.js +0 -0
  2091. {package → app-ng-runtime}/locales/angular/global/zh-hant.js +0 -0
  2092. {package → app-ng-runtime}/locales/angular/global/zh.js +0 -0
  2093. {package → app-ng-runtime}/locales/angular/global/zu.js +0 -0
  2094. {package → app-ng-runtime}/locales/fullcalendar/af.js +0 -0
  2095. {package → app-ng-runtime}/locales/fullcalendar/ar-dz.js +0 -0
  2096. {package → app-ng-runtime}/locales/fullcalendar/ar-kw.js +0 -0
  2097. {package → app-ng-runtime}/locales/fullcalendar/ar-ly.js +0 -0
  2098. {package → app-ng-runtime}/locales/fullcalendar/ar-ma.js +0 -0
  2099. {package → app-ng-runtime}/locales/fullcalendar/ar-sa.js +0 -0
  2100. {package → app-ng-runtime}/locales/fullcalendar/ar-tn.js +0 -0
  2101. {package → app-ng-runtime}/locales/fullcalendar/ar.js +0 -0
  2102. {package → app-ng-runtime}/locales/fullcalendar/az.js +0 -0
  2103. {package → app-ng-runtime}/locales/fullcalendar/bg.js +0 -0
  2104. {package → app-ng-runtime}/locales/fullcalendar/bs.js +0 -0
  2105. {package → app-ng-runtime}/locales/fullcalendar/ca.js +0 -0
  2106. {package → app-ng-runtime}/locales/fullcalendar/cs.js +0 -0
  2107. {package → app-ng-runtime}/locales/fullcalendar/da.js +0 -0
  2108. {package → app-ng-runtime}/locales/fullcalendar/de.js +0 -0
  2109. {package → app-ng-runtime}/locales/fullcalendar/el.js +0 -0
  2110. {package → app-ng-runtime}/locales/fullcalendar/en-au.js +0 -0
  2111. {package → app-ng-runtime}/locales/fullcalendar/en-gb.js +0 -0
  2112. {package → app-ng-runtime}/locales/fullcalendar/en-nz.js +0 -0
  2113. {package → app-ng-runtime}/locales/fullcalendar/es-us.js +0 -0
  2114. {package → app-ng-runtime}/locales/fullcalendar/es.js +0 -0
  2115. {package → app-ng-runtime}/locales/fullcalendar/et.js +0 -0
  2116. {package → app-ng-runtime}/locales/fullcalendar/eu.js +0 -0
  2117. {package → app-ng-runtime}/locales/fullcalendar/fa.js +0 -0
  2118. {package → app-ng-runtime}/locales/fullcalendar/fi.js +0 -0
  2119. {package → app-ng-runtime}/locales/fullcalendar/fr-ca.js +0 -0
  2120. {package → app-ng-runtime}/locales/fullcalendar/fr-ch.js +0 -0
  2121. {package → app-ng-runtime}/locales/fullcalendar/fr.js +0 -0
  2122. {package → app-ng-runtime}/locales/fullcalendar/gl.js +0 -0
  2123. {package → app-ng-runtime}/locales/fullcalendar/he.js +0 -0
  2124. {package → app-ng-runtime}/locales/fullcalendar/hi.js +0 -0
  2125. {package → app-ng-runtime}/locales/fullcalendar/hr.js +0 -0
  2126. {package → app-ng-runtime}/locales/fullcalendar/hu.js +0 -0
  2127. {package → app-ng-runtime}/locales/fullcalendar/id.js +0 -0
  2128. {package → app-ng-runtime}/locales/fullcalendar/is.js +0 -0
  2129. {package → app-ng-runtime}/locales/fullcalendar/it.js +0 -0
  2130. {package → app-ng-runtime}/locales/fullcalendar/ja.js +0 -0
  2131. {package → app-ng-runtime}/locales/fullcalendar/ka.js +0 -0
  2132. {package → app-ng-runtime}/locales/fullcalendar/kk.js +0 -0
  2133. {package → app-ng-runtime}/locales/fullcalendar/ko.js +0 -0
  2134. {package → app-ng-runtime}/locales/fullcalendar/lb.js +0 -0
  2135. {package → app-ng-runtime}/locales/fullcalendar/lt.js +0 -0
  2136. {package → app-ng-runtime}/locales/fullcalendar/lv.js +0 -0
  2137. {package → app-ng-runtime}/locales/fullcalendar/mk.js +0 -0
  2138. {package → app-ng-runtime}/locales/fullcalendar/ms.js +0 -0
  2139. {package → app-ng-runtime}/locales/fullcalendar/nb.js +0 -0
  2140. {package → app-ng-runtime}/locales/fullcalendar/ne.js +0 -0
  2141. {package → app-ng-runtime}/locales/fullcalendar/nl.js +0 -0
  2142. {package → app-ng-runtime}/locales/fullcalendar/nn.js +0 -0
  2143. {package → app-ng-runtime}/locales/fullcalendar/pl.js +0 -0
  2144. {package → app-ng-runtime}/locales/fullcalendar/pt-br.js +0 -0
  2145. {package → app-ng-runtime}/locales/fullcalendar/pt.js +0 -0
  2146. {package → app-ng-runtime}/locales/fullcalendar/ro.js +0 -0
  2147. {package → app-ng-runtime}/locales/fullcalendar/ru.js +0 -0
  2148. {package → app-ng-runtime}/locales/fullcalendar/sk.js +0 -0
  2149. {package → app-ng-runtime}/locales/fullcalendar/sl.js +0 -0
  2150. {package → app-ng-runtime}/locales/fullcalendar/sq.js +0 -0
  2151. {package → app-ng-runtime}/locales/fullcalendar/sr-cyrl.js +0 -0
  2152. {package → app-ng-runtime}/locales/fullcalendar/sr.js +0 -0
  2153. {package → app-ng-runtime}/locales/fullcalendar/sv.js +0 -0
  2154. {package → app-ng-runtime}/locales/fullcalendar/th.js +0 -0
  2155. {package → app-ng-runtime}/locales/fullcalendar/tr.js +0 -0
  2156. {package → app-ng-runtime}/locales/fullcalendar/ug.js +0 -0
  2157. {package → app-ng-runtime}/locales/fullcalendar/uk.js +0 -0
  2158. {package → app-ng-runtime}/locales/fullcalendar/uz.js +0 -0
  2159. {package → app-ng-runtime}/locales/fullcalendar/vi.js +0 -0
  2160. {package → app-ng-runtime}/locales/fullcalendar/zh-cn.js +0 -0
  2161. {package → app-ng-runtime}/locales/fullcalendar/zh-tw.js +0 -0
  2162. {package → app-ng-runtime}/locales/moment/af.js +0 -0
  2163. {package → app-ng-runtime}/locales/moment/ar-dz.js +0 -0
  2164. {package → app-ng-runtime}/locales/moment/ar-kw.js +0 -0
  2165. {package → app-ng-runtime}/locales/moment/ar-ly.js +0 -0
  2166. {package → app-ng-runtime}/locales/moment/ar-ma.js +0 -0
  2167. {package → app-ng-runtime}/locales/moment/ar-sa.js +0 -0
  2168. {package → app-ng-runtime}/locales/moment/ar-tn.js +0 -0
  2169. {package → app-ng-runtime}/locales/moment/ar.js +0 -0
  2170. {package → app-ng-runtime}/locales/moment/az.js +0 -0
  2171. {package → app-ng-runtime}/locales/moment/be.js +0 -0
  2172. {package → app-ng-runtime}/locales/moment/bg.js +0 -0
  2173. {package → app-ng-runtime}/locales/moment/bm.js +0 -0
  2174. {package → app-ng-runtime}/locales/moment/bn-bd.js +0 -0
  2175. {package → app-ng-runtime}/locales/moment/bn.js +0 -0
  2176. {package → app-ng-runtime}/locales/moment/bo.js +0 -0
  2177. {package → app-ng-runtime}/locales/moment/br.js +0 -0
  2178. {package → app-ng-runtime}/locales/moment/bs.js +0 -0
  2179. {package → app-ng-runtime}/locales/moment/ca.js +0 -0
  2180. {package → app-ng-runtime}/locales/moment/cs.js +0 -0
  2181. {package → app-ng-runtime}/locales/moment/cv.js +0 -0
  2182. {package → app-ng-runtime}/locales/moment/cy.js +0 -0
  2183. {package → app-ng-runtime}/locales/moment/da.js +0 -0
  2184. {package → app-ng-runtime}/locales/moment/de-at.js +0 -0
  2185. {package → app-ng-runtime}/locales/moment/de-ch.js +0 -0
  2186. {package → app-ng-runtime}/locales/moment/de.js +0 -0
  2187. {package → app-ng-runtime}/locales/moment/dv.js +0 -0
  2188. {package → app-ng-runtime}/locales/moment/el.js +0 -0
  2189. {package → app-ng-runtime}/locales/moment/en-au.js +0 -0
  2190. {package → app-ng-runtime}/locales/moment/en-ca.js +0 -0
  2191. {package → app-ng-runtime}/locales/moment/en-gb.js +0 -0
  2192. {package → app-ng-runtime}/locales/moment/en-ie.js +0 -0
  2193. {package → app-ng-runtime}/locales/moment/en-il.js +0 -0
  2194. {package → app-ng-runtime}/locales/moment/en-in.js +0 -0
  2195. {package → app-ng-runtime}/locales/moment/en-nz.js +0 -0
  2196. {package → app-ng-runtime}/locales/moment/en-sg.js +0 -0
  2197. {package → app-ng-runtime}/locales/moment/eo.js +0 -0
  2198. {package → app-ng-runtime}/locales/moment/es-do.js +0 -0
  2199. {package → app-ng-runtime}/locales/moment/es-mx.js +0 -0
  2200. {package → app-ng-runtime}/locales/moment/es-us.js +0 -0
  2201. {package → app-ng-runtime}/locales/moment/es.js +0 -0
  2202. {package → app-ng-runtime}/locales/moment/et.js +0 -0
  2203. {package → app-ng-runtime}/locales/moment/eu.js +0 -0
  2204. {package → app-ng-runtime}/locales/moment/fa.js +0 -0
  2205. {package → app-ng-runtime}/locales/moment/fi.js +0 -0
  2206. {package → app-ng-runtime}/locales/moment/fil.js +0 -0
  2207. {package → app-ng-runtime}/locales/moment/fo.js +0 -0
  2208. {package → app-ng-runtime}/locales/moment/fr-ca.js +0 -0
  2209. {package → app-ng-runtime}/locales/moment/fr-ch.js +0 -0
  2210. {package → app-ng-runtime}/locales/moment/fr.js +0 -0
  2211. {package → app-ng-runtime}/locales/moment/fy.js +0 -0
  2212. {package → app-ng-runtime}/locales/moment/ga.js +0 -0
  2213. {package → app-ng-runtime}/locales/moment/gd.js +0 -0
  2214. {package → app-ng-runtime}/locales/moment/gl.js +0 -0
  2215. {package → app-ng-runtime}/locales/moment/gom-deva.js +0 -0
  2216. {package → app-ng-runtime}/locales/moment/gom-latn.js +0 -0
  2217. {package → app-ng-runtime}/locales/moment/gu.js +0 -0
  2218. {package → app-ng-runtime}/locales/moment/he.js +0 -0
  2219. {package → app-ng-runtime}/locales/moment/hi.js +0 -0
  2220. {package → app-ng-runtime}/locales/moment/hr.js +0 -0
  2221. {package → app-ng-runtime}/locales/moment/hu.js +0 -0
  2222. {package → app-ng-runtime}/locales/moment/hy-am.js +0 -0
  2223. {package → app-ng-runtime}/locales/moment/id.js +0 -0
  2224. {package → app-ng-runtime}/locales/moment/is.js +0 -0
  2225. {package → app-ng-runtime}/locales/moment/it-ch.js +0 -0
  2226. {package → app-ng-runtime}/locales/moment/it.js +0 -0
  2227. {package → app-ng-runtime}/locales/moment/ja.js +0 -0
  2228. {package → app-ng-runtime}/locales/moment/jv.js +0 -0
  2229. {package → app-ng-runtime}/locales/moment/ka.js +0 -0
  2230. {package → app-ng-runtime}/locales/moment/kk.js +0 -0
  2231. {package → app-ng-runtime}/locales/moment/km.js +0 -0
  2232. {package → app-ng-runtime}/locales/moment/kn.js +0 -0
  2233. {package → app-ng-runtime}/locales/moment/ko.js +0 -0
  2234. {package → app-ng-runtime}/locales/moment/ku.js +0 -0
  2235. {package → app-ng-runtime}/locales/moment/ky.js +0 -0
  2236. {package → app-ng-runtime}/locales/moment/lb.js +0 -0
  2237. {package → app-ng-runtime}/locales/moment/lo.js +0 -0
  2238. {package → app-ng-runtime}/locales/moment/lt.js +0 -0
  2239. {package → app-ng-runtime}/locales/moment/lv.js +0 -0
  2240. {package → app-ng-runtime}/locales/moment/me.js +0 -0
  2241. {package → app-ng-runtime}/locales/moment/mi.js +0 -0
  2242. {package → app-ng-runtime}/locales/moment/mk.js +0 -0
  2243. {package → app-ng-runtime}/locales/moment/ml.js +0 -0
  2244. {package → app-ng-runtime}/locales/moment/mn.js +0 -0
  2245. {package → app-ng-runtime}/locales/moment/mr.js +0 -0
  2246. {package → app-ng-runtime}/locales/moment/ms-my.js +0 -0
  2247. {package → app-ng-runtime}/locales/moment/ms.js +0 -0
  2248. {package → app-ng-runtime}/locales/moment/mt.js +0 -0
  2249. {package → app-ng-runtime}/locales/moment/my.js +0 -0
  2250. {package → app-ng-runtime}/locales/moment/nb.js +0 -0
  2251. {package → app-ng-runtime}/locales/moment/ne.js +0 -0
  2252. {package → app-ng-runtime}/locales/moment/nl-be.js +0 -0
  2253. {package → app-ng-runtime}/locales/moment/nl.js +0 -0
  2254. {package → app-ng-runtime}/locales/moment/nn.js +0 -0
  2255. {package → app-ng-runtime}/locales/moment/oc-lnc.js +0 -0
  2256. {package → app-ng-runtime}/locales/moment/pa-in.js +0 -0
  2257. {package → app-ng-runtime}/locales/moment/pl.js +0 -0
  2258. {package → app-ng-runtime}/locales/moment/pt-br.js +0 -0
  2259. {package → app-ng-runtime}/locales/moment/pt.js +0 -0
  2260. {package → app-ng-runtime}/locales/moment/ro.js +0 -0
  2261. {package → app-ng-runtime}/locales/moment/ru.js +0 -0
  2262. {package → app-ng-runtime}/locales/moment/sd.js +0 -0
  2263. {package → app-ng-runtime}/locales/moment/se.js +0 -0
  2264. {package → app-ng-runtime}/locales/moment/si.js +0 -0
  2265. {package → app-ng-runtime}/locales/moment/sk.js +0 -0
  2266. {package → app-ng-runtime}/locales/moment/sl.js +0 -0
  2267. {package → app-ng-runtime}/locales/moment/sq.js +0 -0
  2268. {package → app-ng-runtime}/locales/moment/sr-cyrl.js +0 -0
  2269. {package → app-ng-runtime}/locales/moment/sr.js +0 -0
  2270. {package → app-ng-runtime}/locales/moment/ss.js +0 -0
  2271. {package → app-ng-runtime}/locales/moment/sv.js +0 -0
  2272. {package → app-ng-runtime}/locales/moment/sw.js +0 -0
  2273. {package → app-ng-runtime}/locales/moment/ta.js +0 -0
  2274. {package → app-ng-runtime}/locales/moment/te.js +0 -0
  2275. {package → app-ng-runtime}/locales/moment/tet.js +0 -0
  2276. {package → app-ng-runtime}/locales/moment/tg.js +0 -0
  2277. {package → app-ng-runtime}/locales/moment/th.js +0 -0
  2278. {package → app-ng-runtime}/locales/moment/tk.js +0 -0
  2279. {package → app-ng-runtime}/locales/moment/tl-ph.js +0 -0
  2280. {package → app-ng-runtime}/locales/moment/tlh.js +0 -0
  2281. {package → app-ng-runtime}/locales/moment/tr.js +0 -0
  2282. {package → app-ng-runtime}/locales/moment/tzl.js +0 -0
  2283. {package → app-ng-runtime}/locales/moment/tzm-latn.js +0 -0
  2284. {package → app-ng-runtime}/locales/moment/tzm.js +0 -0
  2285. {package → app-ng-runtime}/locales/moment/ug-cn.js +0 -0
  2286. {package → app-ng-runtime}/locales/moment/uk.js +0 -0
  2287. {package → app-ng-runtime}/locales/moment/ur.js +0 -0
  2288. {package → app-ng-runtime}/locales/moment/uz-latn.js +0 -0
  2289. {package → app-ng-runtime}/locales/moment/uz.js +0 -0
  2290. {package → app-ng-runtime}/locales/moment/vi.js +0 -0
  2291. {package → app-ng-runtime}/locales/moment/x-pseudo.js +0 -0
  2292. {package → app-ng-runtime}/locales/moment/yo.js +0 -0
  2293. {package → app-ng-runtime}/locales/moment/zh-cn.js +0 -0
  2294. {package → app-ng-runtime}/locales/moment/zh-hk.js +0 -0
  2295. {package → app-ng-runtime}/locales/moment/zh-mo.js +0 -0
  2296. {package → app-ng-runtime}/locales/moment/zh-tw.js +0 -0
  2297. {package → app-ng-runtime}/locales/moment-timezone/moment-timezone-with-data.js +0 -0
  2298. {package → app-ng-runtime}/mobile/components/basic/default/anchor/anchor.directive.d.ts +0 -0
  2299. {package → app-ng-runtime}/mobile/components/basic/default/app-update/app-update.component.d.ts +0 -0
  2300. {package → app-ng-runtime}/mobile/components/basic/default/basic.module.d.ts +0 -0
  2301. {package → app-ng-runtime}/mobile/components/basic/default/bundles/index.umd.js +0 -0
  2302. {package → app-ng-runtime}/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +0 -0
  2303. {package → app-ng-runtime}/mobile/components/basic/default/esm2022/app-update/app-update.component.mjs +0 -0
  2304. {package → app-ng-runtime}/mobile/components/basic/default/esm2022/basic.module.mjs +0 -0
  2305. {package → app-ng-runtime}/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +0 -0
  2306. {package → app-ng-runtime}/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +0 -0
  2307. {package → app-ng-runtime}/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +0 -0
  2308. {package → app-ng-runtime}/mobile/components/basic/default/esm2022/index.mjs +0 -0
  2309. {package → app-ng-runtime}/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.component.mjs +0 -0
  2310. {package → app-ng-runtime}/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.props.mjs +0 -0
  2311. {package → app-ng-runtime}/mobile/components/basic/default/esm2022/process-manager/process-management.service.mjs +0 -0
  2312. {package → app-ng-runtime}/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +0 -0
  2313. {package → app-ng-runtime}/mobile/components/basic/default/esm2022/public_api.mjs +0 -0
  2314. {package → app-ng-runtime}/mobile/components/basic/default/fesm2022/index.mjs +0 -0
  2315. {package → app-ng-runtime}/mobile/components/basic/default/fesm2022/index.mjs.map +0 -0
  2316. {package → app-ng-runtime}/mobile/components/basic/default/file-browser/file-browser.component.d.ts +0 -0
  2317. {package → app-ng-runtime}/mobile/components/basic/default/file-browser/file-selector.service.d.ts +0 -0
  2318. {package → app-ng-runtime}/mobile/components/basic/default/image-cache/image-cache.directive.d.ts +0 -0
  2319. {package → app-ng-runtime}/mobile/components/basic/default/index.d.ts +0 -0
  2320. {package → app-ng-runtime}/mobile/components/basic/default/network-info-toaster/network-info-toaster.component.d.ts +0 -0
  2321. {package → app-ng-runtime}/mobile/components/basic/default/network-info-toaster/network-info-toaster.props.d.ts +0 -0
  2322. {package → app-ng-runtime}/mobile/components/basic/default/process-manager/process-management.service.d.ts +0 -0
  2323. {package → app-ng-runtime}/mobile/components/basic/default/process-manager/process-manager.component.d.ts +0 -0
  2324. {package → app-ng-runtime}/mobile/components/basic/default/public_api.d.ts +0 -0
  2325. {package → app-ng-runtime}/mobile/components/basic/search/bundles/index.umd.js +0 -0
  2326. {package → app-ng-runtime}/mobile/components/basic/search/esm2022/index.mjs +0 -0
  2327. {package → app-ng-runtime}/mobile/components/basic/search/esm2022/public_api.mjs +0 -0
  2328. {package → app-ng-runtime}/mobile/components/basic/search/esm2022/search.directive.mjs +0 -0
  2329. {package → app-ng-runtime}/mobile/components/basic/search/esm2022/search.module.mjs +0 -0
  2330. {package → app-ng-runtime}/mobile/components/basic/search/fesm2022/index.mjs +0 -0
  2331. {package → app-ng-runtime}/mobile/components/basic/search/fesm2022/index.mjs.map +0 -0
  2332. {package → app-ng-runtime}/mobile/components/basic/search/index.d.ts +0 -0
  2333. {package → app-ng-runtime}/mobile/components/basic/search/public_api.d.ts +0 -0
  2334. {package → app-ng-runtime}/mobile/components/basic/search/search.directive.d.ts +0 -0
  2335. {package → app-ng-runtime}/mobile/components/basic/search/search.module.d.ts +0 -0
  2336. {package → app-ng-runtime}/mobile/components/containers/segmented-control/bundles/index.umd.js +0 -0
  2337. {package → app-ng-runtime}/mobile/components/containers/segmented-control/esm2022/index.mjs +0 -0
  2338. {package → app-ng-runtime}/mobile/components/containers/segmented-control/esm2022/public_api.mjs +0 -0
  2339. {package → app-ng-runtime}/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +0 -0
  2340. {package → app-ng-runtime}/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.props.mjs +0 -0
  2341. {package → app-ng-runtime}/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +0 -0
  2342. {package → app-ng-runtime}/mobile/components/containers/segmented-control/esm2022/segmented-control.module.mjs +0 -0
  2343. {package → app-ng-runtime}/mobile/components/containers/segmented-control/esm2022/segmented-control.props.mjs +0 -0
  2344. {package → app-ng-runtime}/mobile/components/containers/segmented-control/fesm2022/index.mjs +0 -0
  2345. {package → app-ng-runtime}/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +0 -0
  2346. {package → app-ng-runtime}/mobile/components/containers/segmented-control/index.d.ts +0 -0
  2347. {package → app-ng-runtime}/mobile/components/containers/segmented-control/public_api.d.ts +0 -0
  2348. {package → app-ng-runtime}/mobile/components/containers/segmented-control/segment-content/segment-content.component.d.ts +0 -0
  2349. {package → app-ng-runtime}/mobile/components/containers/segmented-control/segment-content/segment-content.props.d.ts +0 -0
  2350. {package → app-ng-runtime}/mobile/components/containers/segmented-control/segmented-control.component.d.ts +0 -0
  2351. {package → app-ng-runtime}/mobile/components/containers/segmented-control/segmented-control.module.d.ts +0 -0
  2352. {package → app-ng-runtime}/mobile/components/containers/segmented-control/segmented-control.props.d.ts +0 -0
  2353. {package → app-ng-runtime}/mobile/components/data/media-list/bundles/index.umd.js +0 -0
  2354. {package → app-ng-runtime}/mobile/components/data/media-list/esm2022/index.mjs +0 -0
  2355. {package → app-ng-runtime}/mobile/components/data/media-list/esm2022/media-list-item/media-list-item.directive.mjs +0 -0
  2356. {package → app-ng-runtime}/mobile/components/data/media-list/esm2022/media-list.component.mjs +0 -0
  2357. {package → app-ng-runtime}/mobile/components/data/media-list/esm2022/media-list.module.mjs +0 -0
  2358. {package → app-ng-runtime}/mobile/components/data/media-list/esm2022/media-list.props.mjs +0 -0
  2359. {package → app-ng-runtime}/mobile/components/data/media-list/esm2022/public_api.mjs +0 -0
  2360. {package → app-ng-runtime}/mobile/components/data/media-list/fesm2022/index.mjs +0 -0
  2361. {package → app-ng-runtime}/mobile/components/data/media-list/fesm2022/index.mjs.map +0 -0
  2362. {package → app-ng-runtime}/mobile/components/data/media-list/index.d.ts +0 -0
  2363. {package → app-ng-runtime}/mobile/components/data/media-list/media-list-item/media-list-item.directive.d.ts +0 -0
  2364. {package → app-ng-runtime}/mobile/components/data/media-list/media-list.component.d.ts +0 -0
  2365. {package → app-ng-runtime}/mobile/components/data/media-list/media-list.module.d.ts +0 -0
  2366. {package → app-ng-runtime}/mobile/components/data/media-list/media-list.props.d.ts +0 -0
  2367. {package → app-ng-runtime}/mobile/components/data/media-list/public_api.d.ts +0 -0
  2368. {package → app-ng-runtime}/mobile/components/device/barcode-scanner/barcode-scanner.component.d.ts +0 -0
  2369. {package → app-ng-runtime}/mobile/components/device/barcode-scanner/barcode-scanner.module.d.ts +0 -0
  2370. {package → app-ng-runtime}/mobile/components/device/barcode-scanner/barcode-scanner.props.d.ts +0 -0
  2371. {package → app-ng-runtime}/mobile/components/device/barcode-scanner/bundles/index.umd.js +0 -0
  2372. {package → app-ng-runtime}/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.component.mjs +0 -0
  2373. {package → app-ng-runtime}/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.module.mjs +0 -0
  2374. {package → app-ng-runtime}/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +0 -0
  2375. {package → app-ng-runtime}/mobile/components/device/barcode-scanner/esm2022/index.mjs +0 -0
  2376. {package → app-ng-runtime}/mobile/components/device/barcode-scanner/esm2022/public_api.mjs +0 -0
  2377. {package → app-ng-runtime}/mobile/components/device/barcode-scanner/fesm2022/index.mjs +0 -0
  2378. {package → app-ng-runtime}/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +0 -0
  2379. {package → app-ng-runtime}/mobile/components/device/barcode-scanner/index.d.ts +0 -0
  2380. {package → app-ng-runtime}/mobile/components/device/barcode-scanner/public_api.d.ts +0 -0
  2381. {package → app-ng-runtime}/mobile/components/device/camera/bundles/index.umd.js +0 -0
  2382. {package → app-ng-runtime}/mobile/components/device/camera/camera.component.d.ts +0 -0
  2383. {package → app-ng-runtime}/mobile/components/device/camera/camera.module.d.ts +0 -0
  2384. {package → app-ng-runtime}/mobile/components/device/camera/camera.props.d.ts +0 -0
  2385. {package → app-ng-runtime}/mobile/components/device/camera/esm2022/camera.component.mjs +0 -0
  2386. {package → app-ng-runtime}/mobile/components/device/camera/esm2022/camera.module.mjs +0 -0
  2387. {package → app-ng-runtime}/mobile/components/device/camera/esm2022/camera.props.mjs +0 -0
  2388. {package → app-ng-runtime}/mobile/components/device/camera/esm2022/index.mjs +0 -0
  2389. {package → app-ng-runtime}/mobile/components/device/camera/esm2022/public_api.mjs +0 -0
  2390. {package → app-ng-runtime}/mobile/components/device/camera/fesm2022/index.mjs +0 -0
  2391. {package → app-ng-runtime}/mobile/components/device/camera/fesm2022/index.mjs.map +0 -0
  2392. {package → app-ng-runtime}/mobile/components/device/camera/index.d.ts +0 -0
  2393. {package → app-ng-runtime}/mobile/components/device/camera/public_api.d.ts +0 -0
  2394. {package → app-ng-runtime}/mobile/components/input/file-upload/bundles/index.umd.js +0 -0
  2395. {package → app-ng-runtime}/mobile/components/input/file-upload/esm2022/file-upload.directive.mjs +0 -0
  2396. {package → app-ng-runtime}/mobile/components/input/file-upload/esm2022/file-upload.module.mjs +0 -0
  2397. {package → app-ng-runtime}/mobile/components/input/file-upload/esm2022/index.mjs +0 -0
  2398. {package → app-ng-runtime}/mobile/components/input/file-upload/esm2022/public_api.mjs +0 -0
  2399. {package → app-ng-runtime}/mobile/components/input/file-upload/fesm2022/index.mjs +0 -0
  2400. {package → app-ng-runtime}/mobile/components/input/file-upload/fesm2022/index.mjs.map +0 -0
  2401. {package → app-ng-runtime}/mobile/components/input/file-upload/file-upload.directive.d.ts +0 -0
  2402. {package → app-ng-runtime}/mobile/components/input/file-upload/file-upload.module.d.ts +0 -0
  2403. {package → app-ng-runtime}/mobile/components/input/file-upload/index.d.ts +0 -0
  2404. {package → app-ng-runtime}/mobile/components/input/file-upload/public_api.d.ts +0 -0
  2405. {package → app-ng-runtime}/mobile/components/page/default/bundles/index.umd.js +0 -0
  2406. {package → app-ng-runtime}/mobile/components/page/default/esm2022/index.mjs +0 -0
  2407. {package → app-ng-runtime}/mobile/components/page/default/esm2022/page-content-loader/page-content-loader.component.mjs +0 -0
  2408. {package → app-ng-runtime}/mobile/components/page/default/esm2022/page.directive.mjs +0 -0
  2409. {package → app-ng-runtime}/mobile/components/page/default/esm2022/page.module.mjs +0 -0
  2410. {package → app-ng-runtime}/mobile/components/page/default/esm2022/public_api.mjs +0 -0
  2411. {package → app-ng-runtime}/mobile/components/page/default/fesm2022/index.mjs +0 -0
  2412. {package → app-ng-runtime}/mobile/components/page/default/fesm2022/index.mjs.map +0 -0
  2413. {package → app-ng-runtime}/mobile/components/page/default/index.d.ts +0 -0
  2414. {package → app-ng-runtime}/mobile/components/page/default/page-content-loader/page-content-loader.component.d.ts +0 -0
  2415. {package → app-ng-runtime}/mobile/components/page/default/page.directive.d.ts +0 -0
  2416. {package → app-ng-runtime}/mobile/components/page/default/page.module.d.ts +0 -0
  2417. {package → app-ng-runtime}/mobile/components/page/default/public_api.d.ts +0 -0
  2418. {package → app-ng-runtime}/mobile/components/page/left-panel/bundles/index.umd.js +0 -0
  2419. {package → app-ng-runtime}/mobile/components/page/left-panel/esm2022/index.mjs +0 -0
  2420. {package → app-ng-runtime}/mobile/components/page/left-panel/esm2022/left-panel.directive.mjs +0 -0
  2421. {package → app-ng-runtime}/mobile/components/page/left-panel/esm2022/left-panel.module.mjs +0 -0
  2422. {package → app-ng-runtime}/mobile/components/page/left-panel/esm2022/public_api.mjs +0 -0
  2423. {package → app-ng-runtime}/mobile/components/page/left-panel/fesm2022/index.mjs +0 -0
  2424. {package → app-ng-runtime}/mobile/components/page/left-panel/fesm2022/index.mjs.map +0 -0
  2425. {package → app-ng-runtime}/mobile/components/page/left-panel/index.d.ts +0 -0
  2426. {package → app-ng-runtime}/mobile/components/page/left-panel/left-panel.directive.d.ts +0 -0
  2427. {package → app-ng-runtime}/mobile/components/page/left-panel/left-panel.module.d.ts +0 -0
  2428. {package → app-ng-runtime}/mobile/components/page/left-panel/public_api.d.ts +0 -0
  2429. {package → app-ng-runtime}/mobile/components/page/mobile-navbar/bundles/index.umd.js +0 -0
  2430. {package → app-ng-runtime}/mobile/components/page/mobile-navbar/esm2022/index.mjs +0 -0
  2431. {package → app-ng-runtime}/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.component.mjs +0 -0
  2432. {package → app-ng-runtime}/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.module.mjs +0 -0
  2433. {package → app-ng-runtime}/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.props.mjs +0 -0
  2434. {package → app-ng-runtime}/mobile/components/page/mobile-navbar/esm2022/public_api.mjs +0 -0
  2435. {package → app-ng-runtime}/mobile/components/page/mobile-navbar/fesm2022/index.mjs +0 -0
  2436. {package → app-ng-runtime}/mobile/components/page/mobile-navbar/fesm2022/index.mjs.map +0 -0
  2437. {package → app-ng-runtime}/mobile/components/page/mobile-navbar/index.d.ts +0 -0
  2438. {package → app-ng-runtime}/mobile/components/page/mobile-navbar/mobile-navbar.component.d.ts +0 -0
  2439. {package → app-ng-runtime}/mobile/components/page/mobile-navbar/mobile-navbar.module.d.ts +0 -0
  2440. {package → app-ng-runtime}/mobile/components/page/mobile-navbar/mobile-navbar.props.d.ts +0 -0
  2441. {package → app-ng-runtime}/mobile/components/page/mobile-navbar/public_api.d.ts +0 -0
  2442. {package → app-ng-runtime}/mobile/components/page/tab-bar/bundles/index.umd.js +0 -0
  2443. {package → app-ng-runtime}/mobile/components/page/tab-bar/esm2022/index.mjs +0 -0
  2444. {package → app-ng-runtime}/mobile/components/page/tab-bar/esm2022/public_api.mjs +0 -0
  2445. {package → app-ng-runtime}/mobile/components/page/tab-bar/esm2022/tab-bar.module.mjs +0 -0
  2446. {package → app-ng-runtime}/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +0 -0
  2447. {package → app-ng-runtime}/mobile/components/page/tab-bar/esm2022/tabbar.props.mjs +0 -0
  2448. {package → app-ng-runtime}/mobile/components/page/tab-bar/fesm2022/index.mjs +0 -0
  2449. {package → app-ng-runtime}/mobile/components/page/tab-bar/fesm2022/index.mjs.map +0 -0
  2450. {package → app-ng-runtime}/mobile/components/page/tab-bar/index.d.ts +0 -0
  2451. {package → app-ng-runtime}/mobile/components/page/tab-bar/public_api.d.ts +0 -0
  2452. {package → app-ng-runtime}/mobile/components/page/tab-bar/tab-bar.module.d.ts +0 -0
  2453. {package → app-ng-runtime}/mobile/components/page/tab-bar/tabbar.component.d.ts +0 -0
  2454. {package → app-ng-runtime}/mobile/components/page/tab-bar/tabbar.props.d.ts +0 -0
  2455. {package → app-ng-runtime}/mobile/core/bundles/index.umd.js +0 -0
  2456. {package → app-ng-runtime}/mobile/core/core.module.d.ts +0 -0
  2457. {package → app-ng-runtime}/mobile/core/esm2022/core.module.mjs +0 -0
  2458. {package → app-ng-runtime}/mobile/core/esm2022/index.mjs +0 -0
  2459. {package → app-ng-runtime}/mobile/core/esm2022/native.xhr.mjs +0 -0
  2460. {package → app-ng-runtime}/mobile/core/esm2022/public_api.mjs +0 -0
  2461. {package → app-ng-runtime}/mobile/core/esm2022/services/device-file-cache.service.mjs +0 -0
  2462. {package → app-ng-runtime}/mobile/core/esm2022/services/device-file-download.service.mjs +0 -0
  2463. {package → app-ng-runtime}/mobile/core/esm2022/services/device-file-opener.service.mjs +0 -0
  2464. {package → app-ng-runtime}/mobile/core/esm2022/services/device-file-upload.service.mjs +0 -0
  2465. {package → app-ng-runtime}/mobile/core/esm2022/services/device-file.service.mjs +0 -0
  2466. {package → app-ng-runtime}/mobile/core/esm2022/services/device-start-up-service.mjs +0 -0
  2467. {package → app-ng-runtime}/mobile/core/esm2022/services/device.service.mjs +0 -0
  2468. {package → app-ng-runtime}/mobile/core/esm2022/services/ext-app-message.service.mjs +0 -0
  2469. {package → app-ng-runtime}/mobile/core/esm2022/services/network.service.mjs +0 -0
  2470. {package → app-ng-runtime}/mobile/core/fesm2022/index.mjs +0 -0
  2471. {package → app-ng-runtime}/mobile/core/fesm2022/index.mjs.map +0 -0
  2472. {package → app-ng-runtime}/mobile/core/index.d.ts +0 -0
  2473. {package → app-ng-runtime}/mobile/core/native.xhr.d.ts +0 -0
  2474. {package → app-ng-runtime}/mobile/core/public_api.d.ts +0 -0
  2475. {package → app-ng-runtime}/mobile/core/services/device-file-cache.service.d.ts +0 -0
  2476. {package → app-ng-runtime}/mobile/core/services/device-file-download.service.d.ts +0 -0
  2477. {package → app-ng-runtime}/mobile/core/services/device-file-opener.service.d.ts +0 -0
  2478. {package → app-ng-runtime}/mobile/core/services/device-file-upload.service.d.ts +0 -0
  2479. {package → app-ng-runtime}/mobile/core/services/device-file.service.d.ts +0 -0
  2480. {package → app-ng-runtime}/mobile/core/services/device-start-up-service.d.ts +0 -0
  2481. {package → app-ng-runtime}/mobile/core/services/device.service.d.ts +0 -0
  2482. {package → app-ng-runtime}/mobile/core/services/ext-app-message.service.d.ts +0 -0
  2483. {package → app-ng-runtime}/mobile/core/services/network.service.d.ts +0 -0
  2484. {package → app-ng-runtime}/mobile/offline/bundles/index.umd.js +0 -0
  2485. {package → app-ng-runtime}/mobile/offline/esm2022/index.mjs +0 -0
  2486. {package → app-ng-runtime}/mobile/offline/esm2022/models/config.mjs +0 -0
  2487. {package → app-ng-runtime}/mobile/offline/esm2022/models/local-db-store.mjs +0 -0
  2488. {package → app-ng-runtime}/mobile/offline/esm2022/offline.module.mjs +0 -0
  2489. {package → app-ng-runtime}/mobile/offline/esm2022/public_api.mjs +0 -0
  2490. {package → app-ng-runtime}/mobile/offline/esm2022/services/change-log.service.mjs +0 -0
  2491. {package → app-ng-runtime}/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +0 -0
  2492. {package → app-ng-runtime}/mobile/offline/esm2022/services/local-db-management.service.mjs +0 -0
  2493. {package → app-ng-runtime}/mobile/offline/esm2022/services/local-db.service.mjs +0 -0
  2494. {package → app-ng-runtime}/mobile/offline/esm2022/services/local-key-value.service.mjs +0 -0
  2495. {package → app-ng-runtime}/mobile/offline/esm2022/services/push.service.mjs +0 -0
  2496. {package → app-ng-runtime}/mobile/offline/esm2022/services/workers/error-blocker.mjs +0 -0
  2497. {package → app-ng-runtime}/mobile/offline/esm2022/services/workers/file-handler.mjs +0 -0
  2498. {package → app-ng-runtime}/mobile/offline/esm2022/services/workers/id-resolver.mjs +0 -0
  2499. {package → app-ng-runtime}/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +0 -0
  2500. {package → app-ng-runtime}/mobile/offline/esm2022/utils/file-upload.utils.mjs +0 -0
  2501. {package → app-ng-runtime}/mobile/offline/esm2022/utils/live-variable.utils.mjs +0 -0
  2502. {package → app-ng-runtime}/mobile/offline/esm2022/utils/query-executor.utils.mjs +0 -0
  2503. {package → app-ng-runtime}/mobile/offline/esm2022/utils/security.utils.mjs +0 -0
  2504. {package → app-ng-runtime}/mobile/offline/esm2022/utils/utils.mjs +0 -0
  2505. {package → app-ng-runtime}/mobile/offline/fesm2022/index.mjs +0 -0
  2506. {package → app-ng-runtime}/mobile/offline/fesm2022/index.mjs.map +0 -0
  2507. {package → app-ng-runtime}/mobile/offline/index.d.ts +0 -0
  2508. {package → app-ng-runtime}/mobile/offline/models/config.d.ts +0 -0
  2509. {package → app-ng-runtime}/mobile/offline/models/local-db-store.d.ts +0 -0
  2510. {package → app-ng-runtime}/mobile/offline/offline.module.d.ts +0 -0
  2511. {package → app-ng-runtime}/mobile/offline/public_api.d.ts +0 -0
  2512. {package → app-ng-runtime}/mobile/offline/services/change-log.service.d.ts +0 -0
  2513. {package → app-ng-runtime}/mobile/offline/services/local-db-data-pull.service.d.ts +0 -0
  2514. {package → app-ng-runtime}/mobile/offline/services/local-db-management.service.d.ts +0 -0
  2515. {package → app-ng-runtime}/mobile/offline/services/local-db.service.d.ts +0 -0
  2516. {package → app-ng-runtime}/mobile/offline/services/local-key-value.service.d.ts +0 -0
  2517. {package → app-ng-runtime}/mobile/offline/services/push.service.d.ts +0 -0
  2518. {package → app-ng-runtime}/mobile/offline/services/workers/error-blocker.d.ts +0 -0
  2519. {package → app-ng-runtime}/mobile/offline/services/workers/file-handler.d.ts +0 -0
  2520. {package → app-ng-runtime}/mobile/offline/services/workers/id-resolver.d.ts +0 -0
  2521. {package → app-ng-runtime}/mobile/offline/services/workers/multi-part-param-transformer.d.ts +0 -0
  2522. {package → app-ng-runtime}/mobile/offline/utils/file-upload.utils.d.ts +0 -0
  2523. {package → app-ng-runtime}/mobile/offline/utils/live-variable.utils.d.ts +0 -0
  2524. {package → app-ng-runtime}/mobile/offline/utils/query-executor.utils.d.ts +0 -0
  2525. {package → app-ng-runtime}/mobile/offline/utils/security.utils.d.ts +0 -0
  2526. {package → app-ng-runtime}/mobile/offline/utils/utils.d.ts +0 -0
  2527. {package → app-ng-runtime}/mobile/placeholder/runtime/bundles/index.umd.js +0 -0
  2528. {package → app-ng-runtime}/mobile/placeholder/runtime/components/app-ext.component.d.ts +0 -0
  2529. {package → app-ng-runtime}/mobile/placeholder/runtime/esm2022/components/app-ext.component.mjs +0 -0
  2530. {package → app-ng-runtime}/mobile/placeholder/runtime/esm2022/index.mjs +0 -0
  2531. {package → app-ng-runtime}/mobile/placeholder/runtime/esm2022/mobile-runtime.module.mjs +0 -0
  2532. {package → app-ng-runtime}/mobile/placeholder/runtime/esm2022/public_api.mjs +0 -0
  2533. {package → app-ng-runtime}/mobile/placeholder/runtime/fesm2022/index.mjs +0 -0
  2534. {package → app-ng-runtime}/mobile/placeholder/runtime/fesm2022/index.mjs.map +0 -0
  2535. {package → app-ng-runtime}/mobile/placeholder/runtime/index.d.ts +0 -0
  2536. {package → app-ng-runtime}/mobile/placeholder/runtime/mobile-runtime.module.d.ts +0 -0
  2537. {package → app-ng-runtime}/mobile/placeholder/runtime/public_api.d.ts +0 -0
  2538. {package → app-ng-runtime}/mobile/placeholder/runtime-dynamic/bundles/index.umd.js +0 -0
  2539. {package → app-ng-runtime}/mobile/placeholder/runtime-dynamic/esm2022/index.mjs +0 -0
  2540. {package → app-ng-runtime}/mobile/placeholder/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +0 -0
  2541. {package → app-ng-runtime}/mobile/placeholder/runtime-dynamic/esm2022/public_api.mjs +0 -0
  2542. {package → app-ng-runtime}/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs +0 -0
  2543. {package → app-ng-runtime}/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs.map +0 -0
  2544. {package → app-ng-runtime}/mobile/placeholder/runtime-dynamic/index.d.ts +0 -0
  2545. {package → app-ng-runtime}/mobile/placeholder/runtime-dynamic/mobile-runtime-dynamic.module.d.ts +0 -0
  2546. {package → app-ng-runtime}/mobile/placeholder/runtime-dynamic/public_api.d.ts +0 -0
  2547. {package → app-ng-runtime}/mobile/runtime/bundles/index.umd.js +0 -0
  2548. {package → app-ng-runtime}/mobile/runtime/components/app-ext.component.d.ts +0 -0
  2549. {package → app-ng-runtime}/mobile/runtime/esm2022/components/app-ext.component.mjs +0 -0
  2550. {package → app-ng-runtime}/mobile/runtime/esm2022/index.mjs +0 -0
  2551. {package → app-ng-runtime}/mobile/runtime/esm2022/mobile-runtime.module.mjs +0 -0
  2552. {package → app-ng-runtime}/mobile/runtime/esm2022/public_api.mjs +0 -0
  2553. {package → app-ng-runtime}/mobile/runtime/esm2022/services/cookie.service.mjs +0 -0
  2554. {package → app-ng-runtime}/mobile/runtime/esm2022/services/http-interceptor.service.mjs +0 -0
  2555. {package → app-ng-runtime}/mobile/runtime/esm2022/services/webprocess.service.mjs +0 -0
  2556. {package → app-ng-runtime}/mobile/runtime/fesm2022/index.mjs +0 -0
  2557. {package → app-ng-runtime}/mobile/runtime/fesm2022/index.mjs.map +0 -0
  2558. {package → app-ng-runtime}/mobile/runtime/index.d.ts +0 -0
  2559. {package → app-ng-runtime}/mobile/runtime/mobile-runtime.module.d.ts +0 -0
  2560. {package → app-ng-runtime}/mobile/runtime/public_api.d.ts +0 -0
  2561. {package → app-ng-runtime}/mobile/runtime/services/cookie.service.d.ts +0 -0
  2562. {package → app-ng-runtime}/mobile/runtime/services/http-interceptor.service.d.ts +0 -0
  2563. {package → app-ng-runtime}/mobile/runtime/services/webprocess.service.d.ts +0 -0
  2564. {package → app-ng-runtime}/mobile/runtime-dynamic/bundles/index.umd.js +0 -0
  2565. {package → app-ng-runtime}/mobile/runtime-dynamic/esm2022/index.mjs +0 -0
  2566. {package → app-ng-runtime}/mobile/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +0 -0
  2567. {package → app-ng-runtime}/mobile/runtime-dynamic/esm2022/public_api.mjs +0 -0
  2568. {package → app-ng-runtime}/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +0 -0
  2569. {package → app-ng-runtime}/mobile/runtime-dynamic/fesm2022/index.mjs +0 -0
  2570. {package → app-ng-runtime}/mobile/runtime-dynamic/fesm2022/index.mjs.map +0 -0
  2571. {package → app-ng-runtime}/mobile/runtime-dynamic/index.d.ts +0 -0
  2572. {package → app-ng-runtime}/mobile/runtime-dynamic/mobile-runtime-dynamic.module.d.ts +0 -0
  2573. {package → app-ng-runtime}/mobile/runtime-dynamic/public_api.d.ts +0 -0
  2574. {package → app-ng-runtime}/mobile/runtime-dynamic/services/live-sync.service.d.ts +0 -0
  2575. {package → app-ng-runtime}/mobile/variables/bundles/index.umd.js +0 -0
  2576. {package → app-ng-runtime}/mobile/variables/esm2022/index.mjs +0 -0
  2577. {package → app-ng-runtime}/mobile/variables/esm2022/public_api.mjs +0 -0
  2578. {package → app-ng-runtime}/mobile/variables/esm2022/services/calendar-service.mjs +0 -0
  2579. {package → app-ng-runtime}/mobile/variables/esm2022/services/camera-service.mjs +0 -0
  2580. {package → app-ng-runtime}/mobile/variables/esm2022/services/contacts-service.mjs +0 -0
  2581. {package → app-ng-runtime}/mobile/variables/esm2022/services/datasync-service.mjs +0 -0
  2582. {package → app-ng-runtime}/mobile/variables/esm2022/services/device-service/device-service.mjs +0 -0
  2583. {package → app-ng-runtime}/mobile/variables/esm2022/services/device-service/location-service.mjs +0 -0
  2584. {package → app-ng-runtime}/mobile/variables/esm2022/services/file-service.mjs +0 -0
  2585. {package → app-ng-runtime}/mobile/variables/esm2022/services/scan-service.mjs +0 -0
  2586. {package → app-ng-runtime}/mobile/variables/esm2022/variables.module.mjs +0 -0
  2587. {package → app-ng-runtime}/mobile/variables/fesm2022/index.mjs +0 -0
  2588. {package → app-ng-runtime}/mobile/variables/fesm2022/index.mjs.map +0 -0
  2589. {package → app-ng-runtime}/mobile/variables/index.d.ts +0 -0
  2590. {package → app-ng-runtime}/mobile/variables/public_api.d.ts +0 -0
  2591. {package → app-ng-runtime}/mobile/variables/services/calendar-service.d.ts +0 -0
  2592. {package → app-ng-runtime}/mobile/variables/services/camera-service.d.ts +0 -0
  2593. {package → app-ng-runtime}/mobile/variables/services/contacts-service.d.ts +0 -0
  2594. {package → app-ng-runtime}/mobile/variables/services/datasync-service.d.ts +0 -0
  2595. {package → app-ng-runtime}/mobile/variables/services/device-service/device-service.d.ts +0 -0
  2596. {package → app-ng-runtime}/mobile/variables/services/device-service/location-service.d.ts +0 -0
  2597. {package → app-ng-runtime}/mobile/variables/services/file-service.d.ts +0 -0
  2598. {package → app-ng-runtime}/mobile/variables/services/scan-service.d.ts +0 -0
  2599. {package → app-ng-runtime}/mobile/variables/variables.module.d.ts +0 -0
  2600. {package → app-ng-runtime}/oAuth/bundles/index.umd.js +0 -0
  2601. {package → app-ng-runtime}/oAuth/esm2022/index.mjs +0 -0
  2602. {package → app-ng-runtime}/oAuth/esm2022/oAuth.module.mjs +0 -0
  2603. {package → app-ng-runtime}/oAuth/esm2022/oAuth.service.mjs +0 -0
  2604. {package → app-ng-runtime}/oAuth/esm2022/oAuth.utils.mjs +0 -0
  2605. {package → app-ng-runtime}/oAuth/esm2022/public_api.mjs +0 -0
  2606. {package → app-ng-runtime}/oAuth/fesm2022/index.mjs +0 -0
  2607. {package → app-ng-runtime}/oAuth/fesm2022/index.mjs.map +0 -0
  2608. {package → app-ng-runtime}/oAuth/index.d.ts +0 -0
  2609. {package → app-ng-runtime}/oAuth/oAuth.module.d.ts +0 -0
  2610. {package → app-ng-runtime}/oAuth/oAuth.service.d.ts +0 -0
  2611. {package → app-ng-runtime}/oAuth/oAuth.utils.d.ts +0 -0
  2612. {package → app-ng-runtime}/oAuth/public_api.d.ts +0 -0
  2613. {package → app-ng-runtime}/runtime/base/components/app-spinner.component.d.ts +0 -0
  2614. {package → app-ng-runtime}/runtime/base/components/base-layout.component.d.ts +0 -0
  2615. {package → app-ng-runtime}/runtime/base/components/base-page.component.d.ts +0 -0
  2616. {package → app-ng-runtime}/runtime/base/components/base-partial.component.d.ts +0 -0
  2617. {package → app-ng-runtime}/runtime/base/components/base-prefab.component.d.ts +0 -0
  2618. {package → app-ng-runtime}/runtime/base/components/base-spa-page.component.d.ts +0 -0
  2619. {package → app-ng-runtime}/runtime/base/components/custom-toaster.component.d.ts +0 -0
  2620. {package → app-ng-runtime}/runtime/base/components/empty-component/empty-page.component.d.ts +0 -0
  2621. {package → app-ng-runtime}/runtime/base/components/prefab-preview.component.d.ts +0 -0
  2622. {package → app-ng-runtime}/runtime/base/directives/prefab.directive.d.ts +0 -0
  2623. {package → app-ng-runtime}/runtime/base/esm2022/components/app-spinner.component.mjs +0 -0
  2624. {package → app-ng-runtime}/runtime/base/esm2022/components/base-layout.component.mjs +0 -0
  2625. {package → app-ng-runtime}/runtime/base/esm2022/components/base-page.component.mjs +0 -0
  2626. {package → app-ng-runtime}/runtime/base/esm2022/components/base-partial.component.mjs +0 -0
  2627. {package → app-ng-runtime}/runtime/base/esm2022/components/base-prefab.component.mjs +0 -0
  2628. {package → app-ng-runtime}/runtime/base/esm2022/components/base-spa-page.component.mjs +0 -0
  2629. {package → app-ng-runtime}/runtime/base/esm2022/components/custom-toaster.component.mjs +0 -0
  2630. {package → app-ng-runtime}/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +0 -0
  2631. {package → app-ng-runtime}/runtime/base/esm2022/components/prefab-preview.component.mjs +0 -0
  2632. {package → app-ng-runtime}/runtime/base/esm2022/directives/prefab.directive.mjs +0 -0
  2633. {package → app-ng-runtime}/runtime/base/esm2022/guards/auth.guard.mjs +0 -0
  2634. {package → app-ng-runtime}/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +0 -0
  2635. {package → app-ng-runtime}/runtime/base/esm2022/guards/page-not-found.guard.mjs +0 -0
  2636. {package → app-ng-runtime}/runtime/base/esm2022/guards/role.guard.mjs +0 -0
  2637. {package → app-ng-runtime}/runtime/base/esm2022/index.mjs +0 -0
  2638. {package → app-ng-runtime}/runtime/base/esm2022/overrides/wm_dom_renderer.mjs +0 -0
  2639. {package → app-ng-runtime}/runtime/base/esm2022/overrides/wm_shared_styles_host.mjs +0 -0
  2640. {package → app-ng-runtime}/runtime/base/esm2022/public_api.mjs +0 -0
  2641. {package → app-ng-runtime}/runtime/base/esm2022/resolves/app-extension.resolve.mjs +0 -0
  2642. {package → app-ng-runtime}/runtime/base/esm2022/resolves/app-js.resolve.mjs +0 -0
  2643. {package → app-ng-runtime}/runtime/base/esm2022/resolves/app-variables.resolve.mjs +0 -0
  2644. {package → app-ng-runtime}/runtime/base/esm2022/resolves/i18n.resolve.mjs +0 -0
  2645. {package → app-ng-runtime}/runtime/base/esm2022/resolves/metadata.resolve.mjs +0 -0
  2646. {package → app-ng-runtime}/runtime/base/esm2022/resolves/security-config.resolve.mjs +0 -0
  2647. {package → app-ng-runtime}/runtime/base/esm2022/runtime-base.module.mjs +0 -0
  2648. {package → app-ng-runtime}/runtime/base/esm2022/services/app-defaults.service.mjs +0 -0
  2649. {package → app-ng-runtime}/runtime/base/esm2022/services/app.manager.service.mjs +0 -0
  2650. {package → app-ng-runtime}/runtime/base/esm2022/services/app.service.mjs +0 -0
  2651. {package → app-ng-runtime}/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +0 -0
  2652. {package → app-ng-runtime}/runtime/base/esm2022/services/http-interceptor.services.mjs +0 -0
  2653. {package → app-ng-runtime}/runtime/base/esm2022/services/navigation.service.mjs +0 -0
  2654. {package → app-ng-runtime}/runtime/base/esm2022/services/pipe-provider.service.mjs +0 -0
  2655. {package → app-ng-runtime}/runtime/base/esm2022/services/pipe.service.mjs +0 -0
  2656. {package → app-ng-runtime}/runtime/base/esm2022/services/prefab-manager.service.mjs +0 -0
  2657. {package → app-ng-runtime}/runtime/base/esm2022/services/spinner.service.mjs +0 -0
  2658. {package → app-ng-runtime}/runtime/base/esm2022/services/toaster.service.mjs +0 -0
  2659. {package → app-ng-runtime}/runtime/base/esm2022/types/types.mjs +0 -0
  2660. {package → app-ng-runtime}/runtime/base/esm2022/util/fragment-monitor.mjs +0 -0
  2661. {package → app-ng-runtime}/runtime/base/esm2022/util/utils.mjs +0 -0
  2662. {package → app-ng-runtime}/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +0 -0
  2663. {package → app-ng-runtime}/runtime/base/guards/auth.guard.d.ts +0 -0
  2664. {package → app-ng-runtime}/runtime/base/guards/can-deactivate-page.guard.d.ts +0 -0
  2665. {package → app-ng-runtime}/runtime/base/guards/page-not-found.guard.d.ts +0 -0
  2666. {package → app-ng-runtime}/runtime/base/guards/role.guard.d.ts +0 -0
  2667. {package → app-ng-runtime}/runtime/base/index.d.ts +0 -0
  2668. {package → app-ng-runtime}/runtime/base/overrides/wm_dom_renderer.d.ts +0 -0
  2669. {package → app-ng-runtime}/runtime/base/overrides/wm_shared_styles_host.d.ts +0 -0
  2670. {package → app-ng-runtime}/runtime/base/public_api.d.ts +0 -0
  2671. {package → app-ng-runtime}/runtime/base/resolves/app-extension.resolve.d.ts +0 -0
  2672. {package → app-ng-runtime}/runtime/base/resolves/app-js.resolve.d.ts +0 -0
  2673. {package → app-ng-runtime}/runtime/base/resolves/app-variables.resolve.d.ts +0 -0
  2674. {package → app-ng-runtime}/runtime/base/resolves/i18n.resolve.d.ts +0 -0
  2675. {package → app-ng-runtime}/runtime/base/resolves/metadata.resolve.d.ts +0 -0
  2676. {package → app-ng-runtime}/runtime/base/resolves/security-config.resolve.d.ts +0 -0
  2677. {package → app-ng-runtime}/runtime/base/runtime-base.module.d.ts +0 -0
  2678. {package → app-ng-runtime}/runtime/base/services/app-defaults.service.d.ts +0 -0
  2679. {package → app-ng-runtime}/runtime/base/services/app.manager.service.d.ts +0 -0
  2680. {package → app-ng-runtime}/runtime/base/services/app.service.d.ts +0 -0
  2681. {package → app-ng-runtime}/runtime/base/services/dynamic-component-ref-provider.service.d.ts +0 -0
  2682. {package → app-ng-runtime}/runtime/base/services/http-interceptor.services.d.ts +0 -0
  2683. {package → app-ng-runtime}/runtime/base/services/i18n.service.d.ts +0 -0
  2684. {package → app-ng-runtime}/runtime/base/services/navigation.service.d.ts +0 -0
  2685. {package → app-ng-runtime}/runtime/base/services/pipe-provider.service.d.ts +0 -0
  2686. {package → app-ng-runtime}/runtime/base/services/pipe.service.d.ts +0 -0
  2687. {package → app-ng-runtime}/runtime/base/services/prefab-manager.service.d.ts +0 -0
  2688. {package → app-ng-runtime}/runtime/base/services/spinner.service.d.ts +0 -0
  2689. {package → app-ng-runtime}/runtime/base/services/toaster.service.d.ts +0 -0
  2690. {package → app-ng-runtime}/runtime/base/types/types.d.ts +0 -0
  2691. {package → app-ng-runtime}/runtime/base/util/fragment-monitor.d.ts +0 -0
  2692. {package → app-ng-runtime}/runtime/base/util/utils.d.ts +0 -0
  2693. {package → app-ng-runtime}/runtime/base/util/wm-route-reuse-strategy.d.ts +0 -0
  2694. {package → app-ng-runtime}/runtime/dynamic/app/app.module.d.ts +0 -0
  2695. {package → app-ng-runtime}/runtime/dynamic/app/app.routes.d.ts +0 -0
  2696. {package → app-ng-runtime}/runtime/dynamic/app/components/page-wrapper.component.d.ts +0 -0
  2697. {package → app-ng-runtime}/runtime/dynamic/app/services/app-extension.service.d.ts +0 -0
  2698. {package → app-ng-runtime}/runtime/dynamic/app/services/app-js-provider.service.d.ts +0 -0
  2699. {package → app-ng-runtime}/runtime/dynamic/app/services/app-resource-manager.service.d.ts +0 -0
  2700. {package → app-ng-runtime}/runtime/dynamic/app/services/app-variables-provider.service.d.ts +0 -0
  2701. {package → app-ng-runtime}/runtime/dynamic/app/services/component-ref-provider.service.d.ts +0 -0
  2702. {package → app-ng-runtime}/runtime/dynamic/app/services/prefab-config-provider.service.d.ts +0 -0
  2703. {package → app-ng-runtime}/runtime/dynamic/bundles/index.umd.js +0 -0
  2704. {package → app-ng-runtime}/runtime/dynamic/esm2022/app/app.module.mjs +0 -0
  2705. {package → app-ng-runtime}/runtime/dynamic/esm2022/app/app.routes.mjs +0 -0
  2706. {package → app-ng-runtime}/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +0 -0
  2707. {package → app-ng-runtime}/runtime/dynamic/esm2022/app/services/app-extension.service.mjs +0 -0
  2708. {package → app-ng-runtime}/runtime/dynamic/esm2022/app/services/app-js-provider.service.mjs +0 -0
  2709. {package → app-ng-runtime}/runtime/dynamic/esm2022/app/services/app-resource-manager.service.mjs +0 -0
  2710. {package → app-ng-runtime}/runtime/dynamic/esm2022/app/services/app-variables-provider.service.mjs +0 -0
  2711. {package → app-ng-runtime}/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +0 -0
  2712. {package → app-ng-runtime}/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +0 -0
  2713. {package → app-ng-runtime}/runtime/dynamic/esm2022/index.mjs +0 -0
  2714. {package → app-ng-runtime}/runtime/dynamic/esm2022/main.mjs +0 -0
  2715. {package → app-ng-runtime}/runtime/dynamic/esm2022/public_api.mjs +0 -0
  2716. {package → app-ng-runtime}/runtime/dynamic/fesm2022/index.mjs +0 -0
  2717. {package → app-ng-runtime}/runtime/dynamic/fesm2022/index.mjs.map +0 -0
  2718. {package → app-ng-runtime}/runtime/dynamic/index.d.ts +0 -0
  2719. {package → app-ng-runtime}/runtime/dynamic/main.d.ts +0 -0
  2720. {package → app-ng-runtime}/runtime/dynamic/public_api.d.ts +0 -0
  2721. {package → app-ng-runtime}/scripts/@wavemaker/nvd3/build/nv.d3.min.js +0 -0
  2722. {package → app-ng-runtime}/scripts/d3/d3.min.js +0 -0
  2723. {package → app-ng-runtime}/scripts/datatable/datatable.js +0 -0
  2724. {package → app-ng-runtime}/scripts/fullcalendar/main.min.js +0 -0
  2725. {package → app-ng-runtime}/scripts/hammerjs/hammer.min.js +0 -0
  2726. {package → app-ng-runtime}/scripts/iscroll/build/iscroll.js +0 -0
  2727. {package → app-ng-runtime}/scripts/jquery-ui/ui/widgets/droppable.js +0 -0
  2728. {package → app-ng-runtime}/scripts/jquery-ui/ui/widgets/resizable.js +0 -0
  2729. {package → app-ng-runtime}/scripts/jquery-ui/ui/widgets/sortable.js +0 -0
  2730. {package → app-ng-runtime}/scripts/jquery.ui.touch-punch/jquery.ui.touch-punch.min.js +0 -0
  2731. {package → app-ng-runtime}/scripts/summernote/dist/summernote-lite.min.js +0 -0
  2732. {package → app-ng-runtime}/scripts/swipey/swipey.jquery.plugin.js +0 -0
  2733. {package → app-ng-runtime}/scripts/tree-keyboard-navigation/keyboard-navigation.js +0 -0
  2734. {package → app-ng-runtime}/security/bundles/index.umd.js +0 -0
  2735. {package → app-ng-runtime}/security/esm2022/index.mjs +0 -0
  2736. {package → app-ng-runtime}/security/esm2022/public_api.mjs +0 -0
  2737. {package → app-ng-runtime}/security/esm2022/security.module.mjs +0 -0
  2738. {package → app-ng-runtime}/security/esm2022/security.service.mjs +0 -0
  2739. {package → app-ng-runtime}/security/fesm2022/index.mjs +0 -0
  2740. {package → app-ng-runtime}/security/fesm2022/index.mjs.map +0 -0
  2741. {package → app-ng-runtime}/security/index.d.ts +0 -0
  2742. {package → app-ng-runtime}/security/public_api.d.ts +0 -0
  2743. {package → app-ng-runtime}/security/security.module.d.ts +0 -0
  2744. {package → app-ng-runtime}/security/security.service.d.ts +0 -0
  2745. {package → app-ng-runtime}/swipey/bundles/index.umd.js +0 -0
  2746. {package → app-ng-runtime}/swipey/esm2022/index.mjs +0 -0
  2747. {package → app-ng-runtime}/swipey/esm2022/public_api.mjs +0 -0
  2748. {package → app-ng-runtime}/swipey/esm2022/swipe.animation.mjs +0 -0
  2749. {package → app-ng-runtime}/swipey/fesm2022/index.mjs +0 -0
  2750. {package → app-ng-runtime}/swipey/fesm2022/index.mjs.map +0 -0
  2751. {package → app-ng-runtime}/swipey/index.d.ts +0 -0
  2752. {package → app-ng-runtime}/swipey/public_api.d.ts +0 -0
  2753. {package → app-ng-runtime}/swipey/swipe.animation.d.ts +0 -0
  2754. {package → app-ng-runtime}/transpiler/build.d.ts +0 -0
  2755. {package → app-ng-runtime}/transpiler/bundles/index.umd.js +0 -0
  2756. {package → app-ng-runtime}/transpiler/esm2022/build.mjs +0 -0
  2757. {package → app-ng-runtime}/transpiler/esm2022/imports.mjs +0 -0
  2758. {package → app-ng-runtime}/transpiler/esm2022/index.mjs +0 -0
  2759. {package → app-ng-runtime}/transpiler/esm2022/public_api.mjs +0 -0
  2760. {package → app-ng-runtime}/transpiler/fesm2022/index.mjs +0 -0
  2761. {package → app-ng-runtime}/transpiler/fesm2022/index.mjs.map +0 -0
  2762. {package → app-ng-runtime}/transpiler/imports.d.ts +0 -0
  2763. {package → app-ng-runtime}/transpiler/index.d.ts +0 -0
  2764. {package → app-ng-runtime}/transpiler/public_api.d.ts +0 -0
  2765. {package → app-ng-runtime}/variables/advanced-options.d.ts +0 -0
  2766. {package → app-ng-runtime}/variables/bundles/index.umd.js +0 -0
  2767. {package → app-ng-runtime}/variables/constants/variables.constants.d.ts +0 -0
  2768. {package → app-ng-runtime}/variables/esm2022/advanced-options.mjs +0 -0
  2769. {package → app-ng-runtime}/variables/esm2022/constants/variables.constants.mjs +0 -0
  2770. {package → app-ng-runtime}/variables/esm2022/factory/variable-manager.factory.mjs +0 -0
  2771. {package → app-ng-runtime}/variables/esm2022/factory/variable.factory.mjs +0 -0
  2772. {package → app-ng-runtime}/variables/esm2022/index.mjs +0 -0
  2773. {package → app-ng-runtime}/variables/esm2022/manager/action/base-action.manager.mjs +0 -0
  2774. {package → app-ng-runtime}/variables/esm2022/manager/action/login-action.manager.mjs +0 -0
  2775. {package → app-ng-runtime}/variables/esm2022/manager/action/logout-action.manager.mjs +0 -0
  2776. {package → app-ng-runtime}/variables/esm2022/manager/action/navigation-action.manager.mjs +0 -0
  2777. {package → app-ng-runtime}/variables/esm2022/manager/action/notification-action.manager.mjs +0 -0
  2778. {package → app-ng-runtime}/variables/esm2022/manager/variable/base-variable.manager.mjs +0 -0
  2779. {package → app-ng-runtime}/variables/esm2022/manager/variable/device-variable-manager.mjs +0 -0
  2780. {package → app-ng-runtime}/variables/esm2022/manager/variable/device-variable-operation.mjs +0 -0
  2781. {package → app-ng-runtime}/variables/esm2022/manager/variable/device-variable-service.mjs +0 -0
  2782. {package → app-ng-runtime}/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +0 -0
  2783. {package → app-ng-runtime}/variables/esm2022/model/action/login-action.mjs +0 -0
  2784. {package → app-ng-runtime}/variables/esm2022/model/action/logout-action.mjs +0 -0
  2785. {package → app-ng-runtime}/variables/esm2022/model/action/navigation-action.mjs +0 -0
  2786. {package → app-ng-runtime}/variables/esm2022/model/action/notification-action.mjs +0 -0
  2787. {package → app-ng-runtime}/variables/esm2022/model/variable/device-variable.mjs +0 -0
  2788. {package → app-ng-runtime}/variables/esm2022/model/variable/web-socket-variable.mjs +0 -0
  2789. {package → app-ng-runtime}/variables/esm2022/public_api.mjs +0 -0
  2790. {package → app-ng-runtime}/variables/esm2022/service/metadata-service/metadata.service.mjs +0 -0
  2791. {package → app-ng-runtime}/variables/esm2022/service/variables.service.mjs +0 -0
  2792. {package → app-ng-runtime}/variables/esm2022/util/action/navigation-action.utils.mjs +0 -0
  2793. {package → app-ng-runtime}/variables/esm2022/util/oAuth.utils.mjs +0 -0
  2794. {package → app-ng-runtime}/variables/esm2022/util/variable/pagination.utils.mjs +0 -0
  2795. {package → app-ng-runtime}/variables/esm2022/util/variable/service-variable.utils.mjs +0 -0
  2796. {package → app-ng-runtime}/variables/esm2022/util/variable/variables.utils.mjs +0 -0
  2797. {package → app-ng-runtime}/variables/esm2022/variables.module.mjs +0 -0
  2798. {package → app-ng-runtime}/variables/factory/variable-manager.factory.d.ts +0 -0
  2799. {package → app-ng-runtime}/variables/factory/variable.factory.d.ts +0 -0
  2800. {package → app-ng-runtime}/variables/fesm2022/index.mjs +0 -0
  2801. {package → app-ng-runtime}/variables/fesm2022/index.mjs.map +0 -0
  2802. {package → app-ng-runtime}/variables/index.d.ts +0 -0
  2803. {package → app-ng-runtime}/variables/manager/action/base-action.manager.d.ts +0 -0
  2804. {package → app-ng-runtime}/variables/manager/action/login-action.manager.d.ts +0 -0
  2805. {package → app-ng-runtime}/variables/manager/action/logout-action.manager.d.ts +0 -0
  2806. {package → app-ng-runtime}/variables/manager/action/navigation-action.manager.d.ts +0 -0
  2807. {package → app-ng-runtime}/variables/manager/action/notification-action.manager.d.ts +0 -0
  2808. {package → app-ng-runtime}/variables/manager/variable/base-variable.manager.d.ts +0 -0
  2809. {package → app-ng-runtime}/variables/manager/variable/device-variable-manager.d.ts +0 -0
  2810. {package → app-ng-runtime}/variables/manager/variable/device-variable-operation.d.ts +0 -0
  2811. {package → app-ng-runtime}/variables/manager/variable/device-variable-service.d.ts +0 -0
  2812. {package → app-ng-runtime}/variables/manager/variable/web-socket-variable.manager.d.ts +0 -0
  2813. {package → app-ng-runtime}/variables/model/action/login-action.d.ts +0 -0
  2814. {package → app-ng-runtime}/variables/model/action/logout-action.d.ts +0 -0
  2815. {package → app-ng-runtime}/variables/model/action/navigation-action.d.ts +0 -0
  2816. {package → app-ng-runtime}/variables/model/action/notification-action.d.ts +0 -0
  2817. {package → app-ng-runtime}/variables/model/variable/device-variable.d.ts +0 -0
  2818. {package → app-ng-runtime}/variables/model/variable/web-socket-variable.d.ts +0 -0
  2819. {package → app-ng-runtime}/variables/public_api.d.ts +0 -0
  2820. {package → app-ng-runtime}/variables/service/metadata-service/metadata.service.d.ts +0 -0
  2821. {package → app-ng-runtime}/variables/service/variables.service.d.ts +0 -0
  2822. {package → app-ng-runtime}/variables/util/action/navigation-action.utils.d.ts +0 -0
  2823. {package → app-ng-runtime}/variables/util/oAuth.utils.d.ts +0 -0
  2824. {package → app-ng-runtime}/variables/util/variable/pagination.utils.d.ts +0 -0
  2825. {package → app-ng-runtime}/variables/util/variable/service-variable.utils.d.ts +0 -0
  2826. {package → app-ng-runtime}/variables/util/variable/variables.utils.d.ts +0 -0
  2827. {package → app-ng-runtime}/variables/variables.module.d.ts +0 -0
@@ -0,0 +1,2203 @@
1
+ import { Attribute, Component, ContentChild, ContentChildren, ElementRef, HostListener, Inject, Injector, NgZone, Optional, QueryList, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';
2
+ import { FormBuilder, NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { $appDigest, $invokeWatchers, $parseEvent, $unwatch, $watch, App, closePopover, DataSource, DynamicComponentRefProvider, extendProto, getClonedObject, getDatasourceFromExpr, getValidJSON, isDataSourceEqual, isDefined, isMobile, PaginationService, StatePersistence, triggerFn, Viewport } from '@wm/core';
4
+ import { Subject } from 'rxjs';
5
+ import { DEBOUNCE_TIMES, EDIT_MODE, extractDataSourceName, getConditionalClasses, getOrderByExpr, getRowOperationsColumn, NAVIGATION_TYPE, prepareFieldDefs, provideAs, provideAsWidgetRef, StylableComponent, styler, transformData, TrustAsPipe, unsupportedStatePersistenceTypes } from '@wm/components/base';
6
+ import { PaginationComponent } from '@wm/components/data/pagination';
7
+ import { ListComponent } from '@wm/components/data/list';
8
+ import { registerProps } from './table.props';
9
+ import { debounceTime } from 'rxjs/operators';
10
+ import { debounce, extend, find, findIndex, floor, forEach, get, includes, indexOf, isArray, isEmpty, isEqual, isNaN, isObject, isUndefined, keys, omitBy, pullAllWith, remove, set, some, split, startsWith, toNumber, values } from "lodash-es";
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/forms";
13
+ import * as i2 from "@wm/core";
14
+ import * as i3 from "@wm/components/data/list";
15
+ import * as i4 from "@wm/components/base";
16
+ import * as i5 from "@wm/components/basic";
17
+ import * as i6 from "ngx-bootstrap/dropdown";
18
+ import * as i7 from "@angular/common";
19
+ import * as i8 from "@wm/components/input";
20
+ import * as i9 from "@wm/components/navigation/menu";
21
+ import * as i10 from "@wm/components/data/pagination";
22
+ const _c0 = ["rowExpansionTmpl"];
23
+ const _c1 = ["rowActionTmpl"];
24
+ const _c2 = ["filterTmpl"];
25
+ const _c3 = ["inlineWidgetTmpl"];
26
+ const _c4 = ["inlineWidgetTmplNew"];
27
+ const _c5 = ["customExprTmpl"];
28
+ const _c6 = ["rowExpansionActionTmpl"];
29
+ const _c7 = ["datagridElement"];
30
+ const _c8 = ["rowActionsView"];
31
+ const _c9 = ["multiColumnFilterView"];
32
+ const _c10 = ["inlineEditView"];
33
+ const _c11 = ["inlineEditNewView"];
34
+ const _c12 = ["customExprView"];
35
+ const _c13 = ["rowDetailView"];
36
+ const _c14 = ["rowExpansionActionView"];
37
+ const _c15 = ["dynamicTable"];
38
+ const _c16 = ["wmTable", ""];
39
+ const _c17 = a0 => ({ btn: a0 });
40
+ const _c18 = (a0, a1) => ({ "btn-sm": a0, "disabled-new": a1 });
41
+ function TableComponent_div_0_i_3_Template(rf, ctx) { if (rf & 1) {
42
+ i0.ɵɵelement(0, "i");
43
+ } if (rf & 2) {
44
+ const ctx_r0 = i0.ɵɵnextContext(2);
45
+ i0.ɵɵclassMapInterpolate1("app-icon panel-icon ", ctx_r0.iconclass, "");
46
+ } }
47
+ function TableComponent_div_0_div_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵelementContainer(0, 29);
49
+ } if (rf & 2) {
50
+ const btn_r2 = ctx.$implicit;
51
+ const index_r3 = ctx.index;
52
+ const ctx_r0 = i0.ɵɵnextContext(3);
53
+ const buttonRef_r4 = i0.ɵɵreference(8);
54
+ const anchorRef_r5 = i0.ɵɵreference(10);
55
+ i0.ɵɵproperty("ngTemplateOutlet", btn_r2.widgetType === "button" ? buttonRef_r4 : anchorRef_r5)("ngTemplateOutletContext", i0.ɵɵpureFunction1(3, _c17, btn_r2))("ngTemplateOutletInjector", ctx_r0.createCustomInjector("actions_header_" + index_r3, i0.ɵɵpureFunction1(5, _c17, btn_r2)));
56
+ } }
57
+ function TableComponent_div_0_div_7_div_2_Template(rf, ctx) { if (rf & 1) {
58
+ i0.ɵɵelement(0, "div", 30);
59
+ } if (rf & 2) {
60
+ const ctx_r0 = i0.ɵɵnextContext(3);
61
+ i0.ɵɵattributeInterpolate1("name", "", ctx_r0.name, "-export");
62
+ } }
63
+ function TableComponent_div_0_div_7_Template(rf, ctx) { if (rf & 1) {
64
+ i0.ɵɵelementStart(0, "div", 26);
65
+ i0.ɵɵtemplate(1, TableComponent_div_0_div_7_ng_container_1_Template, 1, 7, "ng-container", 27)(2, TableComponent_div_0_div_7_div_2_Template, 1, 2, "div", 28);
66
+ i0.ɵɵelementEnd();
67
+ } if (rf & 2) {
68
+ const ctx_r0 = i0.ɵɵnextContext(2);
69
+ i0.ɵɵadvance();
70
+ i0.ɵɵproperty("ngForOf", ctx_r0._actions.header);
71
+ i0.ɵɵadvance();
72
+ i0.ɵɵproperty("ngIf", ctx_r0.exportOptions.length);
73
+ } }
74
+ function TableComponent_div_0_Template(rf, ctx) { if (rf & 1) {
75
+ i0.ɵɵelementStart(0, "div", 19)(1, "h3", 20)(2, "div", 21);
76
+ i0.ɵɵtemplate(3, TableComponent_div_0_i_3_Template, 1, 3, "i", 22);
77
+ i0.ɵɵelementEnd();
78
+ i0.ɵɵelementStart(4, "div", 21);
79
+ i0.ɵɵelement(5, "div", 23)(6, "div", 24);
80
+ i0.ɵɵelementEnd();
81
+ i0.ɵɵtemplate(7, TableComponent_div_0_div_7_Template, 3, 2, "div", 25);
82
+ i0.ɵɵelementEnd()();
83
+ } if (rf & 2) {
84
+ const ctx_r0 = i0.ɵɵnextContext();
85
+ i0.ɵɵadvance(3);
86
+ i0.ɵɵproperty("ngIf", ctx_r0.iconclass);
87
+ i0.ɵɵadvance(2);
88
+ i0.ɵɵproperty("innerHTML", ctx_r0.title, i0.ɵɵsanitizeHtml);
89
+ i0.ɵɵadvance();
90
+ i0.ɵɵproperty("innerHTML", ctx_r0.subheading, i0.ɵɵsanitizeHtml);
91
+ i0.ɵɵadvance();
92
+ i0.ɵɵproperty("ngIf", ctx_r0.exportOptions.length || ctx_r0._actions.header.length);
93
+ } }
94
+ function TableComponent_div_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
95
+ i0.ɵɵelementContainer(0, 29);
96
+ } if (rf & 2) {
97
+ const btn_r6 = ctx.$implicit;
98
+ const index_r7 = ctx.index;
99
+ const ctx_r0 = i0.ɵɵnextContext(2);
100
+ const buttonRef_r4 = i0.ɵɵreference(8);
101
+ const anchorRef_r5 = i0.ɵɵreference(10);
102
+ i0.ɵɵproperty("ngTemplateOutlet", btn_r6.widgetType === "button" ? buttonRef_r4 : anchorRef_r5)("ngTemplateOutletContext", i0.ɵɵpureFunction1(3, _c17, btn_r6))("ngTemplateOutletInjector", ctx_r0.createCustomInjector("actions_footer_" + index_r7, i0.ɵɵpureFunction1(5, _c17, btn_r6)));
103
+ } }
104
+ function TableComponent_div_6_Template(rf, ctx) { if (rf & 1) {
105
+ i0.ɵɵelementStart(0, "div", 31);
106
+ i0.ɵɵtemplate(1, TableComponent_div_6_ng_container_1_Template, 1, 7, "ng-container", 27);
107
+ i0.ɵɵelementEnd();
108
+ } if (rf & 2) {
109
+ const ctx_r0 = i0.ɵɵnextContext();
110
+ i0.ɵɵadvance();
111
+ i0.ɵɵproperty("ngForOf", ctx_r0._actions.footer);
112
+ } }
113
+ function TableComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {
114
+ const _r8 = i0.ɵɵgetCurrentView();
115
+ i0.ɵɵelementStart(0, "button", 32);
116
+ i0.ɵɵlistener("click", function TableComponent_ng_template_7_Template_button_click_0_listener($event) { const btn_r9 = i0.ɵɵrestoreView(_r8).btn; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.invokeActionEvent($event, btn_r9.action)); });
117
+ i0.ɵɵelementEnd();
118
+ } if (rf & 2) {
119
+ const btn_r9 = ctx.btn;
120
+ const ctx_r0 = i0.ɵɵnextContext();
121
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(2, _c18, ctx_r0.spacing === "condensed", btn_r9.key === "addNewRow" && (ctx_r0.isGridEditMode || ctx_r0.isLoading)));
122
+ i0.ɵɵattribute("aria-label", btn_r9.displayName);
123
+ } }
124
+ function TableComponent_ng_template_9_Template(rf, ctx) { if (rf & 1) {
125
+ const _r10 = i0.ɵɵgetCurrentView();
126
+ i0.ɵɵelementStart(0, "a", 33);
127
+ i0.ɵɵlistener("click", function TableComponent_ng_template_9_Template_a_click_0_listener($event) { const btn_r11 = i0.ɵɵrestoreView(_r10).btn; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.invokeActionEvent($event, btn_r11.action)); });
128
+ i0.ɵɵelementEnd();
129
+ } if (rf & 2) {
130
+ const btn_r11 = ctx.btn;
131
+ const ctx_r0 = i0.ɵɵnextContext();
132
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(1, _c18, ctx_r0.spacing === "condensed", btn_r11.key === "addNewRow" && (ctx_r0.isGridEditMode || ctx_r0.isLoading)));
133
+ } }
134
+ const DEFAULT_CLS = 'app-grid app-panel panel';
135
+ const WIDGET_CONFIG = { widgetType: 'wm-table', hostClass: DEFAULT_CLS };
136
+ const exportIconMapping = {
137
+ EXCEL: 'fa fa-file-excel-o',
138
+ CSV: 'fa fa-file-text-o'
139
+ };
140
+ const ROW_OPS_FIELD = 'rowOperations';
141
+ const noop = () => { };
142
+ const isInputBodyWrapper = target => {
143
+ const classes = ['.dropdown-menu', '.uib-typeahead-match', '.modal-dialog', '.toast'];
144
+ let isInput = false;
145
+ classes.forEach(cls => {
146
+ if (target.closest(cls).length) {
147
+ isInput = true;
148
+ return false;
149
+ }
150
+ });
151
+ const attrs = ['bsdatepickerdaydecorator'];
152
+ if (!isInput) {
153
+ attrs.forEach(attr => {
154
+ if (target[0].hasAttribute(attr)) {
155
+ isInput = true;
156
+ return false;
157
+ }
158
+ });
159
+ }
160
+ return isInput;
161
+ };
162
+ export class TableComponent extends StylableComponent {
163
+ static { this.initializeProps = registerProps(); }
164
+ set gridData(newValue) {
165
+ this.isDataLoading = false;
166
+ // Fix for [WMS-24012]: hide no datafound msg when variableInflight is true and dataset is empty
167
+ if (this.variableInflight && isEmpty(newValue)) {
168
+ return;
169
+ }
170
+ this.variableInflight = false;
171
+ // Fix for [WMS-24108]: Change the status to ready or nodata found when variableInflight is false(after getting the data)
172
+ if (newValue && (newValue.length) === 0) {
173
+ this.callDataGridMethod('setStatus', 'nodata', this.nodatamessage);
174
+ }
175
+ else {
176
+ this.callDataGridMethod('setStatus', 'ready');
177
+ }
178
+ if (this.gridOptions.isNavTypeScrollOrOndemand()) {
179
+ // update the _gridData field with the next set of items and modify the current page
180
+ [this._gridData, this.currentPage] = this.paginationService.updateFieldsOnPagination(this, newValue);
181
+ // When edit action is performed on previous page, update the _gridData field with the modified row data
182
+ if (this.gridOptions.lastActionPerformed === this.gridOptions.ACTIONS.EDIT) {
183
+ const rowIndex = floor(this.actionRowIndex % this.pagesize);
184
+ this._gridData.splice(this.actionRowIndex, 1, newValue[rowIndex]);
185
+ }
186
+ this.setDataGridOption('isLastPage', !!(this.dataNavigator.isDisableNext));
187
+ // In case of on demand pagination, create the load more button only once and show the button until next page is not disabled
188
+ if (!this.$element.find('.on-demand-datagrid').length && !this.dataNavigator.isDisableNext && this.onDemandLoad) {
189
+ this.gridOptions.addLoadMoreBtn();
190
+ }
191
+ else if ((this._gridData && this._gridData.length) && (this.dataNavigator.isDisableNext || !this.isDataLoading)) {
192
+ // when the next page is disabled or when the data is not loading remove the loading/load more button accordingly
193
+ this.callDataGridMethod('hideLoadingIndicator', this.dataNavigator.isDisableNext, this.infScroll);
194
+ }
195
+ }
196
+ else {
197
+ this._gridData = newValue;
198
+ }
199
+ let startRowIndex = 0;
200
+ let gridOptions;
201
+ this._onChange(this._gridData);
202
+ this._onTouched();
203
+ if (isDefined(newValue)) {
204
+ this.gridOptions.bindScrollEvt();
205
+ /*Setting the serial no's only when show navigation is enabled and data navigator is compiled
206
+ and its current page is set properly*/
207
+ if (this.isNavigationEnabled() && this.dataNavigator.dn.currentPage) {
208
+ startRowIndex = ((this.dataNavigator.dn.currentPage - 1) * (this.dataNavigator.maxResults || 1)) + 1;
209
+ this.setDataGridOption('startRowIndex', startRowIndex);
210
+ }
211
+ /* If colDefs are available, but not already set on the datagrid, then set them.
212
+ * This will happen while switching from markup to design tab. */
213
+ gridOptions = this.callDataGridMethod('getOptions');
214
+ if (!gridOptions) {
215
+ return;
216
+ }
217
+ if (!gridOptions.colDefs.length && this.fieldDefs.length) {
218
+ this.setDataGridOption('colDefs', getClonedObject(this.fieldDefs));
219
+ }
220
+ // If data and colDefs are present, call on before data render event
221
+ if (!this.isdynamictable && !isEmpty(newValue) && gridOptions.colDefs.length) {
222
+ this.invokeEventCallback('beforedatarender', { $data: this._gridData, $columns: this.columns, data: this._gridData, columns: this.columns });
223
+ }
224
+ this.setDataGridOption('data', getClonedObject(this._gridData));
225
+ }
226
+ }
227
+ get gridData() {
228
+ return this._gridData || [];
229
+ }
230
+ get selecteditem() {
231
+ if (this.multiselect) {
232
+ return getClonedObject(this.items);
233
+ }
234
+ if (isEmpty(this.items)) {
235
+ return {};
236
+ }
237
+ return getClonedObject(this.items[0]);
238
+ }
239
+ set selecteditem(val) {
240
+ // Select the rows in the table based on the new selected items passed
241
+ this.items.length = 0;
242
+ this.callDataGridMethod('selectRows', val);
243
+ }
244
+ onKeyPress($event) {
245
+ if ($event.which === 13) {
246
+ this.invokeEventCallback('enterkeypress', { $event, $data: this.gridData });
247
+ }
248
+ }
249
+ constructor(inj, fb, app, dynamicComponentProvider, statePersistence, paginationService, viewport, parentList, binddataset, binddatasource, readonlygrid, ngZone, trustAsPipe, explicitContext) {
250
+ super(inj, WIDGET_CONFIG, explicitContext);
251
+ this.inj = inj;
252
+ this.fb = fb;
253
+ this.app = app;
254
+ this.dynamicComponentProvider = dynamicComponentProvider;
255
+ this.statePersistence = statePersistence;
256
+ this.paginationService = paginationService;
257
+ this.viewport = viewport;
258
+ this.parentList = parentList;
259
+ this.binddataset = binddataset;
260
+ this.binddatasource = binddatasource;
261
+ this.readonlygrid = readonlygrid;
262
+ this.ngZone = ngZone;
263
+ this.trustAsPipe = trustAsPipe;
264
+ this.rowActionsCompiledTl = {};
265
+ this.rowFilterCompliedTl = {};
266
+ this.inlineCompliedTl = {};
267
+ this.inlineNewCompliedTl = {};
268
+ this.customExprCompiledTl = {};
269
+ this.customExprCompiledSummaryTl = {};
270
+ this.rowDefInstances = {};
271
+ this.rowDefMap = {};
272
+ this.rowExpansionActionTl = {};
273
+ this.columns = {};
274
+ this.formfields = {};
275
+ this.enablesort = true;
276
+ this.showviewlessbutton = false;
277
+ this.primaryKey = [];
278
+ this.selectedItems = [];
279
+ this.selectedItemChange = new Subject();
280
+ this.selectedItemChange$ = this.selectedItemChange.asObservable();
281
+ this.actions = [];
282
+ this._actions = {
283
+ 'header': [],
284
+ 'footer': []
285
+ };
286
+ this.exportOptions = [];
287
+ this.headerConfig = [];
288
+ this.items = [];
289
+ this.rowActions = [];
290
+ this.shownavigation = false;
291
+ this.showFirstRow = false;
292
+ this.documentClickBind = noop;
293
+ this.prevFilterExpression = [];
294
+ this.fieldDefs = [];
295
+ this.rowDef = {};
296
+ this.rowInstance = {};
297
+ this.fullFieldDefs = [];
298
+ this.variableInflight = true;
299
+ this.applyProps = new Map();
300
+ this.redraw = debounce(this._redraw, 150);
301
+ this.debouncedHandleLoading = debounce(this.handleLoading, 350);
302
+ // Filter and Sort Methods
303
+ this.rowFilter = {};
304
+ this._searchSortHandler = noop;
305
+ this.searchSortHandler = (...args) => { this._searchSortHandler.apply(this, args); };
306
+ this.onRowFilterChange = noop;
307
+ this.onFilterConditionSelect = noop;
308
+ this.showClearIcon = noop;
309
+ this.clearRowFilter = noop;
310
+ this.adjustContainer = noop;
311
+ this._pageLoad = true;
312
+ this.gridOptions = {
313
+ data: [],
314
+ colDefs: [],
315
+ startRowIndex: 1,
316
+ mode: '',
317
+ sortInfo: {
318
+ field: '',
319
+ direction: ''
320
+ },
321
+ filtermode: '',
322
+ filteronkeypress: false,
323
+ searchLabel: '',
324
+ rowActions: [],
325
+ headerConfig: [],
326
+ rowClass: '',
327
+ editmode: '',
328
+ formPosition: '',
329
+ isMobile: false,
330
+ rowExpansionEnabled: false,
331
+ rowDef: {
332
+ position: '0'
333
+ },
334
+ name: '',
335
+ messages: {
336
+ selectField: 'Select Field'
337
+ },
338
+ securityUtils: {
339
+ pipeTransform: {}
340
+ },
341
+ navigation: '',
342
+ isdynamictable: '',
343
+ deletedRowIndex: -1,
344
+ lastActionPerformed: 'scroll',
345
+ isSearchTrigerred: false,
346
+ isDatasetUpdated: false,
347
+ isDataUpdatedByUser: false,
348
+ showviewlessbutton: false,
349
+ ondemandmessage: '',
350
+ viewlessmessage: '',
351
+ loadingdatamsg: '',
352
+ isNextPageData: undefined,
353
+ ACTIONS: {
354
+ 'DELETE': 'delete',
355
+ 'EDIT': 'edit',
356
+ 'SEARCH_OR_SORT': 'search_or_sort',
357
+ 'DEFAULT': 'scroll',
358
+ 'FILTER_CRITERIA': 'filter',
359
+ 'DATASET_UPDATE': 'dataset_update'
360
+ },
361
+ actionRowIndex: undefined,
362
+ actionRowPage: undefined,
363
+ isLastPage: false,
364
+ // get the current page number
365
+ getCurrentPage: () => {
366
+ return get(this.dataNavigator, 'dn.currentPage') || 1;
367
+ },
368
+ // set the page number
369
+ setCurrentPage: (pageNum) => {
370
+ set(this.dataNavigator, 'dn.currentPage', pageNum || 1);
371
+ },
372
+ getDataSource: () => {
373
+ return this.datasource;
374
+ },
375
+ // get the page limit
376
+ getPageSize: () => {
377
+ return this.pagesize;
378
+ },
379
+ getPageCount: () => {
380
+ return this.dataNavigator.pageCount;
381
+ },
382
+ enableNavigation: () => {
383
+ this.dataNavigator.widget.isDisableNext = false;
384
+ this.dataNavigator.widget.isDisableLast = false;
385
+ this.gridOptions.mode = 'viewless';
386
+ },
387
+ // set the deleted row index
388
+ setDeletedRowIndex: (id) => {
389
+ this.setDataGridOption('deletedRowIndex', id);
390
+ },
391
+ // sets the last action performed like edit, delete etc.
392
+ setLastActionPerformed: (action) => {
393
+ this.setDataGridOption('lastActionPerformed', action || this.gridOptions.lastActionPerformed);
394
+ },
395
+ isNavTypeScrollOrOndemand: () => {
396
+ return this.gridOptions.navigation === 'Scroll' || this.gridOptions.navigation === 'On-Demand';
397
+ },
398
+ setIsSearchTrigerred: (value) => {
399
+ this.setDataGridOption('isSearchTrigerred', value);
400
+ },
401
+ setIsDatasetUpdated: (value) => {
402
+ this.setDataGridOption('isDatasetUpdated', value);
403
+ },
404
+ // Fix for [WMS-23263]: 'isNextPageData' flag is set to true -> if user fetching the next page data by clicking onLoad more or scroll
405
+ setIsNextPageData: (value) => {
406
+ this.setDataGridOption('isNextPageData', value);
407
+ },
408
+ // Fix for [WMS-23263]: 'isDataUpdatedByUser' flag is set to true -> if user changes the dataset from script
409
+ setIsDataUpdatedByUser: (value) => {
410
+ this.setDataGridOption('isDataUpdatedByUser', value);
411
+ },
412
+ onDataRender: () => {
413
+ this.ngZone.run(() => {
414
+ if (this.gridData.length) {
415
+ this.invokeEventCallback('datarender', { $data: this.gridData, data: this.gridData });
416
+ }
417
+ // select rows selected in previous pages. (Not finding intersection of data and selecteditems as it will be heavy)
418
+ if (!this.multiselect) {
419
+ this.items.length = 0;
420
+ }
421
+ this.selectedItems = this.callDataGridMethod('getSelectedRows');
422
+ if (this.selectedItems.length) {
423
+ this.selectedItemChange.next(this.selectedItems);
424
+ }
425
+ // On render, apply the filters set for query service variable
426
+ if (this._isPageSearch && this.filterInfo) {
427
+ this.searchSortHandler(this.filterInfo, undefined, 'search');
428
+ }
429
+ });
430
+ },
431
+ onRowSelect: (row, e) => {
432
+ this.ngZone.run(() => {
433
+ this.selectedItems = this.callDataGridMethod('getSelectedRows');
434
+ if (this.selectedItems.length) {
435
+ this.selectedItemChange.next(this.selectedItems);
436
+ }
437
+ const rowData = this.addRowIndex(row);
438
+ if (this.selectedItems.length && rowData.$index && this.getConfiguredState() !== 'none' && this.dataNavigator && unsupportedStatePersistenceTypes.indexOf(this.navigation) < 0) {
439
+ const obj = { page: this.dataNavigator.dn.currentPage, index: rowData.$index - 1 };
440
+ const widgetState = this.statePersistence.getWidgetState(this);
441
+ if (get(widgetState, 'selectedItem') && this.multiselect) {
442
+ if (!some(widgetState.selectedItem, obj)) {
443
+ widgetState.selectedItem.push(obj);
444
+ }
445
+ this.statePersistence.setWidgetState(this, { 'selectedItem': widgetState.selectedItem });
446
+ }
447
+ else {
448
+ this.statePersistence.setWidgetState(this, { 'selectedItem': [obj] });
449
+ }
450
+ }
451
+ else {
452
+ console.warn('Retain State handling on Widget ' + this.name + ' is not supported for current pagination type.');
453
+ }
454
+ this.invokeEventCallback('rowselect', { $data: rowData, $event: e, row: rowData });
455
+ });
456
+ },
457
+ // assigns the items on capture phase of the click handler.
458
+ assignSelectedItems: (row, e, rowInfo) => {
459
+ this.ngZone.run(() => {
460
+ /*
461
+ * in case of single select, update the items with out changing the reference.
462
+ * for multi select, keep old selected items in tact
463
+ */
464
+ if (this.multiselect) {
465
+ //Fix for [WMS-25110]: Add row to items list only if the row is selected
466
+ if (findIndex(this.items, row) === -1 && (rowInfo?._selected === undefined || rowInfo?._selected == true || (this.gridfirstrowselect && rowInfo?.rowId == 0 && !this.showFirstRow))) {
467
+ this.items.push(row);
468
+ if (rowInfo?.rowId == 0) {
469
+ this.showFirstRow = true;
470
+ }
471
+ }
472
+ }
473
+ else {
474
+ this.items.length = 0;
475
+ this.items.push(row);
476
+ }
477
+ });
478
+ },
479
+ onRowDblClick: (row, e) => {
480
+ const rowData = this.addRowIndex(row);
481
+ this.invokeEventCallback('rowdblclick', { $data: rowData, $event: e, row: rowData });
482
+ },
483
+ onRowDeselect: (row, e) => {
484
+ if (this.multiselect) {
485
+ this.ngZone.run(() => {
486
+ this.items = pullAllWith(this.items, [row], isEqual);
487
+ this.selectedItems = this.callDataGridMethod('getSelectedRows');
488
+ this.invokeEventCallback('rowdeselect', { $data: row, $event: e, row });
489
+ const rowData = this.addRowIndex(row);
490
+ if (this.getConfiguredState() !== 'none' && unsupportedStatePersistenceTypes.indexOf(this.navigation) < 0) {
491
+ const obj = { page: this.dataNavigator.dn.currentPage, index: rowData.$index - 1 };
492
+ const widgetState = this.statePersistence.getWidgetState(this);
493
+ if (get(widgetState, 'selectedItem')) {
494
+ remove(widgetState.selectedItem, function (selectedItem) {
495
+ return isEqual(selectedItem, obj);
496
+ });
497
+ this.statePersistence.removeWidgetState(this, 'selectedItem');
498
+ if (widgetState.selectedItem.length > 0) {
499
+ this.statePersistence.setWidgetState(this, { 'selectedItem': widgetState.selectedItem });
500
+ }
501
+ }
502
+ }
503
+ else {
504
+ console.warn('Retain State handling on Widget ' + this.name + ' is not supported for current pagination type.');
505
+ }
506
+ });
507
+ }
508
+ },
509
+ callOnRowDeselectEvent: (row, e) => {
510
+ this.items = this.selectedItems = this.callDataGridMethod('getSelectedRows');
511
+ this.invokeEventCallback('rowdeselect', { $data: row, $event: e, row });
512
+ },
513
+ callOnRowClickEvent: (row, e) => {
514
+ // WMS-18774: If we invoke navigation action variable on rowclick callback, the navigation is triggering outside angular zone so adding ngZone.run
515
+ this.ngZone.run(() => {
516
+ // Call row click only if click is triggered by user
517
+ if (e && e.hasOwnProperty('originalEvent')) {
518
+ const rowData = this.addRowIndex(row);
519
+ this.invokeEventCallback('rowclick', { $data: rowData, $event: e, row: rowData });
520
+ }
521
+ });
522
+ },
523
+ closePopover: closePopover,
524
+ onColumnSelect: (col, e) => {
525
+ this.selectedColumns = this.callDataGridMethod('getSelectedColumns');
526
+ this.invokeEventCallback('columnselect', { $data: col, $event: e });
527
+ },
528
+ onColumnDeselect: (col, e) => {
529
+ this.selectedColumns = this.callDataGridMethod('getSelectedColumns');
530
+ this.invokeEventCallback('columndeselect', { $data: col, $event: e });
531
+ },
532
+ onHeaderClick: (col, e) => {
533
+ // if onSort function is registered invoke it when the column header is clicked
534
+ this.invokeEventCallback('headerclick', { $event: e, $data: col, column: col });
535
+ },
536
+ onRowDelete: (row, cancelRowDeleteCallback, e, callBack, options) => {
537
+ this.ngZone.run(() => {
538
+ this.deleteRecord(extend({}, options, {
539
+ row,
540
+ 'cancelRowDeleteCallback': cancelRowDeleteCallback,
541
+ 'evt': e,
542
+ 'callBack': callBack
543
+ }));
544
+ });
545
+ },
546
+ onRowInsert: (row, e, callBack, options) => {
547
+ this.insertRecord(extend({}, options, { row, event: e, 'callBack': callBack }));
548
+ },
549
+ beforeRowUpdate: (row, eventName) => {
550
+ if (this._liveTableParent) {
551
+ this._liveTableParent.updateRow(row, eventName);
552
+ }
553
+ this.prevData = getClonedObject(row);
554
+ },
555
+ afterRowUpdate: (row, e, callBack, options) => {
556
+ this.updateRecord(extend({}, options, { row, 'prevData': this.prevData, 'event': e, 'callBack': callBack }));
557
+ },
558
+ onBeforeRowUpdate: (row, e, options) => {
559
+ return this.invokeEventCallback('beforerowupdate', { $event: e, $data: row, row, options: options });
560
+ },
561
+ onBeforeRowInsert: (row, e, options) => {
562
+ return this.invokeEventCallback('beforerowinsert', { $event: e, $data: row, row, options: options });
563
+ },
564
+ onBeforeRowDelete: (row, e, options) => {
565
+ const rowData = this.addRowIndex(row);
566
+ return this.invokeEventCallback('beforerowdelete', { $event: e, row: rowData, options: options });
567
+ },
568
+ onFormRender: ($row, e, operation, alwaysNewRow) => {
569
+ const widget = alwaysNewRow ? 'inlineInstanceNew' : 'inlineInstance';
570
+ setTimeout(() => {
571
+ this.formWidgets = {};
572
+ this.fieldDefs.forEach(col => {
573
+ if (col[widget]) {
574
+ this.formWidgets[col.field] = col[widget];
575
+ // Adding formwidgets to the context for inlineinstance widget when fieldDefs were ready
576
+ if (col[widget].context) {
577
+ col[widget].context.formWidgets = this.formWidgets;
578
+ }
579
+ this.setDisabledOnField(operation, col, widget);
580
+ }
581
+ });
582
+ this.invokeEventCallback('formrender', { $event: e, formWidgets: this.formWidgets, $operation: operation });
583
+ }, 250);
584
+ },
585
+ onBeforeFormRender: (row, e, operation) => {
586
+ return this.invokeEventCallback('beforeformrender', { $event: e, row, $operation: operation });
587
+ },
588
+ registerRowNgClassWatcher: (rowData, index) => {
589
+ if (!this.rowngclass) {
590
+ return;
591
+ }
592
+ const row = this.getClonedRowObject(rowData);
593
+ const watchName = `${this.widgetId}_rowNgClass_${index}`;
594
+ $unwatch(watchName);
595
+ //[Todo-CSP]: generate watcher expr in page if rowngclass attr is present for table
596
+ this.registerDestroyListener($watch(this.rowngclass, this.viewParent, { row }, (nv, ov) => {
597
+ this.callDataGridMethod('applyRowNgClass', getConditionalClasses(nv, ov), index);
598
+ }, watchName));
599
+ },
600
+ registerColNgClassWatcher: (rowData, colDef, rowIndex, colIndex) => {
601
+ if (!colDef['col-ng-class']) {
602
+ return;
603
+ }
604
+ const row = this.getClonedRowObject(rowData);
605
+ const watchName = `${this.widgetId}_colNgClass_${rowIndex}_${colIndex}`;
606
+ $unwatch(watchName);
607
+ //[Todo-CSP]: generate watcher expr in page if col-ng-class attr is present for table
608
+ this.registerDestroyListener($watch(colDef['col-ng-class'], this.viewParent, { row }, (nv, ov) => {
609
+ this.callDataGridMethod('applyColNgClass', getConditionalClasses(nv, ov), rowIndex, colIndex);
610
+ }, watchName));
611
+ },
612
+ clearCustomExpression: () => {
613
+ this.customExprViewRef.clear();
614
+ this.customExprCompiledTl = {};
615
+ this.customExprCompiledSummaryTl = {};
616
+ },
617
+ clearRowDetailExpression: () => {
618
+ this.rowDetailViewRef.clear();
619
+ this.rowDefMap = {};
620
+ this.rowDefInstances = {};
621
+ },
622
+ generateCustomExpressions: (rowData, index, summaryRow) => {
623
+ const row = this.getClonedRowObject(rowData);
624
+ const compileTemplate = (tmpl) => {
625
+ if (!tmpl) {
626
+ return;
627
+ }
628
+ const colDef = {};
629
+ const context = {
630
+ row,
631
+ colDef
632
+ };
633
+ this.addEventsToContext(context);
634
+ const customExprView = this.customExprViewRef.createEmbeddedView(tmpl, context);
635
+ const rootNode = customExprView.rootNodes[0];
636
+ const fieldName = rootNode.getAttribute('data-col-identifier');
637
+ extend(colDef, this.columns[fieldName]);
638
+ if (!summaryRow) {
639
+ this.customExprCompiledTl[fieldName + index] = rootNode;
640
+ }
641
+ else {
642
+ this.customExprCompiledSummaryTl[fieldName + index] = rootNode;
643
+ }
644
+ };
645
+ if (this.isdynamictable) {
646
+ this.fieldDefs.forEach(col => {
647
+ compileTemplate(col.customExprTmpl);
648
+ });
649
+ return;
650
+ }
651
+ // For all the columns inside the table, generate the custom expression
652
+ this.customExprTmpl.forEach(compileTemplate.bind(this));
653
+ },
654
+ generateRowExpansionCell: (rowData, index) => {
655
+ const row = this.getClonedRowObject(rowData);
656
+ // For all the columns inside the table, generate the inline widget
657
+ this.rowExpansionActionTmpl.forEach((tmpl) => {
658
+ this.rowExpansionActionTl[index] = this.rowExpansionActionViewRef.createEmbeddedView(tmpl, { row }).rootNodes;
659
+ });
660
+ },
661
+ getRowExpansionAction: (index) => {
662
+ return this.rowExpansionActionTl[index];
663
+ },
664
+ generateRowDetailView: ($event, rowData, rowId, $target, $overlay, callback) => {
665
+ const row = this.getClonedRowObject(rowData);
666
+ const rowDef = getClonedObject(this.rowDef);
667
+ if (this.rowInstance.invokeEventCallback('beforerowexpand', { $event, $data: rowDef, row }) === false) {
668
+ return;
669
+ }
670
+ if (!rowDef.content) {
671
+ return;
672
+ }
673
+ // Expand the row detail
674
+ callback();
675
+ // Row is already rendered. Return here
676
+ if (this.rowDefMap[rowId] && this.rowDefMap[rowId].content === rowDef.content) {
677
+ this.rowInstance.invokeEventCallback('rowexpand', { $event, row, $data: this.rowDefInstances[rowId] });
678
+ return;
679
+ }
680
+ this.rowDefMap[rowId] = rowDef;
681
+ $target.empty();
682
+ $target.hide();
683
+ $overlay.show();
684
+ const context = {
685
+ row,
686
+ rowDef,
687
+ containerLoad: (widget) => {
688
+ setTimeout(() => {
689
+ $overlay.hide();
690
+ $target.show();
691
+ this.rowDefInstances[rowId] = widget;
692
+ this.rowInstance.invokeEventCallback('rowexpand', { $event, row, $data: widget });
693
+ }, 500);
694
+ }
695
+ };
696
+ const rootNode = this.rowDetailViewRef.createEmbeddedView(this.rowExpansionTmpl, context).rootNodes[0];
697
+ $target[0].appendChild(rootNode);
698
+ $appDigest();
699
+ },
700
+ onBeforeRowCollapse: ($event, row, rowId) => {
701
+ return this.rowInstance.invokeEventCallback('beforerowcollapse', { $event, row, $data: this.rowDefInstances[rowId] });
702
+ },
703
+ onRowCollapse: ($event, row) => {
704
+ this.rowInstance.invokeEventCallback('rowcollapse', { $event, row });
705
+ },
706
+ getCustomExpression: (fieldName, index, summaryRow) => {
707
+ let customExpression;
708
+ if (!summaryRow) {
709
+ customExpression = this.customExprCompiledTl[fieldName + index];
710
+ }
711
+ else {
712
+ customExpression = this.customExprCompiledSummaryTl[fieldName + index];
713
+ }
714
+ return customExpression || '';
715
+ },
716
+ clearRowActions: () => {
717
+ this.rowActionsViewRef.clear();
718
+ this.rowActionsCompiledTl = {};
719
+ this.rowExpansionActionViewRef.clear();
720
+ this.rowExpansionActionTl = {};
721
+ },
722
+ generateRowActions: (rowData, index) => {
723
+ const row = this.getClonedRowObject(rowData);
724
+ this.rowActionsCompiledTl[index] = [];
725
+ // For all the columns inside the table, generate the inline widget
726
+ this.rowActionTmpl.forEach((tmpl) => {
727
+ this.rowActionsCompiledTl[index].push(...this.rowActionsViewRef.createEmbeddedView(tmpl, { row }).rootNodes);
728
+ });
729
+ },
730
+ getRowAction: (index) => {
731
+ return this.rowActionsCompiledTl[index];
732
+ },
733
+ generateInlineEditRow: (rowData, alwaysNewRow) => {
734
+ const row = this.getClonedRowObject(rowData);
735
+ if (alwaysNewRow) {
736
+ // Clear the view container ref
737
+ this.inlineEditNewViewRef.clear();
738
+ this.inlineNewCompliedTl = {};
739
+ // For all the columns inside the table, generate the inline widget
740
+ this.inlineWidgetNewTmpl.forEach(tmpl => {
741
+ let fieldName;
742
+ const context = {
743
+ row,
744
+ getControl: () => {
745
+ return this.ngform.controls[fieldName + '_new'] || {};
746
+ },
747
+ getValidationMessage: () => {
748
+ return this.columns[fieldName] && this.columns[fieldName].validationmessage;
749
+ },
750
+ getPendingSpinnerStatusNew: () => {
751
+ return this.columns[fieldName] && this.columns[fieldName].showPendingSpinnerNew;
752
+ }
753
+ };
754
+ const rootNode = this.inlineEditNewViewRef.createEmbeddedView(tmpl, context).rootNodes[0];
755
+ fieldName = rootNode.getAttribute('data-col-identifier');
756
+ this.inlineNewCompliedTl[fieldName] = rootNode;
757
+ });
758
+ this.clearForm(true);
759
+ return;
760
+ }
761
+ // Clear the view container ref
762
+ this.inlineEditViewRef.clear();
763
+ this.inlineCompliedTl = {};
764
+ this.clearForm();
765
+ // For all the columns inside the table, generate the inline widget
766
+ this.inlineWidgetTmpl.forEach(tmpl => {
767
+ let fieldName;
768
+ const context = {
769
+ row,
770
+ getControl: () => {
771
+ return this.ngform.controls[fieldName] || {};
772
+ },
773
+ getValidationMessage: () => {
774
+ return this.columns[fieldName] && this.columns[fieldName].validationmessage;
775
+ },
776
+ getPendingSpinnerStatus: () => {
777
+ return this.columns[fieldName] && this.columns[fieldName].showPendingSpinner;
778
+ }
779
+ };
780
+ const rootNode = this.inlineEditViewRef.createEmbeddedView(tmpl, context).rootNodes[0];
781
+ fieldName = rootNode.getAttribute('data-col-identifier');
782
+ this.inlineCompliedTl[fieldName] = rootNode;
783
+ });
784
+ },
785
+ getInlineEditWidget: (fieldName, value, alwaysNewRow) => {
786
+ if (alwaysNewRow) {
787
+ this.gridOptions.setFieldValue(fieldName + '_new', value);
788
+ return this.inlineNewCompliedTl[fieldName];
789
+ }
790
+ this.gridOptions.setFieldValue(fieldName, value);
791
+ return this.inlineCompliedTl[fieldName];
792
+ },
793
+ setFieldValue: (fieldName, value) => {
794
+ const control = this.ngform.controls && this.ngform.controls[fieldName];
795
+ if (control) {
796
+ control.setValue(value);
797
+ }
798
+ },
799
+ getFieldValue: fieldName => {
800
+ const control = this.ngform.controls && this.ngform.controls[fieldName];
801
+ return control && control.value;
802
+ },
803
+ // function to add load more button to table
804
+ addLoadMoreBtn: () => {
805
+ this.callDataGridMethod('addLoadMoreBtn', this.ondemandmessage, this.loadingdatamsg, ($event) => {
806
+ this.gridOptions.setIsNextPageData(true);
807
+ this.gridOptions.setIsDataUpdatedByUser(false);
808
+ if (this.gridOptions.mode === 'viewless') {
809
+ this.dataNavigator.navigatePage('first', $event, true);
810
+ this.gridOptions.mode = '';
811
+ }
812
+ else {
813
+ this.dataNavigator.navigatePage('next', $event);
814
+ this.isDataLoading = true;
815
+ }
816
+ }, this.infScroll);
817
+ },
818
+ // function to bind scroll event
819
+ bindScrollEvt: () => {
820
+ if (this._gridData && this._gridData.length && this.infScroll) {
821
+ // smoothscroll events will be binded.
822
+ // Added timeout as the table html is rendered at runtime
823
+ setTimeout(() => {
824
+ this.paginationService.bindScrollEvt(this, 'tbody', DEBOUNCE_TIMES.PAGINATION_DEBOUNCE_TIME);
825
+ }, 0);
826
+ }
827
+ },
828
+ generateFilterRow: () => {
829
+ // Clear the view container ref
830
+ this.filterViewRef.clear();
831
+ this.rowFilterCompliedTl = {};
832
+ // For all the columns inside the table, generate the compiled filter template
833
+ this.filterTmpl.forEach((tmpl) => {
834
+ const rootNode = this.filterViewRef.createEmbeddedView(tmpl, {
835
+ changeFn: this.onRowFilterChange.bind(this),
836
+ isDisabled: (fieldName) => {
837
+ return this.emptyMatchModes.indexOf(this.rowFilter[fieldName] && this.rowFilter[fieldName].matchMode) > -1;
838
+ }
839
+ }).rootNodes[0];
840
+ this.rowFilterCompliedTl[rootNode.getAttribute('data-col-identifier')] = rootNode;
841
+ });
842
+ },
843
+ getFilterWidget: (fieldName) => {
844
+ // Move the generated filter template to the filter row
845
+ return this.rowFilterCompliedTl[fieldName];
846
+ },
847
+ setGridEditMode: (val) => {
848
+ this.ngZone.run(() => {
849
+ this.isGridEditMode = val;
850
+ $appDigest();
851
+ });
852
+ },
853
+ setGridState: (val) => {
854
+ this.isLoading = val === 'loading';
855
+ },
856
+ /*
857
+ set actionRowIndex and actionRowPage values
858
+ actionRowIndex will have the row index in the dataset on which edit/delete operation is being performed
859
+ actionRowPage will have page number in which the action row index is present
860
+ */
861
+ setActionRowIndex: (val) => {
862
+ if (this.gridOptions.isNavTypeScrollOrOndemand()) {
863
+ this.actionRowIndex = parseInt(val);
864
+ this.setDataGridOption('actionRowIndex', this.actionRowIndex);
865
+ if (!isNaN(this.actionRowIndex)) {
866
+ this.actionRowPage = Math.floor(this.actionRowIndex / this.pagesize) + 1;
867
+ this.setDataGridOption('actionRowPage', this.actionRowPage || this.gridOptions.actionRowPage);
868
+ }
869
+ }
870
+ },
871
+ clearActionRowIndex: () => {
872
+ if (!this.isRowDeleted && (this.infScroll || this.onDemandLoad)) {
873
+ this.clearActionRowVars();
874
+ }
875
+ },
876
+ noChangesDetected: () => {
877
+ this.toggleMessage(true, 'info', 'No Changes Detected', '');
878
+ },
879
+ // Function to redraw the widgets on resize of columns
880
+ redrawWidgets: () => {
881
+ this.fieldDefs.forEach(col => {
882
+ triggerFn(col.inlineInstance && col.inlineInstance.redraw);
883
+ triggerFn(col.inlineInstanceNew && col.inlineInstanceNew.redraw);
884
+ triggerFn(col.filterInstance && col.filterInstance.redraw);
885
+ });
886
+ },
887
+ searchHandler: this.searchSortHandler.bind(this),
888
+ sortHandler: this.searchSortHandler.bind(this),
889
+ timeoutCall: (fn, delay) => {
890
+ setTimeout(fn, delay);
891
+ },
892
+ runInNgZone: fn => {
893
+ this.ngZone.run(fn);
894
+ },
895
+ safeApply: () => {
896
+ $appDigest();
897
+ },
898
+ setTouched: (name) => {
899
+ const ctrl = this.ngform.controls[name];
900
+ if (ctrl) {
901
+ ctrl.markAsTouched();
902
+ }
903
+ },
904
+ clearForm: this.clearForm.bind(this),
905
+ callLoadInlineWidgetData: () => {
906
+ this.fullFieldDefs.forEach(col => {
907
+ if (isUndefined(col.isDataSetBound)) {
908
+ triggerFn(col.loadInlineWidgetData && col.loadInlineWidgetData.bind(col));
909
+ }
910
+ });
911
+ },
912
+ // Function to apply validators to Inline form controls
913
+ applyValidations: (col, alwaysNewRow) => {
914
+ if (alwaysNewRow) {
915
+ triggerFn(col.applyNewRowValidations && col.applyNewRowValidations.bind(col));
916
+ }
917
+ else {
918
+ triggerFn(col.applyValidations && col.applyValidations.bind(col));
919
+ }
920
+ },
921
+ // Function to remove validators and set form state to untouched for inline form control
922
+ removeValidations: (alwaysNewRow) => {
923
+ this.fullFieldDefs.forEach(col => {
924
+ if (!col.readonly && col.binding !== 'rowOperations') {
925
+ if (alwaysNewRow) {
926
+ triggerFn(col.removeNewRowValidations && col.removeNewRowValidations.bind(col));
927
+ }
928
+ else {
929
+ triggerFn(col.removeValidations && col.removeValidations.bind(col));
930
+ }
931
+ }
932
+ });
933
+ }
934
+ };
935
+ this._selectedItemsExist = false;
936
+ this._onChange = () => { };
937
+ this._onTouched = () => { };
938
+ styler(this.nativeElement, this);
939
+ this.ngform = fb.group({});
940
+ this.addEventsToContext(this.context);
941
+ const listenersToRemove = [
942
+ // Updates pagination, filter, sort etc options for service and crud variables
943
+ this.app.subscribe('check-state-persistence-options', options => {
944
+ let dataSourceName = get(this.datasource, 'name');
945
+ // in Prefabs, this.datasource is not resolved at the time of variable invocation, so additional check is required.
946
+ if (!dataSourceName) {
947
+ dataSourceName = extractDataSourceName(this.binddatasource);
948
+ }
949
+ if (get(options, 'variable.name') !== dataSourceName) {
950
+ return;
951
+ }
952
+ if (this._pageLoad && this.getConfiguredState() !== 'none') {
953
+ this._pageLoad = false;
954
+ const widgetState = this.statePersistence.getWidgetState(this);
955
+ if (widgetState) {
956
+ options = this.handleStateParams(widgetState, options);
957
+ }
958
+ else {
959
+ this.setDataGridOption('selectFirstRow', this.gridfirstrowselect);
960
+ }
961
+ }
962
+ }),
963
+ // Show loading status based on the variable life cycle
964
+ this.app.subscribe('toggle-variable-state', options => {
965
+ if (this.datasource && this.datasource.execute(DataSource.Operation.IS_API_AWARE) && isDataSourceEqual(options.variable, this.datasource)) {
966
+ if (this._pageLoad && this.getConfiguredState() !== 'none') {
967
+ this._pageLoad = false;
968
+ const widgetState = this.statePersistence.getWidgetState(this);
969
+ if (widgetState) {
970
+ options = this.handleStateParams(widgetState, options);
971
+ }
972
+ else {
973
+ this.setDataGridOption('selectFirstRow', this.gridfirstrowselect);
974
+ }
975
+ }
976
+ isDefined(this.variableInflight) ? this.debouncedHandleLoading(options) : this.handleLoading(options);
977
+ }
978
+ }),
979
+ this.app.subscribe('setup-cud-listener', param => {
980
+ if (this.name !== param) {
981
+ return;
982
+ }
983
+ this._isDependent = true;
984
+ this.selectedItemChange$
985
+ .pipe(debounceTime(250))
986
+ .subscribe(this.triggerWMEvent.bind(this));
987
+ })
988
+ ];
989
+ listenersToRemove.forEach(l => this.registerDestroyListener(l));
990
+ this.deleteoktext = this.appLocale.LABEL_OK;
991
+ this.deletecanceltext = this.appLocale.LABEL_CANCEL;
992
+ }
993
+ ngAfterContentInit() {
994
+ super.ngAfterContentInit();
995
+ this.headerConfig = this.headerConfig.filter(this.filterEmptyValues.bind(this));
996
+ remove(this.fieldDefs, f => f === undefined);
997
+ const runModeInitialProperties = {
998
+ showrowindex: 'showRowIndex',
999
+ multiselect: 'multiselect',
1000
+ radioselect: 'showRadioColumn',
1001
+ filternullrecords: 'filterNullRecords',
1002
+ enablesort: 'enableSort',
1003
+ showheader: 'showHeader',
1004
+ enablecolumnselection: 'enableColumnSelection',
1005
+ shownewrow: 'showNewRow',
1006
+ gridfirstrowselect: 'selectFirstRow'
1007
+ };
1008
+ if (this._liveTableParent) {
1009
+ this.isPartOfLiveGrid = true;
1010
+ }
1011
+ if (this.readonlygrid || !this.editmode) {
1012
+ if (this.readonlygrid === 'true') {
1013
+ this.editmode = '';
1014
+ }
1015
+ else {
1016
+ if (this.isPartOfLiveGrid) {
1017
+ this.editmode = this.isPartOfLiveGrid.formlayout === 'inline' ? EDIT_MODE.FORM : EDIT_MODE.DIALOG;
1018
+ }
1019
+ else {
1020
+ this.editmode = this.readonlygrid ? EDIT_MODE.INLINE : '';
1021
+ }
1022
+ }
1023
+ }
1024
+ this.gridOptions.colDefs = this.fullFieldDefs;
1025
+ this.gridOptions.rowActions = this.rowActions;
1026
+ this.gridOptions.headerConfig = this.headerConfig;
1027
+ this.gridOptions.rowClass = this.rowclass;
1028
+ this.gridOptions.editmode = this.editmode;
1029
+ this.gridOptions.formPosition = this.formposition;
1030
+ this.gridOptions.filtermode = this.filtermode;
1031
+ this.gridOptions.filteronkeypress = this.filteronkeypress;
1032
+ this.gridOptions.searchLabel = this.searchlabel;
1033
+ this.gridOptions.isMobile = isMobile();
1034
+ this.gridOptions.name = this.name;
1035
+ this.gridOptions.securityUtils.pipeTransform = this.trustAsPipe;
1036
+ this.gridOptions.navigation = this.navigation;
1037
+ this.gridOptions.isdynamictable = this.isdynamictable;
1038
+ this.gridOptions.showviewlessbutton = this.showviewlessbutton;
1039
+ this.gridOptions.ondemandmessage = this.ondemandmessage;
1040
+ this.gridOptions.viewlessmessage = this.viewlessmessage;
1041
+ this.gridOptions.loadingdatamsg = this.loadingdatamsg;
1042
+ // When loadondemand property is enabled(deferload="true") and show is true, only the column titles of the datatable are rendered, the data(body of the datatable) is not at all rendered.
1043
+ // Because the griddata is setting before the datatable dom is rendered but we are sending empty data to the datatable.
1044
+ if (!isEmpty(this.gridData)) {
1045
+ this.gridOptions.data = getClonedObject(this.gridData);
1046
+ }
1047
+ this.gridOptions.messages = {
1048
+ 'selectField': this.appLocale.MESSAGE_SELECT_FIELD
1049
+ };
1050
+ this.datagridElement = $(this._tableElement.nativeElement);
1051
+ this.gridElement = this.$element;
1052
+ this.$element.css({ 'position': 'relative' });
1053
+ forEach(runModeInitialProperties, (value, key) => {
1054
+ if (isDefined(this[key])) {
1055
+ this.gridOptions[value] = (this[key] === 'true' || this[key] === true);
1056
+ }
1057
+ });
1058
+ if (this.statehandler !== 'none') {
1059
+ this.gridOptions['selectFirstRow'] = false;
1060
+ }
1061
+ this.renderOperationColumns();
1062
+ this.gridOptions.colDefs = this.fieldDefs;
1063
+ this.datagridElement.datatable(this.gridOptions);
1064
+ this.callDataGridMethod('setStatus', 'loading', this.loadingdatamsg);
1065
+ // if(this.gridOptions.data.length || this.variableInflight) {
1066
+ // this.callDataGridMethod('setStatus', 'loading', this.loadingdatamsg);
1067
+ // } else {
1068
+ // this.callDataGridMethod('setStatus', 'nodata', this.nodatamessage);
1069
+ // }
1070
+ this.applyProps.forEach(args => this.callDataGridMethod(...args));
1071
+ if (this.editmode === EDIT_MODE.QUICK_EDIT) {
1072
+ this.documentClickBind = this._documentClickBind.bind(this);
1073
+ document.addEventListener('click', this.documentClickBind);
1074
+ }
1075
+ }
1076
+ getConfiguredState() {
1077
+ const mode = this.statePersistence.computeMode(this.statehandler);
1078
+ return mode && mode.toLowerCase();
1079
+ }
1080
+ handleStateParams(widgetState, options) {
1081
+ if (get(widgetState, 'selectedItem')) {
1082
+ this._selectedItemsExist = true;
1083
+ }
1084
+ options.options = options.options || {};
1085
+ if (get(widgetState, 'pagination')) {
1086
+ options.options.page = widgetState.pagination;
1087
+ if (get(widgetState, 'sort')) {
1088
+ this.sortStateHandler(widgetState);
1089
+ options.options.orderBy = get(widgetState, 'sort.field') + ' ' + get(widgetState, 'sort.direction');
1090
+ }
1091
+ if (get(widgetState, 'search')) {
1092
+ setTimeout(() => {
1093
+ this.searchStateHandler(widgetState);
1094
+ }, 500);
1095
+ options.options.filterFields = this.getFilterFields(widgetState.search);
1096
+ }
1097
+ }
1098
+ else {
1099
+ options.options.page = 1;
1100
+ if (get(widgetState, 'search')) {
1101
+ setTimeout(() => {
1102
+ this.searchStateHandler(widgetState);
1103
+ }, 500);
1104
+ options.options.filterFields = this.getFilterFields(widgetState.search);
1105
+ }
1106
+ if (get(widgetState, 'sort')) {
1107
+ this.sortStateHandler(widgetState);
1108
+ options.options.orderBy = get(widgetState, 'sort.field') + ' ' + get(widgetState, 'sort.direction');
1109
+ }
1110
+ }
1111
+ return options;
1112
+ }
1113
+ triggerWMEvent(newVal) {
1114
+ if (this.editmode === 'dialog') {
1115
+ return;
1116
+ }
1117
+ $invokeWatchers(true);
1118
+ this.app.notify('wm-event', { eventName: 'selectedItemChange', widgetName: this.name, row: newVal, table: this });
1119
+ }
1120
+ sortStateHandler(widgetState) {
1121
+ const $gridElement = this.datagridElement;
1122
+ const $sortIcon = $gridElement.find('th[data-col-field="' + get(widgetState, 'sort.field') + '"] .sort-icon');
1123
+ if (get(widgetState, 'sort.direction') === 'asc' && $sortIcon.length) {
1124
+ $sortIcon.addClass('asc wi wi-long-arrow-up');
1125
+ }
1126
+ else if (get(widgetState, 'sort.direction') === 'desc' && $sortIcon.length) {
1127
+ $sortIcon.addClass('desc wi wi-long-arrow-down');
1128
+ }
1129
+ }
1130
+ searchStateHandler(widgetState) {
1131
+ if (isArray(widgetState.search)) {
1132
+ forEach(widgetState.search, (filterObj) => {
1133
+ if (this.rowFilter[filterObj.field]) {
1134
+ this.rowFilter[filterObj.field].value = filterObj.value;
1135
+ this.rowFilter[filterObj.field].matchMode = filterObj.matchMode;
1136
+ this.rowFilter[filterObj.field].type = filterObj.type;
1137
+ if ($(this.rowFilterCompliedTl[filterObj.field]).length) {
1138
+ const val = filterObj.type === 'integer' ? parseInt(filterObj.value) : filterObj.value;
1139
+ $(this.rowFilterCompliedTl[filterObj.field]).find('input').val(filterObj.value);
1140
+ }
1141
+ }
1142
+ });
1143
+ }
1144
+ else {
1145
+ const $gridElement = this.datagridElement;
1146
+ $gridElement.find('[data-element="dgSearchText"]').val(widgetState.search.value);
1147
+ $gridElement.find('[data-element="dgFilterValue"]').val(widgetState.search.field);
1148
+ }
1149
+ }
1150
+ // removes empty values in headerConfig array.
1151
+ filterEmptyValues(item) {
1152
+ if (item.columns) {
1153
+ item.columns = item.columns.filter(this.filterEmptyValues.bind(this));
1154
+ }
1155
+ return item !== undefined;
1156
+ }
1157
+ // Compares the prevFilterCriteria Rules with the new rules
1158
+ compareFilterExpressions(prevFilters, newFilters) {
1159
+ return !!((prevFilters.length === newFilters.length) && (isEqual(prevFilters, newFilters)));
1160
+ }
1161
+ // Set the table lastActionPerformed to Filter Criteria and maintain the prevFilterExpression
1162
+ setLastActionToFilterCriteria() {
1163
+ this.prevFilterExpression = get(this.datasource, 'filterExpressions.rules') ? getClonedObject(this.datasource.filterExpressions.rules) : getClonedObject([].concat(this.datasource.dataBinding));
1164
+ this.gridOptions.setLastActionPerformed(this.gridOptions.ACTIONS.FILTER_CRITERIA);
1165
+ this.gridOptions.setIsSearchTrigerred(true);
1166
+ }
1167
+ // Set the table lastActionPerformed to Dataset update and set isDatasetUpdated to true
1168
+ // Fix for [WMS-22323]-this method is called when dataset is being updated
1169
+ setLastActionToDatasetUpdate() {
1170
+ this.gridOptions.setLastActionPerformed(this.gridOptions.ACTIONS.DATASET_UPDATE);
1171
+ // Fix for [WMS-23263]: reset currentPage to 1 as dataset is being changed
1172
+ this.gridOptions.setCurrentPage(1);
1173
+ this.gridOptions.setIsDatasetUpdated(true);
1174
+ }
1175
+ // Update the lastActionPerformed to Filter_Criteria, when there is change in the Variable filter criteria rules
1176
+ checkIfVarFiltersApplied() {
1177
+ if (!isEmpty(get(this.datasource, 'filterExpressions.rules')) || !isEmpty(get(this.datasource, 'dataBinding'))) {
1178
+ const currentFilterExpr = get(this.datasource, 'filterExpressions.rules') ? this.datasource.filterExpressions.rules : [].concat(this.datasource.dataBinding);
1179
+ const isEqual = this.compareFilterExpressions(this.prevFilterExpression, currentFilterExpr);
1180
+ if (!isEqual) {
1181
+ this.setLastActionToFilterCriteria();
1182
+ }
1183
+ }
1184
+ }
1185
+ watchVariableDataSet(newVal) {
1186
+ let result;
1187
+ // Check for Variable filters if applied
1188
+ if (this.gridOptions.isNavTypeScrollOrOndemand()) {
1189
+ this.checkIfVarFiltersApplied();
1190
+ }
1191
+ // State handling for static variables
1192
+ if (get(this.datasource, 'category') === 'wm.Variable' && this._pageLoad && this.getConfiguredState() !== 'none') {
1193
+ const widgetState = this.statePersistence.getWidgetState(this);
1194
+ this._pageLoad = false;
1195
+ if (get(widgetState, 'selectedItem')) {
1196
+ this._selectedItemsExist = true;
1197
+ }
1198
+ else {
1199
+ this.setDataGridOption('selectFirstRow', this.gridfirstrowselect);
1200
+ }
1201
+ if (get(widgetState, 'search')) {
1202
+ this.searchStateHandler(widgetState);
1203
+ this.searchSortHandler(widgetState.search, undefined, 'search', true);
1204
+ }
1205
+ if (get(widgetState, 'sort')) {
1206
+ this.searchSortHandler(widgetState.sort, undefined, 'sort', true);
1207
+ this.sortStateHandler(widgetState);
1208
+ }
1209
+ if (get(widgetState, 'pagination')) {
1210
+ this.dataNavigator.pageChanged({ page: widgetState.pagination }, true);
1211
+ }
1212
+ }
1213
+ // After the setting the watch on navigator, dataset is triggered with undefined. In this case, return here.
1214
+ if (this.dataNavigatorWatched && isUndefined(newVal) && this.__fullData) {
1215
+ return;
1216
+ }
1217
+ // If variable is in loading state, show loading icon
1218
+ if (this.variableInflight && !this.infScroll) {
1219
+ this.callDataGridMethod('setStatus', 'loading', this.loadingdatamsg);
1220
+ }
1221
+ result = getValidJSON(newVal);
1222
+ // Converting newval to object if it is an Object that comes as a string "{"data" : 1}"
1223
+ if (result) {
1224
+ newVal = result;
1225
+ }
1226
+ const sortExp = this.getSortExpr();
1227
+ const sortExpArr = sortExp.split(' ');
1228
+ if (sortExp && sortExpArr.length) {
1229
+ this.sortInfo = {
1230
+ direction: sortExpArr[1],
1231
+ field: sortExpArr[0]
1232
+ };
1233
+ }
1234
+ /*Return if data is invalid.*/
1235
+ if (!this.isDataValid()) {
1236
+ return;
1237
+ }
1238
+ // If value is empty or in studio mode, dont enable the navigation
1239
+ if (newVal) {
1240
+ if (this.shownavigation && !this.dataNavigatorWatched) {
1241
+ this.enablePageNavigation();
1242
+ return;
1243
+ }
1244
+ }
1245
+ else {
1246
+ this.resetPageNavigation();
1247
+ // If the dataset is undefined or empty or table is bound to static variable then set variableInflight to false inorder to update the status
1248
+ if (newVal === '' || newVal === undefined || get(this.datasource, 'category') === 'wm.Variable') {
1249
+ this.variableInflight = false;
1250
+ }
1251
+ /*for run mode, disabling the loader and showing no data found message if dataset is not valid*/
1252
+ if (!this.variableInflight) {
1253
+ this.callDataGridMethod('setStatus', 'nodata', this.nodatamessage);
1254
+ }
1255
+ this.setDataGridOption('selectFirstRow', this.gridfirstrowselect);
1256
+ }
1257
+ if (!this.isNavigationEnabled() && newVal) {
1258
+ this.checkFiltersApplied(this.getSortExpr());
1259
+ }
1260
+ // @ts-ignore
1261
+ if (!isObject(newVal) || newVal === '' || (newVal && newVal.dataValue === '')) {
1262
+ if (!this.variableInflight) {
1263
+ // If variable has finished loading and resultSet is empty, ender empty data
1264
+ this.setGridData([]);
1265
+ }
1266
+ return;
1267
+ }
1268
+ if (newVal) {
1269
+ this.populateGridData(newVal);
1270
+ }
1271
+ }
1272
+ ngOnDestroy() {
1273
+ document.removeEventListener('click', this.documentClickBind);
1274
+ if (this.navigatorResultWatch) {
1275
+ this.navigatorResultWatch.unsubscribe();
1276
+ }
1277
+ if (this.navigatorMaxResultWatch) {
1278
+ this.navigatorMaxResultWatch.unsubscribe();
1279
+ }
1280
+ super.ngOnDestroy();
1281
+ }
1282
+ addRowIndex(row) {
1283
+ const rowData = getClonedObject(row);
1284
+ const rowIndex = indexOf(this.gridOptions.data, row);
1285
+ if (rowIndex < 0) {
1286
+ return row;
1287
+ }
1288
+ rowData.$index = rowIndex + 1;
1289
+ rowData.$isFirst = rowData.$index === 1;
1290
+ rowData.$isLast = this.gridData.length === rowData.$index;
1291
+ return rowData;
1292
+ }
1293
+ addEventsToContext(context) {
1294
+ context.addNewRow = () => this.addNewRow();
1295
+ context.deleteRow = () => this.deleteRow();
1296
+ context.editRow = () => this.editRow();
1297
+ }
1298
+ execute(operation, options) {
1299
+ if ([DataSource.Operation.IS_API_AWARE, DataSource.Operation.IS_PAGEABLE, DataSource.Operation.SUPPORTS_SERVER_FILTER].includes(operation)) {
1300
+ return false;
1301
+ }
1302
+ return this.datasource ? this.datasource.execute(operation, options) : {};
1303
+ }
1304
+ isNavigationEnabled() {
1305
+ return this.shownavigation && this.dataNavigator && this.dataNavigatorWatched;
1306
+ }
1307
+ getClonedRowObject(rowData) {
1308
+ const row = getClonedObject(rowData);
1309
+ row.getProperty = field => {
1310
+ return get(row, field);
1311
+ };
1312
+ row.$isFirst = row.$index === 1;
1313
+ row.$isLast = this.gridData.length === row.$index;
1314
+ delete row.$$index;
1315
+ delete row.$$pk;
1316
+ return row;
1317
+ }
1318
+ handleLoading(data) {
1319
+ this.variableInflight = data.active;
1320
+ // based on the active state and response toggling the 'loading data...' and 'no data found' messages.
1321
+ if (data.active) {
1322
+ this.callDataGridMethod('setStatus', 'loading', this.loadingdatamsg);
1323
+ }
1324
+ else {
1325
+ // If grid is in edit mode or grid has data, dont show the no data message
1326
+ if (!this.isGridEditMode && isEmpty(this.dataset)) {
1327
+ this.callDataGridMethod('setStatus', 'nodata', this.nodatamessage);
1328
+ }
1329
+ else {
1330
+ this.callDataGridMethod('setStatus', 'ready');
1331
+ }
1332
+ }
1333
+ }
1334
+ setDisabledOnField(operation, colDef, widgetType) {
1335
+ if (operation !== 'new' && colDef['primary-key'] && colDef.generator === 'assigned' && !colDef['related-entity-name'] && !colDef.period) {
1336
+ colDef[widgetType].disabled = true;
1337
+ }
1338
+ }
1339
+ resetFormControl(ctrl) {
1340
+ ctrl.markAsUntouched();
1341
+ ctrl.markAsPristine();
1342
+ }
1343
+ clearForm(newRow) {
1344
+ const ctrls = this.ngform.controls;
1345
+ keys(this.ngform.controls).forEach(key => {
1346
+ // If new row, clear the controls in the new row. Else, clear the controls in edit row
1347
+ if (!key.endsWith('_filter') && ((key.endsWith('_new') && newRow) || (!key.endsWith('_new') && !newRow))) {
1348
+ ctrls[key].setValue('');
1349
+ this.resetFormControl(ctrls[key]);
1350
+ }
1351
+ });
1352
+ }
1353
+ showFieldBasedOnScreenType(field) {
1354
+ let showField;
1355
+ if (isMobile() && this.viewport.isMobileType) {
1356
+ showField = field.mobileDisplay;
1357
+ }
1358
+ else if (this.viewport.isTabletType) {
1359
+ showField = field.tabletDisplay;
1360
+ }
1361
+ else {
1362
+ showField = field.pcDisplay;
1363
+ }
1364
+ return showField;
1365
+ }
1366
+ /* Check whether it is non-empty row. */
1367
+ isEmptyRecord(record) {
1368
+ const properties = Object.keys(record);
1369
+ let data, isDisplayed;
1370
+ return properties.every((prop, index) => {
1371
+ data = record[prop];
1372
+ /* If fieldDefs are missing, show all columns in data. */
1373
+ isDisplayed = (this.fieldDefs.length && isDefined(this.fieldDefs[index]) && this.showFieldBasedOnScreenType(this.fieldDefs[index])) || true;
1374
+ /*Validating only the displayed fields*/
1375
+ if (isDisplayed) {
1376
+ return (data === null || data === undefined || data === '');
1377
+ }
1378
+ return true;
1379
+ });
1380
+ }
1381
+ /* Function to remove the empty data. */
1382
+ removeEmptyRecords(serviceData) {
1383
+ const allRecords = serviceData;
1384
+ let filteredData = [];
1385
+ if (allRecords && allRecords.length) {
1386
+ /*Comparing and pushing the non-empty data columns*/
1387
+ filteredData = allRecords.filter(record => {
1388
+ return record && !this.isEmptyRecord(record);
1389
+ });
1390
+ }
1391
+ return filteredData;
1392
+ }
1393
+ setGridData(serverData) {
1394
+ const data = this.filternullrecords ? this.removeEmptyRecords(serverData) : serverData;
1395
+ // fix for [WMS-24012] set variableinflight flag to false for static variables
1396
+ // If the table is bound to some widget and not bound to any variable (ex: Table1.selectedItem) then set variableInflight to false
1397
+ if (get(this.datasource, 'category') === 'wm.Variable' || get(this.datasource, 'category') === undefined) {
1398
+ this.variableInflight = false;
1399
+ }
1400
+ if (!this.variableInflight) {
1401
+ if (data && (data.length) === 0) {
1402
+ this.callDataGridMethod('setStatus', 'nodata', this.nodatamessage);
1403
+ }
1404
+ else {
1405
+ this.callDataGridMethod('setStatus', 'ready');
1406
+ }
1407
+ }
1408
+ this.gridData = data;
1409
+ }
1410
+ setDataGridOption(optionName, newVal, forceSet = false) {
1411
+ if (!this.datagridElement || !this.datagridElement.datatable || !this.datagridElement.datatable('instance')) {
1412
+ return;
1413
+ }
1414
+ const option = {};
1415
+ if (isDefined && (!isEqual(newVal, this.gridOptions[optionName]) || forceSet)) {
1416
+ option[optionName] = newVal;
1417
+ this.datagridElement.datatable('option', option);
1418
+ this.gridOptions[optionName] = newVal;
1419
+ }
1420
+ }
1421
+ callDataGridMethod(...args) {
1422
+ if (!this.datagridElement || !this.datagridElement.datatable('instance')) {
1423
+ this.applyProps.set(args[1], args);
1424
+ return; // If datagrid is not initiliazed or destroyed, return here
1425
+ }
1426
+ return this.datagridElement.datatable.apply(this.datagridElement, args);
1427
+ }
1428
+ renderOperationColumns() {
1429
+ let rowActionCol, insertPosition;
1430
+ const rowOperationsColumn = getRowOperationsColumn(), config = {
1431
+ 'name': rowOperationsColumn.field,
1432
+ 'field': rowOperationsColumn.field,
1433
+ 'isPredefined': true
1434
+ };
1435
+ // Return if no fieldDefs are present
1436
+ if (!this.fieldDefs.length) {
1437
+ return;
1438
+ }
1439
+ rowActionCol = find(this.fullFieldDefs, { 'field': ROW_OPS_FIELD, type: 'custom' }); // Check if column is fetched from markup
1440
+ remove(this.fieldDefs, { type: 'custom', field: ROW_OPS_FIELD }); // Removing operations column
1441
+ remove(this.headerConfig, { field: rowOperationsColumn.field });
1442
+ /*Add the column for row operations only if at-least one operation has been enabled.*/
1443
+ if (this.rowActions.length) {
1444
+ if (rowActionCol) { // If column is present in markup, push the column or push the default column
1445
+ insertPosition = rowActionCol.rowactionsposition ? toNumber(rowActionCol.rowactionsposition) : this.fieldDefs.length;
1446
+ this.fieldDefs.splice(insertPosition, 0, rowActionCol);
1447
+ if (insertPosition === 0) {
1448
+ this.headerConfig.unshift(config);
1449
+ }
1450
+ else {
1451
+ this.headerConfig.push(config);
1452
+ }
1453
+ }
1454
+ else {
1455
+ this.fieldDefs.push(rowOperationsColumn);
1456
+ this.headerConfig.push(config);
1457
+ }
1458
+ }
1459
+ this.setDataGridOption('headerConfig', this.headerConfig);
1460
+ }
1461
+ enablePageNavigation() {
1462
+ if (this.dataset && this.binddataset && this.dataNavigator) {
1463
+ /*Check for sanity*/
1464
+ this.dataNavigatorWatched = true;
1465
+ if (this.navigatorResultWatch) {
1466
+ this.navigatorResultWatch.unsubscribe();
1467
+ }
1468
+ /*Register a watch on the "result" property of the "dataNavigator" so that the paginated data is displayed in the live-list.*/
1469
+ this.navigatorResultWatch = this.dataNavigator.resultEmitter.subscribe((newVal) => {
1470
+ /* Check for sanity. */
1471
+ if (isDefined(newVal)) {
1472
+ // Watch will not be triggered if dataset and new value are equal. So trigger the property change handler manually
1473
+ // This happens in case, if dataset is directly updated.
1474
+ if (isEqual(this.dataset, newVal)) {
1475
+ this.watchVariableDataSet(newVal);
1476
+ }
1477
+ else {
1478
+ if (isArray(newVal)) {
1479
+ this.widget.dataset = [].concat(newVal);
1480
+ }
1481
+ else if (isObject(newVal)) {
1482
+ this.widget.dataset = extend({}, newVal);
1483
+ }
1484
+ else {
1485
+ this.widget.dataset = newVal;
1486
+ }
1487
+ }
1488
+ }
1489
+ else {
1490
+ this.widget.dataset = undefined;
1491
+ }
1492
+ }, true);
1493
+ /*De-register the watch if it is exists */
1494
+ if (this.navigatorMaxResultWatch) {
1495
+ this.navigatorMaxResultWatch.unsubscribe();
1496
+ }
1497
+ /*Register a watch on the "maxResults" property of the "dataNavigator" so that the "pageSize" is displayed in the live-list.*/
1498
+ this.navigatorMaxResultWatch = this.dataNavigator.maxResultsEmitter.subscribe((newVal) => {
1499
+ this.pagesize = newVal;
1500
+ });
1501
+ // If dataset is a pageable object, data is present inside the content property
1502
+ this.__fullData = this.dataset;
1503
+ this.dataNavigator.widget.maxResults = this.pagesize || 5;
1504
+ this.dataNavigator.options = {
1505
+ maxResults: this.pagesize || 5
1506
+ };
1507
+ this.removePropertyBinding('dataset');
1508
+ this.dataNavigator.setBindDataSet(this.binddataset, this.viewParent, this.datasource, this.dataset, this.binddatasource, undefined, this.statehandler);
1509
+ }
1510
+ }
1511
+ resetPageNavigation() {
1512
+ /*Check for sanity*/
1513
+ if (this.dataNavigator) {
1514
+ this.dataNavigator.resetPageNavigation();
1515
+ }
1516
+ }
1517
+ isDataValid() {
1518
+ let error;
1519
+ const dataset = this.dataset || {};
1520
+ /*In case "data" contains "error" & "errorMessage", then display the error message in the grid.*/
1521
+ if (dataset.error) {
1522
+ error = dataset.error;
1523
+ }
1524
+ if (dataset.data && dataset.data.error) {
1525
+ if (dataset.data.errorMessage) {
1526
+ error = dataset.data.errorMessage;
1527
+ }
1528
+ }
1529
+ if (error) {
1530
+ this.setGridData([]);
1531
+ this.callDataGridMethod('setStatus', 'error', error);
1532
+ return false;
1533
+ }
1534
+ return true;
1535
+ }
1536
+ // Function to populate the grid with data.
1537
+ populateGridData(serviceData) {
1538
+ let data;
1539
+ serviceData = transformData(serviceData, this.name);
1540
+ // Apply filter and sort, if data is refreshed through Refresh data method
1541
+ if (!this.isNavigationEnabled() && this._isClientSearch) {
1542
+ data = getClonedObject(serviceData);
1543
+ data = this.getSearchResult(data, this.filterInfo);
1544
+ data = this.getSortResult(data, this.sortInfo);
1545
+ this.serverData = data;
1546
+ }
1547
+ else {
1548
+ this.serverData = serviceData;
1549
+ }
1550
+ // If fielddefs are not present, generate fielddefs from data
1551
+ // Removing fielddefs check because When loadondemand property is enabled(deferload="true"), the dataset propertychangehanlder is triggered first before the dom is getting rendered.
1552
+ // So at that time fielddefs length is zero, due to this the columns are created dynamically.
1553
+ if (this.isdynamictable) {
1554
+ this.createGridColumns(this.serverData);
1555
+ }
1556
+ else {
1557
+ this.setGridData(this.serverData);
1558
+ }
1559
+ if (this.getConfiguredState() !== 'none' && this._selectedItemsExist && serviceData.length) {
1560
+ const widgetState = this.statePersistence.getWidgetState(this);
1561
+ let currentPageItems;
1562
+ if (get(widgetState, 'selectedItem')) {
1563
+ currentPageItems = widgetState.selectedItem.filter(val => {
1564
+ return val.page === this.dataNavigator.dn.currentPage;
1565
+ });
1566
+ this._selectedItemsExist = false;
1567
+ // if an item is already selected, don't trigger onSelect event for it again
1568
+ if (currentPageItems.length && this.selecteditem.length !== widgetState.selectedItem.length) {
1569
+ // don't reassign this.selecteditem if selected items already exist.
1570
+ if (isArray(this.selecteditem)) {
1571
+ currentPageItems.forEach((item) => {
1572
+ this.selectItem(item.index, undefined);
1573
+ });
1574
+ }
1575
+ else {
1576
+ this.selecteditem = currentPageItems.map(function (val) { return val.index; });
1577
+ }
1578
+ }
1579
+ }
1580
+ }
1581
+ }
1582
+ // Function to generate and compile the form fields from the metadata
1583
+ async generateDynamicColumns(columns) {
1584
+ this.fieldDefs = []; // empty the form fields
1585
+ // empty the filter field template refs.
1586
+ this.filterTmpl._results = [];
1587
+ if (isEmpty(columns)) {
1588
+ return;
1589
+ }
1590
+ let tmpl = '';
1591
+ columns.forEach(col => {
1592
+ let attrsTmpl = '';
1593
+ let customTmpl = '';
1594
+ forEach(col, (val, key) => {
1595
+ if (!isUndefined(val) && val !== '') {
1596
+ // If custom expression is present, keep it inside table column. Else, keep as attribute
1597
+ if (key === 'customExpression') {
1598
+ customTmpl = val;
1599
+ }
1600
+ else {
1601
+ attrsTmpl += ` ${key}="${val}"`;
1602
+ }
1603
+ }
1604
+ });
1605
+ tmpl += `<wm-table-column ${attrsTmpl} tableName="${this.name}${this.$attrs.get('table_reference')}">${customTmpl}</wm-table-column>`;
1606
+ });
1607
+ this.dynamicTableRef.clear();
1608
+ if (!this._dynamicContext) {
1609
+ this._dynamicContext = Object.create(this.viewParent);
1610
+ this._dynamicContext[this.getAttr('wmTable')] = this;
1611
+ }
1612
+ this.noOfColumns = columns.length;
1613
+ const componentFactoryRef = await this.dynamicComponentProvider.getComponentFactoryRef('app-table-dynamic-' + this.widgetId, tmpl, {
1614
+ noCache: true,
1615
+ transpile: true
1616
+ });
1617
+ const component = this.dynamicTableRef.createComponent(componentFactoryRef, 0, this.inj);
1618
+ extendProto(component.instance, this._dynamicContext);
1619
+ this.$element.find('.dynamic-table-container')[0].appendChild(component.location.nativeElement);
1620
+ }
1621
+ prepareColDefs(data) {
1622
+ let defaultFieldDefs;
1623
+ let properties;
1624
+ let columnIndex = 0;
1625
+ let headerIndex = 0;
1626
+ this.fieldDefs = [];
1627
+ this.headerConfig = [];
1628
+ this.columns = {};
1629
+ /* if properties map is existed then fetch the column configuration for all nested levels using util function */
1630
+ properties = data;
1631
+ /*call utility function to prepare fieldDefs for grid against given data (A MAX OF 10 COLUMNS ONLY)*/
1632
+ defaultFieldDefs = prepareFieldDefs(properties);
1633
+ /*append additional properties*/
1634
+ forEach(defaultFieldDefs, columnDef => {
1635
+ columnDef.binding = columnDef.field;
1636
+ columnDef.caption = columnDef.displayName;
1637
+ columnDef.pcDisplay = true;
1638
+ columnDef.mobileDisplay = true;
1639
+ columnDef.tabletDisplay = true;
1640
+ columnDef.searchable = true;
1641
+ columnDef.showinfilter = true;
1642
+ columnDef.type = 'string';
1643
+ // Fix for [WMS-19668] and [WMS-19669]- Adding index and headerIndex for Dynamic DB columns.
1644
+ // Note: we don't have column groups for Dynamic DB
1645
+ columnDef.index = columnIndex;
1646
+ columnDef.headerIndex = headerIndex;
1647
+ columnIndex++;
1648
+ headerIndex++;
1649
+ });
1650
+ defaultFieldDefs.forEach(col => {
1651
+ this.columns[col.field] = col;
1652
+ });
1653
+ this.invokeEventCallback('beforedatarender', { $data: data, $columns: this.columns, data: data, columns: this.columns });
1654
+ defaultFieldDefs = [];
1655
+ // Apply the changes made by the user
1656
+ forEach(this.columns, val => {
1657
+ defaultFieldDefs.push(val);
1658
+ });
1659
+ this.generateDynamicColumns(defaultFieldDefs);
1660
+ }
1661
+ createGridColumns(data) {
1662
+ /* this call back function receives the data from the variable */
1663
+ /* check whether data is valid or not */
1664
+ const dataValid = data && !data.error;
1665
+ /*if the data is type json object, make it an array of the object*/
1666
+ if (dataValid && !isArray(data)) {
1667
+ data = [data];
1668
+ }
1669
+ /* if the data is empty, show nodatamessage */
1670
+ if (isEmpty(data)) {
1671
+ this.setGridData(data);
1672
+ return;
1673
+ }
1674
+ if (!dataValid) {
1675
+ return;
1676
+ }
1677
+ /* if new columns to be rendered, prepare default fieldDefs for the data provided*/
1678
+ this.prepareColDefs(data);
1679
+ this.serverData = data;
1680
+ this.setGridData(this.serverData);
1681
+ }
1682
+ getSortExpr() {
1683
+ let sortExp;
1684
+ let pagingOptions;
1685
+ if (this.datasource && this.datasource.execute(DataSource.Operation.IS_PAGEABLE)) {
1686
+ pagingOptions = this.datasource.execute(DataSource.Operation.GET_PAGING_OPTIONS);
1687
+ sortExp = isEmpty(pagingOptions) ? '' : getOrderByExpr(pagingOptions.sort);
1688
+ }
1689
+ return sortExp || '';
1690
+ }
1691
+ onPropertyChange(key, nv, ov) {
1692
+ let enableNewRow;
1693
+ switch (key) {
1694
+ case 'datasource':
1695
+ // Fix for [WMS-23653] when startUpdate is false (request on page load property is unchecked),
1696
+ // then set status msg as "No data found"
1697
+ if (nv.startUpdate === false) {
1698
+ this.variableInflight = false;
1699
+ this.callDataGridMethod('setStatus', 'nodata', this.nodatamessage);
1700
+ }
1701
+ this.watchVariableDataSet(this.dataset);
1702
+ this.onDataSourceChange();
1703
+ break;
1704
+ case 'dataset':
1705
+ if (this.gridOptions.isNavTypeScrollOrOndemand() && this.gridOptions.getCurrentPage() === 1) {
1706
+ this.gridOptions.setIsNextPageData(false);
1707
+ }
1708
+ if (this.binddatasource && !this.datasource) {
1709
+ return;
1710
+ }
1711
+ // if table is inside list then table dataset will be set as "item.XXX" and there is no datasource.
1712
+ // So extracting datasource from the datset bound expression.
1713
+ if (this.parentList && !this.datasource && startsWith(this.binddataset, 'item')) {
1714
+ this.datasource = getDatasourceFromExpr(this.widget.$attrs.get('datasetboundexpr'), this);
1715
+ }
1716
+ if (this.gridOptions.isNavTypeScrollOrOndemand()) {
1717
+ if (this.gridOptions.isNextPageData) {
1718
+ // when fetching next page data
1719
+ this.gridOptions.setIsDataUpdatedByUser(false);
1720
+ }
1721
+ else {
1722
+ // when dataset is updated from script
1723
+ this.gridOptions.setIsDataUpdatedByUser(true);
1724
+ this.setLastActionToDatasetUpdate();
1725
+ this.gridOptions.setIsNextPageData(false);
1726
+ }
1727
+ }
1728
+ // for Static Variables with Retain State enabled, prevent Table from rendering more than once
1729
+ // Fix for [WMS-25284]: Render table that is inside list widget and bound to static Variable
1730
+ if (!(get(this.datasource, 'category') === 'wm.Variable' && this._pageLoad && this.getConfiguredState() !== 'none') || (this.parentList && startsWith(this.binddataset, 'item'))) {
1731
+ this.watchVariableDataSet(nv);
1732
+ }
1733
+ break;
1734
+ case 'filtermode':
1735
+ this.setDataGridOption('filtermode', nv);
1736
+ break;
1737
+ case 'searchlabel':
1738
+ this.setDataGridOption('searchLabel', nv);
1739
+ break;
1740
+ case 'navigation':
1741
+ if (nv === 'Advanced') { // Support for older projects where navigation type was advanced instead of clasic
1742
+ this.navigation = 'Classic';
1743
+ return;
1744
+ }
1745
+ if (nv !== 'None') {
1746
+ this.shownavigation = true;
1747
+ }
1748
+ this.setDataGridOption('navigation', this.navigation);
1749
+ this.onDemandLoad = nv === NAVIGATION_TYPE.ONDEMAND ? true : false;
1750
+ this.infScroll = nv === NAVIGATION_TYPE.SCROLL ? true : false;
1751
+ this.navControls = nv;
1752
+ break;
1753
+ case 'gridfirstrowselect':
1754
+ this.setDataGridOption('selectFirstRow', nv);
1755
+ break;
1756
+ case 'gridclass':
1757
+ this.callDataGridMethod('option', 'cssClassNames.grid', nv);
1758
+ break;
1759
+ case 'nodatamessage':
1760
+ this.callDataGridMethod('option', 'dataStates.nodata', nv);
1761
+ break;
1762
+ case 'loadingdatamsg':
1763
+ this.callDataGridMethod('option', 'dataStates.loading', nv);
1764
+ break;
1765
+ case 'loadingicon':
1766
+ this.callDataGridMethod('option', 'loadingicon', nv);
1767
+ break;
1768
+ case 'spacing':
1769
+ this.callDataGridMethod('option', 'spacing', nv);
1770
+ if (nv === 'condensed') {
1771
+ this.navigationSize = 'small';
1772
+ }
1773
+ else {
1774
+ this.navigationSize = '';
1775
+ }
1776
+ break;
1777
+ case 'exportformat':
1778
+ this.exportOptions = [];
1779
+ if (nv) {
1780
+ // Populate options for export drop down menu
1781
+ forEach(split(nv, ','), type => {
1782
+ this.exportOptions.push({
1783
+ label: type,
1784
+ icon: exportIconMapping[type]
1785
+ });
1786
+ });
1787
+ }
1788
+ break;
1789
+ case 'shownewrow':
1790
+ // Enable new row if shownew is true or addNewRow buton is present
1791
+ enableNewRow = nv || some(this.actions, act => includes(act.action, 'addNewRow()'));
1792
+ this.callDataGridMethod('option', 'actionsEnabled.new', enableNewRow);
1793
+ break;
1794
+ case 'pagesize':
1795
+ this.dataNavigator.options = {
1796
+ maxResults: nv
1797
+ };
1798
+ this.dataNavigator.widget.maxResults = nv;
1799
+ this.dataNavigator.maxResults = nv;
1800
+ break;
1801
+ case 'ondemandmessage':
1802
+ if (nv) {
1803
+ this.$element.find('.on-demand-datagrid > a').text(nv);
1804
+ }
1805
+ this.gridOptions.ondemandmessage = nv;
1806
+ break;
1807
+ case 'viewlessmessage':
1808
+ this.gridOptions.viewlessmessage = nv;
1809
+ break;
1810
+ case 'show':
1811
+ if (nv) {
1812
+ this.invokeEventCallback('show');
1813
+ }
1814
+ else {
1815
+ this.invokeEventCallback('hide');
1816
+ }
1817
+ default:
1818
+ super.onPropertyChange(key, nv, ov);
1819
+ }
1820
+ }
1821
+ onDataSourceChange() {
1822
+ this.fieldDefs.forEach(col => {
1823
+ triggerFn(col.onDataSourceChange && col.onDataSourceChange.bind(col));
1824
+ });
1825
+ }
1826
+ clearActionRowVars() {
1827
+ this.actionRowIndex = undefined;
1828
+ this.actionRowPage = undefined;
1829
+ this.setDataGridOption('actionRowIndex', undefined);
1830
+ this.setDataGridOption('actionRowPage', undefined);
1831
+ }
1832
+ onStyleChange(key, nv, ov) {
1833
+ switch (key) {
1834
+ case 'width':
1835
+ this.callDataGridMethod('setGridDimensions', 'width', nv);
1836
+ break;
1837
+ case 'height':
1838
+ this.callDataGridMethod('setGridDimensions', 'height', nv);
1839
+ break;
1840
+ }
1841
+ super.onStyleChange(key, nv, ov);
1842
+ }
1843
+ populateActions() {
1844
+ this._actions.header = [];
1845
+ this._actions.footer = [];
1846
+ forEach(this.actions, (action) => {
1847
+ if (includes(action.position, 'header')) {
1848
+ this._actions.header.push(action);
1849
+ }
1850
+ if (includes(action.position, 'footer')) {
1851
+ this._actions.footer.push(action);
1852
+ }
1853
+ });
1854
+ }
1855
+ // this method will render the filter row.
1856
+ renderDynamicFilterColumn(filteTemRef) {
1857
+ // For dynamic table manually pushing the filtertemplateRef as templateRef will not be available prior.
1858
+ if (this.isdynamictable) {
1859
+ this.filterTmpl._results.push(filteTemRef);
1860
+ }
1861
+ }
1862
+ registerColumns(tableColumn, colIndex) {
1863
+ if (isMobile() && this.viewport.isMobileType) {
1864
+ if (!tableColumn.mobileDisplay) {
1865
+ return;
1866
+ }
1867
+ }
1868
+ else if (this.viewport.isTabletType) {
1869
+ if (!tableColumn.tabletDisplay) {
1870
+ return;
1871
+ }
1872
+ }
1873
+ else {
1874
+ if (!tableColumn.pcDisplay) {
1875
+ return;
1876
+ }
1877
+ }
1878
+ if (tableColumn['primary-key']) {
1879
+ this.primaryKey.push(tableColumn.field);
1880
+ }
1881
+ this.fieldDefs[colIndex] = tableColumn;
1882
+ const colCount = this.fieldDefs.length;
1883
+ this.fullFieldDefs.push(tableColumn);
1884
+ this.rowFilter[tableColumn.field] = {
1885
+ value: undefined
1886
+ };
1887
+ this.fieldDefs.forEach(col => {
1888
+ this.columns[col.field] = col;
1889
+ });
1890
+ // If dynamic datatable and last column, pass the columns to jquery datatable
1891
+ if (this.isdynamictable && colCount === this.noOfColumns) {
1892
+ this.renderOperationColumns();
1893
+ this.setDataGridOption('colDefs', this.fieldDefs);
1894
+ }
1895
+ }
1896
+ registerFormField(name, formField) {
1897
+ this.formfields[name] = formField;
1898
+ }
1899
+ registerActions(tableAction) {
1900
+ this.actions.push(tableAction);
1901
+ this.populateActions();
1902
+ }
1903
+ registerRow(tableRow, rowInstance) {
1904
+ this.rowDef = tableRow;
1905
+ this.rowInstance = rowInstance;
1906
+ this.callDataGridMethod('option', 'cssClassNames.rowExpandIcon', this.rowDef.expandicon);
1907
+ this.callDataGridMethod('option', 'cssClassNames.rowCollapseIcon', this.rowDef.collapseicon);
1908
+ this.gridOptions.rowExpansionEnabled = true;
1909
+ this.gridOptions.rowDef = this.rowDef;
1910
+ }
1911
+ registerRowActions(tableRowAction) {
1912
+ this.rowActions.push(tableRowAction);
1913
+ }
1914
+ selectItem(item, data) {
1915
+ /* server is not updating immediately, so set the server data to success callback data */
1916
+ if (data) {
1917
+ this.serverData = data;
1918
+ }
1919
+ if (isObject(item)) {
1920
+ item = omitBy(item, (value) => {
1921
+ return isArray(value) && isEmpty(value);
1922
+ });
1923
+ }
1924
+ this.callDataGridMethod('selectRow', item, true);
1925
+ }
1926
+ /* deselect the given item*/
1927
+ deselectItem(item) {
1928
+ this.callDataGridMethod('deselectRow', item);
1929
+ }
1930
+ onDataNavigatorDataSetChange(nv) {
1931
+ let data;
1932
+ this.__fullData = nv;
1933
+ this.checkFiltersApplied(this.getSortExpr());
1934
+ if (this._isClientSearch) {
1935
+ data = getClonedObject(this.__fullData);
1936
+ if (isObject(data) && !isArray(data)) {
1937
+ data = [data];
1938
+ }
1939
+ data = this.getSearchResult(data, this.filterInfo);
1940
+ data = this.getSortResult(data, this.sortInfo);
1941
+ return data;
1942
+ }
1943
+ return nv;
1944
+ }
1945
+ toggleMessage(show, type, msg, header) {
1946
+ if (show && msg) {
1947
+ this.app.notifyApp(msg, type, header);
1948
+ }
1949
+ }
1950
+ export($item) {
1951
+ let filterFields;
1952
+ const sortOptions = isEmpty(this.sortInfo) ? '' : this.sortInfo.field + ' ' + this.sortInfo.direction;
1953
+ const columns = {};
1954
+ let isValid;
1955
+ let requestData;
1956
+ this.fieldDefs.forEach(fieldDef => {
1957
+ // Do not add the row operation actions column to the exported file.
1958
+ if (fieldDef.field === ROW_OPS_FIELD || !fieldDef.show) {
1959
+ return;
1960
+ }
1961
+ const option = {
1962
+ 'header': fieldDef.displayName
1963
+ };
1964
+ // If column has exportexpression, then send form the expression as required by backend.
1965
+ // otherwise send the field name.
1966
+ if (fieldDef.exportexpression) {
1967
+ option.expression = fieldDef.exportexpression;
1968
+ }
1969
+ else {
1970
+ option.field = fieldDef.field;
1971
+ }
1972
+ columns[fieldDef.field] = option;
1973
+ });
1974
+ filterFields = this.getFilterFields(this.filterInfo);
1975
+ requestData = {
1976
+ matchMode: 'anywhereignorecase',
1977
+ filterFields: filterFields,
1978
+ orderBy: sortOptions,
1979
+ exportType: $item.label,
1980
+ logicalOp: 'AND',
1981
+ exportSize: this.exportdatasize,
1982
+ columns: columns
1983
+ };
1984
+ isValid = this.invokeEventCallback('beforeexport', { $data: requestData });
1985
+ if (isValid === false) {
1986
+ return;
1987
+ }
1988
+ requestData.fields = values(requestData.columns);
1989
+ this.datasource.execute(DataSource.Operation.DOWNLOAD, { data: requestData });
1990
+ }
1991
+ expandRow(rowId) {
1992
+ this.callDataGridMethod('expandRow', rowId);
1993
+ }
1994
+ collapseRow(rowId) {
1995
+ this.callDataGridMethod('collapseRow', rowId);
1996
+ }
1997
+ _documentClickBind(event) {
1998
+ const $target = event.target;
1999
+ // If click triggered from same grid or a dialog, do not save the row
2000
+ if (this.$element[0].contains($target) || event.target.doctype || isInputBodyWrapper($($target))) {
2001
+ return;
2002
+ }
2003
+ this.callDataGridMethod('saveRow');
2004
+ }
2005
+ _redraw(forceRender) {
2006
+ if (forceRender) {
2007
+ this.datagridElement.datatable(this.gridOptions);
2008
+ }
2009
+ else {
2010
+ setTimeout(() => {
2011
+ this.callDataGridMethod('setColGroupWidths');
2012
+ this.callDataGridMethod('addOrRemoveScroll');
2013
+ });
2014
+ }
2015
+ }
2016
+ invokeActionEvent($event, expression) {
2017
+ const fn = $parseEvent(expression);
2018
+ fn(this.viewParent, Object.assign(this.context, { $event }));
2019
+ }
2020
+ // change and blur events are added from the template
2021
+ handleEvent(node, eventName, callback, locals) {
2022
+ if (eventName !== 'select') {
2023
+ super.handleEvent(this.nativeElement, eventName, callback, locals);
2024
+ }
2025
+ }
2026
+ triggerUploadEvent($event, eventName, fieldName, row) {
2027
+ const params = { $event, row };
2028
+ if (!this.columns[fieldName]) {
2029
+ return;
2030
+ }
2031
+ if (eventName === 'change') {
2032
+ params.newVal = $event.target.files;
2033
+ params.oldVal = this.columns[fieldName]._oldUploadVal;
2034
+ this.columns[fieldName]._oldUploadVal = params.newVal;
2035
+ }
2036
+ this.columns[fieldName].invokeEventCallback(eventName, params);
2037
+ }
2038
+ registerFormWidget() { }
2039
+ // Form control accessor methods. This will be used for table inside form
2040
+ writeValue() { }
2041
+ registerOnChange(fn) {
2042
+ this._onChange = fn;
2043
+ }
2044
+ registerOnTouched(fn) {
2045
+ this._onTouched = fn;
2046
+ }
2047
+ ngOnDetach() {
2048
+ super.ngOnDetach();
2049
+ if (get(this.datasource, 'category') === 'wm.Variable' && this.getConfiguredState() !== 'none') {
2050
+ this._pageLoad = false;
2051
+ }
2052
+ else {
2053
+ this._pageLoad = true;
2054
+ }
2055
+ }
2056
+ static { this.ɵfac = function TableComponent_Factory(t) { return new (t || TableComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i2.App), i0.ɵɵdirectiveInject(i2.DynamicComponentRefProvider), i0.ɵɵdirectiveInject(i2.StatePersistence), i0.ɵɵdirectiveInject(i2.PaginationService), i0.ɵɵdirectiveInject(i2.Viewport), i0.ɵɵdirectiveInject(i3.ListComponent, 8), i0.ɵɵinjectAttribute('dataset.bind'), i0.ɵɵinjectAttribute('datasource.bind'), i0.ɵɵinjectAttribute('readonlygrid'), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i4.TrustAsPipe), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
2057
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TableComponent, selectors: [["", "wmTable", ""]], contentQueries: function TableComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
2058
+ i0.ɵɵcontentQuery(dirIndex, _c0, 5);
2059
+ i0.ɵɵcontentQuery(dirIndex, _c1, 5);
2060
+ i0.ɵɵcontentQuery(dirIndex, _c2, 5);
2061
+ i0.ɵɵcontentQuery(dirIndex, _c3, 5);
2062
+ i0.ɵɵcontentQuery(dirIndex, _c4, 5);
2063
+ i0.ɵɵcontentQuery(dirIndex, _c5, 5);
2064
+ i0.ɵɵcontentQuery(dirIndex, _c6, 5);
2065
+ } if (rf & 2) {
2066
+ let _t;
2067
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowExpansionTmpl = _t.first);
2068
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowActionTmpl = _t);
2069
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterTmpl = _t);
2070
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inlineWidgetTmpl = _t);
2071
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inlineWidgetNewTmpl = _t);
2072
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customExprTmpl = _t);
2073
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowExpansionActionTmpl = _t);
2074
+ } }, viewQuery: function TableComponent_Query(rf, ctx) { if (rf & 1) {
2075
+ i0.ɵɵviewQuery(PaginationComponent, 7);
2076
+ i0.ɵɵviewQuery(_c7, 7);
2077
+ i0.ɵɵviewQuery(_c8, 7, ViewContainerRef);
2078
+ i0.ɵɵviewQuery(_c9, 7, ViewContainerRef);
2079
+ i0.ɵɵviewQuery(_c10, 7, ViewContainerRef);
2080
+ i0.ɵɵviewQuery(_c11, 7, ViewContainerRef);
2081
+ i0.ɵɵviewQuery(_c12, 7, ViewContainerRef);
2082
+ i0.ɵɵviewQuery(_c13, 7, ViewContainerRef);
2083
+ i0.ɵɵviewQuery(_c14, 7, ViewContainerRef);
2084
+ i0.ɵɵviewQuery(_c15, 7, ViewContainerRef);
2085
+ } if (rf & 2) {
2086
+ let _t;
2087
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dataNavigator = _t.first);
2088
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._tableElement = _t.first);
2089
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowActionsViewRef = _t.first);
2090
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterViewRef = _t.first);
2091
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inlineEditViewRef = _t.first);
2092
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inlineEditNewViewRef = _t.first);
2093
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customExprViewRef = _t.first);
2094
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowDetailViewRef = _t.first);
2095
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowExpansionActionViewRef = _t.first);
2096
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dynamicTableRef = _t.first);
2097
+ } }, hostBindings: function TableComponent_HostBindings(rf, ctx) { if (rf & 1) {
2098
+ i0.ɵɵlistener("keypress", function TableComponent_keypress_HostBindingHandler($event) { return ctx.onKeyPress($event); });
2099
+ } }, features: [i0.ɵɵProvidersFeature([
2100
+ provideAs(TableComponent, NG_VALUE_ACCESSOR, true),
2101
+ provideAsWidgetRef(TableComponent)
2102
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c16, decls: 29, vars: 4, consts: [["datagridElement", ""], ["buttonRef", ""], ["anchorRef", ""], ["multiColumnFilterView", ""], ["inlineEditView", ""], ["inlineEditNewView", ""], ["rowActionsView", ""], ["rowExpansionActionView", ""], ["customExprView", ""], ["dynamicTable", ""], ["rowDetailView", ""], ["class", "panel-heading", 4, "ngIf"], [1, "app-datagrid"], [1, "panel-footer", "clearfix", 3, "hidden"], [1, "app-datagrid-paginator", 3, "hidden"], ["wmPagination", "", "show.bind", "shownavigation", "navigationalign.bind", "navigationalign", "navigationsize.bind", "navigationSize", "navigation.bind", "navControls", "showrecordcount.bind", "showrecordcount", "maxsize.bind", "maxsize", "boundarylinks.bind", "boundarylinks", "forceellipses.bind", "forceellipses", "directionlinks.bind", "directionlinks"], ["class", "app-datagrid-actions", 4, "ngIf"], ["hidden", ""], [1, "dynamic-table-container"], [1, "panel-heading"], [1, "panel-title"], [1, "pull-left"], [3, "class", 4, "ngIf"], [1, "heading", 3, "innerHTML"], [1, "description", 3, "innerHTML"], ["class", "panel-actions app-datagrid-actions", 4, "ngIf"], [1, "panel-actions", "app-datagrid-actions"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", "ngTemplateOutletInjector", 4, "ngFor", "ngForOf"], ["wmMenu", "", "dropdown", "", "caption.bind", "appLocale.LABEL_EXPORT", "autoclose", "always", "dataset.bind", "exportOptions", "select.event", "export($item)", "menuposition", "down,left", 4, "ngIf"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", "ngTemplateOutletInjector"], ["wmMenu", "", "dropdown", "", "caption.bind", "appLocale.LABEL_EXPORT", "autoclose", "always", "dataset.bind", "exportOptions", "select.event", "export($item)", "menuposition", "down,left"], [1, "app-datagrid-actions"], ["wmButton", "", "caption.bind", "btn.displayName", "show.bind", "btn.show", "class.bind", "btn.class", "iconclass.bind", "btn.iconclass", "type", "button", "shortcutkey.bind", "btn.shortcutkey", "tabindex.bind", "btn.tabindex", "hint.bind", "btn.title", "disabled.bind", "btn.disabled", "conditionalclass.bind", "btn.conditionalclass", "conditionalstyle.bind", "btn.conditionalstyle", 3, "click", "ngClass"], ["wmAnchor", "", "caption.bind", "btn.displayName", "show.bind", "btn.show", "class.bind", "btn.class", "iconclass.bind", "btn.iconclass", "shortcutkey.bind", "btn.shortcutkey", "tabindex.bind", "btn.tabindex", "hint.bind", "btn.title", "hyperlink.bind", "btn.hyperlink", "target.bind", "btn.target", "conditionalclass.bind", "btn.conditionalclass", "conditionalstyle.bind", "btn.conditionalstyle", 3, "click", "ngClass"]], template: function TableComponent_Template(rf, ctx) { if (rf & 1) {
2103
+ i0.ɵɵtemplate(0, TableComponent_div_0_Template, 8, 4, "div", 11);
2104
+ i0.ɵɵelement(1, "div", 12, 0);
2105
+ i0.ɵɵelementStart(3, "div", 13)(4, "div", 14);
2106
+ i0.ɵɵelement(5, "nav", 15);
2107
+ i0.ɵɵelementEnd();
2108
+ i0.ɵɵtemplate(6, TableComponent_div_6_Template, 2, 1, "div", 16);
2109
+ i0.ɵɵelementEnd();
2110
+ i0.ɵɵtemplate(7, TableComponent_ng_template_7_Template, 1, 5, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor)(9, TableComponent_ng_template_9_Template, 1, 4, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
2111
+ i0.ɵɵelementStart(11, "div", 17);
2112
+ i0.ɵɵelementContainer(12, null, 3)(14, null, 4)(16, null, 5)(18, null, 6)(20, null, 7)(22, null, 8)(24, null, 9)(26, null, 10);
2113
+ i0.ɵɵelement(28, "div", 18);
2114
+ i0.ɵɵelementEnd();
2115
+ } if (rf & 2) {
2116
+ i0.ɵɵproperty("ngIf", ctx.title || ctx.subheading || ctx.iconclass || ctx.exportOptions.length || ctx._actions.header.length);
2117
+ i0.ɵɵadvance(3);
2118
+ i0.ɵɵproperty("hidden", !ctx._actions.footer.length && (!ctx.shownavigation || ctx.onDemandLoad && ctx.dataNavigator.isDisableNext || (ctx.dataNavigator == null ? null : ctx.dataNavigator.dataSize) <= ctx.pagesize));
2119
+ i0.ɵɵadvance();
2120
+ i0.ɵɵproperty("hidden", !(ctx.dataNavigator == null ? null : ctx.dataNavigator.dataSize) && !(ctx.dataNavigator.datasource == null ? null : ctx.dataNavigator.datasource.pagination == null ? null : ctx.dataNavigator.datasource.pagination.next) || !ctx.shownavigation || ctx.onDemandLoad && ctx.dataNavigator.isDisableNext || (ctx.dataNavigator == null ? null : ctx.dataNavigator.dataSize) <= ctx.pagesize);
2121
+ i0.ɵɵadvance(2);
2122
+ i0.ɵɵproperty("ngIf", ctx._actions.footer.length);
2123
+ } }, dependencies: [i5.AnchorComponent, i6.BsDropdownDirective, i7.NgClass, i7.NgForOf, i7.NgIf, i7.NgTemplateOutlet, i8.ButtonComponent, i9.MenuComponent, i10.PaginationComponent], encapsulation: 2 }); }
2124
+ }
2125
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TableComponent, [{
2126
+ type: Component,
2127
+ args: [{ selector: '[wmTable]', providers: [
2128
+ provideAs(TableComponent, NG_VALUE_ACCESSOR, true),
2129
+ provideAsWidgetRef(TableComponent)
2130
+ ], template: "<div class=\"panel-heading\" *ngIf=\"title || subheading || iconclass || exportOptions.length || _actions.header.length\">\n <h3 class=\"panel-title\">\n <div class=\"pull-left\">\n <i class=\"app-icon panel-icon {{iconclass}}\" *ngIf=\"iconclass\"></i>\n </div>\n <div class=\"pull-left\">\n <div class=\"heading\" [innerHTML]=\"title\"></div>\n <div class=\"description\" [innerHTML]=\"subheading\"></div>\n </div>\n <div class=\"panel-actions app-datagrid-actions\" *ngIf=\"exportOptions.length || _actions.header.length\">\n <ng-container *ngFor=\"let btn of _actions.header; let index = index;\"\n [ngTemplateOutlet]=\"btn.widgetType === 'button' ? buttonRef : anchorRef\"\n [ngTemplateOutletContext]=\"{btn:btn}\"\n [ngTemplateOutletInjector]=\"createCustomInjector('actions_header_' + index, {btn:btn})\">\n </ng-container>\n <div wmMenu dropdown caption.bind=\"appLocale.LABEL_EXPORT\" *ngIf=\"exportOptions.length\" autoclose=\"always\" attr.name=\"{{name}}-export\"\n dataset.bind=\"exportOptions\" select.event=\"export($item)\" menuposition=\"down,left\"></div>\n </div>\n </h3>\n</div>\n<div class=\"app-datagrid\" #datagridElement></div>\n\n<div class=\"panel-footer clearfix\" [hidden]=\"!_actions.footer.length && (!shownavigation || (onDemandLoad && dataNavigator.isDisableNext) || dataNavigator?.dataSize <= pagesize)\">\n <div class=\"app-datagrid-paginator\" [hidden]=\"(!dataNavigator?.dataSize && !dataNavigator.datasource?.pagination?.next) || !shownavigation || (onDemandLoad && dataNavigator.isDisableNext) || dataNavigator?.dataSize <= pagesize\">\n <nav wmPagination show.bind=\"shownavigation\" navigationalign.bind=\"navigationalign\"\n navigationsize.bind=\"navigationSize\"\n navigation.bind=\"navControls\" showrecordcount.bind=\"showrecordcount\" maxsize.bind=\"maxsize\"\n boundarylinks.bind=\"boundarylinks\"\n forceellipses.bind=\"forceellipses\" directionlinks.bind=\"directionlinks\"></nav>\n </div>\n <div class=\"app-datagrid-actions\" *ngIf=\"_actions.footer.length\">\n <ng-container *ngFor=\"let btn of _actions.footer; let index = index;\"\n [ngTemplateOutlet]=\"btn.widgetType === 'button' ? buttonRef : anchorRef\"\n [ngTemplateOutletContext]=\"{btn:btn}\"\n [ngTemplateOutletInjector]=\"createCustomInjector('actions_footer_' + index, {btn:btn})\">\n </ng-container>\n </div>\n</div>\n\n<ng-template #buttonRef let-btn=\"btn\">\n <button wmButton caption.bind=\"btn.displayName\" show.bind=\"btn.show\" class.bind=\"btn.class\" iconclass.bind=\"btn.iconclass\" (click)=\"invokeActionEvent($event, btn.action)\"\n [ngClass]=\"{'btn-sm': spacing === 'condensed', 'disabled-new': btn.key === 'addNewRow' && (isGridEditMode || isLoading)}\"\n type=\"button\" shortcutkey.bind=\"btn.shortcutkey\" tabindex.bind=\"btn.tabindex\" hint.bind=\"btn.title\" [attr.aria-label]=\"btn.displayName\" disabled.bind=\"btn.disabled\" conditionalclass.bind=\"btn.conditionalclass\" conditionalstyle.bind=\"btn.conditionalstyle\"></button>\n</ng-template>\n\n<ng-template #anchorRef let-btn=\"btn\">\n <a wmAnchor caption.bind=\"btn.displayName\" show.bind=\"btn.show\" class.bind=\"btn.class\" iconclass.bind=\"btn.iconclass\" (click)=\"invokeActionEvent($event, btn.action)\"\n [ngClass]=\"{'btn-sm': spacing === 'condensed', 'disabled-new': btn.key === 'addNewRow' && (isGridEditMode || isLoading)}\"\n shortcutkey.bind=\"btn.shortcutkey\" tabindex.bind=\"btn.tabindex\" hint.bind=\"btn.title\"\n hyperlink.bind=\"btn.hyperlink\" target.bind=\"btn.target\" conditionalclass.bind=\"btn.conditionalclass\" conditionalstyle.bind=\"btn.conditionalstyle\"></a>\n</ng-template>\n\n<div hidden>\n <ng-container #multiColumnFilterView></ng-container>\n\n <ng-container #inlineEditView></ng-container>\n\n <ng-container #inlineEditNewView></ng-container>\n\n <ng-container #rowActionsView></ng-container>\n\n <ng-container #rowExpansionActionView></ng-container>\n\n <ng-container #customExprView></ng-container>\n\n <ng-container #dynamicTable></ng-container>\n\n <ng-container #rowDetailView></ng-container>\n\n <div class=\"dynamic-table-container\"></div>\n</div>\n" }]
2131
+ }], () => [{ type: i0.Injector }, { type: i1.FormBuilder }, { type: i2.App }, { type: i2.DynamicComponentRefProvider }, { type: i2.StatePersistence }, { type: i2.PaginationService }, { type: i2.Viewport }, { type: i3.ListComponent, decorators: [{
2132
+ type: Optional
2133
+ }] }, { type: undefined, decorators: [{
2134
+ type: Attribute,
2135
+ args: ['dataset.bind']
2136
+ }] }, { type: undefined, decorators: [{
2137
+ type: Attribute,
2138
+ args: ['datasource.bind']
2139
+ }] }, { type: undefined, decorators: [{
2140
+ type: Attribute,
2141
+ args: ['readonlygrid']
2142
+ }] }, { type: i0.NgZone }, { type: i4.TrustAsPipe }, { type: undefined, decorators: [{
2143
+ type: Inject,
2144
+ args: ['EXPLICIT_CONTEXT']
2145
+ }, {
2146
+ type: Optional
2147
+ }] }], { dataNavigator: [{
2148
+ type: ViewChild,
2149
+ args: [PaginationComponent, { static: true }]
2150
+ }], _tableElement: [{
2151
+ type: ViewChild,
2152
+ args: ['datagridElement', { static: true }]
2153
+ }], rowActionTmpl: [{
2154
+ type: ContentChildren,
2155
+ args: ['rowActionTmpl', { descendants: true }]
2156
+ }], rowActionsViewRef: [{
2157
+ type: ViewChild,
2158
+ args: ['rowActionsView', { static: true, read: ViewContainerRef }]
2159
+ }], filterTmpl: [{
2160
+ type: ContentChildren,
2161
+ args: ['filterTmpl', { descendants: true }]
2162
+ }], filterViewRef: [{
2163
+ type: ViewChild,
2164
+ args: ['multiColumnFilterView', { static: true, read: ViewContainerRef }]
2165
+ }], inlineWidgetTmpl: [{
2166
+ type: ContentChildren,
2167
+ args: ['inlineWidgetTmpl', { descendants: true }]
2168
+ }], inlineEditViewRef: [{
2169
+ type: ViewChild,
2170
+ args: ['inlineEditView', { static: true, read: ViewContainerRef }]
2171
+ }], inlineWidgetNewTmpl: [{
2172
+ type: ContentChildren,
2173
+ args: ['inlineWidgetTmplNew', { descendants: true }]
2174
+ }], inlineEditNewViewRef: [{
2175
+ type: ViewChild,
2176
+ args: ['inlineEditNewView', { static: true, read: ViewContainerRef }]
2177
+ }], customExprTmpl: [{
2178
+ type: ContentChildren,
2179
+ args: ['customExprTmpl', { descendants: true }]
2180
+ }], customExprViewRef: [{
2181
+ type: ViewChild,
2182
+ args: ['customExprView', { static: true, read: ViewContainerRef }]
2183
+ }], rowExpansionActionTmpl: [{
2184
+ type: ContentChildren,
2185
+ args: ['rowExpansionActionTmpl', { descendants: true }]
2186
+ }], rowExpansionTmpl: [{
2187
+ type: ContentChild,
2188
+ args: ['rowExpansionTmpl']
2189
+ }], rowDetailViewRef: [{
2190
+ type: ViewChild,
2191
+ args: ['rowDetailView', { static: true, read: ViewContainerRef }]
2192
+ }], rowExpansionActionViewRef: [{
2193
+ type: ViewChild,
2194
+ args: ['rowExpansionActionView', { static: true, read: ViewContainerRef }]
2195
+ }], dynamicTableRef: [{
2196
+ type: ViewChild,
2197
+ args: ['dynamicTable', { static: true, read: ViewContainerRef }]
2198
+ }], onKeyPress: [{
2199
+ type: HostListener,
2200
+ args: ['keypress', ['$event']]
2201
+ }] }); })();
2202
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TableComponent, { className: "TableComponent", filePath: "table.component.ts", lineNumber: 122 }); })();
2203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2RhdGEvdGFibGUvc3JjL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL3RhYmxlL3NyYy90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQUUsTUFBTSxFQUNwQixRQUFRLEVBQ1IsTUFBTSxFQUVOLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF1QixXQUFXLEVBQWEsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRixPQUFPLEVBQ0gsVUFBVSxFQUNWLGVBQWUsRUFDZixXQUFXLEVBQ1gsUUFBUSxFQUNSLE1BQU0sRUFDTixHQUFHLEVBQ0gsWUFBWSxFQUNaLFVBQVUsRUFDViwyQkFBMkIsRUFDM0IsV0FBVyxFQUNYLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUNSLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFFBQVEsRUFDWCxNQUFNLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFDSCxjQUFjLEVBQ2QsU0FBUyxFQUNULHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIs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QUFDLGdCQUFnQixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQztZQUNpQixpQkFBaUI7a0JBQXZGLFNBQVM7bUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUVILHNCQUFzQjtrQkFBdkYsZUFBZTttQkFBQyx3QkFBd0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7WUFDOUIsZ0JBQWdCO2tCQUFqRCxZQUFZO21CQUFDLGtCQUFrQjtZQUNzQyxnQkFBZ0I7a0JBQXJGLFNBQVM7bUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDVyx5QkFBeUI7a0JBQXZHLFNBQVM7bUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUVSLGVBQWU7a0JBQW5GLFNBQVM7bUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUE0MUI3QixVQUFVO2tCQUEvQyxZQUFZO21CQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7a0ZBdDNCM0IsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBdHRyaWJ1dGUsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0TGlzdGVuZXIsIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgICRhcHBEaWdlc3QsXG4gICAgJGludm9rZVdhdGNoZXJzLFxuICAgICRwYXJzZUV2ZW50LFxuICAgICR1bndhdGNoLFxuICAgICR3YXRjaCxcbiAgICBBcHAsXG4gICAgY2xvc2VQb3BvdmVyLFxuICAgIERhdGFTb3VyY2UsXG4gICAgRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyLFxuICAgIGV4dGVuZFByb3RvLFxuICAgIGdldENsb25lZE9iamVjdCxcbiAgICBnZXREYXRhc291cmNlRnJvbUV4cHIsXG4gICAgZ2V0VmFsaWRKU09OLFxuICAgIGlzRGF0YVNvdXJjZUVxdWFsLFxuICAgIGlzRGVmaW5lZCxcbiAgICBpc01vYmlsZSxcbiAgICBQYWdpbmF0aW9uU2VydmljZSxcbiAgICBTdGF0ZVBlcnNpc3RlbmNlLFxuICAgIHRyaWdnZXJGbixcbiAgICBWaWV3cG9ydFxufSBmcm9tICdAd20vY29yZSc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIERFQk9VTkNFX1RJTUVTLFxuICAgIEVESVRfTU9ERSxcbiAgICBleHRyYWN0RGF0YVNvdXJjZU5hbWUsXG4gICAgZ2V0Q29uZGl0aW9uYWxDbGFzc2VzLFxuICAgIGdldE9yZGVyQnlFeHByLFxuICAgIGdldFJvd09wZXJhdGlvbnNDb2x1bW4sXG4gICAgTkFWSUdBVElPTl9UWVBFLFxuICAgIHByZXBhcmVGaWVsZERlZnMsXG4gICAgcHJvdmlkZUFzLFxuICAgIHByb3ZpZGVBc1dpZGdldFJlZixcbiAgICBTdHlsYWJsZUNvbXBvbmVudCxcbiAgICBzdHlsZXIsXG4gICAgdHJhbnNmb3JtRGF0YSxcbiAgICBUcnVzdEFzUGlwZSxcbiAgICB1bnN1cHBvcnRlZFN0YXRlUGVyc2lzdGVuY2VUeXBlc1xufSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7UGFnaW5hdGlvbkNvbXBvbmVudH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGF0YS9wYWdpbmF0aW9uJztcblxuaW1wb3J0IHtMaXN0Q29tcG9uZW50fSBmcm9tICdAd20vY29tcG9uZW50cy9kYXRhL2xpc3QnO1xuaW1wb3J0IHtyZWdpc3RlclByb3BzfSBmcm9tICcuL3RhYmxlLnByb3BzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIGRlYm91bmNlLFxuICAgIGV4dGVuZCwgZmluZCxcbiAgICBmaW5kSW5kZXgsIGZsb29yLCBmb3JFYWNoLFxuICAgIGdldCwgaW5jbHVkZXMsIGluZGV4T2YsIGlzQXJyYXksIGlzRW1wdHksXG4gICAgaXNFcXVhbCxcbiAgICBpc05hTiwgaXNPYmplY3QsXG4gICAgaXNVbmRlZmluZWQsIGtleXMsIG9taXRCeSxcbiAgICBwdWxsQWxsV2l0aCxcbiAgICByZW1vdmUsXG4gICAgc2V0LFxuICAgIHNvbWUsIHNwbGl0LCBzdGFydHNXaXRoLCB0b051bWJlciwgdmFsdWVzXG59IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZGVjbGFyZSBjb25zdCAkO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtZ3JpZCBhcHAtcGFuZWwgcGFuZWwnO1xuY29uc3QgV0lER0VUX0NPTkZJRyA9IHt3aWRnZXRUeXBlOiAnd20tdGFibGUnLCBob3N0Q2xhc3M6IERFRkFVTFRfQ0xTfTtcblxuY29uc3QgZXhwb3J0SWNvbk1hcHBpbmcgPSB7XG4gICAgRVhDRUw6ICdmYSBmYS1maWxlLWV4Y2VsLW8nLFxuICAgIENTVjogJ2ZhIGZhLWZpbGUtdGV4dC1vJ1xufTtcblxuY29uc3QgUk9XX09QU19GSUVMRCA9ICdyb3dPcGVyYXRpb25zJztcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5jb25zdCBpc0lucHV0Qm9keVdyYXBwZXIgPSB0YXJnZXQgPT4ge1xuICAgIGNvbnN0IGNsYXNzZXMgPSBbJy5kcm9wZG93bi1tZW51JywgJy51aWItdHlwZWFoZWFkLW1hdGNoJywgJy5tb2RhbC1kaWFsb2cnLCAnLnRvYXN0J107XG4gICAgbGV0IGlzSW5wdXQgPSBmYWxzZTtcbiAgICBjbGFzc2VzLmZvckVhY2goY2xzID0+IHtcbiAgICAgICAgaWYgKHRhcmdldC5jbG9zZXN0KGNscykubGVuZ3RoKSB7XG4gICAgICAgICAgICBpc0lucHV0ID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGF0dHJzID0gWydic2RhdGVwaWNrZXJkYXlkZWNvcmF0b3InXTtcbiAgICBpZiAoIWlzSW5wdXQpIHtcbiAgICAgICAgYXR0cnMuZm9yRWFjaChhdHRyID0+IHtcbiAgICAgICAgICAgIGlmICh0YXJnZXRbMF0uaGFzQXR0cmlidXRlKGF0dHIpKSB7XG4gICAgICAgICAgICAgICAgaXNJbnB1dCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGlzSW5wdXQ7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ1t3bVRhYmxlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKFRhYmxlQ29tcG9uZW50LCBOR19WQUxVRV9BQ0NFU1NPUiwgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihUYWJsZUNvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGV4dGVuZHMgU3R5bGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuICAgIEBWaWV3Q2hpbGQoUGFnaW5hdGlvbkNvbXBvbmVudCwge3N0YXRpYzogdHJ1ZX0pIGRhdGFOYXZpZ2F0b3I7XG5cbiAgICBAVmlld0NoaWxkKCdkYXRhZ3JpZEVsZW1lbnQnLCB7c3RhdGljOiB0cnVlfSkgcHJpdmF0ZSBfdGFibGVFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbigncm93QWN0aW9uVG1wbCcsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcm93QWN0aW9uVG1wbDogUXVlcnlMaXN0PGFueT47XG4gICAgQFZpZXdDaGlsZCgncm93QWN0aW9uc1ZpZXcnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSByb3dBY3Rpb25zVmlld1JlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oJ2ZpbHRlclRtcGwnLCB7ZGVzY2VuZGFudHM6IHRydWV9KSBmaWx0ZXJUbXBsOiBRdWVyeUxpc3Q8YW55PjtcbiAgICBAVmlld0NoaWxkKCdtdWx0aUNvbHVtbkZpbHRlclZpZXcnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBmaWx0ZXJWaWV3UmVmOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbignaW5saW5lV2lkZ2V0VG1wbCcsIHtkZXNjZW5kYW50czogdHJ1ZX0pIGlubGluZVdpZGdldFRtcGw6IFF1ZXJ5TGlzdDxhbnk+O1xuICAgIEBWaWV3Q2hpbGQoJ2lubGluZUVkaXRWaWV3JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgaW5saW5lRWRpdFZpZXdSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKCdpbmxpbmVXaWRnZXRUbXBsTmV3Jywge2Rlc2NlbmRhbnRzOiB0cnVlfSkgaW5saW5lV2lkZ2V0TmV3VG1wbDogUXVlcnlMaXN0PGFueT47XG4gICAgQFZpZXdDaGlsZCgnaW5saW5lRWRpdE5ld1ZpZXcnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBpbmxpbmVFZGl0TmV3Vmlld1JlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oJ2N1c3RvbUV4cHJUbXBsJywge2Rlc2NlbmRhbnRzOiB0cnVlfSkgY3VzdG9tRXhwclRtcGw6IFF1ZXJ5TGlzdDxhbnk+O1xuICAgIEBWaWV3Q2hpbGQoJ2N1c3RvbUV4cHJWaWV3JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgY3VzdG9tRXhwclZpZXdSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKCdyb3dFeHBhbnNpb25BY3Rpb25UbXBsJywgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSByb3dFeHBhbnNpb25BY3Rpb25UbXBsOiBRdWVyeUxpc3Q8YW55PjtcbiAgICBAQ29udGVudENoaWxkKCdyb3dFeHBhbnNpb25UbXBsJykgcm93RXhwYW5zaW9uVG1wbDogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAVmlld0NoaWxkKCdyb3dEZXRhaWxWaWV3JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgcm93RGV0YWlsVmlld1JlZjogVmlld0NvbnRhaW5lclJlZjtcbiAgICBAVmlld0NoaWxkKCdyb3dFeHBhbnNpb25BY3Rpb25WaWV3JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgcm93RXhwYW5zaW9uQWN0aW9uVmlld1JlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ2R5bmFtaWNUYWJsZScsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGR5bmFtaWNUYWJsZVJlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIHByaXZhdGUgcm93QWN0aW9uc0NvbXBpbGVkVGw6IGFueSAgPSB7fTtcbiAgICBwcml2YXRlIHJvd0ZpbHRlckNvbXBsaWVkVGw6IGFueSA9IHt9O1xuICAgIHByaXZhdGUgaW5saW5lQ29tcGxpZWRUbDogYW55ID0ge307XG4gICAgcHJpdmF0ZSBpbmxpbmVOZXdDb21wbGllZFRsOiBhbnkgPSB7fTtcbiAgICBwcml2YXRlIGN1c3RvbUV4cHJDb21waWxlZFRsOiBhbnkgPSB7fTtcbiAgICBwcml2YXRlIGN1c3RvbUV4cHJDb21waWxlZFN1bW1hcnlUbDogYW55ID0ge307XG4gICAgcHJpdmF0ZSByb3dEZWZJbnN0YW5jZXMgPSB7fTtcbiAgICBwcml2YXRlIHJvd0RlZk1hcCA9IHt9O1xuICAgIHByaXZhdGUgcm93RXhwYW5zaW9uQWN0aW9uVGw6IGFueSA9IHt9O1xuXG4gICAgY29sdW1ucyA9IHt9O1xuICAgIGZvcm1maWVsZHMgPSB7fTtcbiAgICBkYXRhZ3JpZEVsZW1lbnQ7XG4gICAgZGF0YXNvdXJjZTtcbiAgICBlZGl0bW9kZTtcbiAgICBlbmFibGVjb2x1bW5zZWxlY3Rpb247XG4gICAgZW5hYmxlc29ydCA9IHRydWU7XG4gICAgZmlsdGVybW9kZTtcbiAgICBmaWx0ZXJvbmtleXByZXNzO1xuICAgIHNlYXJjaGxhYmVsO1xuICAgIGZvcm1wb3NpdGlvbjtcbiAgICBncmlkY2xhc3M7XG4gICAgZ3JpZGZpcnN0cm93c2VsZWN0O1xuICAgIGljb25jbGFzcztcbiAgICBvbmRlbWFuZG1lc3NhZ2U7XG4gICAgdmlld2xlc3NtZXNzYWdlO1xuICAgIHNob3d2aWV3bGVzc2J1dHRvbiA9IGZhbHNlO1xuICAgIF90cmlnZ2VyZWRCeVVzZXI7XG4gICAgaXNHcmlkRWRpdE1vZGU7XG4gICAgbG9hZGluZ2RhdGFtc2c7XG4gICAgbXVsdGlzZWxlY3Q7XG4gICAgbmFtZTtcbiAgICBfaXNEZXBlbmRlbnQ7XG4gICAgbmF2aWdhdGlvbjtcbiAgICBuYXZpZ2F0aW9uU2l6ZTtcbiAgICBuYXZpZ2F0aW9uYWxpZ247XG4gICAgbm9kYXRhbWVzc2FnZTtcbiAgICBwYWdlc2l6ZTtcbiAgICBwcmV2RGF0YTtcbiAgICBwcmltYXJ5S2V5ID0gW107XG4gICAgcmFkaW9zZWxlY3Q7XG4gICAgcm93Y2xhc3M7XG4gICAgcm93bmdjbGFzcztcbiAgICBzZWxlY3RlZEl0ZW1zID0gW107XG4gICAgc2hvd2hlYWRlcjtcbiAgICBzaG93cmVjb3JkY291bnQ7XG4gICAgc2hvd3Jvd2luZGV4O1xuICAgIHN1YmhlYWRpbmc7XG4gICAgdGl0bGU7XG4gICAgc2hvd25ld3JvdztcbiAgICBkZWxldGVva3RleHQ7XG4gICAgZGVsZXRlY2FuY2VsdGV4dDtcbiAgICBvbkVycm9yO1xuICAgIG9uUm93aW5zZXJ0O1xuICAgIG9uUm93dXBkYXRlO1xuICAgIG9uUm93ZGVsZXRlO1xuICAgIHN0YXRlaGFuZGxlcjtcbiAgICBzZWxlY3RlZEl0ZW1DaGFuZ2UgPSBuZXcgU3ViamVjdCgpO1xuICAgIHNlbGVjdGVkSXRlbUNoYW5nZSQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuc2VsZWN0ZWRJdGVtQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgYWN0aW9ucyA9IFtdO1xuICAgIF9hY3Rpb25zID0ge1xuICAgICAgICAnaGVhZGVyJzogW10sXG4gICAgICAgICdmb290ZXInOiBbXVxuICAgIH07XG4gICAgZXhwb3J0T3B0aW9ucyA9IFtdO1xuICAgIGV4cG9ydGRhdGFzaXplO1xuICAgIGZvcm1XaWRnZXRzO1xuICAgIGhlYWRlckNvbmZpZyA9IFtdO1xuICAgIGl0ZW1zID0gW107XG4gICAgbmF2Q29udHJvbHM7XG4gICAgcm93QWN0aW9ucyA9IFtdO1xuICAgIHNlbGVjdGVkQ29sdW1ucztcbiAgICBzaG93bmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgIHNob3dGaXJzdFJvdyA9IGZhbHNlO1xuICAgIGRhdGFzZXQ7XG4gICAgX2xpdmVUYWJsZVBhcmVudDtcbiAgICBpc1BhcnRPZkxpdmVHcmlkO1xuICAgIGdyaWRFbGVtZW50O1xuICAgIGlzTmV3Um93SW5zZXJ0ZWQ7XG4gICAgaXNNb2JpbGU7XG4gICAgaXNMb2FkaW5nO1xuICAgIGlzUm93RGVsZXRlZDtcbiAgICBkb2N1bWVudENsaWNrQmluZCA9IG5vb3A7XG4gICAgYWN0aW9uUm93SW5kZXg7XG4gICAgYWN0aW9uUm93UGFnZTtcbiAgICBwcmV2RmlsdGVyRXhwcmVzc2lvbjogYW55ID0gW107XG4gICAgZmllbGREZWZzID0gW107XG4gICAgcm93RGVmOiBhbnkgPSB7fTtcbiAgICByb3dJbnN0YW5jZTogYW55ID0ge307XG5cbiAgICBwcml2YXRlIGZ1bGxGaWVsZERlZnMgPSBbXTtcbiAgICBwcml2YXRlIF9fZnVsbERhdGE7XG4gICAgcHJpdmF0ZSBkYXRhTmF2aWdhdG9yV2F0Y2hlZDtcbiAgICBwcml2YXRlIG5hdmlnYXRvclJlc3VsdFdhdGNoO1xuICAgIHByaXZhdGUgbmF2aWdhdG9yTWF4UmVzdWx0V2F0Y2g7XG4gICAgcHJpdmF0ZSBmaWx0ZXJJbmZvO1xuICAgIHByaXZhdGUgc29ydEluZm87XG4gICAgcHJpdmF0ZSBzZXJ2ZXJEYXRhO1xuICAgIHByaXZhdGUgZmlsdGVybnVsbHJlY29yZHM7XG4gICAgcHJpdmF0ZSB2YXJpYWJsZUluZmxpZ2h0ID0gdHJ1ZTtcbiAgICBwcml2YXRlIGlzZHluYW1pY3RhYmxlO1xuICAgIHByaXZhdGUgX2R5bmFtaWNDb250ZXh0O1xuICAgIHByaXZhdGUgbm9PZkNvbHVtbnM7XG4gICAgcHVibGljIG9uRGVtYW5kTG9hZDtcbiAgICBwdWJsaWMgaW5mU2Nyb2xsO1xuICAgIHByaXZhdGUgaXNEYXRhTG9hZGluZztcbiAgICBwcml2YXRlIGN1cnJlbnRQYWdlO1xuICAgIHByaXZhdGUgYXBwbHlQcm9wcyA9IG5ldyBNYXAoKTtcblxuICAgIHJlZHJhdyA9IGRlYm91bmNlKHRoaXMuX3JlZHJhdywgMTUwKTtcbiAgICBkZWJvdW5jZWRIYW5kbGVMb2FkaW5nID0gZGVib3VuY2UodGhpcy5oYW5kbGVMb2FkaW5nLCAzNTApO1xuXG4gICAgLy8gRmlsdGVyIGFuZCBTb3J0IE1ldGhvZHNcbiAgICByb3dGaWx0ZXI6IGFueSA9IHt9O1xuICAgIG1hdGNoTW9kZVR5cGVzTWFwO1xuICAgIG1hdGNoTW9kZU1zZ3M7XG4gICAgZW1wdHlNYXRjaE1vZGVzO1xuICAgIF9zZWFyY2hTb3J0SGFuZGxlciA9IG5vb3A7XG4gICAgc2VhcmNoU29ydEhhbmRsZXIgPSAoLi4uYXJncykgPT4geyB0aGlzLl9zZWFyY2hTb3J0SGFuZGxlci5hcHBseSh0aGlzLCBhcmdzKTsgfTtcbiAgICBfaXNQYWdlU2VhcmNoO1xuICAgIF9pc0NsaWVudFNlYXJjaDtcbiAgICBjaGVja0ZpbHRlcnNBcHBsaWVkOiBGdW5jdGlvbjtcbiAgICBnZXRTZWFyY2hSZXN1bHQ6IEZ1bmN0aW9uO1xuICAgIGdldFNvcnRSZXN1bHQ6IEZ1bmN0aW9uO1xuICAgIGdldEZpbHRlckZpZWxkczogRnVuY3Rpb247XG4gICAgb25Sb3dGaWx0ZXJDaGFuZ2UgPSBub29wO1xuICAgIG9uRmlsdGVyQ29uZGl0aW9uU2VsZWN0ID0gbm9vcDtcbiAgICBzaG93Q2xlYXJJY29uID0gbm9vcDtcbiAgICBjbGVhclJvd0ZpbHRlciA9IG5vb3A7XG4gICAgYWRqdXN0Q29udGFpbmVyID0gbm9vcDtcbiAgICBnZXROYXZpZ2F0aW9uVGFyZ2V0QnlTb3J0SW5mbzogRnVuY3Rpb247XG4gICAgcmVmcmVzaERhdGE6IEZ1bmN0aW9uO1xuICAgIGNsZWFyRmlsdGVyOiBGdW5jdGlvbjtcblxuICAgIC8vIElubGluZSBFZGl0XG4gICAgbmdmb3JtOiBGb3JtR3JvdXA7XG4gICAgdXBkYXRlVmFyaWFibGU6IEZ1bmN0aW9uO1xuICAgIHVwZGF0ZVJlY29yZDogRnVuY3Rpb247XG4gICAgZGVsZXRlUmVjb3JkOiBGdW5jdGlvbjtcbiAgICBpbnNlcnRSZWNvcmQ6IEZ1bmN0aW9uO1xuICAgIGVkaXRSb3c6IEZ1bmN0aW9uO1xuICAgIGFkZE5ld1JvdzogRnVuY3Rpb247XG4gICAgYWRkUm93OiBGdW5jdGlvbjtcbiAgICBkZWxldGVSb3c6IEZ1bmN0aW9uO1xuICAgIG9uUmVjb3JkRGVsZXRlOiBGdW5jdGlvbjtcbiAgICBpbml0aWF0ZVNlbGVjdEl0ZW06IEZ1bmN0aW9uO1xuICAgIGhpZGVFZGl0Um93OiBGdW5jdGlvbjtcbiAgICBzYXZlUm93OiBGdW5jdGlvbjtcbiAgICBjYW5jZWxSb3c6IEZ1bmN0aW9uO1xuICAgIHByaXZhdGUgX3BhZ2VMb2FkID0gdHJ1ZTtcblxuICAgIHB1YmxpYyBncmlkT3B0aW9ucyA9IHtcbiAgICAgICAgZGF0YTogW10sXG4gICAgICAgIGNvbERlZnM6IFtdLFxuICAgICAgICBzdGFydFJvd0luZGV4OiAxLFxuICAgICAgICBtb2RlOiAnJyxcbiAgICAgICAgc29ydEluZm86IHtcbiAgICAgICAgICAgIGZpZWxkOiAnJyxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogJydcbiAgICAgICAgfSxcbiAgICAgICAgZmlsdGVybW9kZTogJycsXG4gICAgICAgIGZpbHRlcm9ua2V5cHJlc3M6IGZhbHNlLFxuICAgICAgICBzZWFyY2hMYWJlbDogJycsXG4gICAgICAgIHJvd0FjdGlvbnM6IFtdLFxuICAgICAgICBoZWFkZXJDb25maWc6IFtdLFxuICAgICAgICByb3dDbGFzczogJycsXG4gICAgICAgIGVkaXRtb2RlOiAnJyxcbiAgICAgICAgZm9ybVBvc2l0aW9uOiAnJyxcbiAgICAgICAgaXNNb2JpbGU6IGZhbHNlLFxuICAgICAgICByb3dFeHBhbnNpb25FbmFibGVkOiBmYWxzZSxcbiAgICAgICAgcm93RGVmOiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJzAnXG4gICAgICAgIH0sXG4gICAgICAgIG5hbWU6ICcnLFxuICAgICAgICBtZXNzYWdlczoge1xuICAgICAgICAgICAgc2VsZWN0RmllbGQ6ICdTZWxlY3QgRmllbGQnXG4gICAgICAgIH0sXG4gICAgICAgIHNlY3VyaXR5VXRpbHM6IHtcbiAgICAgICAgICAgIHBpcGVUcmFuc2Zvcm0gOiB7fVxuICAgICAgICB9LFxuICAgICAgICBuYXZpZ2F0aW9uOiAnJyxcbiAgICAgICAgaXNkeW5hbWljdGFibGU6ICcnLFxuICAgICAgICBkZWxldGVkUm93SW5kZXg6IC0xLFxuICAgICAgICBsYXN0QWN0aW9uUGVyZm9ybWVkOiAnc2Nyb2xsJyxcbiAgICAgICAgaXNTZWFyY2hUcmlnZXJyZWQ6IGZhbHNlLFxuICAgICAgICBpc0RhdGFzZXRVcGRhdGVkOiBmYWxzZSxcbiAgICAgICAgaXNEYXRhVXBkYXRlZEJ5VXNlcjogZmFsc2UsXG4gICAgICAgIHNob3d2aWV3bGVzc2J1dHRvbjogZmFsc2UsXG4gICAgICAgIG9uZGVtYW5kbWVzc2FnZTogJycsXG4gICAgICAgIHZpZXdsZXNzbWVzc2FnZTogJycsXG4gICAgICAgIGxvYWRpbmdkYXRhbXNnOiAnJyxcbiAgICAgICAgaXNOZXh0UGFnZURhdGE6IHVuZGVmaW5lZCxcbiAgICAgICAgQUNUSU9OUzoge1xuICAgICAgICAgICAgJ0RFTEVURSc6ICdkZWxldGUnLFxuICAgICAgICAgICAgJ0VESVQnOiAnZWRpdCcsXG4gICAgICAgICAgICAnU0VBUkNIX09SX1NPUlQnOiAnc2VhcmNoX29yX3NvcnQnLFxuICAgICAgICAgICAgJ0RFRkFVTFQnOiAnc2Nyb2xsJyxcbiAgICAgICAgICAgICdGSUxURVJfQ1JJVEVSSUEnIDogJ2ZpbHRlcicsXG4gICAgICAgICAgICAnREFUQVNFVF9VUERBVEUnOiAnZGF0YXNldF91cGRhdGUnXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGlvblJvd0luZGV4OiB1bmRlZmluZWQsXG4gICAgICAgIGFjdGlvblJvd1BhZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgaXNMYXN0UGFnZSA6IGZhbHNlLFxuICAgICAgICAvLyBnZXQgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXJcbiAgICAgICAgZ2V0Q3VycmVudFBhZ2U6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBnZXQodGhpcy5kYXRhTmF2aWdhdG9yLCAnZG4uY3VycmVudFBhZ2UnKSB8fCAxO1xuICAgICAgICB9LFxuICAgICAgICAvLyBzZXQgdGhlIHBhZ2UgbnVtYmVyXG4gICAgICAgIHNldEN1cnJlbnRQYWdlOiAocGFnZU51bSkgPT4ge1xuICAgICAgICAgICAgc2V0KHRoaXMuZGF0YU5hdmlnYXRvciwgJ2RuLmN1cnJlbnRQYWdlJywgcGFnZU51bSB8fCAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RGF0YVNvdXJjZTogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YXNvdXJjZTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gZ2V0IHRoZSBwYWdlIGxpbWl0XG4gICAgICAgIGdldFBhZ2VTaXplOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYWdlc2l6ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRQYWdlQ291bnQgOiAoKSA9PntcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFOYXZpZ2F0b3IucGFnZUNvdW50O1xuICAgICAgICB9LFxuICAgICAgICBlbmFibGVOYXZpZ2F0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhTmF2aWdhdG9yLndpZGdldC5pc0Rpc2FibGVOZXh0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhTmF2aWdhdG9yLndpZGdldC5pc0Rpc2FibGVMYXN0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5tb2RlID0gJ3ZpZXdsZXNzJztcbiAgICAgICAgfSxcbiAgICAgICAgLy8gc2V0IHRoZSBkZWxldGVkIHJvdyBpbmRleFxuICAgICAgICBzZXREZWxldGVkUm93SW5kZXg6IChpZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXREYXRhR3JpZE9wdGlvbignZGVsZXRlZFJvd0luZGV4JywgaWQpO1xuICAgICAgICB9LFxuICAgICAgICAvLyBzZXRzIHRoZSBsYXN0IGFjdGlvbiBwZXJmb3JtZWQgbGlrZSBlZGl0LCBkZWxldGUgZXRjLlxuICAgICAgICBzZXRMYXN0QWN0aW9uUGVyZm9ybWVkOiAoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdsYXN0QWN0aW9uUGVyZm9ybWVkJywgYWN0aW9uIHx8IHRoaXMuZ3JpZE9wdGlvbnMubGFzdEFjdGlvblBlcmZvcm1lZCk7XG4gICAgICAgIH0sXG4gICAgICAgIGlzTmF2VHlwZVNjcm9sbE9yT25kZW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zLm5hdmlnYXRpb24gPT09ICdTY3JvbGwnIHx8IHRoaXMuZ3JpZE9wdGlvbnMubmF2aWdhdGlvbiA9PT0gJ09uLURlbWFuZCc7XG4gICAgICAgIH0sXG4gICAgICAgIHNldElzU2VhcmNoVHJpZ2VycmVkOiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ2lzU2VhcmNoVHJpZ2VycmVkJywgdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBzZXRJc0RhdGFzZXRVcGRhdGVkOiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ2lzRGF0YXNldFVwZGF0ZWQnLCB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vICBGaXggZm9yIFtXTVMtMjMyNjNdOiAnaXNOZXh0UGFnZURhdGEnIGZsYWcgaXMgc2V0IHRvIHRydWUgLT4gaWYgdXNlciBmZXRjaGluZyB0aGUgbmV4dCBwYWdlIGRhdGEgYnkgY2xpY2tpbmcgb25Mb2FkIG1vcmUgb3Igc2Nyb2xsXG4gICAgICAgIHNldElzTmV4dFBhZ2VEYXRhOiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ2lzTmV4dFBhZ2VEYXRhJywgdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICAvLyAgRml4IGZvciBbV01TLTIzMjYzXTogJ2lzRGF0YVVwZGF0ZWRCeVVzZXInIGZsYWcgaXMgc2V0IHRvIHRydWUgLT4gaWYgdXNlciBjaGFuZ2VzIHRoZSBkYXRhc2V0IGZyb20gc2NyaXB0XG4gICAgICAgIHNldElzRGF0YVVwZGF0ZWRCeVVzZXI6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXREYXRhR3JpZE9wdGlvbignaXNEYXRhVXBkYXRlZEJ5VXNlcicsIHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25EYXRhUmVuZGVyOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdyaWREYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2RhdGFyZW5kZXInLCB7JGRhdGE6IHRoaXMuZ3JpZERhdGEsIGRhdGE6IHRoaXMuZ3JpZERhdGF9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gc2VsZWN0IHJvd3Mgc2VsZWN0ZWQgaW4gcHJldmlvdXMgcGFnZXMuIChOb3QgZmluZGluZyBpbnRlcnNlY3Rpb24gb2YgZGF0YSBhbmQgc2VsZWN0ZWRpdGVtcyBhcyBpdCB3aWxsIGJlIGhlYXZ5KVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdnZXRTZWxlY3RlZFJvd3MnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQ2hhbmdlLm5leHQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gT24gcmVuZGVyLCBhcHBseSB0aGUgZmlsdGVycyBzZXQgZm9yIHF1ZXJ5IHNlcnZpY2UgdmFyaWFibGVcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNQYWdlU2VhcmNoICYmIHRoaXMuZmlsdGVySW5mbykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFNvcnRIYW5kbGVyKHRoaXMuZmlsdGVySW5mbywgdW5kZWZpbmVkLCAnc2VhcmNoJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUm93U2VsZWN0OiAocm93LCBlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdnZXRTZWxlY3RlZFJvd3MnKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUNoYW5nZS5uZXh0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJvd0RhdGEgPSB0aGlzLmFkZFJvd0luZGV4KHJvdyk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggJiYgcm93RGF0YS4kaW5kZXggJiYgdGhpcy5nZXRDb25maWd1cmVkU3RhdGUoKSAhPT0gJ25vbmUnICYmIHRoaXMuZGF0YU5hdmlnYXRvciAmJiB1bnN1cHBvcnRlZFN0YXRlUGVyc2lzdGVuY2VUeXBlcy5pbmRleE9mKHRoaXMubmF2aWdhdGlvbikgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9iaiA9IHtwYWdlOiB0aGlzLmRhdGFOYXZpZ2F0b3IuZG4uY3VycmVudFBhZ2UsIGluZGV4OiByb3dEYXRhLiRpbmRleCAtIDF9O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aWRnZXRTdGF0ZSA9IHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5nZXRXaWRnZXRTdGF0ZSh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldCh3aWRnZXRTdGF0ZSwgJ3NlbGVjdGVkSXRlbScpICYmIHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc29tZSh3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0sIG9iaikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0ucHVzaChvYmopO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLnNldFdpZGdldFN0YXRlKHRoaXMsIHsnc2VsZWN0ZWRJdGVtJzogd2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2Uuc2V0V2lkZ2V0U3RhdGUodGhpcywgeydzZWxlY3RlZEl0ZW0nOiBbb2JqXX0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdSZXRhaW4gU3RhdGUgaGFuZGxpbmcgb24gV2lkZ2V0ICcgKyB0aGlzLm5hbWUgKyAnIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGN1cnJlbnQgcGFnaW5hdGlvbiB0eXBlLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3Jvd3NlbGVjdCcsIHskZGF0YTogcm93RGF0YSwgJGV2ZW50OiBlLCByb3c6IHJvd0RhdGF9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyBhc3NpZ25zIHRoZSBpdGVtcyBvbiBjYXB0dXJlIHBoYXNlIG9mIHRoZSBjbGljayBoYW5kbGVyLlxuICAgICAgICBhc3NpZ25TZWxlY3RlZEl0ZW1zOiAocm93LCBlLCByb3dJbmZvKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICogaW4gY2FzZSBvZiBzaW5nbGUgc2VsZWN0LCB1cGRhdGUgdGhlIGl0ZW1zIHdpdGggb3V0IGNoYW5naW5nIHRoZSByZWZlcmVuY2UuXG4gICAgICAgICAgICAgICAgICogZm9yIG11bHRpIHNlbGVjdCwga2VlcCBvbGQgc2VsZWN0ZWQgaXRlbXMgaW4gdGFjdFxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vRml4IGZvciBbV01TLTI1MTEwXTogQWRkIHJvdyB0byBpdGVtcyBsaXN0IG9ubHkgaWYgdGhlIHJvdyBpcyBzZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgICBpZiAoZmluZEluZGV4KHRoaXMuaXRlbXMsIHJvdykgPT09IC0xICYmIChyb3dJbmZvPy5fc2VsZWN0ZWQgPT09IHVuZGVmaW5lZCB8fCByb3dJbmZvPy5fc2VsZWN0ZWQgPT0gdHJ1ZSB8fCAodGhpcy5ncmlkZmlyc3Ryb3dzZWxlY3QgJiYgcm93SW5mbz8ucm93SWQgPT0gMCAmJiAhdGhpcy5zaG93Rmlyc3RSb3cpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93SW5mbz8ucm93SWQgPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0ZpcnN0Um93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMubGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUm93RGJsQ2xpY2s6IChyb3csIGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvd0RhdGEgPSB0aGlzLmFkZFJvd0luZGV4KHJvdyk7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3Jvd2RibGNsaWNrJywgeyRkYXRhOiByb3dEYXRhLCAkZXZlbnQ6IGUsIHJvdzogcm93RGF0YX0pO1xuICAgICAgICB9LFxuICAgICAgICBvblJvd0Rlc2VsZWN0OiAocm93LCBlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSBwdWxsQWxsV2l0aCh0aGlzLml0ZW1zLCBbcm93XSwgaXNFcXVhbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdnZXRTZWxlY3RlZFJvd3MnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdyb3dkZXNlbGVjdCcsIHskZGF0YTogcm93LCAkZXZlbnQ6IGUsIHJvd30pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dEYXRhID0gdGhpcy5hZGRSb3dJbmRleChyb3cpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5nZXRDb25maWd1cmVkU3RhdGUoKSAhPT0gJ25vbmUnICYmIHVuc3VwcG9ydGVkU3RhdGVQZXJzaXN0ZW5jZVR5cGVzLmluZGV4T2YodGhpcy5uYXZpZ2F0aW9uKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9iaiA9IHtwYWdlOiB0aGlzLmRhdGFOYXZpZ2F0b3IuZG4uY3VycmVudFBhZ2UsIGluZGV4OiByb3dEYXRhLiRpbmRleCAtIDF9O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2lkZ2V0U3RhdGUgPSB0aGlzLnN0YXRlUGVyc2lzdGVuY2UuZ2V0V2lkZ2V0U3RhdGUodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0KHdpZGdldFN0YXRlLCAnc2VsZWN0ZWRJdGVtJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmUod2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtLCBmdW5jdGlvbiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc0VxdWFsKHNlbGVjdGVkSXRlbSwgb2JqKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2UucmVtb3ZlV2lkZ2V0U3RhdGUodGhpcywgJ3NlbGVjdGVkSXRlbScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2Uuc2V0V2lkZ2V0U3RhdGUodGhpcywgeydzZWxlY3RlZEl0ZW0nOiB3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1JldGFpbiBTdGF0ZSBoYW5kbGluZyBvbiBXaWRnZXQgJyArIHRoaXMubmFtZSArICcgaXMgbm90IHN1cHBvcnRlZCBmb3IgY3VycmVudCBwYWdpbmF0aW9uIHR5cGUuJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBjYWxsT25Sb3dEZXNlbGVjdEV2ZW50OiAocm93LCBlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ2dldFNlbGVjdGVkUm93cycpO1xuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdyb3dkZXNlbGVjdCcsIHskZGF0YTogcm93LCAkZXZlbnQ6IGUsIHJvd30pO1xuICAgICAgICB9LFxuICAgICAgICBjYWxsT25Sb3dDbGlja0V2ZW50OiAocm93LCBlKSA9PiB7XG4gICAgICAgICAgICAvLyBXTVMtMTg3NzQ6IElmIHdlIGludm9rZSBuYXZpZ2F0aW9uIGFjdGlvbiB2YXJpYWJsZSBvbiByb3djbGljayBjYWxsYmFjaywgdGhlIG5hdmlnYXRpb24gaXMgdHJpZ2dlcmluZyBvdXRzaWRlIGFuZ3VsYXIgem9uZSBzbyBhZGRpbmcgbmdab25lLnJ1blxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBDYWxsIHJvdyBjbGljayBvbmx5IGlmIGNsaWNrIGlzIHRyaWdnZXJlZCBieSB1c2VyXG4gICAgICAgICAgICAgICAgaWYgKGUgJiYgZS5oYXNPd25Qcm9wZXJ0eSgnb3JpZ2luYWxFdmVudCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd0RhdGEgPSB0aGlzLmFkZFJvd0luZGV4KHJvdyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygncm93Y2xpY2snLCB7JGRhdGE6IHJvd0RhdGEsICRldmVudDogZSwgcm93OiByb3dEYXRhfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGNsb3NlUG9wb3ZlcjogY2xvc2VQb3BvdmVyLFxuICAgICAgICBvbkNvbHVtblNlbGVjdDogKGNvbCwgZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnZ2V0U2VsZWN0ZWRDb2x1bW5zJyk7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2NvbHVtbnNlbGVjdCcsIHskZGF0YTogY29sLCAkZXZlbnQ6IGV9KTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Db2x1bW5EZXNlbGVjdDogKGNvbCwgZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnZ2V0U2VsZWN0ZWRDb2x1bW5zJyk7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2NvbHVtbmRlc2VsZWN0JywgeyRkYXRhOiBjb2wsICRldmVudDogZX0pO1xuICAgICAgICB9LFxuICAgICAgICBvbkhlYWRlckNsaWNrOiAoY29sLCBlKSA9PiB7XG4gICAgICAgICAgICAvLyBpZiBvblNvcnQgZnVuY3Rpb24gaXMgcmVnaXN0ZXJlZCBpbnZva2UgaXQgd2hlbiB0aGUgY29sdW1uIGhlYWRlciBpcyBjbGlja2VkXG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2hlYWRlcmNsaWNrJywgeyRldmVudDogZSwgJGRhdGE6IGNvbCwgY29sdW1uOiBjb2x9KTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Sb3dEZWxldGU6IChyb3csIGNhbmNlbFJvd0RlbGV0ZUNhbGxiYWNrLCBlLCBjYWxsQmFjaywgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZVJlY29yZChleHRlbmQoe30sIG9wdGlvbnMsIHtcbiAgICAgICAgICAgICAgICAgICAgcm93LFxuICAgICAgICAgICAgICAgICAgICAnY2FuY2VsUm93RGVsZXRlQ2FsbGJhY2snOiBjYW5jZWxSb3dEZWxldGVDYWxsYmFjayxcbiAgICAgICAgICAgICAgICAgICAgJ2V2dCc6IGUsXG4gICAgICAgICAgICAgICAgICAgICdjYWxsQmFjayc6IGNhbGxCYWNrXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUm93SW5zZXJ0OiAocm93LCBlLCBjYWxsQmFjaywgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRSZWNvcmQoZXh0ZW5kKHt9LCBvcHRpb25zLCB7cm93LCBldmVudDogZSwgJ2NhbGxCYWNrJzogY2FsbEJhY2t9KSk7XG4gICAgICAgIH0sXG4gICAgICAgIGJlZm9yZVJvd1VwZGF0ZTogKHJvdywgZXZlbnROYW1lPykgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2xpdmVUYWJsZVBhcmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xpdmVUYWJsZVBhcmVudC51cGRhdGVSb3cocm93LCBldmVudE5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcmV2RGF0YSA9IGdldENsb25lZE9iamVjdChyb3cpO1xuICAgICAgICB9LFxuICAgICAgICBhZnRlclJvd1VwZGF0ZTogKHJvdywgZSwgY2FsbEJhY2ssIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUmVjb3JkKGV4dGVuZCh7fSwgb3B0aW9ucywge3JvdywgJ3ByZXZEYXRhJzogdGhpcy5wcmV2RGF0YSwgJ2V2ZW50JzogZSwgJ2NhbGxCYWNrJzogY2FsbEJhY2t9KSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQmVmb3JlUm93VXBkYXRlOiAocm93LCBlLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdiZWZvcmVyb3d1cGRhdGUnLCB7JGV2ZW50OiBlLCAkZGF0YTogcm93LCByb3csIG9wdGlvbnM6IG9wdGlvbnN9KTtcbiAgICAgICAgfSxcbiAgICAgICAgb25CZWZvcmVSb3dJbnNlcnQ6IChyb3csIGUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZXJvd2luc2VydCcsIHskZXZlbnQ6IGUsICRkYXRhOiByb3csIHJvdywgb3B0aW9uczogb3B0aW9uc30pO1xuICAgICAgICB9LFxuICAgICAgICBvbkJlZm9yZVJvd0RlbGV0ZTogKHJvdywgZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcm93RGF0YSA9IHRoaXMuYWRkUm93SW5kZXgocm93KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZXJvd2RlbGV0ZScsIHskZXZlbnQ6IGUsIHJvdzogcm93RGF0YSwgb3B0aW9uczogb3B0aW9uc30pO1xuICAgICAgICB9LFxuICAgICAgICBvbkZvcm1SZW5kZXI6ICgkcm93LCBlLCBvcGVyYXRpb24sIGFsd2F5c05ld1JvdykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd2lkZ2V0ID0gYWx3YXlzTmV3Um93ID8gJ2lubGluZUluc3RhbmNlTmV3JyA6ICdpbmxpbmVJbnN0YW5jZSc7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1XaWRnZXRzID0ge307XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZERlZnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29sW3dpZGdldF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybVdpZGdldHNbY29sLmZpZWxkXSA9IGNvbFt3aWRnZXRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWRkaW5nIGZvcm13aWRnZXRzIHRvIHRoZSBjb250ZXh0IGZvciBpbmxpbmVpbnN0YW5jZSB3aWRnZXQgd2hlbiBmaWVsZERlZnMgd2VyZSByZWFkeVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbFt3aWRnZXRdLmNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xbd2lkZ2V0XS5jb250ZXh0LmZvcm1XaWRnZXRzID0gdGhpcy5mb3JtV2lkZ2V0cztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRPbkZpZWxkKG9wZXJhdGlvbiwgY29sLCB3aWRnZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdmb3JtcmVuZGVyJywgeyRldmVudDogZSwgZm9ybVdpZGdldHM6IHRoaXMuZm9ybVdpZGdldHMsICRvcGVyYXRpb246IG9wZXJhdGlvbn0pO1xuICAgICAgICAgICAgfSwgMjUwKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25CZWZvcmVGb3JtUmVuZGVyOiAocm93LCBlLCBvcGVyYXRpb24pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZWZvcm1yZW5kZXInLCB7JGV2ZW50OiBlLCByb3csICRvcGVyYXRpb246IG9wZXJhdGlvbn0pO1xuICAgICAgICB9LFxuICAgICAgICByZWdpc3RlclJvd05nQ2xhc3NXYXRjaGVyOiAocm93RGF0YSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5yb3duZ2NsYXNzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5nZXRDbG9uZWRSb3dPYmplY3Qocm93RGF0YSk7XG4gICAgICAgICAgICBjb25zdCB3YXRjaE5hbWUgPSBgJHt0aGlzLndpZGdldElkfV9yb3dOZ0NsYXNzXyR7aW5kZXh9YDtcbiAgICAgICAgICAgICR1bndhdGNoKHdhdGNoTmFtZSk7XG4gICAgICAgICAgICAvL1tUb2RvLUNTUF06IGdlbmVyYXRlIHdhdGNoZXIgZXhwciBpbiBwYWdlIGlmIHJvd25nY2xhc3MgYXR0ciBpcyBwcmVzZW50IGZvciB0YWJsZVxuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigkd2F0Y2godGhpcy5yb3duZ2NsYXNzLCB0aGlzLnZpZXdQYXJlbnQsIHtyb3d9LCAobnYsIG92KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ2FwcGx5Um93TmdDbGFzcycsIGdldENvbmRpdGlvbmFsQ2xhc3Nlcyhudiwgb3YpLCBpbmRleCk7XG4gICAgICAgICAgICB9LCB3YXRjaE5hbWUpKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVnaXN0ZXJDb2xOZ0NsYXNzV2F0Y2hlcjogKHJvd0RhdGEsIGNvbERlZiwgcm93SW5kZXgsIGNvbEluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNvbERlZlsnY29sLW5nLWNsYXNzJ10pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByb3cgPSB0aGlzLmdldENsb25lZFJvd09iamVjdChyb3dEYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IHdhdGNoTmFtZSA9IGAke3RoaXMud2lkZ2V0SWR9X2NvbE5nQ2xhc3NfJHtyb3dJbmRleH1fJHtjb2xJbmRleH1gO1xuICAgICAgICAgICAgJHVud2F0Y2god2F0Y2hOYW1lKTtcbiAgICAgICAgICAgIC8vW1RvZG8tQ1NQXTogZ2VuZXJhdGUgd2F0Y2hlciBleHByIGluIHBhZ2UgaWYgY29sLW5nLWNsYXNzIGF0dHIgaXMgcHJlc2VudCBmb3IgdGFibGVcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoJHdhdGNoKGNvbERlZlsnY29sLW5nLWNsYXNzJ10sIHRoaXMudmlld1BhcmVudCwge3Jvd30sIChudiwgb3YpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnYXBwbHlDb2xOZ0NsYXNzJywgZ2V0Q29uZGl0aW9uYWxDbGFzc2VzKG52LCBvdiksIHJvd0luZGV4LCBjb2xJbmRleCk7XG4gICAgICAgICAgICB9LCB3YXRjaE5hbWUpKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xlYXJDdXN0b21FeHByZXNzaW9uOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUV4cHJWaWV3UmVmLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUV4cHJDb21waWxlZFRsID0ge307XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUV4cHJDb21waWxlZFN1bW1hcnlUbCA9IHt9O1xuICAgICAgICB9LFxuICAgICAgICBjbGVhclJvd0RldGFpbEV4cHJlc3Npb246ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm93RGV0YWlsVmlld1JlZi5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5yb3dEZWZNYXAgPSB7fTtcbiAgICAgICAgICAgIHRoaXMucm93RGVmSW5zdGFuY2VzID0ge307XG4gICAgICAgIH0sXG4gICAgICAgIGdlbmVyYXRlQ3VzdG9tRXhwcmVzc2lvbnM6IChyb3dEYXRhLCBpbmRleCwgc3VtbWFyeVJvdz8pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuZ2V0Q2xvbmVkUm93T2JqZWN0KHJvd0RhdGEpO1xuICAgICAgICAgICAgY29uc3QgY29tcGlsZVRlbXBsYXRlID0gKHRtcGwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRtcGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjb2xEZWYgPSB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgICByb3csXG4gICAgICAgICAgICAgICAgICAgIGNvbERlZlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudHNUb0NvbnRleHQoY29udGV4dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VzdG9tRXhwclZpZXcgPSB0aGlzLmN1c3RvbUV4cHJWaWV3UmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0bXBsLCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICBjb25zdCByb290Tm9kZSA9IGN1c3RvbUV4cHJWaWV3LnJvb3ROb2Rlc1swXTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSByb290Tm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sLWlkZW50aWZpZXInKTtcbiAgICAgICAgICAgICAgICBleHRlbmQoY29sRGVmLCB0aGlzLmNvbHVtbnNbZmllbGROYW1lXSk7XG4gICAgICAgICAgICAgICAgaWYgKCFzdW1tYXJ5Um93KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tRXhwckNvbXBpbGVkVGxbZmllbGROYW1lICsgaW5kZXhdID0gcm9vdE5vZGU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21FeHByQ29tcGlsZWRTdW1tYXJ5VGxbZmllbGROYW1lICsgaW5kZXhdID0gcm9vdE5vZGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzZHluYW1pY3RhYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZERlZnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb21waWxlVGVtcGxhdGUoY29sLmN1c3RvbUV4cHJUbXBsKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGb3IgYWxsIHRoZSBjb2x1bW5zIGluc2lkZSB0aGUgdGFibGUsIGdlbmVyYXRlIHRoZSBjdXN0b20gZXhwcmVzc2lvblxuICAgICAgICAgICAgdGhpcy5jdXN0b21FeHByVG1wbC5mb3JFYWNoKGNvbXBpbGVUZW1wbGF0ZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2VuZXJhdGVSb3dFeHBhbnNpb25DZWxsOiAocm93RGF0YSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuZ2V0Q2xvbmVkUm93T2JqZWN0KHJvd0RhdGEpO1xuICAgICAgICAgICAgLy8gRm9yIGFsbCB0aGUgY29sdW1ucyBpbnNpZGUgdGhlIHRhYmxlLCBnZW5lcmF0ZSB0aGUgaW5saW5lIHdpZGdldFxuICAgICAgICAgICAgdGhpcy5yb3dFeHBhbnNpb25BY3Rpb25UbXBsLmZvckVhY2goKHRtcGwpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd0V4cGFuc2lvbkFjdGlvblRsW2luZGV4XSA9IHRoaXMucm93RXhwYW5zaW9uQWN0aW9uVmlld1JlZi5jcmVhdGVFbWJlZGRlZFZpZXcodG1wbCwge3Jvd30pLnJvb3ROb2RlcztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBnZXRSb3dFeHBhbnNpb25BY3Rpb246IChpbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm93RXhwYW5zaW9uQWN0aW9uVGxbaW5kZXhdO1xuICAgICAgICB9LFxuICAgICAgICBnZW5lcmF0ZVJvd0RldGFpbFZpZXc6ICgkZXZlbnQsIHJvd0RhdGEsIHJvd0lkLCAkdGFyZ2V0LCAkb3ZlcmxheSwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuZ2V0Q2xvbmVkUm93T2JqZWN0KHJvd0RhdGEpO1xuICAgICAgICAgICAgY29uc3Qgcm93RGVmID0gZ2V0Q2xvbmVkT2JqZWN0KHRoaXMucm93RGVmKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvd0luc3RhbmNlLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZXJvd2V4cGFuZCcsIHskZXZlbnQsICRkYXRhOiByb3dEZWYsIHJvd30pID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcm93RGVmLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFeHBhbmQgdGhlIHJvdyBkZXRhaWxcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICAvLyBSb3cgaXMgYWxyZWFkeSByZW5kZXJlZC4gUmV0dXJuIGhlcmVcbiAgICAgICAgICAgIGlmICh0aGlzLnJvd0RlZk1hcFtyb3dJZF0gJiYgdGhpcy5yb3dEZWZNYXBbcm93SWRdLmNvbnRlbnQgPT09IHJvd0RlZi5jb250ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3dJbnN0YW5jZS5pbnZva2VFdmVudENhbGxiYWNrKCdyb3dleHBhbmQnLCB7JGV2ZW50LCByb3csICRkYXRhOiB0aGlzLnJvd0RlZkluc3RhbmNlc1tyb3dJZF19KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJvd0RlZk1hcFtyb3dJZF0gPSByb3dEZWY7XG4gICAgICAgICAgICAkdGFyZ2V0LmVtcHR5KCk7XG4gICAgICAgICAgICAkdGFyZ2V0LmhpZGUoKTtcbiAgICAgICAgICAgICRvdmVybGF5LnNob3coKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICAgICAgcm93RGVmLFxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXJMb2FkOiAod2lkZ2V0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3ZlcmxheS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldC5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dEZWZJbnN0YW5jZXNbcm93SWRdID0gd2lkZ2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm93SW5zdGFuY2UuaW52b2tlRXZlbnRDYWxsYmFjaygncm93ZXhwYW5kJywgeyRldmVudCwgcm93LCAkZGF0YTogd2lkZ2V0fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgICAgICAgICB9fTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3ROb2RlID0gdGhpcy5yb3dEZXRhaWxWaWV3UmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnJvd0V4cGFuc2lvblRtcGwsIGNvbnRleHQpLnJvb3ROb2Rlc1swXTtcbiAgICAgICAgICAgICR0YXJnZXRbMF0uYXBwZW5kQ2hpbGQocm9vdE5vZGUpO1xuICAgICAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgICAgICB9LFxuICAgICAgICBvbkJlZm9yZVJvd0NvbGxhcHNlOiAoJGV2ZW50LCByb3csIHJvd0lkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3dJbnN0YW5jZS5pbnZva2VFdmVudENhbGxiYWNrKCdiZWZvcmVyb3djb2xsYXBzZScsIHskZXZlbnQsIHJvdywgJGRhdGE6IHRoaXMucm93RGVmSW5zdGFuY2VzW3Jvd0lkXX0pO1xuICAgICAgICB9LFxuICAgICAgICBvblJvd0NvbGxhcHNlOiAoJGV2ZW50LCByb3cpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm93SW5zdGFuY2UuaW52b2tlRXZlbnRDYWxsYmFjaygncm93Y29sbGFwc2UnLCB7JGV2ZW50LCByb3d9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0Q3VzdG9tRXhwcmVzc2lvbjogKGZpZWxkTmFtZSwgaW5kZXgsIHN1bW1hcnlSb3c/KSA9PiB7XG4gICAgICAgICAgICBsZXQgY3VzdG9tRXhwcmVzc2lvbjtcbiAgICAgICAgICAgIGlmICghc3VtbWFyeVJvdykge1xuICAgICAgICAgICAgICAgIGN1c3RvbUV4cHJlc3Npb24gPSB0aGlzLmN1c3RvbUV4cHJDb21waWxlZFRsW2ZpZWxkTmFtZSArIGluZGV4XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VzdG9tRXhwcmVzc2lvbiA9IHRoaXMuY3VzdG9tRXhwckNvbXBpbGVkU3VtbWFyeVRsW2ZpZWxkTmFtZSArIGluZGV4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjdXN0b21FeHByZXNzaW9uIHx8ICcnO1xuICAgICAgICB9LFxuICAgICAgICBjbGVhclJvd0FjdGlvbnM6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm93QWN0aW9uc1ZpZXdSZWYuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMucm93QWN0aW9uc0NvbXBpbGVkVGwgPSB7fTtcbiAgICAgICAgICAgIHRoaXMucm93RXhwYW5zaW9uQWN0aW9uVmlld1JlZi5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5yb3dFeHBhbnNpb25BY3Rpb25UbCA9IHt9O1xuICAgICAgICB9LFxuICAgICAgICBnZW5lcmF0ZVJvd0FjdGlvbnM6IChyb3dEYXRhLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5nZXRDbG9uZWRSb3dPYmplY3Qocm93RGF0YSk7XG4gICAgICAgICAgICB0aGlzLnJvd0FjdGlvbnNDb21waWxlZFRsW2luZGV4XSA9IFtdO1xuICAgICAgICAgICAgLy8gRm9yIGFsbCB0aGUgY29sdW1ucyBpbnNpZGUgdGhlIHRhYmxlLCBnZW5lcmF0ZSB0aGUgaW5saW5lIHdpZGdldFxuICAgICAgICAgICAgdGhpcy5yb3dBY3Rpb25UbXBsLmZvckVhY2goKHRtcGwpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd0FjdGlvbnNDb21waWxlZFRsW2luZGV4XS5wdXNoKC4uLnRoaXMucm93QWN0aW9uc1ZpZXdSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRtcGwsIHtyb3d9KS5yb290Tm9kZXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldFJvd0FjdGlvbjogKGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3dBY3Rpb25zQ29tcGlsZWRUbFtpbmRleF07XG4gICAgICAgIH0sXG4gICAgICAgIGdlbmVyYXRlSW5saW5lRWRpdFJvdzogKHJvd0RhdGEsIGFsd2F5c05ld1JvdykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5nZXRDbG9uZWRSb3dPYmplY3Qocm93RGF0YSk7XG4gICAgICAgICAgICBpZiAoYWx3YXlzTmV3Um93KSB7XG4gICAgICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIHZpZXcgY29udGFpbmVyIHJlZlxuICAgICAgICAgICAgICAgIHRoaXMuaW5saW5lRWRpdE5ld1ZpZXdSZWYuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlubGluZU5ld0NvbXBsaWVkVGwgPSB7fTtcbiAgICAgICAgICAgICAgICAvLyBGb3IgYWxsIHRoZSBjb2x1bW5zIGluc2lkZSB0aGUgdGFibGUsIGdlbmVyYXRlIHRoZSBpbmxpbmUgd2lkZ2V0XG4gICAgICAgICAgICAgICAgdGhpcy5pbmxpbmVXaWRnZXROZXdUbXBsLmZvckVhY2godG1wbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZE5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3csXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRDb250cm9sOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmdmb3JtLmNvbnRyb2xzW2ZpZWxkTmFtZSArICdfbmV3J10gfHwge307XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VmFsaWRhdGlvbk1lc3NhZ2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5zW2ZpZWxkTmFtZV0gJiYgdGhpcy5jb2x1bW5zW2ZpZWxkTmFtZV0udmFsaWRhdGlvbm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UGVuZGluZ1NwaW5uZXJTdGF0dXNOZXc6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5zW2ZpZWxkTmFtZV0gJiYgdGhpcy5jb2x1bW5zW2ZpZWxkTmFtZV0uc2hvd1BlbmRpbmdTcGlubmVyTmV3O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb290Tm9kZSA9IHRoaXMuaW5saW5lRWRpdE5ld1ZpZXdSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRtcGwsIGNvbnRleHQpLnJvb3ROb2Rlc1swXTtcbiAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lID0gcm9vdE5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLWNvbC1pZGVudGlmaWVyJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5saW5lTmV3Q29tcGxpZWRUbFtmaWVsZE5hbWVdID0gcm9vdE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhckZvcm0odHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIHZpZXcgY29udGFpbmVyIHJlZlxuICAgICAgICAgICAgdGhpcy5pbmxpbmVFZGl0Vmlld1JlZi5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5pbmxpbmVDb21wbGllZFRsID0ge307XG4gICAgICAgICAgICB0aGlzLmNsZWFyRm9ybSgpO1xuICAgICAgICAgICAgLy8gRm9yIGFsbCB0aGUgY29sdW1ucyBpbnNpZGUgdGhlIHRhYmxlLCBnZW5lcmF0ZSB0aGUgaW5saW5lIHdpZGdldFxuICAgICAgICAgICAgdGhpcy5pbmxpbmVXaWRnZXRUbXBsLmZvckVhY2godG1wbCA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGZpZWxkTmFtZTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgICByb3csXG4gICAgICAgICAgICAgICAgICAgIGdldENvbnRyb2w6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5nZm9ybS5jb250cm9sc1tmaWVsZE5hbWVdIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBnZXRWYWxpZGF0aW9uTWVzc2FnZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uc1tmaWVsZE5hbWVdICYmIHRoaXMuY29sdW1uc1tmaWVsZE5hbWVdLnZhbGlkYXRpb25tZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBnZXRQZW5kaW5nU3Bpbm5lclN0YXR1czogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uc1tmaWVsZE5hbWVdICYmIHRoaXMuY29sdW1uc1tmaWVsZE5hbWVdLnNob3dQZW5kaW5nU3Bpbm5lcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvb3ROb2RlID0gdGhpcy5pbmxpbmVFZGl0Vmlld1JlZi5jcmVhdGVFbWJlZGRlZFZpZXcodG1wbCwgY29udGV4dCkucm9vdE5vZGVzWzBdO1xuICAgICAgICAgICAgICAgIGZpZWxkTmFtZSA9IHJvb3ROb2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1jb2wtaWRlbnRpZmllcicpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5saW5lQ29tcGxpZWRUbFtmaWVsZE5hbWVdID0gcm9vdE5vZGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0SW5saW5lRWRpdFdpZGdldDogKGZpZWxkTmFtZSwgdmFsdWUsIGFsd2F5c05ld1JvdykgPT4ge1xuICAgICAgICAgICAgaWYgKGFsd2F5c05ld1Jvdykge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuc2V0RmllbGRWYWx1ZShmaWVsZE5hbWUgKyAnX25ldycsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbmxpbmVOZXdDb21wbGllZFRsW2ZpZWxkTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnNldEZpZWxkVmFsdWUoZmllbGROYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbmxpbmVDb21wbGllZFRsW2ZpZWxkTmFtZV07XG4gICAgICAgIH0sXG4gICAgICAgIHNldEZpZWxkVmFsdWU6IChmaWVsZE5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ2Zvcm0uY29udHJvbHMgJiYgdGhpcy5uZ2Zvcm0uY29udHJvbHNbZmllbGROYW1lXTtcbiAgICAgICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdldEZpZWxkVmFsdWU6IGZpZWxkTmFtZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ2Zvcm0uY29udHJvbHMgJiYgdGhpcy5uZ2Zvcm0uY29udHJvbHNbZmllbGROYW1lXTtcbiAgICAgICAgICAgIHJldHVybiBjb250cm9sICYmIGNvbnRyb2wudmFsdWU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gZnVuY3Rpb24gdG8gYWRkIGxvYWQgbW9yZSBidXR0b24gdG8gdGFibGVcbiAgICAgICAgYWRkTG9hZE1vcmVCdG46ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnYWRkTG9hZE1vcmVCdG4nLCB0aGlzLm9uZGVtYW5kbWVzc2FnZSwgdGhpcy5sb2FkaW5nZGF0YW1zZywgKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zZXRJc05leHRQYWdlRGF0YSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuc2V0SXNEYXRhVXBkYXRlZEJ5VXNlcihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy5tb2RlID09PSAndmlld2xlc3MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhTmF2aWdhdG9yLm5hdmlnYXRlUGFnZSgnZmlyc3QnLCAkZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMubW9kZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFOYXZpZ2F0b3IubmF2aWdhdGVQYWdlKCduZXh0JywgJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGF0YUxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHRoaXMuaW5mU2Nyb2xsKTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gZnVuY3Rpb24gdG8gYmluZCBzY3JvbGwgZXZlbnRcbiAgICAgICAgYmluZFNjcm9sbEV2dDogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2dyaWREYXRhICYmIHRoaXMuX2dyaWREYXRhLmxlbmd0aCAmJiB0aGlzLmluZlNjcm9sbCkge1xuICAgICAgICAgICAgICAgIC8vIHNtb290aHNjcm9sbCBldmVudHMgd2lsbCBiZSBiaW5kZWQuXG4gICAgICAgICAgICAgICAgLy8gQWRkZWQgdGltZW91dCBhcyB0aGUgdGFibGUgaHRtbCBpcyByZW5kZXJlZCBhdCBydW50aW1lXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UuYmluZFNjcm9sbEV2dCh0aGlzLCAndGJvZHknLCBERUJPVU5DRV9USU1FUy5QQUdJTkFUSU9OX0RFQk9VTkNFX1RJTUUpO1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnZW5lcmF0ZUZpbHRlclJvdzogKCkgPT4ge1xuICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIHZpZXcgY29udGFpbmVyIHJlZlxuICAgICAgICAgICAgdGhpcy5maWx0ZXJWaWV3UmVmLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLnJvd0ZpbHRlckNvbXBsaWVkVGwgPSB7fTtcbiAgICAgICAgICAgIC8vIEZvciBhbGwgdGhlIGNvbHVtbnMgaW5zaWRlIHRoZSB0YWJsZSwgZ2VuZXJhdGUgdGhlIGNvbXBpbGVkIGZpbHRlciB0ZW1wbGF0ZVxuICAgICAgICAgICAgdGhpcy5maWx0ZXJUbXBsLmZvckVhY2goKHRtcGwpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb290Tm9kZSA9IHRoaXMuZmlsdGVyVmlld1JlZi5jcmVhdGVFbWJlZGRlZFZpZXcodG1wbCwge1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VGbjogdGhpcy5vblJvd0ZpbHRlckNoYW5nZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgICAgICBpc0Rpc2FibGVkOiAoZmllbGROYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbXB0eU1hdGNoTW9kZXMuaW5kZXhPZih0aGlzLnJvd0ZpbHRlcltmaWVsZE5hbWVdICYmIHRoaXMucm93RmlsdGVyW2ZpZWxkTmFtZV0ubWF0Y2hNb2RlKSA+IC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkucm9vdE5vZGVzWzBdO1xuICAgICAgICAgICAgICAgIHRoaXMucm93RmlsdGVyQ29tcGxpZWRUbFtyb290Tm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sLWlkZW50aWZpZXInKV0gPSByb290Tm9kZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBnZXRGaWx0ZXJXaWRnZXQ6IChmaWVsZE5hbWUpID0+IHtcbiAgICAgICAgICAgIC8vIE1vdmUgdGhlIGdlbmVyYXRlZCBmaWx0ZXIgdGVtcGxhdGUgdG8gdGhlIGZpbHRlciByb3dcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvd0ZpbHRlckNvbXBsaWVkVGxbZmllbGROYW1lXTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0R3JpZEVkaXRNb2RlOiAodmFsKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNHcmlkRWRpdE1vZGUgPSB2YWw7XG4gICAgICAgICAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldEdyaWRTdGF0ZTogKHZhbCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB2YWwgPT09ICdsb2FkaW5nJztcbiAgICAgICAgfSxcbiAgICAgICAgLypcbiAgICAgICAgICAgIHNldCBhY3Rpb25Sb3dJbmRleCBhbmQgYWN0aW9uUm93UGFnZSB2YWx1ZXNcbiAgICAgICAgICAgIGFjdGlvblJvd0luZGV4IHdpbGwgaGF2ZSB0aGUgcm93IGluZGV4IGluIHRoZSBkYXRhc2V0IG9uIHdoaWNoIGVkaXQvZGVsZXRlIG9wZXJhdGlvbiBpcyBiZWluZyBwZXJmb3JtZWRcbiAgICAgICAgICAgIGFjdGlvblJvd1BhZ2Ugd2lsbCBoYXZlIHBhZ2UgbnVtYmVyIGluIHdoaWNoIHRoZSBhY3Rpb24gcm93IGluZGV4IGlzIHByZXNlbnRcbiAgICAgICAgICovXG4gICAgICAgIHNldEFjdGlvblJvd0luZGV4OiAodmFsKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy5pc05hdlR5cGVTY3JvbGxPck9uZGVtYW5kKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGlvblJvd0luZGV4ID0gcGFyc2VJbnQodmFsKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdhY3Rpb25Sb3dJbmRleCcsIHRoaXMuYWN0aW9uUm93SW5kZXgpO1xuICAgICAgICAgICAgICAgIGlmICghaXNOYU4odGhpcy5hY3Rpb25Sb3dJbmRleCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25Sb3dQYWdlID0gTWF0aC5mbG9vcih0aGlzLmFjdGlvblJvd0luZGV4IC8gdGhpcy5wYWdlc2l6ZSkgKyAxO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdhY3Rpb25Sb3dQYWdlJywgdGhpcy5hY3Rpb25Sb3dQYWdlIHx8IHRoaXMuZ3JpZE9wdGlvbnMuYWN0aW9uUm93UGFnZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjbGVhckFjdGlvblJvd0luZGV4OiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNSb3dEZWxldGVkICYmICh0aGlzLmluZlNjcm9sbCB8fCB0aGlzLm9uRGVtYW5kTG9hZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQWN0aW9uUm93VmFycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBub0NoYW5nZXNEZXRlY3RlZDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVNZXNzYWdlKHRydWUsICdpbmZvJywgJ05vIENoYW5nZXMgRGV0ZWN0ZWQnLCAnJyk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIEZ1bmN0aW9uIHRvIHJlZHJhdyB0aGUgd2lkZ2V0cyBvbiByZXNpemUgb2YgY29sdW1uc1xuICAgICAgICByZWRyYXdXaWRnZXRzOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmcy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgICAgICAgICAgdHJpZ2dlckZuKGNvbC5pbmxpbmVJbnN0YW5jZSAmJiBjb2wuaW5saW5lSW5zdGFuY2UucmVkcmF3KTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRm4oY29sLmlubGluZUluc3RhbmNlTmV3ICYmIGNvbC5pbmxpbmVJbnN0YW5jZU5ldy5yZWRyYXcpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJGbihjb2wuZmlsdGVySW5zdGFuY2UgJiYgY29sLmZpbHRlckluc3RhbmNlLnJlZHJhdyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgc2VhcmNoSGFuZGxlcjogdGhpcy5zZWFyY2hTb3J0SGFuZGxlci5iaW5kKHRoaXMpLFxuICAgICAgICBzb3J0SGFuZGxlcjogdGhpcy5zZWFyY2hTb3J0SGFuZGxlci5iaW5kKHRoaXMpLFxuICAgICAgICB0aW1lb3V0Q2FsbDogKGZuLCBkZWxheSkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dChmbiwgZGVsYXkpO1xuICAgICAgICB9LFxuICAgICAgICBydW5Jbk5nWm9uZTogZm4gPT4ge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKGZuKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2FmZUFwcGx5OiAoKSA9PiB7XG4gICAgICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldFRvdWNoZWQ6IChuYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdHJsID0gdGhpcy5uZ2Zvcm0uY29udHJvbHNbbmFtZV07XG4gICAgICAgICAgICBpZiAoY3RybCkge1xuICAgICAgICAgICAgICAgIGN0cmwubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjbGVhckZvcm06IHRoaXMuY2xlYXJGb3JtLmJpbmQodGhpcyksXG4gICAgICAgIGNhbGxMb2FkSW5saW5lV2lkZ2V0RGF0YTogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5mdWxsRmllbGREZWZzLmZvckVhY2goY29sID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQoY29sLmlzRGF0YVNldEJvdW5kKSkge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRm4oY29sLmxvYWRJbmxpbmVXaWRnZXREYXRhICYmIGNvbC5sb2FkSW5saW5lV2lkZ2V0RGF0YS5iaW5kKGNvbCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyBGdW5jdGlvbiB0byBhcHBseSB2YWxpZGF0b3JzIHRvIElubGluZSBmb3JtIGNvbnRyb2xzXG4gICAgICAgIGFwcGx5VmFsaWRhdGlvbnM6IChjb2wsIGFsd2F5c05ld1JvdykgPT4ge1xuICAgICAgICAgICAgaWYgKGFsd2F5c05ld1Jvdykge1xuICAgICAgICAgICAgICAgIHRyaWdnZXJGbihjb2wuYXBwbHlOZXdSb3dWYWxpZGF0aW9ucyAmJiBjb2wuYXBwbHlOZXdSb3dWYWxpZGF0aW9ucy5iaW5kKGNvbCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRm4oY29sLmFwcGx5VmFsaWRhdGlvbnMgJiYgY29sLmFwcGx5VmFsaWRhdGlvbnMuYmluZChjb2wpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLy8gRnVuY3Rpb24gdG8gcmVtb3ZlIHZhbGlkYXRvcnMgYW5kIHNldCBmb3JtIHN0YXRlIHRvIHVudG91Y2hlZCBmb3IgaW5saW5lIGZvcm0gY29udHJvbFxuICAgICAgICByZW1vdmVWYWxpZGF0aW9uczogKGFsd2F5c05ld1JvdykgPT4ge1xuICAgICAgICAgICAgdGhpcy5mdWxsRmllbGREZWZzLmZvckVhY2goY29sID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWNvbC5yZWFkb25seSAmJiBjb2wuYmluZGluZyAhPT0gJ3Jvd09wZXJhdGlvbnMnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhbHdheXNOZXdSb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJGbihjb2wucmVtb3ZlTmV3Um93VmFsaWRhdGlvbnMgJiYgY29sLnJlbW92ZU5ld1Jvd1ZhbGlkYXRpb25zLmJpbmQoY29sKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRm4oY29sLnJlbW92ZVZhbGlkYXRpb25zICYmIGNvbC5yZW1vdmVWYWxpZGF0aW9ucy5iaW5kKGNvbCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBfZ3JpZERhdGE7XG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWRJdGVtc0V4aXN0ID0gZmFsc2U7XG4gICAgc2V0IGdyaWREYXRhKG5ld1ZhbHVlKSB7XG4gICAgICAgIHRoaXMuaXNEYXRhTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjQwMTJdOiBoaWRlIG5vIGRhdGFmb3VuZCBtc2cgd2hlbiB2YXJpYWJsZUluZmxpZ2h0IGlzIHRydWUgYW5kIGRhdGFzZXQgaXMgZW1wdHlcbiAgICAgICAgaWYgKHRoaXMudmFyaWFibGVJbmZsaWdodCAmJiBpc0VtcHR5KG5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFyaWFibGVJbmZsaWdodCA9IGZhbHNlO1xuICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjQxMDhdOiBDaGFuZ2UgdGhlIHN0YXR1cyB0byByZWFkeSBvciBub2RhdGEgZm91bmQgd2hlbiB2YXJpYWJsZUluZmxpZ2h0IGlzIGZhbHNlKGFmdGVyIGdldHRpbmcgdGhlIGRhdGEpXG4gICAgICAgIGlmIChuZXdWYWx1ZSAmJiAobmV3VmFsdWUubGVuZ3RoKSA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldFN0YXR1cycsICdub2RhdGEnLCB0aGlzLm5vZGF0YW1lc3NhZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldFN0YXR1cycsICdyZWFkeScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLmlzTmF2VHlwZVNjcm9sbE9yT25kZW1hbmQoKSkge1xuICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBfZ3JpZERhdGEgZmllbGQgd2l0aCB0aGUgbmV4dCBzZXQgb2YgaXRlbXMgYW5kIG1vZGlmeSB0aGUgY3VycmVudCBwYWdlXG4gICAgICAgICAgICBbdGhpcy5fZ3JpZERhdGEsIHRoaXMuY3VycmVudFBhZ2VdID0gdGhpcy5wYWdpbmF0aW9uU2VydmljZS51cGRhdGVGaWVsZHNPblBhZ2luYXRpb24odGhpcywgbmV3VmFsdWUpO1xuXG4gICAgICAgICAgICAvLyBXaGVuIGVkaXQgYWN0aW9uIGlzIHBlcmZvcm1lZCBvbiBwcmV2aW91cyBwYWdlLCB1cGRhdGUgdGhlIF9ncmlkRGF0YSBmaWVsZCB3aXRoIHRoZSBtb2RpZmllZCByb3cgZGF0YVxuICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMubGFzdEFjdGlvblBlcmZvcm1lZCA9PT0gdGhpcy5ncmlkT3B0aW9ucy5BQ1RJT05TLkVESVQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dJbmRleCA9IGZsb29yKHRoaXMuYWN0aW9uUm93SW5kZXggJSB0aGlzLnBhZ2VzaXplKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9ncmlkRGF0YS5zcGxpY2UodGhpcy5hY3Rpb25Sb3dJbmRleCwgMSAsIG5ld1ZhbHVlW3Jvd0luZGV4XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdpc0xhc3RQYWdlJywgISEodGhpcy5kYXRhTmF2aWdhdG9yLmlzRGlzYWJsZU5leHQpKTtcbiAgICAgICAgICAgIC8vIEluIGNhc2Ugb2Ygb24gZGVtYW5kIHBhZ2luYXRpb24sIGNyZWF0ZSB0aGUgbG9hZCBtb3JlIGJ1dHRvbiBvbmx5IG9uY2UgYW5kIHNob3cgdGhlIGJ1dHRvbiB1bnRpbCBuZXh0IHBhZ2UgaXMgbm90IGRpc2FibGVkXG4gICAgICAgICAgICBpZiAoIXRoaXMuJGVsZW1lbnQuZmluZCgnLm9uLWRlbWFuZC1kYXRhZ3JpZCcpLmxlbmd0aCAmJiAhdGhpcy5kYXRhTmF2aWdhdG9yLmlzRGlzYWJsZU5leHQgJiYgdGhpcy5vbkRlbWFuZExvYWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmFkZExvYWRNb3JlQnRuKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCh0aGlzLl9ncmlkRGF0YSAmJiB0aGlzLl9ncmlkRGF0YS5sZW5ndGgpICYmICh0aGlzLmRhdGFOYXZpZ2F0b3IuaXNEaXNhYmxlTmV4dCB8fCAhdGhpcy5pc0RhdGFMb2FkaW5nKSkge1xuICAgICAgICAgICAgICAgIC8vIHdoZW4gdGhlIG5leHQgcGFnZSBpcyBkaXNhYmxlZCBvciB3aGVuIHRoZSBkYXRhIGlzIG5vdCBsb2FkaW5nIHJlbW92ZSB0aGUgbG9hZGluZy9sb2FkIG1vcmUgYnV0dG9uIGFjY29yZGluZ2x5XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ2hpZGVMb2FkaW5nSW5kaWNhdG9yJywgdGhpcy5kYXRhTmF2aWdhdG9yLmlzRGlzYWJsZU5leHQsIHRoaXMuaW5mU2Nyb2xsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2dyaWREYXRhID0gbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHN0YXJ0Um93SW5kZXggPSAwO1xuICAgICAgICBsZXQgZ3JpZE9wdGlvbnM7XG5cbiAgICAgICAgdGhpcy5fb25DaGFuZ2UodGhpcy5fZ3JpZERhdGEpO1xuICAgICAgICB0aGlzLl9vblRvdWNoZWQoKTtcblxuICAgICAgICBpZiAoaXNEZWZpbmVkKG5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5iaW5kU2Nyb2xsRXZ0KCk7XG5cbiAgICAgICAgICAgIC8qU2V0dGluZyB0aGUgc2VyaWFsIG5vJ3Mgb25seSB3aGVuIHNob3cgbmF2aWdhdGlvbiBpcyBlbmFibGVkIGFuZCBkYXRhIG5hdmlnYXRvciBpcyBjb21waWxlZFxuICAgICAgICAgICAgIGFuZCBpdHMgY3VycmVudCBwYWdlIGlzIHNldCBwcm9wZXJseSovXG4gICAgICAgICAgICBpZiAodGhpcy5pc05hdmlnYXRpb25FbmFibGVkKCkgJiYgdGhpcy5kYXRhTmF2aWdhdG9yLmRuLmN1cnJlbnRQYWdlKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRSb3dJbmRleCA9ICgodGhpcy5kYXRhTmF2aWdhdG9yLmRuLmN1cnJlbnRQYWdlIC0gMSkgKiAodGhpcy5kYXRhTmF2aWdhdG9yLm1heFJlc3VsdHMgfHwgMSkpICsgMTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdzdGFydFJvd0luZGV4Jywgc3RhcnRSb3dJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBJZiBjb2xEZWZzIGFyZSBhdmFpbGFibGUsIGJ1dCBub3QgYWxyZWFkeSBzZXQgb24gdGhlIGRhdGFncmlkLCB0aGVuIHNldCB0aGVtLlxuICAgICAgICAgICAgICogVGhpcyB3aWxsIGhhcHBlbiB3aGlsZSBzd2l0Y2hpbmcgZnJvbSBtYXJrdXAgdG8gZGVzaWduIHRhYi4gKi9cbiAgICAgICAgICAgIGdyaWRPcHRpb25zID0gdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ2dldE9wdGlvbnMnKTtcblxuICAgICAgICAgICAgaWYgKCFncmlkT3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFncmlkT3B0aW9ucy5jb2xEZWZzLmxlbmd0aCAmJiB0aGlzLmZpZWxkRGVmcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdjb2xEZWZzJywgZ2V0Q2xvbmVkT2JqZWN0KHRoaXMuZmllbGREZWZzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiBkYXRhIGFuZCBjb2xEZWZzIGFyZSBwcmVzZW50LCBjYWxsIG9uIGJlZm9yZSBkYXRhIHJlbmRlciBldmVudFxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzZHluYW1pY3RhYmxlICYmICFpc0VtcHR5KG5ld1ZhbHVlKSAmJiBncmlkT3B0aW9ucy5jb2xEZWZzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnYmVmb3JlZGF0YXJlbmRlcicsIHskZGF0YTogdGhpcy5fZ3JpZERhdGEsICRjb2x1bW5zOiB0aGlzLmNvbHVtbnMsIGRhdGE6IHRoaXMuX2dyaWREYXRhLCBjb2x1bW5zOiB0aGlzLmNvbHVtbnN9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ2RhdGEnLCBnZXRDbG9uZWRPYmplY3QodGhpcy5fZ3JpZERhdGEpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBncmlkRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dyaWREYXRhIHx8IFtdO1xuICAgIH1cblxuICAgIGdldCBzZWxlY3RlZGl0ZW0oKSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q2xvbmVkT2JqZWN0KHRoaXMuaXRlbXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VtcHR5KHRoaXMuaXRlbXMpKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldENsb25lZE9iamVjdCh0aGlzLml0ZW1zWzBdKTtcbiAgICB9XG5cbiAgICBzZXQgc2VsZWN0ZWRpdGVtKHZhbCkge1xuICAgICAgICAvLyBTZWxlY3QgdGhlIHJvd3MgaW4gdGhlIHRhYmxlIGJhc2VkIG9uIHRoZSBuZXcgc2VsZWN0ZWQgaXRlbXMgcGFzc2VkXG4gICAgICAgIHRoaXMuaXRlbXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NlbGVjdFJvd3MnLCB2YWwpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleXByZXNzJywgWyckZXZlbnQnXSkgb25LZXlQcmVzcyAoJGV2ZW50OiBhbnkpIHtcbiAgICAgICAgaWYgKCRldmVudC53aGljaCA9PT0gMTMpIHtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnZW50ZXJrZXlwcmVzcycsIHskZXZlbnQsICRkYXRhOiB0aGlzLmdyaWREYXRhfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGluajogSW5qZWN0b3IsXG4gICAgICAgIHB1YmxpYyBmYjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgYXBwOiBBcHAsXG4gICAgICAgIHByaXZhdGUgZHluYW1pY0NvbXBvbmVudFByb3ZpZGVyOiBEeW5hbWljQ29tcG9uZW50UmVmUHJvdmlkZXIsXG4gICAgICAgIHByaXZhdGUgc3RhdGVQZXJzaXN0ZW5jZTogU3RhdGVQZXJzaXN0ZW5jZSxcbiAgICAgICAgcHJpdmF0ZSBwYWdpbmF0aW9uU2VydmljZTogUGFnaW5hdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdmlld3BvcnQ6IFZpZXdwb3J0LFxuICAgICAgICBAT3B0aW9uYWwoKSBwdWJsaWMgcGFyZW50TGlzdDogTGlzdENvbXBvbmVudCxcbiAgICAgICAgQEF0dHJpYnV0ZSgnZGF0YXNldC5iaW5kJykgcHVibGljIGJpbmRkYXRhc2V0LFxuICAgICAgICBAQXR0cmlidXRlKCdkYXRhc291cmNlLmJpbmQnKSBwdWJsaWMgYmluZGRhdGFzb3VyY2UsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ3JlYWRvbmx5Z3JpZCcpIHB1YmxpYyByZWFkb25seWdyaWQsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgdHJ1c3RBc1BpcGU6IFRydXN0QXNQaXBlLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzKTtcblxuICAgICAgICB0aGlzLm5nZm9ybSA9IGZiLmdyb3VwKHt9KTtcbiAgICAgICAgdGhpcy5hZGRFdmVudHNUb0NvbnRleHQodGhpcy5jb250ZXh0KTtcbiAgICAgICAgY29uc3QgbGlzdGVuZXJzVG9SZW1vdmUgPSBbXG4gICAgICAgICAgICAvLyBVcGRhdGVzIHBhZ2luYXRpb24sIGZpbHRlciwgc29ydCBldGMgb3B0aW9ucyBmb3Igc2VydmljZSBhbmQgY3J1ZCB2YXJpYWJsZXNcbiAgICAgICAgICAgIHRoaXMuYXBwLnN1YnNjcmliZSgnY2hlY2stc3RhdGUtcGVyc2lzdGVuY2Utb3B0aW9ucycsIG9wdGlvbnMgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhU291cmNlTmFtZSA9IGdldCh0aGlzLmRhdGFzb3VyY2UsICduYW1lJyk7XG4gICAgICAgICAgICAgICAgLy8gaW4gUHJlZmFicywgdGhpcy5kYXRhc291cmNlIGlzIG5vdCByZXNvbHZlZCBhdCB0aGUgdGltZSBvZiB2YXJpYWJsZSBpbnZvY2F0aW9uLCBzbyBhZGRpdGlvbmFsIGNoZWNrIGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgIGlmICghZGF0YVNvdXJjZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZU5hbWUgPSBleHRyYWN0RGF0YVNvdXJjZU5hbWUodGhpcy5iaW5kZGF0YXNvdXJjZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChnZXQob3B0aW9ucywgJ3ZhcmlhYmxlLm5hbWUnKSAhPT0gZGF0YVNvdXJjZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGFnZUxvYWQgJiYgdGhpcy5nZXRDb25maWd1cmVkU3RhdGUoKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhZ2VMb2FkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZGdldFN0YXRlID0gdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLmdldFdpZGdldFN0YXRlKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAod2lkZ2V0U3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLmhhbmRsZVN0YXRlUGFyYW1zKHdpZGdldFN0YXRlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfSAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdzZWxlY3RGaXJzdFJvdycsIHRoaXMuZ3JpZGZpcnN0cm93c2VsZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICAvLyBTaG93IGxvYWRpbmcgc3RhdHVzIGJhc2VkIG9uIHRoZSB2YXJpYWJsZSBsaWZlIGN5Y2xlXG4gICAgICAgICAgICB0aGlzLmFwcC5zdWJzY3JpYmUoJ3RvZ2dsZS12YXJpYWJsZS1zdGF0ZScsIG9wdGlvbnMgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFzb3VyY2UgJiYgdGhpcy5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uSVNfQVBJX0FXQVJFKSAmJiBpc0RhdGFTb3VyY2VFcXVhbChvcHRpb25zLnZhcmlhYmxlLCB0aGlzLmRhdGFzb3VyY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wYWdlTG9hZCAmJiB0aGlzLmdldENvbmZpZ3VyZWRTdGF0ZSgpICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhZ2VMb2FkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3aWRnZXRTdGF0ZSA9IHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5nZXRXaWRnZXRTdGF0ZSh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWRnZXRTdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLmhhbmRsZVN0YXRlUGFyYW1zKHdpZGdldFN0YXRlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhR3JpZE9wdGlvbignc2VsZWN0Rmlyc3RSb3cnLCB0aGlzLmdyaWRmaXJzdHJvd3NlbGVjdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaXNEZWZpbmVkKHRoaXMudmFyaWFibGVJbmZsaWdodCkgPyB0aGlzLmRlYm91bmNlZEhhbmRsZUxvYWRpbmcob3B0aW9ucykgOiB0aGlzLmhhbmRsZUxvYWRpbmcob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIHRoaXMuYXBwLnN1YnNjcmliZSgnc2V0dXAtY3VkLWxpc3RlbmVyJywgcGFyYW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgIT09IHBhcmFtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5faXNEZXBlbmRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQ2hhbmdlJFxuICAgICAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjUwKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSh0aGlzLnRyaWdnZXJXTUV2ZW50LmJpbmQodGhpcykpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcblxuICAgICAgICBsaXN0ZW5lcnNUb1JlbW92ZS5mb3JFYWNoKCBsID0+IHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIobCkgKTtcblxuICAgICAgICB0aGlzLmRlbGV0ZW9rdGV4dCA9IHRoaXMuYXBwTG9jYWxlLkxBQkVMX09LO1xuICAgICAgICB0aGlzLmRlbGV0ZWNhbmNlbHRleHQgPSB0aGlzLmFwcExvY2FsZS5MQUJFTF9DQU5DRUw7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyQ29udGVudEluaXQoKTtcbiAgICAgICAgdGhpcy5oZWFkZXJDb25maWcgPSB0aGlzLmhlYWRlckNvbmZpZy5maWx0ZXIodGhpcy5maWx0ZXJFbXB0eVZhbHVlcy5iaW5kKHRoaXMpKTtcbiAgICAgICAgcmVtb3ZlKHRoaXMuZmllbGREZWZzLCBmID0+IGYgPT09IHVuZGVmaW5lZCk7XG4gICAgICAgIGNvbnN0IHJ1bk1vZGVJbml0aWFsUHJvcGVydGllcyA9IHtcbiAgICAgICAgICAgIHNob3dyb3dpbmRleDogJ3Nob3dSb3dJbmRleCcsXG4gICAgICAgICAgICBtdWx0aXNlbGVjdDogJ211bHRpc2VsZWN0JyxcbiAgICAgICAgICAgIHJhZGlvc2VsZWN0OiAnc2hvd1JhZGlvQ29sdW1uJyxcbiAgICAgICAgICAgIGZpbHRlcm51bGxyZWNvcmRzOiAnZmlsdGVyTnVsbFJlY29yZHMnLFxuICAgICAgICAgICAgZW5hYmxlc29ydDogJ2VuYWJsZVNvcnQnLFxuICAgICAgICAgICAgc2hvd2hlYWRlcjogJ3Nob3dIZWFkZXInLFxuICAgICAgICAgICAgZW5hYmxlY29sdW1uc2VsZWN0aW9uOiAnZW5hYmxlQ29sdW1uU2VsZWN0aW9uJyxcbiAgICAgICAgICAgIHNob3duZXdyb3c6ICdzaG93TmV3Um93JyxcbiAgICAgICAgICAgIGdyaWRmaXJzdHJvd3NlbGVjdDogJ3NlbGVjdEZpcnN0Um93J1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLl9saXZlVGFibGVQYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNQYXJ0T2ZMaXZlR3JpZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yZWFkb25seWdyaWQgfHwgIXRoaXMuZWRpdG1vZGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlYWRvbmx5Z3JpZCA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0bW9kZSA9ICcnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1BhcnRPZkxpdmVHcmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdG1vZGUgPSB0aGlzLmlzUGFydE9mTGl2ZUdyaWQuZm9ybWxheW91dCA9PT0gJ2lubGluZScgPyBFRElUX01PREUuRk9STSA6IEVESVRfTU9ERS5ESUFMT0c7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0bW9kZSA9IHRoaXMucmVhZG9ubHlncmlkID8gRURJVF9NT0RFLklOTElORSA6ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuY29sRGVmcyA9IHRoaXMuZnVsbEZpZWxkRGVmcztcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5yb3dBY3Rpb25zID0gdGhpcy5yb3dBY3Rpb25zO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmhlYWRlckNvbmZpZyA9IHRoaXMuaGVhZGVyQ29uZmlnO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnJvd0NsYXNzID0gdGhpcy5yb3djbGFzcztcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5lZGl0bW9kZSA9IHRoaXMuZWRpdG1vZGU7XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuZm9ybVBvc2l0aW9uID0gdGhpcy5mb3JtcG9zaXRpb247XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuZmlsdGVybW9kZSA9IHRoaXMuZmlsdGVybW9kZTtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5maWx0ZXJvbmtleXByZXNzID0gdGhpcy5maWx0ZXJvbmtleXByZXNzO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnNlYXJjaExhYmVsID0gdGhpcy5zZWFyY2hsYWJlbDtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5pc01vYmlsZSA9IGlzTW9iaWxlKCk7XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMubmFtZSA9IHRoaXMubmFtZTtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zZWN1cml0eVV0aWxzLnBpcGVUcmFuc2Zvcm0gPSB0aGlzLnRydXN0QXNQaXBlO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLm5hdmlnYXRpb24gPSB0aGlzLm5hdmlnYXRpb247XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuaXNkeW5hbWljdGFibGUgPSB0aGlzLmlzZHluYW1pY3RhYmxlO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnNob3d2aWV3bGVzc2J1dHRvbiA9IHRoaXMuc2hvd3ZpZXdsZXNzYnV0dG9uO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLm9uZGVtYW5kbWVzc2FnZSA9IHRoaXMub25kZW1hbmRtZXNzYWdlO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnZpZXdsZXNzbWVzc2FnZSA9IHRoaXMudmlld2xlc3NtZXNzYWdlO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmxvYWRpbmdkYXRhbXNnID0gdGhpcy5sb2FkaW5nZGF0YW1zZztcblxuICAgICAgICAvLyBXaGVuIGxvYWRvbmRlbWFuZCBwcm9wZXJ0eSBpcyBlbmFibGVkKGRlZmVybG9hZD1cInRydWVcIikgYW5kIHNob3cgaXMgdHJ1ZSwgb25seSB0aGUgY29sdW1uIHRpdGxlcyBvZiB0aGUgZGF0YXRhYmxlIGFyZSByZW5kZXJlZCwgdGhlIGRhdGEoYm9keSBvZiB0aGUgZGF0YXRhYmxlKSBpcyBub3QgYXQgYWxsIHJlbmRlcmVkLlxuICAgICAgICAvLyBCZWNhdXNlIHRoZSBncmlkZGF0YSBpcyBzZXR0aW5nIGJlZm9yZSB0aGUgZGF0YXRhYmxlIGRvbSBpcyByZW5kZXJlZCBidXQgd2UgYXJlIHNlbmRpbmcgZW1wdHkgZGF0YSB0byB0aGUgZGF0YXRhYmxlLlxuICAgICAgICBpZiAoIWlzRW1wdHkodGhpcy5ncmlkRGF0YSkpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuZGF0YSA9IGdldENsb25lZE9iamVjdCh0aGlzLmdyaWREYXRhKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLm1lc3NhZ2VzID0ge1xuICAgICAgICAgICAgJ3NlbGVjdEZpZWxkJzogdGhpcy5hcHBMb2NhbGUuTUVTU0FHRV9TRUxFQ1RfRklFTERcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kYXRhZ3JpZEVsZW1lbnQgPSAkKHRoaXMuX3RhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgICB0aGlzLmdyaWRFbGVtZW50ID0gdGhpcy4kZWxlbWVudDtcbiAgICAgICAgdGhpcy4kZWxlbWVudC5jc3Moeydwb3NpdGlvbic6ICdyZWxhdGl2ZSd9KTtcblxuICAgICAgICBmb3JFYWNoKHJ1bk1vZGVJbml0aWFsUHJvcGVydGllcywgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0RlZmluZWQodGhpc1trZXldKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnNbdmFsdWVdID0gKHRoaXNba2V5XSA9PT0gJ3RydWUnIHx8IHRoaXNba2V5XSA9PT0gdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5zdGF0ZWhhbmRsZXIgIT09ICdub25lJykge1xuICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9uc1snc2VsZWN0Rmlyc3RSb3cnXSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZW5kZXJPcGVyYXRpb25Db2x1bW5zKCk7XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuY29sRGVmcyA9IHRoaXMuZmllbGREZWZzO1xuXG4gICAgICAgIHRoaXMuZGF0YWdyaWRFbGVtZW50LmRhdGF0YWJsZSh0aGlzLmdyaWRPcHRpb25zKTtcbiAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldFN0YXR1cycsICdsb2FkaW5nJywgdGhpcy5sb2FkaW5nZGF0YW1zZyk7XG4gICAgICAgIC8vIGlmKHRoaXMuZ3JpZE9wdGlvbnMuZGF0YS5sZW5ndGggfHwgdGhpcy52YXJpYWJsZUluZmxpZ2h0KSB7XG4gICAgICAgIC8vICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnc2V0U3RhdHVzJywgJ2xvYWRpbmcnLCB0aGlzLmxvYWRpbmdkYXRhbXNnKTtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRTdGF0dXMnLCAnbm9kYXRhJywgdGhpcy5ub2RhdGFtZXNzYWdlKTtcbiAgICAgICAgLy8gfVxuXG4gICAgICAgIHRoaXMuYXBwbHlQcm9wcy5mb3JFYWNoKGFyZ3MgPT4gdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoLi4uYXJncykpO1xuXG4gICAgICAgIGlmICh0aGlzLmVkaXRtb2RlID09PSBFRElUX01PREUuUVVJQ0tfRURJVCkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrQmluZCA9IHRoaXMuX2RvY3VtZW50Q2xpY2tCaW5kLmJpbmQodGhpcyk7XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZG9jdW1lbnRDbGlja0JpbmQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgZ2V0Q29uZmlndXJlZFN0YXRlKCkge1xuICAgICAgICBjb25zdCBtb2RlID0gdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLmNvbXB1dGVNb2RlKHRoaXMuc3RhdGVoYW5kbGVyKTtcbiAgICAgICAgcmV0dXJuIG1vZGUgJiYgbW9kZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlU3RhdGVQYXJhbXMod2lkZ2V0U3RhdGUsIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKGdldCh3aWRnZXRTdGF0ZSwgJ3NlbGVjdGVkSXRlbScpKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zRXhpc3QgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIG9wdGlvbnMub3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCB7fTtcbiAgICAgICAgaWYgKGdldCh3aWRnZXRTdGF0ZSwgJ3BhZ2luYXRpb24nKSkge1xuICAgICAgICAgICAgb3B0aW9ucy5vcHRpb25zLnBhZ2UgPSB3aWRnZXRTdGF0ZS5wYWdpbmF0aW9uO1xuICAgICAgICAgICAgaWYgKGdldCh3aWRnZXRTdGF0ZSwgJ3NvcnQnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc29ydFN0YXRlSGFuZGxlcih3aWRnZXRTdGF0ZSk7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5vcHRpb25zLm9yZGVyQnkgPSBnZXQod2lkZ2V0U3RhdGUsICdzb3J0LmZpZWxkJykgKyAnICcgKyBnZXQod2lkZ2V0U3RhdGUsICdzb3J0LmRpcmVjdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGdldCh3aWRnZXRTdGF0ZSwgJ3NlYXJjaCcpKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCggKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0YXRlSGFuZGxlcih3aWRnZXRTdGF0ZSk7XG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgICAgICBvcHRpb25zLm9wdGlvbnMuZmlsdGVyRmllbGRzID0gdGhpcy5nZXRGaWx0ZXJGaWVsZHMod2lkZ2V0U3RhdGUuc2VhcmNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbnMub3B0aW9ucy5wYWdlID0gMTtcbiAgICAgICAgICAgIGlmIChnZXQod2lkZ2V0U3RhdGUsICdzZWFyY2gnKSkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZUhhbmRsZXIod2lkZ2V0U3RhdGUpO1xuICAgICAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5vcHRpb25zLmZpbHRlckZpZWxkcyA9IHRoaXMuZ2V0RmlsdGVyRmllbGRzKHdpZGdldFN0YXRlLnNlYXJjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0KHdpZGdldFN0YXRlLCAnc29ydCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zb3J0U3RhdGVIYW5kbGVyKHdpZGdldFN0YXRlKTtcbiAgICAgICAgICAgICAgICBvcHRpb25zLm9wdGlvbnMub3JkZXJCeSA9IGdldCh3aWRnZXRTdGF0ZSwgJ3NvcnQuZmllbGQnKSArICcgJyArIGdldCh3aWRnZXRTdGF0ZSwgJ3NvcnQuZGlyZWN0aW9uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmlnZ2VyV01FdmVudChuZXdWYWwpIHtcbiAgICAgICAgaWYgKHRoaXMuZWRpdG1vZGUgPT09ICdkaWFsb2cnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgJGludm9rZVdhdGNoZXJzKHRydWUpO1xuICAgICAgICB0aGlzLmFwcC5ub3RpZnkoJ3dtLWV2ZW50Jywge2V2ZW50TmFtZTogJ3NlbGVjdGVkSXRlbUNoYW5nZScsIHdpZGdldE5hbWU6IHRoaXMubmFtZSwgcm93OiBuZXdWYWwsIHRhYmxlOiB0aGlzfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0U3RhdGVIYW5kbGVyKHdpZGdldFN0YXRlKSB7XG4gICAgICAgIGNvbnN0ICRncmlkRWxlbWVudCA9IHRoaXMuZGF0YWdyaWRFbGVtZW50O1xuICAgICAgICBjb25zdCAkc29ydEljb24gPSAkZ3JpZEVsZW1lbnQuZmluZCgndGhbZGF0YS1jb2wtZmllbGQ9XCInICsgZ2V0KHdpZGdldFN0YXRlLCAnc29ydC5maWVsZCcpICsgJ1wiXSAuc29ydC1pY29uJyk7XG4gICAgICAgIGlmIChnZXQod2lkZ2V0U3RhdGUsICdzb3J0LmRpcmVjdGlvbicpID09PSAnYXNjJyAmJiAkc29ydEljb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAkc29ydEljb24uYWRkQ2xhc3MoJ2FzYyB3aSB3aS1sb25nLWFycm93LXVwJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZ2V0KHdpZGdldFN0YXRlLCAnc29ydC5kaXJlY3Rpb24nKSA9PT0gJ2Rlc2MnICYmICRzb3J0SWNvbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICRzb3J0SWNvbi5hZGRDbGFzcygnZGVzYyB3aSB3aS1sb25nLWFycm93LWRvd24nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2VhcmNoU3RhdGVIYW5kbGVyKHdpZGdldFN0YXRlKSB7XG4gICAgICAgIGlmIChpc0FycmF5KHdpZGdldFN0YXRlLnNlYXJjaCkpIHtcbiAgICAgICAgICAgIGZvckVhY2god2lkZ2V0U3RhdGUuc2VhcmNoLCAoZmlsdGVyT2JqKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucm93RmlsdGVyW2ZpbHRlck9iai5maWVsZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dGaWx0ZXJbZmlsdGVyT2JqLmZpZWxkXS52YWx1ZSA9IGZpbHRlck9iai52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dGaWx0ZXJbZmlsdGVyT2JqLmZpZWxkXS5tYXRjaE1vZGUgPSBmaWx0ZXJPYmoubWF0Y2hNb2RlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd0ZpbHRlcltmaWx0ZXJPYmouZmllbGRdLnR5cGUgPSBmaWx0ZXJPYmoudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcy5yb3dGaWx0ZXJDb21wbGllZFRsW2ZpbHRlck9iai5maWVsZF0pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsID0gZmlsdGVyT2JqLnR5cGUgPT09ICdpbnRlZ2VyJyA/IHBhcnNlSW50KGZpbHRlck9iai52YWx1ZSkgOiBmaWx0ZXJPYmoudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMucm93RmlsdGVyQ29tcGxpZWRUbFtmaWx0ZXJPYmouZmllbGRdKS5maW5kKCdpbnB1dCcpLnZhbChmaWx0ZXJPYmoudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCAkZ3JpZEVsZW1lbnQgPSB0aGlzLmRhdGFncmlkRWxlbWVudDtcbiAgICAgICAgICAgICRncmlkRWxlbWVudC5maW5kKCdbZGF0YS1lbGVtZW50PVwiZGdTZWFyY2hUZXh0XCJdJykudmFsKHdpZGdldFN0YXRlLnNlYXJjaC52YWx1ZSk7XG4gICAgICAgICAgICAkZ3JpZEVsZW1lbnQuZmluZCgnW2RhdGEtZWxlbWVudD1cImRnRmlsdGVyVmFsdWVcIl0nKS52YWwod2lkZ2V0U3RhdGUuc2VhcmNoLmZpZWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHJlbW92ZXMgZW1wdHkgdmFsdWVzIGluIGhlYWRlckNvbmZpZyBhcnJheS5cbiAgICBmaWx0ZXJFbXB0eVZhbHVlcyhpdGVtKSB7XG4gICAgICAgIGlmIChpdGVtLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIGl0ZW0uY29sdW1ucyA9IGl0ZW0uY29sdW1ucy5maWx0ZXIodGhpcy5maWx0ZXJFbXB0eVZhbHVlcy5iaW5kKHRoaXMpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBDb21wYXJlcyB0aGUgcHJldkZpbHRlckNyaXRlcmlhIFJ1bGVzIHdpdGggdGhlIG5ldyBydWxlc1xuICAgIGNvbXBhcmVGaWx0ZXJFeHByZXNzaW9ucyhwcmV2RmlsdGVycywgbmV3RmlsdGVycykge1xuICAgICAgICByZXR1cm4gISEoKHByZXZGaWx0ZXJzLmxlbmd0aCA9PT0gbmV3RmlsdGVycy5sZW5ndGgpICYmIChpc0VxdWFsKHByZXZGaWx0ZXJzLCBuZXdGaWx0ZXJzKSkpO1xuICAgIH1cblxuICAgIC8vIFNldCB0aGUgdGFibGUgbGFzdEFjdGlvblBlcmZvcm1lZCB0byBGaWx0ZXIgQ3JpdGVyaWEgYW5kIG1haW50YWluIHRoZSBwcmV2RmlsdGVyRXhwcmVzc2lvblxuICAgIHNldExhc3RBY3Rpb25Ub0ZpbHRlckNyaXRlcmlhKCkge1xuICAgICAgICB0aGlzLnByZXZGaWx0ZXJFeHByZXNzaW9uID0gZ2V0KHRoaXMuZGF0YXNvdXJjZSwgJ2ZpbHRlckV4cHJlc3Npb25zLnJ1bGVzJykgPyBnZXRDbG9uZWRPYmplY3QodGhpcy5kYXRhc291cmNlLmZpbHRlckV4cHJlc3Npb25zLnJ1bGVzKSA6IGdldENsb25lZE9iamVjdChbXS5jb25jYXQodGhpcy5kYXRhc291cmNlLmRhdGFCaW5kaW5nKSk7XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuc2V0TGFzdEFjdGlvblBlcmZvcm1lZCh0aGlzLmdyaWRPcHRpb25zLkFDVElPTlMuRklMVEVSX0NSSVRFUklBKTtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zZXRJc1NlYXJjaFRyaWdlcnJlZCh0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIHRhYmxlIGxhc3RBY3Rpb25QZXJmb3JtZWQgdG8gRGF0YXNldCB1cGRhdGUgYW5kIHNldCBpc0RhdGFzZXRVcGRhdGVkIHRvIHRydWVcbiAgICAvLyBGaXggZm9yIFtXTVMtMjIzMjNdLXRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGRhdGFzZXQgaXMgYmVpbmcgdXBkYXRlZFxuICAgIHNldExhc3RBY3Rpb25Ub0RhdGFzZXRVcGRhdGUoKSB7XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuc2V0TGFzdEFjdGlvblBlcmZvcm1lZCh0aGlzLmdyaWRPcHRpb25zLkFDVElPTlMuREFUQVNFVF9VUERBVEUpO1xuICAgICAgICAvLyAgRml4IGZvciBbV01TLTIzMjYzXTogcmVzZXQgY3VycmVudFBhZ2UgdG8gMSBhcyBkYXRhc2V0IGlzIGJlaW5nIGNoYW5nZWRcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zZXRDdXJyZW50UGFnZSgxKTtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zZXRJc0RhdGFzZXRVcGRhdGVkKHRydWUpO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgbGFzdEFjdGlvblBlcmZvcm1lZCB0byBGaWx0ZXJfQ3JpdGVyaWEsIHdoZW4gdGhlcmUgaXMgY2hhbmdlIGluIHRoZSBWYXJpYWJsZSBmaWx0ZXIgY3JpdGVyaWEgcnVsZXNcbiAgICBjaGVja0lmVmFyRmlsdGVyc0FwcGxpZWQoKSB7XG4gICAgICAgIGlmICghaXNFbXB0eShnZXQodGhpcy5kYXRhc291cmNlLCAnZmlsdGVyRXhwcmVzc2lvbnMucnVsZXMnKSkgfHwgIWlzRW1wdHkoZ2V0KHRoaXMuZGF0YXNvdXJjZSwgJ2RhdGFCaW5kaW5nJykpKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RmlsdGVyRXhwciA9IGdldCh0aGlzLmRhdGFzb3VyY2UsICdmaWx0ZXJFeHByZXNzaW9ucy5ydWxlcycpID8gdGhpcy5kYXRhc291cmNlLmZpbHRlckV4cHJlc3Npb25zLnJ1bGVzIDogW10uY29uY2F0KHRoaXMuZGF0YXNvdXJjZS5kYXRhQmluZGluZyk7XG4gICAgICAgICAgICBjb25zdCBpc0VxdWFsID0gdGhpcy5jb21wYXJlRmlsdGVyRXhwcmVzc2lvbnModGhpcy5wcmV2RmlsdGVyRXhwcmVzc2lvbiwgY3VycmVudEZpbHRlckV4cHIpO1xuICAgICAgICAgICAgaWYgKCFpc0VxdWFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRMYXN0QWN0aW9uVG9GaWx0ZXJDcml0ZXJpYSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgd2F0Y2hWYXJpYWJsZURhdGFTZXQobmV3VmFsKSB7XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIC8vIENoZWNrIGZvciBWYXJpYWJsZSBmaWx0ZXJzIGlmIGFwcGxpZWRcbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMuaXNOYXZUeXBlU2Nyb2xsT3JPbmRlbWFuZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrSWZWYXJGaWx0ZXJzQXBwbGllZCgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFN0YXRlIGhhbmRsaW5nIGZvciBzdGF0aWMgdmFyaWFibGVzXG4gICAgICAgIGlmIChnZXQodGhpcy5kYXRhc291cmNlLCAnY2F0ZWdvcnknKSA9PT0gJ3dtLlZhcmlhYmxlJyAmJiB0aGlzLl9wYWdlTG9hZCAmJiB0aGlzLmdldENvbmZpZ3VyZWRTdGF0ZSgpICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpZGdldFN0YXRlID0gdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLmdldFdpZGdldFN0YXRlKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5fcGFnZUxvYWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChnZXQod2lkZ2V0U3RhdGUsICdzZWxlY3RlZEl0ZW0nKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXNFeGlzdCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ3NlbGVjdEZpcnN0Um93JywgdGhpcy5ncmlkZmlyc3Ryb3dzZWxlY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGdldCh3aWRnZXRTdGF0ZSwgJ3NlYXJjaCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdGF0ZUhhbmRsZXIod2lkZ2V0U3RhdGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU29ydEhhbmRsZXIod2lkZ2V0U3RhdGUuc2VhcmNoLCB1bmRlZmluZWQsICdzZWFyY2gnLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChnZXQod2lkZ2V0U3RhdGUsICdzb3J0JykpIHtcbiAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU29ydEhhbmRsZXIod2lkZ2V0U3RhdGUuc29ydCwgdW5kZWZpbmVkLCAnc29ydCcsIHRydWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc29ydFN0YXRlSGFuZGxlcih3aWRnZXRTdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0KHdpZGdldFN0YXRlLCAncGFnaW5hdGlvbicpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhTmF2aWdhdG9yLnBhZ2VDaGFuZ2VkKHtwYWdlOiB3aWRnZXRTdGF0ZS5wYWdpbmF0aW9ufSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWZ0ZXIgdGhlIHNldHRpbmcgdGhlIHdhdGNoIG9uIG5hdmlnYXRvciwgZGF0YXNldCBpcyB0cmlnZ2VyZWQgd2l0aCB1bmRlZmluZWQuIEluIHRoaXMgY2FzZSwgcmV0dXJuIGhlcmUuXG4gICAgICAgIGlmICh0aGlzLmRhdGFOYXZpZ2F0b3JXYXRjaGVkICYmIGlzVW5kZWZpbmVkKG5ld1ZhbCkgJiYgdGhpcy5fX2Z1bGxEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdmFyaWFibGUgaXMgaW4gbG9hZGluZyBzdGF0ZSwgc2hvdyBsb2FkaW5nIGljb25cbiAgICAgICAgaWYgKHRoaXMudmFyaWFibGVJbmZsaWdodCAmJiAhdGhpcy5pbmZTY3JvbGwpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRTdGF0dXMnLCAnbG9hZGluZycsIHRoaXMubG9hZGluZ2RhdGFtc2cpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0ID0gZ2V0VmFsaWRKU09OKG5ld1ZhbCk7XG5cbiAgICAgICAgLy8gQ29udmVydGluZyBuZXd2YWwgdG8gb2JqZWN0IGlmIGl0IGlzIGFuIE9iamVjdCB0aGF0IGNvbWVzIGFzIGEgc3RyaW5nIFwie1wiZGF0YVwiIDogMX1cIlxuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICBuZXdWYWwgPSByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzb3J0RXhwID0gdGhpcy5nZXRTb3J0RXhwcigpO1xuICAgICAgICBjb25zdCBzb3J0RXhwQXJyID0gc29ydEV4cC5zcGxpdCgnICcpO1xuICAgICAgICBpZiAoc29ydEV4cCAmJiBzb3J0RXhwQXJyLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5zb3J0SW5mbyA9IHtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gOiBzb3J0RXhwQXJyWzFdLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAgc29ydEV4cEFyclswXVxuXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLypSZXR1cm4gaWYgZGF0YSBpcyBpbnZhbGlkLiovXG4gICAgICAgIGlmICghdGhpcy5pc0RhdGFWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB2YWx1ZSBpcyBlbXB0eSBvciBpbiBzdHVkaW8gbW9kZSwgZG9udCBlbmFibGUgdGhlIG5hdmlnYXRpb25cbiAgICAgICAgaWYgKG5ld1ZhbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd25hdmlnYXRpb24gJiYgIXRoaXMuZGF0YU5hdmlnYXRvcldhdGNoZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZVBhZ2VOYXZpZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNldFBhZ2VOYXZpZ2F0aW9uKCk7XG4gICAgICAgICAgICAvLyBJZiB0aGUgZGF0YXNldCBpcyB1bmRlZmluZWQgb3IgZW1wdHkgb3IgdGFibGUgaXMgYm91bmQgdG8gc3RhdGljIHZhcmlhYmxlIHRoZW4gc2V0IHZhcmlhYmxlSW5mbGlnaHQgdG8gZmFsc2UgaW5vcmRlciB0byB1cGRhdGUgdGhlIHN0YXR1c1xuICAgICAgICAgICAgaWYgKG5ld1ZhbCA9PT0gJycgfHwgbmV3VmFsID09PSB1bmRlZmluZWQgfHwgZ2V0KHRoaXMuZGF0YXNvdXJjZSwgJ2NhdGVnb3J5JykgPT09ICd3bS5WYXJpYWJsZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhcmlhYmxlSW5mbGlnaHQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qZm9yIHJ1biBtb2RlLCBkaXNhYmxpbmcgdGhlIGxvYWRlciBhbmQgc2hvd2luZyBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaWYgZGF0YXNldCBpcyBub3QgdmFsaWQqL1xuICAgICAgICAgICAgaWYgKCF0aGlzLnZhcmlhYmxlSW5mbGlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnc2V0U3RhdHVzJywgJ25vZGF0YScsIHRoaXMubm9kYXRhbWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldERhdGFHcmlkT3B0aW9uKCdzZWxlY3RGaXJzdFJvdycsIHRoaXMuZ3JpZGZpcnN0cm93c2VsZWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc05hdmlnYXRpb25FbmFibGVkKCkgJiYgbmV3VmFsKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrRmlsdGVyc0FwcGxpZWQodGhpcy5nZXRTb3J0RXhwcigpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKCFpc09iamVjdChuZXdWYWwpIHx8IG5ld1ZhbCA9PT0gJycgfHwgKG5ld1ZhbCAmJiBuZXdWYWwuZGF0YVZhbHVlID09PSAnJykpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy52YXJpYWJsZUluZmxpZ2h0KSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdmFyaWFibGUgaGFzIGZpbmlzaGVkIGxvYWRpbmcgYW5kIHJlc3VsdFNldCBpcyBlbXB0eSwgZW5kZXIgZW1wdHkgZGF0YVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0R3JpZERhdGEoW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdWYWwpIHtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVHcmlkRGF0YShuZXdWYWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5kb2N1bWVudENsaWNrQmluZCk7XG4gICAgICAgIGlmICh0aGlzLm5hdmlnYXRvclJlc3VsdFdhdGNoKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRvclJlc3VsdFdhdGNoLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdG9yTWF4UmVzdWx0V2F0Y2gpIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdG9yTWF4UmVzdWx0V2F0Y2gudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIGFkZFJvd0luZGV4KHJvdykge1xuICAgICAgICBjb25zdCByb3dEYXRhID0gZ2V0Q2xvbmVkT2JqZWN0KHJvdyk7XG4gICAgICAgIGNvbnN0IHJvd0luZGV4ID0gaW5kZXhPZih0aGlzLmdyaWRPcHRpb25zLmRhdGEsIHJvdyk7XG4gICAgICAgIGlmIChyb3dJbmRleCA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiByb3c7XG4gICAgICAgIH1cbiAgICAgICAgcm93RGF0YS4kaW5kZXggPSByb3dJbmRleCArIDE7XG4gICAgICAgIHJvd0RhdGEuJGlzRmlyc3QgPSByb3dEYXRhLiRpbmRleCA9PT0gMTtcbiAgICAgICAgcm93RGF0YS4kaXNMYXN0ID0gdGhpcy5ncmlkRGF0YS5sZW5ndGggPT09IHJvd0RhdGEuJGluZGV4O1xuICAgICAgICByZXR1cm4gcm93RGF0YTtcbiAgICB9XG5cbiAgICBhZGRFdmVudHNUb0NvbnRleHQoY29udGV4dCkge1xuICAgICAgICBjb250ZXh0LmFkZE5ld1JvdyA9ICgpID0+IHRoaXMuYWRkTmV3Um93KCk7XG4gICAgICAgIGNvbnRleHQuZGVsZXRlUm93ID0gKCkgPT4gdGhpcy5kZWxldGVSb3coKTtcbiAgICAgICAgY29udGV4dC5lZGl0Um93ID0gKCkgPT4gdGhpcy5lZGl0Um93KCk7XG4gICAgfVxuXG4gICAgZXhlY3V0ZShvcGVyYXRpb24sIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKFtEYXRhU291cmNlLk9wZXJhdGlvbi5JU19BUElfQVdBUkUsIERhdGFTb3VyY2UuT3BlcmF0aW9uLklTX1BBR0VBQkxFLCBEYXRhU291cmNlLk9wZXJhdGlvbi5TVVBQT1JUU19TRVJWRVJfRklMVEVSXS5pbmNsdWRlcyhvcGVyYXRpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YXNvdXJjZSA/IHRoaXMuZGF0YXNvdXJjZS5leGVjdXRlKG9wZXJhdGlvbiwgb3B0aW9ucykgOiB7fTtcbiAgICB9XG5cbiAgICBpc05hdmlnYXRpb25FbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zaG93bmF2aWdhdGlvbiAmJiB0aGlzLmRhdGFOYXZpZ2F0b3IgJiYgdGhpcy5kYXRhTmF2aWdhdG9yV2F0Y2hlZDtcbiAgICB9XG5cbiAgICBnZXRDbG9uZWRSb3dPYmplY3Qocm93RGF0YSkge1xuICAgICAgICBjb25zdCByb3cgPSBnZXRDbG9uZWRPYmplY3Qocm93RGF0YSk7XG4gICAgICAgIHJvdy5nZXRQcm9wZXJ0eSA9IGZpZWxkID0+IHtcbiAgICAgICAgICAgIHJldHVybiBnZXQocm93LCBmaWVsZCk7XG4gICAgICAgIH07XG4gICAgICAgIHJvdy4kaXNGaXJzdCA9IHJvdy4kaW5kZXggPT09IDE7XG4gICAgICAgIHJvdy4kaXNMYXN0ID0gdGhpcy5ncmlkRGF0YS5sZW5ndGggPT09IHJvdy4kaW5kZXg7XG4gICAgICAgIGRlbGV0ZSByb3cuJCRpbmRleDtcbiAgICAgICAgZGVsZXRlIHJvdy4kJHBrO1xuICAgICAgICByZXR1cm4gcm93O1xuICAgIH1cblxuICAgIGhhbmRsZUxvYWRpbmcoZGF0YSkge1xuICAgICAgICB0aGlzLnZhcmlhYmxlSW5mbGlnaHQgPSBkYXRhLmFjdGl2ZTtcbiAgICAgICAgLy8gYmFzZWQgb24gdGhlIGFjdGl2ZSBzdGF0ZSBhbmQgcmVzcG9uc2UgdG9nZ2xpbmcgdGhlICdsb2FkaW5nIGRhdGEuLi4nIGFuZCAnbm8gZGF0YSBmb3VuZCcgbWVzc2FnZXMuXG4gICAgICAgIGlmIChkYXRhLmFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldFN0YXR1cycsICdsb2FkaW5nJywgdGhpcy5sb2FkaW5nZGF0YW1zZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiBncmlkIGlzIGluIGVkaXQgbW9kZSBvciBncmlkIGhhcyBkYXRhLCBkb250IHNob3cgdGhlIG5vIGRhdGEgbWVzc2FnZVxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzR3JpZEVkaXRNb2RlICYmIGlzRW1wdHkodGhpcy5kYXRhc2V0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRTdGF0dXMnLCAnbm9kYXRhJywgdGhpcy5ub2RhdGFtZXNzYWdlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldFN0YXR1cycsICdyZWFkeScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRPbkZpZWxkKG9wZXJhdGlvbiwgY29sRGVmLCB3aWRnZXRUeXBlKSB7XG4gICAgICAgIGlmIChvcGVyYXRpb24gIT09ICduZXcnICYmIGNvbERlZlsncHJpbWFyeS1rZXknXSAmJiBjb2xEZWYuZ2VuZXJhdG9yID09PSAnYXNzaWduZWQnICYmICFjb2xEZWZbJ3JlbGF0ZWQtZW50aXR5LW5hbWUnXSAmJiAhY29sRGVmLnBlcmlvZCkge1xuICAgICAgICAgICAgY29sRGVmW3dpZGdldFR5cGVdLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2V0Rm9ybUNvbnRyb2woY3RybCkge1xuICAgICAgICBjdHJsLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICBjdHJsLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgfVxuXG4gICAgY2xlYXJGb3JtKG5ld1Jvdz8pIHtcbiAgICAgICAgY29uc3QgY3RybHMgPSB0aGlzLm5nZm9ybS5jb250cm9scztcbiAgICAgICAga2V5cyh0aGlzLm5nZm9ybS5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgLy8gSWYgbmV3IHJvdywgY2xlYXIgdGhlIGNvbnRyb2xzIGluIHRoZSBuZXcgcm93LiBFbHNlLCBjbGVhciB0aGUgY29udHJvbHMgaW4gZWRpdCByb3dcbiAgICAgICAgICAgIGlmICgha2V5LmVuZHNXaXRoKCdfZmlsdGVyJykgJiYgKChrZXkuZW5kc1dpdGgoJ19uZXcnKSAmJiBuZXdSb3cpIHx8ICgha2V5LmVuZHNXaXRoKCdfbmV3JykgJiYgIW5ld1JvdykpKSB7XG4gICAgICAgICAgICAgICAgY3RybHNba2V5XS5zZXRWYWx1ZSgnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldEZvcm1Db250cm9sKGN0cmxzW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaG93RmllbGRCYXNlZE9uU2NyZWVuVHlwZShmaWVsZCkge1xuICAgICAgICBsZXQgc2hvd0ZpZWxkO1xuICAgICAgICBpZiAoaXNNb2JpbGUoKSAmJiB0aGlzLnZpZXdwb3J0LmlzTW9iaWxlVHlwZSkge1xuICAgICAgICAgICAgc2hvd0ZpZWxkID0gZmllbGQubW9iaWxlRGlzcGxheTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdwb3J0LmlzVGFibGV0VHlwZSkge1xuICAgICAgICAgICAgc2hvd0ZpZWxkID0gZmllbGQudGFibGV0RGlzcGxheTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNob3dGaWVsZCA9IGZpZWxkLnBjRGlzcGxheTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2hvd0ZpZWxkO1xuICAgIH1cblxuICAgIC8qIENoZWNrIHdoZXRoZXIgaXQgaXMgbm9uLWVtcHR5IHJvdy4gKi9cbiAgICBpc0VtcHR5UmVjb3JkKHJlY29yZCkge1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMocmVjb3JkKTtcbiAgICAgICAgbGV0IGRhdGEsXG4gICAgICAgICAgICBpc0Rpc3BsYXllZDtcblxuICAgICAgICByZXR1cm4gcHJvcGVydGllcy5ldmVyeSgocHJvcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGRhdGEgPSByZWNvcmRbcHJvcF07XG4gICAgICAgICAgICAvKiBJZiBmaWVsZERlZnMgYXJlIG1pc3NpbmcsIHNob3cgYWxsIGNvbHVtbnMgaW4gZGF0YS4gKi9cbiAgICAgICAgICAgIGlzRGlzcGxheWVkID0gKHRoaXMuZmllbGREZWZzLmxlbmd0aCAmJiBpc0RlZmluZWQodGhpcy5maWVsZERlZnNbaW5kZXhdKSAmJiB0aGlzLnNob3dGaWVsZEJhc2VkT25TY3JlZW5UeXBlKHRoaXMuZmllbGREZWZzW2luZGV4XSkpIHx8IHRydWU7XG4gICAgICAgICAgICAvKlZhbGlkYXRpbmcgb25seSB0aGUgZGlzcGxheWVkIGZpZWxkcyovXG4gICAgICAgICAgICBpZiAoaXNEaXNwbGF5ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gdW5kZWZpbmVkIHx8IGRhdGEgPT09ICcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiBGdW5jdGlvbiB0byByZW1vdmUgdGhlIGVtcHR5IGRhdGEuICovXG4gICAgcmVtb3ZlRW1wdHlSZWNvcmRzKHNlcnZpY2VEYXRhKSB7XG4gICAgICAgIGNvbnN0IGFsbFJlY29yZHMgPSBzZXJ2aWNlRGF0YTtcbiAgICAgICAgbGV0IGZpbHRlcmVkRGF0YSA9IFtdO1xuICAgICAgICBpZiAoYWxsUmVjb3JkcyAmJiBhbGxSZWNvcmRzLmxlbmd0aCkge1xuICAgICAgICAgICAgLypDb21wYXJpbmcgYW5kIHB1c2hpbmcgdGhlIG5vbi1lbXB0eSBkYXRhIGNvbHVtbnMqL1xuICAgICAgICAgICAgZmlsdGVyZWREYXRhID0gYWxsUmVjb3Jkcy5maWx0ZXIocmVjb3JkID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkICYmICF0aGlzLmlzRW1wdHlSZWNvcmQocmVjb3JkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWx0ZXJlZERhdGE7XG4gICAgfVxuXG4gICAgc2V0R3JpZERhdGEoc2VydmVyRGF0YSkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5maWx0ZXJudWxscmVjb3JkcyA/ICB0aGlzLnJlbW92ZUVtcHR5UmVjb3JkcyhzZXJ2ZXJEYXRhKSA6IHNlcnZlckRhdGE7XG4gICAgICAgIC8vIGZpeCBmb3IgW1dNUy0yNDAxMl0gc2V0IHZhcmlhYmxlaW5mbGlnaHQgZmxhZyB0byBmYWxzZSBmb3Igc3RhdGljIHZhcmlhYmxlc1xuICAgICAgICAvLyBJZiB0aGUgdGFibGUgaXMgYm91bmQgdG8gc29tZSB3aWRnZXQgYW5kIG5vdCBib3VuZCB0byBhbnkgdmFyaWFibGUgKGV4OiBUYWJsZTEuc2VsZWN0ZWRJdGVtKSB0aGVuIHNldCB2YXJpYWJsZUluZmxpZ2h0IHRvIGZhbHNlXG4gICAgICAgIGlmIChnZXQodGhpcy5kYXRhc291cmNlLCAnY2F0ZWdvcnknKSA9PT0gJ3dtLlZhcmlhYmxlJyB8fCBnZXQodGhpcy5kYXRhc291cmNlLCAnY2F0ZWdvcnknKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnZhcmlhYmxlSW5mbGlnaHQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudmFyaWFibGVJbmZsaWdodCkge1xuICAgICAgICAgICAgaWYgKGRhdGEgJiYgKGRhdGEubGVuZ3RoKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRTdGF0dXMnLCAnbm9kYXRhJywgdGhpcy5ub2RhdGFtZXNzYWdlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldFN0YXR1cycsICdyZWFkeScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JpZERhdGEgPSBkYXRhO1xuICAgIH1cblxuICAgIHNldERhdGFHcmlkT3B0aW9uKG9wdGlvbk5hbWUsIG5ld1ZhbCwgZm9yY2VTZXQgPSBmYWxzZSkge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YWdyaWRFbGVtZW50IHx8ICF0aGlzLmRhdGFncmlkRWxlbWVudC5kYXRhdGFibGUgfHwgIXRoaXMuZGF0YWdyaWRFbGVtZW50LmRhdGF0YWJsZSgnaW5zdGFuY2UnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHt9O1xuICAgICAgICBpZiAoaXNEZWZpbmVkICYmICghaXNFcXVhbChuZXdWYWwsIHRoaXMuZ3JpZE9wdGlvbnNbb3B0aW9uTmFtZV0pIHx8IGZvcmNlU2V0KSkge1xuICAgICAgICAgICAgb3B0aW9uW29wdGlvbk5hbWVdID0gbmV3VmFsO1xuICAgICAgICAgICAgdGhpcy5kYXRhZ3JpZEVsZW1lbnQuZGF0YXRhYmxlKCdvcHRpb24nLCBvcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9uc1tvcHRpb25OYW1lXSA9IG5ld1ZhbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbGxEYXRhR3JpZE1ldGhvZCguLi5hcmdzKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhZ3JpZEVsZW1lbnQgfHwgIXRoaXMuZGF0YWdyaWRFbGVtZW50LmRhdGF0YWJsZSgnaW5zdGFuY2UnKSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseVByb3BzLnNldChhcmdzWzFdLCBhcmdzKTtcbiAgICAgICAgICAgIHJldHVybjsgLy8gSWYgZGF0YWdyaWQgaXMgbm90IGluaXRpbGlhemVkIG9yIGRlc3Ryb3llZCwgcmV0dXJuIGhlcmVcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhZ3JpZEVsZW1lbnQuZGF0YXRhYmxlLmFwcGx5KHRoaXMuZGF0YWdyaWRFbGVtZW50LCBhcmdzKTtcbiAgICB9XG5cbiAgICByZW5kZXJPcGVyYXRpb25Db2x1bW5zKCkge1xuICAgICAgICBsZXQgcm93QWN0aW9uQ29sLFxuICAgICAgICAgICAgaW5zZXJ0UG9zaXRpb247XG5cbiAgICAgICAgY29uc3Qgcm93T3BlcmF0aW9uc0NvbHVtbiA9IGdldFJvd09wZXJhdGlvbnNDb2x1bW4oKSxcbiAgICAgICAgICAgIGNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAnbmFtZSc6IHJvd09wZXJhdGlvbnNDb2x1bW4uZmllbGQsXG4gICAgICAgICAgICAgICAgJ2ZpZWxkJzogcm93T3BlcmF0aW9uc0NvbHVtbi5maWVsZCxcbiAgICAgICAgICAgICAgICAnaXNQcmVkZWZpbmVkJzogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgLy8gUmV0dXJuIGlmIG5vIGZpZWxkRGVmcyBhcmUgcHJlc2VudFxuICAgICAgICBpZiAoIXRoaXMuZmllbGREZWZzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93QWN0aW9uQ29sID0gZmluZCh0aGlzLmZ1bGxGaWVsZERlZnMsIHsnZmllbGQnOiBST1dfT1BTX0ZJRUxELCB0eXBlOiAnY3VzdG9tJ30pOyAvLyBDaGVjayBpZiBjb2x1bW4gaXMgZmV0Y2hlZCBmcm9tIG1hcmt1cFxuICAgICAgICByZW1vdmUodGhpcy5maWVsZERlZnMsIHt0eXBlOiAnY3VzdG9tJywgZmllbGQ6IFJPV19PUFNfRklFTER9KTsgLy8gUmVtb3Zpbmcgb3BlcmF0aW9ucyBjb2x1bW5cbiAgICAgICAgcmVtb3ZlKHRoaXMuaGVhZGVyQ29uZmlnLCB7ZmllbGQ6IHJvd09wZXJhdGlvbnNDb2x1bW4uZmllbGR9KTtcblxuICAgICAgICAvKkFkZCB0aGUgY29sdW1uIGZvciByb3cgb3BlcmF0aW9ucyBvbmx5IGlmIGF0LWxlYXN0IG9uZSBvcGVyYXRpb24gaGFzIGJlZW4gZW5hYmxlZC4qL1xuICAgICAgICBpZiAodGhpcy5yb3dBY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHJvd0FjdGlvbkNvbCkgeyAvLyBJZiBjb2x1bW4gaXMgcHJlc2VudCBpbiBtYXJrdXAsIHB1c2ggdGhlIGNvbHVtbiBvciBwdXNoIHRoZSBkZWZhdWx0IGNvbHVtblxuICAgICAgICAgICAgICAgIGluc2VydFBvc2l0aW9uID0gcm93QWN0aW9uQ29sLnJvd2FjdGlvbnNwb3NpdGlvbiA/IHRvTnVtYmVyKHJvd0FjdGlvbkNvbC5yb3dhY3Rpb25zcG9zaXRpb24pIDogdGhpcy5maWVsZERlZnMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGREZWZzLnNwbGljZShpbnNlcnRQb3NpdGlvbiwgMCwgcm93QWN0aW9uQ29sKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0UG9zaXRpb24gPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJDb25maWcudW5zaGlmdChjb25maWcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyQ29uZmlnLnB1c2goY29uZmlnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGREZWZzLnB1c2gocm93T3BlcmF0aW9uc0NvbHVtbik7XG4gICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJDb25maWcucHVzaChjb25maWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ2hlYWRlckNvbmZpZycsIHRoaXMuaGVhZGVyQ29uZmlnKTtcbiAgICB9XG5cbiAgICBlbmFibGVQYWdlTmF2aWdhdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YXNldCAmJiB0aGlzLmJpbmRkYXRhc2V0ICYmIHRoaXMuZGF0YU5hdmlnYXRvcikge1xuICAgICAgICAgICAgLypDaGVjayBmb3Igc2FuaXR5Ki9cbiAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvcldhdGNoZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5uYXZpZ2F0b3JSZXN1bHRXYXRjaCkge1xuICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdG9yUmVzdWx0V2F0Y2gudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qUmVnaXN0ZXIgYSB3YXRjaCBvbiB0aGUgXCJyZXN1bHRcIiBwcm9wZXJ0eSBvZiB0aGUgXCJkYXRhTmF2aWdhdG9yXCIgc28gdGhhdCB0aGUgcGFnaW5hdGVkIGRhdGEgaXMgZGlzcGxheWVkIGluIHRoZSBsaXZlLWxpc3QuKi9cbiAgICAgICAgICAgIHRoaXMubmF2aWdhdG9yUmVzdWx0V2F0Y2ggPSB0aGlzLmRhdGFOYXZpZ2F0b3IucmVzdWx0RW1pdHRlci5zdWJzY3JpYmUoKG5ld1ZhbCkgPT4ge1xuICAgICAgICAgICAgICAgIC8qIENoZWNrIGZvciBzYW5pdHkuICovXG4gICAgICAgICAgICAgICAgaWYgKGlzRGVmaW5lZChuZXdWYWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdhdGNoIHdpbGwgbm90IGJlIHRyaWdnZXJlZCBpZiBkYXRhc2V0IGFuZCBuZXcgdmFsdWUgYXJlIGVxdWFsLiBTbyB0cmlnZ2VyIHRoZSBwcm9wZXJ0eSBjaGFuZ2UgaGFuZGxlciBtYW51YWxseVxuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGhhcHBlbnMgaW4gY2FzZSwgaWYgZGF0YXNldCBpcyBkaXJlY3RseSB1cGRhdGVkLlxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNFcXVhbCh0aGlzLmRhdGFzZXQsIG5ld1ZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2F0Y2hWYXJpYWJsZURhdGFTZXQobmV3VmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KG5ld1ZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndpZGdldC5kYXRhc2V0ID0gW10uY29uY2F0KG5ld1ZhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KG5ld1ZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndpZGdldC5kYXRhc2V0ID0gZXh0ZW5kKHt9LCBuZXdWYWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndpZGdldC5kYXRhc2V0ID0gbmV3VmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53aWRnZXQuZGF0YXNldCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB0cnVlKTtcbiAgICAgICAgICAgIC8qRGUtcmVnaXN0ZXIgdGhlIHdhdGNoIGlmIGl0IGlzIGV4aXN0cyAqL1xuICAgICAgICAgICAgaWYgKHRoaXMubmF2aWdhdG9yTWF4UmVzdWx0V2F0Y2gpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRvck1heFJlc3VsdFdhdGNoLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKlJlZ2lzdGVyIGEgd2F0Y2ggb24gdGhlIFwibWF4UmVzdWx0c1wiIHByb3BlcnR5IG9mIHRoZSBcImRhdGFOYXZpZ2F0b3JcIiBzbyB0aGF0IHRoZSBcInBhZ2VTaXplXCIgaXMgZGlzcGxheWVkIGluIHRoZSBsaXZlLWxpc3QuKi9cbiAgICAgICAgICAgIHRoaXMubmF2aWdhdG9yTWF4UmVzdWx0V2F0Y2ggPSB0aGlzLmRhdGFOYXZpZ2F0b3IubWF4UmVzdWx0c0VtaXR0ZXIuc3Vic2NyaWJlKChuZXdWYWwpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VzaXplID0gbmV3VmFsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBJZiBkYXRhc2V0IGlzIGEgcGFnZWFibGUgb2JqZWN0LCBkYXRhIGlzIHByZXNlbnQgaW5zaWRlIHRoZSBjb250ZW50IHByb3BlcnR5XG4gICAgICAgICAgICB0aGlzLl9fZnVsbERhdGEgPSB0aGlzLmRhdGFzZXQ7XG5cbiAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci53aWRnZXQubWF4UmVzdWx0cyA9IHRoaXMucGFnZXNpemUgfHwgNTtcbiAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci5vcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIG1heFJlc3VsdHM6IHRoaXMucGFnZXNpemUgfHwgNVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlUHJvcGVydHlCaW5kaW5nKCdkYXRhc2V0Jyk7XG4gICAgICAgICAgICB0aGlzLmRhdGFOYXZpZ2F0b3Iuc2V0QmluZERhdGFTZXQodGhpcy5iaW5kZGF0YXNldCwgdGhpcy52aWV3UGFyZW50LCB0aGlzLmRhdGFzb3VyY2UsIHRoaXMuZGF0YXNldCwgdGhpcy5iaW5kZGF0YXNvdXJjZSwgdW5kZWZpbmVkLCB0aGlzLnN0YXRlaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldFBhZ2VOYXZpZ2F0aW9uKCkge1xuICAgICAgICAvKkNoZWNrIGZvciBzYW5pdHkqL1xuICAgICAgICBpZiAodGhpcy5kYXRhTmF2aWdhdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFOYXZpZ2F0b3IucmVzZXRQYWdlTmF2aWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNEYXRhVmFsaWQoKSB7XG4gICAgICAgIGxldCBlcnJvcjtcbiAgICAgICAgY29uc3QgZGF0YXNldCA9IHRoaXMuZGF0YXNldCB8fCB7fTtcblxuICAgICAgICAvKkluIGNhc2UgXCJkYXRhXCIgY29udGFpbnMgXCJlcnJvclwiICYgXCJlcnJvck1lc3NhZ2VcIiwgdGhlbiBkaXNwbGF5IHRoZSBlcnJvciBtZXNzYWdlIGluIHRoZSBncmlkLiovXG4gICAgICAgIGlmIChkYXRhc2V0LmVycm9yKSB7XG4gICAgICAgICAgICBlcnJvciA9IGRhdGFzZXQuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGFzZXQuZGF0YSAmJiBkYXRhc2V0LmRhdGEuZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChkYXRhc2V0LmRhdGEuZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgZXJyb3IgPSBkYXRhc2V0LmRhdGEuZXJyb3JNZXNzYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5zZXRHcmlkRGF0YShbXSk7XG4gICAgICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnc2V0U3RhdHVzJywgJ2Vycm9yJywgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIEZ1bmN0aW9uIHRvIHBvcHVsYXRlIHRoZSBncmlkIHdpdGggZGF0YS5cbiAgICBwb3B1bGF0ZUdyaWREYXRhKHNlcnZpY2VEYXRhKSB7XG4gICAgICAgIGxldCBkYXRhO1xuICAgICAgICBzZXJ2aWNlRGF0YSA9IHRyYW5zZm9ybURhdGEoc2VydmljZURhdGEsIHRoaXMubmFtZSk7XG4gICAgICAgIC8vIEFwcGx5IGZpbHRlciBhbmQgc29ydCwgaWYgZGF0YSBpcyByZWZyZXNoZWQgdGhyb3VnaCBSZWZyZXNoIGRhdGEgbWV0aG9kXG4gICAgICAgIGlmICghdGhpcy5pc05hdmlnYXRpb25FbmFibGVkKCkgJiYgdGhpcy5faXNDbGllbnRTZWFyY2gpIHtcbiAgICAgICAgICAgIGRhdGEgPSBnZXRDbG9uZWRPYmplY3Qoc2VydmljZURhdGEpO1xuICAgICAgICAgICAgZGF0YSA9IHRoaXMuZ2V0U2VhcmNoUmVzdWx0KGRhdGEsIHRoaXMuZmlsdGVySW5mbyk7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5nZXRTb3J0UmVzdWx0KGRhdGEsIHRoaXMuc29ydEluZm8pO1xuICAgICAgICAgICAgdGhpcy5zZXJ2ZXJEYXRhID0gZGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VydmVyRGF0YSA9IHNlcnZpY2VEYXRhO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIGZpZWxkZGVmcyBhcmUgbm90IHByZXNlbnQsIGdlbmVyYXRlIGZpZWxkZGVmcyBmcm9tIGRhdGFcbiAgICAgICAgLy8gUmVtb3ZpbmcgZmllbGRkZWZzIGNoZWNrIGJlY2F1c2UgV2hlbiBsb2Fkb25kZW1hbmQgcHJvcGVydHkgaXMgZW5hYmxlZChkZWZlcmxvYWQ9XCJ0cnVlXCIpLCB0aGUgZGF0YXNldCBwcm9wZXJ0eWNoYW5nZWhhbmxkZXIgaXMgdHJpZ2dlcmVkIGZpcnN0IGJlZm9yZSB0aGUgZG9tIGlzIGdldHRpbmcgcmVuZGVyZWQuXG4gICAgICAgIC8vIFNvIGF0IHRoYXQgdGltZSBmaWVsZGRlZnMgbGVuZ3RoIGlzIHplcm8sIGR1ZSB0byB0aGlzIHRoZSBjb2x1bW5zIGFyZSBjcmVhdGVkIGR5bmFtaWNhbGx5LlxuICAgICAgICBpZiAodGhpcy5pc2R5bmFtaWN0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVHcmlkQ29sdW1ucyh0aGlzLnNlcnZlckRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXRHcmlkRGF0YSh0aGlzLnNlcnZlckRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdldENvbmZpZ3VyZWRTdGF0ZSgpICE9PSAnbm9uZScgJiYgdGhpcy5fc2VsZWN0ZWRJdGVtc0V4aXN0ICYmIHNlcnZpY2VEYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3Qgd2lkZ2V0U3RhdGUgPSB0aGlzLnN0YXRlUGVyc2lzdGVuY2UuZ2V0V2lkZ2V0U3RhdGUodGhpcyk7XG4gICAgICAgICAgICBsZXQgY3VycmVudFBhZ2VJdGVtcztcbiAgICAgICAgICAgIGlmIChnZXQod2lkZ2V0U3RhdGUsICdzZWxlY3RlZEl0ZW0nKSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlSXRlbXMgPSB3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0uZmlsdGVyKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWwucGFnZSA9PT0gdGhpcy5kYXRhTmF2aWdhdG9yLmRuLmN1cnJlbnRQYWdlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXNFeGlzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vIGlmIGFuIGl0ZW0gaXMgYWxyZWFkeSBzZWxlY3RlZCwgZG9uJ3QgdHJpZ2dlciBvblNlbGVjdCBldmVudCBmb3IgaXQgYWdhaW5cbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2VJdGVtcy5sZW5ndGggJiYgdGhpcy5zZWxlY3RlZGl0ZW0ubGVuZ3RoICE9PSB3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IHJlYXNzaWduIHRoaXMuc2VsZWN0ZWRpdGVtIGlmIHNlbGVjdGVkIGl0ZW1zIGFscmVhZHkgZXhpc3QuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KHRoaXMuc2VsZWN0ZWRpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2VJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW0uaW5kZXgsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRpdGVtID0gY3VycmVudFBhZ2VJdGVtcy5tYXAoZnVuY3Rpb24odmFsKSB7cmV0dXJuIHZhbC5pbmRleDsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGdW5jdGlvbiB0byBnZW5lcmF0ZSBhbmQgY29tcGlsZSB0aGUgZm9ybSBmaWVsZHMgZnJvbSB0aGUgbWV0YWRhdGFcbiAgICBhc3luYyBnZW5lcmF0ZUR5bmFtaWNDb2x1bW5zKGNvbHVtbnMpIHtcbiAgICAgICAgdGhpcy5maWVsZERlZnMgPSBbXTsgLy8gZW1wdHkgdGhlIGZvcm0gZmllbGRzXG4gICAgICAgIC8vIGVtcHR5IHRoZSBmaWx0ZXIgZmllbGQgdGVtcGxhdGUgcmVmcy5cbiAgICAgICAgKHRoaXMuZmlsdGVyVG1wbCBhcyBhbnkpLl9yZXN1bHRzID0gW107XG5cbiAgICAgICAgaWYgKGlzRW1wdHkoY29sdW1ucykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0bXBsID0gJyc7XG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgICAgbGV0IGF0dHJzVG1wbCA9ICcnO1xuICAgICAgICAgICAgbGV0IGN1c3RvbVRtcGwgPSAnJztcbiAgICAgICAgICAgIGZvckVhY2goY29sLCAodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbCkgJiYgdmFsICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBjdXN0b20gZXhwcmVzc2lvbiBpcyBwcmVzZW50LCBrZWVwIGl0IGluc2lkZSB0YWJsZSBjb2x1bW4uIEVsc2UsIGtlZXAgYXMgYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICdjdXN0b21FeHByZXNzaW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tVG1wbCA9IHZhbDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzVG1wbCArPSBgICR7a2V5fT1cIiR7dmFsfVwiYDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdG1wbCArPSBgPHdtLXRhYmxlLWNvbHVtbiAke2F0dHJzVG1wbH0gdGFibGVOYW1lPVwiJHt0aGlzLm5hbWV9JHsodGhpcyBhcyBhbnkpLiRhdHRycy5nZXQoJ3RhYmxlX3JlZmVyZW5jZScpfVwiPiR7Y3VzdG9tVG1wbH08L3dtLXRhYmxlLWNvbHVtbj5gO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5keW5hbWljVGFibGVSZWYuY2xlYXIoKTtcbiAgICAgICAgaWYgKCF0aGlzLl9keW5hbWljQ29udGV4dCkge1xuICAgICAgICAgICAgdGhpcy5fZHluYW1pY0NvbnRleHQgPSBPYmplY3QuY3JlYXRlKHRoaXMudmlld1BhcmVudCk7XG4gICAgICAgICAgICB0aGlzLl9keW5hbWljQ29udGV4dFt0aGlzLmdldEF0dHIoJ3dtVGFibGUnKV0gPSB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubm9PZkNvbHVtbnMgPSBjb2x1bW5zLmxlbmd0aDtcbiAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeVJlZiA9IGF3YWl0IHRoaXMuZHluYW1pY0NvbXBvbmVudFByb3ZpZGVyLmdldENvbXBvbmVudEZhY3RvcnlSZWYoXG4gICAgICAgICAgICAnYXBwLXRhYmxlLWR5bmFtaWMtJyArIHRoaXMud2lkZ2V0SWQsXG4gICAgICAgICAgICB0bXBsLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5vQ2FjaGU6IHRydWUsXG4gICAgICAgICAgICAgICAgdHJhbnNwaWxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5keW5hbWljVGFibGVSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudEZhY3RvcnlSZWYsIDAsIHRoaXMuaW5qKTtcbiAgICAgICAgZXh0ZW5kUHJvdG8oY29tcG9uZW50Lmluc3RhbmNlLCB0aGlzLl9keW5hbWljQ29udGV4dCk7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnLmR5bmFtaWMtdGFibGUtY29udGFpbmVyJylbMF0uYXBwZW5kQ2hpbGQoY29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHByZXBhcmVDb2xEZWZzKGRhdGEpIHtcbiAgICAgICAgbGV0IGRlZmF1bHRGaWVsZERlZnM7XG4gICAgICAgIGxldCBwcm9wZXJ0aWVzO1xuICAgICAgICBsZXQgY29sdW1uSW5kZXggPSAwO1xuICAgICAgICBsZXQgaGVhZGVySW5kZXggPSAwO1xuXG4gICAgICAgIHRoaXMuZmllbGREZWZzID0gW107XG4gICAgICAgIHRoaXMuaGVhZGVyQ29uZmlnID0gW107XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IHt9O1xuICAgICAgICAvKiBpZiBwcm9wZXJ0aWVzIG1hcCBpcyBleGlzdGVkIHRoZW4gZmV0Y2ggdGhlIGNvbHVtbiBjb25maWd1cmF0aW9uIGZvciBhbGwgbmVzdGVkIGxldmVscyB1c2luZyB1dGlsIGZ1bmN0aW9uICovXG4gICAgICAgIHByb3BlcnRpZXMgPSBkYXRhO1xuICAgICAgICAvKmNhbGwgdXRpbGl0eSBmdW5jdGlvbiB0byBwcmVwYXJlIGZpZWxkRGVmcyBmb3IgZ3JpZCBhZ2FpbnN0IGdpdmVuIGRhdGEgKEEgTUFYIE9GIDEwIENPTFVNTlMgT05MWSkqL1xuICAgICAgICBkZWZhdWx0RmllbGREZWZzID0gcHJlcGFyZUZpZWxkRGVmcyhwcm9wZXJ0aWVzKTtcblxuICAgICAgICAvKmFwcGVuZCBhZGRpdGlvbmFsIHByb3BlcnRpZXMqL1xuICAgICAgICBmb3JFYWNoKGRlZmF1bHRGaWVsZERlZnMsIGNvbHVtbkRlZiA9PiB7XG4gICAgICAgICAgICBjb2x1bW5EZWYuYmluZGluZyA9IGNvbHVtbkRlZi5maWVsZDtcbiAgICAgICAgICAgIGNvbHVtbkRlZi5jYXB0aW9uID0gY29sdW1uRGVmLmRpc3BsYXlOYW1lO1xuICAgICAgICAgICAgY29sdW1uRGVmLnBjRGlzcGxheSA9IHRydWU7XG4gICAgICAgICAgICBjb2x1bW5EZWYubW9iaWxlRGlzcGxheSA9IHRydWU7XG4gICAgICAgICAgICBjb2x1bW5EZWYudGFibGV0RGlzcGxheSA9IHRydWU7XG4gICAgICAgICAgICBjb2x1bW5EZWYuc2VhcmNoYWJsZSA9IHRydWU7XG4gICAgICAgICAgICBjb2x1bW5EZWYuc2hvd2luZmlsdGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbHVtbkRlZi50eXBlICA9ICdzdHJpbmcnO1xuICAgICAgICAgICAgLy8gRml4IGZvciBbV01TLTE5NjY4XSBhbmQgW1dNUy0xOTY2OV0tIEFkZGluZyBpbmRleCBhbmQgaGVhZGVySW5kZXggZm9yIER5bmFtaWMgREIgY29sdW1ucy5cbiAgICAgICAgICAgIC8vIE5vdGU6IHdlIGRvbid0IGhhdmUgY29sdW1uIGdyb3VwcyBmb3IgRHluYW1pYyBEQlxuICAgICAgICAgICAgY29sdW1uRGVmLmluZGV4ID0gY29sdW1uSW5kZXg7XG4gICAgICAgICAgICBjb2x1bW5EZWYuaGVhZGVySW5kZXggPSBoZWFkZXJJbmRleDtcbiAgICAgICAgICAgIGNvbHVtbkluZGV4Kys7XG4gICAgICAgICAgICBoZWFkZXJJbmRleCsrO1xuICAgICAgICB9KTtcblxuICAgICAgICBkZWZhdWx0RmllbGREZWZzLmZvckVhY2goY29sID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1tjb2wuZmllbGRdID0gY29sO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZWRhdGFyZW5kZXInLCB7JGRhdGE6IGRhdGEsICRjb2x1bW5zOiB0aGlzLmNvbHVtbnMsIGRhdGE6IGRhdGEsIGNvbHVtbnM6IHRoaXMuY29sdW1uc30pO1xuXG4gICAgICAgIGRlZmF1bHRGaWVsZERlZnMgPSBbXTtcbiAgICAgICAgLy8gQXBwbHkgdGhlIGNoYW5nZXMgbWFkZSBieSB0aGUgdXNlclxuICAgICAgICBmb3JFYWNoKHRoaXMuY29sdW1ucywgdmFsID0+IHtcbiAgICAgICAgICAgIGRlZmF1bHRGaWVsZERlZnMucHVzaCh2YWwpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmdlbmVyYXRlRHluYW1pY0NvbHVtbnMoZGVmYXVsdEZpZWxkRGVmcyk7XG4gICAgfVxuXG4gICAgY3JlYXRlR3JpZENvbHVtbnMoZGF0YSkge1xuICAgICAgICAvKiB0aGlzIGNhbGwgYmFjayBmdW5jdGlvbiByZWNlaXZlcyB0aGUgZGF0YSBmcm9tIHRoZSB2YXJpYWJsZSAqL1xuICAgICAgICAvKiBjaGVjayB3aGV0aGVyIGRhdGEgaXMgdmFsaWQgb3Igbm90ICovXG4gICAgICAgIGNvbnN0IGRhdGFWYWxpZCA9IGRhdGEgJiYgIWRhdGEuZXJyb3I7XG4gICAgICAgIC8qaWYgdGhlIGRhdGEgaXMgdHlwZSBqc29uIG9iamVjdCwgbWFrZSBpdCBhbiBhcnJheSBvZiB0aGUgb2JqZWN0Ki9cbiAgICAgICAgaWYgKGRhdGFWYWxpZCAmJiAhaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgZGF0YSA9IFtkYXRhXTtcbiAgICAgICAgfVxuICAgICAgICAvKiBpZiB0aGUgZGF0YSBpcyBlbXB0eSwgc2hvdyBub2RhdGFtZXNzYWdlICovXG4gICAgICAgIGlmIChpc0VtcHR5KGRhdGEpKSB7XG4gICAgICAgICAgICB0aGlzLnNldEdyaWREYXRhKGRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFkYXRhVmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvKiBpZiBuZXcgY29sdW1ucyB0byBiZSByZW5kZXJlZCwgcHJlcGFyZSBkZWZhdWx0IGZpZWxkRGVmcyBmb3IgdGhlIGRhdGEgcHJvdmlkZWQqL1xuICAgICAgICB0aGlzLnByZXBhcmVDb2xEZWZzKGRhdGEpO1xuXG4gICAgICAgIHRoaXMuc2VydmVyRGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMuc2V0R3JpZERhdGEodGhpcy5zZXJ2ZXJEYXRhKTtcbiAgICB9XG5cbiAgICBnZXRTb3J0RXhwcigpIHtcbiAgICAgICAgbGV0IHNvcnRFeHA7XG4gICAgICAgIGxldCBwYWdpbmdPcHRpb25zO1xuICAgICAgICBpZiAodGhpcy5kYXRhc291cmNlICYmIHRoaXMuZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLklTX1BBR0VBQkxFKSkge1xuICAgICAgICAgICAgcGFnaW5nT3B0aW9ucyA9IHRoaXMuZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkdFVF9QQUdJTkdfT1BUSU9OUyk7XG4gICAgICAgICAgICBzb3J0RXhwID0gaXNFbXB0eShwYWdpbmdPcHRpb25zKSA/ICcnIDogZ2V0T3JkZXJCeUV4cHIocGFnaW5nT3B0aW9ucy5zb3J0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc29ydEV4cCB8fCAnJztcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBsZXQgZW5hYmxlTmV3Um93O1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnZGF0YXNvdXJjZSc6XG4gICAgICAgICAgICAgICAgLy8gRml4IGZvciBbV01TLTIzNjUzXSB3aGVuIHN0YXJ0VXBkYXRlIGlzIGZhbHNlIChyZXF1ZXN0IG9uIHBhZ2UgbG9hZCBwcm9wZXJ0eSBpcyB1bmNoZWNrZWQpLFxuICAgICAgICAgICAgICAgIC8vIHRoZW4gc2V0IHN0YXR1cyBtc2cgYXMgXCJObyBkYXRhIGZvdW5kXCJcbiAgICAgICAgICAgICAgICBpZiAobnYuc3RhcnRVcGRhdGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFyaWFibGVJbmZsaWdodCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnc2V0U3RhdHVzJywgJ25vZGF0YScsIHRoaXMubm9kYXRhbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMud2F0Y2hWYXJpYWJsZURhdGFTZXQodGhpcy5kYXRhc2V0KTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YVNvdXJjZUNoYW5nZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF0YXNldCc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMuaXNOYXZUeXBlU2Nyb2xsT3JPbmRlbWFuZCgpICYmIHRoaXMuZ3JpZE9wdGlvbnMuZ2V0Q3VycmVudFBhZ2UoKSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnNldElzTmV4dFBhZ2VEYXRhKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYmluZGRhdGFzb3VyY2UgJiYgIXRoaXMuZGF0YXNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGlmIHRhYmxlIGlzIGluc2lkZSBsaXN0IHRoZW4gdGFibGUgZGF0YXNldCB3aWxsIGJlIHNldCBhcyBcIml0ZW0uWFhYXCIgYW5kIHRoZXJlIGlzIG5vIGRhdGFzb3VyY2UuXG4gICAgICAgICAgICAgICAgLy8gU28gZXh0cmFjdGluZyBkYXRhc291cmNlIGZyb20gdGhlIGRhdHNldCBib3VuZCBleHByZXNzaW9uLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudExpc3QgJiYgIXRoaXMuZGF0YXNvdXJjZSAmJiBzdGFydHNXaXRoKHRoaXMuYmluZGRhdGFzZXQsICdpdGVtJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhc291cmNlID0gZ2V0RGF0YXNvdXJjZUZyb21FeHByKHRoaXMud2lkZ2V0LiRhdHRycy5nZXQoJ2RhdGFzZXRib3VuZGV4cHInKSwgdGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLmlzTmF2VHlwZVNjcm9sbE9yT25kZW1hbmQoKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy5pc05leHRQYWdlRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBmZXRjaGluZyBuZXh0IHBhZ2UgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5zZXRJc0RhdGFVcGRhdGVkQnlVc2VyKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gZGF0YXNldCBpcyB1cGRhdGVkIGZyb20gc2NyaXB0XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnNldElzRGF0YVVwZGF0ZWRCeVVzZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExhc3RBY3Rpb25Ub0RhdGFzZXRVcGRhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuc2V0SXNOZXh0UGFnZURhdGEoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGZvciBTdGF0aWMgVmFyaWFibGVzIHdpdGggUmV0YWluIFN0YXRlIGVuYWJsZWQsIHByZXZlbnQgVGFibGUgZnJvbSByZW5kZXJpbmcgbW9yZSB0aGFuIG9uY2VcbiAgICAgICAgICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjUyODRdOiBSZW5kZXIgdGFibGUgdGhhdCBpcyBpbnNpZGUgbGlzdCB3aWRnZXQgYW5kIGJvdW5kIHRvIHN0YXRpYyBWYXJpYWJsZVxuICAgICAgICAgICAgICAgIGlmICghKGdldCh0aGlzLmRhdGFzb3VyY2UsICdjYXRlZ29yeScpID09PSAnd20uVmFyaWFibGUnICYmIHRoaXMuX3BhZ2VMb2FkICYmIHRoaXMuZ2V0Q29uZmlndXJlZFN0YXRlKCkgIT09ICdub25lJykgfHwgKHRoaXMucGFyZW50TGlzdCAmJiBzdGFydHNXaXRoKHRoaXMuYmluZGRhdGFzZXQsICdpdGVtJykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2F0Y2hWYXJpYWJsZURhdGFTZXQobnYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpbHRlcm1vZGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ2ZpbHRlcm1vZGUnLCBudik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWFyY2hsYWJlbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhR3JpZE9wdGlvbignc2VhcmNoTGFiZWwnLCBudik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICduYXZpZ2F0aW9uJzpcbiAgICAgICAgICAgICAgICBpZiAobnYgPT09ICdBZHZhbmNlZCcpIHsgLy8gU3VwcG9ydCBmb3Igb2xkZXIgcHJvamVjdHMgd2hlcmUgbmF2aWdhdGlvbiB0eXBlIHdhcyBhZHZhbmNlZCBpbnN0ZWFkIG9mIGNsYXNpY1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb24gPSAnQ2xhc3NpYyc7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG52ICE9PSAnTm9uZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93bmF2aWdhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ25hdmlnYXRpb24nLCB0aGlzLm5hdmlnYXRpb24pO1xuICAgICAgICAgICAgICAgIHRoaXMub25EZW1hbmRMb2FkID0gbnYgPT09IE5BVklHQVRJT05fVFlQRS5PTkRFTUFORCA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmluZlNjcm9sbCA9IG52ID09PSBOQVZJR0FUSU9OX1RZUEUuU0NST0xMID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubmF2Q29udHJvbHMgPSBudjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2dyaWRmaXJzdHJvd3NlbGVjdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhR3JpZE9wdGlvbignc2VsZWN0Rmlyc3RSb3cnLCBudik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdncmlkY2xhc3MnOlxuICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdvcHRpb24nLCAnY3NzQ2xhc3NOYW1lcy5ncmlkJywgbnYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbm9kYXRhbWVzc2FnZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ29wdGlvbicsICdkYXRhU3RhdGVzLm5vZGF0YScsIG52KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xvYWRpbmdkYXRhbXNnJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnb3B0aW9uJywgJ2RhdGFTdGF0ZXMubG9hZGluZycsIG52KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xvYWRpbmdpY29uJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnb3B0aW9uJywgJ2xvYWRpbmdpY29uJywgbnYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3BhY2luZyc6XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ29wdGlvbicsICdzcGFjaW5nJywgbnYpO1xuICAgICAgICAgICAgICAgIGlmIChudiA9PT0gJ2NvbmRlbnNlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2l6ZSA9ICdzbWFsbCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2l6ZSA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2V4cG9ydGZvcm1hdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5leHBvcnRPcHRpb25zID0gW107XG4gICAgICAgICAgICAgICAgaWYgKG52KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFBvcHVsYXRlIG9wdGlvbnMgZm9yIGV4cG9ydCBkcm9wIGRvd24gbWVudVxuICAgICAgICAgICAgICAgICAgICBmb3JFYWNoKHNwbGl0KG52LCAnLCcpLCB0eXBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0T3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBleHBvcnRJY29uTWFwcGluZ1t0eXBlXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Nob3duZXdyb3cnOlxuICAgICAgICAgICAgICAgIC8vIEVuYWJsZSBuZXcgcm93IGlmIHNob3duZXcgaXMgdHJ1ZSBvciBhZGROZXdSb3cgYnV0b24gaXMgcHJlc2VudFxuICAgICAgICAgICAgICAgIGVuYWJsZU5ld1JvdyA9IG52IHx8IHNvbWUodGhpcy5hY3Rpb25zLCBhY3QgPT4gaW5jbHVkZXMoYWN0LmFjdGlvbiwgJ2FkZE5ld1JvdygpJykpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdvcHRpb24nLCAnYWN0aW9uc0VuYWJsZWQubmV3JywgZW5hYmxlTmV3Um93KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3BhZ2VzaXplJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFOYXZpZ2F0b3Iub3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgbWF4UmVzdWx0czogbnZcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci53aWRnZXQubWF4UmVzdWx0cyA9IG52O1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci5tYXhSZXN1bHRzID0gbnY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdvbmRlbWFuZG1lc3NhZ2UnOlxuICAgICAgICAgICAgICAgIGlmIChudikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJy5vbi1kZW1hbmQtZGF0YWdyaWQgPiBhJykudGV4dChudik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMub25kZW1hbmRtZXNzYWdlID0gbnY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2aWV3bGVzc21lc3NhZ2UnOlxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMudmlld2xlc3NtZXNzYWdlID0gbnY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzaG93JzpcbiAgICAgICAgICAgICAgICBpZiAobnYpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdzaG93Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdoaWRlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRGF0YVNvdXJjZUNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy5maWVsZERlZnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgICB0cmlnZ2VyRm4oY29sLm9uRGF0YVNvdXJjZUNoYW5nZSAmJiBjb2wub25EYXRhU291cmNlQ2hhbmdlLmJpbmQoY29sKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJBY3Rpb25Sb3dWYXJzKCkge1xuICAgICAgICB0aGlzLmFjdGlvblJvd0luZGV4ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmFjdGlvblJvd1BhZ2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2V0RGF0YUdyaWRPcHRpb24oJ2FjdGlvblJvd0luZGV4JywgdW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy5zZXREYXRhR3JpZE9wdGlvbignYWN0aW9uUm93UGFnZScsIHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgb25TdHlsZUNoYW5nZShrZXksIG52LCBvdikge1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnd2lkdGgnOlxuICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRHcmlkRGltZW5zaW9ucycsICd3aWR0aCcsIG52KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hlaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NldEdyaWREaW1lbnNpb25zJywgJ2hlaWdodCcsIG52KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLm9uU3R5bGVDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgIH1cblxuICAgIHBvcHVsYXRlQWN0aW9ucygpIHtcbiAgICAgICAgdGhpcy5fYWN0aW9ucy5oZWFkZXIgPSBbXTtcbiAgICAgICAgdGhpcy5fYWN0aW9ucy5mb290ZXIgPSBbXTtcbiAgICAgICAgZm9yRWFjaCh0aGlzLmFjdGlvbnMsIChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChpbmNsdWRlcyhhY3Rpb24ucG9zaXRpb24sICdoZWFkZXInKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2FjdGlvbnMuaGVhZGVyLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbmNsdWRlcyhhY3Rpb24ucG9zaXRpb24sICdmb290ZXInKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2FjdGlvbnMuZm9vdGVyLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gdGhpcyBtZXRob2Qgd2lsbCByZW5kZXIgdGhlIGZpbHRlciByb3cuXG4gICAgcmVuZGVyRHluYW1pY0ZpbHRlckNvbHVtbihmaWx0ZVRlbVJlZikge1xuICAgICAgICAvLyBGb3IgZHluYW1pYyB0YWJsZSBtYW51YWxseSBwdXNoaW5nIHRoZSBmaWx0ZXJ0ZW1wbGF0ZVJlZiBhcyB0ZW1wbGF0ZVJlZiB3aWxsIG5vdCBiZSBhdmFpbGFibGUgcHJpb3IuXG4gICAgICAgIGlmICh0aGlzLmlzZHluYW1pY3RhYmxlKSB7XG4gICAgICAgICAgICAodGhpcy5maWx0ZXJUbXBsIGFzIGFueSkuX3Jlc3VsdHMucHVzaChmaWx0ZVRlbVJlZik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3RlckNvbHVtbnModGFibGVDb2x1bW4sIGNvbEluZGV4KSB7XG4gICAgICAgIGlmIChpc01vYmlsZSgpICYmIHRoaXMudmlld3BvcnQuaXNNb2JpbGVUeXBlKSB7XG4gICAgICAgICAgICBpZiAoIXRhYmxlQ29sdW1uLm1vYmlsZURpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3cG9ydC5pc1RhYmxldFR5cGUpIHtcbiAgICAgICAgICAgIGlmICghdGFibGVDb2x1bW4udGFibGV0RGlzcGxheSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghdGFibGVDb2x1bW4ucGNEaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0YWJsZUNvbHVtblsncHJpbWFyeS1rZXknXSkge1xuICAgICAgICAgICAgdGhpcy5wcmltYXJ5S2V5LnB1c2godGFibGVDb2x1bW4uZmllbGQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmllbGREZWZzW2NvbEluZGV4XSA9IHRhYmxlQ29sdW1uO1xuICAgICAgICBjb25zdCBjb2xDb3VudCA9IHRoaXMuZmllbGREZWZzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5mdWxsRmllbGREZWZzLnB1c2godGFibGVDb2x1bW4pO1xuICAgICAgICB0aGlzLnJvd0ZpbHRlclt0YWJsZUNvbHVtbi5maWVsZF0gPSB7XG4gICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZmllbGREZWZzLmZvckVhY2goY29sID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1tjb2wuZmllbGRdID0gY29sO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gSWYgZHluYW1pYyBkYXRhdGFibGUgYW5kIGxhc3QgY29sdW1uLCBwYXNzIHRoZSBjb2x1bW5zIHRvIGpxdWVyeSBkYXRhdGFibGVcbiAgICAgICAgaWYgKHRoaXMuaXNkeW5hbWljdGFibGUgJiYgY29sQ291bnQgPT09IHRoaXMubm9PZkNvbHVtbnMpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyT3BlcmF0aW9uQ29sdW1ucygpO1xuICAgICAgICAgICAgdGhpcy5zZXREYXRhR3JpZE9wdGlvbignY29sRGVmcycsIHRoaXMuZmllbGREZWZzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyRm9ybUZpZWxkKG5hbWUsIGZvcm1GaWVsZCkge1xuICAgICAgICB0aGlzLmZvcm1maWVsZHNbbmFtZV0gPSBmb3JtRmllbGQ7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJBY3Rpb25zKHRhYmxlQWN0aW9uKSB7XG4gICAgICAgIHRoaXMuYWN0aW9ucy5wdXNoKHRhYmxlQWN0aW9uKTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUFjdGlvbnMoKTtcbiAgICB9XG5cbiAgICByZWdpc3RlclJvdyh0YWJsZVJvdywgcm93SW5zdGFuY2UpIHtcbiAgICAgICAgdGhpcy5yb3dEZWYgPSB0YWJsZVJvdztcbiAgICAgICAgdGhpcy5yb3dJbnN0YW5jZSA9IHJvd0luc3RhbmNlO1xuICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnb3B0aW9uJywgJ2Nzc0NsYXNzTmFtZXMucm93RXhwYW5kSWNvbicsIHRoaXMucm93RGVmLmV4cGFuZGljb24pO1xuICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnb3B0aW9uJywgJ2Nzc0NsYXNzTmFtZXMucm93Q29sbGFwc2VJY29uJywgdGhpcy5yb3dEZWYuY29sbGFwc2VpY29uKTtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5yb3dFeHBhbnNpb25FbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5yb3dEZWYgPSB0aGlzLnJvd0RlZjtcbiAgICB9XG5cbiAgICByZWdpc3RlclJvd0FjdGlvbnModGFibGVSb3dBY3Rpb24pIHtcbiAgICAgICAgdGhpcy5yb3dBY3Rpb25zLnB1c2godGFibGVSb3dBY3Rpb24pO1xuICAgIH1cblxuICAgIHNlbGVjdEl0ZW0oaXRlbSwgZGF0YSkge1xuICAgICAgICAvKiBzZXJ2ZXIgaXMgbm90IHVwZGF0aW5nIGltbWVkaWF0ZWx5LCBzbyBzZXQgdGhlIHNlcnZlciBkYXRhIHRvIHN1Y2Nlc3MgY2FsbGJhY2sgZGF0YSAqL1xuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5zZXJ2ZXJEYXRhID0gZGF0YTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNPYmplY3QoaXRlbSkpIHtcbiAgICAgICAgICAgIGl0ZW0gPSBvbWl0QnkoaXRlbSwgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpICYmIGlzRW1wdHkodmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ3NlbGVjdFJvdycsIGl0ZW0sIHRydWUpO1xuICAgIH1cbiAgICAvKiBkZXNlbGVjdCB0aGUgZ2l2ZW4gaXRlbSovXG4gICAgZGVzZWxlY3RJdGVtKGl0ZW0pIHtcbiAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ2Rlc2VsZWN0Um93JywgaXRlbSk7XG4gICAgfVxuXG4gICAgb25EYXRhTmF2aWdhdG9yRGF0YVNldENoYW5nZShudikge1xuICAgICAgICBsZXQgZGF0YTtcbiAgICAgICAgdGhpcy5fX2Z1bGxEYXRhID0gbnY7XG4gICAgICAgIHRoaXMuY2hlY2tGaWx0ZXJzQXBwbGllZCh0aGlzLmdldFNvcnRFeHByKCkpO1xuICAgICAgICBpZiAodGhpcy5faXNDbGllbnRTZWFyY2gpIHtcbiAgICAgICAgICAgIGRhdGEgPSBnZXRDbG9uZWRPYmplY3QodGhpcy5fX2Z1bGxEYXRhKTtcbiAgICAgICAgICAgIGlmIChpc09iamVjdChkYXRhKSAmJiAhaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBbZGF0YV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5nZXRTZWFyY2hSZXN1bHQoZGF0YSwgdGhpcy5maWx0ZXJJbmZvKTtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLmdldFNvcnRSZXN1bHQoZGF0YSwgdGhpcy5zb3J0SW5mbyk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnY7XG4gICAgfVxuXG4gICAgdG9nZ2xlTWVzc2FnZShzaG93LCB0eXBlLCBtc2csIGhlYWRlcj8pIHtcbiAgICAgICAgaWYgKHNob3cgJiYgbXNnKSB7XG4gICAgICAgICAgICB0aGlzLmFwcC5ub3RpZnlBcHAobXNnLCB0eXBlLCBoZWFkZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhwb3J0KCRpdGVtKSB7XG4gICAgICAgIGxldCBmaWx0ZXJGaWVsZHM7XG4gICAgICAgIGNvbnN0IHNvcnRPcHRpb25zID0gaXNFbXB0eSh0aGlzLnNvcnRJbmZvKSA/ICcnIDogdGhpcy5zb3J0SW5mby5maWVsZCArICcgJyArIHRoaXMuc29ydEluZm8uZGlyZWN0aW9uO1xuICAgICAgICBjb25zdCBjb2x1bW5zID0ge307XG4gICAgICAgIGxldCBpc1ZhbGlkO1xuICAgICAgICBsZXQgcmVxdWVzdERhdGE7XG4gICAgICAgIHRoaXMuZmllbGREZWZzLmZvckVhY2goZmllbGREZWYgPT4ge1xuICAgICAgICAgICAgLy8gRG8gbm90IGFkZCB0aGUgcm93IG9wZXJhdGlvbiBhY3Rpb25zIGNvbHVtbiB0byB0aGUgZXhwb3J0ZWQgZmlsZS5cbiAgICAgICAgICAgIGlmIChmaWVsZERlZi5maWVsZCA9PT0gUk9XX09QU19GSUVMRCB8fCAhZmllbGREZWYuc2hvdykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAnaGVhZGVyJzogZmllbGREZWYuZGlzcGxheU5hbWVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyBJZiBjb2x1bW4gaGFzIGV4cG9ydGV4cHJlc3Npb24sIHRoZW4gc2VuZCBmb3JtIHRoZSBleHByZXNzaW9uIGFzIHJlcXVpcmVkIGJ5IGJhY2tlbmQuXG4gICAgICAgICAgICAvLyBvdGhlcndpc2Ugc2VuZCB0aGUgZmllbGQgbmFtZS5cbiAgICAgICAgICAgIGlmIChmaWVsZERlZi5leHBvcnRleHByZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgKDxhbnk+b3B0aW9uKS5leHByZXNzaW9uID0gZmllbGREZWYuZXhwb3J0ZXhwcmVzc2lvbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgKDxhbnk+b3B0aW9uKS5maWVsZCA9IGZpZWxkRGVmLmZpZWxkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29sdW1uc1tmaWVsZERlZi5maWVsZF0gPSBvcHRpb247XG4gICAgICAgIH0pO1xuICAgICAgICBmaWx0ZXJGaWVsZHMgPSB0aGlzLmdldEZpbHRlckZpZWxkcyh0aGlzLmZpbHRlckluZm8pO1xuICAgICAgICByZXF1ZXN0RGF0YSA9IHtcbiAgICAgICAgICAgIG1hdGNoTW9kZSA6ICdhbnl3aGVyZWlnbm9yZWNhc2UnLFxuICAgICAgICAgICAgZmlsdGVyRmllbGRzIDogZmlsdGVyRmllbGRzLFxuICAgICAgICAgICAgb3JkZXJCeSA6IHNvcnRPcHRpb25zLFxuICAgICAgICAgICAgZXhwb3J0VHlwZSA6ICRpdGVtLmxhYmVsLFxuICAgICAgICAgICAgbG9naWNhbE9wIDogJ0FORCcsXG4gICAgICAgICAgICBleHBvcnRTaXplIDogdGhpcy5leHBvcnRkYXRhc2l6ZSxcbiAgICAgICAgICAgIGNvbHVtbnMgOiBjb2x1bW5zXG4gICAgICAgIH07XG4gICAgICAgIGlzVmFsaWQgPSB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZWV4cG9ydCcsIHskZGF0YTogcmVxdWVzdERhdGF9KTtcbiAgICAgICAgaWYgKGlzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVxdWVzdERhdGEuZmllbGRzID0gdmFsdWVzKHJlcXVlc3REYXRhLmNvbHVtbnMpO1xuICAgICAgICB0aGlzLmRhdGFzb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5ET1dOTE9BRCwge2RhdGE6IHJlcXVlc3REYXRhfSk7XG4gICAgfVxuXG4gICAgZXhwYW5kUm93KHJvd0lkKSB7XG4gICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdleHBhbmRSb3cnLCByb3dJZCk7XG4gICAgfVxuXG4gICAgY29sbGFwc2VSb3cocm93SWQpIHtcbiAgICAgICAgdGhpcy5jYWxsRGF0YUdyaWRNZXRob2QoJ2NvbGxhcHNlUm93Jywgcm93SWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2RvY3VtZW50Q2xpY2tCaW5kKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0ICR0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIC8vIElmIGNsaWNrIHRyaWdnZXJlZCBmcm9tIHNhbWUgZ3JpZCBvciBhIGRpYWxvZywgZG8gbm90IHNhdmUgdGhlIHJvd1xuICAgICAgICBpZiAodGhpcy4kZWxlbWVudFswXS5jb250YWlucygkdGFyZ2V0KSB8fCBldmVudC50YXJnZXQuZG9jdHlwZSB8fCBpc0lucHV0Qm9keVdyYXBwZXIoJCgkdGFyZ2V0KSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhbGxEYXRhR3JpZE1ldGhvZCgnc2F2ZVJvdycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlZHJhdyhmb3JjZVJlbmRlcikge1xuICAgICAgICBpZiAoZm9yY2VSZW5kZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YWdyaWRFbGVtZW50LmRhdGF0YWJsZSh0aGlzLmdyaWRPcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdzZXRDb2xHcm91cFdpZHRocycpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGFHcmlkTWV0aG9kKCdhZGRPclJlbW92ZVNjcm9sbCcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnZva2VBY3Rpb25FdmVudCgkZXZlbnQsIGV4cHJlc3Npb246IHN0cmluZykge1xuICAgICAgICBjb25zdCBmbiA9ICRwYXJzZUV2ZW50KGV4cHJlc3Npb24pO1xuICAgICAgICBmbih0aGlzLnZpZXdQYXJlbnQsIE9iamVjdC5hc3NpZ24odGhpcy5jb250ZXh0LCB7JGV2ZW50fSkpO1xuICAgIH1cblxuICAgIC8vIGNoYW5nZSBhbmQgYmx1ciBldmVudHMgYXJlIGFkZGVkIGZyb20gdGhlIHRlbXBsYXRlXG4gICAgcHJvdGVjdGVkIGhhbmRsZUV2ZW50KG5vZGU6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uLCBsb2NhbHM6IGFueSkge1xuICAgICAgICBpZiAoZXZlbnROYW1lICE9PSAnc2VsZWN0Jykge1xuICAgICAgICAgICAgc3VwZXIuaGFuZGxlRXZlbnQodGhpcy5uYXRpdmVFbGVtZW50LCBldmVudE5hbWUsIGNhbGxiYWNrLCBsb2NhbHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJpZ2dlclVwbG9hZEV2ZW50KCRldmVudCwgZXZlbnROYW1lLCBmaWVsZE5hbWUsIHJvdykge1xuICAgICAgICBjb25zdCBwYXJhbXM6IGFueSA9IHskZXZlbnQsIHJvd307XG4gICAgICAgIGlmICghdGhpcy5jb2x1bW5zW2ZpZWxkTmFtZV0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnROYW1lID09PSAnY2hhbmdlJykge1xuICAgICAgICAgICAgcGFyYW1zLm5ld1ZhbCA9ICRldmVudC50YXJnZXQuZmlsZXM7XG4gICAgICAgICAgICBwYXJhbXMub2xkVmFsID0gdGhpcy5jb2x1bW5zW2ZpZWxkTmFtZV0uX29sZFVwbG9hZFZhbDtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1tmaWVsZE5hbWVdLl9vbGRVcGxvYWRWYWwgPSBwYXJhbXMubmV3VmFsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29sdW1uc1tmaWVsZE5hbWVdLmludm9rZUV2ZW50Q2FsbGJhY2soZXZlbnROYW1lLCBwYXJhbXMpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyRm9ybVdpZGdldCgpIHt9XG5cbiAgICAvLyBGb3JtIGNvbnRyb2wgYWNjZXNzb3IgbWV0aG9kcy4gVGhpcyB3aWxsIGJlIHVzZWQgZm9yIHRhYmxlIGluc2lkZSBmb3JtXG4gICAgd3JpdGVWYWx1ZSgpIHt9XG5cbiAgICBwcml2YXRlIF9vbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gICAgcHJpdmF0ZSBfb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm4pIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgICB9XG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm4pIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgbmdPbkRldGFjaCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRldGFjaCgpO1xuICAgICAgICBpZiAoZ2V0KHRoaXMuZGF0YXNvdXJjZSwgJ2NhdGVnb3J5JykgPT09ICd3bS5WYXJpYWJsZScgJiYgdGhpcy5nZXRDb25maWd1cmVkU3RhdGUoKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICB0aGlzLl9wYWdlTG9hZCA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcGFnZUxvYWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIiAqbmdJZj1cInRpdGxlIHx8IHN1YmhlYWRpbmcgfHwgaWNvbmNsYXNzIHx8IGV4cG9ydE9wdGlvbnMubGVuZ3RoIHx8IF9hY3Rpb25zLmhlYWRlci5sZW5ndGhcIj5cbiAgICA8aDMgY2xhc3M9XCJwYW5lbC10aXRsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHVsbC1sZWZ0XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHBhbmVsLWljb24ge3tpY29uY2xhc3N9fVwiICpuZ0lmPVwiaWNvbmNsYXNzXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInB1bGwtbGVmdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIiBbaW5uZXJIVE1MXT1cInRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIiBbaW5uZXJIVE1MXT1cInN1YmhlYWRpbmdcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1hY3Rpb25zIGFwcC1kYXRhZ3JpZC1hY3Rpb25zXCIgKm5nSWY9XCJleHBvcnRPcHRpb25zLmxlbmd0aCB8fCBfYWN0aW9ucy5oZWFkZXIubGVuZ3RoXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidG4gb2YgX2FjdGlvbnMuaGVhZGVyOyBsZXQgaW5kZXggPSBpbmRleDtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJidG4ud2lkZ2V0VHlwZSA9PT0gJ2J1dHRvbicgPyBidXR0b25SZWYgOiBhbmNob3JSZWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2J0bjpidG59XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRJbmplY3Rvcl09XCJjcmVhdGVDdXN0b21JbmplY3RvcignYWN0aW9uc19oZWFkZXJfJyArIGluZGV4LCB7YnRuOmJ0bn0pXCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxkaXYgd21NZW51IGRyb3Bkb3duIGNhcHRpb24uYmluZD1cImFwcExvY2FsZS5MQUJFTF9FWFBPUlRcIiAqbmdJZj1cImV4cG9ydE9wdGlvbnMubGVuZ3RoXCIgIGF1dG9jbG9zZT1cImFsd2F5c1wiIGF0dHIubmFtZT1cInt7bmFtZX19LWV4cG9ydFwiXG4gICAgICAgICAgICAgICAgZGF0YXNldC5iaW5kPVwiZXhwb3J0T3B0aW9uc1wiIHNlbGVjdC5ldmVudD1cImV4cG9ydCgkaXRlbSlcIiBtZW51cG9zaXRpb249XCJkb3duLGxlZnRcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9oMz5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImFwcC1kYXRhZ3JpZFwiICNkYXRhZ3JpZEVsZW1lbnQ+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJwYW5lbC1mb290ZXIgY2xlYXJmaXhcIiBbaGlkZGVuXT1cIiFfYWN0aW9ucy5mb290ZXIubGVuZ3RoICYmICghc2hvd25hdmlnYXRpb24gfHwgKG9uRGVtYW5kTG9hZCAmJiBkYXRhTmF2aWdhdG9yLmlzRGlzYWJsZU5leHQpIHx8IGRhdGFOYXZpZ2F0b3I/LmRhdGFTaXplIDw9IHBhZ2VzaXplKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJhcHAtZGF0YWdyaWQtcGFnaW5hdG9yXCIgW2hpZGRlbl09XCIoIWRhdGFOYXZpZ2F0b3I/LmRhdGFTaXplICYmICFkYXRhTmF2aWdhdG9yLmRhdGFzb3VyY2U/LnBhZ2luYXRpb24/Lm5leHQpIHx8ICFzaG93bmF2aWdhdGlvbiB8fCAob25EZW1hbmRMb2FkICYmIGRhdGFOYXZpZ2F0b3IuaXNEaXNhYmxlTmV4dCkgfHwgZGF0YU5hdmlnYXRvcj8uZGF0YVNpemUgPD0gcGFnZXNpemVcIj5cbiAgICAgICAgPG5hdiB3bVBhZ2luYXRpb24gc2hvdy5iaW5kPVwic2hvd25hdmlnYXRpb25cIiBuYXZpZ2F0aW9uYWxpZ24uYmluZD1cIm5hdmlnYXRpb25hbGlnblwiXG4gICAgICAgICAgICAgbmF2aWdhdGlvbnNpemUuYmluZD1cIm5hdmlnYXRpb25TaXplXCJcbiAgICAgICAgICAgICBuYXZpZ2F0aW9uLmJpbmQ9XCJuYXZDb250cm9sc1wiIHNob3dyZWNvcmRjb3VudC5iaW5kPVwic2hvd3JlY29yZGNvdW50XCIgbWF4c2l6ZS5iaW5kPVwibWF4c2l6ZVwiXG4gICAgICAgICAgICAgYm91bmRhcnlsaW5rcy5iaW5kPVwiYm91bmRhcnlsaW5rc1wiXG4gICAgICAgICAgICAgZm9yY2VlbGxpcHNlcy5iaW5kPVwiZm9yY2VlbGxpcHNlc1wiIGRpcmVjdGlvbmxpbmtzLmJpbmQ9XCJkaXJlY3Rpb25saW5rc1wiPjwvbmF2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhcHAtZGF0YWdyaWQtYWN0aW9uc1wiICpuZ0lmPVwiX2FjdGlvbnMuZm9vdGVyLmxlbmd0aFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidG4gb2YgX2FjdGlvbnMuZm9vdGVyOyBsZXQgaW5kZXggPSBpbmRleDtcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ0bi53aWRnZXRUeXBlID09PSAnYnV0dG9uJyA/IGJ1dHRvblJlZiA6IGFuY2hvclJlZlwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntidG46YnRufVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRJbmplY3Rvcl09XCJjcmVhdGVDdXN0b21JbmplY3RvcignYWN0aW9uc19mb290ZXJfJyArIGluZGV4LCB7YnRuOmJ0bn0pXCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9uUmVmIGxldC1idG49XCJidG5cIj5cbiAgICA8YnV0dG9uIHdtQnV0dG9uIGNhcHRpb24uYmluZD1cImJ0bi5kaXNwbGF5TmFtZVwiIHNob3cuYmluZD1cImJ0bi5zaG93XCIgY2xhc3MuYmluZD1cImJ0bi5jbGFzc1wiICBpY29uY2xhc3MuYmluZD1cImJ0bi5pY29uY2xhc3NcIiAoY2xpY2spPVwiaW52b2tlQWN0aW9uRXZlbnQoJGV2ZW50LCBidG4uYWN0aW9uKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2J0bi1zbSc6IHNwYWNpbmcgPT09ICdjb25kZW5zZWQnLCAnZGlzYWJsZWQtbmV3JzogYnRuLmtleSA9PT0gJ2FkZE5ld1JvdycgJiYgKGlzR3JpZEVkaXRNb2RlIHx8IGlzTG9hZGluZyl9XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBzaG9ydGN1dGtleS5iaW5kPVwiYnRuLnNob3J0Y3V0a2V5XCIgdGFiaW5kZXguYmluZD1cImJ0bi50YWJpbmRleFwiIGhpbnQuYmluZD1cImJ0bi50aXRsZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYnRuLmRpc3BsYXlOYW1lXCIgZGlzYWJsZWQuYmluZD1cImJ0bi5kaXNhYmxlZFwiIGNvbmRpdGlvbmFsY2xhc3MuYmluZD1cImJ0bi5jb25kaXRpb25hbGNsYXNzXCIgY29uZGl0aW9uYWxzdHlsZS5iaW5kPVwiYnRuLmNvbmRpdGlvbmFsc3R5bGVcIj48L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYW5jaG9yUmVmIGxldC1idG49XCJidG5cIj5cbiAgICA8YSB3bUFuY2hvciBjYXB0aW9uLmJpbmQ9XCJidG4uZGlzcGxheU5hbWVcIiBzaG93LmJpbmQ9XCJidG4uc2hvd1wiIGNsYXNzLmJpbmQ9XCJidG4uY2xhc3NcIiAgaWNvbmNsYXNzLmJpbmQ9XCJidG4uaWNvbmNsYXNzXCIgKGNsaWNrKT1cImludm9rZUFjdGlvbkV2ZW50KCRldmVudCwgYnRuLmFjdGlvbilcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydidG4tc20nOiBzcGFjaW5nID09PSAnY29uZGVuc2VkJywgJ2Rpc2FibGVkLW5ldyc6IGJ0bi5rZXkgPT09ICdhZGROZXdSb3cnICYmIChpc0dyaWRFZGl0TW9kZSB8fCBpc0xvYWRpbmcpfVwiXG4gICAgICAgICAgICBzaG9ydGN1dGtleS5iaW5kPVwiYnRuLnNob3J0Y3V0a2V5XCIgdGFiaW5kZXguYmluZD1cImJ0bi50YWJpbmRleFwiIGhpbnQuYmluZD1cImJ0bi50aXRsZVwiXG4gICAgICAgICAgICBoeXBlcmxpbmsuYmluZD1cImJ0bi5oeXBlcmxpbmtcIiB0YXJnZXQuYmluZD1cImJ0bi50YXJnZXRcIiBjb25kaXRpb25hbGNsYXNzLmJpbmQ9XCJidG4uY29uZGl0aW9uYWxjbGFzc1wiIGNvbmRpdGlvbmFsc3R5bGUuYmluZD1cImJ0bi5jb25kaXRpb25hbHN0eWxlXCI+PC9hPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGRpdiBoaWRkZW4+XG4gICAgPG5nLWNvbnRhaW5lciAjbXVsdGlDb2x1bW5GaWx0ZXJWaWV3PjwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAjaW5saW5lRWRpdFZpZXc+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICNpbmxpbmVFZGl0TmV3Vmlldz48L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgI3Jvd0FjdGlvbnNWaWV3PjwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAjcm93RXhwYW5zaW9uQWN0aW9uVmlldz48L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgI2N1c3RvbUV4cHJWaWV3PjwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAjZHluYW1pY1RhYmxlPjwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAjcm93RGV0YWlsVmlldz48L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLXRhYmxlLWNvbnRhaW5lclwiPjwvZGl2PlxuPC9kaXY+XG4iXX0=