@wizishop/wizi-block 4.2.1-beta → 4.2.22-beta

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 (516) hide show
  1. package/bundles/wizishop-wizi-block.umd.js +409 -433
  2. package/bundles/wizishop-wizi-block.umd.js.map +1 -1
  3. package/bundles/wizishop-wizi-block.umd.min.js +1 -1
  4. package/bundles/wizishop-wizi-block.umd.min.js.map +1 -1
  5. package/esm2015/lib/components/blocks/blocks.component.js +1 -1
  6. package/esm2015/lib/components/components.module.js +1 -1
  7. package/esm2015/lib/components/configs/configs.component.js +1 -1
  8. package/esm2015/lib/components/container-block/container-block.component.js +1 -1
  9. package/esm2015/lib/components/previews/previews.component.js +1 -1
  10. package/esm2015/lib/dtos/apis/amplify/amplify-category.dto.js +1 -1
  11. package/esm2015/lib/dtos/apis/amplify/amplify-guide.dto.js +1 -1
  12. package/esm2015/lib/dtos/apis/amplify/amplify-media.dto.js +1 -1
  13. package/esm2015/lib/dtos/apis/amplify/amplify-paginated.dto.js +1 -1
  14. package/esm2015/lib/dtos/apis/amplify/amplify-product.dto.js +1 -1
  15. package/esm2015/lib/dtos/apis/catalogs/catalog-badges.dto.js +1 -1
  16. package/esm2015/lib/dtos/apis/catalogs/catalog-brand.dto.js +1 -1
  17. package/esm2015/lib/dtos/apis/catalogs/catalog-category.dto.js +1 -1
  18. package/esm2015/lib/dtos/apis/catalogs/catalog-facet-value.dto.js +1 -1
  19. package/esm2015/lib/dtos/apis/catalogs/catalog-facet.dto.js +1 -1
  20. package/esm2015/lib/dtos/apis/catalogs/catalog-image.dto.js +1 -1
  21. package/esm2015/lib/dtos/apis/catalogs/catalog-list.dto.js +1 -1
  22. package/esm2015/lib/dtos/apis/catalogs/catalog-price.dto.js +1 -1
  23. package/esm2015/lib/dtos/apis/catalogs/catalog-variant-option.dto.js +1 -1
  24. package/esm2015/lib/dtos/apis/catalogs/catalog-variant.dto.js +1 -1
  25. package/esm2015/lib/dtos/apis/catalogs/catalog.dto.js +1 -1
  26. package/esm2015/lib/dtos/apis/comments/comment-list.dto.js +1 -1
  27. package/esm2015/lib/dtos/apis/comments/comment.dto.js +1 -1
  28. package/esm2015/lib/dtos/apis/forms/form-detail.dto.js +1 -1
  29. package/esm2015/lib/dtos/apis/forms/form-list.dto.js +1 -1
  30. package/esm2015/lib/dtos/apis/maps/open-map.dto.js +1 -1
  31. package/esm2015/lib/dtos/blocks/amplify-product/amplify-product-zoom-more.dto.js +1 -1
  32. package/esm2015/lib/dtos/blocks/amplify-product/amplify-product-zoom-selected.dto.js +1 -1
  33. package/esm2015/lib/dtos/blocks/amplify-product/amplify-product-zoom-triple-column.dto.js +1 -1
  34. package/esm2015/lib/dtos/blocks/amplify-product/amplify-product-zoom.dto.js +1 -1
  35. package/esm2015/lib/dtos/blocks/amplify-products-list/amplify-products-list-classic.dto.js +1 -1
  36. package/esm2015/lib/dtos/blocks/amplify-products-list/amplify-products-list-selected.dto.js +1 -1
  37. package/esm2015/lib/dtos/blocks/amplify-products-list/amplify-products-list-simple.dto.js +1 -1
  38. package/esm2015/lib/dtos/blocks/code/code-html.dto.js +1 -1
  39. package/esm2015/lib/dtos/blocks/code/code-javascript.dto.js +1 -1
  40. package/esm2015/lib/dtos/blocks/code/code-stylesheet.dto.js +1 -1
  41. package/esm2015/lib/dtos/blocks/faq/faq-accordion.dto.js +1 -1
  42. package/esm2015/lib/dtos/blocks/faq/faq-frame.dto.js +1 -1
  43. package/esm2015/lib/dtos/blocks/faq/faq-list-icon.dto.js +1 -1
  44. package/esm2015/lib/dtos/blocks/faq/faq-simple-background.dto.js +1 -1
  45. package/esm2015/lib/dtos/blocks/faq/faq-simple.dto.js +1 -1
  46. package/esm2015/lib/dtos/blocks/faq/faq.dto.js +1 -1
  47. package/esm2015/lib/dtos/blocks/forms/forms-background.dto.js +1 -1
  48. package/esm2015/lib/dtos/blocks/forms/forms-imageleft.dto.js +1 -1
  49. package/esm2015/lib/dtos/blocks/forms/forms-imageright.dto.js +1 -1
  50. package/esm2015/lib/dtos/blocks/forms/forms-simple.dto.js +1 -1
  51. package/esm2015/lib/dtos/blocks/images/four-images-title.dto.js +1 -1
  52. package/esm2015/lib/dtos/blocks/images/images-banner.dto.js +1 -1
  53. package/esm2015/lib/dtos/blocks/images/images-big-and-double.dto.js +1 -1
  54. package/esm2015/lib/dtos/blocks/images/images-bigs-and-double-middle.dto.js +1 -1
  55. package/esm2015/lib/dtos/blocks/images/images-double.dto.js +1 -1
  56. package/esm2015/lib/dtos/blocks/images/images-quadruple-left-one-right.dto.js +1 -1
  57. package/esm2015/lib/dtos/blocks/images/images-quadruple.dto.js +1 -1
  58. package/esm2015/lib/dtos/blocks/images/images-simple.dto.js +1 -1
  59. package/esm2015/lib/dtos/blocks/images/images-triple.dto.js +1 -1
  60. package/esm2015/lib/dtos/blocks/images/two-images-title-text.dto.js +1 -1
  61. package/esm2015/lib/dtos/blocks/images-texts/images-texts-big-left-text-right.dto.js +1 -1
  62. package/esm2015/lib/dtos/blocks/images-texts/images-texts-big-right-text-left.dto.js +1 -1
  63. package/esm2015/lib/dtos/blocks/images-texts/images-texts-left-text-right.dto.js +1 -1
  64. package/esm2015/lib/dtos/blocks/images-texts/images-texts-one-text-one.dto.js +1 -1
  65. package/esm2015/lib/dtos/blocks/images-texts/images-texts-right-text-left.dto.js +1 -1
  66. package/esm2015/lib/dtos/blocks/images-texts/images-texts-small-left-text-right.dto.js +1 -1
  67. package/esm2015/lib/dtos/blocks/images-texts/images-texts-small-right-text-left.dto.js +1 -1
  68. package/esm2015/lib/dtos/blocks/images-texts/images-texts-text-one-text.dto.js +1 -1
  69. package/esm2015/lib/dtos/blocks/launch-videos/launch-videos-button.dto.js +1 -1
  70. package/esm2015/lib/dtos/blocks/launch-videos/launch-videos-buttontxt.dto.js +1 -1
  71. package/esm2015/lib/dtos/blocks/map/map-background-form-left.dto.js +1 -1
  72. package/esm2015/lib/dtos/blocks/map/map-background-form-right.dto.js +1 -1
  73. package/esm2015/lib/dtos/blocks/map/map-fullpage.dto.js +1 -1
  74. package/esm2015/lib/dtos/blocks/map/map-left-text.dto.js +1 -1
  75. package/esm2015/lib/dtos/blocks/map/map-right-text.dto.js +1 -1
  76. package/esm2015/lib/dtos/blocks/map/map-text-form.dto.js +1 -1
  77. package/esm2015/lib/dtos/blocks/newsletter/newsletter-aligned-center-background.dto.js +1 -1
  78. package/esm2015/lib/dtos/blocks/newsletter/newsletter-aligned-center-image.dto.js +1 -1
  79. package/esm2015/lib/dtos/blocks/newsletter/newsletter-center-image.dto.js +1 -1
  80. package/esm2015/lib/dtos/blocks/onboarding/forms-onboarding.do.js +1 -1
  81. package/esm2015/lib/dtos/blocks/parent-block.dto.js +1 -1
  82. package/esm2015/lib/dtos/blocks/product/product-zoom-complete-background.dto.js +1 -1
  83. package/esm2015/lib/dtos/blocks/product/product-zoom-complete-slider.dto.js +1 -1
  84. package/esm2015/lib/dtos/blocks/product/product-zoom-complete.dto.js +1 -1
  85. package/esm2015/lib/dtos/blocks/product/product-zoom-more.dto.js +1 -1
  86. package/esm2015/lib/dtos/blocks/product/product-zoom-selected.dto.js +1 -1
  87. package/esm2015/lib/dtos/blocks/product/product-zoom-simple.dto.js +1 -1
  88. package/esm2015/lib/dtos/blocks/product/product-zoom-triple-column.dto.js +1 -1
  89. package/esm2015/lib/dtos/blocks/product/product-zoom.dto.js +1 -1
  90. package/esm2015/lib/dtos/blocks/products-list/products-list-classic.dto.js +1 -1
  91. package/esm2015/lib/dtos/blocks/products-list/products-list-selected.dto.js +1 -1
  92. package/esm2015/lib/dtos/blocks/products-list/products-list-simple.dto.js +1 -1
  93. package/esm2015/lib/dtos/blocks/quotes/quotes-author.dto.js +1 -1
  94. package/esm2015/lib/dtos/blocks/quotes/quotes-simple-background.dto.js +1 -1
  95. package/esm2015/lib/dtos/blocks/quotes/quotes-simple.dto.js +1 -1
  96. package/esm2015/lib/dtos/blocks/rassurances/rassurances-quadruple-aligned.dto.js +1 -1
  97. package/esm2015/lib/dtos/blocks/rassurances/rassurances-quadruple-background.dto.js +1 -1
  98. package/esm2015/lib/dtos/blocks/rassurances/rassurances-triple-background.dto.js +1 -1
  99. package/esm2015/lib/dtos/blocks/reviews/reviews-simple.dto.js +1 -1
  100. package/esm2015/lib/dtos/blocks/reviews/reviews-waterfall.dto.js +1 -1
  101. package/esm2015/lib/dtos/blocks/separators/separator-simple.dto.js +1 -1
  102. package/esm2015/lib/dtos/blocks/sliders/sliders-double-imageright.dto.js +1 -1
  103. package/esm2015/lib/dtos/blocks/sliders/sliders-fullpage.dto.js +1 -1
  104. package/esm2015/lib/dtos/blocks/sliders/sliders-imageright.dto.js +1 -1
  105. package/esm2015/lib/dtos/blocks/sliders/sliders-leftnav.dto.js +1 -1
  106. package/esm2015/lib/dtos/blocks/sliders/sliders-with-banner.dto.js +1 -1
  107. package/esm2015/lib/dtos/blocks/socials/socials-like.dto.js +1 -1
  108. package/esm2015/lib/dtos/blocks/socials/socials-network.dto.js +1 -1
  109. package/esm2015/lib/dtos/blocks/socials/socials-page-complex.dto.js +1 -1
  110. package/esm2015/lib/dtos/blocks/socials/socials-page-simple.dto.js +1 -1
  111. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-four-rows-icon-text.dto.js +1 -1
  112. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-link.dto.js +1 -1
  113. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-rows-icon-text.dto.js +1 -1
  114. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-simple.dto.js +1 -1
  115. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-three-rows-icon-text.dto.js +1 -1
  116. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-two-rows-icon-text.dto.js +1 -1
  117. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-with-banner.dto.js +1 -1
  118. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-with-txt.dto.js +1 -1
  119. package/esm2015/lib/dtos/blocks/texts/texts-double-background.dto.js +1 -1
  120. package/esm2015/lib/dtos/blocks/texts/texts-double.dto.js +1 -1
  121. package/esm2015/lib/dtos/blocks/texts/texts-one-background.dto.js +1 -1
  122. package/esm2015/lib/dtos/blocks/texts/texts-one.dto.js +1 -1
  123. package/esm2015/lib/dtos/blocks/texts/texts-quadruple-background.dto.js +1 -1
  124. package/esm2015/lib/dtos/blocks/texts/texts-quadruple-numbers.dto.js +1 -1
  125. package/esm2015/lib/dtos/blocks/texts/texts-quadruple.dto.js +1 -1
  126. package/esm2015/lib/dtos/blocks/texts/texts-triple-background.dto.js +1 -1
  127. package/esm2015/lib/dtos/blocks/texts/texts-triple.dto.js +1 -1
  128. package/esm2015/lib/dtos/blocks/timer/timer-airport.dto.js +1 -1
  129. package/esm2015/lib/dtos/blocks/timer/timer-background.dto.js +1 -1
  130. package/esm2015/lib/dtos/blocks/timer/timer-clock.dto.js +1 -1
  131. package/esm2015/lib/dtos/blocks/timer/timer-multiple-img.dto.js +1 -1
  132. package/esm2015/lib/dtos/blocks/timer/timer-simple.dto.js +1 -1
  133. package/esm2015/lib/dtos/blocks/videos/videos-simple.dto.js +1 -1
  134. package/esm2015/lib/dtos/blocks/videos/videos-txt-content.dto.js +1 -1
  135. package/esm2015/lib/dtos/blocks/videos/videos-txt.dto.js +1 -1
  136. package/esm2015/lib/dtos/blocks/witness/about-block.dto.js +1 -1
  137. package/esm2015/lib/dtos/blocks/witness/witness-background-double.dto.js +1 -1
  138. package/esm2015/lib/dtos/blocks/witness/witness-background-one.dto.js +1 -1
  139. package/esm2015/lib/dtos/blocks/witness/witness-quadruple.dto.js +1 -1
  140. package/esm2015/lib/dtos/blocks/witness/witness-triple.dto.js +1 -1
  141. package/esm2015/lib/dtos/blocks/witness/witness-twice.dto.js +1 -1
  142. package/esm2015/lib/dtos/configs/apis/api.dto.js +1 -1
  143. package/esm2015/lib/dtos/configs/blocks/block-config.dto.js +1 -1
  144. package/esm2015/lib/dtos/configs/blocks/blocks-list.dto.js +1 -1
  145. package/esm2015/lib/dtos/configs/buttons/button.dto.js +1 -1
  146. package/esm2015/lib/dtos/configs/external/external-config.dto.js +1 -1
  147. package/esm2015/lib/dtos/configs/fonts/font-awesome.dto.js +1 -1
  148. package/esm2015/lib/dtos/configs/images/four-images-title-element.dto.js +1 -1
  149. package/esm2015/lib/dtos/configs/medias/image/font-or-media.dto.js +1 -1
  150. package/esm2015/lib/dtos/configs/medias/image/image-media-and-text.dto.js +1 -1
  151. package/esm2015/lib/dtos/configs/medias/image/image-media.dto.js +1 -1
  152. package/esm2015/lib/dtos/configs/medias/image/payment-or-media.dto.js +1 -1
  153. package/esm2015/lib/dtos/configs/medias/media-width-height.dto.js +1 -1
  154. package/esm2015/lib/dtos/configs/medias/media.dto.js +1 -1
  155. package/esm2015/lib/dtos/configs/medias/text/text-media.dto.js +1 -1
  156. package/esm2015/lib/dtos/configs/structures/structure-config.dto.js +1 -1
  157. package/esm2015/lib/dtos/configs/structures/structures-list.dto.js +1 -1
  158. package/esm2015/lib/dtos/configs/translations/translations.dto.js +1 -1
  159. package/esm2015/lib/dtos/configs/types/types.dto.js +1 -1
  160. package/esm2015/lib/dtos/configs/witness/about-element.dto.js +1 -1
  161. package/esm2015/lib/dtos/forms/forms.dto.js +1 -1
  162. package/esm2015/lib/dtos/utils/quill/crypted-link.dto.js +1 -1
  163. package/esm2015/lib/dtos/utils/quill/custom-link.dto.js +1 -1
  164. package/esm2015/lib/dtos/utils/quill/delta.dto.js +1 -1
  165. package/esm2015/lib/dtos/utils/quill/icon.dto.js +1 -1
  166. package/esm2015/lib/dtos/utils/quill/line-break.dto.js +1 -1
  167. package/esm2015/lib/dtos/utils/quill-html-editor/html-formatter.js +1 -1
  168. package/esm2015/lib/dtos/utils/quill-html-editor/logger.js +1 -1
  169. package/esm2015/lib/dtos/utils/quill-html-editor/options.js +1 -1
  170. package/esm2015/lib/dtos/utils/quill-html-editor/quill.htmlEditButton.js +1 -1
  171. package/esm2015/lib/services/blocks/amplify-product/amplify-product-zoom-more.service.js +1 -1
  172. package/esm2015/lib/services/blocks/amplify-product/amplify-product-zoom-selected.service.js +1 -1
  173. package/esm2015/lib/services/blocks/amplify-product/amplify-product-zoom-triple-column.service.js +1 -1
  174. package/esm2015/lib/services/blocks/amplify-product/amplify-product-zoom.service.js +1 -1
  175. package/esm2015/lib/services/blocks/amplify-products-list/amplify-products-list-classic.service.js +1 -1
  176. package/esm2015/lib/services/blocks/amplify-products-list/amplify-products-list-selected.service.js +1 -1
  177. package/esm2015/lib/services/blocks/amplify-products-list/amplify-products-list-simple.service.js +1 -1
  178. package/esm2015/lib/services/blocks/code/code-html.service.js +1 -1
  179. package/esm2015/lib/services/blocks/code/code-javascript.service.js +1 -1
  180. package/esm2015/lib/services/blocks/code/code-stylesheet.service.js +1 -1
  181. package/esm2015/lib/services/blocks/faq/faq-accordion.service.js +1 -1
  182. package/esm2015/lib/services/blocks/faq/faq-frame.service.js +1 -1
  183. package/esm2015/lib/services/blocks/faq/faq-list-icon.service.js +1 -1
  184. package/esm2015/lib/services/blocks/faq/faq-simple-background.service.js +1 -1
  185. package/esm2015/lib/services/blocks/faq/faq-simple.service.js +1 -1
  186. package/esm2015/lib/services/blocks/forms/forms-background.service.js +1 -1
  187. package/esm2015/lib/services/blocks/forms/forms-imageleft.service.js +1 -1
  188. package/esm2015/lib/services/blocks/forms/forms-imageright.service.js +1 -1
  189. package/esm2015/lib/services/blocks/forms/forms-simple.service.js +1 -1
  190. package/esm2015/lib/services/blocks/images/four-images-title.service.js +1 -1
  191. package/esm2015/lib/services/blocks/images/images-banner.service.js +1 -1
  192. package/esm2015/lib/services/blocks/images/images-big-and-double.service.js +1 -1
  193. package/esm2015/lib/services/blocks/images/images-bigs-and-double-middle.service.js +1 -1
  194. package/esm2015/lib/services/blocks/images/images-double.service.js +1 -1
  195. package/esm2015/lib/services/blocks/images/images-quadruple-left-one-right.service.js +1 -1
  196. package/esm2015/lib/services/blocks/images/images-quadruple.service.js +1 -1
  197. package/esm2015/lib/services/blocks/images/images-simple.service.js +1 -1
  198. package/esm2015/lib/services/blocks/images/images-triple.service.js +1 -1
  199. package/esm2015/lib/services/blocks/images/two-images-title-text.service.js +1 -1
  200. package/esm2015/lib/services/blocks/images-texts/images-texts-big-left-text-right.service.js +1 -1
  201. package/esm2015/lib/services/blocks/images-texts/images-texts-big-right-text-left.service.js +1 -1
  202. package/esm2015/lib/services/blocks/images-texts/images-texts-left-text-right.service.js +1 -1
  203. package/esm2015/lib/services/blocks/images-texts/images-texts-one-text-one.service.js +1 -1
  204. package/esm2015/lib/services/blocks/images-texts/images-texts-right-text-left.service.js +1 -1
  205. package/esm2015/lib/services/blocks/images-texts/images-texts-small-left-text-right.service.js +1 -1
  206. package/esm2015/lib/services/blocks/images-texts/images-texts-small-right-text-left.service.js +1 -1
  207. package/esm2015/lib/services/blocks/images-texts/images-texts-text-one-text.service.js +1 -1
  208. package/esm2015/lib/services/blocks/launch-videos/launch-videos-button.service.js +1 -1
  209. package/esm2015/lib/services/blocks/launch-videos/launch-videos-buttontxt.service.js +1 -1
  210. package/esm2015/lib/services/blocks/map/map-background-form-left.service.js +1 -1
  211. package/esm2015/lib/services/blocks/map/map-background-form-right.service.js +1 -1
  212. package/esm2015/lib/services/blocks/map/map-fullpage.service.js +1 -1
  213. package/esm2015/lib/services/blocks/map/map-left-text.service.js +1 -1
  214. package/esm2015/lib/services/blocks/map/map-right-text.service.js +1 -1
  215. package/esm2015/lib/services/blocks/map/map-text-form.service.js +1 -1
  216. package/esm2015/lib/services/blocks/newsletter/newsletter-aligned-center-background.service.js +1 -1
  217. package/esm2015/lib/services/blocks/newsletter/newsletter-aligned-center-image.service.js +1 -1
  218. package/esm2015/lib/services/blocks/newsletter/newsletter-center-image.service.js +1 -1
  219. package/esm2015/lib/services/blocks/onboarding/forms-onboarding.service.js +1 -1
  220. package/esm2015/lib/services/blocks/product/product-zoom-complete-background.service.js +1 -1
  221. package/esm2015/lib/services/blocks/product/product-zoom-complete-slider.service.js +1 -1
  222. package/esm2015/lib/services/blocks/product/product-zoom-complete.service.js +1 -1
  223. package/esm2015/lib/services/blocks/product/product-zoom-more.service.js +1 -1
  224. package/esm2015/lib/services/blocks/product/product-zoom-selected.service.js +1 -1
  225. package/esm2015/lib/services/blocks/product/product-zoom-simple.service.js +1 -1
  226. package/esm2015/lib/services/blocks/product/product-zoom-triple-column.service.js +1 -1
  227. package/esm2015/lib/services/blocks/product/product-zoom.service.js +1 -1
  228. package/esm2015/lib/services/blocks/products-list/products-list-classic.service.js +1 -1
  229. package/esm2015/lib/services/blocks/products-list/products-list-selected.service.js +1 -1
  230. package/esm2015/lib/services/blocks/products-list/products-list-simple.service.js +1 -1
  231. package/esm2015/lib/services/blocks/quotes/quotes-author.service.js +1 -1
  232. package/esm2015/lib/services/blocks/quotes/quotes-simple-background.service.js +1 -1
  233. package/esm2015/lib/services/blocks/quotes/quotes-simple.service.js +1 -1
  234. package/esm2015/lib/services/blocks/rassurances/rassurances-quadruple-aligned.service.js +1 -1
  235. package/esm2015/lib/services/blocks/rassurances/rassurances-quadruple-background.service.js +1 -1
  236. package/esm2015/lib/services/blocks/rassurances/rassurances-triple-background.service.js +1 -1
  237. package/esm2015/lib/services/blocks/reviews/reviews-simple.service.js +1 -1
  238. package/esm2015/lib/services/blocks/reviews/reviews-waterfall.service.js +1 -1
  239. package/esm2015/lib/services/blocks/separator/separator-simple.service.js +1 -1
  240. package/esm2015/lib/services/blocks/sliders/sliders-double-imageright.service.js +1 -1
  241. package/esm2015/lib/services/blocks/sliders/sliders-fullpage.service.js +1 -1
  242. package/esm2015/lib/services/blocks/sliders/sliders-imageright.service.js +1 -1
  243. package/esm2015/lib/services/blocks/sliders/sliders-leftnav.service.js +1 -1
  244. package/esm2015/lib/services/blocks/sliders/sliders-with-banner.service.js +1 -1
  245. package/esm2015/lib/services/blocks/socials/socials-like.service.js +1 -1
  246. package/esm2015/lib/services/blocks/socials/socials-network.service.js +1 -1
  247. package/esm2015/lib/services/blocks/socials/socials-page-complex.service.js +1 -1
  248. package/esm2015/lib/services/blocks/socials/socials-page-simple.service.js +1 -1
  249. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-four-rows-icon-text.service.js +1 -1
  250. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-link.service.js +1 -1
  251. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-simple.service.js +1 -1
  252. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-three-rows-icon-text.service.js +1 -1
  253. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-two-rows-icon-text.service.js +1 -1
  254. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-with-banner.service.js +1 -1
  255. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-with-txt.service.js +1 -1
  256. package/esm2015/lib/services/blocks/texts/texts-double-background.service.js +1 -1
  257. package/esm2015/lib/services/blocks/texts/texts-double.service.js +1 -1
  258. package/esm2015/lib/services/blocks/texts/texts-one-background.service.js +1 -1
  259. package/esm2015/lib/services/blocks/texts/texts-one.service.js +1 -1
  260. package/esm2015/lib/services/blocks/texts/texts-quadruple-background.service.js +1 -1
  261. package/esm2015/lib/services/blocks/texts/texts-quadruple-numbers.service.js +1 -1
  262. package/esm2015/lib/services/blocks/texts/texts-quadruple.service.js +1 -1
  263. package/esm2015/lib/services/blocks/texts/texts-triple-background.service.js +1 -1
  264. package/esm2015/lib/services/blocks/texts/texts-triple.service.js +1 -1
  265. package/esm2015/lib/services/blocks/timer/timer-airport.service.js +1 -1
  266. package/esm2015/lib/services/blocks/timer/timer-background.service.js +1 -1
  267. package/esm2015/lib/services/blocks/timer/timer-clock.service.js +1 -1
  268. package/esm2015/lib/services/blocks/timer/timer-multiple-img.service.js +1 -1
  269. package/esm2015/lib/services/blocks/timer/timer-simple.service.js +1 -1
  270. package/esm2015/lib/services/blocks/videos/videos-simple.service.js +1 -1
  271. package/esm2015/lib/services/blocks/videos/videos-txt-content.service.js +1 -1
  272. package/esm2015/lib/services/blocks/videos/videos-txt-left.service.js +1 -1
  273. package/esm2015/lib/services/blocks/videos/videos-txt.service.js +1 -1
  274. package/esm2015/lib/services/blocks/witness/about-block.service.js +1 -1
  275. package/esm2015/lib/services/blocks/witness/witness-background-double.service.js +1 -1
  276. package/esm2015/lib/services/blocks/witness/witness-background-one.service.js +1 -1
  277. package/esm2015/lib/services/blocks/witness/witness-quadruple.service.js +1 -1
  278. package/esm2015/lib/services/blocks/witness/witness-triple.service.js +1 -1
  279. package/esm2015/lib/services/blocks/witness/witness-twice.service.js +1 -1
  280. package/esm2015/lib/services/structures/amplify-product/amplify-product.service.js +1 -1
  281. package/esm2015/lib/services/structures/amplify-products-list/amplify-products-list.service.js +1 -1
  282. package/esm2015/lib/services/structures/code/code.service.js +1 -1
  283. package/esm2015/lib/services/structures/faq/faq.service.js +1 -1
  284. package/esm2015/lib/services/structures/forms/forms.service.js +1 -1
  285. package/esm2015/lib/services/structures/images/images.service.js +1 -1
  286. package/esm2015/lib/services/structures/images-texts/images-texts.service.js +1 -1
  287. package/esm2015/lib/services/structures/launch-videos/launch-videos.service.js +1 -1
  288. package/esm2015/lib/services/structures/map/map.service.js +1 -1
  289. package/esm2015/lib/services/structures/newsletter/newsletter.service.js +1 -1
  290. package/esm2015/lib/services/structures/onboarding/onboarding.service.js +1 -1
  291. package/esm2015/lib/services/structures/parent-structures.service.js +1 -1
  292. package/esm2015/lib/services/structures/product/product.service.js +1 -1
  293. package/esm2015/lib/services/structures/products-list/products-list.service.js +1 -1
  294. package/esm2015/lib/services/structures/quotes/quotes.service.js +1 -1
  295. package/esm2015/lib/services/structures/rassurances/rassurances.service.js +1 -1
  296. package/esm2015/lib/services/structures/reviews/reviews.service.js +1 -1
  297. package/esm2015/lib/services/structures/separator/separator.service.js +1 -1
  298. package/esm2015/lib/services/structures/sliders/sliders.service.js +1 -1
  299. package/esm2015/lib/services/structures/socials/socials.service.js +1 -1
  300. package/esm2015/lib/services/structures/text-backgrounds/text-backgrounds.service.js +1 -1
  301. package/esm2015/lib/services/structures/texts/texts.service.js +1 -1
  302. package/esm2015/lib/services/structures/timer/timer.service.js +1 -1
  303. package/esm2015/lib/services/structures/videos/videos.service.js +1 -1
  304. package/esm2015/lib/services/structures/witness/witness.service.js +1 -1
  305. package/esm2015/lib/services/utils/api.service.js +1 -1
  306. package/esm2015/lib/services/utils/config.service.js +1 -1
  307. package/esm2015/lib/services/utils/content.service.js +1 -1
  308. package/esm2015/lib/services/utils/currency.service.js +1 -1
  309. package/esm2015/lib/services/utils/expected-images.service.js +1 -1
  310. package/esm2015/lib/services/utils/external-config.service.js +1 -1
  311. package/esm2015/lib/services/utils/font-awesome.service.js +1 -1
  312. package/esm2015/lib/services/utils/injector.service.js +1 -1
  313. package/esm2015/lib/services/utils/media-connector.service.js +1 -1
  314. package/esm2015/lib/services/utils/quill.service.js +1 -1
  315. package/esm2015/lib/services/utils/structure-config.service.js +1 -1
  316. package/esm2015/lib/services/utils/translate-block.service.js +1 -1
  317. package/esm2015/lib/services/utils/vimeo.service.js +1 -1
  318. package/esm2015/lib/services/utils/youtube.service.js +1 -1
  319. package/esm2015/lib/services/wizi-block.service.js +1 -1
  320. package/esm2015/lib/shared/animations/list/animate-list-from-left.animation.js +1 -1
  321. package/esm2015/lib/shared/animations/list/animate-list-from-right.animation.js +1 -1
  322. package/esm2015/lib/shared/components/editorjs/editorjs.component.js +2 -6
  323. package/esm2015/lib/shared/components/editorjs/tools/inline/bold-tool.component.js +1 -1
  324. package/esm2015/lib/shared/components/editorjs/tools/inline/capitalize-tool.component.js +1 -1
  325. package/esm2015/lib/shared/components/editorjs/tools/inline/italic-tool.component.js +1 -1
  326. package/esm2015/lib/shared/components/editorjs/tools/inline/link-tool.component.js +6 -7
  327. package/esm2015/lib/shared/components/editorjs/tools/inline/strike-tool.component.js +1 -1
  328. package/esm2015/lib/shared/components/editorjs/tools/inline/subscript-tool.component.js +1 -1
  329. package/esm2015/lib/shared/components/editorjs/tools/inline/superscript-tool.component.js +1 -1
  330. package/esm2015/lib/shared/components/editorjs/tools/inline/text-background-color-tool.component.js +3 -4
  331. package/esm2015/lib/shared/components/editorjs/tools/inline/text-color-tool.component.js +2 -3
  332. package/esm2015/lib/shared/components/editorjs/tools/inline/text-size-tool.component.js +3 -4
  333. package/esm2015/lib/shared/components/editorjs/tools/inline/tool-type/color-tool.component.js +1 -1
  334. package/esm2015/lib/shared/components/editorjs/tools/inline/tool-type/inline-style-tool.component.js +1 -1
  335. package/esm2015/lib/shared/components/editorjs/tools/inline/tool-type/text-tool.component.js +1 -1
  336. package/esm2015/lib/shared/components/editorjs/tools/inline/underline-tool.component.js +1 -1
  337. package/esm2015/lib/shared/components/editorjs/tools/paragraph/code-edit-tool.component.js +1 -1
  338. package/esm2015/lib/shared/components/editorjs/tools/paragraph/indent-tool.component.js +1 -1
  339. package/esm2015/lib/shared/components/editorjs/tools/paragraph/ordered-list-tool.component.js +1 -1
  340. package/esm2015/lib/shared/components/editorjs/tools/paragraph/outdent-tool.component.js +1 -1
  341. package/esm2015/lib/shared/components/editorjs/tools/paragraph/quote-tool.component.js +1 -1
  342. package/esm2015/lib/shared/components/editorjs/tools/paragraph/redo-tool.component.js +1 -1
  343. package/esm2015/lib/shared/components/editorjs/tools/paragraph/text-align-tool.component.js +1 -1
  344. package/esm2015/lib/shared/components/editorjs/tools/paragraph/text-type-tool.component.js +2 -3
  345. package/esm2015/lib/shared/components/editorjs/tools/paragraph/tool-type/paragraph-style-tool.component.js +1 -1
  346. package/esm2015/lib/shared/components/editorjs/tools/paragraph/tool-type/text-edition.component.js +3 -4
  347. package/esm2015/lib/shared/components/editorjs/tools/paragraph/tool-type/text-tool.component.js +1 -1
  348. package/esm2015/lib/shared/components/editorjs/tools/paragraph/undo-tool.component.js +1 -1
  349. package/esm2015/lib/shared/components/editorjs/tools/paragraph/unordered-list-tool.component.js +1 -1
  350. package/esm2015/lib/shared/components/editorjs/tools/utils/colors.component.js +1 -1
  351. package/esm2015/lib/shared/components/editorjs/tools/utils/editorjs-conversion.service.js +1 -1
  352. package/esm2015/lib/shared/components/editorjs/tools/utils/editorjs-tool.component.js +1 -1
  353. package/esm2015/lib/shared/components/editorjs/tools/utils/i18n/en-i18n.component.js +1 -1
  354. package/esm2015/lib/shared/components/editorjs/tools/utils/i18n/fr-i18n.component.js +1 -1
  355. package/esm2015/lib/shared/components/editorjs/tools/utils/texts.component.js +1 -1
  356. package/esm2015/lib/shared/components/faq/faq.component.js +1 -1
  357. package/esm2015/lib/shared/components/loader/loader.component.js +1 -1
  358. package/esm2015/lib/shared/components/quill/quill.component.js +1 -1
  359. package/esm2015/lib/shared/components/shared-components.module.js +1 -1
  360. package/esm2015/lib/shared/components/small-loader/small-loader.component.js +1 -1
  361. package/esm2015/lib/shared/components/star/star.component.js +1 -1
  362. package/esm2015/lib/shared/components/structure-amplify-search-category/structure-amplify-search-category.component.js +1 -1
  363. package/esm2015/lib/shared/components/structure-amplify-search-product/structure-amplify-search-product.component.js +1 -1
  364. package/esm2015/lib/shared/components/structure-config/structure-config.component.js +1 -1
  365. package/esm2015/lib/shared/components/structure-config-checkbox/structure-config-checkbox.component.js +1 -1
  366. package/esm2015/lib/shared/components/structure-config-extend-input/structure-config-extended-input.component.js +1 -1
  367. package/esm2015/lib/shared/components/structure-config-font/structure-config-font.component.js +1 -1
  368. package/esm2015/lib/shared/components/structure-config-input/structure-config-input.component.js +1 -1
  369. package/esm2015/lib/shared/components/structure-config-payment/structure-config-payment.component.js +1 -1
  370. package/esm2015/lib/shared/components/structure-search-product/structure-search-product.component.js +1 -1
  371. package/esm2015/lib/shared/components/structure-select/structure-select.component.js +1 -1
  372. package/esm2015/lib/shared/components/structure-tools/structure-tools.component.js +1 -1
  373. package/esm2015/lib/shared/directives/auto-focus/auto-focus.directive.js +1 -1
  374. package/esm2015/lib/shared/directives/auto-hide/auto-hide.directive.js +1 -1
  375. package/esm2015/lib/shared/directives/get-size-image/get-size-image.directive.js +1 -1
  376. package/esm2015/lib/shared/directives/holdable/holdable.directive.js +1 -1
  377. package/esm2015/lib/shared/directives/pictures-template/pictures-template.directive.js +1 -1
  378. package/esm2015/lib/shared/directives/shared-directives.module.js +1 -1
  379. package/esm2015/lib/shared/directives/show-delete-button/show-delete-button.directive.js +1 -1
  380. package/esm2015/lib/shared/pipes/add-zero-for-timer/add-zero-for-timer.pipe.js +1 -1
  381. package/esm2015/lib/shared/pipes/answer-type/answer-type.pipe.js +1 -1
  382. package/esm2015/lib/shared/pipes/array-number/array-number.pipe.js +1 -1
  383. package/esm2015/lib/shared/pipes/check-payment-value/check-payment-value.pipe.js +1 -1
  384. package/esm2015/lib/shared/pipes/even-odd/even-odd.pipe.js +1 -1
  385. package/esm2015/lib/shared/pipes/img-path/img-path.pipe.js +1 -1
  386. package/esm2015/lib/shared/pipes/safe-style/safe-style.pipe.js +1 -1
  387. package/esm2015/lib/shared/pipes/safe-url/safe-url.pipe.js +1 -1
  388. package/esm2015/lib/shared/pipes/shared-pipes.module.js +1 -1
  389. package/esm2015/lib/shared/pipes/strip-tags/strip-tags.pipe.js +1 -1
  390. package/esm2015/lib/shared/pipes/tiny-color/tiny-color.pipe.js +1 -1
  391. package/esm2015/lib/shared/shared.module.js +1 -1
  392. package/esm2015/lib/structures/amplify-product/zoom/amplify-product-zoom.component.js +1 -1
  393. package/esm2015/lib/structures/amplify-product/zoom-more/amplify-product-zoom-more.component.js +1 -1
  394. package/esm2015/lib/structures/amplify-product/zoom-selected/amplify-product-zoom-selected.component.js +1 -1
  395. package/esm2015/lib/structures/amplify-product/zoom-triple-column/amplify-product-zoom-triple-column.component.js +1 -1
  396. package/esm2015/lib/structures/amplify-products-list/classic/amplify-products-list-classic.component.js +1 -1
  397. package/esm2015/lib/structures/amplify-products-list/selected/amplify-products-list-selected.component.js +1 -1
  398. package/esm2015/lib/structures/amplify-products-list/simple/amplify-products-list-simple.component.js +1 -1
  399. package/esm2015/lib/structures/code/code-html/code-html.component.js +1 -1
  400. package/esm2015/lib/structures/code/code-javascript/code-javascript.component.js +1 -1
  401. package/esm2015/lib/structures/code/code-stylesheet/code-stylesheet.component.js +1 -1
  402. package/esm2015/lib/structures/faq/accordion/faq-accordion.component.js +1 -1
  403. package/esm2015/lib/structures/faq/frame/faq-frame.component.js +1 -1
  404. package/esm2015/lib/structures/faq/list-icon/faq-list-icon.component.js +1 -1
  405. package/esm2015/lib/structures/faq/simple/faq-simple.component.js +1 -1
  406. package/esm2015/lib/structures/faq/simple-background/faq-simple-background.component.js +1 -1
  407. package/esm2015/lib/structures/forms/background/forms-background.component.js +1 -1
  408. package/esm2015/lib/structures/forms/imageleft/forms-imageleft.component.js +1 -1
  409. package/esm2015/lib/structures/forms/imageright/forms-imageright.component.js +1 -1
  410. package/esm2015/lib/structures/forms/simple/forms-simple.component.js +1 -1
  411. package/esm2015/lib/structures/images/banner/images-banner.component.js +1 -1
  412. package/esm2015/lib/structures/images/big-and-double/images-big-and-double.component.js +1 -1
  413. package/esm2015/lib/structures/images/bigs-and-double-middle/images-bigs-and-double-middle.component.js +1 -1
  414. package/esm2015/lib/structures/images/double/images-double.component.js +1 -1
  415. package/esm2015/lib/structures/images/four-images-title/four-images-title.component.js +1 -1
  416. package/esm2015/lib/structures/images/quadruple/images-quadruple.component.js +1 -1
  417. package/esm2015/lib/structures/images/quadruple-left-one-right/images-quadruple-left-one-right.component.js +1 -1
  418. package/esm2015/lib/structures/images/simple/images-simple.component.js +1 -1
  419. package/esm2015/lib/structures/images/triple/images-triple.component.js +1 -1
  420. package/esm2015/lib/structures/images/two-images-title-text/two-images-title-text.component.js +1 -1
  421. package/esm2015/lib/structures/images-texts/big-left-text-right/images-texts-big-left-text-right.component.js +1 -1
  422. package/esm2015/lib/structures/images-texts/big-right-text-left/images-texts-big-right-text-left.component.js +1 -1
  423. package/esm2015/lib/structures/images-texts/left-text-right/images-texts-left-text-right.component.js +1 -1
  424. package/esm2015/lib/structures/images-texts/one-text-one/images-texts-one-text-one.component.js +1 -1
  425. package/esm2015/lib/structures/images-texts/right-text-left/images-texts-right-text-left.component.js +1 -1
  426. package/esm2015/lib/structures/images-texts/small-left-text-right/images-texts-small-left-text-right.component.js +1 -1
  427. package/esm2015/lib/structures/images-texts/small-right-text-left/images-texts-small-right-text-left.component.js +1 -1
  428. package/esm2015/lib/structures/images-texts/text-one-text/images-texts-text-one-text.component.js +1 -1
  429. package/esm2015/lib/structures/launch-videos/button/launch-videos-button.component.js +1 -1
  430. package/esm2015/lib/structures/launch-videos/buttontxt/launch-videos-buttontxt.component.js +1 -1
  431. package/esm2015/lib/structures/loader-component.module.js +1 -1
  432. package/esm2015/lib/structures/map/background-form-left/map-background-form-left.component.js +1 -1
  433. package/esm2015/lib/structures/map/background-form-right/map-background-form-right.component.js +1 -1
  434. package/esm2015/lib/structures/map/fullpage/map-fullpage.component.js +1 -1
  435. package/esm2015/lib/structures/map/left-text/map-left-text.component.js +1 -1
  436. package/esm2015/lib/structures/map/right-text/map-right-text.component.js +1 -1
  437. package/esm2015/lib/structures/map/text-form/map-text-form.component.js +1 -1
  438. package/esm2015/lib/structures/newsletter/aligned-center-background/newsletter-aligned-center-background.component.js +1 -1
  439. package/esm2015/lib/structures/newsletter/aligned-center-image/newsletter-aligned-center-image.component.js +1 -1
  440. package/esm2015/lib/structures/newsletter/center-image/newsletter-center-image.component.js +1 -1
  441. package/esm2015/lib/structures/onboarding/onboarding/forms-onboarding.component.js +1 -1
  442. package/esm2015/lib/structures/product/zoom/product-zoom.component.js +1 -1
  443. package/esm2015/lib/structures/product/zoom-complete/product-zoom-complete.component.js +1 -1
  444. package/esm2015/lib/structures/product/zoom-complete-background/product-zoom-complete-background.component.js +1 -1
  445. package/esm2015/lib/structures/product/zoom-complete-slider/product-zoom-complete-slider.component.js +1 -1
  446. package/esm2015/lib/structures/product/zoom-more/product-zoom-more.component.js +1 -1
  447. package/esm2015/lib/structures/product/zoom-selected/product-zoom-selected.component.js +1 -1
  448. package/esm2015/lib/structures/product/zoom-simple/product-zoom-simple.component.js +1 -1
  449. package/esm2015/lib/structures/product/zoom-triple-column/product-zoom-triple-column.component.js +1 -1
  450. package/esm2015/lib/structures/products-list/classic/products-list-classic.component.js +1 -1
  451. package/esm2015/lib/structures/products-list/selected/products-list-selected.component.js +1 -1
  452. package/esm2015/lib/structures/products-list/simple/products-list-simple.component.js +1 -1
  453. package/esm2015/lib/structures/quotes/author/quotes-author.component.js +1 -1
  454. package/esm2015/lib/structures/quotes/simple/quotes-simple.component.js +1 -1
  455. package/esm2015/lib/structures/quotes/simple-background/quotes-simple-background.component.js +1 -1
  456. package/esm2015/lib/structures/rassurances/quadruple-aligned/rassurances-quadruple-aligned.component.js +1 -1
  457. package/esm2015/lib/structures/rassurances/quadruple-background/rassurances-quadruple-background.component.js +1 -1
  458. package/esm2015/lib/structures/rassurances/triple-background/rassurances-triple-background.component.js +1 -1
  459. package/esm2015/lib/structures/reviews/simple/reviews-simple.component.js +1 -1
  460. package/esm2015/lib/structures/reviews/waterfall/reviews-waterfall.component.js +1 -1
  461. package/esm2015/lib/structures/separator/separator-simple/separator-simple.component.js +1 -1
  462. package/esm2015/lib/structures/sliders/double-imageright/slider-double-imageright.component.js +1 -1
  463. package/esm2015/lib/structures/sliders/fullpage/slider-fullpage.component.js +1 -1
  464. package/esm2015/lib/structures/sliders/imageright/slider-imageright.component.js +1 -1
  465. package/esm2015/lib/structures/sliders/leftnav/slider-leftnav.component.js +1 -1
  466. package/esm2015/lib/structures/sliders/with-banner/slider-with-banner.component.js +1 -1
  467. package/esm2015/lib/structures/socials/like/socials-like.component.js +1 -1
  468. package/esm2015/lib/structures/socials/network/socials-network.component.js +1 -1
  469. package/esm2015/lib/structures/socials/page-complex/socials-page-complex.component.js +1 -1
  470. package/esm2015/lib/structures/socials/page-simple/socials-page-simple.component.js +1 -1
  471. package/esm2015/lib/structures/structures.component.js +1 -1
  472. package/esm2015/lib/structures/structures.module.js +1 -1
  473. package/esm2015/lib/structures/text-backgrounds/four-rows-icon-text/text-backgrounds-four-rows-icon-text.component.js +1 -1
  474. package/esm2015/lib/structures/text-backgrounds/link/text-backgrounds-link.component.js +1 -1
  475. package/esm2015/lib/structures/text-backgrounds/simple/text-backgrounds-simple.component.js +1 -1
  476. package/esm2015/lib/structures/text-backgrounds/three-rows-icon-text/text-backgrounds-three-rows-icon-text.component.js +1 -1
  477. package/esm2015/lib/structures/text-backgrounds/two-rows-icon-text/text-backgrounds-two-rows-icon-text.component.js +1 -1
  478. package/esm2015/lib/structures/text-backgrounds/with-banner/text-backgrounds-with-banner.component.js +1 -1
  479. package/esm2015/lib/structures/text-backgrounds/with-txt/text-backgrounds-with-txt.component.js +1 -1
  480. package/esm2015/lib/structures/texts/double/texts-double.component.js +1 -1
  481. package/esm2015/lib/structures/texts/double-background/texts-double-background.component.js +1 -1
  482. package/esm2015/lib/structures/texts/one/texts-one.component.js +1 -1
  483. package/esm2015/lib/structures/texts/one-background/texts-one-background.component.js +1 -1
  484. package/esm2015/lib/structures/texts/quadruple/texts-quadruple.component.js +1 -1
  485. package/esm2015/lib/structures/texts/quadruple-background/texts-quadruple-background.component.js +1 -1
  486. package/esm2015/lib/structures/texts/quadruple-numbers/texts-quadruple-numbers.component.js +1 -1
  487. package/esm2015/lib/structures/texts/triple/texts-triple.component.js +1 -1
  488. package/esm2015/lib/structures/texts/triple-background/texts-triple-background.component.js +1 -1
  489. package/esm2015/lib/structures/timer/airport/timer-airport.component.js +1 -1
  490. package/esm2015/lib/structures/timer/background/timer-background.component.js +1 -1
  491. package/esm2015/lib/structures/timer/clock/timer-clock.component.js +1 -1
  492. package/esm2015/lib/structures/timer/multiple-img/timer-multiple-img.component.js +1 -1
  493. package/esm2015/lib/structures/timer/simple/timer-simple.component.js +1 -1
  494. package/esm2015/lib/structures/videos/simple/videos-simple.component.js +1 -1
  495. package/esm2015/lib/structures/videos/txt/videos-txt.component.js +1 -1
  496. package/esm2015/lib/structures/videos/txt-content/videos-txt-content.component.js +1 -1
  497. package/esm2015/lib/structures/videos/txt-left/videos-txt-left.component.js +1 -1
  498. package/esm2015/lib/structures/witness/about-block/about-block.component.js +1 -1
  499. package/esm2015/lib/structures/witness/background-double/witness-background-double.component.js +1 -1
  500. package/esm2015/lib/structures/witness/background-one/witness-background-one.component.js +1 -1
  501. package/esm2015/lib/structures/witness/quadruple/witness-quadruple.component.js +1 -1
  502. package/esm2015/lib/structures/witness/triple/witness-triple.component.js +1 -1
  503. package/esm2015/lib/structures/witness/twice/witness-twice.component.js +1 -1
  504. package/esm2015/lib/wizi-block.component.js +1 -1
  505. package/esm2015/lib/wizi-block.module.js +1 -1
  506. package/esm2015/public_api.js +1 -1
  507. package/esm2015/wizishop-wizi-block.js +227 -228
  508. package/fesm2015/wizishop-wizi-block.js +183 -205
  509. package/fesm2015/wizishop-wizi-block.js.map +1 -1
  510. package/lib/shared/components/editorjs/editorjs.component.d.ts +1 -3
  511. package/package.json +1 -1
  512. package/wizi-block.scss +177 -172
  513. package/wizishop-wizi-block.d.ts +226 -227
  514. package/wizishop-wizi-block.metadata.json +1 -1
  515. package/esm2015/lib/shared/components/editorjs/tools/utils/editorjs-tool-translation.service.js +0 -25
  516. package/lib/shared/components/editorjs/tools/utils/editorjs-tool-translation.service.d.ts +0 -8
@@ -358,4 +358,4 @@ export class ColorTool extends InlineStyleTool {
358
358
  return hexadecimal.length == 1 ? '0' + hexadecimal : hexadecimal;
359
359
  }
360
360
  }
361
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcGF1bGluZS9Eb2N1bWVudHMvd29ya3NwYWNlL3dpemktYmxvY2svcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvIiwic291cmNlcyI6WyJsaWIvc2hhcmVkL2NvbXBvbmVudHMvZWRpdG9yanMvdG9vbHMvaW5saW5lL3Rvb2wtdHlwZS9jb2xvci10b29sLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBRTlCLElBQUssU0FJSjtBQUpELFdBQUssU0FBUztJQUNWLHVDQUFHLENBQUE7SUFDSCx1Q0FBRyxDQUFBO0lBQ0gsdUNBQUcsQ0FBQTtBQUNQLENBQUMsRUFKSSxTQUFTLEtBQVQsU0FBUyxRQUliO0FBRUQsTUFBTSxPQUFnQixTQUFVLFNBQVEsZUFBZTtJQUF2RDs7UUFHSSx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFJdEMsV0FBTSxHQUF5QixtQkFBbUIsQ0FBQztRQUVuRCxtQkFBYyxHQUFvQixJQUFJLENBQUM7UUFNdkMsc0JBQWlCLEdBQVc7WUFDeEIsT0FBTyxFQUFFLDBCQUEwQjtZQUNuQyxTQUFTLEVBQUUscUNBQXFDO1lBQ2hELG9CQUFvQixFQUFFLGtEQUFrRDtZQUN4RSxHQUFHLEVBQUUsK0JBQStCO1lBQ3BDLElBQUksRUFBRSxxQ0FBcUM7U0FDOUMsQ0FBQztRQUVGLHNCQUFpQixHQUEyQixJQUFJLENBQUM7SUE0V3JELENBQUM7SUF4V0csZUFBZTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FD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Q0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzFDO2FBQ0o7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUMzQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDdkM7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVPLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUk7UUFDN0IsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFLO1FBQ3BCLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckMsT0FBTyxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ3JFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERFRkFVTFRfQ09MT1JfQVJSQVksIEdMT0JBTF9LRVlfQ09ERVMgfSBmcm9tICcuLi8uLi91dGlscy9jb2xvcnMuY29tcG9uZW50JztcbmltcG9ydCB7IElubGluZVN0eWxlVG9vbCB9IGZyb20gJy4vaW5saW5lLXN0eWxlLXRvb2wuY29tcG9uZW50JztcbmltcG9ydCBpcm8gZnJvbSAnQGphYW1lcy9pcm8nO1xuXG5lbnVtIENvbG9yVHlwZSB7XG4gICAgSEVYLFxuICAgIFJHQixcbiAgICBIU0wsXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb2xvclRvb2wgZXh0ZW5kcyBJbmxpbmVTdHlsZVRvb2wge1xuICAgIG5vZGVzOiB7IGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQgfTtcblxuICAgIGlzQ29sb3JTZWxlY3Rpb25PcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb2xvclNlbGVjdGlvbjogYW55O1xuXG4gICAgY29sb3JzOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IERFRkFVTFRfQ09MT1JfQVJSQVk7XG5cbiAgICBjb2xvckluZGljYXRvcjogSFRNTFNwYW5FbGVtZW50ID0gbnVsbDtcblxuICAgIENTUzogYW55O1xuXG4gICAgYXBpOiBhbnk7XG5cbiAgICBjb2xvclNlbGVjdGlvbkNzczogT2JqZWN0ID0ge1xuICAgICAgICB3cmFwcGVyOiAnY2UtaW5saW5lLWFjdGlvbnMtLWNvbG9yJyxcbiAgICAgICAgY29udGFpbmVyOiAnY2UtaW5saW5lLWFjdGlvbnMtLWNvbG9yX19jb250YWluZXInLFxuICAgICAgICBjb2xvclBpY2tlckNvbnRhaW5lcjogJ2NlLWlubGluZS1hY3Rpb25zLS1jb2xvcl9fY29udGFpbmVyX19jb2xvclBpY2tlcicsXG4gICAgICAgIHJvdzogJ2NlLWlubGluZS1hY3Rpb25zLS1jb2xvcl9fcm93JyxcbiAgICAgICAgaXRlbTogJ2NlLWlubGluZS1hY3Rpb25zLS1jb2xvcl9fcm93X19pdGVtJyxcbiAgICB9O1xuXG4gICAgY3VzdG9tQ29sb3JQaWNrZXI6IGlyby5Db2xvclBpY2tlciB8IG51bGwgPSBudWxsO1xuXG4gICAgYWJzdHJhY3QgYXBwbHlDb2xvcihjb2xvcjogc3RyaW5nLCBpbnB1dFRvRm9jdXM6IEhUTUxJbnB1dEVsZW1lbnQpOiBQcm9taXNlPHZvaWQ+O1xuXG4gICAgb3BlbkNvbG9yUGlja2VyKCkge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50RWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvciA9IHRoaXMuZmluZFBhcmVudEVkaXRvcigpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb2xvclNlbGVjdGlvbiA9IHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MuY29sb3JTZWxlY3Rpb25Nb2RpZmllcilbMF07XG4gICAgICAgIGxldCBjdXJyZW50Q29sb3IgPSB0aGlzLmdldEN1cnJlbnRDb2xvckFwcGxpZWQodGhpcy5nZXRTZWxlY3Rpb24oKS5hbmNob3JOb2RlLnBhcmVudEVsZW1lbnQpO1xuICAgICAgICB0aGlzLnNhdmVVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChjb2xvclNlbGVjdGlvbikge1xuICAgICAgICAgICAgaWYgKGNvbG9yU2VsZWN0aW9uLmNsYXNzTGlzdC5jb250YWlucygnaGlkZGVuJykpIHtcbiAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PmNvbG9yU2VsZWN0aW9uKS5zdHlsZS5sZWZ0ID1cbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24ub2Zmc2V0TGVmdCArXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5ub2Rlcy5idXR0b24ub2Zmc2V0V2lkdGggLyAyIC0gKDxIVE1MRWxlbWVudD5jb2xvclNlbGVjdGlvbikub2Zmc2V0V2lkdGggLyAyKVxuICAgICAgICAgICAgICAgICAgICApLnRvU3RyaW5nKCkgKyAncHgnO1xuICAgICAgICAgICAgICAgICg8SFRNTEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb24pLnN0eWxlLnRvcCA9XG4gICAgICAgICAgICAgICAgICAgICctJyArXG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICg8SFRNTEVsZW1lbnQ+dGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvcignLmNlLWlubGluZS10b29sYmFyX19idXR0b25zJykpLm9mZnNldEhlaWdodCAtXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5ub2Rlcy5idXR0b24ub2Zmc2V0VG9wICsgdGhpcy5ub2Rlcy5idXR0b24ub2Zmc2V0SGVpZ2h0KVxuICAgICAgICAgICAgICAgICAgICApLnRvU3RyaW5nKCkgK1xuICAgICAgICAgICAgICAgICAgICAncHgnO1xuICAgICAgICAgICAgICAgIGxldCB2aWV3cG9ydE9mZnNldCA9IGNvbG9yU2VsZWN0aW9uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgIGxldCB0b3RhbFdpZHRoID1cbiAgICAgICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD5jb2xvclNlbGVjdGlvbikub2Zmc2V0V2lkdGggK1xuICAgICAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PmNvbG9yU2VsZWN0aW9uLnF1ZXJ5U2VsZWN0b3IoJy4nICsgdGhpcy5jb2xvclNlbGVjdGlvbkNzc1snY29sb3JQaWNrZXJDb250YWluZXInXSkpLm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgICAgIGlmICh2aWV3cG9ydE9mZnNldC5sZWZ0ICsgdG90YWxXaWR0aCA+IGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxlZnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoY29sb3JTZWxlY3Rpb24sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2xlZnQnKSkgLVxuICAgICAgICAgICAgICAgICAgICAgICAgKHZpZXdwb3J0T2Zmc2V0LmxlZnQgKyB0b3RhbFdpZHRoIC0gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgICg8SFRNTEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb24pLnN0eWxlLmxlZnQgPSBsZWZ0LnRvU3RyaW5nKCkgKyAncHgnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrRGVmYXVsdENvbG9ycygpO1xuICAgICAgICAgICAgICAgIGNvbG9yU2VsZWN0aW9uLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgIGxldCBjb2xvclBpY2tlcldyYXBwZXIgPSA8SFRNTEVsZW1lbnQ+dGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvcignIycgKyB0aGlzLkNTUy5jb2xvclBpY2tlcklkKTtcbiAgICAgICAgICAgICAgICBpZiAoY29sb3JQaWNrZXJXcmFwcGVyLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyID0gaXJvLkNvbG9yUGlja2VyKGNvbG9yUGlja2VyV3JhcHBlciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE3MCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTcwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0RGlyZWN0aW9uOiAnaG9yaXpvbnRhbCcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLm9uKFsnY29sb3I6aW5pdCddLCAoY29sb3I6IGlyby5Db2xvcikgPT4gdGhpcy5jaGFuZ2VDb2xvcihjb2xvciwgdHJ1ZSwgY3VycmVudENvbG9yKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIub24oWydjb2xvcjpjaGFuZ2UnXSwgKGNvbG9yOiBpcm8uQ29sb3IpID0+IHRoaXMuY2hhbmdlQ29sb3IoY29sb3IsIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoJGV2ZW50KSA9PiB0aGlzLmlzQ29sb3JTZWxlY3Rpb25Gb2N1c2VkT3V0KCRldmVudCkpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29sb3JTZWxlY3Rpb25PcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LCA0MDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ29sb3JTZWxlY3Rpb25PcGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29sb3JTZWxlY3Rpb24uY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRDdXJyZW50Q29sb3JBcHBsaWVkKGVsZW1lbnQ6IEVsZW1lbnQpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5jbGFzc05hbWUgJiYgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2NlLXBhcmFncmFwaCcpICYmIGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSh0aGlzLnN0eWxlLnByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBpc0NvbG9yU2VsZWN0aW9uRm9jdXNlZE91dCgkZXZlbnQpIHtcbiAgICAgICAgbGV0IGNvbG9yU2VsZWN0aW9uID0gdGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLkNTUy5jb2xvclNlbGVjdGlvbk1vZGlmaWVyKVswXTtcbiAgICAgICAgaWYgKHRoaXMuaXNDb2xvclNlbGVjdGlvbk9wZW4pIHtcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gJGV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgIHdoaWxlIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2NvbnRhaW5lciddKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsICgkZXZlbnQpID0+IHRoaXMuaXNDb2xvclNlbGVjdGlvbkZvY3VzZWRPdXQoJGV2ZW50KSk7XG4gICAgICAgICAgICB0aGlzLmlzQ29sb3JTZWxlY3Rpb25PcGVuID0gZmFsc2U7XG4gICAgICAgICAgICBjb2xvclNlbGVjdGlvbi5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIHRoaXMuYXBpLnRvb2xiYXIuY2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tEZWZhdWx0Q29sb3JzKCkge1xuICAgICAgICBsZXQgY3VycmVudENvbG9yID0gdGhpcy5nZXRDdXJyZW50Q29sb3JBcHBsaWVkKHRoaXMuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5wYXJlbnRFbGVtZW50KTtcbiAgICAgICAgdGhpcy5jb2xvcnMuZm9yRWFjaCgoY29sb3JSb3csIHJvd0luZGV4KSA9PiB7XG4gICAgICAgICAgICBjb2xvclJvdy5mb3JFYWNoKChjb2xvciwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29sb3IgPT09IGN1cnJlbnRDb2xvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MuY29sb3JTZWxlY3Rpb25Nb2RpZmllcilbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ3JvdyddKVxuICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd0luZGV4XS5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2l0ZW0nXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5JbmRleF0uY2xhc3NMaXN0LmFkZCh0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydpdGVtJ10gKyAnLS1hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MuY29sb3JTZWxlY3Rpb25Nb2RpZmllcilbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ3JvdyddKVxuICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd0luZGV4XS5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2l0ZW0nXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5JbmRleF0uY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydpdGVtJ10gKyAnLS1hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3BlbkN1c3RvbUNvbG9yUGlja2VyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBsZXQgY3VzdG9tQ29sb3JQaWNrZXIgPSAoPEhUTUxEaXZFbGVtZW50PmV2ZW50LnRhcmdldCkucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydjb2xvclBpY2tlckNvbnRhaW5lciddKVswXTtcbiAgICAgICAgaWYgKGN1c3RvbUNvbG9yUGlja2VyKSB7XG4gICAgICAgICAgICBpZiAoY3VzdG9tQ29sb3JQaWNrZXIuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2NvbG9yUGlja2VyQ29udGFpbmVyJ10gKyAnLS1hY3RpdmUnKSkge1xuICAgICAgICAgICAgICAgIGN1c3RvbUNvbG9yUGlja2VyLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jb2xvclNlbGVjdGlvbkNzc1snY29sb3JQaWNrZXJDb250YWluZXInXSArICctLWFjdGl2ZScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjdXN0b21Db2xvclBpY2tlci5jbGFzc0xpc3QuYWRkKHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2NvbG9yUGlja2VyQ29udGFpbmVyJ10gKyAnLS1hY3RpdmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKDxIVE1MRWxlbWVudD5ldmVudC50YXJnZXQpLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2RpdicpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGFuZ2VDb2xvcihjb2xvcjogaXJvLkNvbG9yLCBpc0luaXQ6IGJvb2xlYW4sIGluaXRDb2xvcjogc3RyaW5nID0gJycpIHtcbiAgICAgICAgbGV0IGNvbG9yU2VsZWN0aW9uTW9kaWZpZXIgPSB0aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yKCcuJyArIHRoaXMuQ1NTLmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIpO1xuICAgICAgICBsZXQgaGV4SW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3IoJy5oZXggaW5wdXQnKTtcbiAgICAgICAgbGV0IHJnYklucHV0MSA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLnJnYiBpbnB1dCcpWzBdO1xuICAgICAgICBsZXQgcmdiSW5wdXQyID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcucmdiIGlucHV0JylbMV07XG4gICAgICAgIGxldCByZ2JJbnB1dDMgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZ2IgaW5wdXQnKVsyXTtcbiAgICAgICAgLypcbiAgICAgICAgbGV0IGhzbElucHV0MSA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLmhzbCBpbnB1dCcpWzBdO1xuICAgICAgICBsZXQgaHNsSW5wdXQyID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcuaHNsIGlucHV0JylbMV07XG4gICAgICAgIGxldCBoc2xJbnB1dDMgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5oc2wgaW5wdXQnKVsyXTtcbiAgICAgICAgKi9cbiAgICAgICAgaWYgKGlzSW5pdCkge1xuICAgICAgICAgICAgaWYgKGluaXRDb2xvci5pbmRleE9mKCdyZ2JhJykgPiAtMSkge1xuICAgICAgICAgICAgICAgIGluaXRDb2xvciA9IGluaXRDb2xvci5yZXBsYWNlKCdyZ2JhKCcsICcnKS5yZXBsYWNlKCcpJywgJycpLnJlcGxhY2UoJyAnLCAnJyk7XG4gICAgICAgICAgICAgICAgbGV0IHJnYkluaXRDb2xvciA9IGluaXRDb2xvci5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IucmVkID0gcGFyc2VJbnQocmdiSW5pdENvbG9yWzBdKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLmdyZWVuID0gcGFyc2VJbnQocmdiSW5pdENvbG9yWzFdKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLmJsdWUgPSBwYXJzZUludChyZ2JJbml0Q29sb3JbMl0pO1xuICAgICAgICAgICAgICAgIGhleElucHV0LnZhbHVlID0gdGhpcy5yZ2JUb0hleChwYXJzZUludChyZ2JJbml0Q29sb3JbMF0pLCBwYXJzZUludChyZ2JJbml0Q29sb3JbMV0pLCBwYXJzZUludChyZ2JJbml0Q29sb3JbMl0pKTtcbiAgICAgICAgICAgICAgICByZ2JJbnB1dDEudmFsdWUgPSByZ2JJbml0Q29sb3JbMF07XG4gICAgICAgICAgICAgICAgcmdiSW5wdXQyLnZhbHVlID0gcmdiSW5pdENvbG9yWzFdO1xuICAgICAgICAgICAgICAgIHJnYklucHV0My52YWx1ZSA9IHJnYkluaXRDb2xvclsyXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5pdENvbG9yID0gaW5pdENvbG9yLnJlcGxhY2UoJ3JnYignLCAnJykucmVwbGFjZSgnKScsICcnKS5yZXBsYWNlKCcgJywgJycpO1xuICAgICAgICAgICAgICAgIGxldCByZ2JJbml0Q29sb3IgPSBpbml0Q29sb3Iuc3BsaXQoJywnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLnJlZCA9IHBhcnNlSW50KHJnYkluaXRDb2xvclswXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5ncmVlbiA9IHBhcnNlSW50KHJnYkluaXRDb2xvclsxXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5ibHVlID0gcGFyc2VJbnQocmdiSW5pdENvbG9yWzJdKTtcbiAgICAgICAgICAgICAgICBoZXhJbnB1dC52YWx1ZSA9IHRoaXMucmdiVG9IZXgocGFyc2VJbnQocmdiSW5pdENvbG9yWzBdKSwgcGFyc2VJbnQocmdiSW5pdENvbG9yWzFdKSwgcGFyc2VJbnQocmdiSW5pdENvbG9yWzJdKSk7XG4gICAgICAgICAgICAgICAgcmdiSW5wdXQxLnZhbHVlID0gcmdiSW5pdENvbG9yWzBdO1xuICAgICAgICAgICAgICAgIHJnYklucHV0Mi52YWx1ZSA9IHJnYkluaXRDb2xvclsxXTtcbiAgICAgICAgICAgICAgICByZ2JJbnB1dDMudmFsdWUgPSByZ2JJbml0Q29sb3JbMl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBoZXhJbnB1dC52YWx1ZSA9IGNvbG9yLmhleFN0cmluZztcbiAgICAgICAgICAgIHJnYklucHV0MS52YWx1ZSA9IGNvbG9yLnJnYi5yLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICByZ2JJbnB1dDIudmFsdWUgPSBjb2xvci5yZ2IuZy50b1N0cmluZygpO1xuICAgICAgICAgICAgcmdiSW5wdXQzLnZhbHVlID0gY29sb3IucmdiLmIudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tDb2xvcklucHV0KENvbG9yVHlwZS5SR0IpO1xuICAgICAgICB9XG4gICAgICAgIC8qXG4gICAgICAgIGhzbElucHV0MS52YWx1ZSA9IGNvbG9yLmhzbC5oLnRvU3RyaW5nKCk7XG4gICAgICAgIGhzbElucHV0Mi52YWx1ZSA9IGNvbG9yLmhzbC5zICsgJyUnO1xuICAgICAgICBoc2xJbnB1dDMudmFsdWUgPSBjb2xvci5oc2wubCArICclJztcbiAgICAgICAgKi9cbiAgICB9XG5cbiAgICBjaGFuZ2VDb2xvcklucHV0KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBjb2xvclR5cGU6IENvbG9yVHlwZSkge1xuICAgICAgICBpZiAoY29sb3JUeXBlID09PSBDb2xvclR5cGUuSEVYKSB7XG4gICAgICAgICAgICBsZXQgaGV4UmVnZXggPSAvWzAtOUEtRmEtZiNdLztcbiAgICAgICAgICAgIGxldCBoZXhJbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PihcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yKCcuJyArIHRoaXMuQ1NTLmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIpLnF1ZXJ5U2VsZWN0b3IoJy5oZXggaW5wdXQnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChHTE9CQUxfS0VZX0NPREVTLmluZGV4T2YoZXZlbnQuY29kZSkgPiAtMSB8fCBoZXhSZWdleC50ZXN0KGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGV4SW5wdXQudmFsdWUubGVuZ3RoID4gMCAmJiBldmVudC5rZXkgPT09ICcjJykge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaGV4SW5wdXQudmFsdWUubGVuZ3RoID09PSA1ICYmIGhleElucHV0LnZhbHVlWzBdICE9PSAnIycgJiYgaGV4UmVnZXgudGVzdChldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGhleElucHV0LnZhbHVlID0gJyMnICsgaGV4SW5wdXQudmFsdWUgKyBldmVudC5rZXk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY29sb3JUeXBlID09PSBDb2xvclR5cGUuUkdCKSB7XG4gICAgICAgICAgICBsZXQgcmdiUmVnZXggPSAvWzAtOV0vO1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkSW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5ldmVudC50YXJnZXQ7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgR0xPQkFMX0tFWV9DT0RFUy5pbmRleE9mKGV2ZW50LmNvZGUpID09PSAtMSAmJlxuICAgICAgICAgICAgICAgIChzZWxlY3RlZElucHV0LnZhbHVlLmxlbmd0aCA9PT0gMyB8fCBldmVudC5rZXkubGVuZ3RoICE9PSAxIHx8ICFyZ2JSZWdleC50ZXN0KGV2ZW50LmtleSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcnNlSW50KHNlbGVjdGVkSW5wdXQudmFsdWUpID4gMjU1KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbnB1dC52YWx1ZSA9ICcyNTUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IG1heElucHV0TGVuZ3RoID0gMztcbiAgICAgICAgICAgIGxldCBoc2xSZWdleCA9IC9bMC05XS87XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRJbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZElucHV0UG9zaXRpb24gPSBBcnJheS5mcm9tKHNlbGVjdGVkSW5wdXQucGFyZW50RWxlbWVudC5jaGlsZHJlbikuaW5kZXhPZihzZWxlY3RlZElucHV0KTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZElucHV0UG9zaXRpb24gPiAwKSB7XG4gICAgICAgICAgICAgICAgaHNsUmVnZXggPSAvWzAtOSVdLztcbiAgICAgICAgICAgICAgICBtYXhJbnB1dExlbmd0aCA9IDQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgR0xPQkFMX0tFWV9DT0RFUy5pbmRleE9mKGV2ZW50LmNvZGUpID09PSAtMSAmJlxuICAgICAgICAgICAgICAgIChzZWxlY3RlZElucHV0LnZhbHVlLmxlbmd0aCA9PT0gbWF4SW5wdXRMZW5ndGggfHwgZXZlbnQua2V5Lmxlbmd0aCAhPT0gMSB8fCAhaHNsUmVnZXgudGVzdChldmVudC5rZXkpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZElucHV0UG9zaXRpb24gPT09IDAgJiYgcGFyc2VJbnQoc2VsZWN0ZWRJbnB1dC52YWx1ZSkgPiAzNjApIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZElucHV0LnZhbHVlID0gJzM2MCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkSW5wdXRQb3NpdGlvbiA+IDAgJiYgcGFyc2VJbnQoc2VsZWN0ZWRJbnB1dC52YWx1ZS5yZXBsYWNlKCclJywgJycpKSA+IDEwMCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5wdXQudmFsdWUgPSAnMTAwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoZWNrQ29sb3JJbnB1dChjb2xvclR5cGU6IENvbG9yVHlwZSkge1xuICAgICAgICBsZXQgY29sb3JTZWxlY3Rpb25Nb2RpZmllciA9IHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJy4nICsgdGhpcy5DU1MuY29sb3JTZWxlY3Rpb25Nb2RpZmllcik7XG4gICAgICAgIGxldCBmb2N1c2VkSW5wdXQgPSBudWxsO1xuICAgICAgICBpZiAoY29sb3JUeXBlID09PSBDb2xvclR5cGUuSEVYKSB7XG4gICAgICAgICAgICBsZXQgaGV4SW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3IoJy5oZXggaW5wdXQnKTtcbiAgICAgICAgICAgIGZvY3VzZWRJbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvcignLmhleCBpbnB1dDpmb2N1cycpO1xuICAgICAgICAgICAgaWYgKGhleElucHV0LnZhbHVlLmxlbmd0aCA9PT0gNyAmJiBoZXhJbnB1dC52YWx1ZVswXSA9PT0gJyMnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5oZXhTdHJpbmcgPSBoZXhJbnB1dC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjb2xvclR5cGUgPT09IENvbG9yVHlwZS5SR0IpIHtcbiAgICAgICAgICAgIGxldCByZ2JJbnB1dDEgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZ2IgaW5wdXQnKVswXTtcbiAgICAgICAgICAgIGxldCByZ2JJbnB1dDIgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZ2IgaW5wdXQnKVsxXTtcbiAgICAgICAgICAgIGxldCByZ2JJbnB1dDMgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZ2IgaW5wdXQnKVsyXTtcbiAgICAgICAgICAgIGZvY3VzZWRJbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvcignLnJnYiBpbnB1dDpmb2N1cycpO1xuICAgICAgICAgICAgaWYgKHJnYklucHV0MS52YWx1ZS5sZW5ndGggPiAwICYmIHJnYklucHV0Mi52YWx1ZS5sZW5ndGggPiAwICYmIHJnYklucHV0My52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5yZWQgPSBwYXJzZUludChyZ2JJbnB1dDEudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IuZ3JlZW4gPSBwYXJzZUludChyZ2JJbnB1dDIudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IuYmx1ZSA9IHBhcnNlSW50KHJnYklucHV0My52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgaHNsSW5wdXQxID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcuaHNsIGlucHV0JylbMF07XG4gICAgICAgICAgICBsZXQgaHNsSW5wdXQyID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcuaHNsIGlucHV0JylbMV07XG4gICAgICAgICAgICBsZXQgaHNsSW5wdXQzID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcuaHNsIGlucHV0JylbMl07XG4gICAgICAgICAgICBmb2N1c2VkSW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3IoJy5oc2wgaW5wdXQ6Zm9jdXMnKTtcbiAgICAgICAgICAgIGlmIChoc2xJbnB1dDEudmFsdWUubGVuZ3RoID4gMCAmJiBoc2xJbnB1dDIudmFsdWUucmVwbGFjZSgnJScsICcnKS5sZW5ndGggPiAwICYmIGhzbElucHV0My52YWx1ZS5yZXBsYWNlKCclJywgJycpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLmh1ZSA9IHBhcnNlSW50KGhzbElucHV0MS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5zYXR1cmF0aW9uID0gcGFyc2VJbnQoaHNsSW5wdXQyLnZhbHVlLnJlcGxhY2UoJyUnLCAnJykpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IudmFsdWUgPSBwYXJzZUludChoc2xJbnB1dDMudmFsdWUucmVwbGFjZSgnJScsICcnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJnYkNvbG9yID1cbiAgICAgICAgICAgICdyZ2IoJyArXG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLnJnYi5yICtcbiAgICAgICAgICAgICcsJyArXG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLnJnYi5nICtcbiAgICAgICAgICAgICcsJyArXG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLnJnYi5iICtcbiAgICAgICAgICAgICcpJztcbiAgICAgICAgdGhpcy5yZXNldFVzZXJTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy5hcHBseUNvbG9yKHJnYkNvbG9yLCBmb2N1c2VkSW5wdXQpO1xuICAgIH1cblxuICAgIGNyZWF0ZUN1c3RvbUNvbG9yUGlja2VyKCkge1xuICAgICAgICBsZXQgY3VzdG9tQ29sb3JQaWNrZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgY3VzdG9tQ29sb3JQaWNrZXIuY2xhc3NOYW1lID0gdGhpcy5jb2xvclNlbGVjdGlvbkNzc1snY29sb3JQaWNrZXJDb250YWluZXInXTtcbiAgICAgICAgbGV0IHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgd3JhcHBlci5pZCA9IHRoaXMuQ1NTLmNvbG9yUGlja2VySWQ7XG4gICAgICAgIGN1c3RvbUNvbG9yUGlja2VyLmFwcGVuZENoaWxkKHdyYXBwZXIpO1xuXG4gICAgICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgbGV0IHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpO1xuICAgICAgICBzZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGV2ZW50KSA9PiB0aGlzLmNoYW5nZUNvbG9yVHlwZShldmVudCkpO1xuXG4gICAgICAgIGxldCBoZXhPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTtcbiAgICAgICAgaGV4T3B0aW9uLnZhbHVlID0gJ2hleCc7XG4gICAgICAgIGhleE9wdGlvbi5pbm5lclRleHQgPSAnSEVYJztcbiAgICAgICAgbGV0IHJnYk9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuICAgICAgICByZ2JPcHRpb24udmFsdWUgPSAncmdiJztcbiAgICAgICAgcmdiT3B0aW9uLmlubmVyVGV4dCA9ICdSR0InO1xuICAgICAgICBsZXQgaHNsT3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7XG4gICAgICAgIGhzbE9wdGlvbi52YWx1ZSA9ICdoc2wnO1xuICAgICAgICBoc2xPcHRpb24uaW5uZXJUZXh0ID0gJ0hTTCc7XG5cbiAgICAgICAgbGV0IGhleENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBoZXhDb250YWluZXIuY2xhc3NOYW1lID0gJ2hleCc7XG4gICAgICAgIGxldCBoZXhJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIGhleElucHV0LnBsYWNlaG9sZGVyID0gJyMyMzI3MmInO1xuICAgICAgICBoZXhDb250YWluZXIuYXBwZW5kQ2hpbGQoaGV4SW5wdXQpO1xuICAgICAgICBoZXhJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB0aGlzLmNoYW5nZUNvbG9ySW5wdXQoZXZlbnQsIENvbG9yVHlwZS5IRVgpKTtcbiAgICAgICAgaGV4SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoKSA9PiB0aGlzLmNoZWNrQ29sb3JJbnB1dChDb2xvclR5cGUuSEVYKSk7XG5cbiAgICAgICAgbGV0IHJnYkNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICByZ2JDb250YWluZXIuY2xhc3NOYW1lID0gJ3JnYiBoaWRkZW4nO1xuICAgICAgICBsZXQgcmdiSW5wdXQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgcmdiSW5wdXQxLnBsYWNlaG9sZGVyID0gJzI1NSc7XG4gICAgICAgIGxldCByZ2JJbnB1dDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICByZ2JJbnB1dDIucGxhY2Vob2xkZXIgPSAnMCc7XG4gICAgICAgIGxldCByZ2JJbnB1dDMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICByZ2JJbnB1dDMucGxhY2Vob2xkZXIgPSAnMCc7XG4gICAgICAgIHJnYklucHV0MS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB0aGlzLmNoYW5nZUNvbG9ySW5wdXQoZXZlbnQsIENvbG9yVHlwZS5SR0IpKTtcbiAgICAgICAgcmdiSW5wdXQyLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+IHRoaXMuY2hhbmdlQ29sb3JJbnB1dChldmVudCwgQ29sb3JUeXBlLlJHQikpO1xuICAgICAgICByZ2JJbnB1dDMuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4gdGhpcy5jaGFuZ2VDb2xvcklucHV0KGV2ZW50LCBDb2xvclR5cGUuUkdCKSk7XG4gICAgICAgIHJnYklucHV0MS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHRoaXMuY2hlY2tDb2xvcklucHV0KENvbG9yVHlwZS5SR0IpKTtcbiAgICAgICAgcmdiSW5wdXQyLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKCkgPT4gdGhpcy5jaGVja0NvbG9ySW5wdXQoQ29sb3JUeXBlLlJHQikpO1xuICAgICAgICByZ2JJbnB1dDMuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoKSA9PiB0aGlzLmNoZWNrQ29sb3JJbnB1dChDb2xvclR5cGUuUkdCKSk7XG4gICAgICAgIHJnYkNvbnRhaW5lci5hcHBlbmRDaGlsZChyZ2JJbnB1dDEpO1xuICAgICAgICByZ2JDb250YWluZXIuYXBwZW5kQ2hpbGQocmdiSW5wdXQyKTtcbiAgICAgICAgcmdiQ29udGFpbmVyLmFwcGVuZENoaWxkKHJnYklucHV0Myk7XG5cbiAgICAgICAgbGV0IGhzbENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBoc2xDb250YWluZXIuY2xhc3NOYW1lID0gJ2hzbCBoaWRkZW4nO1xuICAgICAgICBsZXQgaHNsSW5wdXQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgaHNsSW5wdXQxLnBsYWNlaG9sZGVyID0gJzAnO1xuICAgICAgICBsZXQgaHNsSW5wdXQyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgaHNsSW5wdXQyLnBsYWNlaG9sZGVyID0gJzEwMCUnO1xuICAgICAgICBsZXQgaHNsSW5wdXQzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgaHNsSW5wdXQzLnBsYWNlaG9sZGVyID0gJzUwJSc7XG4gICAgICAgIGhzbElucHV0MS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB0aGlzLmNoYW5nZUNvbG9ySW5wdXQoZXZlbnQsIENvbG9yVHlwZS5IU0wpKTtcbiAgICAgICAgaHNsSW5wdXQyLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+IHRoaXMuY2hhbmdlQ29sb3JJbnB1dChldmVudCwgQ29sb3JUeXBlLkhTTCkpO1xuICAgICAgICBoc2xJbnB1dDMuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4gdGhpcy5jaGFuZ2VDb2xvcklucHV0KGV2ZW50LCBDb2xvclR5cGUuSFNMKSk7XG4gICAgICAgIGhzbElucHV0MS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHRoaXMuY2hlY2tDb2xvcklucHV0KENvbG9yVHlwZS5IU0wpKTtcbiAgICAgICAgaHNsSW5wdXQyLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKCkgPT4gdGhpcy5jaGVja0NvbG9ySW5wdXQoQ29sb3JUeXBlLkhTTCkpO1xuICAgICAgICBoc2xJbnB1dDMuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoKSA9PiB0aGlzLmNoZWNrQ29sb3JJbnB1dChDb2xvclR5cGUuSFNMKSk7XG4gICAgICAgIGhzbENvbnRhaW5lci5hcHBlbmRDaGlsZChoc2xJbnB1dDEpO1xuICAgICAgICBoc2xDb250YWluZXIuYXBwZW5kQ2hpbGQoaHNsSW5wdXQyKTtcbiAgICAgICAgaHNsQ29udGFpbmVyLmFwcGVuZENoaWxkKGhzbElucHV0Myk7XG5cbiAgICAgICAgc2VsZWN0LmFwcGVuZENoaWxkKGhleE9wdGlvbik7XG4gICAgICAgIHNlbGVjdC5hcHBlbmRDaGlsZChyZ2JPcHRpb24pO1xuICAgICAgICAvL3NlbGVjdC5hcHBlbmRDaGlsZChoc2xPcHRpb24pO1xuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoc2VsZWN0KTtcblxuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaGV4Q29udGFpbmVyKTtcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHJnYkNvbnRhaW5lcik7XG4gICAgICAgIC8vY29udGFpbmVyLmFwcGVuZENoaWxkKGhzbENvbnRhaW5lcik7XG5cbiAgICAgICAgY3VzdG9tQ29sb3JQaWNrZXIuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcblxuICAgICAgICByZXR1cm4gY3VzdG9tQ29sb3JQaWNrZXI7XG4gICAgfVxuXG4gICAgY2hhbmdlQ29sb3JUeXBlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBsZXQgcGFyZW50ID0gKDxIVE1MU2VsZWN0RWxlbWVudD5ldmVudC50YXJnZXQpLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGxldCBjaGlsZHJlbiA9IHBhcmVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2Jyk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXS5jbGFzc0xpc3QuY29udGFpbnMoKDxIVE1MU2VsZWN0RWxlbWVudD5ldmVudC50YXJnZXQpLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXS5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjaGlsZHJlbltpXS5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmdiVG9IZXgocmVkLCBncmVlbiwgYmx1ZSkge1xuICAgICAgICByZXR1cm4gJyMnICsgdGhpcy5jb2xvclRvSGV4KHJlZCkgKyB0aGlzLmNvbG9yVG9IZXgoZ3JlZW4pICsgdGhpcy5jb2xvclRvSGV4KGJsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29sb3JUb0hleChjb2xvcikge1xuICAgICAgICB2YXIgaGV4YWRlY2ltYWwgPSBjb2xvci50b1N0cmluZygxNik7XG4gICAgICAgIHJldHVybiBoZXhhZGVjaW1hbC5sZW5ndGggPT0gMSA/ICcwJyArIGhleGFkZWNpbWFsIDogaGV4YWRlY2ltYWw7XG4gICAgfVxufVxuIl19
361
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvYnJpYW4vRG9jdW1lbnRzL3dvcmtzcGFjZS93aXppLWJsb2NrL3Byb2plY3RzL3dpemktYmxvY2svc3JjLyIsInNvdXJjZXMiOlsibGliL3NoYXJlZC9jb21wb25lbnRzL2VkaXRvcmpzL3Rvb2xzL2lubGluZS90b29sLXR5cGUvY29sb3ItdG9vbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQztBQUU5QixJQUFLLFNBSUo7QUFKRCxXQUFLLFNBQVM7SUFDVix1Q0FBRyxDQUFBO0lBQ0gsdUNBQUcsQ0FBQTtJQUNILHVDQUFHLENBQUE7QUFDUCxDQUFDLEVBSkksU0FBUyxLQUFULFNBQVMsUUFJYjtBQUVELE1BQU0sT0FBZ0IsU0FBVSxTQUFRLGVBQWU7SUFBdkQ7O1FBR0kseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBSXRDLFdBQU0sR0FBeUIsbUJBQW1CLENBQUM7UUFFbkQsbUJBQWMsR0FBb0IsSUFBSSxDQUFDO1FBTXZDLHNCQUFpQixHQUFXO1lBQ3hCLE9BQU8sRUFBRSwwQkFBMEI7WUFDbkMsU0FBUyxFQUFFLHFDQUFxQztZQUNoRCxvQkFBb0IsRUFBRSxrREFBa0Q7WUFDeEUsR0FBRyxFQUFFLCtCQUErQjtZQUNwQyxJQUFJLEVBQUUscUNBQXFDO1NBQzlDLENBQUM7UUFFRixzQkFBaUIsR0FBMkIsSUFBSSxDQUFDO0lBNFdyRCxDQUFDO0lBeFdHLGVBQWU7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQy9D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QUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUMxQzthQUNKO2lCQUFNO2dCQUNILElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDM0MsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ3ZDO2FBQ0o7U0FDSjtJQUNMLENBQUM7SUFFTyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJO1FBQzdCLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBSztRQUNwQixJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sV0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUNyRSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUZBVUxUX0NPTE9SX0FSUkFZLCBHTE9CQUxfS0VZX0NPREVTIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3JzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmxpbmVTdHlsZVRvb2wgfSBmcm9tICcuL2lubGluZS1zdHlsZS10b29sLmNvbXBvbmVudCc7XG5pbXBvcnQgaXJvIGZyb20gJ0BqYWFtZXMvaXJvJztcblxuZW51bSBDb2xvclR5cGUge1xuICAgIEhFWCxcbiAgICBSR0IsXG4gICAgSFNMLFxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29sb3JUb29sIGV4dGVuZHMgSW5saW5lU3R5bGVUb29sIHtcbiAgICBub2RlczogeyBidXR0b246IEhUTUxCdXR0b25FbGVtZW50IH07XG5cbiAgICBpc0NvbG9yU2VsZWN0aW9uT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29sb3JTZWxlY3Rpb246IGFueTtcblxuICAgIGNvbG9yczogQXJyYXk8QXJyYXk8c3RyaW5nPj4gPSBERUZBVUxUX0NPTE9SX0FSUkFZO1xuXG4gICAgY29sb3JJbmRpY2F0b3I6IEhUTUxTcGFuRWxlbWVudCA9IG51bGw7XG5cbiAgICBDU1M6IGFueTtcblxuICAgIGFwaTogYW55O1xuXG4gICAgY29sb3JTZWxlY3Rpb25Dc3M6IE9iamVjdCA9IHtcbiAgICAgICAgd3JhcHBlcjogJ2NlLWlubGluZS1hY3Rpb25zLS1jb2xvcicsXG4gICAgICAgIGNvbnRhaW5lcjogJ2NlLWlubGluZS1hY3Rpb25zLS1jb2xvcl9fY29udGFpbmVyJyxcbiAgICAgICAgY29sb3JQaWNrZXJDb250YWluZXI6ICdjZS1pbmxpbmUtYWN0aW9ucy0tY29sb3JfX2NvbnRhaW5lcl9fY29sb3JQaWNrZXInLFxuICAgICAgICByb3c6ICdjZS1pbmxpbmUtYWN0aW9ucy0tY29sb3JfX3JvdycsXG4gICAgICAgIGl0ZW06ICdjZS1pbmxpbmUtYWN0aW9ucy0tY29sb3JfX3Jvd19faXRlbScsXG4gICAgfTtcblxuICAgIGN1c3RvbUNvbG9yUGlja2VyOiBpcm8uQ29sb3JQaWNrZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGFic3RyYWN0IGFwcGx5Q29sb3IoY29sb3I6IHN0cmluZywgaW5wdXRUb0ZvY3VzOiBIVE1MSW5wdXRFbGVtZW50KTogUHJvbWlzZTx2b2lkPjtcblxuICAgIG9wZW5Db2xvclBpY2tlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudEVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRFZGl0b3IgPSB0aGlzLmZpbmRQYXJlbnRFZGl0b3IoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY29sb3JTZWxlY3Rpb24gPSB0aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuQ1NTLmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIpWzBdO1xuICAgICAgICBsZXQgY3VycmVudENvbG9yID0gdGhpcy5nZXRDdXJyZW50Q29sb3JBcHBsaWVkKHRoaXMuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5wYXJlbnRFbGVtZW50KTtcbiAgICAgICAgdGhpcy5zYXZlVXNlclNlbGVjdGlvbigpO1xuICAgICAgICBpZiAoY29sb3JTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGlmIChjb2xvclNlbGVjdGlvbi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD5jb2xvclNlbGVjdGlvbikuc3R5bGUubGVmdCA9XG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLm9mZnNldExlZnQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubm9kZXMuYnV0dG9uLm9mZnNldFdpZHRoIC8gMiAtICg8SFRNTEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb24pLm9mZnNldFdpZHRoIC8gMilcbiAgICAgICAgICAgICAgICAgICAgKS50b1N0cmluZygpICsgJ3B4JztcbiAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PmNvbG9yU2VsZWN0aW9uKS5zdHlsZS50b3AgPVxuICAgICAgICAgICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PnRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJy5jZS1pbmxpbmUtdG9vbGJhcl9fYnV0dG9ucycpKS5vZmZzZXRIZWlnaHQgLVxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubm9kZXMuYnV0dG9uLm9mZnNldFRvcCArIHRoaXMubm9kZXMuYnV0dG9uLm9mZnNldEhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgKS50b1N0cmluZygpICtcbiAgICAgICAgICAgICAgICAgICAgJ3B4JztcbiAgICAgICAgICAgICAgICBsZXQgdmlld3BvcnRPZmZzZXQgPSBjb2xvclNlbGVjdGlvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICBsZXQgdG90YWxXaWR0aCA9XG4gICAgICAgICAgICAgICAgICAgICg8SFRNTEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb24pLm9mZnNldFdpZHRoICtcbiAgICAgICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD5jb2xvclNlbGVjdGlvbi5xdWVyeVNlbGVjdG9yKCcuJyArIHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2NvbG9yUGlja2VyQ29udGFpbmVyJ10pKS5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICBpZiAodmlld3BvcnRPZmZzZXQubGVmdCArIHRvdGFsV2lkdGggPiBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGNvbG9yU2VsZWN0aW9uLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdsZWZ0JykpIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICh2aWV3cG9ydE9mZnNldC5sZWZ0ICsgdG90YWxXaWR0aCAtIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgpO1xuICAgICAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PmNvbG9yU2VsZWN0aW9uKS5zdHlsZS5sZWZ0ID0gbGVmdC50b1N0cmluZygpICsgJ3B4JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja0RlZmF1bHRDb2xvcnMoKTtcbiAgICAgICAgICAgICAgICBjb2xvclNlbGVjdGlvbi5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICBsZXQgY29sb3JQaWNrZXJXcmFwcGVyID0gPEhUTUxFbGVtZW50PnRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJyMnICsgdGhpcy5DU1MuY29sb3JQaWNrZXJJZCk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yUGlja2VyV3JhcHBlci5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlciA9IGlyby5Db2xvclBpY2tlcihjb2xvclBpY2tlcldyYXBwZXIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE3MCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dERpcmVjdGlvbjogJ2hvcml6b250YWwnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5vbihbJ2NvbG9yOmluaXQnXSwgKGNvbG9yOiBpcm8uQ29sb3IpID0+IHRoaXMuY2hhbmdlQ29sb3IoY29sb3IsIHRydWUsIGN1cnJlbnRDb2xvcikpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLm9uKFsnY29sb3I6Y2hhbmdlJ10sIChjb2xvcjogaXJvLkNvbG9yKSA9PiB0aGlzLmNoYW5nZUNvbG9yKGNvbG9yLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCRldmVudCkgPT4gdGhpcy5pc0NvbG9yU2VsZWN0aW9uRm9jdXNlZE91dCgkZXZlbnQpKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvbG9yU2VsZWN0aW9uT3BlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSwgNDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0NvbG9yU2VsZWN0aW9uT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbG9yU2VsZWN0aW9uLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Q3VycmVudENvbG9yQXBwbGllZChlbGVtZW50OiBFbGVtZW50KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY2xhc3NOYW1lICYmIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjZS1wYXJhZ3JhcGgnKSAmJiBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUodGhpcy5zdHlsZS5wcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgaXNDb2xvclNlbGVjdGlvbkZvY3VzZWRPdXQoJGV2ZW50KSB7XG4gICAgICAgIGxldCBjb2xvclNlbGVjdGlvbiA9IHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MuY29sb3JTZWxlY3Rpb25Nb2RpZmllcilbMF07XG4gICAgICAgIGlmICh0aGlzLmlzQ29sb3JTZWxlY3Rpb25PcGVuKSB7XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9ICRldmVudC50YXJnZXQ7XG4gICAgICAgICAgICB3aGlsZSAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyh0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydjb250YWluZXInXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoJGV2ZW50KSA9PiB0aGlzLmlzQ29sb3JTZWxlY3Rpb25Gb2N1c2VkT3V0KCRldmVudCkpO1xuICAgICAgICAgICAgdGhpcy5pc0NvbG9yU2VsZWN0aW9uT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgY29sb3JTZWxlY3Rpb24uY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgICAgICAgICB0aGlzLmFwaS50b29sYmFyLmNsb3NlKCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoZWNrRGVmYXVsdENvbG9ycygpIHtcbiAgICAgICAgbGV0IGN1cnJlbnRDb2xvciA9IHRoaXMuZ2V0Q3VycmVudENvbG9yQXBwbGllZCh0aGlzLmdldFNlbGVjdGlvbigpLmFuY2hvck5vZGUucGFyZW50RWxlbWVudCk7XG4gICAgICAgIHRoaXMuY29sb3JzLmZvckVhY2goKGNvbG9yUm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgICAgICAgY29sb3JSb3cuZm9yRWFjaCgoY29sb3IsIGNvbHVtbkluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yID09PSBjdXJyZW50Q29sb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRFZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuQ1NTLmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIpWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydyb3cnXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dJbmRleF0ucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydpdGVtJ10pXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uSW5kZXhdLmNsYXNzTGlzdC5hZGQodGhpcy5jb2xvclNlbGVjdGlvbkNzc1snaXRlbSddICsgJy0tYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRFZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuQ1NTLmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIpWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydyb3cnXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dJbmRleF0ucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydpdGVtJ10pXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uSW5kZXhdLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jb2xvclNlbGVjdGlvbkNzc1snaXRlbSddICsgJy0tYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9wZW5DdXN0b21Db2xvclBpY2tlcihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgbGV0IGN1c3RvbUNvbG9yUGlja2VyID0gKDxIVE1MRGl2RWxlbWVudD5ldmVudC50YXJnZXQpLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5jb2xvclNlbGVjdGlvbkNzc1snY29sb3JQaWNrZXJDb250YWluZXInXSlbMF07XG4gICAgICAgIGlmIChjdXN0b21Db2xvclBpY2tlcikge1xuICAgICAgICAgICAgaWYgKGN1c3RvbUNvbG9yUGlja2VyLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydjb2xvclBpY2tlckNvbnRhaW5lciddICsgJy0tYWN0aXZlJykpIHtcbiAgICAgICAgICAgICAgICBjdXN0b21Db2xvclBpY2tlci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2NvbG9yUGlja2VyQ29udGFpbmVyJ10gKyAnLS1hY3RpdmUnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VzdG9tQ29sb3JQaWNrZXIuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydjb2xvclBpY2tlckNvbnRhaW5lciddICsgJy0tYWN0aXZlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCg8SFRNTEVsZW1lbnQ+ZXZlbnQudGFyZ2V0KS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdkaXYnKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0VXNlclNlbGVjdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlQ29sb3IoY29sb3I6IGlyby5Db2xvciwgaXNJbml0OiBib29sZWFuLCBpbml0Q29sb3I6IHN0cmluZyA9ICcnKSB7XG4gICAgICAgIGxldCBjb2xvclNlbGVjdGlvbk1vZGlmaWVyID0gdGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvcignLicgKyB0aGlzLkNTUy5jb2xvclNlbGVjdGlvbk1vZGlmaWVyKTtcbiAgICAgICAgbGV0IGhleElucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yKCcuaGV4IGlucHV0Jyk7XG4gICAgICAgIGxldCByZ2JJbnB1dDEgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZ2IgaW5wdXQnKVswXTtcbiAgICAgICAgbGV0IHJnYklucHV0MiA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLnJnYiBpbnB1dCcpWzFdO1xuICAgICAgICBsZXQgcmdiSW5wdXQzID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcucmdiIGlucHV0JylbMl07XG4gICAgICAgIC8qXG4gICAgICAgIGxldCBoc2xJbnB1dDEgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5oc2wgaW5wdXQnKVswXTtcbiAgICAgICAgbGV0IGhzbElucHV0MiA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLmhzbCBpbnB1dCcpWzFdO1xuICAgICAgICBsZXQgaHNsSW5wdXQzID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcuaHNsIGlucHV0JylbMl07XG4gICAgICAgICovXG4gICAgICAgIGlmIChpc0luaXQpIHtcbiAgICAgICAgICAgIGlmIChpbml0Q29sb3IuaW5kZXhPZigncmdiYScpID4gLTEpIHtcbiAgICAgICAgICAgICAgICBpbml0Q29sb3IgPSBpbml0Q29sb3IucmVwbGFjZSgncmdiYSgnLCAnJykucmVwbGFjZSgnKScsICcnKS5yZXBsYWNlKCcgJywgJycpO1xuICAgICAgICAgICAgICAgIGxldCByZ2JJbml0Q29sb3IgPSBpbml0Q29sb3Iuc3BsaXQoJywnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLnJlZCA9IHBhcnNlSW50KHJnYkluaXRDb2xvclswXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5ncmVlbiA9IHBhcnNlSW50KHJnYkluaXRDb2xvclsxXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5ibHVlID0gcGFyc2VJbnQocmdiSW5pdENvbG9yWzJdKTtcbiAgICAgICAgICAgICAgICBoZXhJbnB1dC52YWx1ZSA9IHRoaXMucmdiVG9IZXgocGFyc2VJbnQocmdiSW5pdENvbG9yWzBdKSwgcGFyc2VJbnQocmdiSW5pdENvbG9yWzFdKSwgcGFyc2VJbnQocmdiSW5pdENvbG9yWzJdKSk7XG4gICAgICAgICAgICAgICAgcmdiSW5wdXQxLnZhbHVlID0gcmdiSW5pdENvbG9yWzBdO1xuICAgICAgICAgICAgICAgIHJnYklucHV0Mi52YWx1ZSA9IHJnYkluaXRDb2xvclsxXTtcbiAgICAgICAgICAgICAgICByZ2JJbnB1dDMudmFsdWUgPSByZ2JJbml0Q29sb3JbMl07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGluaXRDb2xvciA9IGluaXRDb2xvci5yZXBsYWNlKCdyZ2IoJywgJycpLnJlcGxhY2UoJyknLCAnJykucmVwbGFjZSgnICcsICcnKTtcbiAgICAgICAgICAgICAgICBsZXQgcmdiSW5pdENvbG9yID0gaW5pdENvbG9yLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5yZWQgPSBwYXJzZUludChyZ2JJbml0Q29sb3JbMF0pO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IuZ3JlZW4gPSBwYXJzZUludChyZ2JJbml0Q29sb3JbMV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IuYmx1ZSA9IHBhcnNlSW50KHJnYkluaXRDb2xvclsyXSk7XG4gICAgICAgICAgICAgICAgaGV4SW5wdXQudmFsdWUgPSB0aGlzLnJnYlRvSGV4KHBhcnNlSW50KHJnYkluaXRDb2xvclswXSksIHBhcnNlSW50KHJnYkluaXRDb2xvclsxXSksIHBhcnNlSW50KHJnYkluaXRDb2xvclsyXSkpO1xuICAgICAgICAgICAgICAgIHJnYklucHV0MS52YWx1ZSA9IHJnYkluaXRDb2xvclswXTtcbiAgICAgICAgICAgICAgICByZ2JJbnB1dDIudmFsdWUgPSByZ2JJbml0Q29sb3JbMV07XG4gICAgICAgICAgICAgICAgcmdiSW5wdXQzLnZhbHVlID0gcmdiSW5pdENvbG9yWzJdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaGV4SW5wdXQudmFsdWUgPSBjb2xvci5oZXhTdHJpbmc7XG4gICAgICAgICAgICByZ2JJbnB1dDEudmFsdWUgPSBjb2xvci5yZ2Iuci50b1N0cmluZygpO1xuICAgICAgICAgICAgcmdiSW5wdXQyLnZhbHVlID0gY29sb3IucmdiLmcudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHJnYklucHV0My52YWx1ZSA9IGNvbG9yLnJnYi5iLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrQ29sb3JJbnB1dChDb2xvclR5cGUuUkdCKTtcbiAgICAgICAgfVxuICAgICAgICAvKlxuICAgICAgICBoc2xJbnB1dDEudmFsdWUgPSBjb2xvci5oc2wuaC50b1N0cmluZygpO1xuICAgICAgICBoc2xJbnB1dDIudmFsdWUgPSBjb2xvci5oc2wucyArICclJztcbiAgICAgICAgaHNsSW5wdXQzLnZhbHVlID0gY29sb3IuaHNsLmwgKyAnJSc7XG4gICAgICAgICovXG4gICAgfVxuXG4gICAgY2hhbmdlQ29sb3JJbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCwgY29sb3JUeXBlOiBDb2xvclR5cGUpIHtcbiAgICAgICAgaWYgKGNvbG9yVHlwZSA9PT0gQ29sb3JUeXBlLkhFWCkge1xuICAgICAgICAgICAgbGV0IGhleFJlZ2V4ID0gL1swLTlBLUZhLWYjXS87XG4gICAgICAgICAgICBsZXQgaGV4SW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD4oXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvcignLicgKyB0aGlzLkNTUy5jb2xvclNlbGVjdGlvbk1vZGlmaWVyKS5xdWVyeVNlbGVjdG9yKCcuaGV4IGlucHV0JylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoR0xPQkFMX0tFWV9DT0RFUy5pbmRleE9mKGV2ZW50LmNvZGUpID4gLTEgfHwgaGV4UmVnZXgudGVzdChldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhleElucHV0LnZhbHVlLmxlbmd0aCA+IDAgJiYgZXZlbnQua2V5ID09PSAnIycpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGhleElucHV0LnZhbHVlLmxlbmd0aCA9PT0gNSAmJiBoZXhJbnB1dC52YWx1ZVswXSAhPT0gJyMnICYmIGhleFJlZ2V4LnRlc3QoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBoZXhJbnB1dC52YWx1ZSA9ICcjJyArIGhleElucHV0LnZhbHVlICsgZXZlbnQua2V5O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGNvbG9yVHlwZSA9PT0gQ29sb3JUeXBlLlJHQikge1xuICAgICAgICAgICAgbGV0IHJnYlJlZ2V4ID0gL1swLTldLztcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZElucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+ZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIEdMT0JBTF9LRVlfQ09ERVMuaW5kZXhPZihldmVudC5jb2RlKSA9PT0gLTEgJiZcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRJbnB1dC52YWx1ZS5sZW5ndGggPT09IDMgfHwgZXZlbnQua2V5Lmxlbmd0aCAhPT0gMSB8fCAhcmdiUmVnZXgudGVzdChldmVudC5rZXkpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXJzZUludChzZWxlY3RlZElucHV0LnZhbHVlKSA+IDI1NSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5wdXQudmFsdWUgPSAnMjU1JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBtYXhJbnB1dExlbmd0aCA9IDM7XG4gICAgICAgICAgICBsZXQgaHNsUmVnZXggPSAvWzAtOV0vO1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkSW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5ldmVudC50YXJnZXQ7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRJbnB1dFBvc2l0aW9uID0gQXJyYXkuZnJvbShzZWxlY3RlZElucHV0LnBhcmVudEVsZW1lbnQuY2hpbGRyZW4pLmluZGV4T2Yoc2VsZWN0ZWRJbnB1dCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbnB1dFBvc2l0aW9uID4gMCkge1xuICAgICAgICAgICAgICAgIGhzbFJlZ2V4ID0gL1swLTklXS87XG4gICAgICAgICAgICAgICAgbWF4SW5wdXRMZW5ndGggPSA0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIEdMT0JBTF9LRVlfQ09ERVMuaW5kZXhPZihldmVudC5jb2RlKSA9PT0gLTEgJiZcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRJbnB1dC52YWx1ZS5sZW5ndGggPT09IG1heElucHV0TGVuZ3RoIHx8IGV2ZW50LmtleS5sZW5ndGggIT09IDEgfHwgIWhzbFJlZ2V4LnRlc3QoZXZlbnQua2V5KSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbnB1dFBvc2l0aW9uID09PSAwICYmIHBhcnNlSW50KHNlbGVjdGVkSW5wdXQudmFsdWUpID4gMzYwKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbnB1dC52YWx1ZSA9ICczNjAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZElucHV0UG9zaXRpb24gPiAwICYmIHBhcnNlSW50KHNlbGVjdGVkSW5wdXQudmFsdWUucmVwbGFjZSgnJScsICcnKSkgPiAxMDApIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZElucHV0LnZhbHVlID0gJzEwMCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGVja0NvbG9ySW5wdXQoY29sb3JUeXBlOiBDb2xvclR5cGUpIHtcbiAgICAgICAgbGV0IGNvbG9yU2VsZWN0aW9uTW9kaWZpZXIgPSB0aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yKCcuJyArIHRoaXMuQ1NTLmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIpO1xuICAgICAgICBsZXQgZm9jdXNlZElucHV0ID0gbnVsbDtcbiAgICAgICAgaWYgKGNvbG9yVHlwZSA9PT0gQ29sb3JUeXBlLkhFWCkge1xuICAgICAgICAgICAgbGV0IGhleElucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yKCcuaGV4IGlucHV0Jyk7XG4gICAgICAgICAgICBmb2N1c2VkSW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3IoJy5oZXggaW5wdXQ6Zm9jdXMnKTtcbiAgICAgICAgICAgIGlmIChoZXhJbnB1dC52YWx1ZS5sZW5ndGggPT09IDcgJiYgaGV4SW5wdXQudmFsdWVbMF0gPT09ICcjJykge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IuaGV4U3RyaW5nID0gaGV4SW5wdXQudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY29sb3JUeXBlID09PSBDb2xvclR5cGUuUkdCKSB7XG4gICAgICAgICAgICBsZXQgcmdiSW5wdXQxID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcucmdiIGlucHV0JylbMF07XG4gICAgICAgICAgICBsZXQgcmdiSW5wdXQyID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcucmdiIGlucHV0JylbMV07XG4gICAgICAgICAgICBsZXQgcmdiSW5wdXQzID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcucmdiIGlucHV0JylbMl07XG4gICAgICAgICAgICBmb2N1c2VkSW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3IoJy5yZ2IgaW5wdXQ6Zm9jdXMnKTtcbiAgICAgICAgICAgIGlmIChyZ2JJbnB1dDEudmFsdWUubGVuZ3RoID4gMCAmJiByZ2JJbnB1dDIudmFsdWUubGVuZ3RoID4gMCAmJiByZ2JJbnB1dDMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IucmVkID0gcGFyc2VJbnQocmdiSW5wdXQxLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLmdyZWVuID0gcGFyc2VJbnQocmdiSW5wdXQyLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLmJsdWUgPSBwYXJzZUludChyZ2JJbnB1dDMudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGhzbElucHV0MSA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLmhzbCBpbnB1dCcpWzBdO1xuICAgICAgICAgICAgbGV0IGhzbElucHV0MiA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLmhzbCBpbnB1dCcpWzFdO1xuICAgICAgICAgICAgbGV0IGhzbElucHV0MyA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLmhzbCBpbnB1dCcpWzJdO1xuICAgICAgICAgICAgZm9jdXNlZElucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yKCcuaHNsIGlucHV0OmZvY3VzJyk7XG4gICAgICAgICAgICBpZiAoaHNsSW5wdXQxLnZhbHVlLmxlbmd0aCA+IDAgJiYgaHNsSW5wdXQyLnZhbHVlLnJlcGxhY2UoJyUnLCAnJykubGVuZ3RoID4gMCAmJiBoc2xJbnB1dDMudmFsdWUucmVwbGFjZSgnJScsICcnKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5odWUgPSBwYXJzZUludChoc2xJbnB1dDEudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3Iuc2F0dXJhdGlvbiA9IHBhcnNlSW50KGhzbElucHV0Mi52YWx1ZS5yZXBsYWNlKCclJywgJycpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLnZhbHVlID0gcGFyc2VJbnQoaHNsSW5wdXQzLnZhbHVlLnJlcGxhY2UoJyUnLCAnJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZ2JDb2xvciA9XG4gICAgICAgICAgICAncmdiKCcgK1xuICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5yZ2IuciArXG4gICAgICAgICAgICAnLCcgK1xuICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5yZ2IuZyArXG4gICAgICAgICAgICAnLCcgK1xuICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5yZ2IuYiArXG4gICAgICAgICAgICAnKSc7XG4gICAgICAgIHRoaXMucmVzZXRVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuYXBwbHlDb2xvcihyZ2JDb2xvciwgZm9jdXNlZElucHV0KTtcbiAgICB9XG5cbiAgICBjcmVhdGVDdXN0b21Db2xvclBpY2tlcigpIHtcbiAgICAgICAgbGV0IGN1c3RvbUNvbG9yUGlja2VyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGN1c3RvbUNvbG9yUGlja2VyLmNsYXNzTmFtZSA9IHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2NvbG9yUGlja2VyQ29udGFpbmVyJ107XG4gICAgICAgIGxldCB3cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHdyYXBwZXIuaWQgPSB0aGlzLkNTUy5jb2xvclBpY2tlcklkO1xuICAgICAgICBjdXN0b21Db2xvclBpY2tlci5hcHBlbmRDaGlsZCh3cmFwcGVyKTtcblxuICAgICAgICBsZXQgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGxldCBzZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxlY3QnKTtcbiAgICAgICAgc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChldmVudCkgPT4gdGhpcy5jaGFuZ2VDb2xvclR5cGUoZXZlbnQpKTtcblxuICAgICAgICBsZXQgaGV4T3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7XG4gICAgICAgIGhleE9wdGlvbi52YWx1ZSA9ICdoZXgnO1xuICAgICAgICBoZXhPcHRpb24uaW5uZXJUZXh0ID0gJ0hFWCc7XG4gICAgICAgIGxldCByZ2JPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTtcbiAgICAgICAgcmdiT3B0aW9uLnZhbHVlID0gJ3JnYic7XG4gICAgICAgIHJnYk9wdGlvbi5pbm5lclRleHQgPSAnUkdCJztcbiAgICAgICAgbGV0IGhzbE9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuICAgICAgICBoc2xPcHRpb24udmFsdWUgPSAnaHNsJztcbiAgICAgICAgaHNsT3B0aW9uLmlubmVyVGV4dCA9ICdIU0wnO1xuXG4gICAgICAgIGxldCBoZXhDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgaGV4Q29udGFpbmVyLmNsYXNzTmFtZSA9ICdoZXgnO1xuICAgICAgICBsZXQgaGV4SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICBoZXhJbnB1dC5wbGFjZWhvbGRlciA9ICcjMjMyNzJiJztcbiAgICAgICAgaGV4Q29udGFpbmVyLmFwcGVuZENoaWxkKGhleElucHV0KTtcbiAgICAgICAgaGV4SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4gdGhpcy5jaGFuZ2VDb2xvcklucHV0KGV2ZW50LCBDb2xvclR5cGUuSEVYKSk7XG4gICAgICAgIGhleElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKCkgPT4gdGhpcy5jaGVja0NvbG9ySW5wdXQoQ29sb3JUeXBlLkhFWCkpO1xuXG4gICAgICAgIGxldCByZ2JDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgcmdiQ29udGFpbmVyLmNsYXNzTmFtZSA9ICdyZ2IgaGlkZGVuJztcbiAgICAgICAgbGV0IHJnYklucHV0MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIHJnYklucHV0MS5wbGFjZWhvbGRlciA9ICcyNTUnO1xuICAgICAgICBsZXQgcmdiSW5wdXQyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgcmdiSW5wdXQyLnBsYWNlaG9sZGVyID0gJzAnO1xuICAgICAgICBsZXQgcmdiSW5wdXQzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgcmdiSW5wdXQzLnBsYWNlaG9sZGVyID0gJzAnO1xuICAgICAgICByZ2JJbnB1dDEuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4gdGhpcy5jaGFuZ2VDb2xvcklucHV0KGV2ZW50LCBDb2xvclR5cGUuUkdCKSk7XG4gICAgICAgIHJnYklucHV0Mi5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB0aGlzLmNoYW5nZUNvbG9ySW5wdXQoZXZlbnQsIENvbG9yVHlwZS5SR0IpKTtcbiAgICAgICAgcmdiSW5wdXQzLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+IHRoaXMuY2hhbmdlQ29sb3JJbnB1dChldmVudCwgQ29sb3JUeXBlLlJHQikpO1xuICAgICAgICByZ2JJbnB1dDEuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoKSA9PiB0aGlzLmNoZWNrQ29sb3JJbnB1dChDb2xvclR5cGUuUkdCKSk7XG4gICAgICAgIHJnYklucHV0Mi5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHRoaXMuY2hlY2tDb2xvcklucHV0KENvbG9yVHlwZS5SR0IpKTtcbiAgICAgICAgcmdiSW5wdXQzLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKCkgPT4gdGhpcy5jaGVja0NvbG9ySW5wdXQoQ29sb3JUeXBlLlJHQikpO1xuICAgICAgICByZ2JDb250YWluZXIuYXBwZW5kQ2hpbGQocmdiSW5wdXQxKTtcbiAgICAgICAgcmdiQ29udGFpbmVyLmFwcGVuZENoaWxkKHJnYklucHV0Mik7XG4gICAgICAgIHJnYkNvbnRhaW5lci5hcHBlbmRDaGlsZChyZ2JJbnB1dDMpO1xuXG4gICAgICAgIGxldCBoc2xDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgaHNsQ29udGFpbmVyLmNsYXNzTmFtZSA9ICdoc2wgaGlkZGVuJztcbiAgICAgICAgbGV0IGhzbElucHV0MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIGhzbElucHV0MS5wbGFjZWhvbGRlciA9ICcwJztcbiAgICAgICAgbGV0IGhzbElucHV0MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIGhzbElucHV0Mi5wbGFjZWhvbGRlciA9ICcxMDAlJztcbiAgICAgICAgbGV0IGhzbElucHV0MyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIGhzbElucHV0My5wbGFjZWhvbGRlciA9ICc1MCUnO1xuICAgICAgICBoc2xJbnB1dDEuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4gdGhpcy5jaGFuZ2VDb2xvcklucHV0KGV2ZW50LCBDb2xvclR5cGUuSFNMKSk7XG4gICAgICAgIGhzbElucHV0Mi5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB0aGlzLmNoYW5nZUNvbG9ySW5wdXQoZXZlbnQsIENvbG9yVHlwZS5IU0wpKTtcbiAgICAgICAgaHNsSW5wdXQzLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+IHRoaXMuY2hhbmdlQ29sb3JJbnB1dChldmVudCwgQ29sb3JUeXBlLkhTTCkpO1xuICAgICAgICBoc2xJbnB1dDEuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoKSA9PiB0aGlzLmNoZWNrQ29sb3JJbnB1dChDb2xvclR5cGUuSFNMKSk7XG4gICAgICAgIGhzbElucHV0Mi5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHRoaXMuY2hlY2tDb2xvcklucHV0KENvbG9yVHlwZS5IU0wpKTtcbiAgICAgICAgaHNsSW5wdXQzLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKCkgPT4gdGhpcy5jaGVja0NvbG9ySW5wdXQoQ29sb3JUeXBlLkhTTCkpO1xuICAgICAgICBoc2xDb250YWluZXIuYXBwZW5kQ2hpbGQoaHNsSW5wdXQxKTtcbiAgICAgICAgaHNsQ29udGFpbmVyLmFwcGVuZENoaWxkKGhzbElucHV0Mik7XG4gICAgICAgIGhzbENvbnRhaW5lci5hcHBlbmRDaGlsZChoc2xJbnB1dDMpO1xuXG4gICAgICAgIHNlbGVjdC5hcHBlbmRDaGlsZChoZXhPcHRpb24pO1xuICAgICAgICBzZWxlY3QuYXBwZW5kQ2hpbGQocmdiT3B0aW9uKTtcbiAgICAgICAgLy9zZWxlY3QuYXBwZW5kQ2hpbGQoaHNsT3B0aW9uKTtcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHNlbGVjdCk7XG5cbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGhleENvbnRhaW5lcik7XG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChyZ2JDb250YWluZXIpO1xuICAgICAgICAvL2NvbnRhaW5lci5hcHBlbmRDaGlsZChoc2xDb250YWluZXIpO1xuXG4gICAgICAgIGN1c3RvbUNvbG9yUGlja2VyLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG5cbiAgICAgICAgcmV0dXJuIGN1c3RvbUNvbG9yUGlja2VyO1xuICAgIH1cblxuICAgIGNoYW5nZUNvbG9yVHlwZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgbGV0IHBhcmVudCA9ICg8SFRNTFNlbGVjdEVsZW1lbnQ+ZXZlbnQudGFyZ2V0KS5wYXJlbnRFbGVtZW50O1xuICAgICAgICBsZXQgY2hpbGRyZW4gPSBwYXJlbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0uY2xhc3NMaXN0LmNvbnRhaW5zKCg8SFRNTFNlbGVjdEVsZW1lbnQ+ZXZlbnQudGFyZ2V0KS52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0uY2xhc3NMaXN0LmNvbnRhaW5zKCdoaWRkZW4nKSkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltpXS5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGRyZW5baV0uY2xhc3NMaXN0LmNvbnRhaW5zKCdoaWRkZW4nKSkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltpXS5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJnYlRvSGV4KHJlZCwgZ3JlZW4sIGJsdWUpIHtcbiAgICAgICAgcmV0dXJuICcjJyArIHRoaXMuY29sb3JUb0hleChyZWQpICsgdGhpcy5jb2xvclRvSGV4KGdyZWVuKSArIHRoaXMuY29sb3JUb0hleChibHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbG9yVG9IZXgoY29sb3IpIHtcbiAgICAgICAgdmFyIGhleGFkZWNpbWFsID0gY29sb3IudG9TdHJpbmcoMTYpO1xuICAgICAgICByZXR1cm4gaGV4YWRlY2ltYWwubGVuZ3RoID09IDEgPyAnMCcgKyBoZXhhZGVjaW1hbCA6IGhleGFkZWNpbWFsO1xuICAgIH1cbn1cbiJdfQ==
@@ -462,4 +462,4 @@ export class InlineStyleTool extends EditorJSTool {
462
462
  });
463
463
  }
464
464
  }
465
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXN0eWxlLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3BhdWxpbmUvRG9jdW1lbnRzL3dvcmtzcGFjZS93aXppLWJsb2NrL3Byb2plY3RzL3dpemktYmxvY2svc3JjLyIsInNvdXJjZXMiOlsibGliL3NoYXJlZC9jb21wb25lbnRzL2VkaXRvcmpzL3Rvb2xzL2lubGluZS90b29sLXR5cGUvaW5saW5lLXN0eWxlLXRvb2wuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQW1CLFlBQVksRUFBZSxNQUFNLHFDQUFxQyxDQUFDO0FBRWpHLE1BQU0sT0FBZ0IsZUFBZ0IsU0FBUSxZQUFZO0lBQTFEOztRQUdJLGVBQVUsR0FBRyx3QkFBd0IsQ0FBQztRQUV0QyxjQUFTLEdBQUcsV0FBVyxDQUFDO1FBSXhCLHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQUU5QixxQkFBZ0IsR0FBVyxDQUFDLENBQUM7UUFFN0Isb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFFakMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFFaEMsY0FBUyxHQUFXLENBQUMsQ0FBQztRQU10QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQU1qQyxhQUFRLEdBQUc7WUFDUCxHQUFHLEVBQUUsS0FBSztZQUNWLEtBQUssRUFBRSxLQUFLO1lBQ1osS0FBSyxFQUFFLEtBQUs7WUFDWixTQUFTLEVBQUUsS0FBSztTQUNuQixDQUFDO0lBaWVOLENBQUM7SUEvZFMsZ0JBQWdCLENBQUMsTUFBYzs7WUFDakMsTUFBTSxTQUFTLEdBQXFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEcsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDWixPQUFPO2FBQ1Y7WUFDRCxNQUFNLFVBQVUsR0FBUyxTQUFTLENBQUMsVUFBVSxDQUFDO1lBQzlD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QixHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTt3QkFDbEYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7d0JBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO3dCQUN6QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO3FCQUNyQztvQkFDRCxJQUFJLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO29CQUM5QyxJQUFJLENBQUMsaUJBQWlCLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7b0JBQ3RELElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztpQkFDeEQ7Z0JBQ0QsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFO29CQUNyQixNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBYyxRQUFRLENBQUMsQ0FBQztpQkFDMUQ7Z0JBQ0QsUUFBUSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7YUFDbkM7WUFDRCxJQUFJLGFBQWEsRUFBRTtnQkFDZixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUM3QjtRQUNMLENBQUM7S0FBQTtDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXR0cmlidXRlT2JqZWN0LCBFZGl0b3JKU1Rvb2wsIFN0eWxlT2JqZWN0IH0gZnJvbSAnLi4vLi4vdXRpbHMvZWRpdG9yanMtdG9vbC5jb21wb25lbnQnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW5saW5lU3R5bGVUb29sIGV4dGVuZHMgRWRpdG9ySlNUb29sIHtcbiAgICB0YWc6IHN0cmluZztcblxuICAgIGNvbnRhaW5lcnMgPSAnaDEsaDIsaDMsaDQsaDUsaDYscCxsaSc7XG5cbiAgICBtb2RpZmllcnMgPSAnc3Ryb25nLGVtJztcblxuICAgIHN0eWxlPzogU3R5bGVPYmplY3Q7XG5cbiAgICBmb3VuZEFuY2hvck9mZnNldDogbnVtYmVyID0gMDtcblxuICAgIGZvdW5kRm9jdXNPZmZzZXQ6IG51bWJlciA9IDA7XG5cbiAgICBmb3VuZEFuY2hvck5vZGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGZvdW5kRm9jdXNOb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICB0bXBPZmZzZXQ6IG51bWJlciA9IDA7XG5cbiAgICBjbGFzc1RvQXBwbHk/OiBzdHJpbmc7XG5cbiAgICBjbGFzc2VzPzogc3RyaW5nO1xuXG4gICAgbW9kaWZpZWRDb250ZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBhdHRyaWJ1dGVOYW1lPzogc3RyaW5nO1xuXG4gICAgYXR0cmlidXRlc1RvQXBwbHk/OiBBcnJheTxBdHRyaWJ1dGVPYmplY3Q+O1xuXG4gICAgbW9kaWZpZXMgPSB7XG4gICAgICAgIHRhZzogZmFsc2UsXG4gICAgICAgIHN0eWxlOiBmYWxzZSxcbiAgICAgICAgY2xhc3M6IGZhbHNlLFxuICAgICAgICBhdHRyaWJ1dGU6IGZhbHNlLFxuICAgIH07XG5cbiAgICBhc3luYyBleGVjQ29tbWFuZFN0eWxlKGFjdGlvbjogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbjogU2VsZWN0aW9uIHwgbnVsbCA9IHRoaXMuY3VycmVudFNlbGVjdGlvbiA/IHRoaXMuY3VycmVudFNlbGVjdGlvbiA6IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGlmICghc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW5jaG9yTm9kZTogTm9kZSA9IHNlbGVjdGlvbi5hbmNob3JOb2RlO1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50RWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvciA9IHRoaXMuZmluZFBhcmVudEVkaXRvcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFhbmNob3JOb2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvbnRhaW5lcjogSFRNTEVsZW1lbnQgPVxuICAgICAgICAgICAgYW5jaG9yTm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5URVhUX05PREUgJiYgYW5jaG9yTm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5DT01NRU5UX05PREVcbiAgICAgICAgICAgICAgICA/IChhbmNob3JOb2RlIGFzIEhUTUxFbGVtZW50KVxuICAgICAgICAgICAgICAgIDogYW5jaG9yTm9kZS5wYXJlbnRFbGVtZW50O1xuICAgICAgICBjb25zdCBzYW1lU2VsZWN0aW9uOiBib29sZWFuID0gY29udGFpbmVyICYmIGNvbnRhaW5lci5pbm5lclRleHQgPT09IHNlbGVjdGlvbi50b1N0cmluZygpO1xuICAgICAgICBhd2FpdCB0aGlzLnNhdmVJbmxpbmVTZWxlY3Rpb24oY29udGFpbmVyLCB0cnVlKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgc2FtZVNlbGVjdGlvbiAmJlxuICAgICAgICAgICAgIXRoaXMuaXNDb250YWluZXIodGhpcy5jb250YWluZXJzLCBjb250YWluZXIpICYmXG4gICAgICAgICAgICB0aGlzLmhhc1N0eWxlKGNvbnRhaW5lcikgJiZcbiAgICAgICAgICAgIHNlbGVjdGlvbi50b1N0cmluZygpID09PSB0aGlzLmhhc1N0eWxlKGNvbnRhaW5lcikuaW5uZXJUZXh0XG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3VwZGF0ZScpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVTZWxlY3Rpb24oc2VsZWN0aW9uLCB0aGlzLmhhc1N0eWxlKGNvbnRhaW5lciksIGFjdGlvbiwgdGhpcy5jb250YWluZXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZXBsYWNlJyk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlcGxhY2VTZWxlY3Rpb24oY29udGFpbmVyLCBhY3Rpb24sIHNlbGVjdGlvbiwgdGhpcy5jb250YWluZXJzKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmNsZWFudXBDb250YWluZXIoc2VsZWN0aW9uLCBjb250YWluZXIsIHRydWUpO1xuICAgICAgICBpZiAodGhpcy5tb2RpZmllZENvbnRlbnQpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVzZXRJbmxpbmVTZWxlY3Rpb24oY29udGFpbmVyLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgdXBkYXRlU2VsZWN0aW9uKHNlbGVjdGlvbjogU2VsZWN0aW9uLCBjb250YWluZXI6IEhUTUxFbGVtZW50LCBhY3Rpb246IHN0cmluZywgY29udGFpbmVyczogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGlmaWVzLnN0eWxlKSB7XG4gICAgICAgICAgICBjb25zdCBjc3MgPSB0aGlzLnN0eWxlLnByb3BlcnR5O1xuICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlW2Nzc10gPSBhd2FpdCB0aGlzLmdldFN0eWxlVmFsdWUoY29udGFpbmVyLCBhY3Rpb24sIGNvbnRhaW5lcnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2U6IFJhbmdlID0gdGhpcy5nZXRSYW5nZU9iamVjdChzZWxlY3Rpb24pO1xuICAgICAgICAgICAgbGV0IG5ld0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuaGFzU3R5bGUoY29udGFpbmVyKSA/ICdzcGFuJyA6IHRoaXMudGFnKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGlmaWVzLmNsYXNzKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZW1vdmVDaGlsZHJlbkNsYXNzZXMobmV3RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xhc3NUb0FwcGx5ICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc1RvQXBwbHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGlmaWVzLmF0dHJpYnV0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlc1RvQXBwbHkuZm9yRWFjaCgoYXR0cmlidXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lLCBhdHRyaWJ1dGUudmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3RWxlbWVudCA9IHRoaXMuc2V0SW5saW5lU3R5bGUoY29udGFpbmVyLCBuZXdFbGVtZW50KTtcblxuICAgICAgICAgICAgd2hpbGUgKGNvbnRhaW5lci5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRDbG9uZSA9IGNvbnRhaW5lci5maXJzdENoaWxkLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LmFwcGVuZENoaWxkKGVsZW1lbnRDbG9uZSk7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmZpcnN0Q2hpbGQucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnRhaW5lci5wYXJlbnRFbGVtZW50LnJlcGxhY2VDaGlsZChuZXdFbGVtZW50LCBjb250YWluZXIpO1xuXG4gICAgICAgICAgICByYW5nZS5pbnNlcnROb2RlKG5ld0VsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZXBsYWNlU2VsZWN0aW9uKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIGFjdGlvbjogc3RyaW5nLCBzZWxlY3Rpb246IFNlbGVjdGlvbiwgY29udGFpbmVyczogc3RyaW5nKSB7XG4gICAgICAgIGxldCBwYXJlbnRDb250YWluZXIgPSB0aGlzLmhhc1N0eWxlKGNvbnRhaW5lcik7XG5cbiAgICAgICAgY29uc3QgZm9jdXNOb2RlOiBOb2RlID0gc2VsZWN0aW9uLmZvY3VzTm9kZTtcbiAgICAgICAgbGV0IG9mZnNldENvbnRhaW5lcjogSFRNTEVsZW1lbnQgPVxuICAgICAgICAgICAgZm9jdXNOb2RlLm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSAmJiBmb2N1c05vZGUubm9kZVR5cGUgIT09IE5vZGUuQ09NTUVOVF9OT0RFXG4gICAgICAgICAgICAgICAgPyAoZm9jdXNOb2RlIGFzIEhUTUxFbGVtZW50KVxuICAgICAgICAgICAgICAgIDogZm9jdXNOb2RlLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGxldCBvZmZzZXRQYXJlbnRDb250YWluZXIgPSB0aGlzLmhhc1N0eWxlKG9mZnNldENvbnRhaW5lcik7XG4gICAgICAgIGlmIChwYXJlbnRDb250YWluZXIgJiYgcGFyZW50Q29udGFpbmVyID09PSBvZmZzZXRQYXJlbnRDb250YWluZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlOiBSYW5nZSA9IHRoaXMuZ2V0UmFuZ2VPYmplY3Qoc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRGcmFnbWVudDogRG9jdW1lbnRGcmFnbWVudCA9IHJhbmdlLmV4dHJhY3RDb250ZW50cygpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQ6IEhUTUxTcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGN1cnJlbnRGcmFnbWVudCk7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5zdHlsZSAmJiB0aGlzLnN0eWxlLnZhbHVlLmluZGV4T2YoJyQxJykgPiAtMSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LnN0eWxlW3RoaXMuc3R5bGUucHJvcGVydHldID0gdGhpcy5zdHlsZS52YWx1ZS5yZXBsYWNlKCckMScsIHRoaXMuc3R5bGUuaW5wdXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMubW9kaWZpZXMuY2xhc3MpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlbW92ZUNoaWxkcmVuQ2xhc3NlcyhjdXJyZW50RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xhc3NUb0FwcGx5ICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NUb0FwcGx5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5hdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZXNUb0FwcGx5LmZvckVhY2goKGF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUsIGF0dHJpYnV0ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgY3VycmVudEVsZW1lbnRUb0FwcGVuZCA9IGN1cnJlbnRFbGVtZW50O1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRQYXJlbnRFbGVtZW50ID0gY29udGFpbmVyO1xuICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRQYXJlbnRFbGVtZW50ICE9PSBwYXJlbnRDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICBsZXQgdG1wRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoY3VycmVudFBhcmVudEVsZW1lbnQudGFnTmFtZSk7XG4gICAgICAgICAgICAgICAgdG1wRWxlbWVudCA9IHRoaXMuc2V0SW5saW5lU3R5bGUoY3VycmVudFBhcmVudEVsZW1lbnQsIHRtcEVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgdG1wRWxlbWVudC5hcHBlbmRDaGlsZChjdXJyZW50RWxlbWVudFRvQXBwZW5kKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudFRvQXBwZW5kID0gdG1wRWxlbWVudDtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFyZW50RWxlbWVudCA9IGN1cnJlbnRQYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGlzTFRSID0gdGhpcy5pc0FuY2hvckJlZm9yZUZvY3VzKFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5hbmNob3JOb2RlLFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5hbmNob3JPZmZzZXQsXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uLmZvY3VzTm9kZSxcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24uZm9jdXNPZmZzZXRcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGxldCBzZWxlY3Rpb25Gb2N1c09mZnNldCA9IGlzTFRSID8gc2VsZWN0aW9uLmFuY2hvck9mZnNldCA6IHNlbGVjdGlvbi5mb2N1c09mZnNldDtcbiAgICAgICAgICAgIGxldCBzZWxlY3Rpb25Gb2N1c05vZGUgPSBpc0xUUiA/IHNlbGVjdGlvbi5hbmNob3JOb2RlIDogc2VsZWN0aW9uLmZvY3VzTm9kZTtcblxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChwYXJlbnRDb250YWluZXIsIDAsIHNlbGVjdGlvbkZvY3VzTm9kZSwgc2VsZWN0aW9uRm9jdXNPZmZzZXQpO1xuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIGxldCBwcmVSYW5nZTogUmFuZ2UgPSB0aGlzLmdldFJhbmdlT2JqZWN0KG5ld1NlbGVjdGlvbik7XG5cbiAgICAgICAgICAgIGNvbnN0IHByZUZyYWdtZW50OiBEb2N1bWVudEZyYWdtZW50ID0gcHJlUmFuZ2UuZXh0cmFjdENvbnRlbnRzKCk7XG5cbiAgICAgICAgICAgIGxldCBuZXdFbGVtZW50OiBIVE1MRWxlbWVudCA9IDxIVE1MRWxlbWVudD5wYXJlbnRDb250YWluZXIuY2xvbmVOb2RlKCk7XG4gICAgICAgICAgICBuZXdFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgbmV3RWxlbWVudC5hcHBlbmRDaGlsZChwcmVGcmFnbWVudCk7XG5cbiAgICAgICAgICAgIHBhcmVudENvbnRhaW5lci5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShjdXJyZW50RWxlbWVudFRvQXBwZW5kLCBwYXJlbnRDb250YWluZXIpO1xuICAgICAgICAgICAgcGFyZW50Q29udGFpbmVyLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKG5ld0VsZW1lbnQsIGN1cnJlbnRFbGVtZW50VG9BcHBlbmQpO1xuICAgICAgICAgICAgc2VsZWN0aW9uLnNlbGVjdEFsbENoaWxkcmVuKGN1cnJlbnRFbGVtZW50VG9BcHBlbmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2U6IFJhbmdlID0gdGhpcy5nZXRSYW5nZU9iamVjdChzZWxlY3Rpb24pO1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnQ6IERvY3VtZW50RnJhZ21lbnQgPSByYW5nZS5leHRyYWN0Q29udGVudHMoKTtcblxuICAgICAgICAgICAgbGV0IG5ld0VsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IGF3YWl0IHRoaXMuY3JlYXRlRWxlbWVudChjb250YWluZXIsIGFjdGlvbiwgY29udGFpbmVycyk7XG4gICAgICAgICAgICBuZXdFbGVtZW50LmFwcGVuZChmcmFnbWVudCk7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5jbGFzcykge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVtb3ZlQ2hpbGRyZW5DbGFzc2VzKG5ld0VsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsYXNzVG9BcHBseSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NUb0FwcGx5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5hdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZXNUb0FwcGx5LmZvckVhY2goKGF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSwgYXR0cmlidXRlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShuZXdFbGVtZW50KTtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3RBbGxDaGlsZHJlbihuZXdFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNBbmNob3JCZWZvcmVGb2N1cyhhbmNob3JOb2RlOiBOb2RlLCBhbmNob3JPZmZzZXQ6IG51bWJlciwgZm9jdXNOb2RlOiBOb2RlLCBmb2N1c09mZnNldDogbnVtYmVyKSB7XG4gICAgICAgIGxldCBhbmNob3JSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgIGxldCBmb2N1c1JhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgICAgYW5jaG9yUmFuZ2Uuc2V0U3RhcnQoYW5jaG9yTm9kZSwgYW5jaG9yT2Zmc2V0KTtcbiAgICAgICAgYW5jaG9yUmFuZ2Uuc2V0RW5kKGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7XG4gICAgICAgIGZvY3VzUmFuZ2Uuc2V0U3RhcnQoZm9jdXNOb2RlLCBmb2N1c09mZnNldCk7XG4gICAgICAgIGZvY3VzUmFuZ2Uuc2V0RW5kKGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQpO1xuICAgICAgICBpZiAoYW5jaG9yUmFuZ2UuY29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlLlNUQVJUX1RPX1NUQVJULCBmb2N1c1JhbmdlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBoYXNTdHlsZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIC8vIGZvdW5kRWxlbWVudCB3YXMgYWRkZWQgYmVjYXVzZSBvZiBhIHJldHVybiBpc3N1ZSB3aGVuIGEgY2xhc3MgaXMgYXBwbGllZFxuICAgICAgICBsZXQgZm91bmRFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGlmICghZWxlbWVudCB8fCBlbGVtZW50LmNsYXNzTGlzdD8uY29udGFpbnMoJ2NlLXBhcmFncmFwaCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5zdHlsZSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUgJiZcbiAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlW3RoaXMuc3R5bGUucHJvcGVydHldICYmXG4gICAgICAgICAgICAgICAgKHRoaXMuc3R5bGUudmFsdWUuaW5kZXhPZignJDEnKSA+IC0xID8gdHJ1ZSA6IGVsZW1lbnQuc3R5bGVbdGhpcy5zdHlsZS5wcm9wZXJ0eV0gPT09IHRoaXMuc3R5bGUudmFsdWUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3VuZEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubW9kaWZpZXMuY2xhc3MpIHtcbiAgICAgICAgICAgIHRoaXMuY2xhc3Nlcy5zcGxpdCgnLCcpLmZvckVhY2goKGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdD8uY29udGFpbnMoY2xhc3NOYW1lKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBmb3VuZEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1vZGlmaWVzLnRhZykge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQudGFnTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gdGhpcy50YWcudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubW9kaWZpZXMuYXR0cmlidXRlKSB7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlcyA9IHRoaXMuYXR0cmlidXRlTmFtZS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50LmdldEF0dHJpYnV0ZSA9PT0gJ2Z1bmN0aW9uJyAmJiBlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGVzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3VuZEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvdW5kRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGZvdW5kRWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWZvdW5kRWxlbWVudCAmJiBlbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhhc1N0eWxlKGVsZW1lbnQucGFyZW50RWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRTdHlsZVZhbHVlKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIGFjdGlvbjogc3RyaW5nLCBjb250YWluZXJzOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICAgICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0eWxlLnZhbHVlLmluZGV4T2YoJyQxJykgPiAtMSA/IHRoaXMuc3R5bGUudmFsdWUucmVwbGFjZSgnJDEnLCB0aGlzLnN0eWxlLmlucHV0KSA6IHRoaXMuc3R5bGUudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNTdHlsZShjb250YWluZXIpICYmIHRoaXMuc3R5bGUudmFsdWUuaW5kZXhPZignJDEnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0eWxlLmRlZmF1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdHlsZTogTm9kZSB8IG51bGwgPSBhd2FpdCB0aGlzLmZpbmRTdHlsZU5vZGUoY29udGFpbmVyLCBhY3Rpb24sIGNvbnRhaW5lcnMpO1xuXG4gICAgICAgIGlmICh0aGlzLmhhc1N0eWxlKHN0eWxlIGFzIEhUTUxFbGVtZW50KSAmJiB0aGlzLnN0eWxlLnZhbHVlLmluZGV4T2YoJyQxJykgPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdHlsZS5kZWZhdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3R5bGUudmFsdWUuaW5kZXhPZignJDEnKSA+IC0xID8gdGhpcy5zdHlsZS52YWx1ZS5yZXBsYWNlKCckMScsIHRoaXMuc3R5bGUuaW5wdXQpIDogdGhpcy5zdHlsZS52YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGZpbmRTdHlsZU5vZGUobm9kZTogTm9kZSwgc3R5bGU6IHN0cmluZywgY29udGFpbmVyczogc3RyaW5nKTogUHJvbWlzZTxOb2RlIHwgbnVsbD4ge1xuICAgICAgICBpZiAobm9kZS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09PSAnSFRNTCcgfHwgbm9kZS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09PSAnQk9EWScpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFub2RlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNDb250YWluZXIoY29udGFpbmVycywgbm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGFzU3R5bGU6IGJvb2xlYW4gPVxuICAgICAgICAgICAgKG5vZGUgYXMgSFRNTEVsZW1lbnQpLnN0eWxlW3N0eWxlXSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgKG5vZGUgYXMgSFRNTEVsZW1lbnQpLnN0eWxlW3N0eWxlXSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAobm9kZSBhcyBIVE1MRWxlbWVudCkuc3R5bGVbc3R5bGVdICE9PSAnJztcblxuICAgICAgICBpZiAoaGFzU3R5bGUpIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZFN0eWxlTm9kZShub2RlLnBhcmVudE5vZGUsIHN0eWxlLCBjb250YWluZXJzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNyZWF0ZUVsZW1lbnQoY29udGFpbmVyOiBIVE1MRWxlbWVudCwgYWN0aW9uOiBzdHJpbmcsIGNvbnRhaW5lcnM6IHN0cmluZyk6IFByb21pc2U8SFRNTEVsZW1lbnQ+IHtcbiAgICAgICAgbGV0IG5ld0VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLnRhZyk7XG4gICAgICAgIGlmICh0aGlzLm1vZGlmaWVzLnN0eWxlKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuc3R5bGUucHJvcGVydHk7XG4gICAgICAgICAgICBuZXdFbGVtZW50LnN0eWxlW3Byb3BlcnR5XSA9IGF3YWl0IHRoaXMuZ2V0U3R5bGVWYWx1ZShjb250YWluZXIsIGFjdGlvbiwgY29udGFpbmVycyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3RWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHJlbW92ZUNoaWxkcmVuQ2xhc3NlcyhlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuOiBIVE1MQ29sbGVjdGlvbiA9IGVsZW1lbnQuY2hpbGRyZW47XG4gICAgICAgIGZvciAodmFyIGN1cnJlbnRFbGVtZW50ID0gY2hpbGRyZW5bMF07IGN1cnJlbnRFbGVtZW50OyBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50Lm5leHRFbGVtZW50U2libGluZykge1xuICAgICAgICAgICAgdGhpcy5jbGFzc2VzLnNwbGl0KCcsJykuZm9yRWFjaCgoY2xhc3NOYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdD8uY29udGFpbnMoY2xhc3NOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdjbGFzcycpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVtb3ZlQ2hpbGRyZW5DbGFzc2VzKDxIVE1MRWxlbWVudD5jdXJyZW50RWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNsZWFudXBDb250YWluZXIoc2VsZWN0aW9uOiBTZWxlY3Rpb24sIGNvbnRhaW5lciwgZmlyc3RUaW1lQ2FsbDogQm9vbGVhbikge1xuICAgICAgICBsZXQgcGFyZW50Q29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgICAgICAgbGV0IHBhcmVudEZvdW5kOiBCb29sZWFuID0gZmFsc2U7XG4gICAgICAgIGlmIChmaXJzdFRpbWVDYWxsKSB7XG4gICAgICAgICAgICBwYXJlbnRDb250YWluZXIgPSA8SFRNTEVsZW1lbnQ+c2VsZWN0aW9uLmFuY2hvck5vZGU7XG4gICAgICAgICAgICB3aGlsZSAocGFyZW50Q29udGFpbmVyICYmICFwYXJlbnRGb3VuZCkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJlbnRDb250YWluZXIubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHBhcmVudENvbnRhaW5lci5jbGFzc0xpc3Q/LmNvbnRhaW5zKCdjZS1wYXJhZ3JhcGgnKSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29udGFpbmVyID0gcGFyZW50Q29udGFpbmVyLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyZW50Q29udGFpbmVyID0gY29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcGFyZW50Q29udGFpbmVyIHx8ICFwYXJlbnRDb250YWluZXIuaGFzQ2hpbGROb2RlcygpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBwYXJlbnRDb250YWluZXIubm9ybWFsaXplKCk7XG5cbiAgICAgICAgY29uc3QgY2hpbGRyZW46IE5vZGVbXSA9IEFycmF5LmZyb20ocGFyZW50Q29udGFpbmVyLmNoaWxkTm9kZXMpO1xuICAgICAgICBpZiAoY2hpbGRyZW4/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAodmFyIGN1cnJlbnROb2RlID0gY2hpbGRyZW5bMF07IGN1cnJlbnROb2RlOyBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnROb2RlLmNoaWxkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNsZWFudXBDb250YWluZXIoc2VsZWN0aW9uLCBjdXJyZW50Tm9kZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgaWRlbnRpY2FsRWxlbWVudHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgICAgICAgICAgaWRlbnRpY2FsRWxlbWVudHMgJiZcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE5vZGUubmV4dFNpYmxpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLm5leHRTaWJsaW5nLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudEVsZW1lbnQgPSA8RWxlbWVudD5jdXJyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5leHRFbGVtZW50ID0gPEVsZW1lbnQ+Y3VycmVudE5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaWRlbnRpY2FsSW5saW5lU3R5bGUoY3VycmVudEVsZW1lbnQsIG5leHRFbGVtZW50KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuZXh0RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaWRlbnRpY2FsQ2xhc3NMaXN0KGN1cnJlbnRFbGVtZW50LCBuZXh0RWxlbWVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICEoPEVsZW1lbnQ+Y3VycmVudEVsZW1lbnQpLmhhc0F0dHJpYnV0ZXMoKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgISg8RWxlbWVudD5uZXh0RWxlbWVudCkuaGFzQXR0cmlidXRlcygpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuaW5uZXJIVE1MICs9IG5leHRFbGVtZW50LmlubmVySFRNTDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRFbGVtZW50LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RpZmllZENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpY2FsRWxlbWVudHMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJlxuICAgICAgICAgICAgICAgICAgICAoPEVsZW1lbnQ+Y3VycmVudE5vZGUpLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NwYW4nICYmXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZ2V0SW5saW5lU3R5bGUoPEVsZW1lbnQ+Y3VycmVudE5vZGUpKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgKCEoPEVsZW1lbnQ+Y3VycmVudE5vZGUpLmNsYXNzTGlzdCB8fCAoPEVsZW1lbnQ+Y3VycmVudE5vZGUpLmNsYXNzTGlzdC5sZW5ndGggPT09IDApICYmXG4gICAgICAgICAgICAgICAgICAgICEoPEVsZW1lbnQ+Y3VycmVudE5vZGUpLmhhc0F0dHJpYnV0ZXMoKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudE5vZGVGaXJzdENoaWxkID0gY3VycmVudE5vZGU7XG5cbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnROb2RlLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICg8RWxlbWVudD5jdXJyZW50Tm9kZUZpcnN0Q2hpbGQucGFyZW50RWxlbWVudCkuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLmZpcnN0Q2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE5vZGVGaXJzdENoaWxkLm5leHRTaWJsaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE5vZGVGaXJzdENoaWxkID0gY3VycmVudE5vZGVGaXJzdENoaWxkLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICg8RWxlbWVudD5jdXJyZW50Tm9kZSkucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9kaWZpZWRDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudE5vZGUubm9ybWFsaXplKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlkZW50aWNhbENsYXNzTGlzdChjdXJyZW50RWxlbWVudCwgbmV4dEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIFsuLi5jdXJyZW50RWxlbWVudC5jbGFzc0xpc3RdLmV2ZXJ5KChjbGFzc0xpc3QpID0+IG5leHRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc0xpc3QpKSAmJlxuICAgICAgICAgICAgWy4uLm5leHRFbGVtZW50LmNsYXNzTGlzdF0uZXZlcnkoKGNsYXNzTGlzdCkgPT4gY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTGlzdCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpZGVudGljYWxJbmxpbmVTdHlsZShjdXJyZW50RWxlbWVudCwgbmV4dEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnRJbmxpbmVTdHlsZSA9IHRoaXMuZ2V0SW5saW5lU3R5bGUoY3VycmVudEVsZW1lbnQpO1xuICAgICAgICBjb25zdCBuZXh0RWxlbWVudElubGluZVN0eWxlID0gdGhpcy5nZXRJbmxpbmVTdHlsZShuZXh0RWxlbWVudCk7XG4gICAgICAgIGxldCBjdXJyZW50RWxlbWVudElubGluZVN0eWxlU29ydGVkID0gdGhpcy5zb3J0SW5saW5lU3R5bGUoY3VycmVudEVsZW1lbnRJbmxpbmVTdHlsZSk7XG4gICAgICAgIGxldCBuZXh0RWxlbWVudElubGluZVN0eWxlU29ydGVkID0gdGhpcy5zb3J0SW5saW5lU3R5bGUobmV4dEVsZW1lbnRJbmxpbmVTdHlsZSk7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShjdXJyZW50RWxlbWVudElubGluZVN0eWxlU29ydGVkKSA9PT0gSlNPTi5zdHJpbmdpZnkobmV4dEVsZW1lbnRJbmxpbmVTdHlsZVNvcnRlZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0SW5saW5lU3R5bGUoY3VycmVudEVsZW1lbnQpOiBPYmplY3Qge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY3VycmVudEVsZW1lbnQpXG4gICAgICAgICAgICAuc29ydCgoWywgYV06IGFueSwgWywgYl06IGFueSkgPT4gYSAtIGIpXG4gICAgICAgICAgICAucmVkdWNlKChyLCBbaywgdl0pID0+ICh7IC4uLnIsIFtrXTogdiB9KSwge30pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SW5saW5lU3R5bGUoY3VycmVudEVsZW1lbnQpOiBPYmplY3Qge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShjdXJyZW50RWxlbWVudC5zdHlsZSkucmVkdWNlKChzdHlsZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHN0eWxlW25hbWVdID0gY3VycmVudEVsZW1lbnQuc3R5bGVbbmFtZV07XG4gICAgICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICAgIH0sIHt9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldElubGluZVN0eWxlKGN1cnJlbnRFbGVtZW50LCBuZXh0RWxlbWVudCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnRJbmxpbmVTdHlsZTogT2JqZWN0ID0gQXJyYXkuZnJvbShjdXJyZW50RWxlbWVudC5zdHlsZSkucmVkdWNlKChzdHlsZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHN0eWxlW25hbWVdID0gY3VycmVudEVsZW1lbnQuc3R5bGVbbmFtZV07XG4gICAgICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICAgIH0sIHt9KTtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBjdXJyZW50RWxlbWVudElubGluZVN0eWxlKSB7XG4gICAgICAgICAgICBuZXh0RWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBjdXJyZW50RWxlbWVudElubGluZVN0eWxlW3Byb3BlcnR5XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0NvbnRhaW5lcihjb250YWluZXJzOiBzdHJpbmcsIG5vZGU6IE5vZGUpOiBCb29sZWFuIHtcbiAgICAgICAgaWYgKGNvbnRhaW5lcnMuc3BsaXQoJywnKS5pbmRleE9mKG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkgPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzYXZlSW5saW5lU2VsZWN0aW9uKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIGZpcnN0VGltZUNhbGw6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBpZiAoZmlyc3RUaW1lQ2FsbCkge1xuICAgICAgICAgICAgY29udGFpbmVyID0gPEhUTUxFbGVtZW50PnRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJy5jZS1wYXJhZ3JhcGgnKS5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICAgIHRoaXMuZm91bmRBbmNob3JOb2RlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmZvdW5kRm9jdXNOb2RlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmZvdW5kQW5jaG9yT2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIHRoaXMuZm91bmRGb2N1c09mZnNldCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5leHROb2RlID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICAgIHdoaWxlIChuZXh0Tm9kZSAmJiAoIXRoaXMuZm91bmRBbmNob3JOb2RlIHx8ICF0aGlzLmZvdW5kRm9jdXNOb2RlKSkge1xuICAgICAgICAgICAgaWYgKG5leHROb2RlID09PSB0aGlzLnNlbGVjdGVkQW5jaG9yTm9kZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm91bmRBbmNob3JOb2RlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvdW5kQW5jaG9yT2Zmc2V0ICs9IHRoaXMuYW5jaG9yT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIGxldCByYW5nZSA9IHRoaXMuZ2V0UmFuZ2VPYmplY3Qoc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RnJhZ21lbnQ6IERvY3VtZW50RnJhZ21lbnQgPSByYW5nZS5jbG9uZUNvbnRlbnRzKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQ6IEhUTUxTcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudC5hcHBlbmRDaGlsZChjdXJyZW50RnJhZ21lbnQpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5mb3VuZEZvY3VzT2Zmc2V0ID0gdGhpcy5mb3VuZEFuY2hvck9mZnNldCArIGN1cnJlbnRFbGVtZW50LmlubmVyVGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3VuZEZvY3VzTm9kZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5leHROb2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5mb3VuZEFuY2hvck5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3VuZEFuY2hvck9mZnNldCArPSBuZXh0Tm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5mb3VuZEZvY3VzTm9kZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvdW5kRm9jdXNPZmZzZXQgKz0gbmV4dE5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXh0Tm9kZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zYXZlSW5saW5lU2VsZWN0aW9uKDxIVE1MRWxlbWVudD5uZXh0Tm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXh0Tm9kZSA9IG5leHROb2RlLm5leHRTaWJsaW5nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZXNldElubGluZVNlbGVjdGlvbihjb250YWluZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGwsIGZpcnN0VGltZUNhbGw6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBpZiAoZmlyc3RUaW1lQ2FsbCkge1xuICAgICAgICAgICAgY29udGFpbmVyID0gPEhUTUxFbGVtZW50PnRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJy5jZS1wYXJhZ3JhcGgnKS5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICAgIHRoaXMuZm91bmRBbmNob3JOb2RlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmZvdW5kRm9jdXNOb2RlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnRtcE9mZnNldCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5leHROb2RlID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICAgIHdoaWxlIChuZXh0Tm9kZSAmJiAoIXRoaXMuZm91bmRBbmNob3JOb2RlIHx8ICF0aGlzLmZvdW5kRm9jdXNOb2RlKSkge1xuICAgICAgICAgICAgaWYgKG5leHROb2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5mb3VuZEFuY2hvck5vZGUgJiYgdGhpcy5mb3VuZEFuY2hvck9mZnNldCAtIG5leHROb2RlLnRleHRDb250ZW50Lmxlbmd0aCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3VuZEFuY2hvck5vZGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuY2hvck9mZnNldCA9IHRoaXMuZm91bmRBbmNob3JPZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBbmNob3JOb2RlID0gbmV4dE5vZGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5mb3VuZEZvY3VzTm9kZSAmJiB0aGlzLmZvdW5kRm9jdXNPZmZzZXQgLSBuZXh0Tm9kZS50ZXh0Q29udGVudC5sZW5ndGggPD0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvdW5kRm9jdXNOb2RlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c09mZnNldCA9IHRoaXMuZm91bmRGb2N1c09mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZvY3VzTm9kZSA9IG5leHROb2RlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnRtcE9mZnNldCArPSBuZXh0Tm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3VuZEFuY2hvck9mZnNldCAtPSBuZXh0Tm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3VuZEZvY3VzT2Zmc2V0IC09IG5leHROb2RlLnRleHRDb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXh0Tm9kZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXNldElubGluZVNlbGVjdGlvbig8SFRNTEVsZW1lbnQ+bmV4dE5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS5uZXh0U2libGluZztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlyc3RUaW1lQ2FsbCkge1xuICAgICAgICAgICAgdGhpcy5yZXNldFVzZXJTZWxlY3Rpb24oKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
465
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXN0eWxlLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL2JyaWFuL0RvY3VtZW50cy93b3Jrc3BhY2Uvd2l6aS1ibG9jay9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvY29tcG9uZW50cy9lZGl0b3Jqcy90b29scy9pbmxpbmUvdG9vbC10eXBlL2lubGluZS1zdHlsZS10b29sLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFtQixZQUFZLEVBQWUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVqRyxNQUFNLE9BQWdCLGVBQWdCLFNBQVEsWUFBWTtJQUExRDs7UUFHSSxlQUFVLEdBQUcsd0JBQXdCLENBQUM7UUFFdEMsY0FBUyxHQUFHLFdBQVcsQ0FBQztRQUl4QixzQkFBaUIsR0FBVyxDQUFDLENBQUM7UUFFOUIscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBRTdCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBRWpDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFNdEIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFNakMsYUFBUSxHQUFHO1lBQ1AsR0FBRyxFQUFFLEtBQUs7WUFDVixLQUFLLEVBQUUsS0FBSztZQUNaLEtBQUssRUFBRSxLQUFLO1lBQ1osU0FBUyxFQUFFLEtBQUs7U0FDbkIsQ0FBQztJQWllTixDQUFDO0lBL2RTLGdCQUFnQixDQUFDLE1BQWM7O1lBQ2pDLE1BQU0sU0FBUyxHQUFxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hHLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ1osT0FBTzthQUNWO1lBQ0QsTUFBTSxVQUFVLEdBQVMsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUM5QyxJ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R0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7d0JBQ2xGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO3dCQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQzt3QkFDekMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztxQkFDckM7b0JBQ0QsSUFBSSxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztvQkFDOUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO29CQUN0RCxJQUFJLENBQUMsZ0JBQWdCLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7aUJBQ3hEO2dCQUNELElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRTtvQkFDckIsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQWMsUUFBUSxDQUFDLENBQUM7aUJBQzFEO2dCQUNELFFBQVEsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO2FBQ25DO1lBQ0QsSUFBSSxhQUFhLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDN0I7UUFDTCxDQUFDO0tBQUE7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZU9iamVjdCwgRWRpdG9ySlNUb29sLCBTdHlsZU9iamVjdCB9IGZyb20gJy4uLy4uL3V0aWxzL2VkaXRvcmpzLXRvb2wuY29tcG9uZW50JztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIElubGluZVN0eWxlVG9vbCBleHRlbmRzIEVkaXRvckpTVG9vbCB7XG4gICAgdGFnOiBzdHJpbmc7XG5cbiAgICBjb250YWluZXJzID0gJ2gxLGgyLGgzLGg0LGg1LGg2LHAsbGknO1xuXG4gICAgbW9kaWZpZXJzID0gJ3N0cm9uZyxlbSc7XG5cbiAgICBzdHlsZT86IFN0eWxlT2JqZWN0O1xuXG4gICAgZm91bmRBbmNob3JPZmZzZXQ6IG51bWJlciA9IDA7XG5cbiAgICBmb3VuZEZvY3VzT2Zmc2V0OiBudW1iZXIgPSAwO1xuXG4gICAgZm91bmRBbmNob3JOb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBmb3VuZEZvY3VzTm9kZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgdG1wT2Zmc2V0OiBudW1iZXIgPSAwO1xuXG4gICAgY2xhc3NUb0FwcGx5Pzogc3RyaW5nO1xuXG4gICAgY2xhc3Nlcz86IHN0cmluZztcblxuICAgIG1vZGlmaWVkQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgYXR0cmlidXRlTmFtZT86IHN0cmluZztcblxuICAgIGF0dHJpYnV0ZXNUb0FwcGx5PzogQXJyYXk8QXR0cmlidXRlT2JqZWN0PjtcblxuICAgIG1vZGlmaWVzID0ge1xuICAgICAgICB0YWc6IGZhbHNlLFxuICAgICAgICBzdHlsZTogZmFsc2UsXG4gICAgICAgIGNsYXNzOiBmYWxzZSxcbiAgICAgICAgYXR0cmlidXRlOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgYXN5bmMgZXhlY0NvbW1hbmRTdHlsZShhY3Rpb246IHN0cmluZykge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb246IFNlbGVjdGlvbiB8IG51bGwgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gPyB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gOiB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgICAgICBpZiAoIXNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFuY2hvck5vZGU6IE5vZGUgPSBzZWxlY3Rpb24uYW5jaG9yTm9kZTtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudEVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRFZGl0b3IgPSB0aGlzLmZpbmRQYXJlbnRFZGl0b3IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghYW5jaG9yTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb250YWluZXI6IEhUTUxFbGVtZW50ID1cbiAgICAgICAgICAgIGFuY2hvck5vZGUubm9kZVR5cGUgIT09IE5vZGUuVEVYVF9OT0RFICYmIGFuY2hvck5vZGUubm9kZVR5cGUgIT09IE5vZGUuQ09NTUVOVF9OT0RFXG4gICAgICAgICAgICAgICAgPyAoYW5jaG9yTm9kZSBhcyBIVE1MRWxlbWVudClcbiAgICAgICAgICAgICAgICA6IGFuY2hvck5vZGUucGFyZW50RWxlbWVudDtcbiAgICAgICAgY29uc3Qgc2FtZVNlbGVjdGlvbjogYm9vbGVhbiA9IGNvbnRhaW5lciAmJiBjb250YWluZXIuaW5uZXJUZXh0ID09PSBzZWxlY3Rpb24udG9TdHJpbmcoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlSW5saW5lU2VsZWN0aW9uKGNvbnRhaW5lciwgdHJ1ZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHNhbWVTZWxlY3Rpb24gJiZcbiAgICAgICAgICAgICF0aGlzLmlzQ29udGFpbmVyKHRoaXMuY29udGFpbmVycywgY29udGFpbmVyKSAmJlxuICAgICAgICAgICAgdGhpcy5oYXNTdHlsZShjb250YWluZXIpICYmXG4gICAgICAgICAgICBzZWxlY3Rpb24udG9TdHJpbmcoKSA9PT0gdGhpcy5oYXNTdHlsZShjb250YWluZXIpLmlubmVyVGV4dFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd1cGRhdGUnKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlU2VsZWN0aW9uKHNlbGVjdGlvbiwgdGhpcy5oYXNTdHlsZShjb250YWluZXIpLCBhY3Rpb24sIHRoaXMuY29udGFpbmVycyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygncmVwbGFjZScpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXBsYWNlU2VsZWN0aW9uKGNvbnRhaW5lciwgYWN0aW9uLCBzZWxlY3Rpb24sIHRoaXMuY29udGFpbmVycyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5jbGVhbnVwQ29udGFpbmVyKHNlbGVjdGlvbiwgY29udGFpbmVyLCB0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMubW9kaWZpZWRDb250ZW50KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlc2V0SW5saW5lU2VsZWN0aW9uKGNvbnRhaW5lciwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHVwZGF0ZVNlbGVjdGlvbihzZWxlY3Rpb246IFNlbGVjdGlvbiwgY29udGFpbmVyOiBIVE1MRWxlbWVudCwgYWN0aW9uOiBzdHJpbmcsIGNvbnRhaW5lcnM6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5zdHlsZSkge1xuICAgICAgICAgICAgY29uc3QgY3NzID0gdGhpcy5zdHlsZS5wcm9wZXJ0eTtcbiAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZVtjc3NdID0gYXdhaXQgdGhpcy5nZXRTdHlsZVZhbHVlKGNvbnRhaW5lciwgYWN0aW9uLCBjb250YWluZXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlOiBSYW5nZSA9IHRoaXMuZ2V0UmFuZ2VPYmplY3Qoc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIGxldCBuZXdFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLmhhc1N0eWxlKGNvbnRhaW5lcikgPyAnc3BhbicgOiB0aGlzLnRhZyk7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5jbGFzcykge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVtb3ZlQ2hpbGRyZW5DbGFzc2VzKG5ld0VsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsYXNzVG9BcHBseSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NUb0FwcGx5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5hdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZXNUb0FwcGx5LmZvckVhY2goKGF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSwgYXR0cmlidXRlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld0VsZW1lbnQgPSB0aGlzLnNldElubGluZVN0eWxlKGNvbnRhaW5lciwgbmV3RWxlbWVudCk7XG5cbiAgICAgICAgICAgIHdoaWxlIChjb250YWluZXIuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIGxldCBlbGVtZW50Q2xvbmUgPSBjb250YWluZXIuZmlyc3RDaGlsZC5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5hcHBlbmRDaGlsZChlbGVtZW50Q2xvbmUpO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maXJzdENoaWxkLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb250YWluZXIucGFyZW50RWxlbWVudC5yZXBsYWNlQ2hpbGQobmV3RWxlbWVudCwgY29udGFpbmVyKTtcblxuICAgICAgICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShuZXdFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcmVwbGFjZVNlbGVjdGlvbihjb250YWluZXI6IEhUTUxFbGVtZW50LCBhY3Rpb246IHN0cmluZywgc2VsZWN0aW9uOiBTZWxlY3Rpb24sIGNvbnRhaW5lcnM6IHN0cmluZykge1xuICAgICAgICBsZXQgcGFyZW50Q29udGFpbmVyID0gdGhpcy5oYXNTdHlsZShjb250YWluZXIpO1xuXG4gICAgICAgIGNvbnN0IGZvY3VzTm9kZTogTm9kZSA9IHNlbGVjdGlvbi5mb2N1c05vZGU7XG4gICAgICAgIGxldCBvZmZzZXRDb250YWluZXI6IEhUTUxFbGVtZW50ID1cbiAgICAgICAgICAgIGZvY3VzTm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5URVhUX05PREUgJiYgZm9jdXNOb2RlLm5vZGVUeXBlICE9PSBOb2RlLkNPTU1FTlRfTk9ERVxuICAgICAgICAgICAgICAgID8gKGZvY3VzTm9kZSBhcyBIVE1MRWxlbWVudClcbiAgICAgICAgICAgICAgICA6IGZvY3VzTm9kZS5wYXJlbnRFbGVtZW50O1xuICAgICAgICBsZXQgb2Zmc2V0UGFyZW50Q29udGFpbmVyID0gdGhpcy5oYXNTdHlsZShvZmZzZXRDb250YWluZXIpO1xuICAgICAgICBpZiAocGFyZW50Q29udGFpbmVyICYmIHBhcmVudENvbnRhaW5lciA9PT0gb2Zmc2V0UGFyZW50Q29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZTogUmFuZ2UgPSB0aGlzLmdldFJhbmdlT2JqZWN0KHNlbGVjdGlvbik7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RnJhZ21lbnQ6IERvY3VtZW50RnJhZ21lbnQgPSByYW5nZS5leHRyYWN0Q29udGVudHMoKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50OiBIVE1MU3BhbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICBjdXJyZW50RWxlbWVudC5hcHBlbmRDaGlsZChjdXJyZW50RnJhZ21lbnQpO1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kaWZpZXMuc3R5bGUgJiYgdGhpcy5zdHlsZS52YWx1ZS5pbmRleE9mKCckMScpID4gLTEpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudC5zdHlsZVt0aGlzLnN0eWxlLnByb3BlcnR5XSA9IHRoaXMuc3R5bGUudmFsdWUucmVwbGFjZSgnJDEnLCB0aGlzLnN0eWxlLmlucHV0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGlmaWVzLmNsYXNzKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZW1vdmVDaGlsZHJlbkNsYXNzZXMoY3VycmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsYXNzVG9BcHBseSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzVG9BcHBseSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMubW9kaWZpZXMuYXR0cmlidXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVzVG9BcHBseS5mb3JFYWNoKChhdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lLCBhdHRyaWJ1dGUudmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGN1cnJlbnRFbGVtZW50VG9BcHBlbmQgPSBjdXJyZW50RWxlbWVudDtcbiAgICAgICAgICAgIGxldCBjdXJyZW50UGFyZW50RWxlbWVudCA9IGNvbnRhaW5lcjtcbiAgICAgICAgICAgIHdoaWxlIChjdXJyZW50UGFyZW50RWxlbWVudCAhPT0gcGFyZW50Q29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRtcEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGN1cnJlbnRQYXJlbnRFbGVtZW50LnRhZ05hbWUpO1xuICAgICAgICAgICAgICAgIHRtcEVsZW1lbnQgPSB0aGlzLnNldElubGluZVN0eWxlKGN1cnJlbnRQYXJlbnRFbGVtZW50LCB0bXBFbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIHRtcEVsZW1lbnQuYXBwZW5kQ2hpbGQoY3VycmVudEVsZW1lbnRUb0FwcGVuZCk7XG4gICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnRUb0FwcGVuZCA9IHRtcEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhcmVudEVsZW1lbnQgPSBjdXJyZW50UGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpc0xUUiA9IHRoaXMuaXNBbmNob3JCZWZvcmVGb2N1cyhcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24uYW5jaG9yTm9kZSxcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0LFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5mb2N1c05vZGUsXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uLmZvY3VzT2Zmc2V0XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBsZXQgc2VsZWN0aW9uRm9jdXNPZmZzZXQgPSBpc0xUUiA/IHNlbGVjdGlvbi5hbmNob3JPZmZzZXQgOiBzZWxlY3Rpb24uZm9jdXNPZmZzZXQ7XG4gICAgICAgICAgICBsZXQgc2VsZWN0aW9uRm9jdXNOb2RlID0gaXNMVFIgPyBzZWxlY3Rpb24uYW5jaG9yTm9kZSA6IHNlbGVjdGlvbi5mb2N1c05vZGU7XG5cbiAgICAgICAgICAgIGRvY3VtZW50LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQocGFyZW50Q29udGFpbmVyLCAwLCBzZWxlY3Rpb25Gb2N1c05vZGUsIHNlbGVjdGlvbkZvY3VzT2Zmc2V0KTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICBsZXQgcHJlUmFuZ2U6IFJhbmdlID0gdGhpcy5nZXRSYW5nZU9iamVjdChuZXdTZWxlY3Rpb24pO1xuXG4gICAgICAgICAgICBjb25zdCBwcmVGcmFnbWVudDogRG9jdW1lbnRGcmFnbWVudCA9IHByZVJhbmdlLmV4dHJhY3RDb250ZW50cygpO1xuXG4gICAgICAgICAgICBsZXQgbmV3RWxlbWVudDogSFRNTEVsZW1lbnQgPSA8SFRNTEVsZW1lbnQ+cGFyZW50Q29udGFpbmVyLmNsb25lTm9kZSgpO1xuICAgICAgICAgICAgbmV3RWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuYXBwZW5kQ2hpbGQocHJlRnJhZ21lbnQpO1xuXG4gICAgICAgICAgICBwYXJlbnRDb250YWluZXIucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUoY3VycmVudEVsZW1lbnRUb0FwcGVuZCwgcGFyZW50Q29udGFpbmVyKTtcbiAgICAgICAgICAgIHBhcmVudENvbnRhaW5lci5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShuZXdFbGVtZW50LCBjdXJyZW50RWxlbWVudFRvQXBwZW5kKTtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3RBbGxDaGlsZHJlbihjdXJyZW50RWxlbWVudFRvQXBwZW5kKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlOiBSYW5nZSA9IHRoaXMuZ2V0UmFuZ2VPYmplY3Qoc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50OiBEb2N1bWVudEZyYWdtZW50ID0gcmFuZ2UuZXh0cmFjdENvbnRlbnRzKCk7XG5cbiAgICAgICAgICAgIGxldCBuZXdFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBhd2FpdCB0aGlzLmNyZWF0ZUVsZW1lbnQoY29udGFpbmVyLCBhY3Rpb24sIGNvbnRhaW5lcnMpO1xuICAgICAgICAgICAgbmV3RWxlbWVudC5hcHBlbmQoZnJhZ21lbnQpO1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kaWZpZXMuY2xhc3MpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlbW92ZUNoaWxkcmVuQ2xhc3NlcyhuZXdFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jbGFzc1RvQXBwbHkgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzVG9BcHBseSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMubW9kaWZpZXMuYXR0cmlidXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVzVG9BcHBseS5mb3JFYWNoKChhdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUsIGF0dHJpYnV0ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJhbmdlLmluc2VydE5vZGUobmV3RWxlbWVudCk7XG4gICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0QWxsQ2hpbGRyZW4obmV3RWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQW5jaG9yQmVmb3JlRm9jdXMoYW5jaG9yTm9kZTogTm9kZSwgYW5jaG9yT2Zmc2V0OiBudW1iZXIsIGZvY3VzTm9kZTogTm9kZSwgZm9jdXNPZmZzZXQ6IG51bWJlcikge1xuICAgICAgICBsZXQgYW5jaG9yUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgICBsZXQgZm9jdXNSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgIGFuY2hvclJhbmdlLnNldFN0YXJ0KGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7XG4gICAgICAgIGFuY2hvclJhbmdlLnNldEVuZChhbmNob3JOb2RlLCBhbmNob3JPZmZzZXQpO1xuICAgICAgICBmb2N1c1JhbmdlLnNldFN0YXJ0KGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQpO1xuICAgICAgICBmb2N1c1JhbmdlLnNldEVuZChmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KTtcbiAgICAgICAgaWYgKGFuY2hvclJhbmdlLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5TVEFSVF9UT19TVEFSVCwgZm9jdXNSYW5nZSkgPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaGFzU3R5bGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgICAgICAvLyBmb3VuZEVsZW1lbnQgd2FzIGFkZGVkIGJlY2F1c2Ugb2YgYSByZXR1cm4gaXNzdWUgd2hlbiBhIGNsYXNzIGlzIGFwcGxpZWRcbiAgICAgICAgbGV0IGZvdW5kRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgICAgICBpZiAoIWVsZW1lbnQgfHwgZWxlbWVudC5jbGFzc0xpc3Q/LmNvbnRhaW5zKCdjZS1wYXJhZ3JhcGgnKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubW9kaWZpZXMuc3R5bGUpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlICYmXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZVt0aGlzLnN0eWxlLnByb3BlcnR5XSAmJlxuICAgICAgICAgICAgICAgICh0aGlzLnN0eWxlLnZhbHVlLmluZGV4T2YoJyQxJykgPiAtMSA/IHRydWUgOiBlbGVtZW50LnN0eWxlW3RoaXMuc3R5bGUucHJvcGVydHldID09PSB0aGlzLnN0eWxlLnZhbHVlKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm91bmRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1vZGlmaWVzLmNsYXNzKSB7XG4gICAgICAgICAgICB0aGlzLmNsYXNzZXMuc3BsaXQoJywnKS5mb3JFYWNoKChjbGFzc05hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3Q/LmNvbnRhaW5zKGNsYXNzTmFtZSkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZm91bmRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RpZmllcy50YWcpIHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50LnRhZ05hbWU/LnRvTG93ZXJDYXNlKCkgPT09IHRoaXMudGFnLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1vZGlmaWVzLmF0dHJpYnV0ZSkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZU5hbWUuc3BsaXQoJywnKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZWxlbWVudC5nZXRBdHRyaWJ1dGUgPT09ICdmdW5jdGlvbicgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZm91bmRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmb3VuZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3VuZEVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFmb3VuZEVsZW1lbnQgJiYgZWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oYXNTdHlsZShlbGVtZW50LnBhcmVudEVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0U3R5bGVWYWx1ZShjb250YWluZXI6IEhUTUxFbGVtZW50LCBhY3Rpb246IHN0cmluZywgY29udGFpbmVyczogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdHlsZS52YWx1ZS5pbmRleE9mKCckMScpID4gLTEgPyB0aGlzLnN0eWxlLnZhbHVlLnJlcGxhY2UoJyQxJywgdGhpcy5zdHlsZS5pbnB1dCkgOiB0aGlzLnN0eWxlLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzU3R5bGUoY29udGFpbmVyKSAmJiB0aGlzLnN0eWxlLnZhbHVlLmluZGV4T2YoJyQxJykgPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdHlsZS5kZWZhdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3R5bGU6IE5vZGUgfCBudWxsID0gYXdhaXQgdGhpcy5maW5kU3R5bGVOb2RlKGNvbnRhaW5lciwgYWN0aW9uLCBjb250YWluZXJzKTtcblxuICAgICAgICBpZiAodGhpcy5oYXNTdHlsZShzdHlsZSBhcyBIVE1MRWxlbWVudCkgJiYgdGhpcy5zdHlsZS52YWx1ZS5pbmRleE9mKCckMScpID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3R5bGUuZGVmYXVsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnN0eWxlLnZhbHVlLmluZGV4T2YoJyQxJykgPiAtMSA/IHRoaXMuc3R5bGUudmFsdWUucmVwbGFjZSgnJDEnLCB0aGlzLnN0eWxlLmlucHV0KSA6IHRoaXMuc3R5bGUudmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBmaW5kU3R5bGVOb2RlKG5vZGU6IE5vZGUsIHN0eWxlOiBzdHJpbmcsIGNvbnRhaW5lcnM6IHN0cmluZyk6IFByb21pc2U8Tm9kZSB8IG51bGw+IHtcbiAgICAgICAgaWYgKG5vZGUubm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PT0gJ0hUTUwnIHx8IG5vZGUubm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PT0gJ0JPRFknKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQ29udGFpbmVyKGNvbnRhaW5lcnMsIG5vZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhhc1N0eWxlOiBib29sZWFuID1cbiAgICAgICAgICAgIChub2RlIGFzIEhUTUxFbGVtZW50KS5zdHlsZVtzdHlsZV0gIT09IG51bGwgJiZcbiAgICAgICAgICAgIChub2RlIGFzIEhUTUxFbGVtZW50KS5zdHlsZVtzdHlsZV0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgKG5vZGUgYXMgSFRNTEVsZW1lbnQpLnN0eWxlW3N0eWxlXSAhPT0gJyc7XG5cbiAgICAgICAgaWYgKGhhc1N0eWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbmRTdHlsZU5vZGUobm9kZS5wYXJlbnROb2RlLCBzdHlsZSwgY29udGFpbmVycyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjcmVhdGVFbGVtZW50KGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIGFjdGlvbjogc3RyaW5nLCBjb250YWluZXJzOiBzdHJpbmcpOiBQcm9taXNlPEhUTUxFbGVtZW50PiB7XG4gICAgICAgIGxldCBuZXdFbGVtZW50OiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy50YWcpO1xuICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5zdHlsZSkge1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLnN0eWxlLnByb3BlcnR5O1xuICAgICAgICAgICAgbmV3RWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBhd2FpdCB0aGlzLmdldFN0eWxlVmFsdWUoY29udGFpbmVyLCBhY3Rpb24sIGNvbnRhaW5lcnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ld0VsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZW1vdmVDaGlsZHJlbkNsYXNzZXMoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjaGlsZHJlbjogSFRNTENvbGxlY3Rpb24gPSBlbGVtZW50LmNoaWxkcmVuO1xuICAgICAgICBmb3IgKHZhciBjdXJyZW50RWxlbWVudCA9IGNoaWxkcmVuWzBdOyBjdXJyZW50RWxlbWVudDsgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuY2xhc3Nlcy5zcGxpdCgnLCcpLmZvckVhY2goKGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5jbGFzc0xpc3Q/LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlbW92ZUNoaWxkcmVuQ2xhc3Nlcyg8SFRNTEVsZW1lbnQ+Y3VycmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjbGVhbnVwQ29udGFpbmVyKHNlbGVjdGlvbjogU2VsZWN0aW9uLCBjb250YWluZXIsIGZpcnN0VGltZUNhbGw6IEJvb2xlYW4pIHtcbiAgICAgICAgbGV0IHBhcmVudENvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XG4gICAgICAgIGxldCBwYXJlbnRGb3VuZDogQm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBpZiAoZmlyc3RUaW1lQ2FsbCkge1xuICAgICAgICAgICAgcGFyZW50Q29udGFpbmVyID0gPEhUTUxFbGVtZW50PnNlbGVjdGlvbi5hbmNob3JOb2RlO1xuICAgICAgICAgICAgd2hpbGUgKHBhcmVudENvbnRhaW5lciAmJiAhcGFyZW50Rm91bmQpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50Q29udGFpbmVyLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBwYXJlbnRDb250YWluZXIuY2xhc3NMaXN0Py5jb250YWlucygnY2UtcGFyYWdyYXBoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Rm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudENvbnRhaW5lciA9IHBhcmVudENvbnRhaW5lci5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcmVudENvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXBhcmVudENvbnRhaW5lciB8fCAhcGFyZW50Q29udGFpbmVyLmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFyZW50Q29udGFpbmVyLm5vcm1hbGl6ZSgpO1xuXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuOiBOb2RlW10gPSBBcnJheS5mcm9tKHBhcmVudENvbnRhaW5lci5jaGlsZE5vZGVzKTtcbiAgICAgICAgaWYgKGNoaWxkcmVuPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBjdXJyZW50Tm9kZSA9IGNoaWxkcmVuWzBdOyBjdXJyZW50Tm9kZTsgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jbGVhbnVwQ29udGFpbmVyKHNlbGVjdGlvbiwgY3VycmVudE5vZGUsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGlkZW50aWNhbEVsZW1lbnRzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgICAgICAgICAgIGlkZW50aWNhbEVsZW1lbnRzICYmXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLm5leHRTaWJsaW5nICYmXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJlxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZS5uZXh0U2libGluZy5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREVcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gPEVsZW1lbnQ+Y3VycmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXh0RWxlbWVudCA9IDxFbGVtZW50PmN1cnJlbnROb2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlkZW50aWNhbElubGluZVN0eWxlKGN1cnJlbnRFbGVtZW50LCBuZXh0RWxlbWVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmV4dEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlkZW50aWNhbENsYXNzTGlzdChjdXJyZW50RWxlbWVudCwgbmV4dEVsZW1lbnQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhKDxFbGVtZW50PmN1cnJlbnRFbGVtZW50KS5oYXNBdHRyaWJ1dGVzKCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICEoPEVsZW1lbnQ+bmV4dEVsZW1lbnQpLmhhc0F0dHJpYnV0ZXMoKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LmlubmVySFRNTCArPSBuZXh0RWxlbWVudC5pbm5lckhUTUw7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0RWxlbWVudC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9kaWZpZWRDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWNhbEVsZW1lbnRzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiZcbiAgICAgICAgICAgICAgICAgICAgKDxFbGVtZW50PmN1cnJlbnROb2RlKS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzcGFuJyAmJlxuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmdldElubGluZVN0eWxlKDxFbGVtZW50PmN1cnJlbnROb2RlKSkubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICAgICAgICAgICghKDxFbGVtZW50PmN1cnJlbnROb2RlKS5jbGFzc0xpc3QgfHwgKDxFbGVtZW50PmN1cnJlbnROb2RlKS5jbGFzc0xpc3QubGVuZ3RoID09PSAwKSAmJlxuICAgICAgICAgICAgICAgICAgICAhKDxFbGVtZW50PmN1cnJlbnROb2RlKS5oYXNBdHRyaWJ1dGVzKClcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnROb2RlRmlyc3RDaGlsZCA9IGN1cnJlbnROb2RlO1xuXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAoPEVsZW1lbnQ+Y3VycmVudE5vZGVGaXJzdENoaWxkLnBhcmVudEVsZW1lbnQpLmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZS5maXJzdENoaWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlRmlyc3RDaGlsZC5uZXh0U2libGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlRmlyc3RDaGlsZCA9IGN1cnJlbnROb2RlRmlyc3RDaGlsZC5uZXh0U2libGluZztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAoPEVsZW1lbnQ+Y3VycmVudE5vZGUpLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGlmaWVkQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLm5vcm1hbGl6ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpZGVudGljYWxDbGFzc0xpc3QoY3VycmVudEVsZW1lbnQsIG5leHRFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBbLi4uY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0XS5ldmVyeSgoY2xhc3NMaXN0KSA9PiBuZXh0RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NMaXN0KSkgJiZcbiAgICAgICAgICAgIFsuLi5uZXh0RWxlbWVudC5jbGFzc0xpc3RdLmV2ZXJ5KChjbGFzc0xpc3QpID0+IGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc0xpc3QpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaWRlbnRpY2FsSW5saW5lU3R5bGUoY3VycmVudEVsZW1lbnQsIG5leHRFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50SW5saW5lU3R5bGUgPSB0aGlzLmdldElubGluZVN0eWxlKGN1cnJlbnRFbGVtZW50KTtcbiAgICAgICAgY29uc3QgbmV4dEVsZW1lbnRJbmxpbmVTdHlsZSA9IHRoaXMuZ2V0SW5saW5lU3R5bGUobmV4dEVsZW1lbnQpO1xuICAgICAgICBsZXQgY3VycmVudEVsZW1lbnRJbmxpbmVTdHlsZVNvcnRlZCA9IHRoaXMuc29ydElubGluZVN0eWxlKGN1cnJlbnRFbGVtZW50SW5saW5lU3R5bGUpO1xuICAgICAgICBsZXQgbmV4dEVsZW1lbnRJbmxpbmVTdHlsZVNvcnRlZCA9IHRoaXMuc29ydElubGluZVN0eWxlKG5leHRFbGVtZW50SW5saW5lU3R5bGUpO1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoY3VycmVudEVsZW1lbnRJbmxpbmVTdHlsZVNvcnRlZCkgPT09IEpTT04uc3RyaW5naWZ5KG5leHRFbGVtZW50SW5saW5lU3R5bGVTb3J0ZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydElubGluZVN0eWxlKGN1cnJlbnRFbGVtZW50KTogT2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGN1cnJlbnRFbGVtZW50KVxuICAgICAgICAgICAgLnNvcnQoKFssIGFdOiBhbnksIFssIGJdOiBhbnkpID0+IGEgLSBiKVxuICAgICAgICAgICAgLnJlZHVjZSgociwgW2ssIHZdKSA9PiAoeyAuLi5yLCBba106IHYgfSksIHt9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldElubGluZVN0eWxlKGN1cnJlbnRFbGVtZW50KTogT2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oY3VycmVudEVsZW1lbnQuc3R5bGUpLnJlZHVjZSgoc3R5bGU6IHN0cmluZywgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBzdHlsZVtuYW1lXSA9IGN1cnJlbnRFbGVtZW50LnN0eWxlW25hbWVdO1xuICAgICAgICAgICAgcmV0dXJuIHN0eWxlO1xuICAgICAgICB9LCB7fSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbmxpbmVTdHlsZShjdXJyZW50RWxlbWVudCwgbmV4dEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50SW5saW5lU3R5bGU6IE9iamVjdCA9IEFycmF5LmZyb20oY3VycmVudEVsZW1lbnQuc3R5bGUpLnJlZHVjZSgoc3R5bGU6IHN0cmluZywgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBzdHlsZVtuYW1lXSA9IGN1cnJlbnRFbGVtZW50LnN0eWxlW25hbWVdO1xuICAgICAgICAgICAgcmV0dXJuIHN0eWxlO1xuICAgICAgICB9LCB7fSk7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gY3VycmVudEVsZW1lbnRJbmxpbmVTdHlsZSkge1xuICAgICAgICAgICAgbmV4dEVsZW1lbnQuc3R5bGVbcHJvcGVydHldID0gY3VycmVudEVsZW1lbnRJbmxpbmVTdHlsZVtwcm9wZXJ0eV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5leHRFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNDb250YWluZXIoY29udGFpbmVyczogc3RyaW5nLCBub2RlOiBOb2RlKTogQm9vbGVhbiB7XG4gICAgICAgIGlmIChjb250YWluZXJzLnNwbGl0KCcsJykuaW5kZXhPZihub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2F2ZUlubGluZVNlbGVjdGlvbihjb250YWluZXI6IEhUTUxFbGVtZW50LCBmaXJzdFRpbWVDYWxsOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGZpcnN0VGltZUNhbGwpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lciA9IDxIVE1MRWxlbWVudD50aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yKCcuY2UtcGFyYWdyYXBoJykuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgICAgICB0aGlzLmZvdW5kQW5jaG9yTm9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5mb3VuZEZvY3VzTm9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5mb3VuZEFuY2hvck9mZnNldCA9IDA7XG4gICAgICAgICAgICB0aGlzLmZvdW5kRm9jdXNPZmZzZXQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGxldCBuZXh0Tm9kZSA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgICB3aGlsZSAobmV4dE5vZGUgJiYgKCF0aGlzLmZvdW5kQW5jaG9yTm9kZSB8fCAhdGhpcy5mb3VuZEZvY3VzTm9kZSkpIHtcbiAgICAgICAgICAgIGlmIChuZXh0Tm9kZSA9PT0gdGhpcy5zZWxlY3RlZEFuY2hvck5vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvdW5kQW5jaG9yTm9kZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3VuZEFuY2hvck9mZnNldCArPSB0aGlzLmFuY2hvck9mZnNldDtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSB0aGlzLmdldFJhbmdlT2JqZWN0KHNlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEZyYWdtZW50OiBEb2N1bWVudEZyYWdtZW50ID0gcmFuZ2UuY2xvbmVDb250ZW50cygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50OiBIVE1MU3BhbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY3VycmVudEZyYWdtZW50KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZm91bmRGb2N1c09mZnNldCA9IHRoaXMuZm91bmRBbmNob3JPZmZzZXQgKyBjdXJyZW50RWxlbWVudC5pbm5lclRleHQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRoaXMuZm91bmRGb2N1c05vZGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXh0Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZm91bmRBbmNob3JOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm91bmRBbmNob3JPZmZzZXQgKz0gbmV4dE5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZm91bmRGb2N1c05vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3VuZEZvY3VzT2Zmc2V0ICs9IG5leHROb2RlLnRleHRDb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmV4dE5vZGUuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2F2ZUlubGluZVNlbGVjdGlvbig8SFRNTEVsZW1lbnQ+bmV4dE5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS5uZXh0U2libGluZztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcmVzZXRJbmxpbmVTZWxlY3Rpb24oY29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsLCBmaXJzdFRpbWVDYWxsOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGZpcnN0VGltZUNhbGwpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lciA9IDxIVE1MRWxlbWVudD50aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yKCcuY2UtcGFyYWdyYXBoJykuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgICAgICB0aGlzLmZvdW5kQW5jaG9yTm9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5mb3VuZEZvY3VzTm9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50bXBPZmZzZXQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGxldCBuZXh0Tm9kZSA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgICB3aGlsZSAobmV4dE5vZGUgJiYgKCF0aGlzLmZvdW5kQW5jaG9yTm9kZSB8fCAhdGhpcy5mb3VuZEZvY3VzTm9kZSkpIHtcbiAgICAgICAgICAgIGlmIChuZXh0Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZm91bmRBbmNob3JOb2RlICYmIHRoaXMuZm91bmRBbmNob3JPZmZzZXQgLSBuZXh0Tm9kZS50ZXh0Q29udGVudC5sZW5ndGggPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm91bmRBbmNob3JOb2RlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmNob3JPZmZzZXQgPSB0aGlzLmZvdW5kQW5jaG9yT2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQW5jaG9yTm9kZSA9IG5leHROb2RlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZm91bmRGb2N1c05vZGUgJiYgdGhpcy5mb3VuZEZvY3VzT2Zmc2V0IC0gbmV4dE5vZGUudGV4dENvbnRlbnQubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3VuZEZvY3VzTm9kZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNPZmZzZXQgPSB0aGlzLmZvdW5kRm9jdXNPZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGb2N1c05vZGUgPSBuZXh0Tm9kZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy50bXBPZmZzZXQgKz0gbmV4dE5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRoaXMuZm91bmRBbmNob3JPZmZzZXQgLT0gbmV4dE5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRoaXMuZm91bmRGb2N1c09mZnNldCAtPSBuZXh0Tm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmV4dE5vZGUuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVzZXRJbmxpbmVTZWxlY3Rpb24oPEhUTUxFbGVtZW50Pm5leHROb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHROb2RlID0gbmV4dE5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpcnN0VGltZUNhbGwpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -100,4 +100,4 @@ export class InlineTextTool extends InlineStyleTool {
100
100
  return currentElement;
101
101
  }
102
102
  }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9wYXVsaW5lL0RvY3VtZW50cy93b3Jrc3BhY2Uvd2l6aS1ibG9jay9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvY29tcG9uZW50cy9lZGl0b3Jqcy90b29scy9pbmxpbmUvdG9vbC10eXBlL3RleHQtdG9vbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWhFLE1BQU0sT0FBZ0IsY0FBZSxTQUFRLGVBQWU7SUFBNUQ7O1FBR0ksbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFJaEMsdUJBQWtCLEdBQVMsSUFBSSxDQUFDO1FBRWhDLHNCQUFpQixHQUFTLElBQUksQ0FBQztRQUUvQixpQkFBWSxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBRTFCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFNekIsZ0JBQVcsR0FBVztZQUNsQixTQUFTLEVBQUUseUJBQXlCO1lBQ3BDLEdBQUcsRUFBRSw4QkFBOEI7U0FDdEMsQ0FBQztJQStGTixDQUFDO0lBN0ZHLFlBQVk7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQy9DO1FBQ0QsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksUUFBUSxFQUFFO1lBQ1YsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDekIsUUFBUyxDQUFD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Q0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakY7UUFDRCxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUM5RSxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxFQUFFO2dCQUNoRCxPQUFPLElBQUksQ0FBQzthQUNmO1lBQ0QsY0FBYyxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUM7U0FDakQ7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUMxQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmxpbmVTdHlsZVRvb2wgfSBmcm9tICcuL2lubGluZS1zdHlsZS10b29sLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJbmxpbmVUZXh0VG9vbCBleHRlbmRzIElubGluZVN0eWxlVG9vbCB7XG4gICAgbm9kZXM6IHsgYnV0dG9uOiBIVE1MQnV0dG9uRWxlbWVudCB9O1xuXG4gICAgaXNEcm9wZG93bk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGN1cnJlbnRTZWxlY3Rpb24/OiBTZWxlY3Rpb247XG5cbiAgICBzZWxlY3RlZEFuY2hvck5vZGU6IE5vZGUgPSBudWxsO1xuXG4gICAgc2VsZWN0ZWRGb2N1c05vZGU6IE5vZGUgPSBudWxsO1xuXG4gICAgYW5jaG9yT2Zmc2V0OiBudW1iZXIgPSAtMTtcblxuICAgIGZvY3VzT2Zmc2V0OiBudW1iZXIgPSAtMTtcblxuICAgIENTUzogYW55O1xuXG4gICAgYXBpOiBhbnk7XG5cbiAgICBkcm9wZG93bkNzczogT2JqZWN0ID0ge1xuICAgICAgICBjb250YWluZXI6ICdjZS1pbmxpbmUtYWN0aW9ucy0tdGV4dCcsXG4gICAgICAgIHJvdzogJ2NlLWlubGluZS1hY3Rpb25zLS10ZXh0X19yb3cnLFxuICAgIH07XG5cbiAgICBvcGVuRHJvcGRvd24oKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRFZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50RWRpdG9yID0gdGhpcy5maW5kUGFyZW50RWRpdG9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRyb3Bkb3duID0gdGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLkNTUy50ZXh0U2VsZWN0aW9uTW9kaWZpZXIpWzBdO1xuICAgICAgICB0aGlzLnNhdmVVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChkcm9wZG93bikge1xuICAgICAgICAgICAgaWYgKGRyb3Bkb3duLmNsYXNzTGlzdC5jb250YWlucygnaGlkZGVuJykpIHtcbiAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PmRyb3Bkb3duKS5zdHlsZS5sZWZ0ID0gdGhpcy5ub2Rlcy5idXR0b24ub2Zmc2V0TGVmdC50b1N0cmluZygpICsgJ3B4JztcbiAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PmRyb3Bkb3duKS5zdHlsZS50b3AgPVxuICAgICAgICAgICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PnRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJy5jZS1pbmxpbmUtdG9vbGJhcl9fYnV0dG9ucycpKS5vZmZzZXRIZWlnaHQgLVxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubm9kZXMuYnV0dG9uLm9mZnNldFRvcCArIHRoaXMubm9kZXMuYnV0dG9uLm9mZnNldEhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgKS50b1N0cmluZygpICtcbiAgICAgICAgICAgICAgICAgICAgJ3B4JztcbiAgICAgICAgICAgICAgICBkcm9wZG93bi5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCRldmVudCkgPT4gdGhpcy5pc0Ryb3Bkb3duRm9jdXNlZE91dCgkZXZlbnQpKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSwgNDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGRyb3Bkb3duLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VEcm9wZG93bigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudEVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRFZGl0b3IgPSB0aGlzLmZpbmRQYXJlbnRFZGl0b3IoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZHJvcGRvd24gPSB0aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuQ1NTLnRleHRTZWxlY3Rpb25Nb2RpZmllcilbMF07XG4gICAgICAgIHRoaXMuc2F2ZVVzZXJTZWxlY3Rpb24oKTtcbiAgICAgICAgaWYgKGRyb3Bkb3duKSB7XG4gICAgICAgICAgICBpZiAoIWRyb3Bkb3duLmNsYXNzTGlzdC5jb250YWlucygnaGlkZGVuJykpIHtcbiAgICAgICAgICAgICAgICBkcm9wZG93bi5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDQwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzYXZlVXNlclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFuY2hvck5vZGUgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb24uYW5jaG9yTm9kZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZvY3VzTm9kZSA9IHRoaXMuY3VycmVudFNlbGVjdGlvbi5mb2N1c05vZGU7XG4gICAgICAgIHRoaXMuYW5jaG9yT2Zmc2V0ID0gdGhpcy5jdXJyZW50U2VsZWN0aW9uLmFuY2hvck9mZnNldDtcbiAgICAgICAgdGhpcy5mb2N1c09mZnNldCA9IHRoaXMuY3VycmVudFNlbGVjdGlvbi5mb2N1c09mZnNldDtcbiAgICB9XG5cbiAgICByZXNldFVzZXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGhpcy5zZWxlY3RlZEFuY2hvck5vZGUsIHRoaXMuYW5jaG9yT2Zmc2V0LCB0aGlzLnNlbGVjdGVkRm9jdXNOb2RlLCB0aGlzLmZvY3VzT2Zmc2V0KTtcbiAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICB9XG5cbiAgICBpc0Ryb3Bkb3duRm9jdXNlZE91dCgkZXZlbnQpIHtcbiAgICAgICAgbGV0IGRyb3Bkb3duU2VsZWN0aW9uID0gdGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLkNTUy50ZXh0U2VsZWN0aW9uTW9kaWZpZXIpWzBdO1xuICAgICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duT3Blbikge1xuICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSAkZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnModGhpcy5kcm9wZG93bkNzc1snY29udGFpbmVyJ10pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCRldmVudCkgPT4gdGhpcy5pc0Ryb3Bkb3duRm9jdXNlZE91dCgkZXZlbnQpKTtcbiAgICAgICAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGRyb3Bkb3duU2VsZWN0aW9uLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgICAgICAgICAgdGhpcy5hcGkudG9vbGJhci5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kUGFyZW50TW9kaWZpZXIoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgICAgICBjb25zdCBtb2RpZmllcnMgPSAnaDEsaDIsaDMsaDQsaDUsaDYscCx1bCxvbCxibG9ja3F1b3RlJztcbiAgICAgICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2RpdicpIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2NlLXBhcmFncmFwaCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxIVE1MRWxlbWVudD5jdXJyZW50RWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiA8SFRNTEVsZW1lbnQ+Y3VycmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNlLXBhcmFncmFwaCcpLmNoaWxkcmVuWzBdO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChtb2RpZmllcnMuc3BsaXQoJywnKS5pbmRleE9mKGN1cnJlbnRFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSkgPT09IC0xKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnZGl2Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50RWxlbWVudDtcbiAgICB9XG59XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9icmlhbi9Eb2N1bWVudHMvd29ya3NwYWNlL3dpemktYmxvY2svcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvIiwic291cmNlcyI6WyJsaWIvc2hhcmVkL2NvbXBvbmVudHMvZWRpdG9yanMvdG9vbHMvaW5saW5lL3Rvb2wtdHlwZS90ZXh0LXRvb2wuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVoRSxNQUFNLE9BQWdCLGNBQWUsU0FBUSxlQUFlO0lBQTVEOztRQUdJLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBSWhDLHVCQUFrQixHQUFTLElBQUksQ0FBQztRQUVoQyxzQkFBaUIsR0FBUyxJQUFJLENBQUM7UUFFL0IsaUJBQVksR0FBVyxDQUFDLENBQUMsQ0FBQztRQUUxQixnQkFBVyxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBTXpCLGdCQUFXLEdBQVc7WUFDbEIsU0FBUyxFQUFFLHlCQUF5QjtZQUNwQyxHQUFHLEVBQUUsOEJBQThCO1NBQ3RDLENBQUM7SUErRk4sQ0FBQztJQTdGRyxZQUFZO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUMvQztRQUNELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLFFBQVEsRUFBRTtZQUNWLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3pCLFFBQVMsQ0FBQyxL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QUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pGO1FBQ0QsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDOUUsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssRUFBRTtnQkFDaEQsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUNELGNBQWMsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO1NBQ2pEO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDMUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5saW5lU3R5bGVUb29sIH0gZnJvbSAnLi9pbmxpbmUtc3R5bGUtdG9vbC5jb21wb25lbnQnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW5saW5lVGV4dFRvb2wgZXh0ZW5kcyBJbmxpbmVTdHlsZVRvb2wge1xuICAgIG5vZGVzOiB7IGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQgfTtcblxuICAgIGlzRHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjdXJyZW50U2VsZWN0aW9uPzogU2VsZWN0aW9uO1xuXG4gICAgc2VsZWN0ZWRBbmNob3JOb2RlOiBOb2RlID0gbnVsbDtcblxuICAgIHNlbGVjdGVkRm9jdXNOb2RlOiBOb2RlID0gbnVsbDtcblxuICAgIGFuY2hvck9mZnNldDogbnVtYmVyID0gLTE7XG5cbiAgICBmb2N1c09mZnNldDogbnVtYmVyID0gLTE7XG5cbiAgICBDU1M6IGFueTtcblxuICAgIGFwaTogYW55O1xuXG4gICAgZHJvcGRvd25Dc3M6IE9iamVjdCA9IHtcbiAgICAgICAgY29udGFpbmVyOiAnY2UtaW5saW5lLWFjdGlvbnMtLXRleHQnLFxuICAgICAgICByb3c6ICdjZS1pbmxpbmUtYWN0aW9ucy0tdGV4dF9fcm93JyxcbiAgICB9O1xuXG4gICAgb3BlbkRyb3Bkb3duKCkge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50RWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvciA9IHRoaXMuZmluZFBhcmVudEVkaXRvcigpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBkcm9wZG93biA9IHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MudGV4dFNlbGVjdGlvbk1vZGlmaWVyKVswXTtcbiAgICAgICAgdGhpcy5zYXZlVXNlclNlbGVjdGlvbigpO1xuICAgICAgICBpZiAoZHJvcGRvd24pIHtcbiAgICAgICAgICAgIGlmIChkcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD5kcm9wZG93bikuc3R5bGUubGVmdCA9IHRoaXMubm9kZXMuYnV0dG9uLm9mZnNldExlZnQudG9TdHJpbmcoKSArICdweCc7XG4gICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD5kcm9wZG93bikuc3R5bGUudG9wID1cbiAgICAgICAgICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD50aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yKCcuY2UtaW5saW5lLXRvb2xiYXJfX2J1dHRvbnMnKSkub2Zmc2V0SGVpZ2h0IC1cbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm5vZGVzLmJ1dHRvbi5vZmZzZXRUb3AgKyB0aGlzLm5vZGVzLmJ1dHRvbi5vZmZzZXRIZWlnaHQpXG4gICAgICAgICAgICAgICAgICAgICkudG9TdHJpbmcoKSArXG4gICAgICAgICAgICAgICAgICAgICdweCc7XG4gICAgICAgICAgICAgICAgZHJvcGRvd24uY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgkZXZlbnQpID0+IHRoaXMuaXNEcm9wZG93bkZvY3VzZWRPdXQoJGV2ZW50KSk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0sIDQwMCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBkcm9wZG93bi5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlRHJvcGRvd24oKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRFZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50RWRpdG9yID0gdGhpcy5maW5kUGFyZW50RWRpdG9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRyb3Bkb3duID0gdGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLkNTUy50ZXh0U2VsZWN0aW9uTW9kaWZpZXIpWzBdO1xuICAgICAgICB0aGlzLnNhdmVVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChkcm9wZG93bikge1xuICAgICAgICAgICAgaWYgKCFkcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgICAgICAgICAgZHJvcGRvd24uY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA0MDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2F2ZVVzZXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBbmNob3JOb2RlID0gdGhpcy5jdXJyZW50U2VsZWN0aW9uLmFuY2hvck5vZGU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGb2N1c05vZGUgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb24uZm9jdXNOb2RlO1xuICAgICAgICB0aGlzLmFuY2hvck9mZnNldCA9IHRoaXMuY3VycmVudFNlbGVjdGlvbi5hbmNob3JPZmZzZXQ7XG4gICAgICAgIHRoaXMuZm9jdXNPZmZzZXQgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb24uZm9jdXNPZmZzZXQ7XG4gICAgfVxuXG4gICAgcmVzZXRVc2VyU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgICAgICBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHRoaXMuc2VsZWN0ZWRBbmNob3JOb2RlLCB0aGlzLmFuY2hvck9mZnNldCwgdGhpcy5zZWxlY3RlZEZvY3VzTm9kZSwgdGhpcy5mb2N1c09mZnNldCk7XG4gICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgaXNEcm9wZG93bkZvY3VzZWRPdXQoJGV2ZW50KSB7XG4gICAgICAgIGxldCBkcm9wZG93blNlbGVjdGlvbiA9IHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MudGV4dFNlbGVjdGlvbk1vZGlmaWVyKVswXTtcbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bk9wZW4pIHtcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gJGV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgIHdoaWxlIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuZHJvcGRvd25Dc3NbJ2NvbnRhaW5lciddKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsICgkZXZlbnQpID0+IHRoaXMuaXNEcm9wZG93bkZvY3VzZWRPdXQoJGV2ZW50KSk7XG4gICAgICAgICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgICAgICAgICBkcm9wZG93blNlbGVjdGlvbi5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIHRoaXMuYXBpLnRvb2xiYXIuY2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZFBhcmVudE1vZGlmaWVyKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gJ2gxLGgyLGgzLGg0LGg1LGg2LHAsdWwsb2wsYmxvY2txdW90ZSc7XG4gICAgICAgIGxldCBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIGlmIChjdXJyZW50RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdkaXYnKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjZS1wYXJhZ3JhcGgnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiA8SFRNTEVsZW1lbnQ+Y3VycmVudEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gPEhUTUxFbGVtZW50PmN1cnJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jZS1wYXJhZ3JhcGgnKS5jaGlsZHJlblswXTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAobW9kaWZpZXJzLnNwbGl0KCcsJykuaW5kZXhPZihjdXJyZW50RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpID09PSAtMSkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2RpdicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudEVsZW1lbnQ7XG4gICAgfVxufVxuIl19
@@ -76,4 +76,4 @@ export class UnderlineTool extends InlineStyleTool {
76
76
  }
77
77
  }
78
78
  UnderlineTool.title = 'Underline';
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kZXJsaW5lLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3BhdWxpbmUvRG9jdW1lbnRzL3dvcmtzcGFjZS93aXppLWJsb2NrL3Byb2plY3RzL3dpemktYmxvY2svc3JjLyIsInNvdXJjZXMiOlsibGliL3NoYXJlZC9jb21wb25lbnRzL2VkaXRvcmpzL3Rvb2xzL2lubGluZS91bmRlcmxpbmUtdG9vbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFlLE1BQU0sa0NBQWtDLENBQUM7QUFDOUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTFFLFdBQVc7QUFDWCxNQUFNLE9BQU8sYUFBYyxTQUFRLGVBQWU7SUEwRDlDLFlBQVksRUFBRSxHQUFHLEVBQUU7UUFDZixLQUFLLEVBQUUsQ0FBQztRQXhESyxnQkFBVyxHQUFXLFdBQVcsQ0FBQztRQUVsQyxRQUFHLEdBQUc7WUFDbkIsTUFBTSxFQUFFLGdCQUFnQjtZQUN4QixZQUFZLEVBQUUsd0JBQXdCO1lBQ3RDLGNBQWMsRUFBRSwyQkFBMkI7U0FDOUMsQ0FBQztRQUVNLFVBQUssR0FBa0M7WUFDM0MsTUFBTSxFQUFFLFNBQVM7U0FDcEIsQ0FBQztRQU1GLFFBQUcsR0FBRyxNQUFNLENBQUM7UUFFYixVQUFLLEdBQWdCO1lBQ2pCLFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsS0FBSyxFQUFFLFdBQVc7WUFDbEIsT0FBTyxFQUFFLFNBQVM7U0FDckIsQ0FBQztRQUVGLGFBQVEsR0FBRztZQUNQLEdBQUcsRUFBRSxLQUFLO1lBQ1YsS0FBSyxFQUFFLElBQUk7WUFDWCxLQUFLLEVBQUUsS0FBSztZQUNaLFNBQVMsRUFBRSxLQUFLO1NBQ25CLENBQUM7UUE0QkUsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBNUJNLE1BQU0sS0FBSyxRQUFRO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxNQUFNLEtBQUssUUFBUTtRQUN0QixPQUFPO1lBQ0gsQ0FBQyxFQUFFLEVBQUU7U0FDVyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFLO1FBQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBUUQsTUFBTTtRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFzQixDQUFDO1FBQzFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3hEO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBRUssUUFBUSxDQUFDLEtBQVk7O1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7S0FBQTtJQUVELFVBQVUsQ0FBQyxTQUFTO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDL0M7UUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2pCLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDcEM7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFjLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDakYsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVwRSxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDOztBQTNGYSxtQkFBSyxHQUFHLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElubGluZVRvb2wsIFNhbml0aXplckNvbmZpZyB9IGZyb20gJ0BlZGl0b3Jqcy9lZGl0b3Jqcyc7XG5pbXBvcnQgeyBpc0Jsb2NrRm9jdXNlZCwgc2V0QmxvY2tGb2N1cywgU3R5bGVPYmplY3QgfSBmcm9tICcuLi91dGlscy9lZGl0b3Jqcy10b29sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmxpbmVTdHlsZVRvb2wgfSBmcm9tICcuL3Rvb2wtdHlwZS9pbmxpbmUtc3R5bGUtdG9vbC5jb21wb25lbnQnO1xuXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIFVuZGVybGluZVRvb2wgZXh0ZW5kcyBJbmxpbmVTdHlsZVRvb2wgaW1wbGVtZW50cyBJbmxpbmVUb29sIHtcbiAgICBwdWJsaWMgc3RhdGljIHRpdGxlID0gJ1VuZGVybGluZSc7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbW1hbmROYW1lOiBzdHJpbmcgPSAndW5kZXJsaW5lJztcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgQ1NTID0ge1xuICAgICAgICBidXR0b246ICdjZS1pbmxpbmUtdG9vbCcsXG4gICAgICAgIGJ1dHRvbkFjdGl2ZTogJ2NlLWlubGluZS10b29sLS1hY3RpdmUnLFxuICAgICAgICBidXR0b25Nb2RpZmllcjogJ2NlLWlubGluZS10b29sLS11bmRlcmxpbmUnLFxuICAgIH07XG5cbiAgICBwcml2YXRlIG5vZGVzOiB7IGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQgfSA9IHtcbiAgICAgICAgYnV0dG9uOiB1bmRlZmluZWQsXG4gICAgfTtcblxuICAgIHByaXZhdGUgYXBpOiBhbnk7XG5cbiAgICBwcml2YXRlIF9zdGF0ZTogYm9vbGVhbjtcblxuICAgIHRhZyA9ICdTUEFOJztcblxuICAgIHN0eWxlOiBTdHlsZU9iamVjdCA9IHtcbiAgICAgICAgcHJvcGVydHk6ICd0ZXh0LWRlY29yYXRpb24tbGluZScsXG4gICAgICAgIHZhbHVlOiAndW5kZXJsaW5lJyxcbiAgICAgICAgZGVmYXVsdDogJ2luaXRpYWwnLFxuICAgIH07XG5cbiAgICBtb2RpZmllcyA9IHtcbiAgICAgICAgdGFnOiBmYWxzZSxcbiAgICAgICAgc3R5bGU6IHRydWUsXG4gICAgICAgIGNsYXNzOiBmYWxzZSxcbiAgICAgICAgYXR0cmlidXRlOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgaXNJbmxpbmUoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IHNhbml0aXplKCk6IFNhbml0aXplckNvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiOiB7fSxcbiAgICAgICAgfSBhcyBTYW5pdGl6ZXJDb25maWc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzaG9ydGN1dCgpIHtcbiAgICAgICAgcmV0dXJuICdDTUQrVSc7XG4gICAgfVxuXG4gICAgZ2V0IHN0YXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gICAgfVxuXG4gICAgc2V0IHN0YXRlKHN0YXRlKSB7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gc3RhdGU7XG5cbiAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24uY2xhc3NMaXN0LnRvZ2dsZSh0aGlzLmFwaS5zdHlsZXMuaW5saW5lVG9vbEJ1dHRvbkFjdGl2ZSwgc3RhdGUpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHsgYXBpIH0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5hcGkgPSBhcGk7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICB0aGlzLm5vZGVzLmJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICAgICAgICB0aGlzLm5vZGVzLmJ1dHRvbi50eXBlID0gJ2J1dHRvbic7XG4gICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmNsYXNzTGlzdC5hZGQodGhpcy5DU1MuYnV0dG9uLCB0aGlzLkNTUy5idXR0b25Nb2RpZmllcik7XG4gICAgICAgIGlmICh0aGlzLmhhc1NlcGFyYXRvckJlZm9yZSkge1xuICAgICAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24uY2xhc3NMaXN0LmFkZCh0aGlzLnNlcGFyYXRvckNsYXNzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzLmJ1dHRvbjtcbiAgICB9XG5cbiAgICBhc3luYyBzdXJyb3VuZChyYW5nZTogUmFuZ2UpIHtcbiAgICAgICAgdGhpcy5zYXZlVXNlclNlbGVjdGlvbigpO1xuICAgICAgICBhd2FpdCB0aGlzLmV4ZWNDb21tYW5kU3R5bGUodGhpcy50YWcpO1xuICAgICAgICB0aGlzLmNoZWNrU3RhdGUodGhpcy5nZXRTZWxlY3Rpb24oKSk7XG4gICAgfVxuXG4gICAgY2hlY2tTdGF0ZShzZWxlY3Rpb24pIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudEVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRFZGl0b3IgPSB0aGlzLmZpbmRQYXJlbnRFZGl0b3IoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzQmxvY2tGb2N1c2VkKSB7XG4gICAgICAgICAgICBzZXRCbG9ja0ZvY3VzKHRoaXMucGFyZW50RWRpdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRoaXMuaGFzU3R5bGUoPEhUTUxFbGVtZW50PnNlbGVjdGlvbi5hbmNob3JOb2RlKSA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24uY2xhc3NMaXN0LnRvZ2dsZSh0aGlzLkNTUy5idXR0b25BY3RpdmUsIGlzQWN0aXZlKTtcblxuICAgICAgICByZXR1cm4gaXNBY3RpdmU7XG4gICAgfVxufVxuIl19
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kZXJsaW5lLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL2JyaWFuL0RvY3VtZW50cy93b3Jrc3BhY2Uvd2l6aS1ibG9jay9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvY29tcG9uZW50cy9lZGl0b3Jqcy90b29scy9pbmxpbmUvdW5kZXJsaW5lLXRvb2wuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBZSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUxRSxXQUFXO0FBQ1gsTUFBTSxPQUFPLGFBQWMsU0FBUSxlQUFlO0lBMEQ5QyxZQUFZLEVBQUUsR0FBRyxFQUFFO1FBQ2YsS0FBSyxFQUFFLENBQUM7UUF4REssZ0JBQVcsR0FBVyxXQUFXLENBQUM7UUFFbEMsUUFBRyxHQUFHO1lBQ25CLE1BQU0sRUFBRSxnQkFBZ0I7WUFDeEIsWUFBWSxFQUFFLHdCQUF3QjtZQUN0QyxjQUFjLEVBQUUsMkJBQTJCO1NBQzlDLENBQUM7UUFFTSxVQUFLLEdBQWtDO1lBQzNDLE1BQU0sRUFBRSxTQUFTO1NBQ3BCLENBQUM7UUFNRixRQUFHLEdBQUcsTUFBTSxDQUFDO1FBRWIsVUFBSyxHQUFnQjtZQUNqQixRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLEtBQUssRUFBRSxXQUFXO1lBQ2xCLE9BQU8sRUFBRSxTQUFTO1NBQ3JCLENBQUM7UUFFRixhQUFRLEdBQUc7WUFDUCxHQUFHLEVBQUUsS0FBSztZQUNWLEtBQUssRUFBRSxJQUFJO1lBQ1gsS0FBSyxFQUFFLEtBQUs7WUFDWixTQUFTLEVBQUUsS0FBSztTQUNuQixDQUFDO1FBNEJFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQTVCTSxNQUFNLEtBQUssUUFBUTtRQUN0QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sTUFBTSxLQUFLLFFBQVE7UUFDdEIsT0FBTztZQUNILENBQUMsRUFBRSxFQUFFO1NBQ1csQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2YsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsS0FBSztRQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXBCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQVFELE1BQU07UUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBc0IsQ0FBQztRQUMxRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN4RDtRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDN0IsQ0FBQztJQUVLLFFBQVEsQ0FBQyxLQUFZOztZQUN2QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUN6QyxDQUFDO0tBQUE7SUFFRCxVQUFVLENBQUMsU0FBUztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQy9DO1FBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNqQixhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3BDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBYyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFcEUsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQzs7QUEzRmEsbUJBQUssR0FBRyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmxpbmVUb29sLCBTYW5pdGl6ZXJDb25maWcgfSBmcm9tICdAZWRpdG9yanMvZWRpdG9yanMnO1xuaW1wb3J0IHsgaXNCbG9ja0ZvY3VzZWQsIHNldEJsb2NrRm9jdXMsIFN0eWxlT2JqZWN0IH0gZnJvbSAnLi4vdXRpbHMvZWRpdG9yanMtdG9vbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5saW5lU3R5bGVUb29sIH0gZnJvbSAnLi90b29sLXR5cGUvaW5saW5lLXN0eWxlLXRvb2wuY29tcG9uZW50JztcblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBVbmRlcmxpbmVUb29sIGV4dGVuZHMgSW5saW5lU3R5bGVUb29sIGltcGxlbWVudHMgSW5saW5lVG9vbCB7XG4gICAgcHVibGljIHN0YXRpYyB0aXRsZSA9ICdVbmRlcmxpbmUnO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21tYW5kTmFtZTogc3RyaW5nID0gJ3VuZGVybGluZSc7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IENTUyA9IHtcbiAgICAgICAgYnV0dG9uOiAnY2UtaW5saW5lLXRvb2wnLFxuICAgICAgICBidXR0b25BY3RpdmU6ICdjZS1pbmxpbmUtdG9vbC0tYWN0aXZlJyxcbiAgICAgICAgYnV0dG9uTW9kaWZpZXI6ICdjZS1pbmxpbmUtdG9vbC0tdW5kZXJsaW5lJyxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBub2RlczogeyBidXR0b246IEhUTUxCdXR0b25FbGVtZW50IH0gPSB7XG4gICAgICAgIGJ1dHRvbjogdW5kZWZpbmVkLFxuICAgIH07XG5cbiAgICBwcml2YXRlIGFwaTogYW55O1xuXG4gICAgcHJpdmF0ZSBfc3RhdGU6IGJvb2xlYW47XG5cbiAgICB0YWcgPSAnU1BBTic7XG5cbiAgICBzdHlsZTogU3R5bGVPYmplY3QgPSB7XG4gICAgICAgIHByb3BlcnR5OiAndGV4dC1kZWNvcmF0aW9uLWxpbmUnLFxuICAgICAgICB2YWx1ZTogJ3VuZGVybGluZScsXG4gICAgICAgIGRlZmF1bHQ6ICdpbml0aWFsJyxcbiAgICB9O1xuXG4gICAgbW9kaWZpZXMgPSB7XG4gICAgICAgIHRhZzogZmFsc2UsXG4gICAgICAgIHN0eWxlOiB0cnVlLFxuICAgICAgICBjbGFzczogZmFsc2UsXG4gICAgICAgIGF0dHJpYnV0ZTogZmFsc2UsXG4gICAgfTtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IGlzSW5saW5lKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCBzYW5pdGl6ZSgpOiBTYW5pdGl6ZXJDb25maWcge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYjoge30sXG4gICAgICAgIH0gYXMgU2FuaXRpemVyQ29uZmlnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2hvcnRjdXQoKSB7XG4gICAgICAgIHJldHVybiAnQ01EK1UnO1xuICAgIH1cblxuICAgIGdldCBzdGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xuICAgIH1cblxuICAgIHNldCBzdGF0ZShzdGF0ZSkge1xuICAgICAgICB0aGlzLl9zdGF0ZSA9IHN0YXRlO1xuXG4gICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmNsYXNzTGlzdC50b2dnbGUodGhpcy5hcGkuc3R5bGVzLmlubGluZVRvb2xCdXR0b25BY3RpdmUsIHN0YXRlKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcih7IGFwaSB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYXBpID0gYXBpO1xuICAgICAgICB0aGlzLl9zdGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24udHlwZSA9ICdidXR0b24nO1xuICAgICAgICB0aGlzLm5vZGVzLmJ1dHRvbi5jbGFzc0xpc3QuYWRkKHRoaXMuQ1NTLmJ1dHRvbiwgdGhpcy5DU1MuYnV0dG9uTW9kaWZpZXIpO1xuICAgICAgICBpZiAodGhpcy5oYXNTZXBhcmF0b3JCZWZvcmUpIHtcbiAgICAgICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmNsYXNzTGlzdC5hZGQodGhpcy5zZXBhcmF0b3JDbGFzcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5ub2Rlcy5idXR0b247XG4gICAgfVxuXG4gICAgYXN5bmMgc3Vycm91bmQocmFuZ2U6IFJhbmdlKSB7XG4gICAgICAgIHRoaXMuc2F2ZVVzZXJTZWxlY3Rpb24oKTtcbiAgICAgICAgYXdhaXQgdGhpcy5leGVjQ29tbWFuZFN0eWxlKHRoaXMudGFnKTtcbiAgICAgICAgdGhpcy5jaGVja1N0YXRlKHRoaXMuZ2V0U2VsZWN0aW9uKCkpO1xuICAgIH1cblxuICAgIGNoZWNrU3RhdGUoc2VsZWN0aW9uKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRFZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50RWRpdG9yID0gdGhpcy5maW5kUGFyZW50RWRpdG9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0Jsb2NrRm9jdXNlZCkge1xuICAgICAgICAgICAgc2V0QmxvY2tGb2N1cyh0aGlzLnBhcmVudEVkaXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNBY3RpdmUgPSB0aGlzLmhhc1N0eWxlKDxIVE1MRWxlbWVudD5zZWxlY3Rpb24uYW5jaG9yTm9kZSkgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmNsYXNzTGlzdC50b2dnbGUodGhpcy5DU1MuYnV0dG9uQWN0aXZlLCBpc0FjdGl2ZSk7XG5cbiAgICAgICAgcmV0dXJuIGlzQWN0aXZlO1xuICAgIH1cbn1cbiJdfQ==