simpo-component-library 3.6.916 → 3.6.917

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 (190) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/components/delete-hover-element/delete-hover-element.component.mjs +3 -3
  3. package/esm2022/lib/components/document/document.component.mjs +3 -3
  4. package/esm2022/lib/components/hover-elements/hover-elements.component.mjs +3 -7
  5. package/esm2022/lib/components/image-loading/image-loading.component.mjs +3 -3
  6. package/esm2022/lib/components/payment-details/payment-details.component.mjs +3 -3
  7. package/esm2022/lib/constants/business.constant.mjs +1 -1
  8. package/esm2022/lib/directive/alignment.directive.mjs +1 -1
  9. package/esm2022/lib/directive/blur-content.directive.mjs +1 -1
  10. package/esm2022/lib/directive/borderlessImage.directive.mjs +1 -1
  11. package/esm2022/lib/directive/button-directive.directive.mjs +7 -1
  12. package/esm2022/lib/directive/color.directive.mjs +1 -1
  13. package/esm2022/lib/directive/column-directive.directive.mjs +1 -1
  14. package/esm2022/lib/directive/container-alignment.directive.mjs +1 -1
  15. package/esm2022/lib/directive/container-fir.directive.mjs +1 -1
  16. package/esm2022/lib/directive/content-title-spacing.directive.mjs +1 -1
  17. package/esm2022/lib/directive/contenteditable.directive.mjs +1 -1
  18. package/esm2022/lib/directive/corner-directive.mjs +1 -1
  19. package/esm2022/lib/directive/height.directive.mjs +1 -1
  20. package/esm2022/lib/directive/hover-animation.directive.mjs +1 -1
  21. package/esm2022/lib/directive/hoverborder.directive.mjs +1 -1
  22. package/esm2022/lib/directive/icon-directive.directive.mjs +1 -1
  23. package/esm2022/lib/directive/image-container.directive.mjs +1 -1
  24. package/esm2022/lib/directive/letters-only.directive.mjs +1 -1
  25. package/esm2022/lib/directive/numbers-only.directive.mjs +1 -1
  26. package/esm2022/lib/directive/position-layout-directive.directive.mjs +1 -1
  27. package/esm2022/lib/directive/set-dynamic-background.directive.mjs +1 -1
  28. package/esm2022/lib/directive/spacing-horizontal.directive.mjs +1 -1
  29. package/esm2022/lib/directive/spacing.directive.mjs +1 -1
  30. package/esm2022/lib/directive/text-background-directive.directive.mjs +1 -1
  31. package/esm2022/lib/directive/text-size.directive.mjs +1 -1
  32. package/esm2022/lib/directive/translate-onhover.directive.mjs +1 -1
  33. package/esm2022/lib/directive/wrap-containers.directive.mjs +1 -1
  34. package/esm2022/lib/ecommerce/sections/address/address.component.mjs +1 -1
  35. package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +3 -3
  36. package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +60 -5
  37. package/esm2022/lib/ecommerce/sections/checkout/checkout.component.mjs +3 -3
  38. package/esm2022/lib/ecommerce/sections/checkout/checkout.modal.mjs +1 -1
  39. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.component.mjs +3 -3
  40. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.model.mjs +1 -1
  41. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.component.mjs +3 -3
  42. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.model.mjs +1 -1
  43. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +3 -3
  44. package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +3 -3
  45. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +56 -54
  46. package/esm2022/lib/ecommerce/sections/item-varient/item-varient.component.mjs +3 -3
  47. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.component.mjs +3 -3
  48. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.modal.mjs +1 -1
  49. package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +3 -3
  50. package/esm2022/lib/ecommerce/sections/pagnination/pagnination.component.mjs +3 -3
  51. package/esm2022/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.mjs +3 -3
  52. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs +3 -3
  53. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.model.mjs +1 -1
  54. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +58 -3
  55. package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +3 -3
  56. package/esm2022/lib/ecommerce/sections/product-list/product-list.modal.mjs +1 -1
  57. package/esm2022/lib/ecommerce/sections/refer-earn/refer-earn.component.mjs +14 -8
  58. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +1 -1
  59. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.model.mjs +1 -1
  60. package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +3 -3
  61. package/esm2022/lib/ecommerce/sections/scheme-selection/scheme-selection.component.mjs +3 -3
  62. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.model.mjs +1 -1
  63. package/esm2022/lib/ecommerce/sections/small-product-listing/small-product-listing.component.mjs +3 -3
  64. package/esm2022/lib/ecommerce/sections/store-list/store-list.component.mjs +3 -3
  65. package/esm2022/lib/ecommerce/sections/store-list/store-list.modal.mjs +1 -1
  66. package/esm2022/lib/ecommerce/sections/store-page/store-page.component.mjs +3 -3
  67. package/esm2022/lib/ecommerce/sections/store-page/store-page.model.mjs +1 -1
  68. package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +3 -3
  69. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.modal.mjs +1 -1
  70. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +3 -3
  71. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.model.mjs +1 -1
  72. package/esm2022/lib/ecommerce/styles/BaseCollection.modal.mjs +1 -1
  73. package/esm2022/lib/ecommerce/styles/Collection.modal.mjs +1 -1
  74. package/esm2022/lib/ecommerce/styles/PincodeLocation.model.mjs +1 -1
  75. package/esm2022/lib/ecommerce/styles/PincodeLocationInter.model.mjs +1 -1
  76. package/esm2022/lib/ecommerce/styles/cart.modal.mjs +1 -1
  77. package/esm2022/lib/ecommerce/styles/category.modal.mjs +1 -1
  78. package/esm2022/lib/ecommerce/styles/order.modal.mjs +1 -1
  79. package/esm2022/lib/ecommerce/styles/product.modal.mjs +1 -1
  80. package/esm2022/lib/ecommerce/styles/review.modal.mjs +1 -1
  81. package/esm2022/lib/ecommerce/styles/user.modal.mjs +1 -1
  82. package/esm2022/lib/elements/address-list/address-list.component.mjs +3 -3
  83. package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +3 -3
  84. package/esm2022/lib/elements/button/button.component.mjs +3 -3
  85. package/esm2022/lib/elements/button/button.model.mjs +1 -1
  86. package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +3 -3
  87. package/esm2022/lib/elements/heading-element/heading-element.component.mjs +3 -3
  88. package/esm2022/lib/elements/index.mjs +1 -1
  89. package/esm2022/lib/elements/list-home-appointment/list-home-appointment.component.mjs +3 -3
  90. package/esm2022/lib/elements/media-selector/media-selector.component.mjs +1 -1
  91. package/esm2022/lib/elements/portfolio/portfolio.component.mjs +3 -3
  92. package/esm2022/lib/elements/property/property.component.mjs +3 -3
  93. package/esm2022/lib/elements/schedule-video-call/schedule-video-call.component.mjs +1 -1
  94. package/esm2022/lib/elements/svg-divider/svg-divider.component.mjs +3 -3
  95. package/esm2022/lib/elements/text/text.component.mjs +3 -3
  96. package/esm2022/lib/elements/text-editor/text-editor.component.mjs +3 -3
  97. package/esm2022/lib/pipes/amount.pipe.mjs +1 -1
  98. package/esm2022/lib/sections/add-new-section/add-new-section.component.mjs +3 -3
  99. package/esm2022/lib/sections/appointment-form/appointment-booking/appointment-booking/appointment-booking.component.mjs +1 -1
  100. package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +1 -1
  101. package/esm2022/lib/sections/appointment-form/appointment-form.model.mjs +1 -1
  102. package/esm2022/lib/sections/banner-carousel/banner-carousel.model.mjs +1 -1
  103. package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +1 -1
  104. package/esm2022/lib/sections/blog-list/blog-list.model.mjs +1 -1
  105. package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +1 -1
  106. package/esm2022/lib/sections/choose-us-section/choose-us-section.model.mjs +1 -1
  107. package/esm2022/lib/sections/countdown-banner/countdown-banner.component.mjs +24 -4
  108. package/esm2022/lib/sections/faq-section/faq-section.component.mjs +1 -1
  109. package/esm2022/lib/sections/faq-section/faq-section.modal.mjs +1 -1
  110. package/esm2022/lib/sections/features-section/features-section.model.mjs +1 -1
  111. package/esm2022/lib/sections/footer/footer.component.mjs +3 -3
  112. package/esm2022/lib/sections/header-section/header-section.component.mjs +3 -3
  113. package/esm2022/lib/sections/header-section/header-section.model.mjs +1 -1
  114. package/esm2022/lib/sections/header-text/header-text.model.mjs +1 -1
  115. package/esm2022/lib/sections/image-background/image-background/image-background.component.mjs +13 -7
  116. package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +1 -1
  117. package/esm2022/lib/sections/image-carousel-section/image-carousel.model.mjs +1 -1
  118. package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +1 -1
  119. package/esm2022/lib/sections/image-section/image-section.component.mjs +1 -1
  120. package/esm2022/lib/sections/image-section/image-section.model.mjs +1 -1
  121. package/esm2022/lib/sections/location-section/location-section.component.mjs +1 -1
  122. package/esm2022/lib/sections/location-section/location-section.modal.mjs +1 -1
  123. package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +8 -18
  124. package/esm2022/lib/sections/logo-showcase/logo-showcase.modal.mjs +1 -1
  125. package/esm2022/lib/sections/moving-text/moving-text.component.mjs +3 -3
  126. package/esm2022/lib/sections/moving-text/moving-text.modal.mjs +1 -1
  127. package/esm2022/lib/sections/new-services/new-services.component.mjs +1 -1
  128. package/esm2022/lib/sections/new-services/new-services.model.mjs +1 -1
  129. package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +1 -1
  130. package/esm2022/lib/sections/new-testimonials/new-testimonials.model.mjs +1 -1
  131. package/esm2022/lib/sections/news-letter-component/news-letter-component.component.mjs +1 -1
  132. package/esm2022/lib/sections/news-letter-component/news-letter.modal.mjs +1 -1
  133. package/esm2022/lib/sections/overlapping-image/overlapping-image.component.mjs +1 -1
  134. package/esm2022/lib/sections/pricing-section/pricing-section.modal.mjs +1 -1
  135. package/esm2022/lib/sections/process-modern/process-modern.component.mjs +1 -1
  136. package/esm2022/lib/sections/process-modern/process-modern.model.mjs +1 -1
  137. package/esm2022/lib/sections/process-section/process-section.modal.mjs +1 -1
  138. package/esm2022/lib/sections/product-info-section/product-info-section.component.mjs +1 -1
  139. package/esm2022/lib/sections/property-component/property-component.component.mjs +3 -3
  140. package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
  141. package/esm2022/lib/sections/property-list/property-list.component.mjs +3 -3
  142. package/esm2022/lib/sections/property-list/property-list.modal.mjs +1 -1
  143. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +1 -1
  144. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.model.mjs +1 -1
  145. package/esm2022/lib/sections/registration-form/registration-form.component.mjs +3 -3
  146. package/esm2022/lib/sections/registration-form/registrationForm.model.mjs +1 -1
  147. package/esm2022/lib/sections/scheme-detail/scheme-detail.component.mjs +1 -1
  148. package/esm2022/lib/sections/scheme-detail/scheme-detail.modal.mjs +1 -1
  149. package/esm2022/lib/sections/skeleton-loader-section/skeleton-loader-section.component.mjs +3 -3
  150. package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +1 -1
  151. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +1 -1
  152. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.model.mjs +1 -1
  153. package/esm2022/lib/sections/testimonial-masonry/testimonial-masonry.component.mjs +1 -1
  154. package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +1 -1
  155. package/esm2022/lib/sections/testimonial-section/testimonial-section.model.mjs +1 -1
  156. package/esm2022/lib/sections/testimonial-slider/testimonial-slider.component.mjs +1 -1
  157. package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +1 -1
  158. package/esm2022/lib/sections/testimonial-video/testimonial-video.model.mjs +1 -1
  159. package/esm2022/lib/sections/text-section/text-section.model.mjs +1 -1
  160. package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +3 -3
  161. package/esm2022/lib/sections/usp-video-section/usp-video-section.model.mjs +1 -1
  162. package/esm2022/lib/sections/video-carousel-section/video-carousel-section.component.mjs +1 -1
  163. package/esm2022/lib/sections/video-grid-section/video-grid-section.component.mjs +3 -3
  164. package/esm2022/lib/sections/video-section/video-section.component.mjs +3 -3
  165. package/esm2022/lib/sections/video-section/video-section.model.mjs +1 -1
  166. package/esm2022/lib/sections/view-blog/view-blog.component.mjs +1 -1
  167. package/esm2022/lib/services/endUser.service.mjs +1 -1
  168. package/esm2022/lib/services/image-upload-service.service.mjs +1 -1
  169. package/esm2022/lib/services/rest.service.mjs +18 -5
  170. package/esm2022/lib/styles/index.mjs +1 -1
  171. package/esm2022/lib/tokens/api-token.mjs +2 -2
  172. package/fesm2022/simpo-component-library.mjs +336 -187
  173. package/fesm2022/simpo-component-library.mjs.map +1 -1
  174. package/lib/components/hover-elements/hover-elements.component.d.ts +0 -1
  175. package/lib/components/input-fields/input-fields.component.d.ts +1 -1
  176. package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +1 -1
  177. package/lib/ecommerce/sections/cart/cart.component.d.ts +1 -0
  178. package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +2 -1
  179. package/lib/ecommerce/sections/refer-earn/refer-earn.component.d.ts +2 -1
  180. package/lib/ecommerce/sections/schemes/schemes.component.d.ts +1 -1
  181. package/lib/sections/banner-carousel/banner-carousel.component.d.ts +1 -1
  182. package/lib/sections/countdown-banner/countdown-banner.component.d.ts +2 -1
  183. package/lib/sections/image-background/image-background/image-background.component.d.ts +2 -1
  184. package/lib/sections/logo-showcase/logo-showcase.component.d.ts +2 -5
  185. package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
  186. package/lib/services/rest.service.d.ts +5 -1
  187. package/lib/tokens/api-token.d.ts +1 -0
  188. package/package.json +1 -1
  189. package/simpo-component-library-3.6.917.tgz +0 -0
  190. package/simpo-component-library-3.6.916.tgz +0 -0
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
104
104
  type: Inject,
105
105
  args: [BUCKET_URL]
106
106
  }] }] });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VydmljZXMvaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBTWpELE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsdUJBQXVCO0lBQ3ZCLHFFQUFxRTtJQUNyRSwrQkFBK0I7SUFFL0IsWUFBb0IsSUFBZ0IsRUFDTixTQUFjO1FBRHhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDTixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBYjVDLG1CQUFjLEdBQVE7WUFDcEIsUUFBUSxFQUFFLHNLQUFzSztZQUNoTCxXQUFXLEVBQUUsVUFBVTtZQUN2QixhQUFhLEVBQUUsV0FBVztTQUMzQixDQUFBO1FBQ0QsdUJBQWtCLEdBQUcsNkNBQTZDLENBQUE7UUFVaEUsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUM7WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxvQkFBb0I7WUFDbkUsV0FBVyxFQUFFLHVCQUF1QixDQUFDO2dCQUNuQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNO2dCQUN0QyxZQUFZLEVBQUUsRUFBRSxN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cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tQ29nbml0b0lkZW50aXR5UG9vbCB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItY29nbml0by1pZGVudGl0eSc7XHJcbmltcG9ydCB7IFMzQ2xpZW50LCBQdXRPYmplY3RDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcclxuaW1wb3J0IHsgQlVDS0VUX1VSTCB9IGZyb20gJy4uL3Rva2Vucy9hcGktdG9rZW4nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEltYWdlVXBsYW9kU2VydmljZSB7XHJcbiAgY21pc0ZpbGVVcGxvYWQ6IGFueSA9IHtcclxuICAgIHNhc1Rva2VuOiAnc3Y9MjAyMi0xMS0wMiZzcz1iZnF0JnNydD1zY28mc3A9cndkbGFjdXBpeXRmeCZzZT0yMDI5LTEyLTMxVDIzOjQ1OjAzWiZzdD0yMDI0LTEyLTE4VDE1OjQ1OjAzWiZzcHI9aHR0cHMsaHR0cCZzaWc9UWpqNVhlNUtpTXh2RVRtNnJQJTJGWlAzMWkzeERTOXQxUXV5dUtnY1klMkZQQzglM0QnLFxyXG4gICAgYWNjb3VudE5hbWU6ICdjbWlzcHJvZCcsXHJcbiAgICBjb250YWluZXJOYW1lOiAncHJvZC1jbWlzJ1xyXG4gIH1cclxuICBVTlNQTEFTSF9BUElfVE9LRU4gPSAnaU1uNDNIQ1pfRkxDTVdrWmdVdE1BanQtcC1NNnZtYUIxWl8zZmJldG1KQSdcclxuXHJcbiAgcHJpdmF0ZSBzM0NsaWVudD86IFMzQ2xpZW50O1xyXG4gIC8vIHJlZ2lvbiA9ICd1cy1lYXN0LTEnXHJcbiAgLy8gaWRlbnRpdHlQb29sSWQgPSAndXMtZWFzdC0xOmQ0YmM3NzBhLTU2NjQtNDA1MS1iZDY2LTY4NjFhNmVmYmQ5Yyc7XHJcbiAgLy8gYnVja2V0TmFtZSA9IGAke2J1Y2tldFVybH1gO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBASW5qZWN0KEJVQ0tFVF9VUkwpIHByaXZhdGUgYnVja2V0VXJsOiBhbnkpIFxyXG4gICB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnYnVja2V0VXJsJywgdGhpcy5idWNrZXRVcmwpO1xyXG4gICAgdGhpcy5zM0NsaWVudCA9IG5ldyBTM0NsaWVudCh7XHJcbiAgICAgIHJlZ2lvbjogdGhpcy5idWNrZXRVcmw/LmJ1Y2tldERldGFpbHM/LlJlZ2lvbiwgLy8gZS5nLiwgJ3VzLWVhc3QtMSdcclxuICAgICAgY3JlZGVudGlhbHM6IGZyb21Db2duaXRvSWRlbnRpdHlQb29sKHtcclxuICAgICAgICBpZGVudGl0eVBvb2xJZDogdGhpcy5idWNrZXRVcmw/LnBvb2xJZCxcclxuICAgICAgICBjbGllbnRDb25maWc6IHsgcmVnaW9uOiB0aGlzLmJ1Y2tldFVybD8uYnVja2V0RGV0YWlscz8uUmVnaW9uIH0sXHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwbG9hZEZpbGVJbkF6dXJlKGZpbGU6IEZpbGUsIGZvbGRlck5hbWU6IHN0cmluZyA9ICdjbWlzJykge1xyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIGNvbnN0IHsgQmxvYlNlcnZpY2VDbGllbnQgfSA9IGF3YWl0IGltcG9ydCgnQGF6dXJlL3N0b3JhZ2UtYmxvYicpO1xyXG5cclxuICAgICAgY29uc3Qgc2FzVG9rZW4gPSB0aGlzLmNtaXNGaWxlVXBsb2FkLnNhc1Rva2VuLnN0YXJ0c1dpdGgoJz8nKVxyXG4gICAgICAgID8gdGhpcy5jbWlzRmlsZVVwbG9hZC5zYXNUb2tlblxyXG4gICAgICAgIDogYD8ke3RoaXMuY21pc0ZpbGVVcGxvYWQuc2FzVG9rZW59YDtcclxuICAgICAgY29uc3QgYWNjb3VudE5hbWUgPSB0aGlzLmNtaXNGaWxlVXBsb2FkLmFjY291bnROYW1lO1xyXG4gICAgICBjb25zdCBjb250YWluZXJOYW1lID0gdGhpcy5jbWlzRmlsZVVwbG9hZC5jb250YWluZXJOYW1lO1xyXG5cclxuICAgICAgY29uc3QgYmxvYlNlcnZpY2VDbGllbnQgPSBuZXcgQmxvYlNlcnZpY2VDbGllbnQoYGh0dHBzOi8vJHthY2NvdW50TmFtZX0uYmxvYi5jb3JlLndpbmRvd3MubmV0JHtzYXNUb2tlbn1gKTtcclxuICAgICAgY29uc3QgY29udGFpbmVyQ2xpZW50ID0gYmxvYlNlcnZpY2VDbGllbnQuZ2V0Q29udGFpbmVyQ2xpZW50KGNvbnRhaW5lck5hbWUpO1xyXG4gICAgICBjb25zdCBibG9iTmFtZSA9IGAke2ZvbGRlck5hbWV9LyR7ZmlsZS5uYW1lfWA7XHJcbiAgICAgIGNvbnN0IGJsb2NrQmxvYkNsaWVudCA9IGNvbnRhaW5lckNsaWVudC5nZXRCbG9ja0Jsb2JDbGllbnQoYmxvYk5hbWUpO1xyXG5cclxuICAgICAgYXdhaXQgYmxvY2tCbG9iQ2xpZW50LnVwbG9hZERhdGEoZmlsZSwge1xyXG4gICAgICAgIGJsb2JIVFRQSGVhZGVyczogeyBibG9iQ29udGVudFR5cGU6IGZpbGUudHlwZSB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiBibG9ja0Jsb2JDbGllbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwbG9hZEZpbGVJbkFXUyhmaWxlOiBGaWxlLCBmb2xkZXJOYW1lOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBkb21haW5cclxuICAgICAgY29uc3QgY2xvdWRmcm9udERvbWFpbiA9IHRoaXMuYnVja2V0VXJsLmJ1Y2tldERldGFpbHMuQnVja2V0ID09ICdkZXYtYmVlb3MnID8gJ2h0dHBzOi8vZDJ5eDE1cG5jZ211NjMuY2xvdWRmcm9udC5uZXQnIDogJ2h0dHBzOi8vZDJ6OTQ5N3hwOHhiMTIuY2xvdWRmcm9udC5uZXQnIDtcclxuICAgICAgXHJcbiAgICAgIC8vIENyZWF0ZSBhIHVuaXF1ZSBmaWxlIG5hbWVcclxuICAgICAgY29uc3QgZmlsZU5hbWUgPSBgJHtmb2xkZXJOYW1lfS8ke0RhdGUubm93KCl9LSR7ZmlsZS5uYW1lLnJlcGxhY2UoJyAnLCAnXycpfWA7XHJcbiAgXHJcbiAgICAgIC8vIENvbnZlcnQgZmlsZSB0byBidWZmZXJcclxuICAgICAgY29uc3QgZmlsZUJ1ZmZlciA9IGF3YWl0IHRoaXMuZmlsZVRvQXJyYXlCdWZmZXIoZmlsZSk7XHJcbiAgXHJcbiAgICAgIC8vIFByZXBhcmUgdGhlIHVwbG9hZCBwYXJhbWV0ZXJzXHJcbiAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xyXG4gICAgICAgIEJ1Y2tldDogdGhpcy5idWNrZXRVcmwuYnVja2V0RGV0YWlscy5CdWNrZXQsXHJcbiAgICAgICAgS2V5OiBmaWxlTmFtZSxcclxuICAgICAgICBCb2R5OiBmaWxlQnVmZmVyLFxyXG4gICAgICAgIENvbnRlbnRUeXBlOiBmaWxlLnR5cGUsXHJcbiAgICAgICAgLy8gUmVtb3ZlIHB1YmxpYy1yZWFkIEFDTCBpZiB1c2luZyBPQUMvT0FJIGFzIGl0J3Mgbm90IG5lZWRlZCBhbmQgbWF5IGNhdXNlIGlzc3Vlc1xyXG4gICAgICAgIC8vIEFDTDogJ3B1YmxpYy1yZWFkJ1xyXG4gICAgICB9O1xyXG4gIFxyXG4gICAgICAvLyBVcGxvYWQgZmlsZSB0byBTM1xyXG4gICAgICBjb25zdCBjb21tYW5kID0gbmV3IFB1dE9iamVjdENvbW1hbmQocGFyYW1zKTtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnMzQ2xpZW50Py5zZW5kKGNvbW1hbmQpO1xyXG4gIFxyXG4gICAgICAvLyBDb25zdHJ1Y3QgdGhlIENsb3VkRnJvbnQgVVJMIGluc3RlYWQgb2YgUzMgVVJMXHJcbiAgICAgIGNvbnN0IHVybCA9IGAke2Nsb3VkZnJvbnREb21haW59LyR7ZmlsZU5hbWV9YDtcclxuICAgICAgXHJcbiAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB1cGxvYWRpbmcgZmlsZTogJywgZXJyb3IpO1xyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmlsZVRvQXJyYXlCdWZmZXIoZmlsZTogRmlsZSk6IFByb21pc2U8QXJyYXlCdWZmZXI+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQgYXMgQXJyYXlCdWZmZXIpO1xyXG4gICAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcik7XHJcbiAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9VbnNwbGFzaCByZWxhdGVkIEFQSVNcclxuICBzZWFyY2hQaG90b3NJblVuc3BsYXNoKFxyXG4gICAgc2VhcmNoZWRUZXh0OiBzdHJpbmcsXHJcbiAgICBwYWdlOiBudW1iZXIgPSAxLFxyXG4gICAgc2l6ZTogbnVtYmVyID0gMTBcclxuICApIHtcclxuICAgIGNvbnN0IGhlYWRlciA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgIEF1dGhvcml6YXRpb246IGBDbGllbnQtSUQgJHt0aGlzLlVOU1BMQVNIX0FQSV9UT0tFTn1gLFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGBodHRwczovL2FwaS51bnNwbGFzaC5jb20vc2VhcmNoL3Bob3Rvcz9wYWdlPSR7cGFnZX0mcGVyX3BhZ2U9JHtzaXplfSZxdWVyeT0ke3NlYXJjaGVkVGV4dH1gLFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyczogaGVhZGVyLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VydmljZXMvaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBTWpELE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsdUJBQXVCO0lBQ3ZCLHFFQUFxRTtJQUNyRSwrQkFBK0I7SUFFL0IsWUFBb0IsSUFBZ0IsRUFDTixTQUFjO1FBRHhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDTixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBYjVDLG1CQUFjLEdBQVE7WUFDcEIsUUFBUSxFQUFFLHNLQUFzSztZQUNoTCxXQUFXLEVBQUUsVUFBVTtZQUN2QixhQUFhLEVBQUUsV0FBVztTQUMzQixDQUFBO1FBQ0QsdUJBQWtCLEdBQUcsNkNBQTZDLENBQUE7UUFVaEUsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUM7WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxvQkFBb0I7WUFDbkUsV0FBVyxFQUFFLHVCQUF1QixDQUFDO2dCQUNuQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNO2dCQUN0QyxZQUFZLEVBQUUsRUFBRSxN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cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21Db2duaXRvSWRlbnRpdHlQb29sIH0gZnJvbSAnQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1jb2duaXRvLWlkZW50aXR5JztcbmltcG9ydCB7IFMzQ2xpZW50LCBQdXRPYmplY3RDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB7IEJVQ0tFVF9VUkwgfSBmcm9tICcuLi90b2tlbnMvYXBpLXRva2VuJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5cbmV4cG9ydCBjbGFzcyBJbWFnZVVwbGFvZFNlcnZpY2Uge1xuICBjbWlzRmlsZVVwbG9hZDogYW55ID0ge1xuICAgIHNhc1Rva2VuOiAnc3Y9MjAyMi0xMS0wMiZzcz1iZnF0JnNydD1zY28mc3A9cndkbGFjdXBpeXRmeCZzZT0yMDI5LTEyLTMxVDIzOjQ1OjAzWiZzdD0yMDI0LTEyLTE4VDE1OjQ1OjAzWiZzcHI9aHR0cHMsaHR0cCZzaWc9UWpqNVhlNUtpTXh2RVRtNnJQJTJGWlAzMWkzeERTOXQxUXV5dUtnY1klMkZQQzglM0QnLFxuICAgIGFjY291bnROYW1lOiAnY21pc3Byb2QnLFxuICAgIGNvbnRhaW5lck5hbWU6ICdwcm9kLWNtaXMnXG4gIH1cbiAgVU5TUExBU0hfQVBJX1RPS0VOID0gJ2lNbjQzSENaX0ZMQ01Xa1pnVXRNQWp0LXAtTTZ2bWFCMVpfM2ZiZXRtSkEnXG5cbiAgcHJpdmF0ZSBzM0NsaWVudD86IFMzQ2xpZW50O1xuICAvLyByZWdpb24gPSAndXMtZWFzdC0xJ1xuICAvLyBpZGVudGl0eVBvb2xJZCA9ICd1cy1lYXN0LTE6ZDRiYzc3MGEtNTY2NC00MDUxLWJkNjYtNjg2MWE2ZWZiZDljJztcbiAgLy8gYnVja2V0TmFtZSA9IGAke2J1Y2tldFVybH1gO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBASW5qZWN0KEJVQ0tFVF9VUkwpIHByaXZhdGUgYnVja2V0VXJsOiBhbnkpIFxuICAge1xuICAgIC8vIGNvbnNvbGUubG9nKCdidWNrZXRVcmwnLCB0aGlzLmJ1Y2tldFVybCk7XG4gICAgdGhpcy5zM0NsaWVudCA9IG5ldyBTM0NsaWVudCh7XG4gICAgICByZWdpb246IHRoaXMuYnVja2V0VXJsPy5idWNrZXREZXRhaWxzPy5SZWdpb24sIC8vIGUuZy4sICd1cy1lYXN0LTEnXG4gICAgICBjcmVkZW50aWFsczogZnJvbUNvZ25pdG9JZGVudGl0eVBvb2woe1xuICAgICAgICBpZGVudGl0eVBvb2xJZDogdGhpcy5idWNrZXRVcmw/LnBvb2xJZCxcbiAgICAgICAgY2xpZW50Q29uZmlnOiB7IHJlZ2lvbjogdGhpcy5idWNrZXRVcmw/LmJ1Y2tldERldGFpbHM/LlJlZ2lvbiB9LFxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEZpbGVJbkF6dXJlKGZpbGU6IEZpbGUsIGZvbGRlck5hbWU6IHN0cmluZyA9ICdjbWlzJykge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3QgeyBCbG9iU2VydmljZUNsaWVudCB9ID0gYXdhaXQgaW1wb3J0KCdAYXp1cmUvc3RvcmFnZS1ibG9iJyk7XG5cbiAgICAgIGNvbnN0IHNhc1Rva2VuID0gdGhpcy5jbWlzRmlsZVVwbG9hZC5zYXNUb2tlbi5zdGFydHNXaXRoKCc/JylcbiAgICAgICAgPyB0aGlzLmNtaXNGaWxlVXBsb2FkLnNhc1Rva2VuXG4gICAgICAgIDogYD8ke3RoaXMuY21pc0ZpbGVVcGxvYWQuc2FzVG9rZW59YDtcbiAgICAgIGNvbnN0IGFjY291bnROYW1lID0gdGhpcy5jbWlzRmlsZVVwbG9hZC5hY2NvdW50TmFtZTtcbiAgICAgIGNvbnN0IGNvbnRhaW5lck5hbWUgPSB0aGlzLmNtaXNGaWxlVXBsb2FkLmNvbnRhaW5lck5hbWU7XG5cbiAgICAgIGNvbnN0IGJsb2JTZXJ2aWNlQ2xpZW50ID0gbmV3IEJsb2JTZXJ2aWNlQ2xpZW50KGBodHRwczovLyR7YWNjb3VudE5hbWV9LmJsb2IuY29yZS53aW5kb3dzLm5ldCR7c2FzVG9rZW59YCk7XG4gICAgICBjb25zdCBjb250YWluZXJDbGllbnQgPSBibG9iU2VydmljZUNsaWVudC5nZXRDb250YWluZXJDbGllbnQoY29udGFpbmVyTmFtZSk7XG4gICAgICBjb25zdCBibG9iTmFtZSA9IGAke2ZvbGRlck5hbWV9LyR7ZmlsZS5uYW1lfWA7XG4gICAgICBjb25zdCBibG9ja0Jsb2JDbGllbnQgPSBjb250YWluZXJDbGllbnQuZ2V0QmxvY2tCbG9iQ2xpZW50KGJsb2JOYW1lKTtcblxuICAgICAgYXdhaXQgYmxvY2tCbG9iQ2xpZW50LnVwbG9hZERhdGEoZmlsZSwge1xuICAgICAgICBibG9iSFRUUEhlYWRlcnM6IHsgYmxvYkNvbnRlbnRUeXBlOiBmaWxlLnR5cGUgfSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYmxvY2tCbG9iQ2xpZW50O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEZpbGVJbkFXUyhmaWxlOiBGaWxlLCBmb2xkZXJOYW1lOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uIGRvbWFpblxuICAgICAgY29uc3QgY2xvdWRmcm9udERvbWFpbiA9IHRoaXMuYnVja2V0VXJsLmJ1Y2tldERldGFpbHMuQnVja2V0ID09ICdkZXYtYmVlb3MnID8gJ2h0dHBzOi8vZDJ5eDE1cG5jZ211NjMuY2xvdWRmcm9udC5uZXQnIDogJ2h0dHBzOi8vZDJ6OTQ5N3hwOHhiMTIuY2xvdWRmcm9udC5uZXQnIDtcbiAgICAgIFxuICAgICAgLy8gQ3JlYXRlIGEgdW5pcXVlIGZpbGUgbmFtZVxuICAgICAgY29uc3QgZmlsZU5hbWUgPSBgJHtmb2xkZXJOYW1lfS8ke0RhdGUubm93KCl9LSR7ZmlsZS5uYW1lLnJlcGxhY2UoJyAnLCAnXycpfWA7XG4gIFxuICAgICAgLy8gQ29udmVydCBmaWxlIHRvIGJ1ZmZlclxuICAgICAgY29uc3QgZmlsZUJ1ZmZlciA9IGF3YWl0IHRoaXMuZmlsZVRvQXJyYXlCdWZmZXIoZmlsZSk7XG4gIFxuICAgICAgLy8gUHJlcGFyZSB0aGUgdXBsb2FkIHBhcmFtZXRlcnNcbiAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xuICAgICAgICBCdWNrZXQ6IHRoaXMuYnVja2V0VXJsLmJ1Y2tldERldGFpbHMuQnVja2V0LFxuICAgICAgICBLZXk6IGZpbGVOYW1lLFxuICAgICAgICBCb2R5OiBmaWxlQnVmZmVyLFxuICAgICAgICBDb250ZW50VHlwZTogZmlsZS50eXBlLFxuICAgICAgICAvLyBSZW1vdmUgcHVibGljLXJlYWQgQUNMIGlmIHVzaW5nIE9BQy9PQUkgYXMgaXQncyBub3QgbmVlZGVkIGFuZCBtYXkgY2F1c2UgaXNzdWVzXG4gICAgICAgIC8vIEFDTDogJ3B1YmxpYy1yZWFkJ1xuICAgICAgfTtcbiAgXG4gICAgICAvLyBVcGxvYWQgZmlsZSB0byBTM1xuICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBQdXRPYmplY3RDb21tYW5kKHBhcmFtcyk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuczNDbGllbnQ/LnNlbmQoY29tbWFuZCk7XG4gIFxuICAgICAgLy8gQ29uc3RydWN0IHRoZSBDbG91ZEZyb250IFVSTCBpbnN0ZWFkIG9mIFMzIFVSTFxuICAgICAgY29uc3QgdXJsID0gYCR7Y2xvdWRmcm9udERvbWFpbn0vJHtmaWxlTmFtZX1gO1xuICAgICAgXG4gICAgICByZXR1cm4gdXJsO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB1cGxvYWRpbmcgZmlsZTogJywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaWxlVG9BcnJheUJ1ZmZlcihmaWxlOiBGaWxlKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBBcnJheUJ1ZmZlcik7XG4gICAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcik7XG4gICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XG4gICAgfSk7XG4gIH1cblxuICAvL1Vuc3BsYXNoIHJlbGF0ZWQgQVBJU1xuICBzZWFyY2hQaG90b3NJblVuc3BsYXNoKFxuICAgIHNlYXJjaGVkVGV4dDogc3RyaW5nLFxuICAgIHBhZ2U6IG51bWJlciA9IDEsXG4gICAgc2l6ZTogbnVtYmVyID0gMTBcbiAgKSB7XG4gICAgY29uc3QgaGVhZGVyID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgIEF1dGhvcml6YXRpb246IGBDbGllbnQtSUQgJHt0aGlzLlVOU1BMQVNIX0FQSV9UT0tFTn1gLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICBgaHR0cHM6Ly9hcGkudW5zcGxhc2guY29tL3NlYXJjaC9waG90b3M/cGFnZT0ke3BhZ2V9JnBlcl9wYWdlPSR7c2l6ZX0mcXVlcnk9JHtzZWFyY2hlZFRleHR9YCxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyczogaGVhZGVyLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxufVxuIl19
@@ -1,7 +1,7 @@
1
1
  import { HttpHeaders } from "@angular/common/http";
2
2
  import { Inject, Injectable } from "@angular/core";
3
3
  import { map } from "rxjs";
4
- import { API_URL, CMIS_URL, ECOMMERCE_URL, PASSBOOK_URL, APPOINTMENT_URL } from '../tokens/api-token';
4
+ import { API_URL, CMIS_URL, ECOMMERCE_URL, PASSBOOK_URL, APPOINTMENT_URL, RECOMMENDATION_URL } from '../tokens/api-token';
5
5
  import { Category } from "../ecommerce/styles/category.modal";
6
6
  import { Product } from "../ecommerce/styles/product.modal";
7
7
  import { Collection } from "../ecommerce/styles/Collection.modal";
@@ -10,7 +10,7 @@ import * as i0 from "@angular/core";
10
10
  import * as i1 from "@angular/common/http";
11
11
  import * as i2 from "ngx-cookie-service";
12
12
  export class RestService {
13
- constructor(http, BASE_URL, ECOMMERCE_URL, CMIS_URL, cookieService, storage, PASSBOOK_URL, APPOINTMENT_URL) {
13
+ constructor(http, BASE_URL, ECOMMERCE_URL, CMIS_URL, cookieService, storage, PASSBOOK_URL, APPOINTMENT_URL, RECOMMENDATION_URL) {
14
14
  this.http = http;
15
15
  this.BASE_URL = BASE_URL;
16
16
  this.ECOMMERCE_URL = ECOMMERCE_URL;
@@ -19,6 +19,7 @@ export class RestService {
19
19
  this.storage = storage;
20
20
  this.PASSBOOK_URL = PASSBOOK_URL;
21
21
  this.APPOINTMENT_URL = APPOINTMENT_URL;
22
+ this.RECOMMENDATION_URL = RECOMMENDATION_URL;
22
23
  // private BASE_URL: string = "https://dev-api.simpo.ai/";
23
24
  // private ECOMMERCE_URL: string = "https://dev-ecommerce.simpo.ai/";
24
25
  // private CMIS_URL: string = "https://api-cmis.tejsoft.com/"; //production
@@ -416,7 +417,7 @@ export class RestService {
416
417
  return this.http.post(this.BASE_URL + `ecommerce/user/try-home`, request);
417
418
  }
418
419
  createEnrollmentScheme(enrollement) {
419
- return this.http.post(` https://stageapi-orra.letsmobility.com/enrollment/create/new/temp?manualPay=true&isWebRequest=true
420
+ return this.http.post(` https://stageapi-orra.letsmobility.com/enrollment/create/new/temp?manualPay=true&isWebRequest=true
420
421
  `, enrollement);
421
422
  }
422
423
  getHomeAppointmentList(userId) {
@@ -570,7 +571,16 @@ export class RestService {
570
571
  getMenuItems(menuId) {
571
572
  return this.http.get(this.BASE_URL + `ecommerce/menu/${menuId}`);
572
573
  }
573
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RestService, deps: [{ token: i1.HttpClient }, { token: API_URL }, { token: ECOMMERCE_URL }, { token: CMIS_URL }, { token: i2.CookieService }, { token: LOCAL_STORAGE }, { token: PASSBOOK_URL }, { token: APPOINTMENT_URL }], target: i0.ɵɵFactoryTarget.Injectable }); }
574
+ getHomeRecommendations(businessId, UserId) {
575
+ return this.http.get(this.RECOMMENDATION_URL + `api/v1/recommendations/${UserId}/home?businessId=${businessId}&page=1&pageSize=20`);
576
+ }
577
+ getCartRecommendations(businessId, UserId) {
578
+ return this.http.get(this.RECOMMENDATION_URL + `api/v1/recommendations/${UserId}/cart?businessId=${businessId}&page=1&pageSize=15`);
579
+ }
580
+ getProductDescriptionRecommendations(businessId, UserId) {
581
+ return this.http.get(this.RECOMMENDATION_URL + `api/v1/recommendations/${UserId}/pdp?businessId=${businessId}&page=1&pageSize=10`);
582
+ }
583
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RestService, deps: [{ token: i1.HttpClient }, { token: API_URL }, { token: ECOMMERCE_URL }, { token: CMIS_URL }, { token: i2.CookieService }, { token: LOCAL_STORAGE }, { token: PASSBOOK_URL }, { token: APPOINTMENT_URL }, { token: RECOMMENDATION_URL }], target: i0.ɵɵFactoryTarget.Injectable }); }
574
584
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RestService, providedIn: 'root' }); }
575
585
  }
576
586
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RestService, decorators: [{
@@ -596,5 +606,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
596
606
  }] }, { type: undefined, decorators: [{
597
607
  type: Inject,
598
608
  args: [APPOINTMENT_URL]
609
+ }] }, { type: undefined, decorators: [{
610
+ type: Inject,
611
+ args: [RECOMMENDATION_URL]
599
612
  }] }] });
600
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxHQUFHLEVBQXdDLE1BQU0sTUFBTSxDQUFDO0FBS2pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBQzdELE9BQU8sRUFBeUIsT0FBTyxFQUE2QixNQUFNLG1DQUFtQyxDQUFDO0FBQzlHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUdsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7QUFNaEUsTUFBTSxPQUFPLFdBQVc7SUFZdEIsWUFDbUIsSUFBZ0IsRUFDUixRQUFnQixFQUNWLGFBQXFCLEVBQzFCLFFBQWdCLEVBQ3pCLGFBQTRCLEVBQ2QsT0FBb0IsRUFDckIsWUFBb0IsRUFDakIsZUFBdUI7UUFQdkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNSLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDVixrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ3pCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUNyQixpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNqQixvQkFBZSxHQUFmLGVBQWUsQ0FBUTtRQWxCMUQsMERBQTBEO1FBQzFE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eyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaWJlciwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgUmV2aWV3IH0gZnJvbSBcIi4uL2Vjb21tZXJjZS9zdHlsZXMvcmV2aWV3Lm1vZGFsXCI7XHJcbmltcG9ydCB7IERldmljZUluZm8sIFVzZXIgfSBmcm9tIFwiLi4vZWNvbW1lcmNlL3N0eWxlcy91c2VyLm1vZGFsXCI7XHJcbmltcG9ydCB7IFBpbkNvZGVMb2NhdGlvbkludGVyIH0gZnJvbSBcIi4uL2Vjb21tZXJjZS9zdHlsZXMvUGluY29kZUxvY2F0aW9uSW50ZXIubW9kZWxcIjtcclxuaW1wb3J0IHsgUGluY29kZUxvY2F0aW9uIH0gZnJvbSBcIi4uL2Vjb21tZXJjZS9zdHlsZXMvUGluY29kZUxvY2F0aW9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IEFQSV9VUkwsIENNSVNfVVJMLCBFQ09NTUVSQ0VfVVJMLCBQQVNTQk9PS19VUkwsIEFQUE9JTlRNRU5UX1VSTCB9IGZyb20gJy4uL3Rva2Vucy9hcGktdG9rZW4nO1xyXG5pbXBvcnQgeyBDYXRlZ29yeSB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL2NhdGVnb3J5Lm1vZGFsXCJcclxuaW1wb3J0IHsgY2hlY2tJdGVtQWxyZWFkeUFkZGVkLCBQcm9kdWN0LCBzeW5jSXRlbVRvU2VydmVyREJSZXF1ZXN0IH0gZnJvbSBcIi4uL2Vjb21tZXJjZS9zdHlsZXMvcHJvZHVjdC5tb2RhbFwiO1xyXG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSBcIi4uL2Vjb21tZXJjZS9zdHlsZXMvQ29sbGVjdGlvbi5tb2RhbFwiO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tIFwiLi9zdG9yYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gXCJuZ3gtY29va2llLXNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTE9DQUxfU1RPUkFHRSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2UudG9rZW4nO1xyXG5pbXBvcnQgeyBTdG9yYWdlTGlrZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0b3JhZ2UtbGlrZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICAvLyBwcml2YXRlIEJBU0VfVVJMOiBzdHJpbmcgPSBcImh0dHBzOi8vZGV2LWFwaS5zaW1wby5haS9cIjtcclxuICAvLyBwcml2YXRlIEVDT01NRVJDRV9VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9kZXYtZWNvbW1lcmNlLnNpbXBvLmFpL1wiO1xyXG4gIC8vIHByaXZhdGUgQ01JU19VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9hcGktY21pcy50ZWpzb2Z0LmNvbS9cIjsgLy9wcm9kdWN0aW9uXHJcbiAgLy8gcHJpdmF0ZSBDTUlTX1VSTDogc3RyaW5nID0gXCJodHRwczovL2Rldi1hcGkuc2ltcG8uYWkvXCI7IC8vZGV2XHJcbiAgLy8gcHJpdmF0ZSBDTUlTX1VSTDogc3RyaW5nID0gXCJodHRwczovL3N0YWdlYXBpLWNtaXMudGVqc29mdC5jb20vXCI7IC8vc3RhZ2VcclxuICBwcml2YXRlIGVudmlyb25tZW50VHlwZVN1YnNjcmliZXI6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIGJ1c2luZXNzRGV0YWlsczogYW55O1xyXG4gIHN1YkluZHVzdHJ5TmFtZTogYW55O1xyXG4gIGlzSmV3ZWxsZXJ5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgQEluamVjdChBUElfVVJMKSBwcml2YXRlIEJBU0VfVVJMOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KEVDT01NRVJDRV9VUkwpIHByaXZhdGUgRUNPTU1FUkNFX1VSTDogc3RyaW5nLFxyXG4gICAgQEluamVjdChDTUlTX1VSTCkgcHJpdmF0ZSBDTUlTX1VSTDogc3RyaW5nLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxyXG4gICAgQEluamVjdChMT0NBTF9TVE9SQUdFKSBwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2VMaWtlLFxyXG4gICAgQEluamVjdChQQVNTQk9PS19VUkwpIHByaXZhdGUgUEFTU0JPT0tfVVJMOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KEFQUE9JTlRNRU5UX1VSTCkgcHJpdmF0ZSBBUFBPSU5UTUVOVF9VUkw6IHN0cmluZyxcclxuICAgIC8vIEBJbmplY3QoUkVDT01NRU5EQVRJT05fVVJMKSBwcml2YXRlIFJFQ09NTUVOREFUSU9OX1VSTDogc3RyaW5nXHJcbiAgKSB7XHJcbiAgfVxyXG4gIG9ycmFCYXNlVXJsOiBzdHJpbmcgPSAnaHR0cHM6Ly9zdGFnZWFwaS1vcnJhLmxldHNtb2JpbGl0eS5jb20vJztcclxuICAvLyBwYXNzQm9va1VybDogc3RyaW5nID0gXCJodHRwczovL3Byb2QtcGFzc2Jvb2suc2ltcG8uYWkvXCI7XHJcbiAgZ2V0QnVzaW5lc3NEZXRhaWxzKCkge1xyXG4gICAgdGhpcy5pc0pld2VsbGVyeSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdpc01hdGVyaWFsQmFzZWRQcmljaW5nJykgPT0gJ3RydWUnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmVudmlyb25tZW50VHlwZVN1YnNjcmliZXIpXHJcbiAgICAgIHRoaXMuZW52aXJvbm1lbnRUeXBlU3Vic2NyaWJlcj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGdldEZlYXR1cmVkUHJvZHVjdChjb2xsZWN0aW9uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHtcclxuICAgIHRoaXMuZ2V0QnVzaW5lc3NEZXRhaWxzKCk7XHJcbiAgICBsZXQgc3ViSW5kdXN0cnlJZDogc3RyaW5nIHwgbnVsbCA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKTtcclxuICAgIGlmICghc3ViSW5kdXN0cnlJZClcclxuICAgICAgc3ViSW5kdXN0cnlJZCA9IFwiXCI7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2NvbGxlY3Rpb24vaWQ/Y29sbGVjdGlvbklkPSR7Y29sbGVjdGlvbklkfSZpc0pld2VsbGVyeT0ke3RoaXMuaXNKZXdlbGxlcnl9YCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmRhdGE/Lm1hcCgocHJvZHVjdDogYW55KSA9PiBuZXcgUHJvZHVjdChwcm9kdWN0KSkpKTtcclxuICB9XHJcbiAgZ2V0Q2F0ZWdvcmllc0J5Q29sbGVjdGlvbklkKGNvbGxlY3Rpb25JZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9pbnZlbnRvcnkvY2F0ZWdvcnkvY29sbGVjdGlvbklkP2NvbGxlY3Rpb25JZD0ke2NvbGxlY3Rpb25JZH1gKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChjYXRlZ29yeTogYW55KSA9PiBuZXcgQ2F0ZWdvcnkoY2F0ZWdvcnkpKSkpO1xyXG4gIH1cclxuICAvLyBodHRwczovL25ld2Rldi1hcGkuc2ltcG8uYWkvXHJcbiAgZ2V0QWxsQ2F0ZWdvcmllc0J5QnVzaW5lc3NJZChwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9pbnZlbnRvcnkvZ2V0L2NhdGVnb3J5YCwgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuICBnZXRQYXNzYm9va09yZGVyU3RhdHVzKG9yZGVySWQ6IGFueSkge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5QQVNTQk9PS19VUkwgKyBgcGFzc2Jvb2svbWFudWFsL3BheW1lbnQvc3RhdHVzP3BheW1lbnRPcmRlcklkPSR7b3JkZXJJZH1gLCB7fSwgeyBoZWFkZXJzOiBoZWFkZXJzIH0pXHJcbiAgfVxyXG4gIGdldFByb2R1Y3RCeVNlbGVjdGVkQ2F0ZWdvcnkoY2F0ZWdvcnlJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC8ke2NhdGVnb3J5SWR9YFxyXG4gICAgKVxyXG4gIH1cclxuICBnZXRBbGxTY2hlbWVzKHVzZXJJZD86IGFueSwgc3RvcmVJZD86IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLlBBU1NCT09LX1VSTCArIGBleHQvY29ubmVjdC9zaW1wby91c2VyP3VzZXJJZD0ke3VzZXJJZH0mc3RvcmVJZD0ke3N0b3JlSWR9YCk7XHJcbiAgfVxyXG4gIGdldEFsbFJlZGVtcHRpb25TY2hlbWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5vcnJhQmFzZVVybCArIGBwYXNzQm9vay9yZWRlbXB0aW9uL2Ftb3VudC9jaGVjaz91c2VyQ29kZT1DXzAwMDMxMzg4NWApO1xyXG4gIH1cclxuICBnZXRBbGxQcm9kdWN0cyhwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvaXRlbS9zZWFyY2g/aXNKZXdlbGxlcnk9JHt0aGlzLmlzSmV3ZWxsZXJ5fWAsIHBheWxvYWQpO1xyXG4gIH1cclxuICBnZXRQcm9kdWN0RGV0YWlscyhwcm9kdWN0SWQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XHJcbiAgICB0aGlzLmdldEJ1c2luZXNzRGV0YWlscygpO1xyXG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICBwYWdlTm86IDAsXHJcbiAgICAgIHBhZ2VTaXplOiAxLFxyXG4gICAgICBpdGVtSWQ6IHByb2R1Y3RJZCxcclxuICAgICAgc3ViSW5kdXN0cnlJZDogdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJzdWJJbmR1c3RyeUlkXCIpLFxyXG4gICAgICB1c2VySWQ6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwicGVySWRcIikgPz8gbnVsbCxcclxuICAgICAgcmVxdWVzdDogXCJVU0VSXCJcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvaXRlbS9zZWFyY2g/aXNKZXdlbGxlcnk9JHt0aGlzLmlzSmV3ZWxsZXJ5fWAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKSkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvZHVjdERldGFpbHNWMihzbHVnTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcclxuICAgIHRoaXMuZ2V0QnVzaW5lc3NEZXRhaWxzKCk7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIHBhZ2VObzogMCxcclxuICAgICAgcGFnZVNpemU6IDEsXHJcbiAgICAgIHNsdWdpZmllZE5hbWU6IHNsdWdOYW1lLFxyXG4gICAgICBzdWJJbmR1c3RyeUlkOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIiksXHJcbiAgICAgIGJ1c2luZXNzSWQ6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcclxuICAgICAgdXNlcklkOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInBlcklkXCIpID8/IG51bGwsXHJcbiAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2l0ZW1WMi9zZWFyY2g/aXNKZXdlbGxlcnk9JHt0aGlzLmlzSmV3ZWxsZXJ5fWAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKSkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29sbGVjdGlvbkJ5SWRzKGNvbGxlY3Rpb25JZHM6IHN0cmluZ1tdKSB7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBpZHM6IGNvbGxlY3Rpb25JZHNcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL2ludmVudG9yeS9jb2xsZWN0aW9uL2xpc3QvYWxsYCwgcGF5bG9hZCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmRhdGE/Lm1hcCgoY29sbGVjdGlvbjogYW55KSA9PiBuZXcgQ29sbGVjdGlvbihjb2xsZWN0aW9uKSkpKTtcclxuICB9XHJcblxyXG4gIGdldEFsbENhdGVnb3JpZXMoKSB7XHJcblxyXG4gICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/IFwiXCI7XHJcbiAgICBjb25zdCBzdWJJbmR1c3RyeUlkOiBzdHJpbmcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJzdWJJbmR1c3RyeUlkXCIpID8/IFwiXCI7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9pbnZlbnRvcnkvZmVhdHVyZWQ/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnN1YklkPSR7c3ViSW5kdXN0cnlJZH1gKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChjYXRlZ29yeTogYW55KSA9PiBuZXcgQ2F0ZWdvcnkoY2F0ZWdvcnkpKSkpO1xyXG4gIH1cclxuICBnZXRBbGxDb2xsZWN0aW9ucygpIHtcclxuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgcGFnZU5vOiAwLFxyXG4gICAgICBwYWdlU2l6ZTogMTAwLFxyXG4gICAgICByZXF1ZXN0OiBcIlVTRVJcIixcclxuICAgICAgYnVzaW5lc3NJZDogdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgJ2Vjb21tZXJjZS9pbnZlbnRvcnkvZ2V0L2NvbGxlY3Rpb24nLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YS5kYXRhPy5tYXAoKGNvbGxlY3Rpb246IGFueSkgPT4gbmV3IENvbGxlY3Rpb24oY29sbGVjdGlvbikpKSk7XHJcbiAgfVxyXG5cclxuICBnZXRGaWx0ZXJlZFByb2R1Y3QoY29sbGVjdGlvbklkczogc3RyaW5nW10sIGNhdGVnb3J5SWRzOiBzdHJpbmdbXSwgc2VhcmNoVGV4dDogc3RyaW5nLCBtaW5QcmljZTogbnVtYmVyLCBtYXhQcmljZTogbnVtYmVyLCBtaW5SYXRpbmc6IG51bWJlciwgbWF4UmF0aW5nOiBudW1iZXIsIHNvcnRCeTogc3RyaW5nLCBwYWdlTm86IG51bWJlciwgc2l6ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmdldEJ1c2luZXNzRGV0YWlscygpO1xyXG4gICAgbGV0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgXCJidXNpbmVzc0lkXCI6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcclxuICAgICAgXCJzdWJJbmR1c3RyeUlkXCI6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKSxcclxuICAgICAgXCJjb2xsZWN0aW9uSWRcIjogY29sbGVjdGlvbklkcyxcclxuICAgICAgXCJjYXRlZ29yeUlkXCI6IGNhdGVnb3J5SWRzLFxyXG4gICAgICBcInNlYXJjaFRleHRcIjogc2VhcmNoVGV4dCxcclxuICAgICAgXCJzb3J0QnlcIjogc29ydEJ5LFxyXG4gICAgICBcInBhZ2VOb1wiOiBwYWdlTm8sXHJcbiAgICAgIFwicGFnZVNpemVcIjogc2l6ZSxcclxuICAgICAgXCJ1c2VySWRcIjogdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJwZXJJZFwiKSA/PyBudWxsLFxyXG4gICAgICByZXF1ZXN0OiBcIlVTRVJcIlxyXG4gICAgfVxyXG4gICAgaWYgKG1pblByaWNlID4gMClcclxuICAgICAgcGF5bG9hZFtcIm1pblByaWNlXCJdID0gbWluUHJpY2U7XHJcbiAgICBpZiAobWF4UHJpY2UgPiAwKVxyXG4gICAgICBwYXlsb2FkW1wibWF4UHJpY2VcIl0gPSBtYXhQcmljZTtcclxuICAgIGlmIChtaW5SYXRpbmcgPiAwKVxyXG4gICAgICBwYXlsb2FkW1wibWluUmF0aW5nXCJdID0gbWluUmF0aW5nO1xyXG4gICAgaWYgKG1heFJhdGluZyA+IDApXHJcbiAgICAgIHBheWxvYWRbXCJtYXhSYXRpbmdcIl0gPSBtYXhSYXRpbmc7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2l0ZW1WMi9zZWFyY2g/aXNKZXdlbGxlcnk9JHt0aGlzLmlzSmV3ZWxsZXJ5fWAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY291bnQ6IHJlc3BvbnNlLmRhdGEuY291bnQsXHJcbiAgICAgICAgbWluUHJpY2U6IHJlc3BvbnNlLmRhdGEubWluUHJpY2UsXHJcbiAgICAgICAgbWF4UHJpY2U6IHJlc3BvbnNlLmRhdGEubWF4UHJpY2UsXHJcbiAgICAgICAgZGF0YTogcmVzcG9uc2UuZGF0YS5kYXRhPy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gbmV3IFByb2R1Y3QocHJvZHVjdCkpXHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICB9XHJcbiAgZ2V0UHJvZHVjdEJ5Q2F0ZWdvcnlJZChjYXRlZ29yeUlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZ2V0QnVzaW5lc3NEZXRhaWxzKCk7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIFwiYnVzaW5lc3NJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIiksXHJcbiAgICAgIFwiY2F0ZWdvcnlJZFwiOiBbY2F0ZWdvcnlJZF0sXHJcbiAgICAgIFwic3ViSW5kdXN0cnlJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIiksXHJcbiAgICAgIFwicGFnZU5vXCI6IDAsXHJcbiAgICAgIFwicGFnZVNpemVcIjogMTAsXHJcbiAgICAgIFwidXNlcklkXCI6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwicGVySWRcIikgPz8gbnVsbCxcclxuICAgICAgcmVxdWVzdDogXCJVU0VSXCJcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvaXRlbS9zZWFyY2g/aXNKZXdlbGxlcnk9JHt0aGlzLmlzSmV3ZWxsZXJ5fWAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY291bnQ6IHJlc3BvbnNlLmNvdW50LFxyXG4gICAgICAgIGRhdGE6IHJlc3BvbnNlLmRhdGEuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKVxyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcbiAgfVxyXG4gIGdldFByb2R1Y3RCeUNvbGxlY3Rpb25JZChjb2xsZWN0aW9uSWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5nZXRCdXNpbmVzc0RldGFpbHMoKTtcclxuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgXCJidXNpbmVzc0lkXCI6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcclxuICAgICAgXCJjb2xsZWN0aW9uSWRcIjogW2NvbGxlY3Rpb25JZF0sXHJcbiAgICAgIFwic3ViSW5kdXN0cnlJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIiksXHJcbiAgICAgIFwicGFnZU5vXCI6IDAsXHJcbiAgICAgIFwicGFnZVNpemVcIjogMTAsXHJcbiAgICAgIFwidXNlcklkXCI6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwicGVySWRcIikgPz8gbnVsbCxcclxuICAgICAgcmVxdWVzdDogXCJVU0VSXCJcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvaXRlbS9zZWFyY2g/aXNKZXdlbGxlcnk9JHt0aGlzLmlzSmV3ZWxsZXJ5fWAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY291bnQ6IHJlc3BvbnNlLmNvdW50LFxyXG4gICAgICAgIGRhdGE6IHJlc3BvbnNlLmRhdGEuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKVxyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBhZGRSZXZpZXcocGF5bG9hZDogUmV2aWV3KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9hZGQvcmV2aWV3YCwgcGF5bG9hZCk7XHJcbiAgfVxyXG4gIGdldEFsbFJldmlld3MocHJvZHVjdElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvZmlsdGVyL3Jldmlld3M/cHJvZHVjdElkPSR7cHJvZHVjdElkfWAsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVPVFAobW9iaWxlOiBzdHJpbmcsIGNvdW50cnlDb2RlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGJ1c2luZXNzSWQ6IHN0cmluZyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSA/PyBcIlwiO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvb3RwL3RyaWdnZXI/bW9iaWxlPSR7bW9iaWxlfSZjb3VudHJ5Q29kZT0ke2NvdW50cnlDb2RlfSZidXNpbmVzc0lkPSR7YnVzaW5lc3NJZH1gLCBudWxsKTtcclxuICB9XHJcbiAgdmVyaWZ5T1RQKG1vYmlsZTogc3RyaW5nLCBvdHA6IHN0cmluZywgZGV2aWNlSW5mbzogRGV2aWNlSW5mbykge1xyXG4gICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/IFwiXCI7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2F1dGhlbnRpY2F0ZT9tb2JpbGU9JHttb2JpbGV9Jm90cD0ke290cH0mYnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9YCwgZGV2aWNlSW5mbyk7XHJcbiAgfVxyXG4gIHJlc2VuZE9UUChtb2JpbGU6IHN0cmluZywgY291bnRyeUNvZGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/IFwiXCI7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9yZXNlbmQ/bW9iaWxlPSR7bW9iaWxlfSZjb3VudHJ5Q29kZT0ke2NvdW50cnlDb2RlfSZidXNpbmVzc0lkPSR7YnVzaW5lc3NJZH1gLCBudWxsKTtcclxuICB9XHJcbiAgYXBwbGljYWJsZURpc2NvdW50TGlzdChjYXJ0SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvZGlzY291bnQtY291cG9uLyR7Y2FydElkfS9hcHBsaWNhYmlsaXR5L2xpc3RgKTtcclxuICB9XHJcblxyXG4gIGFkZEl0ZW1Ub0RCKHVzZXJDYXJ0OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9jYXJ0YCwgdXNlckNhcnQpO1xyXG4gIH1cclxuICBnZXRVc2VySXRlbXModXNlcklkOiBzdHJpbmcsIGNhcnRUeXBlOiAnQ0FSVCcgfCAnV0lTSExJU1QnIHwgJ1RSSUFMX0NBUlQnKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9jYXJ0P3VzZXJJZD0ke3VzZXJJZH0mY2FydFR5cGU9JHtjYXJ0VHlwZX1gKTtcclxuICB9XHJcbiAgZ2V0VXNlckluZm8odXNlcklkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvZ2V0L3VzZXI/dXNlcklkPSR7dXNlcklkfWAsIG51bGwpO1xyXG4gIH1cclxuICBhZGRVc2VyQWRkcmVzcyh1c2VyOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvdXBkYXRlL3VzZXJgLCB1c2VyKTtcclxuICB9XHJcbiAgdXBkYXRlUHJvZmlsZShwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvdXBkYXRlL3VzZXJgLCBwYXlsb2FkKTtcclxuICB9XHJcbiAgZ2V0VXNlck9yZGVycyhwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL3VzZXIvb3JkZXJgLCBwYXlsb2FkKTtcclxuICB9XHJcbiAgZ2V0VXNlcldpc2hsaXN0KHVzZXJJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9jYXJ0P3VzZXJJZD0ke3VzZXJJZH0mY2FydFR5cGU9V0lTSExJU1RgKVxyXG4gIH1cclxuICBtb3ZlSXRlbVRvQ2FydCh1c2VySWQ6IHN0cmluZywgcGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci91cGRhdGUvY2FydD91c2VySWQ9JHt1c2VySWR9YCwgcGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICAvLyBQYXltZW50XHJcbiAgY3JlYXRlUGF5bWVudFRva2VuKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuRUNPTU1FUkNFX1VSTCArIGBwYXltZW50L29yZGVyYCwgcGF5bG9hZCk7XHJcbiAgfVxyXG4gIGNoZWNrUGF5bWVudFN0YXR1cyhwYXlsb2FkOiBhbnkpIHtcclxuICAgIGxldCBpc0pld2VsbGVyeSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdpc01hdGVyaWFsQmFzZWRQcmljaW5nJykgPT0gJ3RydWUnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgbGV0IHBheWxvYWRXaXRoSmV3ZWxsZXJ5ID0geyAuLi5wYXlsb2FkLCBpc0pld2VsbGVyeTogaXNKZXdlbGxlcnkgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkVDT01NRVJDRV9VUkwgKyBgcGF5bWVudC9zdGF0dXNgLCBwYXlsb2FkV2l0aEpld2VsbGVyeSk7XHJcbiAgfVxyXG4gIGdldFJlY2VudFZpZXdQcm9kdWN0KHVzZXJJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9yZWNlbnRWaWV3P3VzZXJJZD0ke3VzZXJJZH1gLCBudWxsKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKSkpOztcclxuICB9XHJcblxyXG4gIHNlbmRTaWdudXBPVFAocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9zaWdudXAvb3RwL3RyaWdnZXJgLCBwYXlsb2FkKTtcclxuICB9XHJcblxyXG4gIHZlcmlmeVNpZ251cE9UUChwYXlsb2FkOiBhbnkpIHtcclxuICAgIGNvbnN0IGJ1c2luZXNzSWQ6IHN0cmluZyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSA/PyAnJztcclxuICAgIC8vIHBheWxvYWRbXCJidXNpbmVzc0lkXCJdID0gYnVzaW5lc3NJZDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvYXV0aGVudGljYXRlL3NpZ251cGAsIHBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgc2lnbmluUGFzc3dvcmQocGFzc0RhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9hdXRoZW50aWNhdGUvbG9naW5gLCBwYXNzRGF0YSk7XHJcbiAgfVxyXG5cclxuICBlbmRVc2VyUmVmZmVyYWxEZXRhaWxzKHVzZXJJZDogYW55LCByZWZlcnJhbFVuaXF1ZUlkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9hcGkvZW5kLXVzZXIvcmVmZXJyYWxEZXRhaWxzP3VzZXJJZD0ke3VzZXJJZH0mcmVmZXJyYWxVbmlxdWVJZD0ke3JlZmVycmFsVW5pcXVlSWR9YCwge30pXHJcbiAgfVxyXG5cclxuICBjcmVhdGVBcHBvaW50bWVudChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9hZGRgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsTG9jYXRpb24oYnVzaW5lc3NJZDogYW55LCBzaXplOiBudW1iZXIsIHBhZ2U6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9sb2NhdGlvbj9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEFsbFRpbWVTbG90cyhsb2NhdGlvbklkOiBhbnksIGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvdGltZXNsb3RzP2xvY2F0aW9uSWQ9JHtsb2NhdGlvbklkfSZkYXRlPSR7ZGF0ZX1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRBbGxTZXJ2aWNlKGJ1c2luZXNzSWQ6IGFueSwgc2l6ZTogYW55LCBwYWdlOiBhbnksIGxvY2F0aW9uSWQ/OiBhbnkpIHtcclxuICAgIGlmICghbG9jYXRpb25JZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvc2VydmljZT9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfWBcclxuICAgICAgKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL3NlcnZpY2U/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnNpemU9JHtzaXplfSZwYWdlPSR7cGFnZX0mbG9jYXRpb25JZD0ke2xvY2F0aW9uSWR9YFxyXG4gICAgICApXHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsU3RhZmZCeUxvY2F0aW9uKGJ1c2luZXNzSWQ6IGFueSwgc2l6ZTogbnVtYmVyLCBwYWdlOiBudW1iZXIsIGxvY2F0aW9uSWQ6IHN0cmluZywgc2VydmljZUlkOiBzdHJpbmcpIHtcclxuICAgIGlmICghc2VydmljZUlkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9zdGFmZj9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfSZsb2NhdGlvbklkPSR7bG9jYXRpb25JZH1gXHJcbiAgICAgIClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9zdGFmZj9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfSZsb2NhdGlvbklkPSR7bG9jYXRpb25JZH0mc2VydmljZUlkPSR7c2VydmljZUlkfWBcclxuICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QXZhaWxhYmxlU2xvdHMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL2F2YWlsYWJsZS90aW1lc2xvdHNgLCBkYXRhXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZExpc3RGaWVsZHMoYklkOiBhbnksIHNob3dJbkVycDogYW55LCBmb3JtTmFtZTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vZmllbGRzP2J1c2luZXNzSWQ9JHtiSWR9JnN0YXR1cz10cnVlJnNob3dJbkZvcm09JHtzaG93SW5FcnB9JmlzUGFnaW5hdGlvbj1mYWxzZSZmaWVsZENhdGVnb3J5PSR7Zm9ybU5hbWV9YFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWN0aXZlU3Vic2NyaXB0aW9uRm9yRmVlU3RydWN0dXJlKGJ1c2luZXNzSWQ6IGFueSwgZ3JhZGVJZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vc3Vic2NyaXB0aW9uL3BsYW4vbGlzdD9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mZ3JhZGVJZD0ke2dyYWRlSWR9JnN0YXR1cz10cnVlJmlzRGVsZXRlZD1mYWxzZWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNyZWF0ZUFkbWlzc2lvbihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vcmVnaXN0cmF0aW9uL2FkbWlzc2lvbj9yZWdpc3RyYXRpb25JZD0ke3BheWxvYWQ/LnJlZ2lzdHJhdGlvbklkIHx8ICcnfWAsIHBheWxvYWRcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNyZWF0ZVBheW1lbnRMaW5rKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9yZWdpc3RyYXRpb24vYWRtaXNzaW9uL3YyL3BheW1lbnQ/aXNGcm9tV2ViPXRydWVgLCBkYXRhXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBjcmVhdGVSZWdpc3RyYXRpb25Gb3JQYXltZW50KHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9yZWdpc3RyYXRpb24vcmVnaXN0cmF0aW9uL3BheW1lbnRgLCBwYXlsb2FkXHJcbiAgICApXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0U3Vic2NyaXB0aW9uRm9yRmVlU3RydWN0dXJlKGdyYWRlSWQ6IGFueSkge1xyXG4gICAgY29uc3QgYnVzaW5lc3NJZCA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL3N1YnNjcmlwdGlvbi9wbGFuL2xpc3Q/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JmdyYWRlSWQ9JHtncmFkZUlkfWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEZlZVN0cnVjdHVyZShwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9mZWUvc3RydWN0dXJlYCwgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgbmV3RmVlU3RydWN0dXJlR2V0TGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9mZWUvc3RydWN0dXJlL3YyL2ZpbHRlcmAsIGRhdGFcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEFsbERvY3VtZW50KHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXHJcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL21hc3Rlci9kb2N1bWVudFR5cGUvZmlsdGVyYCwgcGF5bG9hZClcclxuICB9XHJcblxyXG4gIGdldExlYWRCeUlkKGxlYWRJZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vbGVhZHMvZ2V0LW9uZT9sZWFkSWQ9JHtsZWFkSWR9YFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0UmVnaXN0cmF0aW9uTGlzdChwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9yZWdpc3RyYXRpb24vZ2V0QWxsYCwgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQ29tcG9uZW50Q2F0ZWdvcmllcygpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGFkbWluL21hc3Rlci90ZW1wbGF0ZS9jYXRlZ29yeS9hbGxgXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNhZmVQYXJzZTxUPihyYXc6IHN0cmluZyB8IG51bGwpOiBUIHwgbnVsbCB7XHJcbiAgICBpZiAoIXJhdykgcmV0dXJuIG51bGw7XHJcbiAgICB0cnkgeyByZXR1cm4gSlNPTi5wYXJzZShyYXcpIGFzIFQ7IH0gY2F0Y2ggeyByZXR1cm4gbnVsbDsgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VGVtcGxhdGUoKSB7XHJcbiAgICBjb25zdCBiRGV0YWlsc1JhdyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdiRGV0YWlscycpO1xyXG4gICAgY29uc3QgZGV0YWlscyA9IHRoaXMuc2FmZVBhcnNlPHsgdGVtcGxhdGVJZD86IHN0cmluZyB9PihiRGV0YWlsc1Jhdyk7XHJcblxyXG4gICAgLy8gZmFsbGJhY2sgc291cmNlXHJcbiAgICBjb25zdCB3ZWJzaXRlRGF0YVJhdyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCd3ZWJzaXRlRGF0YScpO1xyXG4gICAgY29uc3Qgd2Vic2l0ZURhdGEgPSB0aGlzLnNhZmVQYXJzZTx7IGhvbWVQYWdlSWQ/OiBzdHJpbmcgfT4od2Vic2l0ZURhdGFSYXcpO1xyXG5cclxuICAgIC8vIHByZWZlciB0ZW1wbGF0ZUlkIGZyb20gYkRldGFpbHM7IGVsc2UgZmFsbGJhY2sgdG8gd2Vic2l0ZURhdGEuaG9tZVBhZ2VJZFxyXG4gICAgY29uc3QgdGVtcGxhdGVJZCA9IChkZXRhaWxzPy50ZW1wbGF0ZUlkID8/IHdlYnNpdGVEYXRhPy5ob21lUGFnZUlkID8/ICcnKS50b1N0cmluZygpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgYnVzaW5lc3MvdjMvd2Vic2l0ZS8ke3RlbXBsYXRlSWR9L3BhZ2VzL2xpc3RgKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRFY29tbWVyY2VDb25maWdzKCkge1xyXG4gICAgY29uc3QgYnVzaW5lc3NJZCA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJykgPz8gXCIxZjEwNjUxZi05MjU4LTZiNjMtOWQyMy1hM2Q2OTFhY2ViODhcIjtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9lY29tbWVyY2UvY29uZmlnL2FsbD9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH1gXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcG9zdFZpZGVvQ2FsbERldGFpbHMocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL2Vjb21tZXJjZS9jb25maWcvdmlkZW8tY2FsbGAsIHBheWxvYWRcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldFN0b3JlTG9jYXRvckRldGFpbHMocGluY29kZTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvc3RvcmUvbmVhcmJ5P3BpbmNvZGU9JHtwaW5jb2RlfSZidXNpbmVzc0lkPSR7dGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKX1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBzYXZlSW1hZ2VzVG9CdXNpbmVzc0xpYnJhcnkobWVkaWFSZXF1ZXN0OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBhZG1pbi9saWJyYXJ5L2ltYWdlL2xpYnJhcnkvc2F2ZWAsXHJcbiAgICAgIG1lZGlhUmVxdWVzdFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJlZ2VuZXJhdGVUZXh0KHJlcXVlc3Q6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGFkbWluL2NvbnRlbnQvc3VnZ2VzdC92Mi93ZWJzaXRlL2luZGl2aWR1YWxgLCByZXF1ZXN0XHJcbiAgICApXHJcbiAgfVxyXG4gIGdldENhdGVnb3JpZXNIZWFkZXJEYXRhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvJHt0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpfS9oZWFkZXJzYFxyXG4gICAgKVxyXG4gIH1cclxuICBnZXRBbGxTdG9yZXMocGF5bG9hZDogYW55KSB7XHJcbiAgICBsZXQgdXJsID0gJydcclxuICAgIGlmIChwYXlsb2FkPy5waW5jb2RlICYmIHBheWxvYWQucGluY29kZS50b1N0cmluZygpLmxlbmd0aCA9PSA2KSB7XHJcbiAgICAgIHVybCA9IHVybCArIGAgJnBpbmNvZGU9JHtwYXlsb2FkLnBpbmNvZGV9YFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3N0b3JlL2dldC92Mj9idXNpbmVzc0lkPSR7cGF5bG9hZC5idXNpbmVzc0lkfSR7dXJsfWAsICcnXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRBbGxBcHBvaW50bWVudFNlcnZpY2UocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcclxuICAgICAgdGhpcy5BUFBPSU5UTUVOVF9VUkwgKyAnc2VydmljZS9saXN0JywgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsU3RhZmYocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBzdGFmZi9zdGFmZi9zdG9yZS1zdGFmZi1saXN0P3NlcnZpY2VJZD0ke3BheWxvYWQuc2VydmljZUlkfSZzdG9yZUlkPSR7cGF5bG9hZC5zdG9yZUlkfSZidXNpbmVzc0lkPSR7cGF5bG9hZC5idXNpbmVzc0lkfWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldFN0b3JlQnlJZChzdG9yZUlkOiBzdHJpbmcpIHtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBzdG9yZUlkOiBzdG9yZUlkLFxyXG4gICAgICBidXNpbmVzc0lkOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpID8/IFwiXCIsXHJcbiAgICAgIHBhZ2VObzogMCxcclxuICAgICAgcGFnZVNpemU6IDEwMDBcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9zdG9yZS9nZXRgLCBwYXlsb2FkKVxyXG4gIH1cclxuICBwb3N0TmV3c0xldHRlcihlbWFpbDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL2Vjb21tZXJjZS9jb25maWcvcmVnaXN0ZXJlZC9uZXdzbGV0dGVyP2VtYWlsPSR7ZW1haWx9JmJ1c2luZXNzSWQ9JHt0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpfWAsICcnXHJcbiAgICApXHJcbiAgfVxyXG4gIGFkZFJldmlld1RvUHJvZHVjdChwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9hZGQvcmV2aWV3P29yZGVySWQ9JHtwYXlsb2FkLm9yZGVySWR9YCwgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsU3RvcmVzT3JyYShwYWdlTm86IGFueSwgc2l6ZTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYGh0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL3N0b3JlP3BhZ2VObz0ke3BhZ2VOb30mc2l6ZT0ke3NpemV9YFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0c3RhZmZCeVN0b3JlSWQoc3RvcmVJZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYGh0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL3N0YWZmL2dldC8ke3N0b3JlSWR9YFxyXG4gICAgKVxyXG4gIH1cclxuXHJcblxyXG4gIGdldEFsbFNjaGVtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgaHR0cHM6Ly9zdGFnZWFwaS1vcnJhLmxldHNtb2JpbGl0eS5jb20vc2NoZW1lL2dldEFsbFNjaGVtZXMvZGFzaGJvYXJkYFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsU3RhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYGh0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL3N0YXRlL2dldEFsbGBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldENpdHlCeVN0YXRlQnlwYWdpbmF0ZWQoc3RhdGVJZDogYW55LCBwYWdlTm86IGFueSwgc2l6ZTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYGh0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL2NpdHkvZ2V0QnlTdGF0ZT9zdGF0ZUlkPSR7c3RhdGVJZH0mcGFnZU5vPSR7cGFnZU5vfSZzaXplPSR7c2l6ZX1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZUJ5U2xhYihkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICBgaHR0cHM6Ly9zdGFnZWFwaS1vcnJhLmxldHNtb2JpbGl0eS5jb20vc3RvcmUvZ2V0U2xhYmAsIGRhdGFcclxuICAgIClcclxuICB9XHJcblxyXG4gIGFkZFRyaWFsSXRlbShyZXF1ZXN0OiBzeW5jSXRlbVRvU2VydmVyREJSZXF1ZXN0KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvY2FydC92MmAsIHJlcXVlc3RcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNoZWNrSXRlbUFscmVhZHlBZGRlZChyZXF1ZXN0OiBjaGVja0l0ZW1BbHJlYWR5QWRkZWQpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9jYXJ0L2NoZWNrL2l0ZW1gLCByZXF1ZXN0XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBkZWxldGVJdGVtRnJvbUNhcnQocmVxdWVzdDogc3luY0l0ZW1Ub1NlcnZlckRCUmVxdWVzdCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2NhcnQvcmVtb3ZlYCwgcmVxdWVzdFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgYm9va0FwcG9pbnRtZW50KHJlcXVlc3Q6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL3RyeS1ob21lYCwgcmVxdWVzdFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlRW5yb2xsbWVudFNjaGVtZShlbnJvbGxlbWVudDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAgIGh0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL2Vucm9sbG1lbnQvY3JlYXRlL25ldy90ZW1wP21hbnVhbFBheT10cnVlJmlzV2ViUmVxdWVzdD10cnVlXHJcbmAsIGVucm9sbGVtZW50XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRIb21lQXBwb2ludG1lbnRMaXN0KHVzZXJJZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBidXNpbmVzc0lkID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2JJZCcpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvdHJ5LWhvbWU/dXNlcklkPSR7dXNlcklkfSZidXNpbmVzc0lkPSR7YnVzaW5lc3NJZH1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRBbGxPcnJhU2NoZW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgICdodHRwczovL3N0YWdlYXBpLW9ycmEubGV0c21vYmlsaXR5LmNvbS9wYXNzQm9vay9yZWRlbXB0aW9uL2Ftb3VudC9jaGVjaz91c2VyQ29kZT1DXzAwMDMxMzg4NSdcclxuICAgIClcclxuICB9XHJcblxyXG4gIHJlZGVlbVNjaGVtZShzY2hlbWU6IHN0cmluZywgY2FydElkOiBhbnksIGFjdGlvbjogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9jYXJ0L3JlZGVtcHRpb24/Y2FydElkPSR7Y2FydElkfSZyZW1vdmVTY2hlbWU9JHthY3Rpb259YCwgc2NoZW1lXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRSZXZpZXdzQnlQcm9kdWN0SWQocHJvZHVjdElkOiBzdHJpbmcsIHBhZ2VOdW1iZXI6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvZmlsdGVyL3Jldmlld3M/cHJvZHVjdElkPSR7cHJvZHVjdElkfSZwYWdlTnVtYmVyPSR7cGFnZU51bWJlcn0mcGFnZVNpemU9M2AsIHt9XHJcbiAgICApXHJcbiAgfVxyXG4gIGdldEZpZWxkc1RvRGlzcGxheShmaWVsZHNMaXN0OiBhbnlbXSkge1xyXG4gICAgbGV0IG1hcDogYW55ID0ge307XHJcblxyXG4gICAgZm9yIChsZXQgZmllbGQgb2YgZmllbGRzTGlzdCkge1xyXG4gICAgICBmb3IgKGxldCBmaWVsZEdyb3VwIG9mIGZpZWxkLmZpZWxkR3JvdXApIHtcclxuICAgICAgICBpZiAoIWZpZWxkR3JvdXAuZmllbGRTdGVwSWQpXHJcbiAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgbGV0IHN0ZXBOYW1lID0gZmllbGRHcm91cC5maWVsZFN0ZXBOYW1lID8gZmllbGRHcm91cC5maWVsZFN0ZXBOYW1lIDogJ3VuZGVmaW5lZCc7XHJcbiAgICAgICAgbGV0IGdyb3VwTmFtZSA9IGZpZWxkR3JvdXAuZmllbGRHcm91cE5hbWU7XHJcblxyXG4gICAgICAgIGlmICghbWFwW3N0ZXBOYW1lXSkge1xyXG4gICAgICAgICAgbWFwW3N0ZXBOYW1lXSA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIW1hcFtzdGVwTmFtZV1bZ3JvdXBOYW1lXSkge1xyXG4gICAgICAgICAgbWFwW3N0ZXBOYW1lXVtncm91cE5hbWVdID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpZWxkWydmaWVsZFN0ZXBJZCddID0gZmllbGRHcm91cC5maWVsZFN0ZXBJZDtcclxuICAgICAgICBmaWVsZFsnZmllbGRHcm91cElkJ10gPSBmaWVsZEdyb3VwLmZpZWxkR3JvdXBJZDtcclxuXHJcbiAgICAgICAgY29uc3QgbmV3RmllbGQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZpZWxkKSk7XHJcbiAgICAgICAgbWFwW3N0ZXBOYW1lXVtncm91cE5hbWVdLnB1c2gobmV3RmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1hcDtcclxuICB9XHJcblxyXG4gIGdldEJvb2tpbmdTbG90cyhwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQVBQT0lOVE1FTlRfVVJMICsgJ2Jvb2tpbmcvYXZhaWxhYmxlLXNsb3RzJywgcGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICBib29rQXBwb2ludG1lbnRWMihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkFQUE9JTlRNRU5UX1VSTCArICdib29raW5nJywgcGF5bG9hZCk7XHJcbiAgfVxyXG4gIHBheW1lbnRGb3JBcHBvaW50bWVudChwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkFQUE9JTlRNRU5UX1VSTCArICdwYXltZW50L3Rva2VuJywgcGF5bG9hZCk7XHJcbiAgfVxyXG4gIGdlbmVyYXRlVG9rZW4oYklkOiBhbnksIHVzZXJJZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5QQVNTQk9PS19VUkwgKyBgZXh0L2Nvbm5lY3Qvc2ltcG8vdG9rZW4/YnVzaW5lc3NJZD0ke2JJZH0mdXNlcklkPSR7dXNlcklkfSZ1c2VyVHlwZT1FWFRFUk5BTF9VU0VSYCwge30pO1xyXG4gIH1cclxuICBnZXRBbGxFbnJvbGxlZFNjaGVtZXMocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLlBBU1NCT09LX1VSTCArICdleHQvY29ubmVjdC9zaW1wby9zY2hlbWUvbGlzdCcsIHBheWxvYWQpXHJcbiAgfVxyXG4gIGVucm9sbFNjaGVtZShwYXlsb2FkOiBhbnksIGNoZWNrQ2hhcmdlczogYm9vbGVhbikge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgfSk7XHJcbiAgICBpZiAoY2hlY2tDaGFyZ2VzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLlBBU1NCT09LX1VSTCArICdwYXNzYm9vay9jYXJ0L2luaXRpYXRlL3BheW1lbnQ/bWFudWFsUGF5PXRydWUnLCBwYXlsb2FkLCB7IGhlYWRlcnM6IGhlYWRlcnMgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5QQVNTQk9PS19VUkwgKyAncGFzc2Jvb2svaW5pdGlhdGUvcGF5bWVudD9tYW51YWxQYXk9dHJ1ZScsIHBheWxvYWQsIHsgaGVhZGVyczogaGVhZGVycyB9KVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXRCZW5lZml0U2xhYihwYXNzYm9va0lkPzogYW55KSB7XHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKTtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0b2tlbn1gXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLlBBU1NCT09LX1VSTCArIGBwYXNzYm9vay9iZW5lZml0L3BlcmNlbnRhZ2VzP3Bhc3Nib29rSWQ9JHtwYXNzYm9va0lkfWAsIHt9LCB7IGhlYWRlcnM6IGhlYWRlcnMgfSlcclxuICB9XHJcbiAgZ2V0QWxsU3RhZmZMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBzdGFmZi9zdGFmZi9saXN0LyR7dGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKX0/aXNQYWdpbmF0aW9uPWZhbHNlYClcclxuICB9XHJcbiAgcmVxdWVzdFJlZGVlbXB0aW9uKHBhc3Nib29rSWQ6IGFueSkge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLlBBU1NCT09LX1VSTCArIGBwYXNzYm9vay9yZXF1ZXN0L3JlZGVtcHRpb24/cGFzc0Jvb2tJZD0ke3Bhc3Nib29rSWR9YCwge30sIHsgaGVhZGVyczogaGVhZGVycyB9KVxyXG4gIH1cclxuICBQYXNzYm9va0FwcFN0YXR1cyhiSWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBhcHAvYXBwL2NoZWNrLWFwcD9idXNpbmVzc0lkPSR7YklkfSZhcHBOYW1lPVBhc3Nib29rYClcclxuICB9XHJcbiAgY2hlY2tBcHBJbnN0YWxsZWQoYklkOiBhbnksIGFwcE5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBhcHAvYXBwL2NoZWNrLWFwcD9idXNpbmVzc0lkPSR7YklkfSZhcHBOYW1lPSR7YXBwTmFtZX1gKVxyXG4gIH1cclxuICBnZXRSZWRlZW1Qb2ludHMoYklkOiBhbnksIHVzZXJJZDogYW55LCBldmV0VHlwZTogc3RyaW5nLCBvcmRlclZhbHVlOiBhbnksIHJld2FyZFBvaW50czogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL2FwaS9yZWZlcnJhbHMvYXZhaWxhYmxlLWFtb3VudD9idXNpbmVzc0lkPSR7YklkfSZ1c2VySWQ9JHt1c2VySWR9JmV2ZW50VHlwZT0ke2V2ZXRUeXBlfSZvcmRlclZhbHVlPSR7b3JkZXJWYWx1ZX0mcmV3YXJkUG9pbnRzPSR7cmV3YXJkUG9pbnRzfWBcclxuICAgIClcclxuICB9XHJcbiAgcGF5bWVudFdpdGhDb21wbGV0ZVBvaW50cyhjYXJ0SWQ6IGFueSwgZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL29yZGVyL3Jld2FyZHM/Y2FydElkPSR7Y2FydElkfWAsIGRhdGFcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEFsbFBhc3Nib29rRHVlcyhiSWQ6IGFueSwgdXNlcklkOiBhbnkpIHtcclxuICAgIGNvbnN0IHRva2VuID0gdGhpcy5nZXRUb2tlbigpO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5QQVNTQk9PS19VUkwgKyBgcGFzc2Jvb2svcGF5bWVudC9kdWVzP3BhZ2U9MCZzaXplPTEwMDAmYnVzaW5lc3NJZD0ke2JJZH0mdXNlcklkPSR7dXNlcklkfWAsIHsgaGVhZGVyczogaGVhZGVycyB9KVxyXG4gIH1cclxuICBnZXRUb2tlbigpIHtcclxuICAgIGxldCB0b2tlbiA9IHRoaXMuY29va2llU2VydmljZS5nZXQoJ3Bhc3NCb29rVG9rZW4nKVxyXG4gICAgcmV0dXJuIHRva2VuO1xyXG4gIH1cclxuICBnZXRBbGxUcmFuc2FjdGlvbnMocGF5bG9hZDogYW55KSB7XHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKTtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0b2tlbn1gXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuUEFTU0JPT0tfVVJMICsgYGRhc2hib2FyZC92My90cmFuc2FjdGlvbnMvcGFnZWAsIHBheWxvYWQsIHsgaGVhZGVyczogaGVhZGVycyB9KVxyXG4gIH1cclxuICBnZXRTY2hlbWVEZXRhaWxzKHNjaGVtZUlkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLlBBU1NCT09LX1VSTCArIGBleHQvY29ubmVjdC9zaW1wby9nZXQvc2NoZW1lP2lkPSR7c2NoZW1lSWR9YCwge30pXHJcbiAgfVxyXG5cclxuICBnZXRNZXRhbFByaWNlKHN0b3JlSWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5QQVNTQk9PS19VUkwgKyBgZXh0L2Nvbm5lY3Qvc2ltcG8vbWV0YWwvcHJpY2VzP2lkPSR7c3RvcmVJZH1gKVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlTGVhZChwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGJ1c2luZXNzL2NvbnRhY3RgLCBwYXlsb2FkKVxyXG4gIH1cclxuICBnZXRBcHBvaW50bWVudFBheW1lbnRTdGF0dXMob3JkZXJJZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkFQUE9JTlRNRU5UX1VSTCArIGBwYXltZW50L3ZlcmlmeS9zdGF0dXM/b3JkZXJJZD0ke29yZGVySWR9YClcclxuICB9XHJcbiAgZ2V0T3RwRm9yTG9naW4ocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2dlbmVyYXRlLW90cGAsIHBheWxvYWQpXHJcbiAgfVxyXG5cclxuICAvKiogTmV3IE9UUCBBUEk6IFBVVCAvZWNvbW1lcmNlL3VzZXIvYXV0aC9zZW5kLW90cFxyXG4gICAqICBCb2R5OiB7IGlkZW50aWZpZXIsIGJ1c2luZXNzSWQgfVxyXG4gICAqICBSZXNwb25zZTogeyBkYXRhOiB7IGlzRXhpc3RpbmdVc2VyOiBib29sZWFuLCBtZXNzYWdlOiBzdHJpbmcgfSB9XHJcbiAgICovXHJcbiAgc2VuZE90cFYyKGlkZW50aWZpZXI6IHN0cmluZywgYnVzaW5lc3NJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2F1dGgvc2VuZC1vdHBgLCB7IGlkZW50aWZpZXIsIGJ1c2luZXNzSWQgfSk7XHJcbiAgfVxyXG5cclxuICB2ZXJpZnlPdHBWMihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvYXV0aC92ZXJpZnktb3RwYCwgcGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICBjb21wbGV0ZVNpZ251cFYyKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9hdXRoL2NvbXBsZXRlLXNpZ251cGAsIHBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgbG9naW5XaXRoUGFzc3dvcmROZXcocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2F1dGgvbG9naW4tcGFzc3dvcmRgLCBwYXlsb2FkKTtcclxuICB9XHJcblxyXG4gIGZsdXNoKGV2ZW50c1RvU2VuZDogYW55KSB7XHJcbiAgICB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgJ2Vjb21tZXJjZS9hbmFseXRpY3MvYmF0Y2gnLCBldmVudHNUb1NlbmQpXHJcbiAgICAgIC5zdWJzY3JpYmUoeyBlcnJvcjogKCkgPT4geyB9IH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UG9wdWxhclNlYXJjaGVzKCkge1xyXG4gICAgY29uc3QgYnVzaW5lc3NJZCA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSA/PyBcIjFmMTIxMDgxLWRiZWEtNjVjNi1hZDg5LTFkZmU4Y2RkYTkwMlwiO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvaW52ZW50b3J5L3BvcHVsYXItc2VhcmNoZXM/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9YClcclxuICB9XHJcblxyXG4gIGdldE1lbnVJdGVtcyhtZW51SWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvbWVudS8ke21lbnVJZH1gKTtcclxuICB9XHJcblxyXG4gIC8vIGdldEhvbWVSZWNvbW1lbmRhdGlvbnMoYnVzaW5lc3NJZDogYW55LCBVc2VySWQ6IGFueSkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5SRUNPTU1FTkRBVElPTl9VUkwgKyBgYXBpL3YxL3JlY29tbWVuZGF0aW9ucy8ke1VzZXJJZH0vaG9tZT9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mcGFnZT0xJnBhZ2VTaXplPTIwYClcclxuICAvLyB9XHJcblxyXG4gIC8vIGdldENhcnRSZWNvbW1lbmRhdGlvbnMoYnVzaW5lc3NJZDogYW55LCBVc2VySWQ6IGFueSkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5SRUNPTU1FTkRBVElPTl9VUkwgKyBgYXBpL3YxL3JlY29tbWVuZGF0aW9ucy8ke1VzZXJJZH0vY2FydD9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mcGFnZT0xJnBhZ2VTaXplPTE1YClcclxuICAvLyB9XHJcblxyXG4gIC8vIGdldFByb2R1Y3REZXNjcmlwdGlvblJlY29tbWVuZGF0aW9ucyhidXNpbmVzc0lkOiBhbnksIFVzZXJJZDogYW55KSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLlJFQ09NTUVOREFUSU9OX1VSTCArIGBhcGkvdjEvcmVjb21tZW5kYXRpb25zLyR7VXNlcklkfS9wZHA/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnBhZ2U9MSZwYWdlU2l6ZT0xMGApXHJcbiAgLy8gfVxyXG59XHJcbiJdfQ==
613
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxHQUFHLEVBQXdDLE1BQU0sTUFBTSxDQUFDO0FBS2pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBQzdELE9BQU8sRUFBeUIsT0FBTyxFQUE2QixNQUFNLG1DQUFtQyxDQUFDO0FBQzlHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUdsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7QUFNaEUsTUFBTSxPQUFPLFdBQVc7SUFZdEIsWUFDbUIsSUFBZ0IsRUFDUixRQUFnQixFQUNWLGFBQXFCLEVBQzFCLFFBQWdCLEVBQ3pCLGFBQTRCLEVBQ2QsT0FBb0IsRUFDckIsWUFBb0IsRUFDakIsZUFBdUIsRUFDcEIsa0JBQTBCO1FBUjdDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDUixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ1Ysa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDMUIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQVE7UUFDakIsb0JBQWUsR0FBZixlQUFl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QkFBcUIsQ0FBQyxDQUFBO0lBQ3JJLENBQUM7SUFFRCxvQ0FBb0MsQ0FBQyxVQUFlLEVBQUUsTUFBVztRQUMvRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRywwQkFBMEIsTUFBTSxtQkFBbUIsVUFBVSxxQkFBcUIsQ0FBQyxDQUFBO0lBQ3BJLENBQUM7K0dBOXVCVSxXQUFXLDRDQWNaLE9BQU8sYUFDUCxhQUFhLGFBQ2IsUUFBUSwwQ0FFUixhQUFhLGFBQ2IsWUFBWSxhQUNaLGVBQWUsYUFDZixrQkFBa0I7bUhBckJqQixXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWVJLE1BQU07MkJBQUMsT0FBTzs7MEJBQ2QsTUFBTTsyQkFBQyxhQUFhOzswQkFDcEIsTUFBTTsyQkFBQyxRQUFROzswQkFFZixNQUFNOzJCQUFDLGFBQWE7OzBCQUNwQixNQUFNOzJCQUFDLFlBQVk7OzBCQUNuQixNQUFNOzJCQUFDLGVBQWU7OzBCQUN0QixNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIFN1YnNjcmliZXIsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBSZXZpZXcgfSBmcm9tIFwiLi4vZWNvbW1lcmNlL3N0eWxlcy9yZXZpZXcubW9kYWxcIjtcbmltcG9ydCB7IERldmljZUluZm8sIFVzZXIgfSBmcm9tIFwiLi4vZWNvbW1lcmNlL3N0eWxlcy91c2VyLm1vZGFsXCI7XG5pbXBvcnQgeyBQaW5Db2RlTG9jYXRpb25JbnRlciB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL1BpbmNvZGVMb2NhdGlvbkludGVyLm1vZGVsXCI7XG5pbXBvcnQgeyBQaW5jb2RlTG9jYXRpb24gfSBmcm9tIFwiLi4vZWNvbW1lcmNlL3N0eWxlcy9QaW5jb2RlTG9jYXRpb24ubW9kZWxcIjtcbmltcG9ydCB7IEFQSV9VUkwsIENNSVNfVVJMLCBFQ09NTUVSQ0VfVVJMLCBQQVNTQk9PS19VUkwsIEFQUE9JTlRNRU5UX1VSTCwgUkVDT01NRU5EQVRJT05fVVJMIH0gZnJvbSAnLi4vdG9rZW5zL2FwaS10b2tlbic7XG5pbXBvcnQgeyBDYXRlZ29yeSB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL2NhdGVnb3J5Lm1vZGFsXCJcbmltcG9ydCB7IGNoZWNrSXRlbUFscmVhZHlBZGRlZCwgUHJvZHVjdCwgc3luY0l0ZW1Ub1NlcnZlckRCUmVxdWVzdCB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL3Byb2R1Y3QubW9kYWxcIjtcbmltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tIFwiLi4vZWNvbW1lcmNlL3N0eWxlcy9Db2xsZWN0aW9uLm1vZGFsXCI7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tIFwiLi9zdG9yYWdlLnNlcnZpY2VcIjtcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tIFwibmd4LWNvb2tpZS1zZXJ2aWNlXCI7XG5pbXBvcnQgeyBMT0NBTF9TVE9SQUdFIH0gZnJvbSAnLi4vc2VydmljZXMvbG9jYWwtc3RvcmFnZS50b2tlbic7XG5pbXBvcnQgeyBTdG9yYWdlTGlrZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0b3JhZ2UtbGlrZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBSZXN0U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgLy8gcHJpdmF0ZSBCQVNFX1VSTDogc3RyaW5nID0gXCJodHRwczovL2Rldi1hcGkuc2ltcG8uYWkvXCI7XG4gIC8vIHByaXZhdGUgRUNPTU1FUkNFX1VSTDogc3RyaW5nID0gXCJodHRwczovL2Rldi1lY29tbWVyY2Uuc2ltcG8uYWkvXCI7XG4gIC8vIHByaXZhdGUgQ01JU19VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9hcGktY21pcy50ZWpzb2Z0LmNvbS9cIjsgLy9wcm9kdWN0aW9uXG4gIC8vIHByaXZhdGUgQ01JU19VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9kZXYtYXBpLnNpbXBvLmFpL1wiOyAvL2RldlxuICAvLyBwcml2YXRlIENNSVNfVVJMOiBzdHJpbmcgPSBcImh0dHBzOi8vc3RhZ2VhcGktY21pcy50ZWpzb2Z0LmNvbS9cIjsgLy9zdGFnZVxuICBwcml2YXRlIGVudmlyb25tZW50VHlwZVN1YnNjcmliZXI6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBidXNpbmVzc0RldGFpbHM6IGFueTtcbiAgc3ViSW5kdXN0cnlOYW1lOiBhbnk7XG4gIGlzSmV3ZWxsZXJ5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIEBJbmplY3QoQVBJX1VSTCkgcHJpdmF0ZSBCQVNFX1VSTDogc3RyaW5nLFxuICAgIEBJbmplY3QoRUNPTU1FUkNFX1VSTCkgcHJpdmF0ZSBFQ09NTUVSQ0VfVVJMOiBzdHJpbmcsXG4gICAgQEluamVjdChDTUlTX1VSTCkgcHJpdmF0ZSBDTUlTX1VSTDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29va2llU2VydmljZTogQ29va2llU2VydmljZSxcbiAgICBASW5qZWN0KExPQ0FMX1NUT1JBR0UpIHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZUxpa2UsXG4gICAgQEluamVjdChQQVNTQk9PS19VUkwpIHByaXZhdGUgUEFTU0JPT0tfVVJMOiBzdHJpbmcsXG4gICAgQEluamVjdChBUFBPSU5UTUVOVF9VUkwpIHByaXZhdGUgQVBQT0lOVE1FTlRfVVJMOiBzdHJpbmcsXG4gICAgQEluamVjdChSRUNPTU1FTkRBVElPTl9VUkwpIHByaXZhdGUgUkVDT01NRU5EQVRJT05fVVJMOiBzdHJpbmdcbiAgKSB7XG4gIH1cbiAgb3JyYUJhc2VVcmw6IHN0cmluZyA9ICdodHRwczovL3N0YWdlYXBpLW9ycmEubGV0c21vYmlsaXR5LmNvbS8nO1xuICAvLyBwYXNzQm9va1VybDogc3RyaW5nID0gXCJodHRwczovL3Byb2QtcGFzc2Jvb2suc2ltcG8uYWkvXCI7XG4gIGdldEJ1c2luZXNzRGV0YWlscygpIHtcbiAgICB0aGlzLmlzSmV3ZWxsZXJ5ID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2lzTWF0ZXJpYWxCYXNlZFByaWNpbmcnKSA9PSAndHJ1ZScgPyB0cnVlIDogZmFsc2U7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZW52aXJvbm1lbnRUeXBlU3Vic2NyaWJlcilcbiAgICAgIHRoaXMuZW52aXJvbm1lbnRUeXBlU3Vic2NyaWJlcj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldEZlYXR1cmVkUHJvZHVjdChjb2xsZWN0aW9uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICB0aGlzLmdldEJ1c2luZXNzRGV0YWlscygpO1xuICAgIGxldCBzdWJJbmR1c3RyeUlkOiBzdHJpbmcgfCBudWxsID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJzdWJJbmR1c3RyeUlkXCIpO1xuICAgIGlmICghc3ViSW5kdXN0cnlJZClcbiAgICAgIHN1YkluZHVzdHJ5SWQgPSBcIlwiO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvY29sbGVjdGlvbi9pZD9jb2xsZWN0aW9uSWQ9JHtjb2xsZWN0aW9uSWR9JmlzSmV3ZWxsZXJ5PSR7dGhpcy5pc0pld2VsbGVyeX1gKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKSkpO1xuICB9XG4gIGdldENhdGVnb3JpZXNCeUNvbGxlY3Rpb25JZChjb2xsZWN0aW9uSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL2ludmVudG9yeS9jYXRlZ29yeS9jb2xsZWN0aW9uSWQ/Y29sbGVjdGlvbklkPSR7Y29sbGVjdGlvbklkfWApLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZS5kYXRhPy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+IG5ldyBDYXRlZ29yeShjYXRlZ29yeSkpKSk7XG4gIH1cbiAgLy8gaHR0cHM6Ly9uZXdkZXYtYXBpLnNpbXBvLmFpL1xuICBnZXRBbGxDYXRlZ29yaWVzQnlCdXNpbmVzc0lkKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvaW52ZW50b3J5L2dldC9jYXRlZ29yeWAsIHBheWxvYWRcbiAgICApXG4gIH1cbiAgZ2V0UGFzc2Jvb2tPcmRlclN0YXR1cyhvcmRlcklkOiBhbnkpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKTtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5QQVNTQk9PS19VUkwgKyBgcGFzc2Jvb2svbWFudWFsL3BheW1lbnQvc3RhdHVzP3BheW1lbnRPcmRlcklkPSR7b3JkZXJJZH1gLCB7fSwgeyBoZWFkZXJzOiBoZWFkZXJzIH0pXG4gIH1cbiAgZ2V0UHJvZHVjdEJ5U2VsZWN0ZWRDYXRlZ29yeShjYXRlZ29yeUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvJHtjYXRlZ29yeUlkfWBcbiAgICApXG4gIH1cbiAgZ2V0QWxsU2NoZW1lcyh1c2VySWQ/OiBhbnksIHN0b3JlSWQ/OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuUEFTU0JPT0tfVVJMICsgYGV4dC9jb25uZWN0L3NpbXBvL3VzZXI/dXNlcklkPSR7dXNlcklkfSZzdG9yZUlkPSR7c3RvcmVJZH1gKTtcbiAgfVxuICBnZXRBbGxSZWRlbXB0aW9uU2NoZW1lcygpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLm9ycmFCYXNlVXJsICsgYHBhc3NCb29rL3JlZGVtcHRpb24vYW1vdW50L2NoZWNrP3VzZXJDb2RlPUNfMDAwMzEzODg1YCk7XG4gIH1cbiAgZ2V0QWxsUHJvZHVjdHMocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC9pdGVtL3NlYXJjaD9pc0pld2VsbGVyeT0ke3RoaXMuaXNKZXdlbGxlcnl9YCwgcGF5bG9hZCk7XG4gIH1cbiAgZ2V0UHJvZHVjdERldGFpbHMocHJvZHVjdElkOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIHRoaXMuZ2V0QnVzaW5lc3NEZXRhaWxzKCk7XG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xuICAgICAgcGFnZU5vOiAwLFxuICAgICAgcGFnZVNpemU6IDEsXG4gICAgICBpdGVtSWQ6IHByb2R1Y3RJZCxcbiAgICAgIHN1YkluZHVzdHJ5SWQ6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKSxcbiAgICAgIHVzZXJJZDogdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJwZXJJZFwiKSA/PyBudWxsLFxuICAgICAgcmVxdWVzdDogXCJVU0VSXCJcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC9pdGVtL3NlYXJjaD9pc0pld2VsbGVyeT0ke3RoaXMuaXNKZXdlbGxlcnl9YCwgcGF5bG9hZCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmRhdGEuZGF0YS5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gbmV3IFByb2R1Y3QocHJvZHVjdCkpKSk7XG4gIH1cblxuICBnZXRQcm9kdWN0RGV0YWlsc1YyKHNsdWdOYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIHRoaXMuZ2V0QnVzaW5lc3NEZXRhaWxzKCk7XG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xuICAgICAgcGFnZU5vOiAwLFxuICAgICAgcGFnZVNpemU6IDEsXG4gICAgICBzbHVnaWZpZWROYW1lOiBzbHVnTmFtZSxcbiAgICAgIHN1YkluZHVzdHJ5SWQ6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKSxcbiAgICAgIGJ1c2luZXNzSWQ6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcbiAgICAgIHVzZXJJZDogdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJwZXJJZFwiKSA/PyBudWxsLFxuICAgICAgcmVxdWVzdDogXCJVU0VSXCJcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC9pdGVtVjIvc2VhcmNoP2lzSmV3ZWxsZXJ5PSR7dGhpcy5pc0pld2VsbGVyeX1gLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YS5kYXRhLm1hcCgocHJvZHVjdDogYW55KSA9PiBuZXcgUHJvZHVjdChwcm9kdWN0KSkpKTtcbiAgfVxuXG4gIGdldENvbGxlY3Rpb25CeUlkcyhjb2xsZWN0aW9uSWRzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBpZHM6IGNvbGxlY3Rpb25JZHNcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvaW52ZW50b3J5L2NvbGxlY3Rpb24vbGlzdC9hbGxgLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChjb2xsZWN0aW9uOiBhbnkpID0+IG5ldyBDb2xsZWN0aW9uKGNvbGxlY3Rpb24pKSkpO1xuICB9XG5cbiAgZ2V0QWxsQ2F0ZWdvcmllcygpIHtcblxuICAgIGNvbnN0IGJ1c2luZXNzSWQ6IHN0cmluZyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSA/PyBcIlwiO1xuICAgIGNvbnN0IHN1YkluZHVzdHJ5SWQ6IHN0cmluZyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIikgPz8gXCJcIjtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9pbnZlbnRvcnkvZmVhdHVyZWQ/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnN1YklkPSR7c3ViSW5kdXN0cnlJZH1gKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChjYXRlZ29yeTogYW55KSA9PiBuZXcgQ2F0ZWdvcnkoY2F0ZWdvcnkpKSkpO1xuICB9XG4gIGdldEFsbENvbGxlY3Rpb25zKCkge1xuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcbiAgICAgIHBhZ2VObzogMCxcbiAgICAgIHBhZ2VTaXplOiAxMDAsXG4gICAgICByZXF1ZXN0OiBcIlVTRVJcIixcbiAgICAgIGJ1c2luZXNzSWQ6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgJ2Vjb21tZXJjZS9pbnZlbnRvcnkvZ2V0L2NvbGxlY3Rpb24nLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YS5kYXRhPy5tYXAoKGNvbGxlY3Rpb246IGFueSkgPT4gbmV3IENvbGxlY3Rpb24oY29sbGVjdGlvbikpKSk7XG4gIH1cblxuICBnZXRGaWx0ZXJlZFByb2R1Y3QoY29sbGVjdGlvbklkczogc3RyaW5nW10sIGNhdGVnb3J5SWRzOiBzdHJpbmdbXSwgc2VhcmNoVGV4dDogc3RyaW5nLCBtaW5QcmljZTogbnVtYmVyLCBtYXhQcmljZTogbnVtYmVyLCBtaW5SYXRpbmc6IG51bWJlciwgbWF4UmF0aW5nOiBudW1iZXIsIHNvcnRCeTogc3RyaW5nLCBwYWdlTm86IG51bWJlciwgc2l6ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5nZXRCdXNpbmVzc0RldGFpbHMoKTtcbiAgICBsZXQgcGF5bG9hZDogYW55ID0ge1xuICAgICAgXCJidXNpbmVzc0lkXCI6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcbiAgICAgIFwic3ViSW5kdXN0cnlJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIiksXG4gICAgICBcImNvbGxlY3Rpb25JZFwiOiBjb2xsZWN0aW9uSWRzLFxuICAgICAgXCJjYXRlZ29yeUlkXCI6IGNhdGVnb3J5SWRzLFxuICAgICAgXCJzZWFyY2hUZXh0XCI6IHNlYXJjaFRleHQsXG4gICAgICBcInNvcnRCeVwiOiBzb3J0QnksXG4gICAgICBcInBhZ2VOb1wiOiBwYWdlTm8sXG4gICAgICBcInBhZ2VTaXplXCI6IHNpemUsXG4gICAgICBcInVzZXJJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInBlcklkXCIpID8/IG51bGwsXG4gICAgICByZXF1ZXN0OiBcIlVTRVJcIlxuICAgIH1cbiAgICBpZiAobWluUHJpY2UgPiAwKVxuICAgICAgcGF5bG9hZFtcIm1pblByaWNlXCJdID0gbWluUHJpY2U7XG4gICAgaWYgKG1heFByaWNlID4gMClcbiAgICAgIHBheWxvYWRbXCJtYXhQcmljZVwiXSA9IG1heFByaWNlO1xuICAgIGlmIChtaW5SYXRpbmcgPiAwKVxuICAgICAgcGF5bG9hZFtcIm1pblJhdGluZ1wiXSA9IG1pblJhdGluZztcbiAgICBpZiAobWF4UmF0aW5nID4gMClcbiAgICAgIHBheWxvYWRbXCJtYXhSYXRpbmdcIl0gPSBtYXhSYXRpbmc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC9pdGVtVjIvc2VhcmNoP2lzSmV3ZWxsZXJ5PSR7dGhpcy5pc0pld2VsbGVyeX1gLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY291bnQ6IHJlc3BvbnNlLmRhdGEuY291bnQsXG4gICAgICAgIG1pblByaWNlOiByZXNwb25zZS5kYXRhLm1pblByaWNlLFxuICAgICAgICBtYXhQcmljZTogcmVzcG9uc2UuZGF0YS5tYXhQcmljZSxcbiAgICAgICAgZGF0YTogcmVzcG9uc2UuZGF0YS5kYXRhPy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gbmV3IFByb2R1Y3QocHJvZHVjdCkpXG4gICAgICB9XG4gICAgfSkpO1xuICB9XG4gIGdldFByb2R1Y3RCeUNhdGVnb3J5SWQoY2F0ZWdvcnlJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5nZXRCdXNpbmVzc0RldGFpbHMoKTtcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XG4gICAgICBcImJ1c2luZXNzSWRcIjogdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxuICAgICAgXCJjYXRlZ29yeUlkXCI6IFtjYXRlZ29yeUlkXSxcbiAgICAgIFwic3ViSW5kdXN0cnlJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIiksXG4gICAgICBcInBhZ2VOb1wiOiAwLFxuICAgICAgXCJwYWdlU2l6ZVwiOiAxMCxcbiAgICAgIFwidXNlcklkXCI6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwicGVySWRcIikgPz8gbnVsbCxcbiAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvaXRlbS9zZWFyY2g/aXNKZXdlbGxlcnk9JHt0aGlzLmlzSmV3ZWxsZXJ5fWAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb3VudDogcmVzcG9uc2UuY291bnQsXG4gICAgICAgIGRhdGE6IHJlc3BvbnNlLmRhdGEuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKVxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuICBnZXRQcm9kdWN0QnlDb2xsZWN0aW9uSWQoY29sbGVjdGlvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmdldEJ1c2luZXNzRGV0YWlscygpO1xuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcbiAgICAgIFwiYnVzaW5lc3NJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIiksXG4gICAgICBcImNvbGxlY3Rpb25JZFwiOiBbY29sbGVjdGlvbklkXSxcbiAgICAgIFwic3ViSW5kdXN0cnlJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIiksXG4gICAgICBcInBhZ2VOb1wiOiAwLFxuICAgICAgXCJwYWdlU2l6ZVwiOiAxMCxcbiAgICAgIFwidXNlcklkXCI6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwicGVySWRcIikgPz8gbnVsbCxcbiAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvaXRlbS9zZWFyY2g/aXNKZXdlbGxlcnk9JHt0aGlzLmlzSmV3ZWxsZXJ5fWAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb3VudDogcmVzcG9uc2UuY291bnQsXG4gICAgICAgIGRhdGE6IHJlc3BvbnNlLmRhdGEuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKVxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIGFkZFJldmlldyhwYXlsb2FkOiBSZXZpZXcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9hZGQvcmV2aWV3YCwgcGF5bG9hZCk7XG4gIH1cbiAgZ2V0QWxsUmV2aWV3cyhwcm9kdWN0SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvZmlsdGVyL3Jldmlld3M/cHJvZHVjdElkPSR7cHJvZHVjdElkfWAsIG51bGwpO1xuICB9XG5cbiAgZ2VuZXJhdGVPVFAobW9iaWxlOiBzdHJpbmcsIGNvdW50cnlDb2RlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gXCJcIjtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9vdHAvdHJpZ2dlcj9tb2JpbGU9JHttb2JpbGV9JmNvdW50cnlDb2RlPSR7Y291bnRyeUNvZGV9JmJ1c2luZXNzSWQ9JHtidXNpbmVzc0lkfWAsIG51bGwpO1xuICB9XG4gIHZlcmlmeU9UUChtb2JpbGU6IHN0cmluZywgb3RwOiBzdHJpbmcsIGRldmljZUluZm86IERldmljZUluZm8pIHtcbiAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gXCJcIjtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2F1dGhlbnRpY2F0ZT9tb2JpbGU9JHttb2JpbGV9Jm90cD0ke290cH0mYnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9YCwgZGV2aWNlSW5mbyk7XG4gIH1cbiAgcmVzZW5kT1RQKG1vYmlsZTogc3RyaW5nLCBjb3VudHJ5Q29kZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/IFwiXCI7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvcmVzZW5kP21vYmlsZT0ke21vYmlsZX0mY291bnRyeUNvZGU9JHtjb3VudHJ5Q29kZX0mYnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9YCwgbnVsbCk7XG4gIH1cbiAgYXBwbGljYWJsZURpc2NvdW50TGlzdChjYXJ0SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2Rpc2NvdW50LWNvdXBvbi8ke2NhcnRJZH0vYXBwbGljYWJpbGl0eS9saXN0YCk7XG4gIH1cblxuICBhZGRJdGVtVG9EQih1c2VyQ2FydDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2NhcnRgLCB1c2VyQ2FydCk7XG4gIH1cbiAgZ2V0VXNlckl0ZW1zKHVzZXJJZDogc3RyaW5nLCBjYXJ0VHlwZTogJ0NBUlQnIHwgJ1dJU0hMSVNUJyB8ICdUUklBTF9DQVJUJykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2NhcnQ/dXNlcklkPSR7dXNlcklkfSZjYXJ0VHlwZT0ke2NhcnRUeXBlfWApO1xuICB9XG4gIGdldFVzZXJJbmZvKHVzZXJJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9nZXQvdXNlcj91c2VySWQ9JHt1c2VySWR9YCwgbnVsbCk7XG4gIH1cbiAgYWRkVXNlckFkZHJlc3ModXNlcjogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci91cGRhdGUvdXNlcmAsIHVzZXIpO1xuICB9XG4gIHVwZGF0ZVByb2ZpbGUocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci91cGRhdGUvdXNlcmAsIHBheWxvYWQpO1xuICB9XG4gIGdldFVzZXJPcmRlcnMocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvdXNlci9vcmRlcmAsIHBheWxvYWQpO1xuICB9XG4gIGdldFVzZXJXaXNobGlzdCh1c2VySWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2NhcnQ/dXNlcklkPSR7dXNlcklkfSZjYXJ0VHlwZT1XSVNITElTVGApXG4gIH1cbiAgbW92ZUl0ZW1Ub0NhcnQodXNlcklkOiBzdHJpbmcsIHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL3VwZGF0ZS9jYXJ0P3VzZXJJZD0ke3VzZXJJZH1gLCBwYXlsb2FkKTtcbiAgfVxuXG4gIC8vIFBheW1lbnRcbiAgY3JlYXRlUGF5bWVudFRva2VuKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkVDT01NRVJDRV9VUkwgKyBgcGF5bWVudC9vcmRlcmAsIHBheWxvYWQpO1xuICB9XG4gIGNoZWNrUGF5bWVudFN0YXR1cyhwYXlsb2FkOiBhbnkpIHtcbiAgICBsZXQgaXNKZXdlbGxlcnkgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnaXNNYXRlcmlhbEJhc2VkUHJpY2luZycpID09ICd0cnVlJyA/IHRydWUgOiBmYWxzZTtcbiAgICBsZXQgcGF5bG9hZFdpdGhKZXdlbGxlcnkgPSB7IC4uLnBheWxvYWQsIGlzSmV3ZWxsZXJ5OiBpc0pld2VsbGVyeSB9O1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkVDT01NRVJDRV9VUkwgKyBgcGF5bWVudC9zdGF0dXNgLCBwYXlsb2FkV2l0aEpld2VsbGVyeSk7XG4gIH1cbiAgZ2V0UmVjZW50Vmlld1Byb2R1Y3QodXNlcklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9yZWNlbnRWaWV3P3VzZXJJZD0ke3VzZXJJZH1gLCBudWxsKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKSkpOztcbiAgfVxuXG4gIHNlbmRTaWdudXBPVFAocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvc2lnbnVwL290cC90cmlnZ2VyYCwgcGF5bG9hZCk7XG4gIH1cblxuICB2ZXJpZnlTaWdudXBPVFAocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/ICcnO1xuICAgIC8vIHBheWxvYWRbXCJidXNpbmVzc0lkXCJdID0gYnVzaW5lc3NJZDtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2F1dGhlbnRpY2F0ZS9zaWdudXBgLCBwYXlsb2FkKTtcbiAgfVxuXG4gIHNpZ25pblBhc3N3b3JkKHBhc3NEYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2F1dGhlbnRpY2F0ZS9sb2dpbmAsIHBhc3NEYXRhKTtcbiAgfVxuXG4gIGVuZFVzZXJSZWZmZXJhbERldGFpbHModXNlcklkOiBhbnksIHJlZmVycmFsVW5pcXVlSWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9hcGkvZW5kLXVzZXIvcmVmZXJyYWxEZXRhaWxzP3VzZXJJZD0ke3VzZXJJZH0mcmVmZXJyYWxVbmlxdWVJZD0ke3JlZmVycmFsVW5pcXVlSWR9YCwge30pXG4gIH1cblxuICBjcmVhdGVBcHBvaW50bWVudChkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvYWRkYCwgZGF0YSlcbiAgfVxuXG4gIGdldEFsbExvY2F0aW9uKGJ1c2luZXNzSWQ6IGFueSwgc2l6ZTogbnVtYmVyLCBwYWdlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9sb2NhdGlvbj9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfWBcbiAgICApXG4gIH1cblxuICBnZXRBbGxUaW1lU2xvdHMobG9jYXRpb25JZDogYW55LCBkYXRlOiBEYXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvdGltZXNsb3RzP2xvY2F0aW9uSWQ9JHtsb2NhdGlvbklkfSZkYXRlPSR7ZGF0ZX1gXG4gICAgKVxuICB9XG5cbiAgZ2V0QWxsU2VydmljZShidXNpbmVzc0lkOiBhbnksIHNpemU6IGFueSwgcGFnZTogYW55LCBsb2NhdGlvbklkPzogYW55KSB7XG4gICAgaWYgKCFsb2NhdGlvbklkKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL3NlcnZpY2U/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnNpemU9JHtzaXplfSZwYWdlPSR7cGFnZX1gXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvc2VydmljZT9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfSZsb2NhdGlvbklkPSR7bG9jYXRpb25JZH1gXG4gICAgICApXG5cbiAgICB9XG4gIH1cblxuICBnZXRBbGxTdGFmZkJ5TG9jYXRpb24oYnVzaW5lc3NJZDogYW55LCBzaXplOiBudW1iZXIsIHBhZ2U6IG51bWJlciwgbG9jYXRpb25JZDogc3RyaW5nLCBzZXJ2aWNlSWQ6IHN0cmluZykge1xuICAgIGlmICghc2VydmljZUlkKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL3N0YWZmP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZzaXplPSR7c2l6ZX0mcGFnZT0ke3BhZ2V9JmxvY2F0aW9uSWQ9JHtsb2NhdGlvbklkfWBcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9zdGFmZj9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfSZsb2NhdGlvbklkPSR7bG9jYXRpb25JZH0mc2VydmljZUlkPSR7c2VydmljZUlkfWBcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBnZXRBdmFpbGFibGVTbG90cyhkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9hdmFpbGFibGUvdGltZXNsb3RzYCwgZGF0YVxuICAgIClcbiAgfVxuXG4gIGdldFNlbGVjdGVkTGlzdEZpZWxkcyhiSWQ6IGFueSwgc2hvd0luRXJwOiBhbnksIGZvcm1OYW1lOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL2ZpZWxkcz9idXNpbmVzc0lkPSR7YklkfSZzdGF0dXM9dHJ1ZSZzaG93SW5Gb3JtPSR7c2hvd0luRXJwfSZpc1BhZ2luYXRpb249ZmFsc2UmZmllbGRDYXRlZ29yeT0ke2Zvcm1OYW1lfWBcbiAgICApXG4gIH1cblxuICBnZXRBY3RpdmVTdWJzY3JpcHRpb25Gb3JGZWVTdHJ1Y3R1cmUoYnVzaW5lc3NJZDogYW55LCBncmFkZUlkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL3N1YnNjcmlwdGlvbi9wbGFuL2xpc3Q/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JmdyYWRlSWQ9JHtncmFkZUlkfSZzdGF0dXM9dHJ1ZSZpc0RlbGV0ZWQ9ZmFsc2VgXG4gICAgKVxuICB9XG5cbiAgY3JlYXRlQWRtaXNzaW9uKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL3JlZ2lzdHJhdGlvbi9hZG1pc3Npb24/cmVnaXN0cmF0aW9uSWQ9JHtwYXlsb2FkPy5yZWdpc3RyYXRpb25JZCB8fCAnJ31gLCBwYXlsb2FkXG4gICAgKVxuICB9XG5cbiAgY3JlYXRlUGF5bWVudExpbmsoZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vcmVnaXN0cmF0aW9uL2FkbWlzc2lvbi92Mi9wYXltZW50P2lzRnJvbVdlYj10cnVlYCwgZGF0YVxuICAgIClcbiAgfVxuXG4gIGNyZWF0ZVJlZ2lzdHJhdGlvbkZvclBheW1lbnQocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vcmVnaXN0cmF0aW9uL3JlZ2lzdHJhdGlvbi9wYXltZW50YCwgcGF5bG9hZFxuICAgIClcbiAgfVxuXG5cbiAgZ2V0U3Vic2NyaXB0aW9uRm9yRmVlU3RydWN0dXJlKGdyYWRlSWQ6IGFueSkge1xuICAgIGNvbnN0IGJ1c2luZXNzSWQgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9zdWJzY3JpcHRpb24vcGxhbi9saXN0P2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZncmFkZUlkPSR7Z3JhZGVJZH1gXG4gICAgKVxuICB9XG5cbiAgZ2V0RmVlU3RydWN0dXJlKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vZmVlL3N0cnVjdHVyZWAsIHBheWxvYWRcbiAgICApXG4gIH1cblxuICBuZXdGZWVTdHJ1Y3R1cmVHZXRMaXN0KGRhdGE6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vZmVlL3N0cnVjdHVyZS92Mi9maWx0ZXJgLCBkYXRhXG4gICAgKVxuICB9XG5cbiAgZ2V0QWxsRG9jdW1lbnQocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9tYXN0ZXIvZG9jdW1lbnRUeXBlL2ZpbHRlcmAsIHBheWxvYWQpXG4gIH1cblxuICBnZXRMZWFkQnlJZChsZWFkSWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vbGVhZHMvZ2V0LW9uZT9sZWFkSWQ9JHtsZWFkSWR9YFxuICAgIClcbiAgfVxuXG4gIGdldFJlZ2lzdHJhdGlvbkxpc3QocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9yZWdpc3RyYXRpb24vZ2V0QWxsYCwgcGF5bG9hZFxuICAgIClcbiAgfVxuXG4gIGdldEFsbENvbXBvbmVudENhdGVnb3JpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGFkbWluL21hc3Rlci90ZW1wbGF0ZS9jYXRlZ29yeS9hbGxgXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBzYWZlUGFyc2U8VD4ocmF3OiBzdHJpbmcgfCBudWxsKTogVCB8IG51bGwge1xuICAgIGlmICghcmF3KSByZXR1cm4gbnVsbDtcbiAgICB0cnkgeyByZXR1cm4gSlNPTi5wYXJzZShyYXcpIGFzIFQ7IH0gY2F0Y2ggeyByZXR1cm4gbnVsbDsgfVxuICB9XG5cbiAgZ2V0VGVtcGxhdGUoKSB7XG4gICAgY29uc3QgYkRldGFpbHNSYXcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYkRldGFpbHMnKTtcbiAgICBjb25zdCBkZXRhaWxzID0gdGhpcy5zYWZlUGFyc2U8eyB0ZW1wbGF0ZUlkPzogc3RyaW5nIH0+KGJEZXRhaWxzUmF3KTtcblxuICAgIC8vIGZhbGxiYWNrIHNvdXJjZVxuICAgIGNvbnN0IHdlYnNpdGVEYXRhUmF3ID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ3dlYnNpdGVEYXRhJyk7XG4gICAgY29uc3Qgd2Vic2l0ZURhdGEgPSB0aGlzLnNhZmVQYXJzZTx7IGhvbWVQYWdlSWQ/OiBzdHJpbmcgfT4od2Vic2l0ZURhdGFSYXcpO1xuXG4gICAgLy8gcHJlZmVyIHRlbXBsYXRlSWQgZnJvbSBiRGV0YWlsczsgZWxzZSBmYWxsYmFjayB0byB3ZWJzaXRlRGF0YS5ob21lUGFnZUlkXG4gICAgY29uc3QgdGVtcGxhdGVJZCA9IChkZXRhaWxzPy50ZW1wbGF0ZUlkID8/IHdlYnNpdGVEYXRhPy5ob21lUGFnZUlkID8/ICcnKS50b1N0cmluZygpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBidXNpbmVzcy92My93ZWJzaXRlLyR7dGVtcGxhdGVJZH0vcGFnZXMvbGlzdGApO1xuICB9XG5cblxuICBnZXRFY29tbWVyY2VDb25maWdzKCkge1xuICAgIGNvbnN0IGJ1c2luZXNzSWQgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpID8/IFwiMWYxMDY1MWYtOTI1OC02YjYzLTlkMjMtYTNkNjkxYWNlYjg4XCI7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9lY29tbWVyY2UvY29uZmlnL2FsbD9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH1gXG4gICAgKTtcbiAgfVxuXG4gIHBvc3RWaWRlb0NhbGxEZXRhaWxzKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL2Vjb21tZXJjZS9jb25maWcvdmlkZW8tY2FsbGAsIHBheWxvYWRcbiAgICApXG4gIH1cblxuICBnZXRTdG9yZUxvY2F0b3JEZXRhaWxzKHBpbmNvZGU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvc3RvcmUvbmVhcmJ5P3BpbmNvZGU9JHtwaW5jb2RlfSZidXNpbmVzc0lkPSR7dGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKX1gXG4gICAgKVxuICB9XG5cbiAgc2F2ZUltYWdlc1RvQnVzaW5lc3NMaWJyYXJ5KG1lZGlhUmVxdWVzdDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBhZG1pbi9saWJyYXJ5L2ltYWdlL2xpYnJhcnkvc2F2ZWAsXG4gICAgICBtZWRpYVJlcXVlc3RcbiAgICApO1xuICB9XG5cbiAgcmVnZW5lcmF0ZVRleHQocmVxdWVzdDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBhZG1pbi9jb250ZW50L3N1Z2dlc3QvdjIvd2Vic2l0ZS9pbmRpdmlkdWFsYCwgcmVxdWVzdFxuICAgIClcbiAgfVxuICBnZXRDYXRlZ29yaWVzSGVhZGVyRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvJHt0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpfS9oZWFkZXJzYFxuICAgIClcbiAgfVxuICBnZXRBbGxTdG9yZXMocGF5bG9hZDogYW55KSB7XG4gICAgbGV0IHVybCA9ICcnXG4gICAgaWYgKHBheWxvYWQ/LnBpbmNvZGUgJiYgcGF5bG9hZC5waW5jb2RlLnRvU3RyaW5nKCkubGVuZ3RoID09IDYpIHtcbiAgICAgIHVybCA9IHVybCArIGAgJnBpbmNvZGU9JHtwYXlsb2FkLnBpbmNvZGV9YFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3N0b3JlL2dldC92Mj9idXNpbmVzc0lkPSR7cGF5bG9hZC5idXNpbmVzc0lkfSR7dXJsfWAsICcnXG4gICAgKVxuICB9XG5cbiAgZ2V0QWxsQXBwb2ludG1lbnRTZXJ2aWNlKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxuICAgICAgdGhpcy5BUFBPSU5UTUVOVF9VUkwgKyAnc2VydmljZS9saXN0JywgcGF5bG9hZFxuICAgIClcbiAgfVxuXG4gIGdldEFsbFN0YWZmKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBzdGFmZi9zdGFmZi9zdG9yZS1zdGFmZi1saXN0P3NlcnZpY2VJZD0ke3BheWxvYWQuc2VydmljZUlkfSZzdG9yZUlkPSR7cGF5bG9hZC5zdG9yZUlkfSZidXNpbmVzc0lkPSR7cGF5bG9hZC5idXNpbmVzc0lkfWBcbiAgICApXG4gIH1cblxuICBnZXRTdG9yZUJ5SWQoc3RvcmVJZDogc3RyaW5nKSB7XG4gICAgbGV0IHBheWxvYWQgPSB7XG4gICAgICBzdG9yZUlkOiBzdG9yZUlkLFxuICAgICAgYnVzaW5lc3NJZDogdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKSA/PyBcIlwiLFxuICAgICAgcGFnZU5vOiAwLFxuICAgICAgcGFnZVNpemU6IDEwMDBcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9zdG9yZS9nZXRgLCBwYXlsb2FkKVxuICB9XG4gIHBvc3ROZXdzTGV0dGVyKGVtYWlsOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9lY29tbWVyY2UvY29uZmlnL3JlZ2lzdGVyZWQvbmV3c2xldHRlcj9lbWFpbD0ke2VtYWlsfSZidXNpbmVzc0lkPSR7dGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKX1gLCAnJ1xuICAgIClcbiAgfVxuICBhZGRSZXZpZXdUb1Byb2R1Y3QocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9hZGQvcmV2aWV3P29yZGVySWQ9JHtwYXlsb2FkLm9yZGVySWR9YCwgcGF5bG9hZFxuICAgIClcbiAgfVxuXG4gIGdldEFsbFN0b3Jlc09ycmEocGFnZU5vOiBhbnksIHNpemU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgYGh0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL3N0b3JlP3BhZ2VObz0ke3BhZ2VOb30mc2l6ZT0ke3NpemV9YFxuICAgIClcbiAgfVxuXG4gIGdldHN0YWZmQnlTdG9yZUlkKHN0b3JlSWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgYGh0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL3N0YWZmL2dldC8ke3N0b3JlSWR9YFxuICAgIClcbiAgfVxuXG5cbiAgZ2V0QWxsU2NoZW1lKCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgYGh0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL3NjaGVtZS9nZXRBbGxTY2hlbWVzL2Rhc2hib2FyZGBcbiAgICApXG4gIH1cblxuICBnZXRBbGxTdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIGBodHRwczovL3N0YWdlYXBpLW9ycmEubGV0c21vYmlsaXR5LmNvbS9zdGF0ZS9nZXRBbGxgXG4gICAgKVxuICB9XG5cbiAgZ2V0Q2l0eUJ5U3RhdGVCeXBhZ2luYXRlZChzdGF0ZUlkOiBhbnksIHBhZ2VObzogYW55LCBzaXplOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIGBodHRwczovL3N0YWdlYXBpLW9ycmEubGV0c21vYmlsaXR5LmNvbS9jaXR5L2dldEJ5U3RhdGU/c3RhdGVJZD0ke3N0YXRlSWR9JnBhZ2VObz0ke3BhZ2VOb30mc2l6ZT0ke3NpemV9YFxuICAgIClcbiAgfVxuXG4gIGdldFN0b3JlQnlTbGFiKGRhdGE6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxuICAgICAgYGh0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL3N0b3JlL2dldFNsYWJgLCBkYXRhXG4gICAgKVxuICB9XG5cbiAgYWRkVHJpYWxJdGVtKHJlcXVlc3Q6IHN5bmNJdGVtVG9TZXJ2ZXJEQlJlcXVlc3QpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2NhcnQvdjJgLCByZXF1ZXN0XG4gICAgKVxuICB9XG5cbiAgY2hlY2tJdGVtQWxyZWFkeUFkZGVkKHJlcXVlc3Q6IGNoZWNrSXRlbUFscmVhZHlBZGRlZCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvY2FydC9jaGVjay9pdGVtYCwgcmVxdWVzdFxuICAgIClcbiAgfVxuXG4gIGRlbGV0ZUl0ZW1Gcm9tQ2FydChyZXF1ZXN0OiBzeW5jSXRlbVRvU2VydmVyREJSZXF1ZXN0KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9jYXJ0L3JlbW92ZWAsIHJlcXVlc3RcbiAgICApXG4gIH1cblxuICBib29rQXBwb2ludG1lbnQocmVxdWVzdDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci90cnktaG9tZWAsIHJlcXVlc3RcbiAgICApXG4gIH1cblxuICBjcmVhdGVFbnJvbGxtZW50U2NoZW1lKGVucm9sbGVtZW50OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXG4gICAgICBgICBodHRwczovL3N0YWdlYXBpLW9ycmEubGV0c21vYmlsaXR5LmNvbS9lbnJvbGxtZW50L2NyZWF0ZS9uZXcvdGVtcD9tYW51YWxQYXk9dHJ1ZSZpc1dlYlJlcXVlc3Q9dHJ1ZVxuYCwgZW5yb2xsZW1lbnRcbiAgICApXG4gIH1cblxuICBnZXRIb21lQXBwb2ludG1lbnRMaXN0KHVzZXJJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYnVzaW5lc3NJZCA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdiSWQnKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvdHJ5LWhvbWU/dXNlcklkPSR7dXNlcklkfSZidXNpbmVzc0lkPSR7YnVzaW5lc3NJZH1gXG4gICAgKVxuICB9XG5cbiAgZ2V0QWxsT3JyYVNjaGVtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgICdodHRwczovL3N0YWdlYXBpLW9ycmEubGV0c21vYmlsaXR5LmNvbS9wYXNzQm9vay9yZWRlbXB0aW9uL2Ftb3VudC9jaGVjaz91c2VyQ29kZT1DXzAwMDMxMzg4NSdcbiAgICApXG4gIH1cblxuICByZWRlZW1TY2hlbWUoc2NoZW1lOiBzdHJpbmcsIGNhcnRJZDogYW55LCBhY3Rpb246IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9jYXJ0L3JlZGVtcHRpb24/Y2FydElkPSR7Y2FydElkfSZyZW1vdmVTY2hlbWU9JHthY3Rpb259YCwgc2NoZW1lXG4gICAgKVxuICB9XG5cbiAgZ2V0UmV2aWV3c0J5UHJvZHVjdElkKHByb2R1Y3RJZDogc3RyaW5nLCBwYWdlTnVtYmVyOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvZmlsdGVyL3Jldmlld3M/cHJvZHVjdElkPSR7cHJvZHVjdElkfSZwYWdlTnVtYmVyPSR7cGFnZU51bWJlcn0mcGFnZVNpemU9M2AsIHt9XG4gICAgKVxuICB9XG4gIGdldEZpZWxkc1RvRGlzcGxheShmaWVsZHNMaXN0OiBhbnlbXSkge1xuICAgIGxldCBtYXA6IGFueSA9IHt9O1xuXG4gICAgZm9yIChsZXQgZmllbGQgb2YgZmllbGRzTGlzdCkge1xuICAgICAgZm9yIChsZXQgZmllbGRHcm91cCBvZiBmaWVsZC5maWVsZEdyb3VwKSB7XG4gICAgICAgIGlmICghZmllbGRHcm91cC5maWVsZFN0ZXBJZClcbiAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICBsZXQgc3RlcE5hbWUgPSBmaWVsZEdyb3VwLmZpZWxkU3RlcE5hbWUgPyBmaWVsZEdyb3VwLmZpZWxkU3RlcE5hbWUgOiAndW5kZWZpbmVkJztcbiAgICAgICAgbGV0IGdyb3VwTmFtZSA9IGZpZWxkR3JvdXAuZmllbGRHcm91cE5hbWU7XG5cbiAgICAgICAgaWYgKCFtYXBbc3RlcE5hbWVdKSB7XG4gICAgICAgICAgbWFwW3N0ZXBOYW1lXSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGlmICghbWFwW3N0ZXBOYW1lXVtncm91cE5hbWVdKSB7XG4gICAgICAgICAgbWFwW3N0ZXBOYW1lXVtncm91cE5hbWVdID0gW107XG4gICAgICAgIH1cbiAgICAgICAgZmllbGRbJ2ZpZWxkU3RlcElkJ10gPSBmaWVsZEdyb3VwLmZpZWxkU3RlcElkO1xuICAgICAgICBmaWVsZFsnZmllbGRHcm91cElkJ10gPSBmaWVsZEdyb3VwLmZpZWxkR3JvdXBJZDtcblxuICAgICAgICBjb25zdCBuZXdGaWVsZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZmllbGQpKTtcbiAgICAgICAgbWFwW3N0ZXBOYW1lXVtncm91cE5hbWVdLnB1c2gobmV3RmllbGQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXA7XG4gIH1cblxuICBnZXRCb29raW5nU2xvdHMocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5BUFBPSU5UTUVOVF9VUkwgKyAnYm9va2luZy9hdmFpbGFibGUtc2xvdHMnLCBwYXlsb2FkKTtcbiAgfVxuXG4gIGJvb2tBcHBvaW50bWVudFYyKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkFQUE9JTlRNRU5UX1VSTCArICdib29raW5nJywgcGF5bG9hZCk7XG4gIH1cbiAgcGF5bWVudEZvckFwcG9pbnRtZW50KHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkFQUE9JTlRNRU5UX1VSTCArICdwYXltZW50L3Rva2VuJywgcGF5bG9hZCk7XG4gIH1cbiAgZ2VuZXJhdGVUb2tlbihiSWQ6IGFueSwgdXNlcklkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5QQVNTQk9PS19VUkwgKyBgZXh0L2Nvbm5lY3Qvc2ltcG8vdG9rZW4/YnVzaW5lc3NJZD0ke2JJZH0mdXNlcklkPSR7dXNlcklkfSZ1c2VyVHlwZT1FWFRFUk5BTF9VU0VSYCwge30pO1xuICB9XG4gIGdldEFsbEVucm9sbGVkU2NoZW1lcyhwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLlBBU1NCT09LX1VSTCArICdleHQvY29ubmVjdC9zaW1wby9zY2hlbWUvbGlzdCcsIHBheWxvYWQpXG4gIH1cbiAgZW5yb2xsU2NoZW1lKHBheWxvYWQ6IGFueSwgY2hlY2tDaGFyZ2VzOiBib29sZWFuKSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0b2tlbn1gXG4gICAgfSk7XG4gICAgaWYgKGNoZWNrQ2hhcmdlcykge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuUEFTU0JPT0tfVVJMICsgJ3Bhc3Nib29rL2NhcnQvaW5pdGlhdGUvcGF5bWVudD9tYW51YWxQYXk9dHJ1ZScsIHBheWxvYWQsIHsgaGVhZGVyczogaGVhZGVycyB9KVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLlBBU1NCT09LX1VSTCArICdwYXNzYm9vay9pbml0aWF0ZS9wYXltZW50P21hbnVhbFBheT10cnVlJywgcGF5bG9hZCwgeyBoZWFkZXJzOiBoZWFkZXJzIH0pXG4gICAgfVxuICB9XG4gIGdldEJlbmVmaXRTbGFiKHBhc3Nib29rSWQ/OiBhbnkpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKTtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5QQVNTQk9PS19VUkwgKyBgcGFzc2Jvb2svYmVuZWZpdC9wZXJjZW50YWdlcz9wYXNzYm9va0lkPSR7cGFzc2Jvb2tJZH1gLCB7fSwgeyBoZWFkZXJzOiBoZWFkZXJzIH0pXG4gIH1cbiAgZ2V0QWxsU3RhZmZMaXN0KCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgc3RhZmYvc3RhZmYvbGlzdC8ke3RoaXMuc3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyl9P2lzUGFnaW5hdGlvbj1mYWxzZWApXG4gIH1cbiAgcmVxdWVzdFJlZGVlbXB0aW9uKHBhc3Nib29rSWQ6IGFueSkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5nZXRUb2tlbigpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuUEFTU0JPT0tfVVJMICsgYHBhc3Nib29rL3JlcXVlc3QvcmVkZW1wdGlvbj9wYXNzQm9va0lkPSR7cGFzc2Jvb2tJZH1gLCB7fSwgeyBoZWFkZXJzOiBoZWFkZXJzIH0pXG4gIH1cbiAgUGFzc2Jvb2tBcHBTdGF0dXMoYklkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGFwcC9hcHAvY2hlY2stYXBwP2J1c2luZXNzSWQ9JHtiSWR9JmFwcE5hbWU9UGFzc2Jvb2tgKVxuICB9XG4gIGNoZWNrQXBwSW5zdGFsbGVkKGJJZDogYW55LCBhcHBOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGFwcC9hcHAvY2hlY2stYXBwP2J1c2luZXNzSWQ9JHtiSWR9JmFwcE5hbWU9JHthcHBOYW1lfWApXG4gIH1cbiAgZ2V0UmVkZWVtUG9pbnRzKGJJZDogYW55LCB1c2VySWQ6IGFueSwgZXZldFR5cGU6IHN0cmluZywgb3JkZXJWYWx1ZTogYW55LCByZXdhcmRQb2ludHM6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL2FwaS9yZWZlcnJhbHMvYXZhaWxhYmxlLWFtb3VudD9idXNpbmVzc0lkPSR7YklkfSZ1c2VySWQ9JHt1c2VySWR9JmV2ZW50VHlwZT0ke2V2ZXRUeXBlfSZvcmRlclZhbHVlPSR7b3JkZXJWYWx1ZX0mcmV3YXJkUG9pbnRzPSR7cmV3YXJkUG9pbnRzfWBcbiAgICApXG4gIH1cbiAgcGF5bWVudFdpdGhDb21wbGV0ZVBvaW50cyhjYXJ0SWQ6IGFueSwgZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvb3JkZXIvcmV3YXJkcz9jYXJ0SWQ9JHtjYXJ0SWR9YCwgZGF0YVxuICAgIClcbiAgfVxuXG4gIGdldEFsbFBhc3Nib29rRHVlcyhiSWQ6IGFueSwgdXNlcklkOiBhbnkpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKTtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLlBBU1NCT09LX1VSTCArIGBwYXNzYm9vay9wYXltZW50L2R1ZXM/cGFnZT0wJnNpemU9MTAwMCZidXNpbmVzc0lkPSR7YklkfSZ1c2VySWQ9JHt1c2VySWR9YCwgeyBoZWFkZXJzOiBoZWFkZXJzIH0pXG4gIH1cbiAgZ2V0VG9rZW4oKSB7XG4gICAgbGV0IHRva2VuID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldCgncGFzc0Jvb2tUb2tlbicpXG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG4gIGdldEFsbFRyYW5zYWN0aW9ucyhwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKTtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLlBBU1NCT09LX1VSTCArIGBkYXNoYm9hcmQvdjMvdHJhbnNhY3Rpb25zL3BhZ2VgLCBwYXlsb2FkLCB7IGhlYWRlcnM6IGhlYWRlcnMgfSlcbiAgfVxuICBnZXRTY2hlbWVEZXRhaWxzKHNjaGVtZUlkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5QQVNTQk9PS19VUkwgKyBgZXh0L2Nvbm5lY3Qvc2ltcG8vZ2V0L3NjaGVtZT9pZD0ke3NjaGVtZUlkfWAsIHt9KVxuICB9XG5cbiAgZ2V0TWV0YWxQcmljZShzdG9yZUlkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLlBBU1NCT09LX1VSTCArIGBleHQvY29ubmVjdC9zaW1wby9tZXRhbC9wcmljZXM/aWQ9JHtzdG9yZUlkfWApXG4gIH1cblxuICBjcmVhdGVMZWFkKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGJ1c2luZXNzL2NvbnRhY3RgLCBwYXlsb2FkKVxuICB9XG4gIGdldEFwcG9pbnRtZW50UGF5bWVudFN0YXR1cyhvcmRlcklkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkFQUE9JTlRNRU5UX1VSTCArIGBwYXltZW50L3ZlcmlmeS9zdGF0dXM/b3JkZXJJZD0ke29yZGVySWR9YClcbiAgfVxuICBnZXRPdHBGb3JMb2dpbihwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2dlbmVyYXRlLW90cGAsIHBheWxvYWQpXG4gIH1cblxuICAvKiogTmV3IE9UUCBBUEk6IFBVVCAvZWNvbW1lcmNlL3VzZXIvYXV0aC9zZW5kLW90cFxuICAgKiAgQm9keTogeyBpZGVudGlmaWVyLCBidXNpbmVzc0lkIH1cbiAgICogIFJlc3BvbnNlOiB7IGRhdGE6IHsgaXNFeGlzdGluZ1VzZXI6IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZyB9IH1cbiAgICovXG4gIHNlbmRPdHBWMihpZGVudGlmaWVyOiBzdHJpbmcsIGJ1c2luZXNzSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvYXV0aC9zZW5kLW90cGAsIHsgaWRlbnRpZmllciwgYnVzaW5lc3NJZCB9KTtcbiAgfVxuXG4gIHZlcmlmeU90cFYyKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvYXV0aC92ZXJpZnktb3RwYCwgcGF5bG9hZCk7XG4gIH1cblxuICBjb21wbGV0ZVNpZ251cFYyKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvYXV0aC9jb21wbGV0ZS1zaWdudXBgLCBwYXlsb2FkKTtcbiAgfVxuXG4gIGxvZ2luV2l0aFBhc3N3b3JkTmV3KHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvYXV0aC9sb2dpbi1wYXNzd29yZGAsIHBheWxvYWQpO1xuICB9XG5cbiAgZmx1c2goZXZlbnRzVG9TZW5kOiBhbnkpIHtcbiAgICB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgJ2Vjb21tZXJjZS9hbmFseXRpY3MvYmF0Y2gnLCBldmVudHNUb1NlbmQpXG4gICAgICAuc3Vic2NyaWJlKHsgZXJyb3I6ICgpID0+IHsgfSB9KTtcbiAgfVxuXG4gIGdldFBvcHVsYXJTZWFyY2hlcygpIHtcbiAgICBjb25zdCBidXNpbmVzc0lkID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/IFwiMWYxMjEwODEtZGJlYS02NWM2LWFkODktMWRmZThjZGRhOTAyXCI7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvaW52ZW50b3J5L3BvcHVsYXItc2VhcmNoZXM/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9YClcbiAgfVxuXG4gIGdldE1lbnVJdGVtcyhtZW51SWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL21lbnUvJHttZW51SWR9YCk7XG4gIH1cblxuICBnZXRIb21lUmVjb21tZW5kYXRpb25zKGJ1c2luZXNzSWQ6IGFueSwgVXNlcklkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLlJFQ09NTUVOREFUSU9OX1VSTCArIGBhcGkvdjEvcmVjb21tZW5kYXRpb25zLyR7VXNlcklkfS9ob21lP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZwYWdlPTEmcGFnZVNpemU9MjBgKVxuICB9XG5cbiAgZ2V0Q2FydFJlY29tbWVuZGF0aW9ucyhidXNpbmVzc0lkOiBhbnksIFVzZXJJZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5SRUNPTU1FTkRBVElPTl9VUkwgKyBgYXBpL3YxL3JlY29tbWVuZGF0aW9ucy8ke1VzZXJJZH0vY2FydD9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mcGFnZT0xJnBhZ2VTaXplPTE1YClcbiAgfVxuXG4gIGdldFByb2R1Y3REZXNjcmlwdGlvblJlY29tbWVuZGF0aW9ucyhidXNpbmVzc0lkOiBhbnksIFVzZXJJZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5SRUNPTU1FTkRBVElPTl9VUkwgKyBgYXBpL3YxL3JlY29tbWVuZGF0aW9ucy8ke1VzZXJJZH0vcGRwP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZwYWdlPTEmcGFnZVNpemU9MTBgKVxuICB9XG59XG4iXX0=
@@ -329,4 +329,4 @@ export var GradientDirection;
329
329
  GradientDirection["DIAGONAL_RIGHT"] = "45deg";
330
330
  GradientDirection["DIAGONAL_LEFT"] = "315deg";
331
331
  })(GradientDirection || (GradientDirection = {}));
332
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3N0eWxlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzREFBc0Q7QUFLdEQsdURBQXVEO0FBQ3ZELE1BQU0sQ0FBTixJQUFZLEtBR1g7QUFIRCxXQUFZLEtBQUs7SUFDZiw0QkFBbUIsQ0FBQTtJQUNuQiwwQkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSFcsS0FBSyxLQUFMLEtBQUssUUFHaEI7QUFFRCxNQUFNLENBQU4sSUFBWSxPQU1YO0FBTkQsV0FBWSxPQUFPO0lBQ2pCLDBCQUFlLENBQUE7SUFDZix5QkFBYyxDQUFBO0lBQ2QsMEJBQWUsQ0FBQTtJQUNmLHlCQUFjLENBQUE7SUFDZCwwQkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFOVyxPQUFPLEtBQVAsT0FBTyxRQU1sQjtBQWVELE1BQU0sQ0FBTixJQUFZLGVBS1g7QUFMRCxXQUFZLGVBQWU7SUFDekIsdUNBQW9CLENBQUE7SUFDcEIsZ0RBQTZCLENBQUE7SUFDN0Isc0NBQW1CLENBQUE7SUFDbkIsaURBQThCLENBQUE7QUFDaEMsQ0FBQyxFQUxXLGVBQWUsS0FBZixlQUFlLFFBSzFCO0FBQ0QsTUFBTSxDQUFOLElBQVksWUFPWDtBQVBELFdBQVksWUFBWTtJQUN0QixvQ0FBb0IsQ0FBQTtJQUNwQiw4QkFBYyxDQUFBO0lBQ2QsK0JBQWUsQ0FBQTtJQUNmLDhCQUFjLENBQUE7SUFDZCw2QkFBYSxDQUFBO0lBQ2IsK0JBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUFcsWUFBWSxLQUFaLFlBQVksUUFPdkI7QUFDRCxNQUFNLENBQU4sSUFBWSxZQUlYO0FBSkQsV0FBWSxZQUFZO0lBQ3RCLHlEQUF5QyxDQUFBO0lBQ3pDLDZEQUE2QyxDQUFBO0lBQzdDLHNEQUFzQyxDQUFBO0FBQ3hDLENBQUMsRUFKVyxZQUFZLEtBQVosWUFBWSxRQUl2QjtBQUNELE1B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QkFBaUIsUUFLNUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cclxuXHJcbmltcG9ydCB7IFNwYWNpbmdNb2RlbCB9IGZyb20gJy4vc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBTUEFDSU5HX1RZUEUgfSBmcm9tICcuL3R5cGVzJztcclxuXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuZXhwb3J0IGVudW0gU3R5bGUge1xyXG4gIGNvbnRlbnQgPSAnQ09OVEVOVCcsXHJcbiAgc2NyZWVuID0gJ1NDUkVFTicsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFNQQUNJTkcge1xyXG4gIG5vbmUgPSAnMS41cmVtJyxcclxuICBzbWFsbCA9ICczcmVtJyxcclxuICBtZWRpdW0gPSAnNXJlbScsXHJcbiAgbGFyZ2UgPSAnNnJlbScsXHJcbiAgcmVtb3ZlID0gJzByZW0nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV0IHtcclxuICBkaXNwbGF5OiAnZmxleCc7XHJcbiAgJ2p1c3RpZnktY29udGVudCc6ICdjZW50ZXInO1xyXG4gICdhbGlnbi1pdGVtcyc6ICdjZW50ZXInO1xyXG4gIGhlaWdodDogJzEwMCUnO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU2NyZWVuIHtcclxuICBkaXNwbGF5OiAnZmxleCc7XHJcbiAgJ2p1c3RpZnktY29udGVudCc6ICdjZW50ZXInO1xyXG4gICdhbGlnbi1pdGVtcyc6ICdjZW50ZXInO1xyXG4gICdtaW4taGVpZ2h0JzogJ2NhbGMoOTV2aCAtIDBweCknO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBCQU5ORVJBTElHTk1FTlQge1xyXG4gIGxlZnQgPSBcImZsZXgtbGctcm93XCIsXHJcbiAgcmlnaHQgPSBcImZsZXgtbGctcm93LXJldmVyc2VcIixcclxuICB0b3AgPSBcImZsZXgtY29sdW1uXCIsXHJcbiAgYm90dG9tID0gXCJmbGV4LWNvbHVtbi1yZXZlcnNlXCJcclxufVxyXG5leHBvcnQgZW51bSBTUEFDSU5HQUxJR04ge1xyXG4gIGV4dHJhTGFyZ2UgPSBcIjEwcmVtXCIsXHJcbiAgbGFyZ2UgPSBcIjhyZW1cIixcclxuICBtZWRpdW0gPSBcIjZyZW1cIixcclxuICBzbWFsbCA9IFwiMnJlbVwiLFxyXG4gIG5vbmUgPSBcIjFyZW1cIixcclxuICByZW1vdmUgPSBcIjByZW1cIixcclxufVxyXG5leHBvcnQgZW51bSBCQU5ORVJIQUxJR04ge1xyXG4gIGxlZnQgPSAnanVzdGlmeS1jb250ZW50LXN0YXJ0IHRleHQtc3RhcnQnLFxyXG4gIGNlbnRlciA9ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHRleHQtY2VudGVyJyxcclxuICByaWdodCA9ICdqdXN0aWZ5LWNvbnRlbnQtZW5kIHRleHQtZW5kJyxcclxufVxyXG5leHBvcnQgZW51bSBIQUxJR04ge1xyXG4gIGxlZnQgPSAndGV4dC1hbGlnbjogbGVmdCcsXHJcbiAgY2VudGVyID0gJ3RleHQtYWxpZ246IGNlbnRlcicsXHJcbiAgcmlnaHQgPSAndGV4dC1hbGlnbjogcmlnaHQnLFxyXG59XHJcbmV4cG9ydCBlbnVtIFZBTElHTiB7XHJcbiAgbGVmdCA9ICd0ZXh0LWFsaWduOiB0b3AnLFxyXG4gIGNlbnRlciA9ICd0ZXh0LWFsaWduOiBjZW50ZXInLFxyXG4gIHJpZ2h0ID0gJ3RleHQtYWxpZ246IGJvdHRvbScsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFBhZGRpbmcge1xyXG4gIHRvcCA9ICdwYWRkaW5nLXRvcCcsXHJcbiAgYm90dG9tID0gJ3BhZGRpbmctYm90dG9tJyxcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGFuaW1hdGlvbiA9IHtcclxuICB0eXBlOiB7XHJcbiAgICB0b3A6ICd3My1hbmltYXRlLXRvcCcsXHJcbiAgICBib3R0b206ICd3My1hbmltYXRlLWJvdHRvbScsXHJcbiAgICBsZWZ0OiAndzMtYW5pbWF0ZS1sZWZ0JyxcclxuICAgIHJpZ2h0OiAndzMtYW5pbWF0ZS1yaWdodCcsXHJcbiAgICBmYWRlSW46ICd3My1hbmltYXRlLW9wYWNpdHknLFxyXG4gICAgem9vbTogJ3czLWFuaW1hdGUtem9vbScsXHJcbiAgICBub25lOiAnbm9uZSdcclxuICB9LFxyXG4gIHNwZWVkOiB7XHJcbiAgICBzbG93OiAnM3MnLFxyXG4gICAgbWVkaXVtOiAnMnMnLFxyXG4gICAgZmFzdDogJzFzJyxcclxuICB9LFxyXG59O1xyXG5leHBvcnQgZW51bSBIRUFERVJfU1RZTElORyB7XHJcbiAgTE9HT19MRUZUX19NRU5VX1JJR0hUID0gXCJMT0dPX0xFRlRfX01FTlVfUklHSFRcIixcclxuICBMT0dPX0NFTlRFUl9fTUVOVV9MRUZUID0gXCJMT0dPX0NFTlRFUl9fTUVOVV9MRUZUXCIsXHJcbiAgTE9HT19SSUdIVF9fTUVOVV9MRUZUID0gXCJMT0dPX1JJR0hUX19NRU5VX0xFRlRcIlxyXG59XHJcbmV4cG9ydCBlbnVtIEhlYWRlcl9UeXBlIHtcclxuICBIRUFERVIxID0gXCJIZWFkZXIxXCIsXHJcbiAgSEVBREVSMiA9IFwiSGVhZGVyMlwiLFxyXG4gIEhFQURFUjMgPSBcIkhlYWRlcjNcIixcclxuICBIRUFERVI0ID0gXCJIZWFkZXI0XCJcclxufVxyXG5cclxuZXhwb3J0IGVudW0gU3RpY2t5X1R5cGUge1xyXG4gIE5PTkUgPSAnTm9uZScsXHJcbiAgU1RJQ0tZID0gJ1N0aWNreScsXHJcbiAgU0hSSU5LX09OX1NDUk9MTCA9ICdTaHJpbmtPblNjcm9sbCcsXHJcbiAgVFJBTlNQQVJFTlRfT05fU0NST0xMID0gJ1RyYW5zcGFyZW50T25TY3JvbGwnLFxyXG4gIFNUSUNLWV9BRlRFUl9TQ1JPTEwgPSAnU3RpY2t5QWZ0ZXJTY3JvbGwnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIE1lbnVfVHlwZSB7XHJcbiAgTUVHQV9NRU5VID0gXCJNRUdBX01FTlVcIixcclxuICBEUk9QX0RPV04gPSBcIkRST1BET1dOX01FTlVcIixcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTW9iaWxlX01lbnVfVHlwZSB7XHJcbiAgSEFNQlVSR0VSICAgICA9ICdIQU1CVVJHRVInLFxyXG4gIEZVTExfU0NSRUVOICAgPSAnRlVMTF9TQ1JFRU4nLFxyXG4gIEJPVFRPTV9TVElDS1kgPSAnQk9UVE9NX1NUSUNLWScsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFRFWFRfU0laRSB7XHJcbiAgU21hbGwgPSAnU21hbGwnLFxyXG4gIE1lZGl1bSA9ICdNZWRpdW0nLFxyXG4gIExhcmdlID0gJ0xhcmdlJyxcclxuICBFeHRyYUxhcmdlID0gJ0V4dHJhX0xhcmdlJ1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZm9udFNpemUgPSB7XHJcbiAgaGVhZGluZzoge1xyXG4gICAgU21hbGw6ICdoZWFkaW5nLWZzLXNtYWxsJyxcclxuICAgIE1lZGl1bTogJ2hlYWRpbmctZnMtbWVkaXVtJyxcclxuICAgIExhcmdlOiAnaGVhZGluZy1mcy1sYXJnZScsXHJcbiAgICBFeHRyYV9MYXJnZTogJ2hlYWRpbmctZnMteGxhcmdlJ1xyXG4gIH0sXHJcbiAgZGVzYzoge1xyXG4gICAgU21hbGw6ICdkZXNjLWZzLXNtYWxsJyxcclxuICAgIE1lZGl1bTogJ2Rlc2MtZnMtbWVkaXVtJyxcclxuICAgIExhcmdlOiAnZGVzYy1mcy1sYXJnZScsXHJcbiAgICBFeHRyYV9MYXJnZTogJ2Rlc2MtZnMteGxhcmdlJ1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IG1hcFN0eWxlID0ge1xyXG4gIFN0cmVldHM6ICdzdHJlZXRzLXYxMicsXHJcbiAgT3V0ZG9vcnM6ICdvdXRkb29ycy12MTInLFxyXG4gIExpZ2h0OiAnbGlnaHQtdjExJyxcclxuICBEYXJrOiAnZGFyay12MTEnLFxyXG4gIFNhdGVsbGl0ZTogJ3NhdGVsbGl0ZS12OScsXHJcbiAgU2F0ZWxsaXRlX3N0cmVldDogJ3NhdGVsbGl0ZS1zdHJlZXRzLXYxMicsXHJcbiAgbmF2aWdhdGlvbl9kYXk6ICduYXZpZ2F0aW9uLWRheS12MScsXHJcbiAgbmF2aWdhdGlvbl9uaWdodDogJ25hdmlnYXRpb24tbmlnaHQtdjEnXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjb250ZW50QWxpZ25tZW50ID0ge1xyXG4gIHRvcDogJ2p1c3RpZnktY29udGVudC1zdGFydCcsXHJcbiAgY2VudGVyOiAnanVzdGlmeS1jb250ZW50LWNlbnRlcicsXHJcbiAgYm90dG9tOiAnanVzdGlmeS1jb250ZW50LWVuZCdcclxufVxyXG4vLyBleHBvcnQgY29uc3QgYmFubmVyQWxpZ25tZW50ID0gKGVsZW1lbnQgOiBhbnkpID0+IHtcclxuXHJcbi8vIH1cclxuZXhwb3J0IGNvbnN0IGZpdENvbnRlbnQgPSAoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgY29uc3Qgc3R5bGU6IENvbnRldCA9IHtcclxuICAgIGRpc3BsYXk6ICdmbGV4JyxcclxuICAgICdqdXN0aWZ5LWNvbnRlbnQnOiAnY2VudGVyJyxcclxuICAgICdhbGlnbi1pdGVtcyc6ICdjZW50ZXInLFxyXG4gICAgaGVpZ2h0OiAnMTAwJScsXHJcbiAgfTtcclxuICBhcHBseVN0eWxlKGVsZW1lbnQsIHN0eWxlKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBmaXRTY3JlZW4gPSAoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgY29uc3Qgc3R5bGU6IFNjcmVlbiA9IHtcclxuICAgIGRpc3BsYXk6ICdmbGV4JyxcclxuICAgICdqdXN0aWZ5LWNvbnRlbnQnOiAnY2VudGVyJyxcclxuICAgICdhbGlnbi1pdGVtcyc6ICdjZW50ZXInLFxyXG4gICAgJ21pbi1oZWlnaHQnOiAnY2FsYyg5NXZoIC0gMHB4KScsXHJcbiAgfTtcclxuICBhcHBseVN0eWxlKGVsZW1lbnQsIHN0eWxlKTtcclxufTtcclxuZXhwb3J0IGNvbnN0IGFwcGx5U3R5bGUgPSAoZWxlbWVudDogYW55LCBzdHlsZU9iajogYW55KSA9PiB7XHJcbiAgT2JqZWN0LmVudHJpZXMoc3R5bGVPYmopLmZvckVhY2goKFtzdHlsZU5hbWUsIHN0eWxlVmFsdWVdKSA9PiB7XHJcbiAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSk7XHJcbiAgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYXBwbHlTcGFjaW5nID0gKGVsZW1lbnQ6IGFueSwgc3BhY2U/OiBTcGFjaW5nTW9kZWwpID0+IHtcclxuICBpZiAoc3BhY2U/LnRvcCkge1xyXG4gICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcclxuICAgICAgUGFkZGluZy50b3AsXHJcbiAgICAgIFNQQUNJTkdbc3BhY2UudG9wIGFzIGtleW9mIHR5cGVvZiBTUEFDSU5HXVxyXG4gICAgKTtcclxuICB9XHJcbiAgaWYgKHNwYWNlPy5ib3R0b20pIHtcclxuICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXHJcbiAgICAgIFBhZGRpbmcuYm90dG9tLFxyXG4gICAgICBTUEFDSU5HW3NwYWNlLmJvdHRvbSBhcyBrZXlvZiB0eXBlb2YgU1BBQ0lOR11cclxuICAgICk7XHJcbiAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGVudW0gUmVkaXJlY3Rpb25MaW5rVHlwZSB7XHJcbiAgUGFnZSA9ICdQYWdlJyxcclxuICBFeHRlcm5hbCA9ICdFeHRlcm5hbCcsXHJcbiAgRW1haWwgPSAnRW1haWwnLFxyXG4gIFBob25lID0gJ1Bob25lJyxcclxuICBzZWN0aW9uID0gJ1NlY3Rpb24nXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIENvcm5lcnMge1xyXG4gIFJvdW5kID0gJ1JvdW5kJyxcclxuICBTbWFsbCA9ICdTbWFsbCcsXHJcbiAgTWVkaXVtID0gJ01lZGl1bScsXHJcbiAgTGFyZ2UgPSAnTGFyZ2UnLFxyXG4gIE5vbmUgPSAnTm9uZSdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gUHJvZHVjdENhcmRUaGVtZSB7XHJcbiAgVGhlbWUxID0gXCJUaGVtZTFcIixcclxuICBUaGVtZTIgPSBcIlRoZW1lMlwiXHJcbn1cclxuXHJcbi8vIFNPTUUgQ0hBTkdFUyBCWSBNRVxyXG5cclxuZXhwb3J0IGVudW0gbG9nb1R5cGUge1xyXG4gIEJhc2ljID0gJ0Jhc2ljJyxcclxuICBCb3hlZCA9ICdCb3hlZCdcclxufVxyXG5leHBvcnQgZW51bSBzaG93Q2FzZVR5cGUge1xyXG4gIENhcm91c2FsID0gJ0Nhcm91c2FsJyxcclxuICBHcmlkID0gJ0dyaWQnXHJcbn1cclxuZXhwb3J0IGVudW0gbG9nb1NwZWVkIHtcclxuICBWZXJ5U2xvdyA9ICc4cycsXHJcbiAgU2xvdyA9ICc0cycsXHJcbiAgTm9ybWFsID0gJzNzJyxcclxuICBGYXN0ID0gJzJzJyxcclxuICBWZXJ5RmFzdCA9ICcxcydcclxufVxyXG5cclxuZXhwb3J0IGVudW0gbG9nb0RpcmVjdGlvbiB7XHJcbiAgTGVmdCA9ICdMZWZ0JyxcclxuICBSaWdodCA9ICdSaWdodCcsXHJcbn1cclxuXHJcblxyXG5leHBvcnQgZW51bSBUZXh0UG9zaXRpb24ge1xyXG4gIEJFTE9XX0lNQUdFID0gJ0JlbG93IGltYWdlJyxcclxuICBUT1BfT0ZfSU1BR0UgPSAnT24gdG9wIG9mIGltYWdlJyxcclxuICBDT1ZFUklOR19JTUFHRSA9ICdDb3ZlcmluZyBpbWFnZSdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gSW1hZ2VGaXQge1xyXG4gIENvdmVyID0gJ0NvdmVyJyxcclxuICBDb250YWluID0gJ0NvbnRhaW4nXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEltYWdlUmF0aW8ge1xyXG4gIFNRVUFSRSA9ICcxOjEnLFxyXG4gIFBPUlRSQUlUID0gJzI6MycsXHJcbiAgTEFORFNDQVBFID0gJzM6MicsXHJcbiAgV0lERVNDUkVFTiA9ICcxNjo5JyxcclxuICBSRUNUQU5HVUxBUiA9ICcxNjo1J1xyXG59XHJcbmV4cG9ydCBlbnVtIFZpZGVvUmF0aW8ge1xyXG4gIFNRVUFSRSA9ICcxOjEnLFxyXG4gIFBPUlRSQUlUID0gJzI6MycsXHJcbiAgTEFORFNDQVBFID0gJzM6MicsXHJcbiAgV0lERVNDUkVFTiA9ICcxNjo5JyxcclxuICBSRUNUQU5HVUxBUiA9ICc5OjE2JyxcclxufVxyXG5leHBvcnQgZW51bSBBbGlnbkNvbnRlbnQge1xyXG4gIEltYWdlX1RPUCA9ICd0b3AnLFxyXG4gIEltYWdlX0NFTlRFUiA9ICdjZW50ZXInLFxyXG4gIEltYWdlX0JPVFRPTSA9ICdib3R0b20nXHJcbn1cclxuXHJcblxyXG5leHBvcnQgZW51bSBDaGFubmVsVHlwZSB7XHJcbiAgRkFDRUJPT0sgPSAnRmFjZWJvb2snLFxyXG4gIFRXSVRURVIgPSAnVHdpdHRlcicsXHJcbiAgTElOS0VESU4gPSBcIkxpbmtlZEluXCIsXHJcbiAgWU9VVFVCRSA9ICdZb3V0dWJlJyxcclxuICBJTlNUQUdSQU0gPSAnSW5zdGFncmFtJyxcclxuICBURUxFR1JBTSA9IFwiVGVsZWdyYW1cIixcclxuICBUSFJFQURTID0gXCJUaHJlYWRzXCJcclxufVxyXG5cclxuZXhwb3J0IGVudW0gT3ZlcmxheVZhbHVlIHtcclxuICBOT05FID0gJzBweCcsXHJcbiAgTElHSFQgPSAnMnB4JyxcclxuICBNT0RFUkFURSA9ICc0cHgnLFxyXG4gIFNUUk9ORyA9ICc4cHgnLFxyXG4gIFZFUllfU1RST05HID0gJzE2cHgnXHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGVudW0gRm9vdGVyVHlwZXMge1xyXG4gIFNQTElUX0RFVEFJTFNfUklHSFQgPSAnU3BsaXQgRGV0YWlscyBSaWdodCcsXHJcbiAgU1BMSVRfREVUQUlMU19MRUZUID0gXCJTcGxpdCBEZXRhaWxzIExlZnRcIixcclxuICBTVEFDS0VEX0RFVEFJTFNfUklHSFQgPSBcIlN0YWNrZWQgRGV0YWlscyBSaWdodFwiLFxyXG4gIFNUQUNLRURfREVUQUlMU19DRU5URVIgPSBcIlN0YWNrZWQgRGV0YWlscyBDZW50ZXJcIixcclxuICBTVEFDS0VEX0RFVEFJTFNfTEVGVCA9IFwiU3RhY2tlZCBEZXRhaWxzIExlZnRcIixcclxuICBTSU1QTEVfREVUQUlMU19SSUdIVCA9IFwiU2ltcGxlIERldGFpbHMgUmlnaHRcIixcclxuICBTSU1QTEVfREVUQUlMU19DRU5URVIgPSBcIlNpbXBsZSBEZXRhaWxzIENlbnRlclwiXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEhlYWRlckJ1dHRvblN0eWxlIHtcclxuICBUQUIgPSAnVGFiJyxcclxuICBST1VORF9TVUJUTEUgPSBcIlJvdW5kIHN1YnRsZVwiLFxyXG4gIFJPVU5EX0JPTEQgPSBcIlJvdW5kIGJvbGRcIixcclxuICBTUVVBUkVfU1VCVExFID0gXCJTcXVhcmUgc3VidGxlXCIsXHJcbiAgU1FVQVJFX0JPTEQgPSBcIlNxdWFyZSBib2xkXCJcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTWFwVHlwZSB7XHJcbiAgSU5MSU5FX01BUCA9ICdJbmxpbmUgbWFwJyxcclxuICBCQUNLR1JPVU5EX01BUCA9ICdCYWNrZ3JvdW5kIG1hcCdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRGV2aWRlclR5cGUge1xyXG4gIFRJTFQgPSAnVElMVCcsXHJcbiAgSU5WRVJUX1RJTFQgPSAnSU5WRVJUX1RJTFQnLFxyXG4gIFRSSUFOR0xFID0gJ1RSSUFOR0xFJyxcclxuICBJTlZFUlRfVFJJQU5HTEUgPSAnSU5WRVJUX1RSSUFOR0xFJyxcclxuICBDVVJWRSA9ICdDVVJWRScsXHJcbiAgSU5WRVJUX0NVUlZFID0gJ0lOVkVSVF9DVVJWRScsXHJcbiAgV0FWRSA9ICdXQVZFJyxcclxuICBJTlZFUlRfV0FWRSA9ICdJTlZFUlRfV0FWRSdcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHN2Z0RhdGE6IHsgW2tleSBpbiBEZXZpZGVyVHlwZV06IHsgc3ZnOiBzdHJpbmc7IHJvdGF0ZTogYm9vbGVhbjsgcm90YXRlWTogYm9vbGVhbiB9IH0gPSB7XHJcbiAgW0RldmlkZXJUeXBlLlRJTFRdOiB7IHN2ZzogJ00xMjAwIDEyMEwwIDE2LjQ4IDAgMCAxMjAwIDAgMTIwMCAxMjB6Jywgcm90YXRlOiB0cnVlLCByb3RhdGVZOiB0cnVlIH0sXHJcbiAgW0RldmlkZXJUeXBlLklOVkVSVF9USUxUXTogeyBzdmc6ICdNMTIwMCAxMjBMMCAxNi40OCAwIDAgMTIwMCAwIDEyMDAgMTIweicsIHJvdGF0ZTogdHJ1ZSwgcm90YXRlWTogZmFsc2UgfSxcclxuICBbRGV2aWRlclR5cGUuVFJJQU5HTEVdOiB7IHN2ZzogJ00xMjAwIDBMMCAwIDU5OC45NyAxMTQuNzIgMTIwMCAweicsIHJvdGF0ZTogdHJ1ZSwgcm90YXRlWTogZmFsc2UgfSxcclxuICBbRGV2aWRlclR5cGUuSU5WRVJUX1RSSUFOR0xFXTogeyBzdmc6ICdNNTk4Ljk3IDExNC43MkwwIDAgMCAxMjAgMTIwMCAxMjAgMTIwMCAwIDU5OC45NyAxMTQuNzJ6Jywgcm90YXRlOiBmYWxzZSwgcm90YXRlWTogZmFsc2UgfSxcclxuICBbRGV2aWRlclR5cGUuQ1VSVkVdOiB7IHN2ZzogJ002MDAsMTEyLjc3QzI2OC42MywxMTIuNzcsMCw2NS41MiwwLDcuMjNWMTIwSDEyMDBWNy4yM0MxMjAwLDY1LjUyLDkzMS4zNywxMTIuNzcsNjAwLDExMi43N1onLCByb3RhdGU6IGZhbHNlLCByb3RhdGVZOiBmYWxzZSB9LFxyXG4gIFtEZXZpZGVyVHlwZS5JTlZFUlRfQ1VSVkVdOiB7IHN2ZzogJ00wLDBWNy4yM0MwLDY1LjUyLDI2OC42MywxMTIuNzcsNjAwLDExMi43N1MxMjAwLDY1LjUyLDEyMDAsNy4yM1YwWicsIHJvdGF0ZTogdHJ1ZSwgcm90YXRlWTogZmFsc2UgfSxcclxuICBbRGV2aWRlclR5cGUuV0FWRV06IHsgc3ZnOiAnTTMyMS4zOSw1Ni40NGM1OC0xMC43OSwxMTQuMTYtMzAuMTMsMTcyLTQxLjg2LDgyLjM5LTE2LjcyLDE2OC4xOS0xNy43MywyNTAuNDUtLjM5QzgyMy43OCwzMSw5MDYuNjcsNzIsOTg1LjY2LDkyLjgzYzcwLjA1LDE4LjQ4LDE0Ni41MywyNi4wOSwyMTQuMzQsM1YwSDBWMjcuMzVBNjAwLjIxLDYwMC4yMSwwLDAsMCwzMjEuMzksNTYuNDRaJywgcm90YXRlOiB0cnVlLCByb3RhdGVZOiBmYWxzZSB9LFxyXG4gIFtEZXZpZGVyVHlwZS5JTlZFUlRfV0FWRV06IHsgc3ZnOiAnTTk4NS42Niw5Mi44M0M5MDYuNjcsNzIsODIzLjc4LDMxLDc0My44NCwxNC4xOWMtODIuMjYtMTcuMzQtMTY4LjA2LTE2LjMzLTI1MC40NS4zOS01Ny44NCwxMS43My0xMTQsMzEuMDctMTcyLDQxLjg2QTYwMC4yMSw2MDAuMjEsMCwwLDEsMCwyNy4zNVYxMjBIMTIwMFY5NS44QzExMzIuMTksMTE4LjkyLDEwNTUuNzEsMTExLjMxLDk4NS42Niw5Mi44M1onLCByb3RhdGU6IGZhbHNlLCByb3RhdGVZOiBmYWxzZSB9XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEZvb3RlclR5cGUge1xyXG4gIEZPT1RFUl8xID0gXCJGb290ZXIxXCIsXHJcbiAgRk9PVEVSXzIgPSBcIkZvb3RlcjJcIixcclxuICBGT09URVJfMyA9IFwiRm9vdGVyM1wiLFxyXG4gIEZPT1RFUl80ID0gXCJGb290ZXI0XCIsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIGhlYWRsaW5lQW5pbWF0aW9uVHlwZSB7XHJcbiAgSU5GSU5JVEVfU0NST0xMID0gXCJJbmZpbml0ZVNjcm9sbFwiLFxyXG4gIFNPRlRfVFJBTlNJVElPTiA9IFwiU29mdFRyYW5zaXRpb25cIixcclxuICBOT19FRkZFQ1QgPSBcIk5vRWZmZWN0XCJcclxufVxyXG5cclxuZXhwb3J0IGVudW0gR3JhZGllbnREaXJlY3Rpb24ge1xyXG4gIERPV04gPSBcIlwiLFxyXG4gIFJJR0hUID0gXCI5MGRlZ1wiLFxyXG4gIERJQUdPTkFMX1JJR0hUID0gXCI0NWRlZ1wiLFxyXG4gIERJQUdPTkFMX0xFRlQgPSBcIjMxNWRlZ1wiXHJcbn1cclxuIl19
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3N0eWxlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzREFBc0Q7QUFLdEQsdURBQXVEO0FBQ3ZELE1BQU0sQ0FBTixJQUFZLEtBR1g7QUFIRCxXQUFZLEtBQUs7SUFDZiw0QkFBbUIsQ0FBQTtJQUNuQiwwQkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSFcsS0FBSyxLQUFMLEtBQUssUUFHaEI7QUFFRCxNQUFNLENBQU4sSUFBWSxPQU1YO0FBTkQsV0FBWSxPQUFPO0lBQ2pCLDBCQUFlLENBQUE7SUFDZix5QkFBYyxDQUFBO0lBQ2QsMEJBQWUsQ0FBQTtJQUNmLHlCQUFjLENBQUE7SUFDZCwwQkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFOVyxPQUFPLEtBQVAsT0FBTyxRQU1sQjtBQWVELE1BQU0sQ0FBTixJQUFZLGVBS1g7QUFMRCxXQUFZLGVBQWU7SUFDekIsdUNBQW9CLENBQUE7SUFDcEIsZ0RBQTZCLENBQUE7SUFDN0Isc0NBQW1CLENBQUE7SUFDbkIsaURBQThCLENBQUE7QUFDaEMsQ0FBQyxFQUxXLGVBQWUsS0FBZixlQUFlLFFBSzFCO0FBQ0QsTUFBTSxDQUFOLElBQVksWUFPWDtBQVBELFdBQVksWUFBWTtJQUN0QixvQ0FBb0IsQ0FBQTtJQUNwQiw4QkFBYyxDQUFBO0lBQ2QsK0JBQWUsQ0FBQTtJQUNmLDhCQUFjLENBQUE7SUFDZCw2QkFBYSxDQUFBO0lBQ2IsK0JBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUFcsWUFBWSxLQUFaLFlBQVksUUFPdkI7QUFDRCxNQUFNLENBQU4sSUFBWSxZQUlYO0FBSkQsV0FBWSxZQUFZO0lBQ3RCLHlEQUF5QyxDQUFBO0lBQ3pDLDZEQUE2QyxDQUFBO0lBQzdDLHNEQUFzQyxDQUFBO0FBQ3hDLENBQUMsRUFKVyxZQUFZLEtBQVosWUFBWSxRQUl2QjtBQUNELE1B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QkFBaUIsUUFLNUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cblxuaW1wb3J0IHsgU3BhY2luZ01vZGVsIH0gZnJvbSAnLi9zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBTUEFDSU5HX1RZUEUgfSBmcm9tICcuL3R5cGVzJztcblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuZXhwb3J0IGVudW0gU3R5bGUge1xuICBjb250ZW50ID0gJ0NPTlRFTlQnLFxuICBzY3JlZW4gPSAnU0NSRUVOJyxcbn1cblxuZXhwb3J0IGVudW0gU1BBQ0lORyB7XG4gIG5vbmUgPSAnMS41cmVtJyxcbiAgc21hbGwgPSAnM3JlbScsXG4gIG1lZGl1bSA9ICc1cmVtJyxcbiAgbGFyZ2UgPSAnNnJlbScsXG4gIHJlbW92ZSA9ICcwcmVtJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRldCB7XG4gIGRpc3BsYXk6ICdmbGV4JztcbiAgJ2p1c3RpZnktY29udGVudCc6ICdjZW50ZXInO1xuICAnYWxpZ24taXRlbXMnOiAnY2VudGVyJztcbiAgaGVpZ2h0OiAnMTAwJSc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNjcmVlbiB7XG4gIGRpc3BsYXk6ICdmbGV4JztcbiAgJ2p1c3RpZnktY29udGVudCc6ICdjZW50ZXInO1xuICAnYWxpZ24taXRlbXMnOiAnY2VudGVyJztcbiAgJ21pbi1oZWlnaHQnOiAnY2FsYyg5NXZoIC0gMHB4KSc7XG59XG5cbmV4cG9ydCBlbnVtIEJBTk5FUkFMSUdOTUVOVCB7XG4gIGxlZnQgPSBcImZsZXgtbGctcm93XCIsXG4gIHJpZ2h0ID0gXCJmbGV4LWxnLXJvdy1yZXZlcnNlXCIsXG4gIHRvcCA9IFwiZmxleC1jb2x1bW5cIixcbiAgYm90dG9tID0gXCJmbGV4LWNvbHVtbi1yZXZlcnNlXCJcbn1cbmV4cG9ydCBlbnVtIFNQQUNJTkdBTElHTiB7XG4gIGV4dHJhTGFyZ2UgPSBcIjEwcmVtXCIsXG4gIGxhcmdlID0gXCI4cmVtXCIsXG4gIG1lZGl1bSA9IFwiNnJlbVwiLFxuICBzbWFsbCA9IFwiMnJlbVwiLFxuICBub25lID0gXCIxcmVtXCIsXG4gIHJlbW92ZSA9IFwiMHJlbVwiLFxufVxuZXhwb3J0IGVudW0gQkFOTkVSSEFMSUdOIHtcbiAgbGVmdCA9ICdqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgdGV4dC1zdGFydCcsXG4gIGNlbnRlciA9ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHRleHQtY2VudGVyJyxcbiAgcmlnaHQgPSAnanVzdGlmeS1jb250ZW50LWVuZCB0ZXh0LWVuZCcsXG59XG5leHBvcnQgZW51bSBIQUxJR04ge1xuICBsZWZ0ID0gJ3RleHQtYWxpZ246IGxlZnQnLFxuICBjZW50ZXIgPSAndGV4dC1hbGlnbjogY2VudGVyJyxcbiAgcmlnaHQgPSAndGV4dC1hbGlnbjogcmlnaHQnLFxufVxuZXhwb3J0IGVudW0gVkFMSUdOIHtcbiAgbGVmdCA9ICd0ZXh0LWFsaWduOiB0b3AnLFxuICBjZW50ZXIgPSAndGV4dC1hbGlnbjogY2VudGVyJyxcbiAgcmlnaHQgPSAndGV4dC1hbGlnbjogYm90dG9tJyxcbn1cblxuZXhwb3J0IGVudW0gUGFkZGluZyB7XG4gIHRvcCA9ICdwYWRkaW5nLXRvcCcsXG4gIGJvdHRvbSA9ICdwYWRkaW5nLWJvdHRvbScsXG59XG5cbmV4cG9ydCBjb25zdCBhbmltYXRpb24gPSB7XG4gIHR5cGU6IHtcbiAgICB0b3A6ICd3My1hbmltYXRlLXRvcCcsXG4gICAgYm90dG9tOiAndzMtYW5pbWF0ZS1ib3R0b20nLFxuICAgIGxlZnQ6ICd3My1hbmltYXRlLWxlZnQnLFxuICAgIHJpZ2h0OiAndzMtYW5pbWF0ZS1yaWdodCcsXG4gICAgZmFkZUluOiAndzMtYW5pbWF0ZS1vcGFjaXR5JyxcbiAgICB6b29tOiAndzMtYW5pbWF0ZS16b29tJyxcbiAgICBub25lOiAnbm9uZSdcbiAgfSxcbiAgc3BlZWQ6IHtcbiAgICBzbG93OiAnM3MnLFxuICAgIG1lZGl1bTogJzJzJyxcbiAgICBmYXN0OiAnMXMnLFxuICB9LFxufTtcbmV4cG9ydCBlbnVtIEhFQURFUl9TVFlMSU5HIHtcbiAgTE9HT19MRUZUX19NRU5VX1JJR0hUID0gXCJMT0dPX0xFRlRfX01FTlVfUklHSFRcIixcbiAgTE9HT19DRU5URVJfX01FTlVfTEVGVCA9IFwiTE9HT19DRU5URVJfX01FTlVfTEVGVFwiLFxuICBMT0dPX1JJR0hUX19NRU5VX0xFRlQgPSBcIkxPR09fUklHSFRfX01FTlVfTEVGVFwiXG59XG5leHBvcnQgZW51bSBIZWFkZXJfVHlwZSB7XG4gIEhFQURFUjEgPSBcIkhlYWRlcjFcIixcbiAgSEVBREVSMiA9IFwiSGVhZGVyMlwiLFxuICBIRUFERVIzID0gXCJIZWFkZXIzXCIsXG4gIEhFQURFUjQgPSBcIkhlYWRlcjRcIlxufVxuXG5leHBvcnQgZW51bSBTdGlja3lfVHlwZSB7XG4gIE5PTkUgPSAnTm9uZScsXG4gIFNUSUNLWSA9ICdTdGlja3knLFxuICBTSFJJTktfT05fU0NST0xMID0gJ1Nocmlua09uU2Nyb2xsJyxcbiAgVFJBTlNQQVJFTlRfT05fU0NST0xMID0gJ1RyYW5zcGFyZW50T25TY3JvbGwnLFxuICBTVElDS1lfQUZURVJfU0NST0xMID0gJ1N0aWNreUFmdGVyU2Nyb2xsJ1xufVxuXG5leHBvcnQgZW51bSBNZW51X1R5cGUge1xuICBNRUdBX01FTlUgPSBcIk1FR0FfTUVOVVwiLFxuICBEUk9QX0RPV04gPSBcIkRST1BET1dOX01FTlVcIixcbn1cblxuZXhwb3J0IGVudW0gTW9iaWxlX01lbnVfVHlwZSB7XG4gIEhBTUJVUkdFUiAgICAgPSAnSEFNQlVSR0VSJyxcbiAgRlVMTF9TQ1JFRU4gICA9ICdGVUxMX1NDUkVFTicsXG4gIEJPVFRPTV9TVElDS1kgPSAnQk9UVE9NX1NUSUNLWScsXG59XG5cbmV4cG9ydCBlbnVtIFRFWFRfU0laRSB7XG4gIFNtYWxsID0gJ1NtYWxsJyxcbiAgTWVkaXVtID0gJ01lZGl1bScsXG4gIExhcmdlID0gJ0xhcmdlJyxcbiAgRXh0cmFMYXJnZSA9ICdFeHRyYV9MYXJnZSdcbn1cblxuZXhwb3J0IGNvbnN0IGZvbnRTaXplID0ge1xuICBoZWFkaW5nOiB7XG4gICAgU21hbGw6ICdoZWFkaW5nLWZzLXNtYWxsJyxcbiAgICBNZWRpdW06ICdoZWFkaW5nLWZzLW1lZGl1bScsXG4gICAgTGFyZ2U6ICdoZWFkaW5nLWZzLWxhcmdlJyxcbiAgICBFeHRyYV9MYXJnZTogJ2hlYWRpbmctZnMteGxhcmdlJ1xuICB9LFxuICBkZXNjOiB7XG4gICAgU21hbGw6ICdkZXNjLWZzLXNtYWxsJyxcbiAgICBNZWRpdW06ICdkZXNjLWZzLW1lZGl1bScsXG4gICAgTGFyZ2U6ICdkZXNjLWZzLWxhcmdlJyxcbiAgICBFeHRyYV9MYXJnZTogJ2Rlc2MtZnMteGxhcmdlJ1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBtYXBTdHlsZSA9IHtcbiAgU3RyZWV0czogJ3N0cmVldHMtdjEyJyxcbiAgT3V0ZG9vcnM6ICdvdXRkb29ycy12MTInLFxuICBMaWdodDogJ2xpZ2h0LXYxMScsXG4gIERhcms6ICdkYXJrLXYxMScsXG4gIFNhdGVsbGl0ZTogJ3NhdGVsbGl0ZS12OScsXG4gIFNhdGVsbGl0ZV9zdHJlZXQ6ICdzYXRlbGxpdGUtc3RyZWV0cy12MTInLFxuICBuYXZpZ2F0aW9uX2RheTogJ25hdmlnYXRpb24tZGF5LXYxJyxcbiAgbmF2aWdhdGlvbl9uaWdodDogJ25hdmlnYXRpb24tbmlnaHQtdjEnXG59XG5cbmV4cG9ydCBjb25zdCBjb250ZW50QWxpZ25tZW50ID0ge1xuICB0b3A6ICdqdXN0aWZ5LWNvbnRlbnQtc3RhcnQnLFxuICBjZW50ZXI6ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJyxcbiAgYm90dG9tOiAnanVzdGlmeS1jb250ZW50LWVuZCdcbn1cbi8vIGV4cG9ydCBjb25zdCBiYW5uZXJBbGlnbm1lbnQgPSAoZWxlbWVudCA6IGFueSkgPT4ge1xuXG4vLyB9XG5leHBvcnQgY29uc3QgZml0Q29udGVudCA9IChlbGVtZW50OiBhbnkpID0+IHtcbiAgY29uc3Qgc3R5bGU6IENvbnRldCA9IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgJ2p1c3RpZnktY29udGVudCc6ICdjZW50ZXInLFxuICAgICdhbGlnbi1pdGVtcyc6ICdjZW50ZXInLFxuICAgIGhlaWdodDogJzEwMCUnLFxuICB9O1xuICBhcHBseVN0eWxlKGVsZW1lbnQsIHN0eWxlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaXRTY3JlZW4gPSAoZWxlbWVudDogYW55KSA9PiB7XG4gIGNvbnN0IHN0eWxlOiBTY3JlZW4gPSB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICdqdXN0aWZ5LWNvbnRlbnQnOiAnY2VudGVyJyxcbiAgICAnYWxpZ24taXRlbXMnOiAnY2VudGVyJyxcbiAgICAnbWluLWhlaWdodCc6ICdjYWxjKDk1dmggLSAwcHgpJyxcbiAgfTtcbiAgYXBwbHlTdHlsZShlbGVtZW50LCBzdHlsZSk7XG59O1xuZXhwb3J0IGNvbnN0IGFwcGx5U3R5bGUgPSAoZWxlbWVudDogYW55LCBzdHlsZU9iajogYW55KSA9PiB7XG4gIE9iamVjdC5lbnRyaWVzKHN0eWxlT2JqKS5mb3JFYWNoKChbc3R5bGVOYW1lLCBzdHlsZVZhbHVlXSkgPT4ge1xuICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoc3R5bGVOYW1lLCBzdHlsZVZhbHVlKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYXBwbHlTcGFjaW5nID0gKGVsZW1lbnQ6IGFueSwgc3BhY2U/OiBTcGFjaW5nTW9kZWwpID0+IHtcbiAgaWYgKHNwYWNlPy50b3ApIHtcbiAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgUGFkZGluZy50b3AsXG4gICAgICBTUEFDSU5HW3NwYWNlLnRvcCBhcyBrZXlvZiB0eXBlb2YgU1BBQ0lOR11cbiAgICApO1xuICB9XG4gIGlmIChzcGFjZT8uYm90dG9tKSB7XG4gICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgIFBhZGRpbmcuYm90dG9tLFxuICAgICAgU1BBQ0lOR1tzcGFjZS5ib3R0b20gYXMga2V5b2YgdHlwZW9mIFNQQUNJTkddXG4gICAgKTtcbiAgfVxufTtcblxuZXhwb3J0IGVudW0gUmVkaXJlY3Rpb25MaW5rVHlwZSB7XG4gIFBhZ2UgPSAnUGFnZScsXG4gIEV4dGVybmFsID0gJ0V4dGVybmFsJyxcbiAgRW1haWwgPSAnRW1haWwnLFxuICBQaG9uZSA9ICdQaG9uZScsXG4gIHNlY3Rpb24gPSAnU2VjdGlvbidcbn1cblxuZXhwb3J0IGVudW0gQ29ybmVycyB7XG4gIFJvdW5kID0gJ1JvdW5kJyxcbiAgU21hbGwgPSAnU21hbGwnLFxuICBNZWRpdW0gPSAnTWVkaXVtJyxcbiAgTGFyZ2UgPSAnTGFyZ2UnLFxuICBOb25lID0gJ05vbmUnXG59XG5cbmV4cG9ydCBlbnVtIFByb2R1Y3RDYXJkVGhlbWUge1xuICBUaGVtZTEgPSBcIlRoZW1lMVwiLFxuICBUaGVtZTIgPSBcIlRoZW1lMlwiXG59XG5cbi8vIFNPTUUgQ0hBTkdFUyBCWSBNRVxuXG5leHBvcnQgZW51bSBsb2dvVHlwZSB7XG4gIEJhc2ljID0gJ0Jhc2ljJyxcbiAgQm94ZWQgPSAnQm94ZWQnXG59XG5leHBvcnQgZW51bSBzaG93Q2FzZVR5cGUge1xuICBDYXJvdXNhbCA9ICdDYXJvdXNhbCcsXG4gIEdyaWQgPSAnR3JpZCdcbn1cbmV4cG9ydCBlbnVtIGxvZ29TcGVlZCB7XG4gIFZlcnlTbG93ID0gJzhzJyxcbiAgU2xvdyA9ICc0cycsXG4gIE5vcm1hbCA9ICczcycsXG4gIEZhc3QgPSAnMnMnLFxuICBWZXJ5RmFzdCA9ICcxcydcbn1cblxuZXhwb3J0IGVudW0gbG9nb0RpcmVjdGlvbiB7XG4gIExlZnQgPSAnTGVmdCcsXG4gIFJpZ2h0ID0gJ1JpZ2h0Jyxcbn1cblxuXG5leHBvcnQgZW51bSBUZXh0UG9zaXRpb24ge1xuICBCRUxPV19JTUFHRSA9ICdCZWxvdyBpbWFnZScsXG4gIFRPUF9PRl9JTUFHRSA9ICdPbiB0b3Agb2YgaW1hZ2UnLFxuICBDT1ZFUklOR19JTUFHRSA9ICdDb3ZlcmluZyBpbWFnZSdcbn1cblxuZXhwb3J0IGVudW0gSW1hZ2VGaXQge1xuICBDb3ZlciA9ICdDb3ZlcicsXG4gIENvbnRhaW4gPSAnQ29udGFpbidcbn1cblxuZXhwb3J0IGVudW0gSW1hZ2VSYXRpbyB7XG4gIFNRVUFSRSA9ICcxOjEnLFxuICBQT1JUUkFJVCA9ICcyOjMnLFxuICBMQU5EU0NBUEUgPSAnMzoyJyxcbiAgV0lERVNDUkVFTiA9ICcxNjo5JyxcbiAgUkVDVEFOR1VMQVIgPSAnMTY6NSdcbn1cbmV4cG9ydCBlbnVtIFZpZGVvUmF0aW8ge1xuICBTUVVBUkUgPSAnMToxJyxcbiAgUE9SVFJBSVQgPSAnMjozJyxcbiAgTEFORFNDQVBFID0gJzM6MicsXG4gIFdJREVTQ1JFRU4gPSAnMTY6OScsXG4gIFJFQ1RBTkdVTEFSID0gJzk6MTYnLFxufVxuZXhwb3J0IGVudW0gQWxpZ25Db250ZW50IHtcbiAgSW1hZ2VfVE9QID0gJ3RvcCcsXG4gIEltYWdlX0NFTlRFUiA9ICdjZW50ZXInLFxuICBJbWFnZV9CT1RUT00gPSAnYm90dG9tJ1xufVxuXG5cbmV4cG9ydCBlbnVtIENoYW5uZWxUeXBlIHtcbiAgRkFDRUJPT0sgPSAnRmFjZWJvb2snLFxuICBUV0lUVEVSID0gJ1R3aXR0ZXInLFxuICBMSU5LRURJTiA9IFwiTGlua2VkSW5cIixcbiAgWU9VVFVCRSA9ICdZb3V0dWJlJyxcbiAgSU5TVEFHUkFNID0gJ0luc3RhZ3JhbScsXG4gIFRFTEVHUkFNID0gXCJUZWxlZ3JhbVwiLFxuICBUSFJFQURTID0gXCJUaHJlYWRzXCJcbn1cblxuZXhwb3J0IGVudW0gT3ZlcmxheVZhbHVlIHtcbiAgTk9ORSA9ICcwcHgnLFxuICBMSUdIVCA9ICcycHgnLFxuICBNT0RFUkFURSA9ICc0cHgnLFxuICBTVFJPTkcgPSAnOHB4JyxcbiAgVkVSWV9TVFJPTkcgPSAnMTZweCdcbn1cblxuXG5cbmV4cG9ydCBlbnVtIEZvb3RlclR5cGVzIHtcbiAgU1BMSVRfREVUQUlMU19SSUdIVCA9ICdTcGxpdCBEZXRhaWxzIFJpZ2h0JyxcbiAgU1BMSVRfREVUQUlMU19MRUZUID0gXCJTcGxpdCBEZXRhaWxzIExlZnRcIixcbiAgU1RBQ0tFRF9ERVRBSUxTX1JJR0hUID0gXCJTdGFja2VkIERldGFpbHMgUmlnaHRcIixcbiAgU1RBQ0tFRF9ERVRBSUxTX0NFTlRFUiA9IFwiU3RhY2tlZCBEZXRhaWxzIENlbnRlclwiLFxuICBTVEFDS0VEX0RFVEFJTFNfTEVGVCA9IFwiU3RhY2tlZCBEZXRhaWxzIExlZnRcIixcbiAgU0lNUExFX0RFVEFJTFNfUklHSFQgPSBcIlNpbXBsZSBEZXRhaWxzIFJpZ2h0XCIsXG4gIFNJTVBMRV9ERVRBSUxTX0NFTlRFUiA9IFwiU2ltcGxlIERldGFpbHMgQ2VudGVyXCJcbn1cblxuZXhwb3J0IGVudW0gSGVhZGVyQnV0dG9uU3R5bGUge1xuICBUQUIgPSAnVGFiJyxcbiAgUk9VTkRfU1VCVExFID0gXCJSb3VuZCBzdWJ0bGVcIixcbiAgUk9VTkRfQk9MRCA9IFwiUm91bmQgYm9sZFwiLFxuICBTUVVBUkVfU1VCVExFID0gXCJTcXVhcmUgc3VidGxlXCIsXG4gIFNRVUFSRV9CT0xEID0gXCJTcXVhcmUgYm9sZFwiXG59XG5cbmV4cG9ydCBlbnVtIE1hcFR5cGUge1xuICBJTkxJTkVfTUFQID0gJ0lubGluZSBtYXAnLFxuICBCQUNLR1JPVU5EX01BUCA9ICdCYWNrZ3JvdW5kIG1hcCdcbn1cblxuZXhwb3J0IGVudW0gRGV2aWRlclR5cGUge1xuICBUSUxUID0gJ1RJTFQnLFxuICBJTlZFUlRfVElMVCA9ICdJTlZFUlRfVElMVCcsXG4gIFRSSUFOR0xFID0gJ1RSSUFOR0xFJyxcbiAgSU5WRVJUX1RSSUFOR0xFID0gJ0lOVkVSVF9UUklBTkdMRScsXG4gIENVUlZFID0gJ0NVUlZFJyxcbiAgSU5WRVJUX0NVUlZFID0gJ0lOVkVSVF9DVVJWRScsXG4gIFdBVkUgPSAnV0FWRScsXG4gIElOVkVSVF9XQVZFID0gJ0lOVkVSVF9XQVZFJ1xufVxuXG5leHBvcnQgY29uc3Qgc3ZnRGF0YTogeyBba2V5IGluIERldmlkZXJUeXBlXTogeyBzdmc6IHN0cmluZzsgcm90YXRlOiBib29sZWFuOyByb3RhdGVZOiBib29sZWFuIH0gfSA9IHtcbiAgW0RldmlkZXJUeXBlLlRJTFRdOiB7IHN2ZzogJ00xMjAwIDEyMEwwIDE2LjQ4IDAgMCAxMjAwIDAgMTIwMCAxMjB6Jywgcm90YXRlOiB0cnVlLCByb3RhdGVZOiB0cnVlIH0sXG4gIFtEZXZpZGVyVHlwZS5JTlZFUlRfVElMVF06IHsgc3ZnOiAnTTEyMDAgMTIwTDAgMTYuNDggMCAwIDEyMDAgMCAxMjAwIDEyMHonLCByb3RhdGU6IHRydWUsIHJvdGF0ZVk6IGZhbHNlIH0sXG4gIFtEZXZpZGVyVHlwZS5UUklBTkdMRV06IHsgc3ZnOiAnTTEyMDAgMEwwIDAgNTk4Ljk3IDExNC43MiAxMjAwIDB6Jywgcm90YXRlOiB0cnVlLCByb3RhdGVZOiBmYWxzZSB9LFxuICBbRGV2aWRlclR5cGUuSU5WRVJUX1RSSUFOR0xFXTogeyBzdmc6ICdNNTk4Ljk3IDExNC43MkwwIDAgMCAxMjAgMTIwMCAxMjAgMTIwMCAwIDU5OC45NyAxMTQuNzJ6Jywgcm90YXRlOiBmYWxzZSwgcm90YXRlWTogZmFsc2UgfSxcbiAgW0RldmlkZXJUeXBlLkNVUlZFXTogeyBzdmc6ICdNNjAwLDExMi43N0MyNjguNjMsMTEyLjc3LDAsNjUuNTIsMCw3LjIzVjEyMEgxMjAwVjcuMjNDMTIwMCw2NS41Miw5MzEuMzcsMTEyLjc3LDYwMCwxMTIuNzdaJywgcm90YXRlOiBmYWxzZSwgcm90YXRlWTogZmFsc2UgfSxcbiAgW0RldmlkZXJUeXBlLklOVkVSVF9DVVJWRV06IHsgc3ZnOiAnTTAsMFY3LjIzQzAsNjUuNTIsMjY4LjYzLDExMi43Nyw2MDAsMTEyLjc3UzEyMDAsNjUuNTIsMTIwMCw3LjIzVjBaJywgcm90YXRlOiB0cnVlLCByb3RhdGVZOiBmYWxzZSB9LFxuICBbRGV2aWRlclR5cGUuV0FWRV06IHsgc3ZnOiAnTTMyMS4zOSw1Ni40NGM1OC0xMC43OSwxMTQuMTYtMzAuMTMsMTcyLTQxLjg2LDgyLjM5LTE2LjcyLDE2OC4xOS0xNy43MywyNTAuNDUtLjM5QzgyMy43OCwzMSw5MDYuNjcsNzIsOTg1LjY2LDkyLjgzYzcwLjA1LDE4LjQ4LDE0Ni41MywyNi4wOSwyMTQuMzQsM1YwSDBWMjcuMzVBNjAwLjIxLDYwMC4yMSwwLDAsMCwzMjEuMzksNTYuNDRaJywgcm90YXRlOiB0cnVlLCByb3RhdGVZOiBmYWxzZSB9LFxuICBbRGV2aWRlclR5cGUuSU5WRVJUX1dBVkVdOiB7IHN2ZzogJ005ODUuNjYsOTIuODNDOTA2LjY3LDcyLDgyMy43OCwzMSw3NDMuODQsMTQuMTljLTgyLjI2LTE3LjM0LTE2OC4wNi0xNi4zMy0yNTAuNDUuMzktNTcuODQsMTEuNzMtMTE0LDMxLjA3LTE3Miw0MS44NkE2MDAuMjEsNjAwLjIxLDAsMCwxLDAsMjcuMzVWMTIwSDEyMDBWOTUuOEMxMTMyLjE5LDExOC45MiwxMDU1LjcxLDExMS4zMSw5ODUuNjYsOTIuODNaJywgcm90YXRlOiBmYWxzZSwgcm90YXRlWTogZmFsc2UgfVxufVxuXG5leHBvcnQgZW51bSBGb290ZXJUeXBlIHtcbiAgRk9PVEVSXzEgPSBcIkZvb3RlcjFcIixcbiAgRk9PVEVSXzIgPSBcIkZvb3RlcjJcIixcbiAgRk9PVEVSXzMgPSBcIkZvb3RlcjNcIixcbiAgRk9PVEVSXzQgPSBcIkZvb3RlcjRcIixcbn1cblxuZXhwb3J0IGVudW0gaGVhZGxpbmVBbmltYXRpb25UeXBlIHtcbiAgSU5GSU5JVEVfU0NST0xMID0gXCJJbmZpbml0ZVNjcm9sbFwiLFxuICBTT0ZUX1RSQU5TSVRJT04gPSBcIlNvZnRUcmFuc2l0aW9uXCIsXG4gIE5PX0VGRkVDVCA9IFwiTm9FZmZlY3RcIlxufVxuXG5leHBvcnQgZW51bSBHcmFkaWVudERpcmVjdGlvbiB7XG4gIERPV04gPSBcIlwiLFxuICBSSUdIVCA9IFwiOTBkZWdcIixcbiAgRElBR09OQUxfUklHSFQgPSBcIjQ1ZGVnXCIsXG4gIERJQUdPTkFMX0xFRlQgPSBcIjMxNWRlZ1wiXG59XG4iXX0=
@@ -5,5 +5,5 @@ export const CMIS_URL = new InjectionToken('cmisURL');
5
5
  export const BUCKET_URL = new InjectionToken('bucketURL');
6
6
  export const PASSBOOK_URL = new InjectionToken('passbookURL');
7
7
  export const APPOINTMENT_URL = new InjectionToken('appointmentUrl');
8
- // export const RECOMMENDATION_URL = new InjectionToken<String>('recommendationUrl')
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi90b2tlbnMvYXBpLXRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksY0FBYyxDQUFTLFFBQVEsQ0FBQyxDQUFDO0FBQzVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBUyxjQUFjLENBQUMsQ0FBQztBQUN4RSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxjQUFjLENBQVMsU0FBUyxDQUFDLENBQUM7QUFDOUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFTLFdBQVcsQ0FBQyxDQUFDO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBUyxhQUFhLENBQUMsQ0FBQztBQUN0RSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQVMsZ0JBQWdCLENBQUMsQ0FBQTtBQUMzRSxvRkFBb0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFQSV9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignYXBpVXJsJyk7XHJcbmV4cG9ydCBjb25zdCBFQ09NTUVSQ0VfVVJMID0gbmV3IEluamVjdGlvblRva2VuPFN0cmluZz4oJ2Vjb21tZXJjZVVSTCcpO1xyXG5leHBvcnQgY29uc3QgQ01JU19VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3RyaW5nPignY21pc1VSTCcpO1xyXG5leHBvcnQgY29uc3QgQlVDS0VUX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdHJpbmc+KCdidWNrZXRVUkwnKTtcclxuZXhwb3J0IGNvbnN0IFBBU1NCT09LX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdHJpbmc+KCdwYXNzYm9va1VSTCcpO1xyXG5leHBvcnQgY29uc3QgQVBQT0lOVE1FTlRfVVJMID0gbmV3IEluamVjdGlvblRva2VuPFN0cmluZz4oJ2FwcG9pbnRtZW50VXJsJylcclxuLy8gZXhwb3J0IGNvbnN0IFJFQ09NTUVOREFUSU9OX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdHJpbmc+KCdyZWNvbW1lbmRhdGlvblVybCcpIl19
8
+ export const RECOMMENDATION_URL = new InjectionToken('recommendationUrl');
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi90b2tlbnMvYXBpLXRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksY0FBYyxDQUFTLFFBQVEsQ0FBQyxDQUFDO0FBQzVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBUyxjQUFjLENBQUMsQ0FBQztBQUN4RSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxjQUFjLENBQVMsU0FBUyxDQUFDLENBQUM7QUFDOUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFTLFdBQVcsQ0FBQyxDQUFDO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBUyxhQUFhLENBQUMsQ0FBQztBQUN0RSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQVMsZ0JBQWdCLENBQUMsQ0FBQTtBQUMzRSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBUyxtQkFBbUIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBjb25zdCBBUElfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ2FwaVVybCcpO1xyXG5leHBvcnQgY29uc3QgRUNPTU1FUkNFX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdHJpbmc+KCdlY29tbWVyY2VVUkwnKTtcclxuZXhwb3J0IGNvbnN0IENNSVNfVVJMID0gbmV3IEluamVjdGlvblRva2VuPFN0cmluZz4oJ2NtaXNVUkwnKTtcclxuZXhwb3J0IGNvbnN0IEJVQ0tFVF9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3RyaW5nPignYnVja2V0VVJMJyk7XHJcbmV4cG9ydCBjb25zdCBQQVNTQk9PS19VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3RyaW5nPigncGFzc2Jvb2tVUkwnKTtcclxuZXhwb3J0IGNvbnN0IEFQUE9JTlRNRU5UX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdHJpbmc+KCdhcHBvaW50bWVudFVybCcpXHJcbmV4cG9ydCBjb25zdCBSRUNPTU1FTkRBVElPTl9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3RyaW5nPigncmVjb21tZW5kYXRpb25VcmwnKSJdfQ==