@norwegian/core-components 6.60.0 → 7.0.1

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 (333) hide show
  1. package/assets/fonts/NorwegianDisplay-Bold.ttf +0 -0
  2. package/assets/fonts/NorwegianDisplay-Regular.ttf +0 -0
  3. package/assets/fonts/NorwegianDisplayPro-Bold.otf +0 -0
  4. package/assets/fonts/NorwegianDisplayPro-Bold.woff +0 -0
  5. package/assets/fonts/NorwegianDisplayPro-Bold.woff2 +0 -0
  6. package/assets/fonts/NorwegianDisplayPro-Regular.otf +0 -0
  7. package/assets/fonts/NorwegianDisplayPro-Regular.woff +0 -0
  8. package/assets/fonts/NorwegianDisplayPro-Regular.woff2 +0 -0
  9. package/assets/fonts/NorwegianText-Bold.ttf +0 -0
  10. package/assets/fonts/NorwegianText-BoldItalic.ttf +0 -0
  11. package/assets/fonts/NorwegianText-Regular.ttf +0 -0
  12. package/assets/fonts/NorwegianText-RegularItalic.ttf +0 -0
  13. package/assets/fonts/NorwegianTextPro-Bold.otf +0 -0
  14. package/assets/fonts/NorwegianTextPro-Bold.woff +0 -0
  15. package/assets/fonts/NorwegianTextPro-Bold.woff2 +0 -0
  16. package/assets/fonts/NorwegianTextPro-BoldItalic.otf +0 -0
  17. package/assets/fonts/NorwegianTextPro-BoldItalic.woff +0 -0
  18. package/assets/fonts/NorwegianTextPro-BoldItalic.woff2 +0 -0
  19. package/assets/fonts/NorwegianTextPro-Regular.otf +0 -0
  20. package/assets/fonts/NorwegianTextPro-Regular.woff +0 -0
  21. package/assets/fonts/NorwegianTextPro-Regular.woff2 +0 -0
  22. package/assets/fonts/NorwegianTextPro-RegularItalic.otf +0 -0
  23. package/assets/fonts/NorwegianTextPro-RegularItalic.woff +0 -0
  24. package/assets/fonts/NorwegianTextPro-RegularItalic.woff2 +0 -0
  25. package/esm2022/lib/components/accordion/accordion.component.mjs +3 -3
  26. package/esm2022/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.mjs +10 -7
  27. package/esm2022/lib/components/airport-select/airport-select.component.mjs +45 -12
  28. package/esm2022/lib/components/airport-select/airport-select.module.mjs +4 -4
  29. package/esm2022/lib/components/airport-select/index.mjs +1 -2
  30. package/esm2022/lib/components/airport-select/models/results-labels.model.mjs +1 -1
  31. package/esm2022/lib/components/airport-select/services/airport-select-dropdown.service.mjs +2 -2
  32. package/esm2022/lib/components/airport-select/services/airport-select.service.mjs +3 -3
  33. package/esm2022/lib/components/alert/alert.component.mjs +5 -5
  34. package/esm2022/lib/components/alert/alert.module.mjs +4 -4
  35. package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +25 -5
  36. package/esm2022/lib/components/autocomplete/autocomplete.module.mjs +4 -4
  37. package/esm2022/lib/components/autocomplete/index.mjs +1 -2
  38. package/esm2022/lib/components/box/box.component.mjs +2 -2
  39. package/esm2022/lib/components/button/button.component.mjs +16 -11
  40. package/esm2022/lib/components/button/button.module.mjs +1 -1
  41. package/esm2022/lib/components/campaign-header/campaign-header.component.mjs +2 -2
  42. package/esm2022/lib/components/checkbox/checkbox.component.mjs +4 -4
  43. package/esm2022/lib/components/checkbox/checkbox.module.mjs +1 -1
  44. package/esm2022/lib/components/continue/continue.component.mjs +2 -2
  45. package/esm2022/lib/components/continue/continue.module.mjs +1 -1
  46. package/esm2022/lib/components/cover/cover.component.mjs +2 -2
  47. package/esm2022/lib/components/cover/cover.module.mjs +1 -1
  48. package/esm2022/lib/components/datepicker/calendar/calendar.component.mjs +29 -5
  49. package/esm2022/lib/components/datepicker/calendar/models/day.model.mjs +1 -1
  50. package/esm2022/lib/components/datepicker/calendar/models/select-option.model.mjs +1 -1
  51. package/esm2022/lib/components/datepicker/calendar/models/week.model.mjs +1 -1
  52. package/esm2022/lib/components/datepicker/datepicker.component.mjs +25 -11
  53. package/esm2022/lib/components/datepicker/datepicker.module.mjs +4 -4
  54. package/esm2022/lib/components/datepicker/index.mjs +2 -1
  55. package/esm2022/lib/components/datepicker/services/calendar.service.mjs +7 -5
  56. package/esm2022/lib/components/datepicker-combo/datepicker-combo.component.mjs +38 -11
  57. package/esm2022/lib/components/datepicker-combo/datepicker-combo.module.mjs +14 -6
  58. package/esm2022/lib/components/divider/divider.component.mjs +4 -4
  59. package/esm2022/lib/components/divider/divider.module.mjs +6 -6
  60. package/esm2022/lib/components/dropdown/dropdown.component.mjs +2 -2
  61. package/esm2022/lib/components/filter/filter.component.mjs +139 -72
  62. package/esm2022/lib/components/filter/filter.module.mjs +23 -11
  63. package/esm2022/lib/components/filter/index.mjs +2 -1
  64. package/esm2022/lib/components/icon-list/icon-list.component.mjs +2 -2
  65. package/esm2022/lib/components/index.mjs +13 -15
  66. package/esm2022/lib/components/info/info.component.mjs +2 -2
  67. package/esm2022/lib/components/input/input.component.mjs +61 -14
  68. package/esm2022/lib/components/input/input.module.mjs +2 -2
  69. package/esm2022/lib/components/journey/journey.component.mjs +2 -2
  70. package/esm2022/lib/components/journey-availability/journey-availability.component.mjs +2 -2
  71. package/esm2022/lib/components/journey-availability-list/journey-availability-list.component.mjs +2 -2
  72. package/esm2022/lib/components/journey-selection/journey-selection.component.mjs +2 -2
  73. package/esm2022/lib/components/journey-stopover/journey-stopover.component.mjs +2 -2
  74. package/esm2022/lib/components/list/list.component.mjs +3 -3
  75. package/esm2022/lib/components/micro-button/micro-button.component.mjs +2 -2
  76. package/esm2022/lib/components/modal/modal.component.mjs +2 -2
  77. package/esm2022/lib/components/number-field/number-field.component.mjs +11 -4
  78. package/esm2022/lib/components/number-field/number-field.module.mjs +1 -1
  79. package/esm2022/lib/components/page-footer/page-footer.component.mjs +2 -2
  80. package/esm2022/lib/components/page-header/page-header.component.mjs +2 -2
  81. package/esm2022/lib/components/page-header/page-header.module.mjs +2 -6
  82. package/esm2022/lib/components/page-header/search/search.component.mjs +2 -2
  83. package/esm2022/lib/components/page-header/wallet/wallet.component.mjs +9 -6
  84. package/esm2022/lib/components/passenger-select/index.mjs +3 -1
  85. package/esm2022/lib/components/passenger-select/models/passengers.model.mjs +1 -1
  86. package/esm2022/lib/components/passenger-select/passenger-select.component.mjs +5 -5
  87. package/esm2022/lib/components/passenger-select/passenger-select.module.mjs +14 -6
  88. package/esm2022/lib/components/phone-number/phone-number.component.mjs +2 -2
  89. package/esm2022/lib/components/radio/radio.component.mjs +4 -4
  90. package/esm2022/lib/components/ribbon-banner/ribbon-banner.component.mjs +2 -2
  91. package/esm2022/lib/components/select/select.component.mjs +2 -2
  92. package/esm2022/lib/components/simple-list/simple-list.component.mjs +2 -2
  93. package/esm2022/lib/components/slide-toggle/slide-toggle.component.mjs +14 -14
  94. package/esm2022/lib/components/slide-toggle/slide-toggle.module.mjs +1 -1
  95. package/esm2022/lib/components/slider/slider.component.mjs +4 -4
  96. package/esm2022/lib/components/sort/sort.component.mjs +2 -2
  97. package/esm2022/lib/components/sort/sort.module.mjs +1 -1
  98. package/esm2022/lib/components/spinner/spinner.component.mjs +2 -2
  99. package/esm2022/lib/components/status-box/status-box.component.mjs +5 -6
  100. package/esm2022/lib/components/status-box/status-box.module.mjs +5 -5
  101. package/esm2022/lib/components/subsidy-discount/subsidy-discount.component.mjs +2 -2
  102. package/esm2022/lib/components/suggestions/suggestions.component.mjs +3 -3
  103. package/esm2022/lib/components/tab-group/tab/tab.component.mjs +2 -2
  104. package/esm2022/lib/components/table/table.component.mjs +2 -2
  105. package/esm2022/lib/components/tag/tag.component.mjs +2 -2
  106. package/esm2022/lib/components/textarea/textarea.component.mjs +2 -2
  107. package/esm2022/lib/components/toggle/toggle.component.mjs +2 -2
  108. package/esm2022/lib/components/trip-summary/trip-summary.component.mjs +2 -2
  109. package/esm2022/lib/core/directives/nas-class/nas-class.module.mjs +1 -1
  110. package/fesm2022/norwegian-core-components.mjs +4605 -10823
  111. package/fesm2022/norwegian-core-components.mjs.map +1 -1
  112. package/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.d.ts +3 -2
  113. package/lib/components/airport-select/airport-select.component.d.ts +22 -6
  114. package/lib/components/airport-select/index.d.ts +0 -1
  115. package/lib/components/alert/alert.module.d.ts +4 -4
  116. package/lib/components/autocomplete/autocomplete.component.d.ts +8 -4
  117. package/lib/components/autocomplete/index.d.ts +0 -1
  118. package/lib/components/button/button.component.d.ts +35 -26
  119. package/lib/components/checkbox/checkbox.component.d.ts +1 -1
  120. package/lib/components/datepicker/calendar/calendar.component.d.ts +11 -1
  121. package/lib/components/datepicker/calendar/models/day.model.d.ts +1 -0
  122. package/lib/components/datepicker/datepicker.component.d.ts +20 -2
  123. package/lib/components/datepicker/index.d.ts +1 -0
  124. package/lib/components/datepicker-combo/datepicker-combo.component.d.ts +26 -3
  125. package/lib/components/divider/divider.module.d.ts +3 -3
  126. package/lib/components/filter/filter.component.d.ts +80 -24
  127. package/lib/components/filter/filter.module.d.ts +10 -7
  128. package/lib/components/filter/index.d.ts +1 -0
  129. package/lib/components/index.d.ts +12 -14
  130. package/lib/components/input/input.component.d.ts +21 -17
  131. package/lib/components/list/list.component.d.ts +1 -1
  132. package/lib/components/number-field/number-field.component.d.ts +10 -2
  133. package/lib/components/page-header/page-header.module.d.ts +2 -3
  134. package/lib/components/page-header/wallet/wallet.component.d.ts +1 -0
  135. package/lib/components/passenger-select/index.d.ts +2 -0
  136. package/lib/components/passenger-select/models/passengers.model.d.ts +1 -0
  137. package/lib/components/passenger-select/passenger-select.component.d.ts +2 -2
  138. package/lib/components/radio/radio.component.d.ts +1 -1
  139. package/lib/components/slide-toggle/slide-toggle.component.d.ts +9 -9
  140. package/lib/components/slider/slider.component.d.ts +3 -3
  141. package/lib/components/status-box/status-box.component.d.ts +3 -3
  142. package/lib/components/status-box/status-box.module.d.ts +2 -2
  143. package/package.json +1 -1
  144. package/styles/1__settings/_colors.scss +107 -53
  145. package/styles/1__settings/_mixins.scss +78 -30
  146. package/styles/1__settings/_type.scss +17 -43
  147. package/styles/2__generic/_fonts.scss +16 -28
  148. package/styles/3__base/_body.scss +3 -3
  149. package/styles/3__base/_heading.scss +28 -20
  150. package/styles/3__base/_hr.scss +4 -4
  151. package/styles/3__base/_input.scss +3 -3
  152. package/styles/3__base/_link.scss +17 -17
  153. package/styles/3__base/_table.scss +9 -5
  154. package/styles/3__base/_type.scss +4 -4
  155. package/assets/documentation/autocomplete-new/autocomplete-new.md +0 -1
  156. package/assets/documentation/datepicker/calendar/calendar.md +0 -3
  157. package/assets/documentation/filter-new/filter-new.md +0 -0
  158. package/assets/documentation/number-field-new/number-field-new.md +0 -1
  159. package/assets/documentation/page-header-old/page-header-old.md +0 -1
  160. package/assets/documentation/weather-icon/weather-icon.md +0 -1
  161. package/assets/fonts/apercu_bold_italic_pro-web.eot +0 -0
  162. package/assets/fonts/apercu_bold_italic_pro-web.svg +0 -12420
  163. package/assets/fonts/apercu_bold_italic_pro-web.ttf +0 -0
  164. package/assets/fonts/apercu_bold_italic_pro-web.woff +0 -0
  165. package/assets/fonts/apercu_bold_italic_pro-web.woff2 +0 -0
  166. package/assets/fonts/apercu_bold_italic_pro.otf +0 -0
  167. package/assets/fonts/apercu_bold_pro-web.eot +0 -0
  168. package/assets/fonts/apercu_bold_pro-web.svg +0 -10193
  169. package/assets/fonts/apercu_bold_pro-web.ttf +0 -0
  170. package/assets/fonts/apercu_bold_pro-web.woff +0 -0
  171. package/assets/fonts/apercu_bold_pro-web.woff2 +0 -0
  172. package/assets/fonts/apercu_bold_pro.otf +0 -0
  173. package/assets/fonts/apercu_light_italic_pro-web.eot +0 -0
  174. package/assets/fonts/apercu_light_italic_pro-web.svg +0 -12831
  175. package/assets/fonts/apercu_light_italic_pro-web.ttf +0 -0
  176. package/assets/fonts/apercu_light_italic_pro-web.woff +0 -0
  177. package/assets/fonts/apercu_light_italic_pro-web.woff2 +0 -0
  178. package/assets/fonts/apercu_light_pro-web.eot +0 -0
  179. package/assets/fonts/apercu_light_pro-web.svg +0 -9704
  180. package/assets/fonts/apercu_light_pro-web.ttf +0 -0
  181. package/assets/fonts/apercu_light_pro-web.woff +0 -0
  182. package/assets/fonts/apercu_light_pro-web.woff2 +0 -0
  183. package/assets/fonts/apercu_medium_italic_pro-web.eot +0 -0
  184. package/assets/fonts/apercu_medium_italic_pro-web.svg +0 -12354
  185. package/assets/fonts/apercu_medium_italic_pro-web.ttf +0 -0
  186. package/assets/fonts/apercu_medium_italic_pro-web.woff +0 -0
  187. package/assets/fonts/apercu_medium_italic_pro-web.woff2 +0 -0
  188. package/assets/fonts/apercu_medium_italic_pro.otf +0 -0
  189. package/assets/fonts/apercu_medium_pro-web.eot +0 -0
  190. package/assets/fonts/apercu_medium_pro-web.svg +0 -12254
  191. package/assets/fonts/apercu_medium_pro-web.ttf +0 -0
  192. package/assets/fonts/apercu_medium_pro-web.woff +0 -0
  193. package/assets/fonts/apercu_medium_pro-web.woff2 +0 -0
  194. package/assets/fonts/apercu_medium_pro.otf +0 -0
  195. package/assets/fonts/apercu_mono_pro-web.eot +0 -0
  196. package/assets/fonts/apercu_mono_pro-web.svg +0 -538
  197. package/assets/fonts/apercu_mono_pro-web.ttf +0 -0
  198. package/assets/fonts/apercu_mono_pro-web.woff +0 -0
  199. package/assets/fonts/apercu_mono_pro-web.woff2 +0 -0
  200. package/assets/fonts/apercu_regular_italic_pro-web.eot +0 -0
  201. package/assets/fonts/apercu_regular_italic_pro-web.svg +0 -13059
  202. package/assets/fonts/apercu_regular_italic_pro-web.ttf +0 -0
  203. package/assets/fonts/apercu_regular_italic_pro-web.woff +0 -0
  204. package/assets/fonts/apercu_regular_italic_pro-web.woff2 +0 -0
  205. package/assets/fonts/apercu_regular_italic_pro.otf +0 -0
  206. package/assets/fonts/apercu_regular_pro-web.eot +0 -0
  207. package/assets/fonts/apercu_regular_pro-web.svg +0 -11356
  208. package/assets/fonts/apercu_regular_pro-web.ttf +0 -0
  209. package/assets/fonts/apercu_regular_pro-web.woff +0 -0
  210. package/assets/fonts/apercu_regular_pro-web.woff2 +0 -0
  211. package/assets/fonts/apercu_regular_pro.otf +0 -0
  212. package/esm2022/lib/components/airport-select-new/airport-select-dropdown/airport-select-dropdown.component.mjs +0 -611
  213. package/esm2022/lib/components/airport-select-new/airport-select-new.component.mjs +0 -477
  214. package/esm2022/lib/components/airport-select-new/airport-select-new.module.mjs +0 -42
  215. package/esm2022/lib/components/airport-select-new/index.mjs +0 -4
  216. package/esm2022/lib/components/airport-select-new/models/airport.model.mjs +0 -2
  217. package/esm2022/lib/components/airport-select-new/models/results-labels.model.mjs +0 -3
  218. package/esm2022/lib/components/airport-select-new/services/airport-select-dropdown.service.mjs +0 -35
  219. package/esm2022/lib/components/airport-select-new/services/airport-select.service.mjs +0 -38
  220. package/esm2022/lib/components/autocomplete-new/autocomplete-new.component.mjs +0 -309
  221. package/esm2022/lib/components/autocomplete-new/autocomplete-new.module.mjs +0 -43
  222. package/esm2022/lib/components/autocomplete-new/index.mjs +0 -3
  223. package/esm2022/lib/components/autocomplete-new/models/autocomplete-new.model.mjs +0 -2
  224. package/esm2022/lib/components/button-new/button-new.component.mjs +0 -176
  225. package/esm2022/lib/components/button-new/button-new.module.mjs +0 -21
  226. package/esm2022/lib/components/button-new/index.mjs +0 -3
  227. package/esm2022/lib/components/checkbox-new/checkbox-new.component.mjs +0 -150
  228. package/esm2022/lib/components/checkbox-new/checkbox-new.module.mjs +0 -20
  229. package/esm2022/lib/components/checkbox-new/index.mjs +0 -3
  230. package/esm2022/lib/components/datepicker-combo-new/datepicker-combo-new.component.mjs +0 -397
  231. package/esm2022/lib/components/datepicker-combo-new/datepicker-combo-new.module.mjs +0 -31
  232. package/esm2022/lib/components/datepicker-combo-new/index.mjs +0 -3
  233. package/esm2022/lib/components/datepicker-new/calendar-new/calendar-date.model.mjs +0 -2
  234. package/esm2022/lib/components/datepicker-new/calendar-new/calendar-new.component.mjs +0 -594
  235. package/esm2022/lib/components/datepicker-new/calendar-new/enums/week-start.enum.mjs +0 -6
  236. package/esm2022/lib/components/datepicker-new/calendar-new/models/day.model.mjs +0 -2
  237. package/esm2022/lib/components/datepicker-new/calendar-new/models/select-option.model.mjs +0 -2
  238. package/esm2022/lib/components/datepicker-new/calendar-new/models/week.model.mjs +0 -2
  239. package/esm2022/lib/components/datepicker-new/datepicker-new.component.mjs +0 -572
  240. package/esm2022/lib/components/datepicker-new/datepicker-new.module.mjs +0 -55
  241. package/esm2022/lib/components/datepicker-new/index.mjs +0 -5
  242. package/esm2022/lib/components/datepicker-new/services/calendar.service.mjs +0 -215
  243. package/esm2022/lib/components/filter-new/enums/trip-type.enum.mjs +0 -8
  244. package/esm2022/lib/components/filter-new/filter-new.component.mjs +0 -1349
  245. package/esm2022/lib/components/filter-new/filter-new.module.mjs +0 -105
  246. package/esm2022/lib/components/filter-new/index.mjs +0 -4
  247. package/esm2022/lib/components/input-text/index.mjs +0 -3
  248. package/esm2022/lib/components/input-text/input-text.component.mjs +0 -231
  249. package/esm2022/lib/components/input-text/input-text.module.mjs +0 -35
  250. package/esm2022/lib/components/number-field-new/index.mjs +0 -3
  251. package/esm2022/lib/components/number-field-new/models/number-field-new.model.mjs +0 -2
  252. package/esm2022/lib/components/number-field-new/number-field-new.component.mjs +0 -155
  253. package/esm2022/lib/components/number-field-new/number-field-new.module.mjs +0 -39
  254. package/esm2022/lib/components/page-header-old/index.mjs +0 -5
  255. package/esm2022/lib/components/page-header-old/old-hamburger/old-hamburger.component.mjs +0 -22
  256. package/esm2022/lib/components/page-header-old/old-search/old-search.component.mjs +0 -49
  257. package/esm2022/lib/components/page-header-old/page-header-old.component.mjs +0 -160
  258. package/esm2022/lib/components/page-header-old/page-header-old.module.mjs +0 -44
  259. package/esm2022/lib/components/passenger-select-new/enums/passenger-type.enum.mjs +0 -9
  260. package/esm2022/lib/components/passenger-select-new/index.mjs +0 -5
  261. package/esm2022/lib/components/passenger-select-new/models/passengers.model.mjs +0 -2
  262. package/esm2022/lib/components/passenger-select-new/passenger-select-new.component.mjs +0 -423
  263. package/esm2022/lib/components/passenger-select-new/passenger-select-new.module.mjs +0 -28
  264. package/esm2022/lib/components/radio-new/index.mjs +0 -3
  265. package/esm2022/lib/components/radio-new/radio-new.component.mjs +0 -100
  266. package/esm2022/lib/components/radio-new/radio-new.module.mjs +0 -20
  267. package/esm2022/lib/components/slide-toggle-new/index.mjs +0 -3
  268. package/esm2022/lib/components/slide-toggle-new/slide-toggle-new.component.mjs +0 -115
  269. package/esm2022/lib/components/slide-toggle-new/slide-toggle-new.module.mjs +0 -20
  270. package/esm2022/lib/components/weather-icon/index.mjs +0 -3
  271. package/esm2022/lib/components/weather-icon/weather-icon.component.mjs +0 -61
  272. package/esm2022/lib/components/weather-icon/weather-icon.module.mjs +0 -19
  273. package/lib/components/airport-select-new/airport-select-dropdown/airport-select-dropdown.component.d.ts +0 -97
  274. package/lib/components/airport-select-new/airport-select-new.component.d.ts +0 -302
  275. package/lib/components/airport-select-new/airport-select-new.module.d.ts +0 -13
  276. package/lib/components/airport-select-new/index.d.ts +0 -2
  277. package/lib/components/airport-select-new/models/airport.model.d.ts +0 -11
  278. package/lib/components/airport-select-new/models/results-labels.model.d.ts +0 -7
  279. package/lib/components/airport-select-new/services/airport-select-dropdown.service.d.ts +0 -10
  280. package/lib/components/airport-select-new/services/airport-select.service.d.ts +0 -8
  281. package/lib/components/autocomplete-new/autocomplete-new.component.d.ts +0 -135
  282. package/lib/components/autocomplete-new/autocomplete-new.module.d.ts +0 -13
  283. package/lib/components/autocomplete-new/index.d.ts +0 -2
  284. package/lib/components/autocomplete-new/models/autocomplete-new.model.d.ts +0 -5
  285. package/lib/components/button-new/button-new.component.d.ts +0 -276
  286. package/lib/components/button-new/button-new.module.d.ts +0 -11
  287. package/lib/components/button-new/index.d.ts +0 -2
  288. package/lib/components/checkbox-new/checkbox-new.component.d.ts +0 -138
  289. package/lib/components/checkbox-new/checkbox-new.module.d.ts +0 -10
  290. package/lib/components/checkbox-new/index.d.ts +0 -2
  291. package/lib/components/datepicker-combo-new/datepicker-combo-new.component.d.ts +0 -309
  292. package/lib/components/datepicker-combo-new/datepicker-combo-new.module.d.ts +0 -10
  293. package/lib/components/datepicker-combo-new/index.d.ts +0 -2
  294. package/lib/components/datepicker-new/calendar-new/calendar-date.model.d.ts +0 -5
  295. package/lib/components/datepicker-new/calendar-new/calendar-new.component.d.ts +0 -159
  296. package/lib/components/datepicker-new/calendar-new/enums/week-start.enum.d.ts +0 -4
  297. package/lib/components/datepicker-new/calendar-new/models/day.model.d.ts +0 -10
  298. package/lib/components/datepicker-new/calendar-new/models/select-option.model.d.ts +0 -4
  299. package/lib/components/datepicker-new/calendar-new/models/week.model.d.ts +0 -5
  300. package/lib/components/datepicker-new/datepicker-new.component.d.ts +0 -278
  301. package/lib/components/datepicker-new/datepicker-new.module.d.ts +0 -16
  302. package/lib/components/datepicker-new/index.d.ts +0 -4
  303. package/lib/components/datepicker-new/services/calendar.service.d.ts +0 -27
  304. package/lib/components/filter-new/enums/trip-type.enum.d.ts +0 -6
  305. package/lib/components/filter-new/filter-new.component.d.ts +0 -838
  306. package/lib/components/filter-new/filter-new.module.d.ts +0 -28
  307. package/lib/components/filter-new/index.d.ts +0 -3
  308. package/lib/components/input-text/index.d.ts +0 -2
  309. package/lib/components/input-text/input-text.component.d.ts +0 -203
  310. package/lib/components/input-text/input-text.module.d.ts +0 -11
  311. package/lib/components/number-field-new/index.d.ts +0 -2
  312. package/lib/components/number-field-new/models/number-field-new.model.d.ts +0 -5
  313. package/lib/components/number-field-new/number-field-new.component.d.ts +0 -116
  314. package/lib/components/number-field-new/number-field-new.module.d.ts +0 -12
  315. package/lib/components/page-header-old/index.d.ts +0 -4
  316. package/lib/components/page-header-old/old-hamburger/old-hamburger.component.d.ts +0 -12
  317. package/lib/components/page-header-old/old-search/old-search.component.d.ts +0 -26
  318. package/lib/components/page-header-old/page-header-old.component.d.ts +0 -112
  319. package/lib/components/page-header-old/page-header-old.module.d.ts +0 -14
  320. package/lib/components/passenger-select-new/enums/passenger-type.enum.d.ts +0 -7
  321. package/lib/components/passenger-select-new/index.d.ts +0 -4
  322. package/lib/components/passenger-select-new/models/passengers.model.d.ts +0 -10
  323. package/lib/components/passenger-select-new/passenger-select-new.component.d.ts +0 -141
  324. package/lib/components/passenger-select-new/passenger-select-new.module.d.ts +0 -10
  325. package/lib/components/radio-new/index.d.ts +0 -2
  326. package/lib/components/radio-new/radio-new.component.d.ts +0 -135
  327. package/lib/components/radio-new/radio-new.module.d.ts +0 -10
  328. package/lib/components/slide-toggle-new/index.d.ts +0 -2
  329. package/lib/components/slide-toggle-new/slide-toggle-new.component.d.ts +0 -70
  330. package/lib/components/slide-toggle-new/slide-toggle-new.module.d.ts +0 -10
  331. package/lib/components/weather-icon/index.d.ts +0 -2
  332. package/lib/components/weather-icon/weather-icon.component.d.ts +0 -60
  333. package/lib/components/weather-icon/weather-icon.module.d.ts +0 -9
@@ -1,477 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewEncapsulation, ViewChild, HostListener } from '@angular/core';
2
- import { NasComponentBase } from '../../core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "../../core/directives/nas-class/nas-class.directive";
6
- import * as i3 from "../icon/icon.component";
7
- import * as i4 from "./airport-select-dropdown/airport-select-dropdown.component";
8
- /**
9
- * @description
10
- * Norwegian Airport Select Component | New design | Beta
11
- */
12
- export class AirportSelectNewComponent extends NasComponentBase {
13
- /**
14
- * @property Input
15
- * @description
16
- * The airport code of the origin airport. It will set the selected origin airport based on this value.
17
- */
18
- get originAirportCode() {
19
- return this.originAirportCodeValue;
20
- }
21
- set originAirportCode(code) {
22
- if (code) {
23
- if (code !== this.originAirportCodeValue) {
24
- this.originAirportCodeValue = code;
25
- this.setOrigin();
26
- }
27
- }
28
- else {
29
- this.originAirportCodeValue = '';
30
- this.clearOrigin();
31
- }
32
- }
33
- /**
34
- * @property Input
35
- * @description
36
- * The airport code of the destination airport. It will set the selected destination airport based on this value.
37
- */
38
- get destinationAirportCode() {
39
- return this.destinationAirportCodeValue;
40
- }
41
- set destinationAirportCode(code) {
42
- if (code) {
43
- if (code !== this.destinationAirportCodeValue) {
44
- this.destinationAirportCodeValue = code;
45
- this.setDestination();
46
- }
47
- }
48
- else {
49
- this.destinationAirportCodeValue = '';
50
- this.clearDestination();
51
- }
52
- }
53
- constructor() {
54
- super('nas-airport-select-new');
55
- this.airportsDestination = new Array();
56
- this.focusDestination = false;
57
- this.focusedLatestSearchesIndexDestination = -1;
58
- this.focusedAirportIndexDestination = -1;
59
- this.switchType = 'switch';
60
- this.inlineFlex = false;
61
- this.resultsLabels = {
62
- allAirports: '',
63
- closestAirports: '',
64
- latestSearches: '',
65
- geolocation: '',
66
- geolocationDenied: ''
67
- };
68
- this.originOpen = false;
69
- this.destinationOpen = false;
70
- this.cleared = false;
71
- /**
72
- * @property Input
73
- * @required
74
- * @description
75
- * A label that will appear on top of the origin airport input field.
76
- */
77
- this.labelOrigin = '';
78
- /**
79
- * @property Input
80
- * @description
81
- * A placeholder that will appear on the origin airport input field.
82
- */
83
- this.placeholderOrigin = '';
84
- /**
85
- * @property Input
86
- * @description
87
- * A label that will appear on top of the destination airport input field.
88
- */
89
- this.labelDestination = '';
90
- /**
91
- * @property Input
92
- * @description
93
- * A placeholder that will appear on the destination airport input field.
94
- */
95
- this.placeholderDestination = '';
96
- /**
97
- * @property Output
98
- * @description
99
- * An event that is fired every time the selected origin airport changes.
100
- */
101
- this.originChange = new EventEmitter();
102
- /**
103
- * @property Output
104
- * @description
105
- * An event that is fired every time the origin dropdown selector opens or closes.
106
- */
107
- this.originOpenChange = new EventEmitter();
108
- /**
109
- * @property Output
110
- * @description
111
- * An event that is fired every time the origin dropdown selector opens or closes.
112
- */
113
- this.destinationChange = new EventEmitter();
114
- /**
115
- * @property Output
116
- * @description
117
- * An event that is fired every time the destination dropdown selector opens or closes.
118
- */
119
- this.destinationOpenChange = new EventEmitter();
120
- /**
121
- * @property Output
122
- * @description
123
- * An event that is fired when the destination dropdown closes.
124
- */
125
- this.focusOnNext = new EventEmitter();
126
- /**
127
- * @property Output
128
- * @description
129
- * An event that is fired when geolocation position has changed.
130
- */
131
- this.positionChange = new EventEmitter();
132
- }
133
- onResize() {
134
- this.setInlineFlex();
135
- }
136
- ngOnInit() {
137
- if (!this.airports) {
138
- throw new Error('Missing input: [airports]');
139
- }
140
- this.resultsLabels = {
141
- allAirports: this.allAirportsLabel || '',
142
- closestAirports: this.closestAirportsLabel || '',
143
- latestSearches: this.latestSearchesLabel || '',
144
- geolocation: this.geolocationLabel || '',
145
- geolocationDenied: this.geolocationBlockedLabel || ''
146
- };
147
- this.textSelectOriginFirst = this.selectOriginFirstLabel;
148
- this.airportsOrigin = this.allowedOriginAiports && this.allowedOriginAiports.length > 0 ? this.allowedOriginAiports : this.airports;
149
- this.airportsDestination = this.getAirportsDestinations();
150
- if (this.nasFormGroup) {
151
- if (this.nasFormControlNameOrigin) {
152
- const originControl = this.nasFormGroup.get(this.nasFormControlNameOrigin);
153
- if (originControl) {
154
- const origin = this.airportsOrigin.find(x => x.name === originControl.value);
155
- if (origin) {
156
- this.originAirportCode = origin.code;
157
- }
158
- }
159
- }
160
- if (this.nasFormControlNameDestination) {
161
- const destinationControl = this.nasFormGroup.get(this.nasFormControlNameDestination);
162
- if (destinationControl) {
163
- const destination = this.airportsDestination.find(x => x.name === destinationControl.value);
164
- if (destination) {
165
- this.destinationAirportCode = destination.code;
166
- }
167
- }
168
- }
169
- }
170
- if (!this.destination) {
171
- this.clearDestination();
172
- return;
173
- }
174
- this.destinationChange.emit(this.destination);
175
- this.originChange.emit(this.origin);
176
- if (this.originAirportCode) {
177
- this.setOrigin();
178
- }
179
- if (this.destinationAirportCode) {
180
- this.setDestination();
181
- }
182
- }
183
- ngAfterViewInit() {
184
- this.setInlineFlex();
185
- }
186
- getAirportSelectComboClass(element, modifiersInput) {
187
- let modifiers = modifiersInput;
188
- if (typeof modifiersInput === 'string' || modifiersInput instanceof String) {
189
- modifiers = [modifiersInput];
190
- }
191
- return {
192
- block: 'nas-airport-select-new-combo',
193
- element: element,
194
- modifiers: modifiers
195
- };
196
- }
197
- onOriginOpen(open) {
198
- setTimeout(() => {
199
- this.originOpen = open;
200
- });
201
- this.destinationOpen = false;
202
- this.originOpenChange.emit(open);
203
- }
204
- onDestinationOpen(open) {
205
- this.destinationOpen = open;
206
- this.originOpen = false;
207
- this.destinationOpenChange.emit(open);
208
- }
209
- onSelectionCleared() {
210
- this.cleared = true;
211
- }
212
- setSelectedOrigin(airport) {
213
- if (!airport) {
214
- return;
215
- }
216
- this.origin = airport;
217
- this.originAirportCodeValue = airport.code;
218
- this.isDestinationValid = airport.code ? true : false;
219
- if (this.airportRelations && this.hasValidDestinations(airport)) {
220
- this.updateValidAirportDestinations(airport);
221
- this.setCurrentLatestSearchesDestination();
222
- }
223
- this.cleared = false;
224
- this.originChange.emit(airport);
225
- }
226
- setSelectedDestination(airport) {
227
- if (!airport) {
228
- return;
229
- }
230
- this.destination = airport;
231
- this.destinationAirportCodeValue = airport.code;
232
- this.cleared = false;
233
- this.destinationChange.emit(airport);
234
- }
235
- setFocusOnNext(event) {
236
- this.focusOnNext.emit(event);
237
- }
238
- onOriginFocus() {
239
- if (this.airportSelectDropdownOrigin) {
240
- this.onOriginOpen(true);
241
- }
242
- }
243
- changeSwitchIcon() {
244
- this.switchType = this.switchType === 'switch' ? 'switch--secondary' : 'switch';
245
- }
246
- swapAirports() {
247
- const destination = { ...this.destination };
248
- const origin = { ...this.origin };
249
- this.destination = origin;
250
- this.origin = destination;
251
- this.setSelectedDestination(this.destination);
252
- this.setSelectedOrigin(this.origin);
253
- }
254
- swapKeyDown(event) {
255
- switch (event.key) {
256
- case 'Enter':
257
- this.swapAirports();
258
- break;
259
- }
260
- }
261
- setDestinationOpen(event) {
262
- if (this.exists(this.combo)) {
263
- this.destinationOpen = true;
264
- this.originOpen = false;
265
- }
266
- else {
267
- this.setFocusOnNext(event);
268
- }
269
- }
270
- getClosestAirports(position) {
271
- this.positionChange.emit(position);
272
- }
273
- setInlineFlex() {
274
- if (!this.container && !this.container?.nativeElement) {
275
- return;
276
- }
277
- this.inlineFlex = this.container.nativeElement.offsetWidth > 788;
278
- }
279
- getAirportsDestinations() {
280
- const allowedDestinationAirports = this.allowedDestinationAirports;
281
- return allowedDestinationAirports && allowedDestinationAirports.length > 0
282
- ? allowedDestinationAirports
283
- : this.airports;
284
- }
285
- setOrigin() {
286
- const airport = this.airports.find(x => x.code === this.originAirportCode);
287
- if (airport) {
288
- this.setSelectedOrigin(airport);
289
- }
290
- }
291
- setDestination() {
292
- const airport = this.airports.find(x => x.code === this.destinationAirportCode);
293
- if (airport) {
294
- this.setSelectedDestination(airport);
295
- }
296
- }
297
- updateValidAirportDestinations(airport) {
298
- if (!this.airportRelations) {
299
- this.airportsDestination = this.airportsOrigin;
300
- }
301
- else {
302
- const validDestinations = this.getAirportRelations(airport);
303
- if (!validDestinations) {
304
- return;
305
- }
306
- if (validDestinations.length === 0) {
307
- this.clearDestinations();
308
- }
309
- else {
310
- let isDestinationValid;
311
- if (this.destination && this.destination.code) {
312
- isDestinationValid = validDestinations.some(x => x && x.toLowerCase() === this.destination.code.toLowerCase());
313
- }
314
- if (!isDestinationValid) {
315
- this.clearDestination();
316
- this.destinationChange.emit(null);
317
- }
318
- if (this.airports) {
319
- this.airportsDestination = this.airports
320
- .filter(airportItem => airportItem
321
- && airportItem.code
322
- && validDestinations.some(x => x && airportItem.code.toLowerCase() === x.toLowerCase()));
323
- }
324
- }
325
- }
326
- }
327
- hasValidDestinations(origin) {
328
- if (!origin) {
329
- return;
330
- }
331
- const relations = this.getAirportRelations(origin);
332
- return relations && relations.length > 0;
333
- }
334
- getAirportRelations(airport) {
335
- if (!this.airports) {
336
- return new Array();
337
- }
338
- return this.airportRelations[airport.code.toLowerCase()] || this.airportRelations[airport.code.toUpperCase()];
339
- }
340
- clearOrigin() {
341
- this.setSelectedOrigin({
342
- code: '',
343
- countryName: '',
344
- name: '',
345
- airportName: '',
346
- displayName: '',
347
- normalizedAirportName: ''
348
- });
349
- }
350
- clearDestination() {
351
- this.setSelectedDestination({
352
- code: '',
353
- countryName: '',
354
- name: '',
355
- airportName: '',
356
- displayName: '',
357
- normalizedAirportName: ''
358
- });
359
- }
360
- clearDestinations() {
361
- this.airportsDestination = new Array();
362
- const model = {
363
- name: this.textSelectOriginFirst,
364
- countryName: '',
365
- code: '',
366
- airportName: '',
367
- displayName: '',
368
- normalizedAirportName: ''
369
- };
370
- this.airportsDestination.push(model);
371
- this.clearDestination();
372
- this.destinationChange.emit(model);
373
- }
374
- setCurrentLatestSearchesDestination() {
375
- if (this.airportsDestination) {
376
- this.currentLatestSearchesDestination = this.airportsDestination.filter(airport => {
377
- if (this.latestSearchesDestination) {
378
- return this.latestSearchesDestination.some(x => x.code && x.code.toLowerCase() === airport.code.toLowerCase());
379
- }
380
- });
381
- }
382
- }
383
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AirportSelectNewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
384
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: AirportSelectNewComponent, selector: "nas-airport-select-new", inputs: { airports: "airports", airportRelations: "airportRelations", latestSearchesOrigin: "latestSearchesOrigin", latestSearchesDestination: "latestSearchesDestination", closestAirports: "closestAirports", allowedOriginAiports: "allowedOriginAiports", allowedDestinationAirports: "allowedDestinationAirports", displayLatestSearches: "displayLatestSearches", displayClosestAirports: "displayClosestAirports", combo: "combo", useSwitch: "useSwitch", allAirportsLabel: "allAirportsLabel", latestSearchesLabel: "latestSearchesLabel", closestAirportsLabel: "closestAirportsLabel", geolocationLabel: "geolocationLabel", geolocationBlockedLabel: "geolocationBlockedLabel", selectOriginFirstLabel: "selectOriginFirstLabel", invalidDestinationText: "invalidDestinationText", labelOrigin: "labelOrigin", placeholderOrigin: "placeholderOrigin", labelDestination: "labelDestination", placeholderDestination: "placeholderDestination", keepSelection: "keepSelection", nasFormControlNameOrigin: "nasFormControlNameOrigin", nasFormControlNameDestination: "nasFormControlNameDestination", nasFormGroup: "nasFormGroup", originAirportCode: "originAirportCode", destinationAirportCode: "destinationAirportCode", ariaLabelClear: "ariaLabelClear", ariaLabelBackdrop: "ariaLabelBackdrop" }, outputs: { originChange: "originChange", originOpenChange: "originOpenChange", destinationChange: "destinationChange", destinationOpenChange: "destinationOpenChange", focusOnNext: "focusOnNext", positionChange: "positionChange" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "switchButton", first: true, predicate: ["switchButton"], descendants: true }, { propertyName: "airportSelectDropdownOrigin", first: true, predicate: ["airportSelectDropdownOrigin"], descendants: true }, { propertyName: "airportSelectDropdownDestination", first: true, predicate: ["airportSelectDropdownDestination"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"exists(combo); else airportSelectTemplate\"\n [nasClass]=\"getAirportSelectComboClass('', [inlineFlex && 'inline'])\" #container>\n <ng-container *ngTemplateOutlet=\"airportSelectTemplate\"></ng-container>\n</div>\n<ng-template #airportSelectTemplate>\n <div [nasClass]=\"getClass('', exists(useSwitch) && 'padding-origin')\"\n *ngIf=\"airportsOrigin\">\n <nas-airport-select-dropdown #airportSelectDropdownOrigin\n displayLatestSearches\n [enableGeolocation]=\"displayClosestAirports\"\n [displayClosestAirports]=\"displayClosestAirports\"\n [airportSelectLabel]=\"labelOrigin\"\n [latestSearches]=\"latestSearchesOrigin\"\n [closestAirports]=\"closestAirports\"\n [airport]=\"origin\"\n [airports]=\"airportsOrigin\"\n [resultsLabels]=\"resultsLabels\"\n [airportSelectPlaceholder]=\"placeholderOrigin\"\n [open]=\"originOpen\"\n [keepSelection]=\"keepSelection\"\n [airportSelectIconModifier]=\"'flight-departure'\"\n [nasFormControlName]=\"nasFormControlNameOrigin\"\n [nasFormGroup]=\"nasFormGroup\"\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (clearedSelection)=\"onSelectionCleared()\"\n (selected)=\"setSelectedOrigin($event)\"\n (openChange)=\"onOriginOpen($event)\"\n (focusOnNext)=\"setDestinationOpen($event)\"\n (positionChange)=\"getClosestAirports($event)\"></nas-airport-select-dropdown>\n </div>\n <ng-container *ngIf=\"exists(combo)\">\n <div [nasClass]=\"getClass('', exists(useSwitch) && 'padding-destination')\"\n *ngIf=\"airportsDestination && airportsDestination.length > 0\">\n <nas-airport-select-dropdown #airportSelectDropdownDestination\n displayLatestSearches\n [airportSelectLabel]=\"labelDestination\"\n [displayClosestAirports]=\"false\"\n [latestSearches]=\"currentLatestSearchesDestination\"\n [airports]=\"airportsDestination\"\n [resultsLabels]=\"resultsLabels\"\n [airport]=\"destination\"\n [airportSelectPlaceholder]=\"placeholderDestination\"\n [open]=\"destinationOpen\"\n [keepSelection]=\"keepSelection\"\n [airportSelectIconModifier]=\"'flight-arrival'\"\n [nasFormControlName]=\"nasFormControlNameDestination\"\n [nasFormGroup]=\"nasFormGroup\"\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [isValid]=\"isDestinationValid\"\n [invalidText]=\"invalidDestinationText\"\n (clearedSelection)=\"onSelectionCleared()\"\n (selected)=\"setSelectedDestination($event)\"\n (openChange)=\"onDestinationOpen($event)\"\n (focusOnNext)=\"setFocusOnNext($event)\"\n (focusOnPrevious)=\"onOriginFocus()\"></nas-airport-select-dropdown>\n </div>\n <div *ngIf=\"exists(useSwitch) && !(originOpen || destinationOpen || cleared)\"\n #switchButton\n [nasClass]=\"getAirportSelectComboClass('switcher', (originAirportCodeValue && destinationAirportCodeValue) && 'filled')\"\n (mouseover)=\"changeSwitchIcon()\"\n (mouseleave)=\"changeSwitchIcon()\"\n (keydown)=\"swapKeyDown($event)\"\n (click)=\"swapAirports()\">\n <nas-icon [type]=\"(this.destinationAirportCodeValue && this.originAirportCodeValue) ? 'vector--secondary' : 'vector'\"></nas-icon>\n </div>\n </ng-container>\n</ng-template>", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-airport-select-new{position:relative;width:100%;text-align:left;height:67px}.nas-airport-select-new label,.nas-airport-select-new:first-child{margin-bottom:0}.nas-airport-select-new:only-child{max-width:360px}.nas-airport-select-new--expanded{z-index:30}.nas-airport-select-new__wrapper{position:relative;display:block;z-index:3;background-color:#fff;border:2px solid #6f6f6f}.nas-airport-select-new__wrapper--active{background-color:#ebf4ff;border:2px solid #15273f}.nas-airport-select-new__wrapper--filled{border:2px solid #15273f}.nas-airport-select-new__list-section-label{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;position:relative;z-index:2;text-align:center;padding:3px 12px;background-color:#f1f1f1}.nas-airport-select-new__list-section-label:not(:first-child){margin-top:-1px}.nas-airport-select-new__label{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;display:block;position:relative;z-index:3;padding:9px 16px 0;background-color:inherit}.nas-airport-select-new__input{height:64px;position:relative;z-index:3;line-height:1;margin:0;background-color:transparent}.nas-airport-select-new__input[type=text]{padding:0 16px 9px}.nas-airport-select-new__input[type=text]:focus{border-bottom:none}.nas-airport-select-new__label+.nas-airport-select-new__input{height:34px;position:relative;z-index:3;line-height:1;margin:0;background-color:transparent}.nas-airport-select-new__label+.nas-airport-select-new__input[type=text]{padding:0 16px 9px}.nas-airport-select-new__icon{position:absolute;z-index:4;right:18px;bottom:18px}.nas-airport-select-new__results-wrapper{position:relative;z-index:4;perspective:1000px;margin-top:-4px}.nas-airport-select-new__results{position:absolute;z-index:3;width:100%;left:0;max-height:50vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;border:2px solid #15273f;background-color:#fff;transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:airport-select-results .65s ease both}.nas-airport-select-new__dummy{position:absolute;left:-100px}.nas-airport-select-new__backdrop{display:block;position:fixed;z-index:2;top:0;left:0;width:100%;height:100%;color:transparent;background-color:#0b14202b;animation:airport-select-backdrop .7s ease-out both}.nas-airport-select-new__list-item{border-bottom:2px solid #eaeaea}.nas-airport-select-new__list-item:not(:last-of-type):after{content:\"\";display:block;width:100%;position:absolute;bottom:0;border-bottom:1px solid #c3c3c3}.nas-airport-select-new__geolocation--label{align-self:center;padding-left:4px}.nas-airport-select-new__geolocation--icon{margin-right:3px}.nas-airport-select-new__item{display:block;position:relative;z-index:2;width:100%;text-align:left;padding:16px;margin-top:-1px;display:flex;justify-content:space-between;outline:0}.nas-airport-select-new__item--focus,.nas-airport-select-new__item:hover,.nas-airport-select-new__item:focus{background-color:#f8f8f8}.nas-airport-select-new__item--focus,.nas-airport-select-new__item--focus .nas-airport-select-new__name,.nas-airport-select-new__item--focus .nas-airport-select-new__code,.nas-airport-select-new__item:hover,.nas-airport-select-new__item:hover .nas-airport-select-new__name,.nas-airport-select-new__item:hover .nas-airport-select-new__code,.nas-airport-select-new__item:focus,.nas-airport-select-new__item:focus .nas-airport-select-new__name,.nas-airport-select-new__item:focus .nas-airport-select-new__code{color:#15273f!important}.nas-airport-select-new__item--disabled{border-bottom-width:0}.nas-airport-select-new__item--disabled,.nas-airport-select-new__item--disabled .nas-airport-select-new__name,.nas-airport-select-new__item--disabled .nas-airport-select-new__code{color:#909090!important}.nas-airport-select-new__item--disabled:hover,.nas-airport-select-new__item--disabled:focus{background-color:#fff;cursor:auto}.nas-airport-select-new__item--disabled:hover,.nas-airport-select-new__item--disabled:hover .nas-airport-select-new__name,.nas-airport-select-new__item--disabled:hover .nas-airport-select-new__code,.nas-airport-select-new__item--disabled:focus,.nas-airport-select-new__item--disabled:focus .nas-airport-select-new__name,.nas-airport-select-new__item--disabled:focus .nas-airport-select-new__code{color:#909090!important}.nas-airport-select-new__name,.nas-airport-select-new__code{display:inline-block;font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;line-height:1;color:#15273f;margin-bottom:3px}.nas-airport-select-new__name--invalid,.nas-airport-select-new__code--invalid{margin:12px}.nas-airport-select-new__code{margin-left:.12em}.nas-airport-select-new__country{display:block;font-size:14px}.nas-airport-select-new__empty{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:16px;line-height:1.4;color:#15273f;margin:0;padding:12px}.nas-icon-vector,.nas-icon-vector--secondary{margin-bottom:2px}.nas-filter .nas-airport-select-new-combo,.nas-search-filter .nas-airport-select-new-combo{margin:0 3px 0 0}.nas-airport-select-new-combo{position:relative;display:flex;flex-direction:column;width:100%;margin:8px auto;gap:8px}.nas-airport-select-new-combo--inline{flex-direction:row}.nas-airport-select-new-combo--inline .nas-airport-select-new-combo__switcher{left:48%;top:14px;transform:rotate(90deg)}.nas-airport-select-new-combo__switcher{position:absolute;top:48px;z-index:4;left:76%;cursor:pointer;border:2px solid #6f6f6f;border-radius:50%;width:40px;height:40px;background-color:#fff;justify-content:center;align-items:center;display:flex}.nas-airport-select-new-combo__switcher:focus{outline:none;box-shadow:0 0 1px 2px #e3e3e3,0 0 2px 3px #3b99fc}.nas-airport-select-new-combo__switcher--filled{border:2px solid #15273f}@keyframes airport-select-backdrop{0%{opacity:0}}@keyframes airport-select-results{0%{transform:rotateX(-90deg)}40%{transform:rotateX(20deg)}to{transform:rotateX(0)}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }, { kind: "component", type: i3.IconComponent, selector: "nas-icon", inputs: ["icon", "type", "isIndicator", "lightCircularBackground", "cssClass"] }, { kind: "component", type: i4.AirportSelectDropdownComponent, selector: "nas-airport-select-dropdown", inputs: ["displayLatestSearches", "displayClosestAirports", "latestSearches", "resultsLabels", "airportSelectLabel", "airportSelectPlaceholder", "airportSelectIconModifier", "keepSelection", "nasFormControlName", "nasFormGroup", "enableGeolocation", "ariaLabelClear", "ariaLabelBackdrop", "isValid", "invalidText", "closestAirports", "airport", "open", "airports"], outputs: ["selected", "openChange", "focusOnNext", "focusOnPrevious", "positionChange", "clearedSelection"] }], encapsulation: i0.ViewEncapsulation.None }); }
385
- }
386
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AirportSelectNewComponent, decorators: [{
387
- type: Component,
388
- args: [{ selector: 'nas-airport-select-new', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"exists(combo); else airportSelectTemplate\"\n [nasClass]=\"getAirportSelectComboClass('', [inlineFlex && 'inline'])\" #container>\n <ng-container *ngTemplateOutlet=\"airportSelectTemplate\"></ng-container>\n</div>\n<ng-template #airportSelectTemplate>\n <div [nasClass]=\"getClass('', exists(useSwitch) && 'padding-origin')\"\n *ngIf=\"airportsOrigin\">\n <nas-airport-select-dropdown #airportSelectDropdownOrigin\n displayLatestSearches\n [enableGeolocation]=\"displayClosestAirports\"\n [displayClosestAirports]=\"displayClosestAirports\"\n [airportSelectLabel]=\"labelOrigin\"\n [latestSearches]=\"latestSearchesOrigin\"\n [closestAirports]=\"closestAirports\"\n [airport]=\"origin\"\n [airports]=\"airportsOrigin\"\n [resultsLabels]=\"resultsLabels\"\n [airportSelectPlaceholder]=\"placeholderOrigin\"\n [open]=\"originOpen\"\n [keepSelection]=\"keepSelection\"\n [airportSelectIconModifier]=\"'flight-departure'\"\n [nasFormControlName]=\"nasFormControlNameOrigin\"\n [nasFormGroup]=\"nasFormGroup\"\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (clearedSelection)=\"onSelectionCleared()\"\n (selected)=\"setSelectedOrigin($event)\"\n (openChange)=\"onOriginOpen($event)\"\n (focusOnNext)=\"setDestinationOpen($event)\"\n (positionChange)=\"getClosestAirports($event)\"></nas-airport-select-dropdown>\n </div>\n <ng-container *ngIf=\"exists(combo)\">\n <div [nasClass]=\"getClass('', exists(useSwitch) && 'padding-destination')\"\n *ngIf=\"airportsDestination && airportsDestination.length > 0\">\n <nas-airport-select-dropdown #airportSelectDropdownDestination\n displayLatestSearches\n [airportSelectLabel]=\"labelDestination\"\n [displayClosestAirports]=\"false\"\n [latestSearches]=\"currentLatestSearchesDestination\"\n [airports]=\"airportsDestination\"\n [resultsLabels]=\"resultsLabels\"\n [airport]=\"destination\"\n [airportSelectPlaceholder]=\"placeholderDestination\"\n [open]=\"destinationOpen\"\n [keepSelection]=\"keepSelection\"\n [airportSelectIconModifier]=\"'flight-arrival'\"\n [nasFormControlName]=\"nasFormControlNameDestination\"\n [nasFormGroup]=\"nasFormGroup\"\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [isValid]=\"isDestinationValid\"\n [invalidText]=\"invalidDestinationText\"\n (clearedSelection)=\"onSelectionCleared()\"\n (selected)=\"setSelectedDestination($event)\"\n (openChange)=\"onDestinationOpen($event)\"\n (focusOnNext)=\"setFocusOnNext($event)\"\n (focusOnPrevious)=\"onOriginFocus()\"></nas-airport-select-dropdown>\n </div>\n <div *ngIf=\"exists(useSwitch) && !(originOpen || destinationOpen || cleared)\"\n #switchButton\n [nasClass]=\"getAirportSelectComboClass('switcher', (originAirportCodeValue && destinationAirportCodeValue) && 'filled')\"\n (mouseover)=\"changeSwitchIcon()\"\n (mouseleave)=\"changeSwitchIcon()\"\n (keydown)=\"swapKeyDown($event)\"\n (click)=\"swapAirports()\">\n <nas-icon [type]=\"(this.destinationAirportCodeValue && this.originAirportCodeValue) ? 'vector--secondary' : 'vector'\"></nas-icon>\n </div>\n </ng-container>\n</ng-template>", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-airport-select-new{position:relative;width:100%;text-align:left;height:67px}.nas-airport-select-new label,.nas-airport-select-new:first-child{margin-bottom:0}.nas-airport-select-new:only-child{max-width:360px}.nas-airport-select-new--expanded{z-index:30}.nas-airport-select-new__wrapper{position:relative;display:block;z-index:3;background-color:#fff;border:2px solid #6f6f6f}.nas-airport-select-new__wrapper--active{background-color:#ebf4ff;border:2px solid #15273f}.nas-airport-select-new__wrapper--filled{border:2px solid #15273f}.nas-airport-select-new__list-section-label{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;position:relative;z-index:2;text-align:center;padding:3px 12px;background-color:#f1f1f1}.nas-airport-select-new__list-section-label:not(:first-child){margin-top:-1px}.nas-airport-select-new__label{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;display:block;position:relative;z-index:3;padding:9px 16px 0;background-color:inherit}.nas-airport-select-new__input{height:64px;position:relative;z-index:3;line-height:1;margin:0;background-color:transparent}.nas-airport-select-new__input[type=text]{padding:0 16px 9px}.nas-airport-select-new__input[type=text]:focus{border-bottom:none}.nas-airport-select-new__label+.nas-airport-select-new__input{height:34px;position:relative;z-index:3;line-height:1;margin:0;background-color:transparent}.nas-airport-select-new__label+.nas-airport-select-new__input[type=text]{padding:0 16px 9px}.nas-airport-select-new__icon{position:absolute;z-index:4;right:18px;bottom:18px}.nas-airport-select-new__results-wrapper{position:relative;z-index:4;perspective:1000px;margin-top:-4px}.nas-airport-select-new__results{position:absolute;z-index:3;width:100%;left:0;max-height:50vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;border:2px solid #15273f;background-color:#fff;transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:airport-select-results .65s ease both}.nas-airport-select-new__dummy{position:absolute;left:-100px}.nas-airport-select-new__backdrop{display:block;position:fixed;z-index:2;top:0;left:0;width:100%;height:100%;color:transparent;background-color:#0b14202b;animation:airport-select-backdrop .7s ease-out both}.nas-airport-select-new__list-item{border-bottom:2px solid #eaeaea}.nas-airport-select-new__list-item:not(:last-of-type):after{content:\"\";display:block;width:100%;position:absolute;bottom:0;border-bottom:1px solid #c3c3c3}.nas-airport-select-new__geolocation--label{align-self:center;padding-left:4px}.nas-airport-select-new__geolocation--icon{margin-right:3px}.nas-airport-select-new__item{display:block;position:relative;z-index:2;width:100%;text-align:left;padding:16px;margin-top:-1px;display:flex;justify-content:space-between;outline:0}.nas-airport-select-new__item--focus,.nas-airport-select-new__item:hover,.nas-airport-select-new__item:focus{background-color:#f8f8f8}.nas-airport-select-new__item--focus,.nas-airport-select-new__item--focus .nas-airport-select-new__name,.nas-airport-select-new__item--focus .nas-airport-select-new__code,.nas-airport-select-new__item:hover,.nas-airport-select-new__item:hover .nas-airport-select-new__name,.nas-airport-select-new__item:hover .nas-airport-select-new__code,.nas-airport-select-new__item:focus,.nas-airport-select-new__item:focus .nas-airport-select-new__name,.nas-airport-select-new__item:focus .nas-airport-select-new__code{color:#15273f!important}.nas-airport-select-new__item--disabled{border-bottom-width:0}.nas-airport-select-new__item--disabled,.nas-airport-select-new__item--disabled .nas-airport-select-new__name,.nas-airport-select-new__item--disabled .nas-airport-select-new__code{color:#909090!important}.nas-airport-select-new__item--disabled:hover,.nas-airport-select-new__item--disabled:focus{background-color:#fff;cursor:auto}.nas-airport-select-new__item--disabled:hover,.nas-airport-select-new__item--disabled:hover .nas-airport-select-new__name,.nas-airport-select-new__item--disabled:hover .nas-airport-select-new__code,.nas-airport-select-new__item--disabled:focus,.nas-airport-select-new__item--disabled:focus .nas-airport-select-new__name,.nas-airport-select-new__item--disabled:focus .nas-airport-select-new__code{color:#909090!important}.nas-airport-select-new__name,.nas-airport-select-new__code{display:inline-block;font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;line-height:1;color:#15273f;margin-bottom:3px}.nas-airport-select-new__name--invalid,.nas-airport-select-new__code--invalid{margin:12px}.nas-airport-select-new__code{margin-left:.12em}.nas-airport-select-new__country{display:block;font-size:14px}.nas-airport-select-new__empty{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:16px;line-height:1.4;color:#15273f;margin:0;padding:12px}.nas-icon-vector,.nas-icon-vector--secondary{margin-bottom:2px}.nas-filter .nas-airport-select-new-combo,.nas-search-filter .nas-airport-select-new-combo{margin:0 3px 0 0}.nas-airport-select-new-combo{position:relative;display:flex;flex-direction:column;width:100%;margin:8px auto;gap:8px}.nas-airport-select-new-combo--inline{flex-direction:row}.nas-airport-select-new-combo--inline .nas-airport-select-new-combo__switcher{left:48%;top:14px;transform:rotate(90deg)}.nas-airport-select-new-combo__switcher{position:absolute;top:48px;z-index:4;left:76%;cursor:pointer;border:2px solid #6f6f6f;border-radius:50%;width:40px;height:40px;background-color:#fff;justify-content:center;align-items:center;display:flex}.nas-airport-select-new-combo__switcher:focus{outline:none;box-shadow:0 0 1px 2px #e3e3e3,0 0 2px 3px #3b99fc}.nas-airport-select-new-combo__switcher--filled{border:2px solid #15273f}@keyframes airport-select-backdrop{0%{opacity:0}}@keyframes airport-select-results{0%{transform:rotateX(-90deg)}40%{transform:rotateX(20deg)}to{transform:rotateX(0)}}\n"] }]
389
- }], ctorParameters: function () { return []; }, propDecorators: { container: [{
390
- type: ViewChild,
391
- args: ['container']
392
- }], switchButton: [{
393
- type: ViewChild,
394
- args: ['switchButton']
395
- }], airportSelectDropdownOrigin: [{
396
- type: ViewChild,
397
- args: ['airportSelectDropdownOrigin']
398
- }], airportSelectDropdownDestination: [{
399
- type: ViewChild,
400
- args: ['airportSelectDropdownDestination']
401
- }], airports: [{
402
- type: Input
403
- }], airportRelations: [{
404
- type: Input
405
- }], latestSearchesOrigin: [{
406
- type: Input
407
- }], latestSearchesDestination: [{
408
- type: Input
409
- }], closestAirports: [{
410
- type: Input
411
- }], allowedOriginAiports: [{
412
- type: Input
413
- }], allowedDestinationAirports: [{
414
- type: Input
415
- }], displayLatestSearches: [{
416
- type: Input
417
- }], displayClosestAirports: [{
418
- type: Input
419
- }], combo: [{
420
- type: Input
421
- }], useSwitch: [{
422
- type: Input
423
- }], allAirportsLabel: [{
424
- type: Input
425
- }], latestSearchesLabel: [{
426
- type: Input
427
- }], closestAirportsLabel: [{
428
- type: Input
429
- }], geolocationLabel: [{
430
- type: Input
431
- }], geolocationBlockedLabel: [{
432
- type: Input
433
- }], selectOriginFirstLabel: [{
434
- type: Input
435
- }], invalidDestinationText: [{
436
- type: Input
437
- }], labelOrigin: [{
438
- type: Input
439
- }], placeholderOrigin: [{
440
- type: Input
441
- }], labelDestination: [{
442
- type: Input
443
- }], placeholderDestination: [{
444
- type: Input
445
- }], keepSelection: [{
446
- type: Input
447
- }], nasFormControlNameOrigin: [{
448
- type: Input
449
- }], nasFormControlNameDestination: [{
450
- type: Input
451
- }], nasFormGroup: [{
452
- type: Input
453
- }], originAirportCode: [{
454
- type: Input
455
- }], destinationAirportCode: [{
456
- type: Input
457
- }], ariaLabelClear: [{
458
- type: Input
459
- }], ariaLabelBackdrop: [{
460
- type: Input
461
- }], originChange: [{
462
- type: Output
463
- }], originOpenChange: [{
464
- type: Output
465
- }], destinationChange: [{
466
- type: Output
467
- }], destinationOpenChange: [{
468
- type: Output
469
- }], focusOnNext: [{
470
- type: Output
471
- }], positionChange: [{
472
- type: Output
473
- }], onResize: [{
474
- type: HostListener,
475
- args: ["window:resize", ["$event"]]
476
- }] } });
477
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWlycG9ydC1zZWxlY3QtbmV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYWlycG9ydC1zZWxlY3QtbmV3L2FpcnBvcnQtc2VsZWN0LW5ldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2FpcnBvcnQtc2VsZWN0LW5ldy9haXJwb3J0LXNlbGVjdC1uZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsU0FBUyxFQUlULFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7OztBQUk5Qzs7O0dBR0c7QUFPSCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsZ0JBQWdCO0lBcU83RDs7OztPQUlHO0lBQ0gsSUFDSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQUNELElBQUksaUJBQWlCLENBQUMsSUFBWTtRQUNoQyxJQUFJLElBQUksRUFBRTtZQUNSLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBQ2xCO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUNJLHNCQUFz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RUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBOb3J3ZWdpYW4gQWlyIFNodXR0bGUuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHsgQWlycG9ydE1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvYWlycG9ydC5tb2RlbCc7XG5pbXBvcnQgeyBDbGFzc01vZGVsIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvY2xhc3MubW9kZWwnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uSW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgSG9zdExpc3RlbmVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmFzQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUmVzdWx0c0xhYmVsc01vZGVsIH0gZnJvbSAnLi9tb2RlbHMvcmVzdWx0cy1sYWJlbHMubW9kZWwnO1xuaW1wb3J0IHsgQWlycG9ydFNlbGVjdERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9haXJwb3J0LXNlbGVjdC1kcm9wZG93bi9haXJwb3J0LXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIEFpcnBvcnQgU2VsZWN0IENvbXBvbmVudCB8IE5ldyBkZXNpZ24gfCBCZXRhXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25hcy1haXJwb3J0LXNlbGVjdC1uZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWlycG9ydC1zZWxlY3QtbmV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWlycG9ydC1zZWxlY3QtbmV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQWlycG9ydFNlbGVjdE5ld0NvbXBvbmVudCBleHRlbmRzIE5hc0NvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBhaXJwb3J0c09yaWdpbjogQXJyYXk8QWlycG9ydE1vZGVsPjtcbiAgYWlycG9ydHNEZXN0aW5hdGlvbiA9IG5ldyBBcnJheTxBaXJwb3J0TW9kZWw+KCk7XG4gIGN1cnJlbnRMYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuICBjbG9zZXN0QWlycG9ydHNEZXN0aW5hdGlvbjogQXJyYXk8QWlycG9ydE1vZGVsPjtcbiAgZm9jdXNEZXN0aW5hdGlvbiA9IGZhbHNlO1xuICB0ZXh0U2VsZWN0T3JpZ2luRmlyc3Q6IHN0cmluZztcbiAgZm9jdXNlZExhdGVzdFNlYXJjaGVzQWlycG9ydENvZGVEZXN0aW5hdGlvbjogc3RyaW5nO1xuICBmb2N1c2VkQWlycG9ydENvZGVEZXN0aW5hdGlvbjogc3RyaW5nO1xuICBmb2N1c2VkTGF0ZXN0U2VhcmNoZXNJbmRleERlc3RpbmF0aW9uID0gLTE7XG4gIGZvY3VzZWRBaXJwb3J0SW5kZXhEZXN0aW5hdGlvbiA9IC0xO1xuICBzd2l0Y2hUeXBlID0gJ3N3aXRjaCc7XG4gIGlzRGVzdGluYXRpb25WYWxpZDogYm9vbGVhbjtcbiAgaW5saW5lRmxleCA9IGZhbHNlO1xuXG4gIHJlc3VsdHNMYWJlbHM6IFJlc3VsdHNMYWJlbHNNb2RlbCA9IHtcbiAgICBhbGxBaXJwb3J0czogJycsXG4gICAgY2xvc2VzdEFpcnBvcnRzOiAnJyxcbiAgICBsYXRlc3RTZWFyY2hlczogJycsXG4gICAgZ2VvbG9jYXRpb246ICcnLFxuICAgIGdlb2xvY2F0aW9uRGVuaWVkOiAnJ1xuICB9O1xuXG4gIG9yaWdpbk9wZW4gPSBmYWxzZTtcbiAgZGVzdGluYXRpb25PcGVuID0gZmFsc2U7XG4gIGNsZWFyZWQgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3N3aXRjaEJ1dHRvbicpIHN3aXRjaEJ1dHRvbjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnYWlycG9ydFNlbGVjdERyb3Bkb3duT3JpZ2luJykgYWlycG9ydFNlbGVjdERyb3Bkb3duT3JpZ2luOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdhaXJwb3J0U2VsZWN0RHJvcGRvd25EZXN0aW5hdGlvbicpIGFpcnBvcnRTZWxlY3REcm9wZG93bkRlc3RpbmF0aW9uOiBBaXJwb3J0U2VsZWN0RHJvcGRvd25Db21wb25lbnQ7XG5cbiAgb3JpZ2luOiBBaXJwb3J0TW9kZWw7XG4gIGRlc3RpbmF0aW9uOiBBaXJwb3J0TW9kZWw7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAcmVxdWlyZWRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFsbCBhaXJwb3J0cyB0aGF0IHdpbGwgYmUgcG9wdWxhdGVkIGludG8gdGhlIGRyb3Bkb3duIGxpc3RzLlxuICAgKi9cbiAgQElucHV0KCkgYWlycG9ydHM6IEFycmF5PEFpcnBvcnRNb2RlbD47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSByZWNvcmQgY29udGFpbmluZyBrZXlzIHdpdGggYWxsIGFpcnBvcnQgY29kZXMgd2l0aCBjb3JyZXNwb25kaW5nIGFycmF5IG9mIGFpcnBvcnQgY29kZXMgY29ubmVjdGVkIHRvIHRoZSBrZXkuXG4gICAqL1xuICBASW5wdXQoKSBhaXJwb3J0UmVsYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBBcnJheTxzdHJpbmc+PjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSBvZiBvcmlnaW4gYWlycG9ydHMgdGhhdCB0aGUgdXNlciBoYXMgYWxscmVhZHkgc2VhcmNoIGZvci5cbiAgICovXG4gIEBJbnB1dCgpIGxhdGVzdFNlYXJjaGVzT3JpZ2luOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGFycmF5IG9mIGRlc3RpbmF0aW9uIGFpcnBvcnRzIHRoYXQgdGhlIHVzZXIgaGFzIGFsbHJlYWR5IHNlYXJjaCBmb3IuXG4gICAqL1xuICBASW5wdXQoKSBsYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGFycmF5IG9mIGFpcnBvcnRzIHRoYXQgYXJlIGNsb3NlIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KCkgY2xvc2VzdEFpcnBvcnRzOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGlzdCBvZiBhaXJwb3J0cyB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gdGhlIG9yaWdpbiBkcm9wZG93bi5cbiAgICogSWYgbm90IGluY2x1ZGVkLCBhbGwgYWlycG9ydHMgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBhbGxvd2VkT3JpZ2luQWlwb3J0czogQXJyYXk8QWlycG9ydE1vZGVsPjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSBvZiBhaXJwb3J0cyB0aGF0IGFyZSByZXN0cmljdGVkIGZvciBkZXN0aW5hdGlvbiBhaXJwb3J0cy4gSXQgd2lsbCBkZWZhdWx0IHRvIGFpcnBvcnRzIGlmIG5vdCBzZXQuXG4gICAqL1xuICBASW5wdXQoKSBhbGxvd2VkRGVzdGluYXRpb25BaXJwb3J0czogQXJyYXk8QWlycG9ydE1vZGVsPjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGJvb2xlYW4gaW5kaWNhdGluZyBpZiBhaXJwb3J0cyB0aGF0IHRoZSB1c2VyIGFsbHJlYWR5IGhhcyBzZWFyaCBmb3Igc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc3BsYXlMYXRlc3RTZWFyY2hlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBib29sZWFuIGluZGljYXRpbmcgaWYgYWlycG9ydHMgdGhhdCBhcmUgY2xvc2UgdG8gdGhlIHVzZXIgc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc3BsYXlDbG9zZXN0QWlycG9ydHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERpc3BsYXkgYm90aCBvcmdpbiBhbmQgZGVzdGluYXRpb24gYWlycG9ydCBzZWxlY3Rvci5cbiAgICovXG4gIEBJbnB1dCgpIGNvbWJvPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEaXNwbGF5IHN3aXRjaCBVSSB0byBpbnRlcmNoYW5nZSBvcmlnaW4gYW5kIGRlc3RpbmF0aW9uIGFpcnBvcnQuXG4gICAqL1xuICBASW5wdXQoKSB1c2VTd2l0Y2g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBvbiB0b3Agb2YgYWxsIGFpcnBvcnRzIGluIHRoZSBkcm9wIGRvd24gbGlzdC5cbiAgICovXG4gIEBJbnB1dCgpIGFsbEFpcnBvcnRzTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgb24gdG9wIG9mIHRoZSBsYXRlc3Qgc2VhcmNoZXMgaW4gdGhlIGRyb3AgZG93biBsaXN0LlxuICAgKi9cbiAgQElucHV0KCkgbGF0ZXN0U2VhcmNoZXNMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBvbiB0b3Agb2YgdGhlIGNsb3Nlc3QgYWlycG9ydHMgaW4gdGhlIGRyb3AgZG93biBsaXN0LlxuICAgKi9cbiAgQElucHV0KCkgY2xvc2VzdEFpcnBvcnRzTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgaW4gbXkgbG9jYXRpb24gaW4gdGhlIGRyb3AgZG93biBsaXN0LlxuICAgKi9cbiAgQElucHV0KCkgZ2VvbG9jYXRpb25MYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBpbiBteSBsb2NhdGlvbiwgaW4gdGhlIGRyb3AgZG93biBsaXN0IGlmIHVzZXIgaGFzIGRlbmllZCBnZW9sb2NhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIGdlb2xvY2F0aW9uQmxvY2tlZExhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCB0aGF0IHdpbGwgYXBwZWFyIGluIHRoZSBkZXN0aW5hdGlvbiBpbnB1dCBmaWVsZCBpZiB0aGVcbiAgICogdXNlciB0cmllcyB0byBzZWxlY3QgYSBkZXN0aW5hdGlvbiBhaXJwb3J0IHdpdGhvdXQgc2VsZWN0aW5nIGFuIG9yaWdpbiBhaXJwb3J0LlxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0T3JpZ2luRmlyc3RMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgdGV4dCB0aGF0IGFwcGVhcnMgaW4gdGhlIGRlc3RpbmF0aW9ucyBkcm9wZG93biBsaXN0IHdoZW4gb3JpZ2luIGFpcnBvcnQgaXMgbm90IHNldC5cbiAgICovXG4gIEBJbnB1dCgpIGludmFsaWREZXN0aW5hdGlvblRleHQ6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEByZXF1aXJlZFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCB0aGF0IHdpbGwgYXBwZWFyIG9uIHRvcCBvZiB0aGUgb3JpZ2luIGFpcnBvcnQgaW5wdXQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbE9yaWdpbiA9ICcnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgcGxhY2Vob2xkZXIgdGhhdCB3aWxsIGFwcGVhciBvbiB0aGUgb3JpZ2luIGFpcnBvcnQgaW5wdXQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlck9yaWdpbiA9ICcnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBvbiB0b3Agb2YgdGhlIGRlc3RpbmF0aW9uIGFpcnBvcnQgaW5wdXQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbERlc3RpbmF0aW9uID0gJyc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBwbGFjZWhvbGRlciB0aGF0IHdpbGwgYXBwZWFyIG9uIHRoZSBkZXN0aW5hdGlvbiBhaXJwb3J0IGlucHV0IGZpZWxkLlxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXJEZXN0aW5hdGlvbiA9ICcnO1xuXG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBtb2RpZmllciB0aGF0IHdpbGwgYWxsb3cgYWx3YXlzIGtlZXBpbmcgdGhlIHNlbGVjdGVkIGFpcnBvcnQuXG4gICAqIFRoZSBsYXN0IHNlbGVjdGVkIGFpcnBvcnQgd2lsbCBiZSBzaG93biBvbmNlIHVzZXIgY2xlYXJzIHRoZSBzZWxlY3Rpb24gYW5kIGJsdXIuXG4gICAqL1xuICBASW5wdXQoKSBrZWVwU2VsZWN0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Db250cm9sTmFtZU9yaWdpbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Db250cm9sTmFtZURlc3RpbmF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyB0aGUgcGFyZW50J3MgZm9ybSBncm91cC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgaXMgcmVxdWllcmVkIHRvIGJlIGZpbGxlZCBpZiBuYXNGb3JtQ29udHJvbE5hbWUgYWRkZWQuXG4gICAqL1xuICBASW5wdXQoKSBuYXNGb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgYWlycG9ydCBjb2RlIG9mIHRoZSBvcmlnaW4gYWlycG9ydC4gSXQgd2lsbCBzZXQgdGhlIHNlbGVjdGVkIG9yaWdpbiBhaXJwb3J0IGJhc2VkIG9uIHRoaXMgdmFsdWUuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgb3JpZ2luQWlycG9ydENvZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMub3JpZ2luQWlycG9ydENvZGVWYWx1ZTtcbiAgfVxuICBzZXQgb3JpZ2luQWlycG9ydENvZGUoY29kZTogc3RyaW5nKSB7XG4gICAgaWYgKGNvZGUpIHtcbiAgICAgIGlmIChjb2RlICE9PSB0aGlzLm9yaWdpbkFpcnBvcnRDb2RlVmFsdWUpIHtcbiAgICAgICAgdGhpcy5vcmlnaW5BaXJwb3J0Q29kZVZhbHVlID0gY29kZTtcbiAgICAgICAgdGhpcy5zZXRPcmlnaW4oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcmlnaW5BaXJwb3J0Q29kZVZhbHVlID0gJyc7XG4gICAgICB0aGlzLmNsZWFyT3JpZ2luKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIGFpcnBvcnQgY29kZSBvZiB0aGUgZGVzdGluYXRpb24gYWlycG9ydC4gSXQgd2lsbCBzZXQgdGhlIHNlbGVjdGVkIGRlc3RpbmF0aW9uIGFpcnBvcnQgYmFzZWQgb24gdGhpcyB2YWx1ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBkZXN0aW5hdGlvbkFpcnBvcnRDb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmRlc3RpbmF0aW9uQWlycG9ydENvZGVWYWx1ZTtcbiAgfVxuICBzZXQgZGVzdGluYXRpb25BaXJwb3J0Q29kZShjb2RlOiBzdHJpbmcpIHtcbiAgICBpZiAoY29kZSkge1xuICAgICAgaWYgKGNvZGUgIT09IHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZVZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZVZhbHVlID0gY29kZTtcbiAgICAgICAgdGhpcy5zZXREZXN0aW5hdGlvbigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlc3RpbmF0aW9uQWlycG9ydENvZGVWYWx1ZSA9ICcnO1xuICAgICAgdGhpcy5jbGVhckRlc3RpbmF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyAnYXJpYS1sYWJlbCcgb24gdGhlIGNsZWFyIGJ1dHRvbiBpbnNpZGUgdGhlIGFpcnBvcnQgc2VsZWN0IGlucHV0cy5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbENsZWFyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyAnYXJpYS1sYWJlbCcgdG8gdGhlIGJhY2tkcm9wcy5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbEJhY2tkcm9wOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgZXZlcnkgdGltZSB0aGUgc2VsZWN0ZWQgb3JpZ2luIGFpcnBvcnQgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBvcmlnaW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFpcnBvcnRNb2RlbD4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIHRoZSBvcmlnaW4gZHJvcGRvd24gc2VsZWN0b3Igb3BlbnMgb3IgY2xvc2VzLlxuICAgKi9cbiAgQE91dHB1dCgpIG9yaWdpbk9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICogQHByb3BlcnR5IE91dHB1dFxuICAqIEBkZXNjcmlwdGlvblxuICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgZXZlcnkgdGltZSB0aGUgb3JpZ2luIGRyb3Bkb3duIHNlbGVjdG9yIG9wZW5zIG9yIGNsb3Nlcy5cbiAgKi9cbiAgQE91dHB1dCgpIGRlc3RpbmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBaXJwb3J0TW9kZWw+KCk7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgZXZlcnkgdGltZSB0aGUgZGVzdGluYXRpb24gZHJvcGRvd24gc2VsZWN0b3Igb3BlbnMgb3IgY2xvc2VzLlxuICAgKi9cbiAgQE91dHB1dCgpIGRlc3RpbmF0aW9uT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCB3aGVuIHRoZSBkZXN0aW5hdGlvbiBkcm9wZG93biBjbG9zZXMuXG4gICAqL1xuICBAT3V0cHV0KCkgZm9jdXNPbk5leHQgPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgd2hlbiBnZW9sb2NhdGlvbiBwb3NpdGlvbiBoYXMgY2hhbmdlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBwb3NpdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8R2VvbG9jYXRpb25Qb3NpdGlvbj4oKTtcblxuICBwcml2YXRlIG9yaWdpbkFpcnBvcnRDb2RlVmFsdWU6IHN0cmluZztcbiAgcHJpdmF0ZSBkZXN0aW5hdGlvbkFpcnBvcnRDb2RlVmFsdWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignbmFzLWFpcnBvcnQtc2VsZWN0LW5ldycpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgW1wiJGV2ZW50XCJdKVxuICBvblJlc2l6ZSgpIHtcbiAgICB0aGlzLnNldElubGluZUZsZXgoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5haXJwb3J0cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGlucHV0OiBbYWlycG9ydHNdJyk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXN1bHRzTGFiZWxzID0ge1xuICAgICAgYWxsQWlycG9ydHM6IHRoaXMuYWxsQWlycG9ydHNMYWJlbCB8fCAnJyxcbiAgICAgIGNsb3Nlc3RBaXJwb3J0czogdGhpcy5jbG9zZXN0QWlycG9ydHNMYWJlbCB8fCAnJyxcbiAgICAgIGxhdGVzdFNlYXJjaGVzOiB0aGlzLmxhdGVzdFNlYXJjaGVzTGFiZWwgfHwgJycsXG4gICAgICBnZW9sb2NhdGlvbjogdGhpcy5nZW9sb2NhdGlvbkxhYmVsIHx8ICcnLFxuICAgICAgZ2VvbG9jYXRpb25EZW5pZWQ6IHRoaXMuZ2VvbG9jYXRpb25CbG9ja2VkTGFiZWwgfHwgJydcbiAgICB9O1xuXG4gICAgdGhpcy50ZXh0U2VsZWN0T3JpZ2luRmlyc3QgPSB0aGlzLnNlbGVjdE9yaWdpbkZpcnN0TGFiZWw7XG4gICAgdGhpcy5haXJwb3J0c09yaWdpbiA9IHRoaXMuYWxsb3dlZE9yaWdpbkFpcG9ydHMgJiYgdGhpcy5hbGxvd2VkT3JpZ2luQWlwb3J0cy5sZW5ndGggPiAwID8gdGhpcy5hbGxvd2VkT3JpZ2luQWlwb3J0cyA6IHRoaXMuYWlycG9ydHM7XG5cbiAgICB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24gPSB0aGlzLmdldEFpcnBvcnRzRGVzdGluYXRpb25zKCk7XG5cbiAgICBpZiAodGhpcy5uYXNGb3JtR3JvdXApIHtcbiAgICAgIGlmICh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZU9yaWdpbikge1xuICAgICAgICBjb25zdCBvcmlnaW5Db250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lT3JpZ2luKTtcblxuICAgICAgICBpZiAob3JpZ2luQ29udHJvbCkge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMuYWlycG9ydHNPcmlnaW4uZmluZCh4ID0+IHgubmFtZSA9PT0gb3JpZ2luQ29udHJvbC52YWx1ZSk7XG5cbiAgICAgICAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbkFpcnBvcnRDb2RlID0gb3JpZ2luLmNvZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZURlc3RpbmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uQ29udHJvbCA9IHRoaXMubmFzRm9ybUdyb3VwLmdldCh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZURlc3RpbmF0aW9uKTtcblxuICAgICAgICBpZiAoZGVzdGluYXRpb25Db250cm9sKSB7XG4gICAgICAgICAgY29uc3QgZGVzdGluYXRpb24gPSB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24uZmluZCh4ID0+IHgubmFtZSA9PT0gZGVzdGluYXRpb25Db250cm9sLnZhbHVlKTtcblxuICAgICAgICAgIGlmIChkZXN0aW5hdGlvbikge1xuICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbkFpcnBvcnRDb2RlID0gZGVzdGluYXRpb24uY29kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy5kZXN0aW5hdGlvbikge1xuICAgICAgdGhpcy5jbGVhckRlc3RpbmF0aW9uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kZXN0aW5hdGlvbkNoYW5nZS5lbWl0KHRoaXMuZGVzdGluYXRpb24pO1xuICAgIHRoaXMub3JpZ2luQ2hhbmdlLmVtaXQodGhpcy5vcmlnaW4pO1xuXG5cbiAgICBpZiAodGhpcy5vcmlnaW5BaXJwb3J0Q29kZSkge1xuICAgICAgdGhpcy5zZXRPcmlnaW4oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZXN0aW5hdGlvbkFpcnBvcnRDb2RlKSB7XG4gICAgICB0aGlzLnNldERlc3RpbmF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0SW5saW5lRmxleCgpO1xuICB9XG5cbiAgZ2V0QWlycG9ydFNlbGVjdENvbWJvQ2xhc3MoZWxlbWVudD86IHN0cmluZywgbW9kaWZpZXJzSW5wdXQ/OiBhbnkpOiBDbGFzc01vZGVsIHtcbiAgICBsZXQgbW9kaWZpZXJzID0gbW9kaWZpZXJzSW5wdXQ7XG5cbiAgICBpZiAodHlwZW9mIG1vZGlmaWVyc0lucHV0ID09PSAnc3RyaW5nJyB8fCBtb2RpZmllcnNJbnB1dCBpbnN0YW5jZW9mIFN0cmluZykge1xuICAgICAgbW9kaWZpZXJzID0gW21vZGlmaWVyc0lucHV0XTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYmxvY2s6ICduYXMtYWlycG9ydC1zZWxlY3QtbmV3LWNvbWJvJyxcbiAgICAgIGVsZW1lbnQ6IGVsZW1lbnQsXG4gICAgICBtb2RpZmllcnM6IG1vZGlmaWVyc1xuICAgIH07XG4gIH1cblxuICBvbk9yaWdpbk9wZW4ob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vcmlnaW5PcGVuID0gb3BlbjtcbiAgICB9KTtcbiAgICB0aGlzLmRlc3RpbmF0aW9uT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMub3JpZ2luT3BlbkNoYW5nZS5lbWl0KG9wZW4pO1xuICB9XG5cbiAgb25EZXN0aW5hdGlvbk9wZW4ob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGVzdGluYXRpb25PcGVuID0gb3BlbjtcbiAgICB0aGlzLm9yaWdpbk9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmRlc3RpbmF0aW9uT3BlbkNoYW5nZS5lbWl0KG9wZW4pO1xuICB9XG5cbiAgb25TZWxlY3Rpb25DbGVhcmVkKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJlZCA9IHRydWU7XG4gIH1cblxuICBzZXRTZWxlY3RlZE9yaWdpbihhaXJwb3J0OiBBaXJwb3J0TW9kZWwpOiB2b2lkIHtcbiAgICBpZiAoIWFpcnBvcnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9yaWdpbiA9IGFpcnBvcnQ7XG4gICAgdGhpcy5vcmlnaW5BaXJwb3J0Q29kZVZhbHVlID0gYWlycG9ydC5jb2RlO1xuICAgIHRoaXMuaXNEZXN0aW5hdGlvblZhbGlkID0gYWlycG9ydC5jb2RlID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuYWlycG9ydFJlbGF0aW9ucyAmJiB0aGlzLmhhc1ZhbGlkRGVzdGluYXRpb25zKGFpcnBvcnQpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbGlkQWlycG9ydERlc3RpbmF0aW9ucyhhaXJwb3J0KTtcbiAgICAgIHRoaXMuc2V0Q3VycmVudExhdGVzdFNlYXJjaGVzRGVzdGluYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5jbGVhcmVkID0gZmFsc2U7XG4gICAgdGhpcy5vcmlnaW5DaGFuZ2UuZW1pdChhaXJwb3J0KTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkRGVzdGluYXRpb24oYWlycG9ydDogQWlycG9ydE1vZGVsKTogdm9pZCB7XG4gICAgaWYgKCFhaXJwb3J0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kZXN0aW5hdGlvbiA9IGFpcnBvcnQ7XG4gICAgdGhpcy5kZXN0aW5hdGlvbkFpcnBvcnRDb2RlVmFsdWUgPSBhaXJwb3J0LmNvZGU7XG4gICAgdGhpcy5jbGVhcmVkID0gZmFsc2U7XG4gICAgdGhpcy5kZXN0aW5hdGlvbkNoYW5nZS5lbWl0KGFpcnBvcnQpO1xuICB9XG5cbiAgc2V0Rm9jdXNPbk5leHQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzT25OZXh0LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25PcmlnaW5Gb2N1cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5haXJwb3J0U2VsZWN0RHJvcGRvd25PcmlnaW4pIHtcbiAgICAgIHRoaXMub25PcmlnaW5PcGVuKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVN3aXRjaEljb24oKTogdm9pZCB7XG4gICAgdGhpcy5zd2l0Y2hUeXBlID0gdGhpcy5zd2l0Y2hUeXBlID09PSAnc3dpdGNoJyA/ICdzd2l0Y2gtLXNlY29uZGFyeScgOiAnc3dpdGNoJztcbiAgfVxuXG4gIHN3YXBBaXJwb3J0cygpOiB2b2lkIHtcbiAgICBjb25zdCBkZXN0aW5hdGlvbiA9IHsgLi4udGhpcy5kZXN0aW5hdGlvbiB9O1xuICAgIGNvbnN0IG9yaWdpbiA9IHsgLi4udGhpcy5vcmlnaW4gfTtcbiAgICB0aGlzLmRlc3RpbmF0aW9uID0gb3JpZ2luO1xuICAgIHRoaXMub3JpZ2luID0gZGVzdGluYXRpb247XG5cbiAgICB0aGlzLnNldFNlbGVjdGVkRGVzdGluYXRpb24odGhpcy5kZXN0aW5hdGlvbik7XG4gICAgdGhpcy5zZXRTZWxlY3RlZE9yaWdpbih0aGlzLm9yaWdpbik7XG4gIH1cblxuICBzd2FwS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIHRoaXMuc3dhcEFpcnBvcnRzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNldERlc3RpbmF0aW9uT3BlbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmV4aXN0cyh0aGlzLmNvbWJvKSkge1xuICAgICAgdGhpcy5kZXN0aW5hdGlvbk9wZW4gPSB0cnVlO1xuICAgICAgdGhpcy5vcmlnaW5PcGVuID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0Rm9jdXNPbk5leHQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGdldENsb3Nlc3RBaXJwb3J0cyhwb3NpdGlvbjogR2VvbG9jYXRpb25Qb3NpdGlvbik6IHZvaWQge1xuICAgIHRoaXMucG9zaXRpb25DaGFuZ2UuZW1pdChwb3NpdGlvbik7XG4gIH1cblxuICBzZXRJbmxpbmVGbGV4KCk6IHZvaWQge1xuICAgIGlmKCF0aGlzLmNvbnRhaW5lciAmJiAhdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pbmxpbmVGbGV4ID0gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA+IDc4ODtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWlycG9ydHNEZXN0aW5hdGlvbnMoKTogQXJyYXk8QWlycG9ydE1vZGVsPiB7XG4gICAgY29uc3QgYWxsb3dlZERlc3RpbmF0aW9uQWlycG9ydHMgPSB0aGlzLmFsbG93ZWREZXN0aW5hdGlvbkFpcnBvcnRzO1xuXG4gICAgcmV0dXJuIGFsbG93ZWREZXN0aW5hdGlvbkFpcnBvcnRzICYmIGFsbG93ZWREZXN0aW5hdGlvbkFpcnBvcnRzLmxlbmd0aCA+IDBcbiAgICAgID8gYWxsb3dlZERlc3RpbmF0aW9uQWlycG9ydHNcbiAgICAgIDogdGhpcy5haXJwb3J0cztcbiAgfVxuXG4gIHByaXZhdGUgc2V0T3JpZ2luKCk6IHZvaWQge1xuICAgIGNvbnN0IGFpcnBvcnQgPSB0aGlzLmFpcnBvcnRzLmZpbmQoeCA9PiB4LmNvZGUgPT09IHRoaXMub3JpZ2luQWlycG9ydENvZGUpO1xuXG4gICAgaWYgKGFpcnBvcnQpIHtcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRPcmlnaW4oYWlycG9ydCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXREZXN0aW5hdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBhaXJwb3J0ID0gdGhpcy5haXJwb3J0cy5maW5kKHggPT4geC5jb2RlID09PSB0aGlzLmRlc3RpbmF0aW9uQWlycG9ydENvZGUpO1xuXG4gICAgaWYgKGFpcnBvcnQpIHtcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWREZXN0aW5hdGlvbihhaXJwb3J0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZhbGlkQWlycG9ydERlc3RpbmF0aW9ucyhhaXJwb3J0OiBBaXJwb3J0TW9kZWwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWlycG9ydFJlbGF0aW9ucykge1xuICAgICAgdGhpcy5haXJwb3J0c0Rlc3RpbmF0aW9uID0gdGhpcy5haXJwb3J0c09yaWdpbjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdmFsaWREZXN0aW5hdGlvbnMgPSB0aGlzLmdldEFpcnBvcnRSZWxhdGlvbnMoYWlycG9ydCk7XG5cbiAgICAgIGlmICghdmFsaWREZXN0aW5hdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWREZXN0aW5hdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuY2xlYXJEZXN0aW5hdGlvbnMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBpc0Rlc3RpbmF0aW9uVmFsaWQ6IGJvb2xlYW47XG4gICAgICAgIGlmICh0aGlzLmRlc3RpbmF0aW9uICYmIHRoaXMuZGVzdGluYXRpb24uY29kZSkge1xuICAgICAgICAgIGlzRGVzdGluYXRpb25WYWxpZCA9IHZhbGlkRGVzdGluYXRpb25zLnNvbWUoeCA9PiB4ICYmIHgudG9Mb3dlckNhc2UoKSA9PT0gdGhpcy5kZXN0aW5hdGlvbi5jb2RlLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNEZXN0aW5hdGlvblZhbGlkKSB7XG4gICAgICAgICAgdGhpcy5jbGVhckRlc3RpbmF0aW9uKCk7XG4gICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbkNoYW5nZS5lbWl0KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWlycG9ydHMpIHtcbiAgICAgICAgICB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24gPSB0aGlzLmFpcnBvcnRzXG4gICAgICAgICAgICAuZmlsdGVyKGFpcnBvcnRJdGVtID0+IGFpcnBvcnRJdGVtXG4gICAgICAgICAgICAgICYmIGFpcnBvcnRJdGVtLmNvZGVcbiAgICAgICAgICAgICAgJiYgdmFsaWREZXN0aW5hdGlvbnMuc29tZSh4ID0+IHggJiYgYWlycG9ydEl0ZW0uY29kZS50b0xvd2VyQ2FzZSgpID09PSB4LnRvTG93ZXJDYXNlKCkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzVmFsaWREZXN0aW5hdGlvbnMob3JpZ2luOiBBaXJwb3J0TW9kZWwpOiBib29sZWFuIHtcbiAgICBpZiAoIW9yaWdpbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGF0aW9ucyA9IHRoaXMuZ2V0QWlycG9ydFJlbGF0aW9ucyhvcmlnaW4pO1xuXG4gICAgcmV0dXJuIHJlbGF0aW9ucyAmJiByZWxhdGlvbnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWlycG9ydFJlbGF0aW9ucyhhaXJwb3J0OiBBaXJwb3J0TW9kZWwpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBpZiAoIXRoaXMuYWlycG9ydHMpIHtcbiAgICAgIHJldHVybiBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFpcnBvcnRSZWxhdGlvbnNbYWlycG9ydC5jb2RlLnRvTG93ZXJDYXNlKCldIHx8IHRoaXMuYWlycG9ydFJlbGF0aW9uc1thaXJwb3J0LmNvZGUudG9VcHBlckNhc2UoKV07XG4gIH1cblxuICBwcml2YXRlIGNsZWFyT3JpZ2luKCkge1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRPcmlnaW4oe1xuICAgICAgY29kZTogJycsXG4gICAgICBjb3VudHJ5TmFtZTogJycsXG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGFpcnBvcnROYW1lOiAnJyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnJyxcbiAgICAgIG5vcm1hbGl6ZWRBaXJwb3J0TmFtZTogJydcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJEZXN0aW5hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNlbGVjdGVkRGVzdGluYXRpb24oe1xuICAgICAgY29kZTogJycsXG4gICAgICBjb3VudHJ5TmFtZTogJycsXG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGFpcnBvcnROYW1lOiAnJyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnJyxcbiAgICAgIG5vcm1hbGl6ZWRBaXJwb3J0TmFtZTogJydcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJEZXN0aW5hdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5haXJwb3J0c0Rlc3RpbmF0aW9uID0gbmV3IEFycmF5PEFpcnBvcnRNb2RlbD4oKTtcblxuICAgIGNvbnN0IG1vZGVsID0ge1xuICAgICAgbmFtZTogdGhpcy50ZXh0U2VsZWN0T3JpZ2luRmlyc3QsXG4gICAgICBjb3VudHJ5TmFtZTogJycsXG4gICAgICBjb2RlOiAnJyxcbiAgICAgIGFpcnBvcnROYW1lOiAnJyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnJyxcbiAgICAgIG5vcm1hbGl6ZWRBaXJwb3J0TmFtZTogJydcbiAgICB9O1xuXG4gICAgdGhpcy5haXJwb3J0c0Rlc3RpbmF0aW9uLnB1c2gobW9kZWwpO1xuICAgIHRoaXMuY2xlYXJEZXN0aW5hdGlvbigpO1xuICAgIHRoaXMuZGVzdGluYXRpb25DaGFuZ2UuZW1pdChtb2RlbCk7XG4gIH1cblxuICBwcml2YXRlIHNldEN1cnJlbnRMYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24pIHtcbiAgICAgIHRoaXMuY3VycmVudExhdGVzdFNlYXJjaGVzRGVzdGluYXRpb24gPSB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24uZmlsdGVyKGFpcnBvcnQgPT4ge1xuICAgICAgICBpZiAodGhpcy5sYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubGF0ZXN0U2VhcmNoZXNEZXN0aW5hdGlvbi5zb21lKHggPT4geC5jb2RlICYmIHguY29kZS50b0xvd2VyQ2FzZSgpID09PSBhaXJwb3J0LmNvZGUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImV4aXN0cyhjb21ibyk7IGVsc2UgYWlycG9ydFNlbGVjdFRlbXBsYXRlXCJcbiAgW25hc0NsYXNzXT1cImdldEFpcnBvcnRTZWxlY3RDb21ib0NsYXNzKCcnLCBbaW5saW5lRmxleCAmJiAnaW5saW5lJ10pXCIgI2NvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFpcnBvcnRTZWxlY3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2FpcnBvcnRTZWxlY3RUZW1wbGF0ZT5cbiAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJycsIGV4aXN0cyh1c2VTd2l0Y2gpICYmICdwYWRkaW5nLW9yaWdpbicpXCJcbiAgICAqbmdJZj1cImFpcnBvcnRzT3JpZ2luXCI+XG4gICAgPG5hcy1haXJwb3J0LXNlbGVjdC1kcm9wZG93biAjYWlycG9ydFNlbGVjdERyb3Bkb3duT3JpZ2luXG4gICAgICBkaXNwbGF5TGF0ZXN0U2VhcmNoZXNcbiAgICAgIFtlbmFibGVHZW9sb2NhdGlvbl09XCJkaXNwbGF5Q2xvc2VzdEFpcnBvcnRzXCJcbiAgICAgIFtkaXNwbGF5Q2xvc2VzdEFpcnBvcnRzXT1cImRpc3BsYXlDbG9zZXN0QWlycG9ydHNcIlxuICAgICAgW2FpcnBvcnRTZWxlY3RMYWJlbF09XCJsYWJlbE9yaWdpblwiXG4gICAgICBbbGF0ZXN0U2VhcmNoZXNdPVwibGF0ZXN0U2VhcmNoZXNPcmlnaW5cIlxuICAgICAgW2Nsb3Nlc3RBaXJwb3J0c109XCJjbG9zZXN0QWlycG9ydHNcIlxuICAgICAgW2FpcnBvcnRdPVwib3JpZ2luXCJcbiAgICAgIFthaXJwb3J0c109XCJhaXJwb3J0c09yaWdpblwiXG4gICAgICBbcmVzdWx0c0xhYmVsc109XCJyZXN1bHRzTGFiZWxzXCJcbiAgICAgIFthaXJwb3J0U2VsZWN0UGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJPcmlnaW5cIlxuICAgICAgW29wZW5dPVwib3JpZ2luT3BlblwiXG4gICAgICBba2VlcFNlbGVjdGlvbl09XCJrZWVwU2VsZWN0aW9uXCJcbiAgICAgIFthaXJwb3J0U2VsZWN0SWNvbk1vZGlmaWVyXT1cIidmbGlnaHQtZGVwYXJ0dXJlJ1wiXG4gICAgICBbbmFzRm9ybUNvbnRyb2xOYW1lXT1cIm5hc0Zvcm1Db250cm9sTmFtZU9yaWdpblwiXG4gICAgICBbbmFzRm9ybUdyb3VwXT1cIm5hc0Zvcm1Hcm91cFwiXG4gICAgICBbYXJpYUxhYmVsQ2xlYXJdPVwiYXJpYUxhYmVsQ2xlYXJcIlxuICAgICAgW2FyaWFMYWJlbEJhY2tkcm9wXT1cImFyaWFMYWJlbEJhY2tkcm9wXCJcbiAgICAgIChjbGVhcmVkU2VsZWN0aW9uKT1cIm9uU2VsZWN0aW9uQ2xlYXJlZCgpXCJcbiAgICAgIChzZWxlY3RlZCk9XCJzZXRTZWxlY3RlZE9yaWdpbigkZXZlbnQpXCJcbiAgICAgIChvcGVuQ2hhbmdlKT1cIm9uT3JpZ2luT3BlbigkZXZlbnQpXCJcbiAgICAgIChmb2N1c09uTmV4dCk9XCJzZXREZXN0aW5hdGlvbk9wZW4oJGV2ZW50KVwiXG4gICAgICAocG9zaXRpb25DaGFuZ2UpPVwiZ2V0Q2xvc2VzdEFpcnBvcnRzKCRldmVudClcIj48L25hcy1haXJwb3J0LXNlbGVjdC1kcm9wZG93bj5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJleGlzdHMoY29tYm8pXCI+XG4gICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJycsIGV4aXN0cyh1c2VTd2l0Y2gpICYmICdwYWRkaW5nLWRlc3RpbmF0aW9uJylcIlxuICAgICAgKm5nSWY9XCJhaXJwb3J0c0Rlc3RpbmF0aW9uICYmIGFpcnBvcnRzRGVzdGluYXRpb24ubGVuZ3RoID4gMFwiPlxuICAgICAgPG5hcy1haXJwb3J0LXNlbGVjdC1kcm9wZG93biAjYWlycG9ydFNlbGVjdERyb3Bkb3duRGVzdGluYXRpb25cbiAgICAgICAgZGlzcGxheUxhdGVzdFNlYXJjaGVzXG4gICAgICAgIFthaXJwb3J0U2VsZWN0TGFiZWxdPVwibGFiZWxEZXN0aW5hdGlvblwiXG4gICAgICAgIFtkaXNwbGF5Q2xvc2VzdEFpcnBvcnRzXT1cImZhbHNlXCJcbiAgICAgICAgW2xhdGVzdFNlYXJjaGVzXT1cImN1cnJlbnRMYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uXCJcbiAgICAgICAgW2FpcnBvcnRzXT1cImFpcnBvcnRzRGVzdGluYXRpb25cIlxuICAgICAgICBbcmVzdWx0c0xhYmVsc109XCJyZXN1bHRzTGFiZWxzXCJcbiAgICAgICAgW2FpcnBvcnRdPVwiZGVzdGluYXRpb25cIlxuICAgICAgICBbYWlycG9ydFNlbGVjdFBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyRGVzdGluYXRpb25cIlxuICAgICAgICBbb3Blbl09XCJkZXN0aW5hdGlvbk9wZW5cIlxuICAgICAgICBba2VlcFNlbGVjdGlvbl09XCJrZWVwU2VsZWN0aW9uXCJcbiAgICAgICAgW2FpcnBvcnRTZWxlY3RJY29uTW9kaWZpZXJdPVwiJ2ZsaWdodC1hcnJpdmFsJ1wiXG4gICAgICAgIFtuYXNGb3JtQ29udHJvbE5hbWVdPVwibmFzRm9ybUNvbnRyb2xOYW1lRGVzdGluYXRpb25cIlxuICAgICAgICBbbmFzRm9ybUdyb3VwXT1cIm5hc0Zvcm1Hcm91cFwiXG4gICAgICAgIFthcmlhTGFiZWxDbGVhcl09XCJhcmlhTGFiZWxDbGVhclwiXG4gICAgICAgIFthcmlhTGFiZWxCYWNrZHJvcF09XCJhcmlhTGFiZWxCYWNrZHJvcFwiXG4gICAgICAgIFtpc1ZhbGlkXT1cImlzRGVzdGluYXRpb25WYWxpZFwiXG4gICAgICAgIFtpbnZhbGlkVGV4dF09XCJpbnZhbGlkRGVzdGluYXRpb25UZXh0XCJcbiAgICAgICAgKGNsZWFyZWRTZWxlY3Rpb24pPVwib25TZWxlY3Rpb25DbGVhcmVkKClcIlxuICAgICAgICAoc2VsZWN0ZWQpPVwic2V0U2VsZWN0ZWREZXN0aW5hdGlvbigkZXZlbnQpXCJcbiAgICAgICAgKG9wZW5DaGFuZ2UpPVwib25EZXN0aW5hdGlvbk9wZW4oJGV2ZW50KVwiXG4gICAgICAgIChmb2N1c09uTmV4dCk9XCJzZXRGb2N1c09uTmV4dCgkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzT25QcmV2aW91cyk9XCJvbk9yaWdpbkZvY3VzKClcIj48L25hcy1haXJwb3J0LXNlbGVjdC1kcm9wZG93bj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZXhpc3RzKHVzZVN3aXRjaCkgJiYgIShvcmlnaW5PcGVuIHx8IGRlc3RpbmF0aW9uT3BlbiB8fCBjbGVhcmVkKVwiXG4gICAgICAjc3dpdGNoQnV0dG9uXG4gICAgICBbbmFzQ2xhc3NdPVwiZ2V0QWlycG9ydFNlbGVjdENvbWJvQ2xhc3MoJ3N3aXRjaGVyJywgKG9yaWdpbkFpcnBvcnRDb2RlVmFsdWUgJiYgZGVzdGluYXRpb25BaXJwb3J0Q29kZVZhbHVlKSAmJiAnZmlsbGVkJylcIlxuICAgICAgKG1vdXNlb3Zlcik9XCJjaGFuZ2VTd2l0Y2hJY29uKClcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwiY2hhbmdlU3dpdGNoSWNvbigpXCJcbiAgICAgIChrZXlkb3duKT1cInN3YXBLZXlEb3duKCRldmVudClcIlxuICAgICAgKGNsaWNrKT1cInN3YXBBaXJwb3J0cygpXCI+XG4gICAgICA8bmFzLWljb24gW3R5cGVdPVwiKHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZVZhbHVlICYmIHRoaXMub3JpZ2luQWlycG9ydENvZGVWYWx1ZSkgPyAndmVjdG9yLS1zZWNvbmRhcnknIDogJ3ZlY3RvcidcIj48L25hcy1pY29uPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+Il19