simpo-component-library 3.6.474 → 3.6.476
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.
- package/README.md +24 -24
- package/esm2022/lib/components/delete-hover-element/delete-hover-element.component.mjs +3 -3
- package/esm2022/lib/components/document/document.component.mjs +3 -3
- package/esm2022/lib/components/image-loading/image-loading.component.mjs +3 -3
- package/esm2022/lib/components/payment-details/payment-details.component.mjs +3 -3
- package/esm2022/lib/constants/business.constant.mjs +1 -1
- package/esm2022/lib/directive/alignment.directive.mjs +1 -1
- package/esm2022/lib/directive/blur-content.directive.mjs +1 -1
- package/esm2022/lib/directive/borderlessImage.directive.mjs +1 -1
- package/esm2022/lib/directive/button-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/button-editor.directive.mjs +1 -1
- package/esm2022/lib/directive/color.directive.mjs +1 -1
- package/esm2022/lib/directive/column-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/container-alignment.directive.mjs +1 -1
- package/esm2022/lib/directive/container-fir.directive.mjs +1 -1
- package/esm2022/lib/directive/content-title-spacing.directive.mjs +1 -1
- package/esm2022/lib/directive/contenteditable.directive.mjs +1 -1
- package/esm2022/lib/directive/corner-directive.mjs +1 -1
- package/esm2022/lib/directive/height.directive.mjs +1 -1
- package/esm2022/lib/directive/hover-animation.directive.mjs +1 -1
- package/esm2022/lib/directive/hoverborder.directive.mjs +1 -1
- package/esm2022/lib/directive/icon-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/image-container.directive.mjs +1 -1
- package/esm2022/lib/directive/image-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/image-editor.directive.mjs +1 -1
- package/esm2022/lib/directive/image-position.directive.mjs +1 -1
- package/esm2022/lib/directive/merge-header.directive.mjs +1 -1
- package/esm2022/lib/directive/position-layout-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/set-dynamic-background.directive.mjs +1 -1
- package/esm2022/lib/directive/spacing-around.directive.mjs +1 -1
- package/esm2022/lib/directive/spacing-horizontal.directive.mjs +1 -1
- package/esm2022/lib/directive/spacing.directive.mjs +1 -1
- package/esm2022/lib/directive/sticky-directive.mjs +1 -1
- package/esm2022/lib/directive/text-background-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/text-size.directive.mjs +1 -1
- package/esm2022/lib/directive/translate-onhover.directive.mjs +1 -1
- package/esm2022/lib/directive/wrap-containers.directive.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/address/address.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/cart/cart.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/category-product/category-product.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/checkout/checkout.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/checkout/checkout.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/customer-review/customer-review.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/customer-review/customer-review.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/featured-category/featured-category.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/featured-products/featured-products.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/item-varient/item-varient.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/new-collection/new-collection.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/new-collection/new-collection.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/pagnination/pagnination.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/product-desc/product-desc.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/product-list/product-list.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/scheme-selection/scheme-selection.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/schemes/schemes.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/schemes/schemes.component.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/small-product-listing/small-product-listing.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/store-list/store-list.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/store-list/store-list.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/store-page/store-page.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/store-page/store-page.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/user-profile/user-profile.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +6 -4
- package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +3 -3
- package/esm2022/lib/ecommerce/styles/BaseCollection.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/Collection.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/OrderedItems.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/PincodeLocation.model.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/PincodeLocationInter.model.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/cart.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/category.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/order.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/product.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/review.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/user.modal.mjs +1 -1
- package/esm2022/lib/elements/add-section/add-section.component.mjs +3 -3
- package/esm2022/lib/elements/address-list/address-list.component.mjs +3 -3
- package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +3 -3
- package/esm2022/lib/elements/button/button.component.mjs +3 -3
- package/esm2022/lib/elements/button/button.model.mjs +1 -1
- package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +3 -3
- package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +3 -3
- package/esm2022/lib/elements/editor-service.service.mjs +1 -1
- package/esm2022/lib/elements/heading-element/heading-element.component.mjs +3 -3
- package/esm2022/lib/elements/image-editor/image-editor.component.mjs +3 -3
- package/esm2022/lib/elements/index.mjs +1 -1
- package/esm2022/lib/elements/link-editor/link-editor.component.mjs +3 -3
- package/esm2022/lib/elements/list-home-appointment/list-home-appointment.component.mjs +3 -3
- package/esm2022/lib/elements/media-selector/media-selector.component.mjs +3 -3
- package/esm2022/lib/elements/portfolio/portfolio.component.mjs +3 -3
- package/esm2022/lib/elements/pricing-s1/pricing-s1.component.mjs +6 -3
- package/esm2022/lib/elements/property/property.component.mjs +3 -3
- package/esm2022/lib/elements/schedule-video-call/schedule-video-call.component.mjs +3 -3
- package/esm2022/lib/elements/simpo-button/simpo-button.component.mjs +3 -3
- package/esm2022/lib/elements/svg-divider/svg-divider.component.mjs +3 -3
- package/esm2022/lib/elements/text/text.component.mjs +3 -3
- package/esm2022/lib/elements/text-editor/text-editor.component.mjs +3 -3
- package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +3 -3
- package/esm2022/lib/pipes/amount.pipe.mjs +1 -1
- package/esm2022/lib/pipes/gender.pipe.mjs +1 -1
- package/esm2022/lib/sections/BaseSection.mjs +1 -1
- package/esm2022/lib/sections/add-new-section/add-new-section.component.mjs +3 -3
- package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +3 -3
- package/esm2022/lib/sections/appointment-form/appointment-form.model.mjs +1 -1
- package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +3 -3
- package/esm2022/lib/sections/banner-carousel/banner-carousel.model.mjs +1 -1
- package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +3 -3
- package/esm2022/lib/sections/blog-list/blog-list.component.mjs +3 -3
- package/esm2022/lib/sections/blog-list/blog-list.model.mjs +1 -1
- package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +3 -3
- package/esm2022/lib/sections/choose-us-section/choose-us-section.model.mjs +1 -1
- package/esm2022/lib/sections/faq-section/faq-section.component.mjs +3 -3
- package/esm2022/lib/sections/faq-section/faq-section.modal.mjs +1 -1
- package/esm2022/lib/sections/features-section/features-section.component.mjs +3 -3
- package/esm2022/lib/sections/features-section/features-section.model.mjs +1 -1
- package/esm2022/lib/sections/footer/footer.component.mjs +3 -3
- package/esm2022/lib/sections/footer/footer.modal.mjs +1 -1
- package/esm2022/lib/sections/header-section/header-section.component.mjs +3 -3
- package/esm2022/lib/sections/header-section/header-section.model.mjs +1 -1
- package/esm2022/lib/sections/header-text/header-text.component.mjs +3 -3
- package/esm2022/lib/sections/header-text/header-text.model.mjs +1 -1
- package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +3 -3
- package/esm2022/lib/sections/image-carousel-section/image-carousel.model.mjs +1 -1
- package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +3 -3
- package/esm2022/lib/sections/image-grid-section/image-grid-section.model.mjs +1 -1
- package/esm2022/lib/sections/image-section/image-section.component.mjs +3 -3
- package/esm2022/lib/sections/image-section/image-section.model.mjs +1 -1
- package/esm2022/lib/sections/location-section/location-section.component.mjs +3 -3
- package/esm2022/lib/sections/location-section/location-section.modal.mjs +1 -1
- package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +3 -3
- package/esm2022/lib/sections/logo-showcase/logo-showcase.modal.mjs +1 -1
- package/esm2022/lib/sections/moving-text/moving-text.component.mjs +3 -3
- package/esm2022/lib/sections/moving-text/moving-text.modal.mjs +1 -1
- package/esm2022/lib/sections/new-services/new-services.component.mjs +3 -3
- package/esm2022/lib/sections/new-services/new-services.model.mjs +1 -1
- package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +3 -3
- package/esm2022/lib/sections/new-testimonials/new-testimonials.model.mjs +1 -1
- package/esm2022/lib/sections/news-letter-component/news-letter-component.component.mjs +3 -3
- package/esm2022/lib/sections/news-letter-component/news-letter.modal.mjs +1 -1
- package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +3 -3
- package/esm2022/lib/sections/pricing-section/pricing-section.modal.mjs +1 -1
- package/esm2022/lib/sections/process-modern/process-modern.component.mjs +3 -3
- package/esm2022/lib/sections/process-modern/process-modern.model.mjs +1 -1
- package/esm2022/lib/sections/process-section/process-section.component.mjs +3 -3
- package/esm2022/lib/sections/process-section/process-section.modal.mjs +1 -1
- package/esm2022/lib/sections/property-component/property-component.component.mjs +3 -3
- package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
- package/esm2022/lib/sections/property-list/property-list.component.mjs +3 -3
- package/esm2022/lib/sections/property-list/property-list.modal.mjs +1 -1
- package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +3 -3
- package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.model.mjs +1 -1
- package/esm2022/lib/sections/registration-form/registration-form.component.mjs +3 -3
- package/esm2022/lib/sections/registration-form/registrationForm.model.mjs +1 -1
- package/esm2022/lib/sections/scheme-detail/scheme-detail.component.mjs +3 -3
- package/esm2022/lib/sections/scheme-detail/scheme-detail.modal.mjs +1 -1
- package/esm2022/lib/sections/service-section/service-section.component.mjs +3 -3
- package/esm2022/lib/sections/service-section/service-section.model.mjs +1 -1
- package/esm2022/lib/sections/skeleton-loader-section/skeleton-loader-section.component.mjs +3 -3
- package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +3 -3
- package/esm2022/lib/sections/team-member-section/team-member-section.model.mjs +1 -1
- package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +3 -3
- package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.model.mjs +1 -1
- package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +3 -3
- package/esm2022/lib/sections/testimonial-section/testimonial-section.model.mjs +1 -1
- package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +3 -3
- package/esm2022/lib/sections/testimonial-video/testimonial-video.model.mjs +1 -1
- package/esm2022/lib/sections/text-section/text-section.model.mjs +1 -1
- package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +3 -3
- package/esm2022/lib/sections/usp-video-section/usp-video-section.model.mjs +1 -1
- package/esm2022/lib/sections/video-section/video-section.component.mjs +3 -3
- package/esm2022/lib/sections/video-section/video-section.model.mjs +1 -1
- package/esm2022/lib/sections/view-blog/view-blog.component.mjs +3 -3
- package/esm2022/lib/services/cart.service.mjs +1 -1
- package/esm2022/lib/services/endUser.service.mjs +1 -1
- package/esm2022/lib/services/image-upload-service.service.mjs +2 -2
- package/esm2022/lib/services/rest.service.mjs +2 -2
- package/esm2022/lib/services/sanitizeHtml.mjs +1 -1
- package/esm2022/lib/services/storage.service.mjs +1 -1
- package/esm2022/lib/styles/index.mjs +1 -1
- package/esm2022/lib/styles/style.model.mjs +1 -1
- package/esm2022/lib/styles/types.mjs +1 -1
- package/esm2022/lib/tokens/api-token.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/simpo-component-library.mjs +188 -183
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/elements/link-editor/link-editor.component.d.ts +1 -1
- package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
- package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
- package/lib/sections/contact-us/contact-us.component.d.ts +1 -1
- package/lib/sections/faq-section/faq-section.component.d.ts +1 -1
- package/lib/sections/image-section/image-section.component.d.ts +2 -2
- package/lib/sections/logo-showcase/logo-showcase.component.d.ts +2 -2
- package/lib/sections/new-testimonials/new-testimonials.component.d.ts +1 -1
- package/package.json +1 -1
- package/simpo-component-library-3.6.476.tgz +0 -0
- package/src/lib/styles/global-styles.css +272 -272
- package/simpo-component-library-3.6.474.tgz +0 -0
@@ -248,11 +248,11 @@ export class SchemeDetailComponent {
|
|
248
248
|
}
|
249
249
|
}
|
250
250
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SchemeDetailComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.RestService }, { token: i3.StorageServiceService }, { token: i4.MatDialog }, { token: i1.Router }, { token: i5.EventsService }, { token: i6.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
251
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SchemeDetailComponent, isStandalone: true, selector: "simpo-scheme-detail", inputs: { data: "data", index: "index", edit: "edit" }, host: { listeners: { "window:resize": "getScreenSize($event)" } }, providers: [MatDialog, MessageService], viewQueries: [{ propertyName: "showChargesTemplate", first: true, predicate: ["showCharges"], descendants: true, static: true }], ngImport: i0, template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\n\n\n<section class=\"main_section w-100\" [spacingHorizontal]=\"stylesLayout\" [id]=\"data?.id\">\n <div class=\"plan_desc_section\">\n <ng-container *ngTemplateOutlet=\"planDescTemplate\"></ng-container>\n </div>\n <div class=\"about_plan_section p-5 d-flex flex-column align-items-center justify-content-center\">\n <ng-container *ngTemplateOutlet=\"aboutUsTemplate\"></ng-container>\n </div>\n <div class=\"scheme_calculator_section p-5 d-flex flex-column align-items-center justify-content-center\">\n <ng-container *ngTemplateOutlet=\"schemeCalculator\"></ng-container>\n </div>\n <div class=\"redeem_ans_section\" *ngIf=\"schemeDetails?.redeemDesc.length > 0\">\n <ng-container *ngTemplateOutlet=\"redeemInfoSection\"></ng-container>\n </div>\n <div class=\"scheme_work_section\" *ngIf=\"schemeDetails?.schemeWorkingDesc != {} && schemeDetails\">\n <ng-container *ngTemplateOutlet=\"schemeWorkSection\"></ng-container>\n </div>\n <div class=\"faq_section p-5\" *ngIf=\"faqList.length > 0\">\n <ng-container *ngTemplateOutlet=\"faqTemplate\"></ng-container>\n </div>\n <div class=\"terms_condition_section p-5\"\n *ngIf=\"schemeDetails?.termsAndConditions && schemeDetails?.termsAndConditions != {}\">\n <ng-container *ngTemplateOutlet=\"termsAndConditions\"></ng-container>\n </div>\n</section>\n<ng-template #redeemInfoSection>\n <section class=\"faq-section d-flex align-items-center justify-content-center\">\n <div class=\"faq-container\">\n <h1 class=\"faq-title\">How to redeem?</h1>\n <div class=\"d-flex justify-content-center align-items-center w-100\">\n <div class=\"faq-list\">\n <div class=\"redeem_info_section\" *ngIf=\"schemeDetails?.redeemDesc\">\n {{schemeDetails?.redeemDesc || 'N/A'}}\n </div>\n </div>\n </div>\n </div>\n </section>\n</ng-template>\n<ng-template #schemeWorkSection>\n <section class=\"faq-section d-flex align-items-center justify-content-center\">\n <div class=\"faq-container\">\n <h1 class=\"faq-title\">How Does this plan work?</h1>\n <div class=\"d-flex justify-content-center align-items-center w-100\">\n <div class=\"faq-list\">\n <div class=\"ans_section\" *ngFor=\"let faq of getKeys(schemeDetails?.schemeWorkingDesc);let i =index\">\n <div class=\"d-flex align-items-start gap-3 f-16\">\n <span>{{faq}}</span>\n <span>{{ schemeDetails?.schemeWorkingDesc?.[faq]?.replaceAll('\\n',' ') || 'N/A' }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n</ng-template>\n<ng-template #planDescTemplate>\n <div class=\"hero-section d-flex align-items-center\">\n <div class=\"container\">\n <div class=\"row align-items-center g-5\">\n <div\n [ngClass]=\"{'col-md-6': schemeDetails?.imgUrls[0], 'col-12 d-flex align-items-center justify-content-center': !schemeDetails?.imgUrls[0]}\">\n <div class=\"hero-content\">\n <h1 class=\"hero-title mb-4 d-flex justify-content-center align-items-center\">\n <span class=\"title-highlight\">{{schemeDetails?.schemeName ? schemeDetails?.schemeName :'N/A'}}</span>\n </h1>\n <p class=\"hero-description mb-4\">\n {{schemeDetails?.desc ? schemeDetails?.desc :'N/A'}}\n </p>\n </div>\n </div>\n <div class=\"col-lg-6\" *ngIf=\"schemeDetails?.imgUrls[0]\">\n <div class=\"hero-image\">\n <img [src]=\"schemeDetails?.imgUrls ? schemeDetails?.imgUrls[0] :'N/A'\" alt=\"Pearl Jewelry\"\n class=\"jewellery-img w-100\">\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n<ng-template #aboutUsTemplate>\n <div class=\"d-flex flex-column gap-3\">\n <div class=\"text_header d-flex align-items-center justify-content-center\">\n <simpo-text-editor [(value)]=\"getInputText\" [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n <div class=\"desc_text\">\n {{schemeDetails?.about}}\n </div>\n </div>\n</ng-template>\n<ng-template #schemeCalculator>\n <div class=\"d-flex flex-column align-items-center\">\n <div class=\"calc_header d-flex flex-column align-items-center justify-content-center\">\n <span>Calculate Your Returns</span>\n <div class=\"calc_desc\">\n See how your savings grow with our smart investment schemes. choose your preferred scheme and discover\n your potential returns.\n </div>\n </div>\n <div class=\"calculator_section\">\n <div class=\"gold-purity\"\n *ngIf=\"schemeDetails?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n <div class=\"purity\" *ngFor=\"let gold of metalPrice?.priceData ?? []\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/18k_gold_pic.svg\" alt=\"\"\n *ngIf=\"gold?.karats === '18_k'\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/24k_gold_pic.svg\" alt=\"\"\n *ngIf=\"gold?.karats === '24_k'\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/22k_gold_pic.svg\" alt=\"\"\n *ngIf=\"gold?.karats === '22_k'\">\n <div>\n <div>{{gold?.karats?.replaceAll('_', \"\")}} Gold Purity</div>\n <div class=\"gold-price\">\u20B9{{gold.price}}</div>\n </div>\n </div>\n </div>\n <div class=\"sub-header mb-3 px-3 monthly-scheme\">\n <h6 class=\"mb-0 sub-header-text\">Select Your Monthly Investment Amount</h6>\n <p class=\"enrolled-gram\"\n *ngIf=\"schemeDetails?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n {{purchasedGram}} gms</p>\n </div>\n\n <div class=\"calculate-slider mb-4 px-3\">\n <div class=\"slider-container position-relative\">\n <mat-slider [min]=\"minAmount\" [max]=\"maxAmount\" [step]=\"schemeDetails?.valueStep\" class=\"w-100 pale-slider\"\n [style.--mdc-slider-handle-color]=\"data?.styles?.background?.accentColor\"\n [style.--mdc-slider-focus-handle-color]=\"data?.styles?.background?.accentColor\"\n [style.--mdc-slider-hover-handle-color]=\"data?.styles?.background?.accentColor\"\n [style.--mdc-slider-active-track-color]=\"data?.styles?.background?.accentColor\"\n [style.--mdc-slider-with-tick-marks-active-container-color]=\"data?.styles?.background?.accentColor\"\n [style.--mat-slider-ripple-color]=\"data?.styles?.background?.accentColor\"\n [style.--mat-slider-value-indicator-color]=\"data?.styles?.background?.accentColor\">\n <input matSliderThumb [(ngModel)]=\"monthlyAmount\" (ngModelChange)=\"onAmountChange()\">\n </mat-slider>\n <!-- <input type=\"range\" class=\"form-range custom-range\" [min]=\"minAmount\" [max]=\"maxAmount\"\n [step]=\"schemeDetails?.valueStep\" [(ngModel)]=\"monthlyAmount\" (ngModelChange)=\"onAmountChange()\"> -->\n <div class=\"slider-labels d-flex justify-content-between mt-2\">\n <span class=\"fw-bold\">\u20B9{{minAmount | number}}</span>\n <span class=\"fw-bold\">\u20B9{{maxAmount | number}}</span>\n </div>\n <div class=\"random_options d-flex justify-content-center gap-3 align-items-center\"\n *ngIf=\"installmentOptions && installmentOptions.length > 0\">\n <div class=\"option cursor-pointer d-flex justify-content-center align-items-center\"\n [ngStyle]=\"option.status ? {'border': '2px solid grey','font-weight':'bold'} : {}\"\n *ngFor=\"let option of installmentOptions\" (click)=\"setMonthlyAmount(option)\">\n \u20B9 {{option?.value}}\n </div>\n </div>\n </div>\n <div class=\"mt-3\">\n <div class=\"d-flex align-items-center justify-content-center\">\n <span class=\"text-center fw-bold fs-4 monthly-amount\">\u20B9{{monthlyAmount | number}}</span>\n </div>\n <div class=\"text-center text-muted small mt-1\">Monthly Investment</div>\n </div>\n </div>\n\n <div class=\"calculator-bottom px-3 mb-5\">\n <div class=\"scheme-results\">\n <div class=\"row align-items-center justify-content-between mb-3 g-2\">\n <!-- Contribution Card -->\n <div class=\"col-12 col-sm-6\"\n [ngClass]=\"{'card-container': this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'}\">\n <div class=\"card text-center h-100\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5\">\n \u20B9{{(monthlyAmount * maturityCount) | number}}\n </div>\n <div class=\"text-muted small\">\n Your {{maturityCount}}-Month Contribution\n </div>\n </div>\n </div>\n </div>\n\n <!-- Plus Icon - Hidden on mobile -->\n <div class=\"col-auto d-none d-md-flex justify-content-center\"\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"fs-3 text-muted\">+</div>\n </div>\n\n <!-- Benefit Card -->\n <div class=\"col-12 col-sm-6 card-container\" *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"card text-center h-100\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5\">\n \u20B9{{benefitAmount | number}}\n </div>\n <div class=\"text-muted small\">\n Scheme Benefit\n </div>\n </div>\n </div>\n </div>\n\n <!-- Equals Icon - Hidden on mobile -->\n <div class=\"col-auto d-none d-md-flex justify-content-center\"\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"fs-3 text-muted\">=</div>\n </div>\n\n <!-- Total Card -->\n <div class=\"col-12 card-container col-sm-6 mt-2 mt-md-0\"\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"card text-center h-100 border-2\" [style.background]=\"styles?.background?.accentColor\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5 text-white\">\n <span *ngIf=\"schemeDetails?.benefitType != 'DISCOUNT'\">\n \u20B9{{((monthlyAmount * maturityCount) + benefitAmount) | number}}\n </span>\n <span *ngIf=\"schemeDetails?.benefitType === 'DISCOUNT'\">\n \u20B9{{(monthlyAmount * maturityCount) | number}}\n </span>\n </div>\n <div class=\"text-white-50 small\">\n Total Redemption Value\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 col-sm-6\" *ngIf=\"this.schemeDetails?.schemeType === 'GOLD_PROTECTION'\">\n <div class=\"card text-center h-100\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5\">\n {{purchasedGram}} gms\n </div>\n <div class=\"text-muted small\">\n Gold Allocation Today\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n <div class=\"bonus-message text-center mb-3 d-flex justify-content-between align-items-center\"\n *ngIf=\"schemeDetails?.storeList?.length >=2 || staffMembers.length >= 2 \">\n <div class=\"store_selection w-50 align-items-center gap-1\" *ngIf=\"schemeDetails?.storeList?.length >=2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"> <span>Select\n Store : </span></div>\n <div class=\"store-selector\">\n <select id=\"storeDropdown\" [(ngModel)]=\"selectedStore\" class=\"form-select\"\n (ngModelChange)=\"getMetalPrice()\">\n <option [ngValue]=\"null\" disabled>Choose a store...</option>\n <option *ngFor=\"let store of stores;\" [ngValue]=\"store\">\n {{store.name}} - {{store.storeRefId}}\n </option>\n </select>\n </div>\n </div>\n <div class=\"staff-selector w-50 align-items-center gap-1\" *ngIf=\"staffMembers.length >= 2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"><span>Select\n Staff Member : </span></div>\n <select id=\"staffDropdown\" [(ngModel)]=\"selectedStaff\" class=\"form-select\">\n <option value=\"\" disabled>Choose a staff member...</option>\n <option *ngFor=\"let staff of staffMembers;\" [ngValue]=\"staff\">\n {{staff.name}} - {{staff.role ? staff.role : 'staff' }}\n </option>\n </select>\n </div>\n </div>\n <div class=\"terms-and-condition\">\n <input type=\"checkbox\" [(ngModel)]=\"termsAndCondition\">I agree to <a (click)=\"scrollDown()\">Terms &\n Conditions</a>\n </div>\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\" simpoButtonDirective\n [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\" [sectionId]=\"data?.id\"\n [id]=\"data?.id+getButtonId(0)\" (click)=\"enrollScheme(schemeDetails)\">\n <span *ngIf=\" !enrollButtonLoader\">Enroll in Scheme</span>\n <ng-container *ngIf=\"enrollButtonLoader\">\n <div class=\"d-flex align-items-center justify-content-center\">\n <div class=\"spinner\"><mat-spinner class=\"w-100 h-100\"></mat-spinner></div>\n Loading...\n </div>\n </ng-container>\n </button>\n </div>\n <!-- <div *ngIf=\"selectedScheme === 'group'\" class=\"scheme-results\">\n <div class=\"d-flex align-items-center mb-3\">\n \u2B50 <h6 class=\"mb-0 group-results-title\">Group Scheme Results</h6>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-6\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label text-muted small\">Your Total 11-Month Contribution</div>\n </div>\n </div>\n <div class=\"col-6\">\n <div class=\"result-card result-card-group text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label small opacity-75\">Monthly Lucky Draw Amount</div>\n </div>\n </div>\n </div>\n\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\">\n Enroll in Scheme\n </button>\n </div> -->\n </div>\n </div>\n </div>\n\n</ng-template>\n<ng-template #faqTemplate>\n <section class=\"faq-section d-flex align-items-center justify-content-center\">\n <div class=\"faq-container\">\n <h1 class=\"faq-title\">Frequently Asked Questions</h1>\n <p class=\"faq-subtitle\">Everything you need to know about our Group Investment Scheme</p>\n <div class=\"d-flex justify-content-center align-items-center w-100\">\n <div class=\"faq-list\">\n <div class=\"faq-item\" *ngFor=\"let faq of faqList ?? []\" (click)=\"faq.showAnswer = !faq.showAnswer\">\n <div class=\"faq-question\">\n <span>{{faq?.question ? faq?.question : 'N/A'}}</span>\n <mat-icon *ngIf=\"faq.showAnswer\">keyboard_arrow_up</mat-icon>\n <mat-icon *ngIf=\"!faq.showAnswer\">keyboard_arrow_down</mat-icon>\n </div>\n <div class=\"faq-answer\" *ngIf=\"faq.showAnswer\">\n <p>{{faq?.answer ? faq?.answer :'N/A' }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n</ng-template>\n<ng-template #termsAndConditions>\n <section class=\"terms-section d-flex align-items-center justify-content-center\" id=\"termsAndCondition\">\n <div class=\"terms-container d-flex align-items-center justify-content-center flex-column\">\n <h1 class=\"terms-title\">Terms and Conditions</h1>\n\n <div class=\"terms-content\">\n <div class=\"term-item d-flex align-items-center\"\n *ngFor=\"let key of getKeys(schemeDetails?.termsAndConditions); let i = index\">\n <div class=\"terms_count\">\n <h3 class=\"term-heading\">{{ key }}.</h3>\n </div>\n <div>\n <p class=\"term-text mb-0\">\n {{ schemeDetails?.termsAndConditions?.[key]?.replaceAll('\\n',' ') || 'N/A' }}\n </p>\n </div>\n </div>\n\n <!-- <div class=\"important-note\">\n <p><strong>Important:</strong> These terms and conditions are subject to change with prior notice.\n Participants will be notified of any changes via registered email or SMS. Continued\n participation after notification constitutes acceptance of revised terms.</p>\n </div> -->\n </div>\n </div>\n </section>\n</ng-template>\n<ng-template #showCharges>\n <div class=\"payment-dialog\">\n <div class=\"dialog-header\">\n <h2>Payment Details</h2>\n <button class=\"close-btn\" mat-icon-button (click)=\"closeDialog('FAIL')\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"payment-content\">\n <div class=\"payment-row\">\n <span class=\"label\">Installment Amount:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.installmentAmount ?\n (storeCharges?.breakdown?.installmentAmount | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Convenience Fee:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.convenienceFee?.value ?\n (storeCharges?.breakdown?.convenienceFee?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Payment Service Charges:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.paymentServiceCharges?.value ?\n (storeCharges?.breakdown?.paymentServiceCharges?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row total-row\">\n <span class=\"label total-label\">Total Amount:</span>\n <span class=\"amount total-amount\">\u20B9{{storeCharges?.breakdown?.totalAmount ?\n (storeCharges?.breakdown?.totalAmount | number) : 0 }}</span>\n </div>\n </div>\n\n <div class=\"dialog-actions\">\n <button class=\"continue-btn\" (click)=\"closeDialog('SUCCESS')\">Continue</button>\n </div>\n </div>\n</ng-template>", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.p-5{padding:2% 5%!important}.text_header{font-size:50px;font-weight:bolder;color:orange}.calc_header{gap:1rem;padding-bottom:4%}.calc_header span{font-size:23px;font-weight:700}.calc_desc{font-size:17px;text-align:center;padding:0% 23%}.desc_text{font-size:17px;padding:0% 20%;line-height:1.5rem;text-align:center}.sub-header-text{font-weight:500}.slider-container{padding:0 12px}.slider-labels{margin-top:10px;font-size:14px}.random_options{padding:0% 1%}.option{padding:.5% 2%;border:1px solid rgba(227,66,255,.1);border-radius:50px;background:#3a00441a}.calculator_section{padding:2%;width:65vw;box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014;border-radius:16px}.scheme-results{background:#fff9e9;border-radius:8px;padding:20px}.individual-results-title{color:#d4a574;font-weight:600}.result-card{background:#fff;transition:all .3s ease;border:1px solid #e9ecef!important}.add_icon,.total_icon{padding:.3% 1%;background:#fff;border-radius:50px}.w-15{width:15vw}.result-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.result-card-highlight{color:#fff}.result-card-group{background:#d63384;color:#fff}.result-amount{color:#333;font-size:18px;margin-bottom:8px}.result-card-highlight .result-amount,.result-card-group .result-amount{color:#fff}.result-label{font-size:12px;font-weight:500}.enroll-btn{font-size:16px;border:1px solid}.faq-container{border-radius:16px;padding:40px 0;width:65vw}.faq-title{font-size:2.5rem;font-weight:700;color:#2d3748;text-align:center;margin-bottom:12px}.faq-subtitle{font-size:1.1rem;color:#718096;text-align:center;margin-bottom:40px;font-weight:400}.faq-list{display:flex;flex-direction:column;gap:12px;width:80%}.faq-item{border:1px solid #e2e8f0;border-radius:12px;background:#fff;overflow:hidden;transition:all .3s ease}.faq-item:hover{border-color:#cbd5e0;box-shadow:0 2px 4px #0000000d}.faq-question{padding:20px 24px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-weight:500;font-size:1.05rem;color:#2d3748;transition:color .2s ease}.faq-item:hover{box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014}.faq-question:hover span{color:#d4a574;text-decoration:underline}.faq-icon{width:20px;height:20px;color:#718096;transition:transform .3s ease;flex-shrink:0}.faq-item.active .faq-icon{transform:rotate(180deg)}.faq-answer{transition:.3s ease,padding .3s ease;padding:0% 2%}.faq-item.active .faq-answer{max-height:200px;padding:0 24px 20px}.faq-answer p{color:#4a5568;font-size:.95rem;line-height:1.6;margin-top:0}.terms-container{width:65vw}.terms-title{font-size:2.2rem;font-weight:700;color:#2d3748;text-align:center;margin-bottom:40px;letter-spacing:-.02em}.terms-content{display:flex;flex-direction:column;gap:32px;box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014;padding:20px;border-radius:16px;width:80%}.term-item{padding-bottom:8px;border-bottom:1px solid #e2e8f0;gap:10px}.term-heading{margin:0!important}.term-item:last-of-type{border-bottom:none;padding-bottom:unset}.term-heading{font-size:1.15rem;font-weight:600;color:#1a202c;letter-spacing:-.01em}.term-text{font-size:.95rem;color:#4a5568}.important-note{background:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:20px;margin-top:16px}.important-note p{font-size:.9rem;color:#2d3748;line-height:1.6;margin:0}.important-note strong{color:#1a202c;font-weight:600}.footer-note{text-align:center;margin-top:24px;padding-top:16px}.footer-note p{font-size:.85rem;color:#718096;font-style:italic}.payment-dialog{background:#fff;border-radius:12px;padding:0;max-width:400px;width:25vw;box-shadow:0 8px 32px #0000001a}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #f0f0f0}.dialog-header h2{margin:0;font-size:20px;font-weight:500;color:#333;white-space:nowrap}.close-btn{background:none;border:none;padding:4px;cursor:pointer;color:#666;display:flex;align-items:center;width:fit-content!important;justify-content:center}.close-btn:hover{background-color:#f5f5f5;border-radius:50%}.payment-content{padding:24px}.payment-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.payment-row .label{color:#000!important;font-size:16px}.bonus-message{border:1px solid #ffeaa7;border-radius:8px;padding:12px;margin:15px 0;gap:25px}.store_selection span{color:#d4a574;font-weight:700}.store-selector{width:100%;margin:5px 0}.store-selector label{display:block;font-weight:600;margin-bottom:8px}.store-selector .form-select{width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease;min-width:315px}.store-selector .form-select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.store-selector .form-select:hover{border-color:#bbb}.store-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #007bff}.store-selector .selected-info p{margin:0;font-size:14px;color:#495057}.staff-selector label{display:block;color:#333;white-space:nowrap}.staff-selector span{color:#d4a574;font-weight:700}.staff-selector .form-select{margin:5px 0;width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease}.staff-selector .form-select:focus{outline:none;border-color:#28a745;box-shadow:0 0 0 3px #28a7451a}.staff-selector .form-select:hover{border-color:#bbb}.staff-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #28a745}.staff-selector .selected-info p{margin:0;font-size:14px;color:#495057}.payment-row:last-child{margin-bottom:0}.amount{color:#333;font-size:14px;font-weight:500}.total-row{border-top:1px solid #f0f0f0;padding-top:16px;margin-top:8px}.total-label,.total-amount{color:#333;font-weight:600;font-size:16px}.dialog-actions{padding:0 24px 24px}.continue-btn{width:100%;background-color:#dc3545;color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.continue-btn:hover{background-color:#c82333}.continue-btn:active{background-color:#bd2130}@media (min-width :320px) and (max-width : 480px){.calc_desc,.desc_text{padding:0%}.random_options{margin-top:1rem}.hero-section{max-height:unset!important}.hero-section .container{padding:0!important}.p-5{padding:2% 0%!important}.sub-header{margin:.5rem 0px!important}.calculator_section{width:100%}.gold-purity{flex-wrap:wrap}.option{font-size:13px;white-space:nowrap}}@media (max-width: 768px){.terms-section{width:100%}.terms-container{padding:30px 0;width:100%}.terms-title{font-size:1.8rem;margin-bottom:30px}.terms-content{gap:24px;width:100%}.term-heading{font-size:1.1rem}.term-text{font-size:.9rem;text-align:left}.important-note{padding:16px}.faq-container,.faq-section,.faq-list{width:100%}}@media (min-width:475px){.terms-section{padding:0%!important}.card-container{width:31%;height:13vh;align-items:center}.calc_amount{font-size:1.5rem}}.bonus-message{flex-direction:column!important}.bonus-message :is(.staff-selector,.store_selection){width:100%!important}.redeem_info_section{text-align:center}.gold-purity{padding-left:1rem;padding-bottom:15px;display:flex;gap:15px}.gold-purity .purity{display:flex;gap:10px;background:#fff7d0;width:max-content;padding:5px 8px;border-radius:11px;align-items:center}.gold-purity .purity img{height:40px}.gold-purity .purity div{font-size:12px}.gold-purity .purity .gold-price{font-weight:700}.enrolled-gram{margin-bottom:0;font-size:17px;font-weight:600}.monthly-scheme{display:flex;justify-content:space-between}.color-white{color:#fff}.terms-and-condition{display:flex;align-items:center;gap:10px;margin-bottom:10px}.terms-and-condition input{cursor:pointer}.terms-and-condition :is(.store-selector,.form-select){min-width:unset!important}a{color:#0d6efd!important;text-decoration:underline!important;cursor:pointer}.f-16{font-size:16px}a:hover{color:#0a58ca!important}.ans_section{border:none}.hero-section{max-height:75vh;padding:3% 0%}.hero-title{font-size:4rem;font-weight:900;line-height:1.1;color:#2c3e50}.title-highlight{background:linear-gradient(135deg,#d4a574,#e8c5a0,#f4d2a7);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700}.hero-description{font-size:1.1rem;color:#666;line-height:1.6;text-align:center}.price-highlight{color:#d4a574;font-weight:700}.jewellery-img{border-radius:20px;box-shadow:0 20px 40px #0000001a;object-fit:cover;height:500px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i7.DecimalPipe, name: "number" }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label"], outputs: ["valueChange"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: ButtonEditorDirective, selector: "button[appButtonEditor]", inputs: ["appButtonEditor", "buttonData", "buttonStyle", "backgroundInfo", "sectionId", "buttonId"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i9.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "ngmodule", type: MatSliderModule }, { kind: "directive", type: i10.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }] }); }
|
251
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SchemeDetailComponent, isStandalone: true, selector: "simpo-scheme-detail", inputs: { data: "data", index: "index", edit: "edit" }, host: { listeners: { "window:resize": "getScreenSize($event)" } }, providers: [MatDialog, MessageService], viewQueries: [{ propertyName: "showChargesTemplate", first: true, predicate: ["showCharges"], descendants: true, static: true }], ngImport: i0, template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\r\n\r\n\r\n<section class=\"main_section w-100\" [spacingHorizontal]=\"stylesLayout\" [id]=\"data?.id\">\r\n <div class=\"plan_desc_section\">\r\n <ng-container *ngTemplateOutlet=\"planDescTemplate\"></ng-container>\r\n </div>\r\n <div class=\"about_plan_section p-5 d-flex flex-column align-items-center justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"aboutUsTemplate\"></ng-container>\r\n </div>\r\n <div class=\"scheme_calculator_section p-5 d-flex flex-column align-items-center justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"schemeCalculator\"></ng-container>\r\n </div>\r\n <div class=\"redeem_ans_section\" *ngIf=\"schemeDetails?.redeemDesc.length > 0\">\r\n <ng-container *ngTemplateOutlet=\"redeemInfoSection\"></ng-container>\r\n </div>\r\n <div class=\"scheme_work_section\" *ngIf=\"schemeDetails?.schemeWorkingDesc != {} && schemeDetails\">\r\n <ng-container *ngTemplateOutlet=\"schemeWorkSection\"></ng-container>\r\n </div>\r\n <div class=\"faq_section p-5\" *ngIf=\"faqList.length > 0\">\r\n <ng-container *ngTemplateOutlet=\"faqTemplate\"></ng-container>\r\n </div>\r\n <div class=\"terms_condition_section p-5\"\r\n *ngIf=\"schemeDetails?.termsAndConditions && schemeDetails?.termsAndConditions != {}\">\r\n <ng-container *ngTemplateOutlet=\"termsAndConditions\"></ng-container>\r\n </div>\r\n</section>\r\n<ng-template #redeemInfoSection>\r\n <section class=\"faq-section d-flex align-items-center justify-content-center\">\r\n <div class=\"faq-container\">\r\n <h1 class=\"faq-title\">How to redeem?</h1>\r\n <div class=\"d-flex justify-content-center align-items-center w-100\">\r\n <div class=\"faq-list\">\r\n <div class=\"redeem_info_section\" *ngIf=\"schemeDetails?.redeemDesc\">\r\n {{schemeDetails?.redeemDesc || 'N/A'}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n</ng-template>\r\n<ng-template #schemeWorkSection>\r\n <section class=\"faq-section d-flex align-items-center justify-content-center\">\r\n <div class=\"faq-container\">\r\n <h1 class=\"faq-title\">How Does this plan work?</h1>\r\n <div class=\"d-flex justify-content-center align-items-center w-100\">\r\n <div class=\"faq-list\">\r\n <div class=\"ans_section\" *ngFor=\"let faq of getKeys(schemeDetails?.schemeWorkingDesc);let i =index\">\r\n <div class=\"d-flex align-items-start gap-3 f-16\">\r\n <span>{{faq}}</span>\r\n <span>{{ schemeDetails?.schemeWorkingDesc?.[faq]?.replaceAll('\\n',' ') || 'N/A' }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n</ng-template>\r\n<ng-template #planDescTemplate>\r\n <div class=\"hero-section d-flex align-items-center\">\r\n <div class=\"container\">\r\n <div class=\"row align-items-center g-5\">\r\n <div\r\n [ngClass]=\"{'col-md-6': schemeDetails?.imgUrls[0], 'col-12 d-flex align-items-center justify-content-center': !schemeDetails?.imgUrls[0]}\">\r\n <div class=\"hero-content\">\r\n <h1 class=\"hero-title mb-4 d-flex justify-content-center align-items-center\">\r\n <span class=\"title-highlight\">{{schemeDetails?.schemeName ? schemeDetails?.schemeName :'N/A'}}</span>\r\n </h1>\r\n <p class=\"hero-description mb-4\">\r\n {{schemeDetails?.desc ? schemeDetails?.desc :'N/A'}}\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6\" *ngIf=\"schemeDetails?.imgUrls[0]\">\r\n <div class=\"hero-image\">\r\n <img [src]=\"schemeDetails?.imgUrls ? schemeDetails?.imgUrls[0] :'N/A'\" alt=\"Pearl Jewelry\"\r\n class=\"jewellery-img w-100\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template #aboutUsTemplate>\r\n <div class=\"d-flex flex-column gap-3\">\r\n <div class=\"text_header d-flex align-items-center justify-content-center\">\r\n <simpo-text-editor [(value)]=\"getInputText\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n <div class=\"desc_text\">\r\n {{schemeDetails?.about}}\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template #schemeCalculator>\r\n <div class=\"d-flex flex-column align-items-center\">\r\n <div class=\"calc_header d-flex flex-column align-items-center justify-content-center\">\r\n <span>Calculate Your Returns</span>\r\n <div class=\"calc_desc\">\r\n See how your savings grow with our smart investment schemes. choose your preferred scheme and discover\r\n your potential returns.\r\n </div>\r\n </div>\r\n <div class=\"calculator_section\">\r\n <div class=\"gold-purity\"\r\n *ngIf=\"schemeDetails?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\r\n <div class=\"purity\" *ngFor=\"let gold of metalPrice?.priceData ?? []\">\r\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/18k_gold_pic.svg\" alt=\"\"\r\n *ngIf=\"gold?.karats === '18_k'\">\r\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/24k_gold_pic.svg\" alt=\"\"\r\n *ngIf=\"gold?.karats === '24_k'\">\r\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/22k_gold_pic.svg\" alt=\"\"\r\n *ngIf=\"gold?.karats === '22_k'\">\r\n <div>\r\n <div>{{gold?.karats?.replaceAll('_', \"\")}} Gold Purity</div>\r\n <div class=\"gold-price\">\u20B9{{gold.price}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"sub-header mb-3 px-3 monthly-scheme\">\r\n <h6 class=\"mb-0 sub-header-text\">Select Your Monthly Investment Amount</h6>\r\n <p class=\"enrolled-gram\"\r\n *ngIf=\"schemeDetails?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\r\n {{purchasedGram}} gms</p>\r\n </div>\r\n\r\n <div class=\"calculate-slider mb-4 px-3\">\r\n <div class=\"slider-container position-relative\">\r\n <mat-slider [min]=\"minAmount\" [max]=\"maxAmount\" [step]=\"schemeDetails?.valueStep\" class=\"w-100 pale-slider\"\r\n [style.--mdc-slider-handle-color]=\"data?.styles?.background?.accentColor\"\r\n [style.--mdc-slider-focus-handle-color]=\"data?.styles?.background?.accentColor\"\r\n [style.--mdc-slider-hover-handle-color]=\"data?.styles?.background?.accentColor\"\r\n [style.--mdc-slider-active-track-color]=\"data?.styles?.background?.accentColor\"\r\n [style.--mdc-slider-with-tick-marks-active-container-color]=\"data?.styles?.background?.accentColor\"\r\n [style.--mat-slider-ripple-color]=\"data?.styles?.background?.accentColor\"\r\n [style.--mat-slider-value-indicator-color]=\"data?.styles?.background?.accentColor\">\r\n <input matSliderThumb [(ngModel)]=\"monthlyAmount\" (ngModelChange)=\"onAmountChange()\">\r\n </mat-slider>\r\n <!-- <input type=\"range\" class=\"form-range custom-range\" [min]=\"minAmount\" [max]=\"maxAmount\"\r\n [step]=\"schemeDetails?.valueStep\" [(ngModel)]=\"monthlyAmount\" (ngModelChange)=\"onAmountChange()\"> -->\r\n <div class=\"slider-labels d-flex justify-content-between mt-2\">\r\n <span class=\"fw-bold\">\u20B9{{minAmount | number}}</span>\r\n <span class=\"fw-bold\">\u20B9{{maxAmount | number}}</span>\r\n </div>\r\n <div class=\"random_options d-flex justify-content-center gap-3 align-items-center\"\r\n *ngIf=\"installmentOptions && installmentOptions.length > 0\">\r\n <div class=\"option cursor-pointer d-flex justify-content-center align-items-center\"\r\n [ngStyle]=\"option.status ? {'border': '2px solid grey','font-weight':'bold'} : {}\"\r\n *ngFor=\"let option of installmentOptions\" (click)=\"setMonthlyAmount(option)\">\r\n \u20B9 {{option?.value}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-3\">\r\n <div class=\"d-flex align-items-center justify-content-center\">\r\n <span class=\"text-center fw-bold fs-4 monthly-amount\">\u20B9{{monthlyAmount | number}}</span>\r\n </div>\r\n <div class=\"text-center text-muted small mt-1\">Monthly Investment</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"calculator-bottom px-3 mb-5\">\r\n <div class=\"scheme-results\">\r\n <div class=\"row align-items-center justify-content-between mb-3 g-2\">\r\n <!-- Contribution Card -->\r\n <div class=\"col-12 col-sm-6\"\r\n [ngClass]=\"{'card-container': this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'}\">\r\n <div class=\"card text-center h-100\">\r\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\r\n <div class=\"fw-bold calc_amount fs-md-5\">\r\n \u20B9{{(monthlyAmount * maturityCount) | number}}\r\n </div>\r\n <div class=\"text-muted small\">\r\n Your {{maturityCount}}-Month Contribution\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Plus Icon - Hidden on mobile -->\r\n <div class=\"col-auto d-none d-md-flex justify-content-center\"\r\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\r\n <div class=\"fs-3 text-muted\">+</div>\r\n </div>\r\n\r\n <!-- Benefit Card -->\r\n <div class=\"col-12 col-sm-6 card-container\" *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\r\n <div class=\"card text-center h-100\">\r\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\r\n <div class=\"fw-bold calc_amount fs-md-5\">\r\n \u20B9{{benefitAmount | number}}\r\n </div>\r\n <div class=\"text-muted small\">\r\n Scheme Benefit\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Equals Icon - Hidden on mobile -->\r\n <div class=\"col-auto d-none d-md-flex justify-content-center\"\r\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\r\n <div class=\"fs-3 text-muted\">=</div>\r\n </div>\r\n\r\n <!-- Total Card -->\r\n <div class=\"col-12 card-container col-sm-6 mt-2 mt-md-0\"\r\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\r\n <div class=\"card text-center h-100 border-2\" [style.background]=\"styles?.background?.accentColor\">\r\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\r\n <div class=\"fw-bold calc_amount fs-md-5 text-white\">\r\n <span *ngIf=\"schemeDetails?.benefitType != 'DISCOUNT'\">\r\n \u20B9{{((monthlyAmount * maturityCount) + benefitAmount) | number}}\r\n </span>\r\n <span *ngIf=\"schemeDetails?.benefitType === 'DISCOUNT'\">\r\n \u20B9{{(monthlyAmount * maturityCount) | number}}\r\n </span>\r\n </div>\r\n <div class=\"text-white-50 small\">\r\n Total Redemption Value\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-sm-6\" *ngIf=\"this.schemeDetails?.schemeType === 'GOLD_PROTECTION'\">\r\n <div class=\"card text-center h-100\">\r\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\r\n <div class=\"fw-bold calc_amount fs-md-5\">\r\n {{purchasedGram}} gms\r\n </div>\r\n <div class=\"text-muted small\">\r\n Gold Allocation Today\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"bonus-message text-center mb-3 d-flex justify-content-between align-items-center\"\r\n *ngIf=\"schemeDetails?.storeList?.length >=2 || staffMembers.length >= 2 \">\r\n <div class=\"store_selection w-50 align-items-center gap-1\" *ngIf=\"schemeDetails?.storeList?.length >=2\">\r\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"> <span>Select\r\n Store : </span></div>\r\n <div class=\"store-selector\">\r\n <select id=\"storeDropdown\" [(ngModel)]=\"selectedStore\" class=\"form-select\"\r\n (ngModelChange)=\"getMetalPrice()\">\r\n <option [ngValue]=\"null\" disabled>Choose a store...</option>\r\n <option *ngFor=\"let store of stores;\" [ngValue]=\"store\">\r\n {{store.name}} - {{store.storeRefId}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"staff-selector w-50 align-items-center gap-1\" *ngIf=\"staffMembers.length >= 2\">\r\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"><span>Select\r\n Staff Member : </span></div>\r\n <select id=\"staffDropdown\" [(ngModel)]=\"selectedStaff\" class=\"form-select\">\r\n <option value=\"\" disabled>Choose a staff member...</option>\r\n <option *ngFor=\"let staff of staffMembers;\" [ngValue]=\"staff\">\r\n {{staff.name}} - {{staff.role ? staff.role : 'staff' }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"terms-and-condition\">\r\n <input type=\"checkbox\" [(ngModel)]=\"termsAndCondition\">I agree to <a (click)=\"scrollDown()\">Terms &\r\n Conditions</a>\r\n </div>\r\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\" simpoButtonDirective\r\n [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\" [sectionId]=\"data?.id\"\r\n [id]=\"data?.id+getButtonId(0)\" (click)=\"enrollScheme(schemeDetails)\">\r\n <span *ngIf=\" !enrollButtonLoader\">Enroll in Scheme</span>\r\n <ng-container *ngIf=\"enrollButtonLoader\">\r\n <div class=\"d-flex align-items-center justify-content-center\">\r\n <div class=\"spinner\"><mat-spinner class=\"w-100 h-100\"></mat-spinner></div>\r\n Loading...\r\n </div>\r\n </ng-container>\r\n </button>\r\n </div>\r\n <!-- <div *ngIf=\"selectedScheme === 'group'\" class=\"scheme-results\">\r\n <div class=\"d-flex align-items-center mb-3\">\r\n \u2B50 <h6 class=\"mb-0 group-results-title\">Group Scheme Results</h6>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-6\">\r\n <div class=\"result-card text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\r\n <div class=\"result-label text-muted small\">Your Total 11-Month Contribution</div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"result-card result-card-group text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\r\n <div class=\"result-label small opacity-75\">Monthly Lucky Draw Amount</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\r\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\r\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\">\r\n Enroll in Scheme\r\n </button>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n<ng-template #faqTemplate>\r\n <section class=\"faq-section d-flex align-items-center justify-content-center\">\r\n <div class=\"faq-container\">\r\n <h1 class=\"faq-title\">Frequently Asked Questions</h1>\r\n <p class=\"faq-subtitle\">Everything you need to know about our Group Investment Scheme</p>\r\n <div class=\"d-flex justify-content-center align-items-center w-100\">\r\n <div class=\"faq-list\">\r\n <div class=\"faq-item\" *ngFor=\"let faq of faqList ?? []\" (click)=\"faq.showAnswer = !faq.showAnswer\">\r\n <div class=\"faq-question\">\r\n <span>{{faq?.question ? faq?.question : 'N/A'}}</span>\r\n <mat-icon *ngIf=\"faq.showAnswer\">keyboard_arrow_up</mat-icon>\r\n <mat-icon *ngIf=\"!faq.showAnswer\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n <div class=\"faq-answer\" *ngIf=\"faq.showAnswer\">\r\n <p>{{faq?.answer ? faq?.answer :'N/A' }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n</ng-template>\r\n<ng-template #termsAndConditions>\r\n <section class=\"terms-section d-flex align-items-center justify-content-center\" id=\"termsAndCondition\">\r\n <div class=\"terms-container d-flex align-items-center justify-content-center flex-column\">\r\n <h1 class=\"terms-title\">Terms and Conditions</h1>\r\n\r\n <div class=\"terms-content\">\r\n <div class=\"term-item d-flex align-items-center\"\r\n *ngFor=\"let key of getKeys(schemeDetails?.termsAndConditions); let i = index\">\r\n <div class=\"terms_count\">\r\n <h3 class=\"term-heading\">{{ key }}.</h3>\r\n </div>\r\n <div>\r\n <p class=\"term-text mb-0\">\r\n {{ schemeDetails?.termsAndConditions?.[key]?.replaceAll('\\n',' ') || 'N/A' }}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"important-note\">\r\n <p><strong>Important:</strong> These terms and conditions are subject to change with prior notice.\r\n Participants will be notified of any changes via registered email or SMS. Continued\r\n participation after notification constitutes acceptance of revised terms.</p>\r\n </div> -->\r\n </div>\r\n </div>\r\n </section>\r\n</ng-template>\r\n<ng-template #showCharges>\r\n <div class=\"payment-dialog\">\r\n <div class=\"dialog-header\">\r\n <h2>Payment Details</h2>\r\n <button class=\"close-btn\" mat-icon-button (click)=\"closeDialog('FAIL')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"payment-content\">\r\n <div class=\"payment-row\">\r\n <span class=\"label\">Installment Amount:</span>\r\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.installmentAmount ?\r\n (storeCharges?.breakdown?.installmentAmount | number) : 0 }}</span>\r\n </div>\r\n\r\n <div class=\"payment-row\">\r\n <span class=\"label\">Convenience Fee:</span>\r\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.convenienceFee?.value ?\r\n (storeCharges?.breakdown?.convenienceFee?.value | number) : 0 }}</span>\r\n </div>\r\n\r\n <div class=\"payment-row\">\r\n <span class=\"label\">Payment Service Charges:</span>\r\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.paymentServiceCharges?.value ?\r\n (storeCharges?.breakdown?.paymentServiceCharges?.value | number) : 0 }}</span>\r\n </div>\r\n\r\n <div class=\"payment-row total-row\">\r\n <span class=\"label total-label\">Total Amount:</span>\r\n <span class=\"amount total-amount\">\u20B9{{storeCharges?.breakdown?.totalAmount ?\r\n (storeCharges?.breakdown?.totalAmount | number) : 0 }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"dialog-actions\">\r\n <button class=\"continue-btn\" (click)=\"closeDialog('SUCCESS')\">Continue</button>\r\n </div>\r\n </div>\r\n</ng-template>", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.p-5{padding:2% 5%!important}.text_header{font-size:50px;font-weight:bolder;color:orange}.calc_header{gap:1rem;padding-bottom:4%}.calc_header span{font-size:23px;font-weight:700}.calc_desc{font-size:17px;text-align:center;padding:0% 23%}.desc_text{font-size:17px;padding:0% 20%;line-height:1.5rem;text-align:center}.sub-header-text{font-weight:500}.slider-container{padding:0 12px}.slider-labels{margin-top:10px;font-size:14px}.random_options{padding:0% 1%}.option{padding:.5% 2%;border:1px solid rgba(227,66,255,.1);border-radius:50px;background:#3a00441a}.calculator_section{padding:2%;width:65vw;box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014;border-radius:16px}.scheme-results{background:#fff9e9;border-radius:8px;padding:20px}.individual-results-title{color:#d4a574;font-weight:600}.result-card{background:#fff;transition:all .3s ease;border:1px solid #e9ecef!important}.add_icon,.total_icon{padding:.3% 1%;background:#fff;border-radius:50px}.w-15{width:15vw}.result-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.result-card-highlight{color:#fff}.result-card-group{background:#d63384;color:#fff}.result-amount{color:#333;font-size:18px;margin-bottom:8px}.result-card-highlight .result-amount,.result-card-group .result-amount{color:#fff}.result-label{font-size:12px;font-weight:500}.enroll-btn{font-size:16px;border:1px solid}.faq-container{border-radius:16px;padding:40px 0;width:65vw}.faq-title{font-size:2.5rem;font-weight:700;color:#2d3748;text-align:center;margin-bottom:12px}.faq-subtitle{font-size:1.1rem;color:#718096;text-align:center;margin-bottom:40px;font-weight:400}.faq-list{display:flex;flex-direction:column;gap:12px;width:80%}.faq-item{border:1px solid #e2e8f0;border-radius:12px;background:#fff;overflow:hidden;transition:all .3s ease}.faq-item:hover{border-color:#cbd5e0;box-shadow:0 2px 4px #0000000d}.faq-question{padding:20px 24px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-weight:500;font-size:1.05rem;color:#2d3748;transition:color .2s ease}.faq-item:hover{box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014}.faq-question:hover span{color:#d4a574;text-decoration:underline}.faq-icon{width:20px;height:20px;color:#718096;transition:transform .3s ease;flex-shrink:0}.faq-item.active .faq-icon{transform:rotate(180deg)}.faq-answer{transition:.3s ease,padding .3s ease;padding:0% 2%}.faq-item.active .faq-answer{max-height:200px;padding:0 24px 20px}.faq-answer p{color:#4a5568;font-size:.95rem;line-height:1.6;margin-top:0}.terms-container{width:65vw}.terms-title{font-size:2.2rem;font-weight:700;color:#2d3748;text-align:center;margin-bottom:40px;letter-spacing:-.02em}.terms-content{display:flex;flex-direction:column;gap:32px;box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014;padding:20px;border-radius:16px;width:80%}.term-item{padding-bottom:8px;border-bottom:1px solid #e2e8f0;gap:10px}.term-heading{margin:0!important}.term-item:last-of-type{border-bottom:none;padding-bottom:unset}.term-heading{font-size:1.15rem;font-weight:600;color:#1a202c;letter-spacing:-.01em}.term-text{font-size:.95rem;color:#4a5568}.important-note{background:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:20px;margin-top:16px}.important-note p{font-size:.9rem;color:#2d3748;line-height:1.6;margin:0}.important-note strong{color:#1a202c;font-weight:600}.footer-note{text-align:center;margin-top:24px;padding-top:16px}.footer-note p{font-size:.85rem;color:#718096;font-style:italic}.payment-dialog{background:#fff;border-radius:12px;padding:0;max-width:400px;width:25vw;box-shadow:0 8px 32px #0000001a}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #f0f0f0}.dialog-header h2{margin:0;font-size:20px;font-weight:500;color:#333;white-space:nowrap}.close-btn{background:none;border:none;padding:4px;cursor:pointer;color:#666;display:flex;align-items:center;width:fit-content!important;justify-content:center}.close-btn:hover{background-color:#f5f5f5;border-radius:50%}.payment-content{padding:24px}.payment-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.payment-row .label{color:#000!important;font-size:16px}.bonus-message{border:1px solid #ffeaa7;border-radius:8px;padding:12px;margin:15px 0;gap:25px}.store_selection span{color:#d4a574;font-weight:700}.store-selector{width:100%;margin:5px 0}.store-selector label{display:block;font-weight:600;margin-bottom:8px}.store-selector .form-select{width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease;min-width:315px}.store-selector .form-select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.store-selector .form-select:hover{border-color:#bbb}.store-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #007bff}.store-selector .selected-info p{margin:0;font-size:14px;color:#495057}.staff-selector label{display:block;color:#333;white-space:nowrap}.staff-selector span{color:#d4a574;font-weight:700}.staff-selector .form-select{margin:5px 0;width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease}.staff-selector .form-select:focus{outline:none;border-color:#28a745;box-shadow:0 0 0 3px #28a7451a}.staff-selector .form-select:hover{border-color:#bbb}.staff-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #28a745}.staff-selector .selected-info p{margin:0;font-size:14px;color:#495057}.payment-row:last-child{margin-bottom:0}.amount{color:#333;font-size:14px;font-weight:500}.total-row{border-top:1px solid #f0f0f0;padding-top:16px;margin-top:8px}.total-label,.total-amount{color:#333;font-weight:600;font-size:16px}.dialog-actions{padding:0 24px 24px}.continue-btn{width:100%;background-color:#dc3545;color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.continue-btn:hover{background-color:#c82333}.continue-btn:active{background-color:#bd2130}@media (min-width :320px) and (max-width : 480px){.calc_desc,.desc_text{padding:0%}.random_options{margin-top:1rem}.hero-section{max-height:unset!important}.hero-section .container{padding:0!important}.p-5{padding:2% 0%!important}.sub-header{margin:.5rem 0px!important}.calculator_section{width:100%}.gold-purity{flex-wrap:wrap}.option{font-size:13px;white-space:nowrap}}@media (max-width: 768px){.terms-section{width:100%}.terms-container{padding:30px 0;width:100%}.terms-title{font-size:1.8rem;margin-bottom:30px}.terms-content{gap:24px;width:100%}.term-heading{font-size:1.1rem}.term-text{font-size:.9rem;text-align:left}.important-note{padding:16px}.faq-container,.faq-section,.faq-list{width:100%}}@media (min-width:475px){.terms-section{padding:0%!important}.card-container{width:31%;height:13vh;align-items:center}.calc_amount{font-size:1.5rem}}.bonus-message{flex-direction:column!important}.bonus-message :is(.staff-selector,.store_selection){width:100%!important}.redeem_info_section{text-align:center}.gold-purity{padding-left:1rem;padding-bottom:15px;display:flex;gap:15px}.gold-purity .purity{display:flex;gap:10px;background:#fff7d0;width:max-content;padding:5px 8px;border-radius:11px;align-items:center}.gold-purity .purity img{height:40px}.gold-purity .purity div{font-size:12px}.gold-purity .purity .gold-price{font-weight:700}.enrolled-gram{margin-bottom:0;font-size:17px;font-weight:600}.monthly-scheme{display:flex;justify-content:space-between}.color-white{color:#fff}.terms-and-condition{display:flex;align-items:center;gap:10px;margin-bottom:10px}.terms-and-condition input{cursor:pointer}.terms-and-condition :is(.store-selector,.form-select){min-width:unset!important}a{color:#0d6efd!important;text-decoration:underline!important;cursor:pointer}.f-16{font-size:16px}a:hover{color:#0a58ca!important}.ans_section{border:none}.hero-section{max-height:75vh;padding:3% 0%}.hero-title{font-size:4rem;font-weight:900;line-height:1.1;color:#2c3e50}.title-highlight{background:linear-gradient(135deg,#d4a574,#e8c5a0,#f4d2a7);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700}.hero-description{font-size:1.1rem;color:#666;line-height:1.6;text-align:center}.price-highlight{color:#d4a574;font-weight:700}.jewellery-img{border-radius:20px;box-shadow:0 20px 40px #0000001a;object-fit:cover;height:500px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i7.DecimalPipe, name: "number" }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label"], outputs: ["valueChange"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: ButtonEditorDirective, selector: "button[appButtonEditor]", inputs: ["appButtonEditor", "buttonData", "buttonStyle", "backgroundInfo", "sectionId", "buttonId"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i9.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "ngmodule", type: MatSliderModule }, { kind: "directive", type: i10.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }] }); }
|
252
252
|
}
|
253
253
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SchemeDetailComponent, decorators: [{
|
254
254
|
type: Component,
|
255
|
-
args: [{ selector: 'simpo-scheme-detail', standalone: true, imports: [CdkDragPlaceholder, CommonModule, MatDialogModule, SpacingHorizontalDirective, FormsModule, TextEditorComponent, MatIcon, ButtonEditorDirective, MatProgressSpinner, ButtonDirectiveDirective, ToastModule, MatSlider, MatSliderModule], providers: [MatDialog, MessageService], template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\n\n\n<section class=\"main_section w-100\" [spacingHorizontal]=\"stylesLayout\" [id]=\"data?.id\">\n <div class=\"plan_desc_section\">\n <ng-container *ngTemplateOutlet=\"planDescTemplate\"></ng-container>\n </div>\n <div class=\"about_plan_section p-5 d-flex flex-column align-items-center justify-content-center\">\n <ng-container *ngTemplateOutlet=\"aboutUsTemplate\"></ng-container>\n </div>\n <div class=\"scheme_calculator_section p-5 d-flex flex-column align-items-center justify-content-center\">\n <ng-container *ngTemplateOutlet=\"schemeCalculator\"></ng-container>\n </div>\n <div class=\"redeem_ans_section\" *ngIf=\"schemeDetails?.redeemDesc.length > 0\">\n <ng-container *ngTemplateOutlet=\"redeemInfoSection\"></ng-container>\n </div>\n <div class=\"scheme_work_section\" *ngIf=\"schemeDetails?.schemeWorkingDesc != {} && schemeDetails\">\n <ng-container *ngTemplateOutlet=\"schemeWorkSection\"></ng-container>\n </div>\n <div class=\"faq_section p-5\" *ngIf=\"faqList.length > 0\">\n <ng-container *ngTemplateOutlet=\"faqTemplate\"></ng-container>\n </div>\n <div class=\"terms_condition_section p-5\"\n *ngIf=\"schemeDetails?.termsAndConditions && schemeDetails?.termsAndConditions != {}\">\n <ng-container *ngTemplateOutlet=\"termsAndConditions\"></ng-container>\n </div>\n</section>\n<ng-template #redeemInfoSection>\n <section class=\"faq-section d-flex align-items-center justify-content-center\">\n <div class=\"faq-container\">\n <h1 class=\"faq-title\">How to redeem?</h1>\n <div class=\"d-flex justify-content-center align-items-center w-100\">\n <div class=\"faq-list\">\n <div class=\"redeem_info_section\" *ngIf=\"schemeDetails?.redeemDesc\">\n {{schemeDetails?.redeemDesc || 'N/A'}}\n </div>\n </div>\n </div>\n </div>\n </section>\n</ng-template>\n<ng-template #schemeWorkSection>\n <section class=\"faq-section d-flex align-items-center justify-content-center\">\n <div class=\"faq-container\">\n <h1 class=\"faq-title\">How Does this plan work?</h1>\n <div class=\"d-flex justify-content-center align-items-center w-100\">\n <div class=\"faq-list\">\n <div class=\"ans_section\" *ngFor=\"let faq of getKeys(schemeDetails?.schemeWorkingDesc);let i =index\">\n <div class=\"d-flex align-items-start gap-3 f-16\">\n <span>{{faq}}</span>\n <span>{{ schemeDetails?.schemeWorkingDesc?.[faq]?.replaceAll('\\n',' ') || 'N/A' }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n</ng-template>\n<ng-template #planDescTemplate>\n <div class=\"hero-section d-flex align-items-center\">\n <div class=\"container\">\n <div class=\"row align-items-center g-5\">\n <div\n [ngClass]=\"{'col-md-6': schemeDetails?.imgUrls[0], 'col-12 d-flex align-items-center justify-content-center': !schemeDetails?.imgUrls[0]}\">\n <div class=\"hero-content\">\n <h1 class=\"hero-title mb-4 d-flex justify-content-center align-items-center\">\n <span class=\"title-highlight\">{{schemeDetails?.schemeName ? schemeDetails?.schemeName :'N/A'}}</span>\n </h1>\n <p class=\"hero-description mb-4\">\n {{schemeDetails?.desc ? schemeDetails?.desc :'N/A'}}\n </p>\n </div>\n </div>\n <div class=\"col-lg-6\" *ngIf=\"schemeDetails?.imgUrls[0]\">\n <div class=\"hero-image\">\n <img [src]=\"schemeDetails?.imgUrls ? schemeDetails?.imgUrls[0] :'N/A'\" alt=\"Pearl Jewelry\"\n class=\"jewellery-img w-100\">\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n<ng-template #aboutUsTemplate>\n <div class=\"d-flex flex-column gap-3\">\n <div class=\"text_header d-flex align-items-center justify-content-center\">\n <simpo-text-editor [(value)]=\"getInputText\" [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n <div class=\"desc_text\">\n {{schemeDetails?.about}}\n </div>\n </div>\n</ng-template>\n<ng-template #schemeCalculator>\n <div class=\"d-flex flex-column align-items-center\">\n <div class=\"calc_header d-flex flex-column align-items-center justify-content-center\">\n <span>Calculate Your Returns</span>\n <div class=\"calc_desc\">\n See how your savings grow with our smart investment schemes. choose your preferred scheme and discover\n your potential returns.\n </div>\n </div>\n <div class=\"calculator_section\">\n <div class=\"gold-purity\"\n *ngIf=\"schemeDetails?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n <div class=\"purity\" *ngFor=\"let gold of metalPrice?.priceData ?? []\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/18k_gold_pic.svg\" alt=\"\"\n *ngIf=\"gold?.karats === '18_k'\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/24k_gold_pic.svg\" alt=\"\"\n *ngIf=\"gold?.karats === '24_k'\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/22k_gold_pic.svg\" alt=\"\"\n *ngIf=\"gold?.karats === '22_k'\">\n <div>\n <div>{{gold?.karats?.replaceAll('_', \"\")}} Gold Purity</div>\n <div class=\"gold-price\">\u20B9{{gold.price}}</div>\n </div>\n </div>\n </div>\n <div class=\"sub-header mb-3 px-3 monthly-scheme\">\n <h6 class=\"mb-0 sub-header-text\">Select Your Monthly Investment Amount</h6>\n <p class=\"enrolled-gram\"\n *ngIf=\"schemeDetails?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n {{purchasedGram}} gms</p>\n </div>\n\n <div class=\"calculate-slider mb-4 px-3\">\n <div class=\"slider-container position-relative\">\n <mat-slider [min]=\"minAmount\" [max]=\"maxAmount\" [step]=\"schemeDetails?.valueStep\" class=\"w-100 pale-slider\"\n [style.--mdc-slider-handle-color]=\"data?.styles?.background?.accentColor\"\n [style.--mdc-slider-focus-handle-color]=\"data?.styles?.background?.accentColor\"\n [style.--mdc-slider-hover-handle-color]=\"data?.styles?.background?.accentColor\"\n [style.--mdc-slider-active-track-color]=\"data?.styles?.background?.accentColor\"\n [style.--mdc-slider-with-tick-marks-active-container-color]=\"data?.styles?.background?.accentColor\"\n [style.--mat-slider-ripple-color]=\"data?.styles?.background?.accentColor\"\n [style.--mat-slider-value-indicator-color]=\"data?.styles?.background?.accentColor\">\n <input matSliderThumb [(ngModel)]=\"monthlyAmount\" (ngModelChange)=\"onAmountChange()\">\n </mat-slider>\n <!-- <input type=\"range\" class=\"form-range custom-range\" [min]=\"minAmount\" [max]=\"maxAmount\"\n [step]=\"schemeDetails?.valueStep\" [(ngModel)]=\"monthlyAmount\" (ngModelChange)=\"onAmountChange()\"> -->\n <div class=\"slider-labels d-flex justify-content-between mt-2\">\n <span class=\"fw-bold\">\u20B9{{minAmount | number}}</span>\n <span class=\"fw-bold\">\u20B9{{maxAmount | number}}</span>\n </div>\n <div class=\"random_options d-flex justify-content-center gap-3 align-items-center\"\n *ngIf=\"installmentOptions && installmentOptions.length > 0\">\n <div class=\"option cursor-pointer d-flex justify-content-center align-items-center\"\n [ngStyle]=\"option.status ? {'border': '2px solid grey','font-weight':'bold'} : {}\"\n *ngFor=\"let option of installmentOptions\" (click)=\"setMonthlyAmount(option)\">\n \u20B9 {{option?.value}}\n </div>\n </div>\n </div>\n <div class=\"mt-3\">\n <div class=\"d-flex align-items-center justify-content-center\">\n <span class=\"text-center fw-bold fs-4 monthly-amount\">\u20B9{{monthlyAmount | number}}</span>\n </div>\n <div class=\"text-center text-muted small mt-1\">Monthly Investment</div>\n </div>\n </div>\n\n <div class=\"calculator-bottom px-3 mb-5\">\n <div class=\"scheme-results\">\n <div class=\"row align-items-center justify-content-between mb-3 g-2\">\n <!-- Contribution Card -->\n <div class=\"col-12 col-sm-6\"\n [ngClass]=\"{'card-container': this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'}\">\n <div class=\"card text-center h-100\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5\">\n \u20B9{{(monthlyAmount * maturityCount) | number}}\n </div>\n <div class=\"text-muted small\">\n Your {{maturityCount}}-Month Contribution\n </div>\n </div>\n </div>\n </div>\n\n <!-- Plus Icon - Hidden on mobile -->\n <div class=\"col-auto d-none d-md-flex justify-content-center\"\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"fs-3 text-muted\">+</div>\n </div>\n\n <!-- Benefit Card -->\n <div class=\"col-12 col-sm-6 card-container\" *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"card text-center h-100\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5\">\n \u20B9{{benefitAmount | number}}\n </div>\n <div class=\"text-muted small\">\n Scheme Benefit\n </div>\n </div>\n </div>\n </div>\n\n <!-- Equals Icon - Hidden on mobile -->\n <div class=\"col-auto d-none d-md-flex justify-content-center\"\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"fs-3 text-muted\">=</div>\n </div>\n\n <!-- Total Card -->\n <div class=\"col-12 card-container col-sm-6 mt-2 mt-md-0\"\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"card text-center h-100 border-2\" [style.background]=\"styles?.background?.accentColor\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5 text-white\">\n <span *ngIf=\"schemeDetails?.benefitType != 'DISCOUNT'\">\n \u20B9{{((monthlyAmount * maturityCount) + benefitAmount) | number}}\n </span>\n <span *ngIf=\"schemeDetails?.benefitType === 'DISCOUNT'\">\n \u20B9{{(monthlyAmount * maturityCount) | number}}\n </span>\n </div>\n <div class=\"text-white-50 small\">\n Total Redemption Value\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 col-sm-6\" *ngIf=\"this.schemeDetails?.schemeType === 'GOLD_PROTECTION'\">\n <div class=\"card text-center h-100\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5\">\n {{purchasedGram}} gms\n </div>\n <div class=\"text-muted small\">\n Gold Allocation Today\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n <div class=\"bonus-message text-center mb-3 d-flex justify-content-between align-items-center\"\n *ngIf=\"schemeDetails?.storeList?.length >=2 || staffMembers.length >= 2 \">\n <div class=\"store_selection w-50 align-items-center gap-1\" *ngIf=\"schemeDetails?.storeList?.length >=2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"> <span>Select\n Store : </span></div>\n <div class=\"store-selector\">\n <select id=\"storeDropdown\" [(ngModel)]=\"selectedStore\" class=\"form-select\"\n (ngModelChange)=\"getMetalPrice()\">\n <option [ngValue]=\"null\" disabled>Choose a store...</option>\n <option *ngFor=\"let store of stores;\" [ngValue]=\"store\">\n {{store.name}} - {{store.storeRefId}}\n </option>\n </select>\n </div>\n </div>\n <div class=\"staff-selector w-50 align-items-center gap-1\" *ngIf=\"staffMembers.length >= 2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"><span>Select\n Staff Member : </span></div>\n <select id=\"staffDropdown\" [(ngModel)]=\"selectedStaff\" class=\"form-select\">\n <option value=\"\" disabled>Choose a staff member...</option>\n <option *ngFor=\"let staff of staffMembers;\" [ngValue]=\"staff\">\n {{staff.name}} - {{staff.role ? staff.role : 'staff' }}\n </option>\n </select>\n </div>\n </div>\n <div class=\"terms-and-condition\">\n <input type=\"checkbox\" [(ngModel)]=\"termsAndCondition\">I agree to <a (click)=\"scrollDown()\">Terms &\n Conditions</a>\n </div>\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\" simpoButtonDirective\n [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\" [sectionId]=\"data?.id\"\n [id]=\"data?.id+getButtonId(0)\" (click)=\"enrollScheme(schemeDetails)\">\n <span *ngIf=\" !enrollButtonLoader\">Enroll in Scheme</span>\n <ng-container *ngIf=\"enrollButtonLoader\">\n <div class=\"d-flex align-items-center justify-content-center\">\n <div class=\"spinner\"><mat-spinner class=\"w-100 h-100\"></mat-spinner></div>\n Loading...\n </div>\n </ng-container>\n </button>\n </div>\n <!-- <div *ngIf=\"selectedScheme === 'group'\" class=\"scheme-results\">\n <div class=\"d-flex align-items-center mb-3\">\n \u2B50 <h6 class=\"mb-0 group-results-title\">Group Scheme Results</h6>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-6\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label text-muted small\">Your Total 11-Month Contribution</div>\n </div>\n </div>\n <div class=\"col-6\">\n <div class=\"result-card result-card-group text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label small opacity-75\">Monthly Lucky Draw Amount</div>\n </div>\n </div>\n </div>\n\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\">\n Enroll in Scheme\n </button>\n </div> -->\n </div>\n </div>\n </div>\n\n</ng-template>\n<ng-template #faqTemplate>\n <section class=\"faq-section d-flex align-items-center justify-content-center\">\n <div class=\"faq-container\">\n <h1 class=\"faq-title\">Frequently Asked Questions</h1>\n <p class=\"faq-subtitle\">Everything you need to know about our Group Investment Scheme</p>\n <div class=\"d-flex justify-content-center align-items-center w-100\">\n <div class=\"faq-list\">\n <div class=\"faq-item\" *ngFor=\"let faq of faqList ?? []\" (click)=\"faq.showAnswer = !faq.showAnswer\">\n <div class=\"faq-question\">\n <span>{{faq?.question ? faq?.question : 'N/A'}}</span>\n <mat-icon *ngIf=\"faq.showAnswer\">keyboard_arrow_up</mat-icon>\n <mat-icon *ngIf=\"!faq.showAnswer\">keyboard_arrow_down</mat-icon>\n </div>\n <div class=\"faq-answer\" *ngIf=\"faq.showAnswer\">\n <p>{{faq?.answer ? faq?.answer :'N/A' }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n</ng-template>\n<ng-template #termsAndConditions>\n <section class=\"terms-section d-flex align-items-center justify-content-center\" id=\"termsAndCondition\">\n <div class=\"terms-container d-flex align-items-center justify-content-center flex-column\">\n <h1 class=\"terms-title\">Terms and Conditions</h1>\n\n <div class=\"terms-content\">\n <div class=\"term-item d-flex align-items-center\"\n *ngFor=\"let key of getKeys(schemeDetails?.termsAndConditions); let i = index\">\n <div class=\"terms_count\">\n <h3 class=\"term-heading\">{{ key }}.</h3>\n </div>\n <div>\n <p class=\"term-text mb-0\">\n {{ schemeDetails?.termsAndConditions?.[key]?.replaceAll('\\n',' ') || 'N/A' }}\n </p>\n </div>\n </div>\n\n <!-- <div class=\"important-note\">\n <p><strong>Important:</strong> These terms and conditions are subject to change with prior notice.\n Participants will be notified of any changes via registered email or SMS. Continued\n participation after notification constitutes acceptance of revised terms.</p>\n </div> -->\n </div>\n </div>\n </section>\n</ng-template>\n<ng-template #showCharges>\n <div class=\"payment-dialog\">\n <div class=\"dialog-header\">\n <h2>Payment Details</h2>\n <button class=\"close-btn\" mat-icon-button (click)=\"closeDialog('FAIL')\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"payment-content\">\n <div class=\"payment-row\">\n <span class=\"label\">Installment Amount:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.installmentAmount ?\n (storeCharges?.breakdown?.installmentAmount | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Convenience Fee:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.convenienceFee?.value ?\n (storeCharges?.breakdown?.convenienceFee?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Payment Service Charges:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.paymentServiceCharges?.value ?\n (storeCharges?.breakdown?.paymentServiceCharges?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row total-row\">\n <span class=\"label total-label\">Total Amount:</span>\n <span class=\"amount total-amount\">\u20B9{{storeCharges?.breakdown?.totalAmount ?\n (storeCharges?.breakdown?.totalAmount | number) : 0 }}</span>\n </div>\n </div>\n\n <div class=\"dialog-actions\">\n <button class=\"continue-btn\" (click)=\"closeDialog('SUCCESS')\">Continue</button>\n </div>\n </div>\n</ng-template>", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.p-5{padding:2% 5%!important}.text_header{font-size:50px;font-weight:bolder;color:orange}.calc_header{gap:1rem;padding-bottom:4%}.calc_header span{font-size:23px;font-weight:700}.calc_desc{font-size:17px;text-align:center;padding:0% 23%}.desc_text{font-size:17px;padding:0% 20%;line-height:1.5rem;text-align:center}.sub-header-text{font-weight:500}.slider-container{padding:0 12px}.slider-labels{margin-top:10px;font-size:14px}.random_options{padding:0% 1%}.option{padding:.5% 2%;border:1px solid rgba(227,66,255,.1);border-radius:50px;background:#3a00441a}.calculator_section{padding:2%;width:65vw;box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014;border-radius:16px}.scheme-results{background:#fff9e9;border-radius:8px;padding:20px}.individual-results-title{color:#d4a574;font-weight:600}.result-card{background:#fff;transition:all .3s ease;border:1px solid #e9ecef!important}.add_icon,.total_icon{padding:.3% 1%;background:#fff;border-radius:50px}.w-15{width:15vw}.result-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.result-card-highlight{color:#fff}.result-card-group{background:#d63384;color:#fff}.result-amount{color:#333;font-size:18px;margin-bottom:8px}.result-card-highlight .result-amount,.result-card-group .result-amount{color:#fff}.result-label{font-size:12px;font-weight:500}.enroll-btn{font-size:16px;border:1px solid}.faq-container{border-radius:16px;padding:40px 0;width:65vw}.faq-title{font-size:2.5rem;font-weight:700;color:#2d3748;text-align:center;margin-bottom:12px}.faq-subtitle{font-size:1.1rem;color:#718096;text-align:center;margin-bottom:40px;font-weight:400}.faq-list{display:flex;flex-direction:column;gap:12px;width:80%}.faq-item{border:1px solid #e2e8f0;border-radius:12px;background:#fff;overflow:hidden;transition:all .3s ease}.faq-item:hover{border-color:#cbd5e0;box-shadow:0 2px 4px #0000000d}.faq-question{padding:20px 24px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-weight:500;font-size:1.05rem;color:#2d3748;transition:color .2s ease}.faq-item:hover{box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014}.faq-question:hover span{color:#d4a574;text-decoration:underline}.faq-icon{width:20px;height:20px;color:#718096;transition:transform .3s ease;flex-shrink:0}.faq-item.active .faq-icon{transform:rotate(180deg)}.faq-answer{transition:.3s ease,padding .3s ease;padding:0% 2%}.faq-item.active .faq-answer{max-height:200px;padding:0 24px 20px}.faq-answer p{color:#4a5568;font-size:.95rem;line-height:1.6;margin-top:0}.terms-container{width:65vw}.terms-title{font-size:2.2rem;font-weight:700;color:#2d3748;text-align:center;margin-bottom:40px;letter-spacing:-.02em}.terms-content{display:flex;flex-direction:column;gap:32px;box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014;padding:20px;border-radius:16px;width:80%}.term-item{padding-bottom:8px;border-bottom:1px solid #e2e8f0;gap:10px}.term-heading{margin:0!important}.term-item:last-of-type{border-bottom:none;padding-bottom:unset}.term-heading{font-size:1.15rem;font-weight:600;color:#1a202c;letter-spacing:-.01em}.term-text{font-size:.95rem;color:#4a5568}.important-note{background:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:20px;margin-top:16px}.important-note p{font-size:.9rem;color:#2d3748;line-height:1.6;margin:0}.important-note strong{color:#1a202c;font-weight:600}.footer-note{text-align:center;margin-top:24px;padding-top:16px}.footer-note p{font-size:.85rem;color:#718096;font-style:italic}.payment-dialog{background:#fff;border-radius:12px;padding:0;max-width:400px;width:25vw;box-shadow:0 8px 32px #0000001a}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #f0f0f0}.dialog-header h2{margin:0;font-size:20px;font-weight:500;color:#333;white-space:nowrap}.close-btn{background:none;border:none;padding:4px;cursor:pointer;color:#666;display:flex;align-items:center;width:fit-content!important;justify-content:center}.close-btn:hover{background-color:#f5f5f5;border-radius:50%}.payment-content{padding:24px}.payment-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.payment-row .label{color:#000!important;font-size:16px}.bonus-message{border:1px solid #ffeaa7;border-radius:8px;padding:12px;margin:15px 0;gap:25px}.store_selection span{color:#d4a574;font-weight:700}.store-selector{width:100%;margin:5px 0}.store-selector label{display:block;font-weight:600;margin-bottom:8px}.store-selector .form-select{width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease;min-width:315px}.store-selector .form-select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.store-selector .form-select:hover{border-color:#bbb}.store-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #007bff}.store-selector .selected-info p{margin:0;font-size:14px;color:#495057}.staff-selector label{display:block;color:#333;white-space:nowrap}.staff-selector span{color:#d4a574;font-weight:700}.staff-selector .form-select{margin:5px 0;width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease}.staff-selector .form-select:focus{outline:none;border-color:#28a745;box-shadow:0 0 0 3px #28a7451a}.staff-selector .form-select:hover{border-color:#bbb}.staff-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #28a745}.staff-selector .selected-info p{margin:0;font-size:14px;color:#495057}.payment-row:last-child{margin-bottom:0}.amount{color:#333;font-size:14px;font-weight:500}.total-row{border-top:1px solid #f0f0f0;padding-top:16px;margin-top:8px}.total-label,.total-amount{color:#333;font-weight:600;font-size:16px}.dialog-actions{padding:0 24px 24px}.continue-btn{width:100%;background-color:#dc3545;color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.continue-btn:hover{background-color:#c82333}.continue-btn:active{background-color:#bd2130}@media (min-width :320px) and (max-width : 480px){.calc_desc,.desc_text{padding:0%}.random_options{margin-top:1rem}.hero-section{max-height:unset!important}.hero-section .container{padding:0!important}.p-5{padding:2% 0%!important}.sub-header{margin:.5rem 0px!important}.calculator_section{width:100%}.gold-purity{flex-wrap:wrap}.option{font-size:13px;white-space:nowrap}}@media (max-width: 768px){.terms-section{width:100%}.terms-container{padding:30px 0;width:100%}.terms-title{font-size:1.8rem;margin-bottom:30px}.terms-content{gap:24px;width:100%}.term-heading{font-size:1.1rem}.term-text{font-size:.9rem;text-align:left}.important-note{padding:16px}.faq-container,.faq-section,.faq-list{width:100%}}@media (min-width:475px){.terms-section{padding:0%!important}.card-container{width:31%;height:13vh;align-items:center}.calc_amount{font-size:1.5rem}}.bonus-message{flex-direction:column!important}.bonus-message :is(.staff-selector,.store_selection){width:100%!important}.redeem_info_section{text-align:center}.gold-purity{padding-left:1rem;padding-bottom:15px;display:flex;gap:15px}.gold-purity .purity{display:flex;gap:10px;background:#fff7d0;width:max-content;padding:5px 8px;border-radius:11px;align-items:center}.gold-purity .purity img{height:40px}.gold-purity .purity div{font-size:12px}.gold-purity .purity .gold-price{font-weight:700}.enrolled-gram{margin-bottom:0;font-size:17px;font-weight:600}.monthly-scheme{display:flex;justify-content:space-between}.color-white{color:#fff}.terms-and-condition{display:flex;align-items:center;gap:10px;margin-bottom:10px}.terms-and-condition input{cursor:pointer}.terms-and-condition :is(.store-selector,.form-select){min-width:unset!important}a{color:#0d6efd!important;text-decoration:underline!important;cursor:pointer}.f-16{font-size:16px}a:hover{color:#0a58ca!important}.ans_section{border:none}.hero-section{max-height:75vh;padding:3% 0%}.hero-title{font-size:4rem;font-weight:900;line-height:1.1;color:#2c3e50}.title-highlight{background:linear-gradient(135deg,#d4a574,#e8c5a0,#f4d2a7);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700}.hero-description{font-size:1.1rem;color:#666;line-height:1.6;text-align:center}.price-highlight{color:#d4a574;font-weight:700}.jewellery-img{border-radius:20px;box-shadow:0 20px 40px #0000001a;object-fit:cover;height:500px}\n"] }]
|
255
|
+
args: [{ selector: 'simpo-scheme-detail', standalone: true, imports: [CdkDragPlaceholder, CommonModule, MatDialogModule, SpacingHorizontalDirective, FormsModule, TextEditorComponent, MatIcon, ButtonEditorDirective, MatProgressSpinner, ButtonDirectiveDirective, ToastModule, MatSlider, MatSliderModule], providers: [MatDialog, MessageService], template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\r\n\r\n\r\n<section class=\"main_section w-100\" [spacingHorizontal]=\"stylesLayout\" [id]=\"data?.id\">\r\n <div class=\"plan_desc_section\">\r\n <ng-container *ngTemplateOutlet=\"planDescTemplate\"></ng-container>\r\n </div>\r\n <div class=\"about_plan_section p-5 d-flex flex-column align-items-center justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"aboutUsTemplate\"></ng-container>\r\n </div>\r\n <div class=\"scheme_calculator_section p-5 d-flex flex-column align-items-center justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"schemeCalculator\"></ng-container>\r\n </div>\r\n <div class=\"redeem_ans_section\" *ngIf=\"schemeDetails?.redeemDesc.length > 0\">\r\n <ng-container *ngTemplateOutlet=\"redeemInfoSection\"></ng-container>\r\n </div>\r\n <div class=\"scheme_work_section\" *ngIf=\"schemeDetails?.schemeWorkingDesc != {} && schemeDetails\">\r\n <ng-container *ngTemplateOutlet=\"schemeWorkSection\"></ng-container>\r\n </div>\r\n <div class=\"faq_section p-5\" *ngIf=\"faqList.length > 0\">\r\n <ng-container *ngTemplateOutlet=\"faqTemplate\"></ng-container>\r\n </div>\r\n <div class=\"terms_condition_section p-5\"\r\n *ngIf=\"schemeDetails?.termsAndConditions && schemeDetails?.termsAndConditions != {}\">\r\n <ng-container *ngTemplateOutlet=\"termsAndConditions\"></ng-container>\r\n </div>\r\n</section>\r\n<ng-template #redeemInfoSection>\r\n <section class=\"faq-section d-flex align-items-center justify-content-center\">\r\n <div class=\"faq-container\">\r\n <h1 class=\"faq-title\">How to redeem?</h1>\r\n <div class=\"d-flex justify-content-center align-items-center w-100\">\r\n <div class=\"faq-list\">\r\n <div class=\"redeem_info_section\" *ngIf=\"schemeDetails?.redeemDesc\">\r\n {{schemeDetails?.redeemDesc || 'N/A'}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n</ng-template>\r\n<ng-template #schemeWorkSection>\r\n <section class=\"faq-section d-flex align-items-center justify-content-center\">\r\n <div class=\"faq-container\">\r\n <h1 class=\"faq-title\">How Does this plan work?</h1>\r\n <div class=\"d-flex justify-content-center align-items-center w-100\">\r\n <div class=\"faq-list\">\r\n <div class=\"ans_section\" *ngFor=\"let faq of getKeys(schemeDetails?.schemeWorkingDesc);let i =index\">\r\n <div class=\"d-flex align-items-start gap-3 f-16\">\r\n <span>{{faq}}</span>\r\n <span>{{ schemeDetails?.schemeWorkingDesc?.[faq]?.replaceAll('\\n',' ') || 'N/A' }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n</ng-template>\r\n<ng-template #planDescTemplate>\r\n <div class=\"hero-section d-flex align-items-center\">\r\n <div class=\"container\">\r\n <div class=\"row align-items-center g-5\">\r\n <div\r\n [ngClass]=\"{'col-md-6': schemeDetails?.imgUrls[0], 'col-12 d-flex align-items-center justify-content-center': !schemeDetails?.imgUrls[0]}\">\r\n <div class=\"hero-content\">\r\n <h1 class=\"hero-title mb-4 d-flex justify-content-center align-items-center\">\r\n <span class=\"title-highlight\">{{schemeDetails?.schemeName ? schemeDetails?.schemeName :'N/A'}}</span>\r\n </h1>\r\n <p class=\"hero-description mb-4\">\r\n {{schemeDetails?.desc ? schemeDetails?.desc :'N/A'}}\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6\" *ngIf=\"schemeDetails?.imgUrls[0]\">\r\n <div class=\"hero-image\">\r\n <img [src]=\"schemeDetails?.imgUrls ? schemeDetails?.imgUrls[0] :'N/A'\" alt=\"Pearl Jewelry\"\r\n class=\"jewellery-img w-100\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template #aboutUsTemplate>\r\n <div class=\"d-flex flex-column gap-3\">\r\n <div class=\"text_header d-flex align-items-center justify-content-center\">\r\n <simpo-text-editor [(value)]=\"getInputText\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n <div class=\"desc_text\">\r\n {{schemeDetails?.about}}\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template #schemeCalculator>\r\n <div class=\"d-flex flex-column align-items-center\">\r\n <div class=\"calc_header d-flex flex-column align-items-center justify-content-center\">\r\n <span>Calculate Your Returns</span>\r\n <div class=\"calc_desc\">\r\n See how your savings grow with our smart investment schemes. choose your preferred scheme and discover\r\n your potential returns.\r\n </div>\r\n </div>\r\n <div class=\"calculator_section\">\r\n <div class=\"gold-purity\"\r\n *ngIf=\"schemeDetails?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\r\n <div class=\"purity\" *ngFor=\"let gold of metalPrice?.priceData ?? []\">\r\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/18k_gold_pic.svg\" alt=\"\"\r\n *ngIf=\"gold?.karats === '18_k'\">\r\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/24k_gold_pic.svg\" alt=\"\"\r\n *ngIf=\"gold?.karats === '24_k'\">\r\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/22k_gold_pic.svg\" alt=\"\"\r\n *ngIf=\"gold?.karats === '22_k'\">\r\n <div>\r\n <div>{{gold?.karats?.replaceAll('_', \"\")}} Gold Purity</div>\r\n <div class=\"gold-price\">\u20B9{{gold.price}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"sub-header mb-3 px-3 monthly-scheme\">\r\n <h6 class=\"mb-0 sub-header-text\">Select Your Monthly Investment Amount</h6>\r\n <p class=\"enrolled-gram\"\r\n *ngIf=\"schemeDetails?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\r\n {{purchasedGram}} gms</p>\r\n </div>\r\n\r\n <div class=\"calculate-slider mb-4 px-3\">\r\n <div class=\"slider-container position-relative\">\r\n <mat-slider [min]=\"minAmount\" [max]=\"maxAmount\" [step]=\"schemeDetails?.valueStep\" class=\"w-100 pale-slider\"\r\n [style.--mdc-slider-handle-color]=\"data?.styles?.background?.accentColor\"\r\n [style.--mdc-slider-focus-handle-color]=\"data?.styles?.background?.accentColor\"\r\n [style.--mdc-slider-hover-handle-color]=\"data?.styles?.background?.accentColor\"\r\n [style.--mdc-slider-active-track-color]=\"data?.styles?.background?.accentColor\"\r\n [style.--mdc-slider-with-tick-marks-active-container-color]=\"data?.styles?.background?.accentColor\"\r\n [style.--mat-slider-ripple-color]=\"data?.styles?.background?.accentColor\"\r\n [style.--mat-slider-value-indicator-color]=\"data?.styles?.background?.accentColor\">\r\n <input matSliderThumb [(ngModel)]=\"monthlyAmount\" (ngModelChange)=\"onAmountChange()\">\r\n </mat-slider>\r\n <!-- <input type=\"range\" class=\"form-range custom-range\" [min]=\"minAmount\" [max]=\"maxAmount\"\r\n [step]=\"schemeDetails?.valueStep\" [(ngModel)]=\"monthlyAmount\" (ngModelChange)=\"onAmountChange()\"> -->\r\n <div class=\"slider-labels d-flex justify-content-between mt-2\">\r\n <span class=\"fw-bold\">\u20B9{{minAmount | number}}</span>\r\n <span class=\"fw-bold\">\u20B9{{maxAmount | number}}</span>\r\n </div>\r\n <div class=\"random_options d-flex justify-content-center gap-3 align-items-center\"\r\n *ngIf=\"installmentOptions && installmentOptions.length > 0\">\r\n <div class=\"option cursor-pointer d-flex justify-content-center align-items-center\"\r\n [ngStyle]=\"option.status ? {'border': '2px solid grey','font-weight':'bold'} : {}\"\r\n *ngFor=\"let option of installmentOptions\" (click)=\"setMonthlyAmount(option)\">\r\n \u20B9 {{option?.value}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-3\">\r\n <div class=\"d-flex align-items-center justify-content-center\">\r\n <span class=\"text-center fw-bold fs-4 monthly-amount\">\u20B9{{monthlyAmount | number}}</span>\r\n </div>\r\n <div class=\"text-center text-muted small mt-1\">Monthly Investment</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"calculator-bottom px-3 mb-5\">\r\n <div class=\"scheme-results\">\r\n <div class=\"row align-items-center justify-content-between mb-3 g-2\">\r\n <!-- Contribution Card -->\r\n <div class=\"col-12 col-sm-6\"\r\n [ngClass]=\"{'card-container': this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'}\">\r\n <div class=\"card text-center h-100\">\r\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\r\n <div class=\"fw-bold calc_amount fs-md-5\">\r\n \u20B9{{(monthlyAmount * maturityCount) | number}}\r\n </div>\r\n <div class=\"text-muted small\">\r\n Your {{maturityCount}}-Month Contribution\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Plus Icon - Hidden on mobile -->\r\n <div class=\"col-auto d-none d-md-flex justify-content-center\"\r\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\r\n <div class=\"fs-3 text-muted\">+</div>\r\n </div>\r\n\r\n <!-- Benefit Card -->\r\n <div class=\"col-12 col-sm-6 card-container\" *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\r\n <div class=\"card text-center h-100\">\r\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\r\n <div class=\"fw-bold calc_amount fs-md-5\">\r\n \u20B9{{benefitAmount | number}}\r\n </div>\r\n <div class=\"text-muted small\">\r\n Scheme Benefit\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Equals Icon - Hidden on mobile -->\r\n <div class=\"col-auto d-none d-md-flex justify-content-center\"\r\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\r\n <div class=\"fs-3 text-muted\">=</div>\r\n </div>\r\n\r\n <!-- Total Card -->\r\n <div class=\"col-12 card-container col-sm-6 mt-2 mt-md-0\"\r\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\r\n <div class=\"card text-center h-100 border-2\" [style.background]=\"styles?.background?.accentColor\">\r\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\r\n <div class=\"fw-bold calc_amount fs-md-5 text-white\">\r\n <span *ngIf=\"schemeDetails?.benefitType != 'DISCOUNT'\">\r\n \u20B9{{((monthlyAmount * maturityCount) + benefitAmount) | number}}\r\n </span>\r\n <span *ngIf=\"schemeDetails?.benefitType === 'DISCOUNT'\">\r\n \u20B9{{(monthlyAmount * maturityCount) | number}}\r\n </span>\r\n </div>\r\n <div class=\"text-white-50 small\">\r\n Total Redemption Value\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-sm-6\" *ngIf=\"this.schemeDetails?.schemeType === 'GOLD_PROTECTION'\">\r\n <div class=\"card text-center h-100\">\r\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\r\n <div class=\"fw-bold calc_amount fs-md-5\">\r\n {{purchasedGram}} gms\r\n </div>\r\n <div class=\"text-muted small\">\r\n Gold Allocation Today\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"bonus-message text-center mb-3 d-flex justify-content-between align-items-center\"\r\n *ngIf=\"schemeDetails?.storeList?.length >=2 || staffMembers.length >= 2 \">\r\n <div class=\"store_selection w-50 align-items-center gap-1\" *ngIf=\"schemeDetails?.storeList?.length >=2\">\r\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"> <span>Select\r\n Store : </span></div>\r\n <div class=\"store-selector\">\r\n <select id=\"storeDropdown\" [(ngModel)]=\"selectedStore\" class=\"form-select\"\r\n (ngModelChange)=\"getMetalPrice()\">\r\n <option [ngValue]=\"null\" disabled>Choose a store...</option>\r\n <option *ngFor=\"let store of stores;\" [ngValue]=\"store\">\r\n {{store.name}} - {{store.storeRefId}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"staff-selector w-50 align-items-center gap-1\" *ngIf=\"staffMembers.length >= 2\">\r\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"><span>Select\r\n Staff Member : </span></div>\r\n <select id=\"staffDropdown\" [(ngModel)]=\"selectedStaff\" class=\"form-select\">\r\n <option value=\"\" disabled>Choose a staff member...</option>\r\n <option *ngFor=\"let staff of staffMembers;\" [ngValue]=\"staff\">\r\n {{staff.name}} - {{staff.role ? staff.role : 'staff' }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"terms-and-condition\">\r\n <input type=\"checkbox\" [(ngModel)]=\"termsAndCondition\">I agree to <a (click)=\"scrollDown()\">Terms &\r\n Conditions</a>\r\n </div>\r\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\" simpoButtonDirective\r\n [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\" [sectionId]=\"data?.id\"\r\n [id]=\"data?.id+getButtonId(0)\" (click)=\"enrollScheme(schemeDetails)\">\r\n <span *ngIf=\" !enrollButtonLoader\">Enroll in Scheme</span>\r\n <ng-container *ngIf=\"enrollButtonLoader\">\r\n <div class=\"d-flex align-items-center justify-content-center\">\r\n <div class=\"spinner\"><mat-spinner class=\"w-100 h-100\"></mat-spinner></div>\r\n Loading...\r\n </div>\r\n </ng-container>\r\n </button>\r\n </div>\r\n <!-- <div *ngIf=\"selectedScheme === 'group'\" class=\"scheme-results\">\r\n <div class=\"d-flex align-items-center mb-3\">\r\n \u2B50 <h6 class=\"mb-0 group-results-title\">Group Scheme Results</h6>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-6\">\r\n <div class=\"result-card text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\r\n <div class=\"result-label text-muted small\">Your Total 11-Month Contribution</div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"result-card result-card-group text-center p-3 border rounded\">\r\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\r\n <div class=\"result-label small opacity-75\">Monthly Lucky Draw Amount</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\r\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\r\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\">\r\n Enroll in Scheme\r\n </button>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n<ng-template #faqTemplate>\r\n <section class=\"faq-section d-flex align-items-center justify-content-center\">\r\n <div class=\"faq-container\">\r\n <h1 class=\"faq-title\">Frequently Asked Questions</h1>\r\n <p class=\"faq-subtitle\">Everything you need to know about our Group Investment Scheme</p>\r\n <div class=\"d-flex justify-content-center align-items-center w-100\">\r\n <div class=\"faq-list\">\r\n <div class=\"faq-item\" *ngFor=\"let faq of faqList ?? []\" (click)=\"faq.showAnswer = !faq.showAnswer\">\r\n <div class=\"faq-question\">\r\n <span>{{faq?.question ? faq?.question : 'N/A'}}</span>\r\n <mat-icon *ngIf=\"faq.showAnswer\">keyboard_arrow_up</mat-icon>\r\n <mat-icon *ngIf=\"!faq.showAnswer\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n <div class=\"faq-answer\" *ngIf=\"faq.showAnswer\">\r\n <p>{{faq?.answer ? faq?.answer :'N/A' }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n</ng-template>\r\n<ng-template #termsAndConditions>\r\n <section class=\"terms-section d-flex align-items-center justify-content-center\" id=\"termsAndCondition\">\r\n <div class=\"terms-container d-flex align-items-center justify-content-center flex-column\">\r\n <h1 class=\"terms-title\">Terms and Conditions</h1>\r\n\r\n <div class=\"terms-content\">\r\n <div class=\"term-item d-flex align-items-center\"\r\n *ngFor=\"let key of getKeys(schemeDetails?.termsAndConditions); let i = index\">\r\n <div class=\"terms_count\">\r\n <h3 class=\"term-heading\">{{ key }}.</h3>\r\n </div>\r\n <div>\r\n <p class=\"term-text mb-0\">\r\n {{ schemeDetails?.termsAndConditions?.[key]?.replaceAll('\\n',' ') || 'N/A' }}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"important-note\">\r\n <p><strong>Important:</strong> These terms and conditions are subject to change with prior notice.\r\n Participants will be notified of any changes via registered email or SMS. Continued\r\n participation after notification constitutes acceptance of revised terms.</p>\r\n </div> -->\r\n </div>\r\n </div>\r\n </section>\r\n</ng-template>\r\n<ng-template #showCharges>\r\n <div class=\"payment-dialog\">\r\n <div class=\"dialog-header\">\r\n <h2>Payment Details</h2>\r\n <button class=\"close-btn\" mat-icon-button (click)=\"closeDialog('FAIL')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"payment-content\">\r\n <div class=\"payment-row\">\r\n <span class=\"label\">Installment Amount:</span>\r\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.installmentAmount ?\r\n (storeCharges?.breakdown?.installmentAmount | number) : 0 }}</span>\r\n </div>\r\n\r\n <div class=\"payment-row\">\r\n <span class=\"label\">Convenience Fee:</span>\r\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.convenienceFee?.value ?\r\n (storeCharges?.breakdown?.convenienceFee?.value | number) : 0 }}</span>\r\n </div>\r\n\r\n <div class=\"payment-row\">\r\n <span class=\"label\">Payment Service Charges:</span>\r\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.paymentServiceCharges?.value ?\r\n (storeCharges?.breakdown?.paymentServiceCharges?.value | number) : 0 }}</span>\r\n </div>\r\n\r\n <div class=\"payment-row total-row\">\r\n <span class=\"label total-label\">Total Amount:</span>\r\n <span class=\"amount total-amount\">\u20B9{{storeCharges?.breakdown?.totalAmount ?\r\n (storeCharges?.breakdown?.totalAmount | number) : 0 }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"dialog-actions\">\r\n <button class=\"continue-btn\" (click)=\"closeDialog('SUCCESS')\">Continue</button>\r\n </div>\r\n </div>\r\n</ng-template>", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.p-5{padding:2% 5%!important}.text_header{font-size:50px;font-weight:bolder;color:orange}.calc_header{gap:1rem;padding-bottom:4%}.calc_header span{font-size:23px;font-weight:700}.calc_desc{font-size:17px;text-align:center;padding:0% 23%}.desc_text{font-size:17px;padding:0% 20%;line-height:1.5rem;text-align:center}.sub-header-text{font-weight:500}.slider-container{padding:0 12px}.slider-labels{margin-top:10px;font-size:14px}.random_options{padding:0% 1%}.option{padding:.5% 2%;border:1px solid rgba(227,66,255,.1);border-radius:50px;background:#3a00441a}.calculator_section{padding:2%;width:65vw;box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014;border-radius:16px}.scheme-results{background:#fff9e9;border-radius:8px;padding:20px}.individual-results-title{color:#d4a574;font-weight:600}.result-card{background:#fff;transition:all .3s ease;border:1px solid #e9ecef!important}.add_icon,.total_icon{padding:.3% 1%;background:#fff;border-radius:50px}.w-15{width:15vw}.result-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.result-card-highlight{color:#fff}.result-card-group{background:#d63384;color:#fff}.result-amount{color:#333;font-size:18px;margin-bottom:8px}.result-card-highlight .result-amount,.result-card-group .result-amount{color:#fff}.result-label{font-size:12px;font-weight:500}.enroll-btn{font-size:16px;border:1px solid}.faq-container{border-radius:16px;padding:40px 0;width:65vw}.faq-title{font-size:2.5rem;font-weight:700;color:#2d3748;text-align:center;margin-bottom:12px}.faq-subtitle{font-size:1.1rem;color:#718096;text-align:center;margin-bottom:40px;font-weight:400}.faq-list{display:flex;flex-direction:column;gap:12px;width:80%}.faq-item{border:1px solid #e2e8f0;border-radius:12px;background:#fff;overflow:hidden;transition:all .3s ease}.faq-item:hover{border-color:#cbd5e0;box-shadow:0 2px 4px #0000000d}.faq-question{padding:20px 24px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-weight:500;font-size:1.05rem;color:#2d3748;transition:color .2s ease}.faq-item:hover{box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014}.faq-question:hover span{color:#d4a574;text-decoration:underline}.faq-icon{width:20px;height:20px;color:#718096;transition:transform .3s ease;flex-shrink:0}.faq-item.active .faq-icon{transform:rotate(180deg)}.faq-answer{transition:.3s ease,padding .3s ease;padding:0% 2%}.faq-item.active .faq-answer{max-height:200px;padding:0 24px 20px}.faq-answer p{color:#4a5568;font-size:.95rem;line-height:1.6;margin-top:0}.terms-container{width:65vw}.terms-title{font-size:2.2rem;font-weight:700;color:#2d3748;text-align:center;margin-bottom:40px;letter-spacing:-.02em}.terms-content{display:flex;flex-direction:column;gap:32px;box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014;padding:20px;border-radius:16px;width:80%}.term-item{padding-bottom:8px;border-bottom:1px solid #e2e8f0;gap:10px}.term-heading{margin:0!important}.term-item:last-of-type{border-bottom:none;padding-bottom:unset}.term-heading{font-size:1.15rem;font-weight:600;color:#1a202c;letter-spacing:-.01em}.term-text{font-size:.95rem;color:#4a5568}.important-note{background:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:20px;margin-top:16px}.important-note p{font-size:.9rem;color:#2d3748;line-height:1.6;margin:0}.important-note strong{color:#1a202c;font-weight:600}.footer-note{text-align:center;margin-top:24px;padding-top:16px}.footer-note p{font-size:.85rem;color:#718096;font-style:italic}.payment-dialog{background:#fff;border-radius:12px;padding:0;max-width:400px;width:25vw;box-shadow:0 8px 32px #0000001a}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #f0f0f0}.dialog-header h2{margin:0;font-size:20px;font-weight:500;color:#333;white-space:nowrap}.close-btn{background:none;border:none;padding:4px;cursor:pointer;color:#666;display:flex;align-items:center;width:fit-content!important;justify-content:center}.close-btn:hover{background-color:#f5f5f5;border-radius:50%}.payment-content{padding:24px}.payment-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.payment-row .label{color:#000!important;font-size:16px}.bonus-message{border:1px solid #ffeaa7;border-radius:8px;padding:12px;margin:15px 0;gap:25px}.store_selection span{color:#d4a574;font-weight:700}.store-selector{width:100%;margin:5px 0}.store-selector label{display:block;font-weight:600;margin-bottom:8px}.store-selector .form-select{width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease;min-width:315px}.store-selector .form-select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.store-selector .form-select:hover{border-color:#bbb}.store-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #007bff}.store-selector .selected-info p{margin:0;font-size:14px;color:#495057}.staff-selector label{display:block;color:#333;white-space:nowrap}.staff-selector span{color:#d4a574;font-weight:700}.staff-selector .form-select{margin:5px 0;width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease}.staff-selector .form-select:focus{outline:none;border-color:#28a745;box-shadow:0 0 0 3px #28a7451a}.staff-selector .form-select:hover{border-color:#bbb}.staff-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #28a745}.staff-selector .selected-info p{margin:0;font-size:14px;color:#495057}.payment-row:last-child{margin-bottom:0}.amount{color:#333;font-size:14px;font-weight:500}.total-row{border-top:1px solid #f0f0f0;padding-top:16px;margin-top:8px}.total-label,.total-amount{color:#333;font-weight:600;font-size:16px}.dialog-actions{padding:0 24px 24px}.continue-btn{width:100%;background-color:#dc3545;color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.continue-btn:hover{background-color:#c82333}.continue-btn:active{background-color:#bd2130}@media (min-width :320px) and (max-width : 480px){.calc_desc,.desc_text{padding:0%}.random_options{margin-top:1rem}.hero-section{max-height:unset!important}.hero-section .container{padding:0!important}.p-5{padding:2% 0%!important}.sub-header{margin:.5rem 0px!important}.calculator_section{width:100%}.gold-purity{flex-wrap:wrap}.option{font-size:13px;white-space:nowrap}}@media (max-width: 768px){.terms-section{width:100%}.terms-container{padding:30px 0;width:100%}.terms-title{font-size:1.8rem;margin-bottom:30px}.terms-content{gap:24px;width:100%}.term-heading{font-size:1.1rem}.term-text{font-size:.9rem;text-align:left}.important-note{padding:16px}.faq-container,.faq-section,.faq-list{width:100%}}@media (min-width:475px){.terms-section{padding:0%!important}.card-container{width:31%;height:13vh;align-items:center}.calc_amount{font-size:1.5rem}}.bonus-message{flex-direction:column!important}.bonus-message :is(.staff-selector,.store_selection){width:100%!important}.redeem_info_section{text-align:center}.gold-purity{padding-left:1rem;padding-bottom:15px;display:flex;gap:15px}.gold-purity .purity{display:flex;gap:10px;background:#fff7d0;width:max-content;padding:5px 8px;border-radius:11px;align-items:center}.gold-purity .purity img{height:40px}.gold-purity .purity div{font-size:12px}.gold-purity .purity .gold-price{font-weight:700}.enrolled-gram{margin-bottom:0;font-size:17px;font-weight:600}.monthly-scheme{display:flex;justify-content:space-between}.color-white{color:#fff}.terms-and-condition{display:flex;align-items:center;gap:10px;margin-bottom:10px}.terms-and-condition input{cursor:pointer}.terms-and-condition :is(.store-selector,.form-select){min-width:unset!important}a{color:#0d6efd!important;text-decoration:underline!important;cursor:pointer}.f-16{font-size:16px}a:hover{color:#0a58ca!important}.ans_section{border:none}.hero-section{max-height:75vh;padding:3% 0%}.hero-title{font-size:4rem;font-weight:900;line-height:1.1;color:#2c3e50}.title-highlight{background:linear-gradient(135deg,#d4a574,#e8c5a0,#f4d2a7);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700}.hero-description{font-size:1.1rem;color:#666;line-height:1.6;text-align:center}.price-highlight{color:#d4a574;font-weight:700}.jewellery-img{border-radius:20px;box-shadow:0 20px 40px #0000001a;object-fit:cover;height:500px}\n"] }]
|
256
256
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.RestService }, { type: i3.StorageServiceService }, { type: i4.MatDialog }, { type: i1.Router }, { type: i5.EventsService }, { type: i6.MessageService }], propDecorators: { data: [{
|
257
257
|
type: Input
|
258
258
|
}], index: [{
|
@@ -266,4 +266,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
266
266
|
type: HostListener,
|
267
267
|
args: ['window:resize', ['$event']]
|
268
268
|
}] } });
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1lLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3NjaGVtZS1kZXRhaWwvc2NoZW1lLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3NjaGVtZS1kZXRhaWwvc2NoZW1lLWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFJMUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXBGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztB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LDJJQUFFLHFCQUFxQix5S0FBRSxrQkFBa0IsK0tBQUUsd0JBQXdCLHFJQUFFLFdBQVcsd1dBQUUsU0FBUyxpTUFBRSxlQUFlOzs0RkFLck8scUJBQXFCO2tCQVJqQyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLDBCQUEwQixFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsYUFFdE8sQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDO3VQQUk3QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDc0MsbUJBQW1CO3NCQUE5RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBZ0UxQyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTY2hlbWVEZXRhaWxNb2RhbCB9IGZyb20gJy4vc2NoZW1lLWRldGFpbC5tb2RhbCc7XG5pbXBvcnQgeyBDZGtEcmFnUGxhY2Vob2xkZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RyYWctZHJvcFwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvdGV4dC1lZGl0b3IvdGV4dC1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctaG9yaXpvbnRhbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTGF5T3V0TW9kZWwgfSBmcm9tICcuLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBCdXR0b25FZGl0b3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWVkaXRvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9idXR0b24tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lclwiO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBUb2FzdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xuaW1wb3J0IHsgTWF0U2xpZGVyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NsaWRlclwiO1xuaW1wb3J0IHsgTWF0U2xpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltcG8tc2NoZW1lLWRldGFpbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDZGtEcmFnUGxhY2Vob2xkZXIsIENvbW1vbk1vZHVsZSwgTWF0RGlhbG9nTW9kdWxlLCBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSwgRm9ybXNNb2R1bGUsIFRleHRFZGl0b3JDb21wb25lbnQsIE1hdEljb24sIEJ1dHRvbkVkaXRvckRpcmVjdGl2ZSwgTWF0UHJvZ3Jlc3NTcGlubmVyLCBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsIFRvYXN0TW9kdWxlLCBNYXRTbGlkZXIsIE1hdFNsaWRlck1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2hlbWUtZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbTWF0RGlhbG9nLCBNZXNzYWdlU2VydmljZV0sXG4gIHN0eWxlVXJsOiAnLi9zY2hlbWUtZGV0YWlsLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIFNjaGVtZURldGFpbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGRhdGE6IFNjaGVtZURldGFpbE1vZGFsIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGluZGV4PzogbnVtYmVyO1xuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbiA9IHRydWU7XG4gIEBWaWV3Q2hpbGQoJ3Nob3dDaGFyZ2VzJywgeyBzdGF0aWM6IHRydWUgfSkgc2hvd0NoYXJnZXNUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgZGlhbG9nUmVmITogTWF0RGlhbG9nUmVmPGFueT47IC8vIHNhdmUgdGhlIGRpYWxvZyByZWZcbiAgc2Nyb2xsVG9UZXJtc0FuZENvbmRpdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aXZlUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcbiAgICBwcml2YXRlIG1hdERpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5nZXRTY3JlZW5TaXplKCk7XG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcbiAgICB0aGlzLmFjdGl2ZVJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgaWYgKHBhcmFtc1snc2NoZW1lSWQnXSkge1xuICAgICAgICB0aGlzLmdldFNjaGVtZURldGFpbHMocGFyYW1zWydzY2hlbWVJZCddKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJhbXNbJ3Rlcm1zQW5kQ29uZGl0aW9uJ10pXG4gICAgICAgIHRoaXMuc2Nyb2xsVG9UZXJtc0FuZENvbmRpdGlvbiA9IHRydWU7XG4gICAgfSlcbiAgICAvLyB0aGlzLmdldFNjaGVtZURldGFpbHMoXCI4NGE4MzA0Zi04NGM1LTExZjAtYjBiZC1lZmU2YTk2MjZiOTJcIilcbiAgfVxuICBnZXRLZXlzKG9iajogYW55KTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmogPz8ge30pO1xuICB9XG4gIE9iamVjdCA9IE9iamVjdFxuICBzdHlsZXM6IGFueTtcbiAgc2VsZWN0ZWRTdG9yZTogYW55O1xuICBzZWxlY3RlZFN0YWZmOiBhbnk7XG4gIHN0b3JlczogYW55W10gPSBbXTtcbiAgc3RhZmZNZW1iZXJzOiBhbnlbXSA9IFtdO1xuICBtaW5BbW91bnQ6IG51bWJlciA9IDEwMDA7XG4gIG1heEFtb3VudDogbnVtYmVyID0gMTAwMDAwO1xuICBtb250aGx5QW1vdW50OiBudW1iZXIgPSAwO1xuICBpbnN0YWxsbWVudE9wdGlvbnM6IGFueVtdID0gW11cbiAgc2NoZW1lRGV0YWlsczogYW55O1xuICBtYXR1cml0eUNvdW50OiBudW1iZXIgPSAxMDtcbiAgYmVuZWZpdEFtb3VudDogbnVtYmVyID0gMDtcbiAgbWV0YWxQcmljZTogYW55O1xuICBwdXJjaGFzZWRHcmFtOiBudW1iZXIgPSAwO1xuICBjdXJyZW50R29sZFJhdGU6IG51bWJlciA9IDBcbiAgdGVybXNBbmRDb25kaXRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBnZXQgc3R5bGVzTGF5b3V0KCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc3R5bGVzPy5sYXlvdXQgfSBhcyBMYXlPdXRNb2RlbDtcbiAgfVxuICBlbnJvbGxCdXR0b25Mb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZ2V0QnV0dG9uRGF0YShpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8uYWN0aW9uPy5idXR0b25zW2luZGV4XT8uY29udGVudDtcbiAgfVxuICBnZXRCdXR0b25JZChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8uYWN0aW9uPy5idXR0b25zW2luZGV4XT8uaWQgPz8gXCJcIjtcbiAgfVxuICBnZXRCdXR0b25TdHlsZShpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8uYWN0aW9uPy5idXR0b25zW2luZGV4XT8uc3R5bGVzO1xuICB9XG4gIGdldCBnZXRJbnB1dFRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8uY29udGVudD8uaW5wdXRUZXh0Py5bMF0/LnZhbHVlID8/IFwiXCJcbiAgfVxuICBzY3JlZW5XaWR0aDogbnVtYmVyID0gMDtcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIGdldFNjcmVlblNpemUoZXZlbnQ/OiBhbnkpIHtcbiAgICB0aGlzLnNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gIH1cbiAgZ2V0U3RhZmZMaXN0KCkge1xuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0QWxsU3RhZmZMaXN0KCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnN0YWZmTWVtYmVycyA9IHJlcz8uZGF0YT8uZGF0YSA/IHJlcz8uZGF0YT8uZGF0YSA6IFtdXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuc3RhZmZNZW1iZXJzKVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIG9uQW1vdW50Q2hhbmdlKCkge1xuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnNjaGVtZURldGFpbHMuamV3ZWxsZXJCZW5lZml0KS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBPYmplY3QudmFsdWVzKHRoaXMuc2NoZW1lRGV0YWlscy5qZXdlbGxlckJlbmVmaXQpO1xuICAgICAgY29uc3QgaGlnaGVzdFZhbHVlID0gTWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyh2YWx1ZXMpKTtcbiAgICAgIGlmICh0aGlzLnNjaGVtZURldGFpbHMuYmVuZWZpdFR5cGUgPT09IFwiUEVSQ0VOVF9PTl9NT05USFwiKSB7XG4gICAgICAgIHRoaXMuYmVuZWZpdEFtb3VudCA9ICh0aGlzLm1vbnRobHlBbW91bnQgKiBoaWdoZXN0VmFsdWUpIC8gMTAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodGhpcy5zY2hlbWVEZXRhaWxzLmJlbmVmaXRUeXBlID09PSBcIlNDSEVNRVwiKSB7XG4gICAgICAgIHRoaXMuYmVuZWZpdEFtb3VudCA9ICgodGhpcy5tb250aGx5QW1vdW50ICogdGhpcy5tYXR1cml0eUNvdW50KSAqIGhpZ2hlc3RWYWx1ZSkgLyAxMDA7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh0aGlzLnNjaGVtZURldGFpbHMuYmVuZWZpdFR5cGUgPT09IFwiRElTQ09VTlRcIikge1xuICAgICAgICB0aGlzLmJlbmVmaXRBbW91bnQgPSAoKHRoaXMubW9udGhseUFtb3VudCAqIHRoaXMubWF0dXJpdHlDb3VudCkgKiBoaWdoZXN0VmFsdWUpIC8gMTAwO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnB1cmNoYXNlZEdyYW0gPSBOdW1iZXIoKHRoaXMubW9udGhseUFtb3VudCAvIHRoaXMuY3VycmVudEdvbGRSYXRlKS50b0ZpeGVkKDIpKVxuICB9XG4gIHNldE1vbnRobHlBbW91bnQoYW1vdW50OiBhbnkpIHtcbiAgICB0aGlzLmluc3RhbGxtZW50T3B0aW9ucy5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xuICAgICAgaWYgKG9wdGlvbi52YWx1ZSA9PSBhbW91bnQ/LnZhbHVlKSB7XG4gICAgICAgIG9wdGlvbi5zdGF0dXMgPSB0cnVlO1xuICAgICAgICB0aGlzLm1vbnRobHlBbW91bnQgPSBhbW91bnQ/LnZhbHVlO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG9wdGlvbi5zdGF0dXMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMub25BbW91bnRDaGFuZ2UoKTtcbiAgfVxuICBmYXFMaXN0OiBhbnlbXSA9IFtdO1xuICBnZXRTY2hlbWVEZXRhaWxzKHNjaGVtZUlkOiBhbnkpIHtcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFNjaGVtZURldGFpbHMoc2NoZW1lSWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXMgJiYgcmVzLmRhdGEpIHtcbiAgICAgICAgdGhpcy5nZXRTdGFmZkxpc3QoKTtcbiAgICAgICAgdGhpcy5zY2hlbWVEZXRhaWxzID0gcmVzLmRhdGE7XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuc2NoZW1lRGV0YWlscylcbiAgICAgICAgdGhpcy5taW5BbW91bnQgPSB0aGlzLnNjaGVtZURldGFpbHM/Lm1pbkluc3RhbGxtZW50VmFsdWU7XG4gICAgICAgIHRoaXMubWF4QW1vdW50ID0gdGhpcy5zY2hlbWVEZXRhaWxzPy5tYXhJbnN0YWxsbWVudFZhbHVlO1xuICAgICAgICB0aGlzLm1vbnRobHlBbW91bnQgPSB0aGlzLm1pbkFtb3VudDtcbiAgICAgICAgdGhpcy5zY2hlbWVEZXRhaWxzPy5zdWdnZXN0ZWRWYWx1ZXM/LmZvckVhY2goKHNjaGVtZTogYW55KSA9PiB0aGlzLmluc3RhbGxtZW50T3B0aW9ucy5wdXNoKHsgc3RhdHVzOiBmYWxzZSwgdmFsdWU6IHNjaGVtZSB9KSlcbiAgICAgICAgdGhpcy5tYXR1cml0eUNvdW50ID0gdGhpcy5zY2hlbWVEZXRhaWxzPy5tYXR1cml0eUNvdW50ID8gdGhpcy5zY2hlbWVEZXRhaWxzLm1hdHVyaXR5Q291bnQgOiB0aGlzLm1hdHVyaXR5Q291bnQ7XG4gICAgICAgIHRoaXMuc3RvcmVzID0gdGhpcy5zY2hlbWVEZXRhaWxzPy5zdG9yZUxpc3QgPyB0aGlzLnNjaGVtZURldGFpbHMuc3RvcmVMaXN0IDogW107XG4gICAgICAgIHRoaXMuZ2V0TWV0YWxQcmljZSgpO1xuICAgICAgICB0aGlzLmZhcUxpc3QgPSB0aGlzLnNjaGVtZURldGFpbHM/LmZhcXMgPyB0aGlzLnNjaGVtZURldGFpbHM/LmZhcXMgOiBbXVxuICAgICAgICB0aGlzLmZhcUxpc3QuZm9yRWFjaChmYXEgPT4gZmFxLnNob3dBbnN3ZXIgPSBmYWxzZSlcblxuICAgICAgICBpZiAodGhpcy5zY3JvbGxUb1Rlcm1zQW5kQ29uZGl0aW9uKVxuICAgICAgICAgIHRoaXMuc2Nyb2xsRG93bigpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGVucm9sbFNjaGVtZShzY2hlbWU6IGFueSkge1xuICAgIGlmICghdGhpcy50ZXJtc0FuZENvbmRpdGlvbikge1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ1Rlcm1zICYgQ29uZGl0aW9uJywgZGV0YWlsOiAnUGxlYXNlIGFjY2VwdCB0ZXJtcyAmIGNvbmRpdGlvbicgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5lbnJvbGxCdXR0b25Mb2FkZXIgPSB0cnVlO1xuICAgIGNvbnN0IHVzZXJEZXRhaWxzID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCk7XG4gICAgbGV0IHBheWxvYWQgPVxuICAgIHtcbiAgICAgIHVzZXJCYXNpY0RldGFpbHM6IHtcbiAgICAgICAgY3VzdG9tZXJfaWQ6IHVzZXJEZXRhaWxzPy51c2VySWQsXG4gICAgICAgIGN1c3RvbWVyX25hbWU6IHVzZXJEZXRhaWxzPy5jb250YWN0Py5uYW1lLFxuICAgICAgICBjdXN0b21lcl9waG9uZTogdXNlckRldGFpbHM/LmNvbnRhY3Q/Lm1vYmlsZSxcbiAgICAgICAgY3VzdG9tZXJfZW1haWw6IHVzZXJEZXRhaWxzPy5jb250YWN0Py5lbWFpbCxcbiAgICAgIH0sXG4gICAgICBzY2hlbWVJZDogc2NoZW1lPy5pZCxcbiAgICAgIHNjaGVtZU5hbWU6IHNjaGVtZT8uc2NoZW1lTmFtZSxcbiAgICAgIGVhcmx5UmVkZW1wdGlvbkNoYXJnZTogc2NoZW1lPy5lbnJvbGxtZW50RmVlcyxcbiAgICAgIGluc3RhbGxtZW50QW1vdW50OiB0aGlzLm1vbnRobHlBbW91bnQsXG4gICAgICBzdG9yZVJlZklkOiBzY2hlbWU/LnNjaGVtZVJlcHJlc2VudGF0aXZlSWQsXG4gICAgICBzdG9yZUlkOiB0aGlzLnN0b3Jlcy5sZW5ndGggPCAyID8gdGhpcy5zdG9yZXNbMF0uaWQgOiB0aGlzLnNlbGVjdGVkU3RvcmU/LmlkLFxuICAgICAgc3RhZmZJZDogdGhpcy5zdGFmZk1lbWJlcnMubGVuZ3RoIDwgMiA/IHRoaXMuc3RhZmZNZW1iZXJzWzBdLmlkIDogdGhpcy5zZWxlY3RlZFN0YWZmPy5pZCxcbiAgICAgIHN0YWZmTmFtZTogdGhpcy5zdGFmZk1lbWJlcnMubGVuZ3RoIDwgMiA/IHRoaXMuc3RhZmZNZW1iZXJzWzBdLm5hbWUgOiB0aGlzLnNlbGVjdGVkU3RhZmY/Lm5hbWUsXG4gICAgICBzdG9yZU5hbWU6IHRoaXMuc3RvcmVzLmxlbmd0aCA8IDIgPyB0aGlzLnN0b3Jlc1swXS5uYW1lIDogdGhpcy5zZWxlY3RlZFN0b3JlPy5uYW1lLFxuICAgICAgbWF0dXJpdHlDb3VudDogc2NoZW1lPy5tYXR1cml0eUNvdW50LFxuICAgICAgamV3ZWxsZXJCZW5lZml0OiBzY2hlbWU/Lmpld2VsbGVyQmVuZWZpdCxcbiAgICAgIGR1ZU1vbnRoczogc2NoZW1lPy5tYXR1cml0eUNvdW50LFxuICAgICAgYnVzaW5lc3NJZDogc2NoZW1lPy5idXNpbmVzc0lkLFxuICAgICAgYnVzaW5lc3NOYW1lOiBzY2hlbWU/LmJ1c2luZXNzTmFtZSxcbiAgICAgIGVuYWJsZUVhcmx5UmVkZW1wdGlvbjogc2NoZW1lPy5lbmFibGVFYXJseVJlZGVtcHRpb24sXG4gICAgICByZWRlbXB0aW9uU2xhYkxpc3Q6IHNjaGVtZT8ucmVkZW1wdGlvblNsYWJMaXN0LFxuICAgICAgc2NoZW1lVHlwZTogc2NoZW1lPy5zY2hlbWVUeXBlLFxuICAgICAgbWV0YWxUeXBlOiBzY2hlbWU/Lm1ldGFsVHlwZSxcbiAgICAgIGthcmF0VHlwZTogc2NoZW1lPy5rYXJhdFR5cGUsXG4gICAgICBjdXN0b21lckFjY291bnQ6IFwiXCJcbiAgICB9XG5cbiAgICBpZiAodXNlckRldGFpbHMgIT0gbnVsbCkge1xuICAgICAgdGhpcy5yZXN0U2VydmljZS5lbnJvbGxTY2hlbWUocGF5bG9hZCwgdHJ1ZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmVucm9sbEJ1dHRvbkxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmNhc2hmcmVlUmVzcG9uc2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5jb250aW51ZVBheW1lbnQocGF5bG9hZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdG9yZUNoYXJnZXMgPSByZXNwb25zZS5kYXRhLmNhcnQ7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMubWF0RGlhbG9nLm9wZW4odGhpcy5zaG93Q2hhcmdlc1RlbXBsYXRlLCB7XG4gICAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdzaG93LWNoYXJnZXMtY2xhc3MnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXMgPT09ICdTVUNDRVNTJylcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRpbnVlUGF5bWVudChwYXlsb2FkKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMuZW5yb2xsQnV0dG9uTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgaWYgKGVycj8uZXJyb3I/Lm1lc3NhZ2UpIHtcblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9sb2dpbiddLCB7IHF1ZXJ5UGFyYW1zOiB7IHNjaGVtZURldGFpbDogJ3NjaGVtZS1kZXRhaWwnIH0gfSk7XG4gICAgfVxuICB9XG4gIGNsb3NlRGlhbG9nKGFjdGlvbjogJ1NVQ0NFU1MnIHwgJ0ZBSUwnKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoYWN0aW9uKTtcbiAgfVxuICBzdG9yZUNoYXJnZXM6IGFueTtcbiAgY29udGludWVQYXltZW50KHBheWxvYWQ6IGFueSkge1xuICAgIHRoaXMucmVzdFNlcnZpY2UuZW5yb2xsU2NoZW1lKHBheWxvYWQsIGZhbHNlKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Bhc3Nib29rT3JkZXJJZCcsIHJlc3BvbnNlLmRhdGEub3JkZXJJZCk7XG4gICAgICAgIHRoaXMub3BlbkNhc2hmcmVlU2RrKHJlc3BvbnNlLmRhdGEuc2Vzc2lvbklkKVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4geyB9XG4gICAgfSlcbiAgfVxuICBvcGVuQ2FzaGZyZWVTZGsoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHsgZGF0YTogeyBvcmRlclNpZ25hdHVyZTogc2Vzc2lvbklkIH0gfSlcbiAgfVxuXG4gIGdldE1ldGFsUHJpY2UoKSB7XG4gICAgbGV0IHN0b3JlSWQgPSB0aGlzLnN0b3Jlcy5sZW5ndGggPCAyID8gdGhpcy5zdG9yZXNbMF0uaWQgOiB0aGlzLnNlbGVjdGVkU3RvcmU/LmlkXG4gICAgaWYgKCFzdG9yZUlkKVxuICAgICAgcmV0dXJuXG5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldE1ldGFsUHJpY2Uoc3RvcmVJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5tZXRhbFByaWNlID0gcmVzLmRhdGE7XG5cbiAgICAgIGZvciAobGV0IGdvbGQgb2YgdGhpcy5tZXRhbFByaWNlPy5wcmljZURhdGEgPz8gW10pIHtcbiAgICAgICAgaWYgKGdvbGQua2FyYXRzID09PSB0aGlzLnNjaGVtZURldGFpbHMua2FyYXRUeXBlKSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50R29sZFJhdGUgPSBnb2xkLnByaWNlO1xuICAgICAgICAgIHRoaXMucHVyY2hhc2VkR3JhbSA9IE51bWJlcigodGhpcy5tb250aGx5QW1vdW50IC8gdGhpcy5jdXJyZW50R29sZFJhdGUpLnRvRml4ZWQoMikpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzU7XG4gIH1cblxuICBzY3JvbGxEb3duKCkge1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlcm1zQW5kQ29uZGl0aW9uJyk7XG4gICAgaWYgKGVsKSB7XG4gICAgICBlbC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiPHAtdG9hc3QgcG9zaXRpb249XCJib3R0b20tcmlnaHRcIiBbYmFzZVpJbmRleF09XCIxMDAwMDAwMDAwMFwiIFthdXRvWkluZGV4XT1cInRydWVcIlxuICBbc2hvd1RyYW5zZm9ybU9wdGlvbnNdPVwiaXNNb2JpbGUgPyAndHJhbnNsYXRlWSgtMTAwJSknIDogJydcIj48L3AtdG9hc3Q+XG5cblxuPHNlY3Rpb24gY2xhc3M9XCJtYWluX3NlY3Rpb24gdy0xMDBcIiBbc3BhY2luZ0hvcml6b250YWxdPVwic3R5bGVzTGF5b3V0XCIgW2lkXT1cImRhdGE/LmlkXCI+XG4gIDxkaXYgY2xhc3M9XCJwbGFuX2Rlc2Nfc2VjdGlvblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwbGFuRGVzY1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYWJvdXRfcGxhbl9zZWN0aW9uIHAtNSBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWJvdXRVc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2NoZW1lX2NhbGN1bGF0b3Jfc2VjdGlvbiBwLTUgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNjaGVtZUNhbGN1bGF0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJyZWRlZW1fYW5zX3NlY3Rpb25cIiAqbmdJZj1cInNjaGVtZURldGFpbHM/LnJlZGVlbURlc2MubGVuZ3RoID4gMFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZWRlZW1JbmZvU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNjaGVtZV93b3JrX3NlY3Rpb25cIiAqbmdJZj1cInNjaGVtZURldGFpbHM/LnNjaGVtZVdvcmtpbmdEZXNjICE9IHt9ICYmIHNjaGVtZURldGFpbHNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2NoZW1lV29ya1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmYXFfc2VjdGlvbiBwLTVcIiAqbmdJZj1cImZhcUxpc3QubGVuZ3RoID4gMFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmYXFUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInRlcm1zX2NvbmRpdGlvbl9zZWN0aW9uIHAtNVwiXG4gICAgKm5nSWY9XCJzY2hlbWVEZXRhaWxzPy50ZXJtc0FuZENvbmRpdGlvbnMgJiYgc2NoZW1lRGV0YWlscz8udGVybXNBbmRDb25kaXRpb25zICE9IHt9XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlcm1zQW5kQ29uZGl0aW9uc1wiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cbjxuZy10ZW1wbGF0ZSAjcmVkZWVtSW5mb1NlY3Rpb24+XG4gIDxzZWN0aW9uIGNsYXNzPVwiZmFxLXNlY3Rpb24gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImZhcS1jb250YWluZXJcIj5cbiAgICAgIDxoMSBjbGFzcz1cImZhcS10aXRsZVwiPkhvdyB0byByZWRlZW0/PC9oMT5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZhcS1saXN0XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlZGVlbV9pbmZvX3NlY3Rpb25cIiAqbmdJZj1cInNjaGVtZURldGFpbHM/LnJlZGVlbURlc2NcIj5cbiAgICAgICAgICAgIHt7c2NoZW1lRGV0YWlscz8ucmVkZWVtRGVzYyB8fCAnTi9BJ319XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3NjaGVtZVdvcmtTZWN0aW9uPlxuICA8c2VjdGlvbiBjbGFzcz1cImZhcS1zZWN0aW9uIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmYXEtY29udGFpbmVyXCI+XG4gICAgICA8aDEgY2xhc3M9XCJmYXEtdGl0bGVcIj5Ib3cgRG9lcyB0aGlzIHBsYW4gd29yaz88L2gxPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmFxLWxpc3RcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5zX3NlY3Rpb25cIiAqbmdGb3I9XCJsZXQgZmFxIG9mIGdldEtleXMoc2NoZW1lRGV0YWlscz8uc2NoZW1lV29ya2luZ0Rlc2MpO2xldCBpID1pbmRleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCAgYWxpZ24taXRlbXMtc3RhcnQgZ2FwLTMgZi0xNlwiPlxuICAgICAgICAgICAgICA8c3Bhbj57e2ZhcX19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBzY2hlbWVEZXRhaWxzPy5zY2hlbWVXb3JraW5nRGVzYz8uW2ZhcV0/LnJlcGxhY2VBbGwoJ1xcbicsJyAnKSB8fCAnTi9BJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNwbGFuRGVzY1RlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiaGVyby1zZWN0aW9uIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBnLTVcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY29sLW1kLTYnOiBzY2hlbWVEZXRhaWxzPy5pbWdVcmxzWzBdLCAnY29sLTEyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlcic6ICFzY2hlbWVEZXRhaWxzPy5pbWdVcmxzWzBdfVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZXJvLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzcz1cImhlcm8tdGl0bGUgbWItNCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS1oaWdobGlnaHRcIj57e3NjaGVtZURldGFpbHM/LnNjaGVtZU5hbWUgPyBzY2hlbWVEZXRhaWxzPy5zY2hlbWVOYW1lIDonTi9BJ319PC9zcGFuPlxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVyby1kZXNjcmlwdGlvbiBtYi00XCI+XG4gICAgICAgICAgICAgIHt7c2NoZW1lRGV0YWlscz8uZGVzYyA/IHNjaGVtZURldGFpbHM/LmRlc2MgOidOL0EnfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiICpuZ0lmPVwic2NoZW1lRGV0YWlscz8uaW1nVXJsc1swXVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZXJvLWltYWdlXCI+XG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwic2NoZW1lRGV0YWlscz8uaW1nVXJscyA/IHNjaGVtZURldGFpbHM/LmltZ1VybHNbMF0gOidOL0EnXCIgYWx0PVwiUGVhcmwgSmV3ZWxyeVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiamV3ZWxsZXJ5LWltZyB3LTEwMFwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2Fib3V0VXNUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0X2hlYWRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJnZXRJbnB1dFRleHRcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImRlc2NfdGV4dFwiPlxuICAgICAge3tzY2hlbWVEZXRhaWxzPy5hYm91dH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjc2NoZW1lQ2FsY3VsYXRvcj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsY19oZWFkZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICA8c3Bhbj5DYWxjdWxhdGUgWW91ciBSZXR1cm5zPC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImNhbGNfZGVzY1wiPlxuICAgICAgICBTZWUgaG93IHlvdXIgc2F2aW5ncyBncm93IHdpdGggb3VyIHNtYXJ0IGludmVzdG1lbnQgc2NoZW1lcy4gY2hvb3NlIHlvdXIgcHJlZmVycmVkIHNjaGVtZSBhbmQgZGlzY292ZXJcbiAgICAgICAgeW91ciBwb3RlbnRpYWwgcmV0dXJucy5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjYWxjdWxhdG9yX3NlY3Rpb25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb2xkLXB1cml0eVwiXG4gICAgICAgICpuZ0lmPVwic2NoZW1lRGV0YWlscz8uc2NoZW1lVHlwZSA9PT0gJ0dPTERfUFJPVEVDVElPTicgJiYgKHN0b3Jlcy5sZW5ndGggPT0gMSB8fCBzZWxlY3RlZFN0b3JlPy5pZClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInB1cml0eVwiICpuZ0Zvcj1cImxldCBnb2xkIG9mIG1ldGFsUHJpY2U/LnByaWNlRGF0YSA/PyBbXVwiPlxuICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9qZXdlbGxlcnMuc3RhZ2UucGFzc2Jvb2thcHAuaW4vYXNzZXRzL2ltYWdlcy9nb2xkLXNjaGVtZS8xOGtfZ29sZF9waWMuc3ZnXCIgYWx0PVwiXCJcbiAgICAgICAgICAgICpuZ0lmPVwiZ29sZD8ua2FyYXRzID09PSAnMThfaydcIj5cbiAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vamV3ZWxsZXJzLnN0YWdlLnBhc3Nib29rYXBwLmluL2Fzc2V0cy9pbWFnZXMvZ29sZC1zY2hlbWUvMjRrX2dvbGRfcGljLnN2Z1wiIGFsdD1cIlwiXG4gICAgICAgICAgICAqbmdJZj1cImdvbGQ/LmthcmF0cyA9PT0gJzI0X2snXCI+XG4gICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2pld2VsbGVycy5zdGFnZS5wYXNzYm9va2FwcC5pbi9hc3NldHMvaW1hZ2VzL2dvbGQtc2NoZW1lLzIya19nb2xkX3BpYy5zdmdcIiBhbHQ9XCJcIlxuICAgICAgICAgICAgKm5nSWY9XCJnb2xkPy5rYXJhdHMgPT09ICcyMl9rJ1wiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2Pnt7Z29sZD8ua2FyYXRzPy5yZXBsYWNlQWxsKCdfJywgXCJcIil9fSBHb2xkIFB1cml0eTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvbGQtcHJpY2VcIj7igrl7e2dvbGQucHJpY2V9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkZXIgbWItMyBweC0zIG1vbnRobHktc2NoZW1lXCI+XG4gICAgICAgIDxoNiBjbGFzcz1cIm1iLTAgc3ViLWhlYWRlci10ZXh0XCI+U2VsZWN0IFlvdXIgTW9udGhseSBJbnZlc3RtZW50IEFtb3VudDwvaDY+XG4gICAgICAgIDxwIGNsYXNzPVwiZW5yb2xsZWQtZ3JhbVwiXG4gICAgICAgICAgKm5nSWY9XCJzY2hlbWVEZXRhaWxzPy5zY2hlbWVUeXBlID09PSAnR09MRF9QUk9URUNUSU9OJyAmJiAoc3RvcmVzLmxlbmd0aCA9PSAxIHx8IHNlbGVjdGVkU3RvcmU/LmlkKVwiPlxuICAgICAgICAgIHt7cHVyY2hhc2VkR3JhbX19IGdtczwvcD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsY3VsYXRlLXNsaWRlciBtYi00IHB4LTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci1jb250YWluZXIgcG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICAgICAgICA8bWF0LXNsaWRlciBbbWluXT1cIm1pbkFtb3VudFwiIFttYXhdPVwibWF4QW1vdW50XCIgW3N0ZXBdPVwic2NoZW1lRGV0YWlscz8udmFsdWVTdGVwXCIgY2xhc3M9XCJ3LTEwMCBwYWxlLXNsaWRlclwiXG4gICAgICAgICAgICBbc3R5bGUuLS1tZGMtc2xpZGVyLWhhbmRsZS1jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS4tLW1kYy1zbGlkZXItZm9jdXMtaGFuZGxlLWNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxuICAgICAgICAgICAgW3N0eWxlLi0tbWRjLXNsaWRlci1ob3Zlci1oYW5kbGUtY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuLS1tZGMtc2xpZGVyLWFjdGl2ZS10cmFjay1jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS4tLW1kYy1zbGlkZXItd2l0aC10aWNrLW1hcmtzLWFjdGl2ZS1jb250YWluZXItY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXG4gICAgICAgICAgICBbc3R5bGUuLS1tYXQtc2xpZGVyLXJpcHBsZS1jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcbiAgICAgICAgICAgIFtzdHlsZS4tLW1hdC1zbGlkZXItdmFsdWUtaW5kaWNhdG9yLWNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRTbGlkZXJUaHVtYiBbKG5nTW9kZWwpXT1cIm1vbnRobHlBbW91bnRcIiAobmdNb2RlbENoYW5nZSk9XCJvbkFtb3VudENoYW5nZSgpXCI+XG4gICAgICAgICAgPC9tYXQtc2xpZGVyPlxuICAgICAgICAgIDwhLS0gPGlucHV0IHR5cGU9XCJyYW5nZVwiIGNsYXNzPVwiZm9ybS1yYW5nZSBjdXN0b20tcmFuZ2VcIiBbbWluXT1cIm1pbkFtb3VudFwiIFttYXhdPVwibWF4QW1vdW50XCJcbiAgICAgICAgICAgIFtzdGVwXT1cInNjaGVtZURldGFpbHM/LnZhbHVlU3RlcFwiIFsobmdNb2RlbCldPVwibW9udGhseUFtb3VudFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQW1vdW50Q2hhbmdlKClcIj4gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci1sYWJlbHMgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZFwiPuKCuXt7bWluQW1vdW50IHwgbnVtYmVyfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGRcIj7igrl7e21heEFtb3VudCB8IG51bWJlcn19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5kb21fb3B0aW9ucyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCJpbnN0YWxsbWVudE9wdGlvbnMgJiYgaW5zdGFsbG1lbnRPcHRpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24gY3Vyc29yLXBvaW50ZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwib3B0aW9uLnN0YXR1cyA/IHsnYm9yZGVyJzogJzJweCBzb2xpZCBncmV5JywnZm9udC13ZWlnaHQnOidib2xkJ30gOiB7fVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgaW5zdGFsbG1lbnRPcHRpb25zXCIgKGNsaWNrKT1cInNldE1vbnRobHlBbW91bnQob3B0aW9uKVwiPlxuICAgICAgICAgICAgICDigrkge3tvcHRpb24/LnZhbHVlfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2VudGVyIGZ3LWJvbGQgZnMtNCBtb250aGx5LWFtb3VudFwiPuKCuXt7bW9udGhseUFtb3VudCB8IG51bWJlcn19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHNtYWxsIG10LTFcIj5Nb250aGx5IEludmVzdG1lbnQ8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNhbGN1bGF0b3ItYm90dG9tIHB4LTMgbWItNVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2NoZW1lLXJlc3VsdHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0zIGctMlwiPlxuICAgICAgICAgICAgPCEtLSBDb250cmlidXRpb24gQ2FyZCAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTZcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2NhcmQtY29udGFpbmVyJzogdGhpcy5zY2hlbWVEZXRhaWxzPy5zY2hlbWVUeXBlICE9PSAnR09MRF9QUk9URUNUSU9OJ31cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgdGV4dC1jZW50ZXIgaC0xMDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMiBwLW1kLTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGNhbGNfYW1vdW50IGZzLW1kLTVcIj5cbiAgICAgICAgICAgICAgICAgICAg4oK5e3sobW9udGhseUFtb3VudCAqIG1hdHVyaXR5Q291bnQpIHwgbnVtYmVyfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgWW91ciB7e21hdHVyaXR5Q291bnR9fS1Nb250aCBDb250cmlidXRpb25cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFBsdXMgSWNvbiAtIEhpZGRlbiBvbiBtb2JpbGUgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gZC1ub25lIGQtbWQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLnNjaGVtZURldGFpbHM/LnNjaGVtZVR5cGUgIT09ICdHT0xEX1BST1RFQ1RJT04nXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy0zIHRleHQtbXV0ZWRcIj4rPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBCZW5lZml0IENhcmQgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS02IGNhcmQtY29udGFpbmVyXCIgKm5nSWY9XCJ0aGlzLnNjaGVtZURldGFpbHM/LnNjaGVtZVR5cGUgIT09ICdHT0xEX1BST1RFQ1RJT04nXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHRleHQtY2VudGVyIGgtMTAwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTIgcC1tZC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBjYWxjX2Ftb3VudCBmcy1tZC01XCI+XG4gICAgICAgICAgICAgICAgICAgIOKCuXt7YmVuZWZpdEFtb3VudCB8IG51bWJlcn19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIFNjaGVtZSBCZW5lZml0XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBFcXVhbHMgSWNvbiAtIEhpZGRlbiBvbiBtb2JpbGUgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gZC1ub25lIGQtbWQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLnNjaGVtZURldGFpbHM/LnNjaGVtZVR5cGUgIT09ICdHT0xEX1BST1RFQ1RJT04nXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy0zIHRleHQtbXV0ZWRcIj49PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBUb3RhbCBDYXJkIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjYXJkLWNvbnRhaW5lciBjb2wtc20tNiBtdC0yIG10LW1kLTBcIlxuICAgICAgICAgICAgICAqbmdJZj1cInRoaXMuc2NoZW1lRGV0YWlscz8uc2NoZW1lVHlwZSAhPT0gJ0dPTERfUFJPVEVDVElPTidcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgdGV4dC1jZW50ZXIgaC0xMDAgYm9yZGVyLTJcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTIgcC1tZC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBjYWxjX2Ftb3VudCAgZnMtbWQtNSB0ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2NoZW1lRGV0YWlscz8uYmVuZWZpdFR5cGUgIT0gJ0RJU0NPVU5UJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIOKCuXt7KChtb250aGx5QW1vdW50ICogbWF0dXJpdHlDb3VudCkgKyBiZW5lZml0QW1vdW50KSB8IG51bWJlcn19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzY2hlbWVEZXRhaWxzPy5iZW5lZml0VHlwZSA9PT0gJ0RJU0NPVU5UJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIOKCuXt7KG1vbnRobHlBbW91bnQgKiBtYXR1cml0eUNvdW50KSB8IG51bWJlcn19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtd2hpdGUtNTAgc21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgVG90YWwgUmVkZW1wdGlvbiBWYWx1ZVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTZcIiAqbmdJZj1cInRoaXMuc2NoZW1lRGV0YWlscz8uc2NoZW1lVHlwZSA9PT0gJ0dPTERfUFJPVEVDVElPTidcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgdGV4dC1jZW50ZXIgaC0xMDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMiBwLW1kLTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGNhbGNfYW1vdW50IGZzLW1kLTVcIj5cbiAgICAgICAgICAgICAgICAgICAge3twdXJjaGFzZWRHcmFtfX0gZ21zXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIEdvbGQgQWxsb2NhdGlvbiBUb2RheVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJib251cy1tZXNzYWdlIHRleHQtY2VudGVyIG1iLTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAqbmdJZj1cInNjaGVtZURldGFpbHM/LnN0b3JlTGlzdD8ubGVuZ3RoID49MiB8fCBzdGFmZk1lbWJlcnMubGVuZ3RoID49IDIgXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmVfc2VsZWN0aW9uICB3LTUwIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiICpuZ0lmPVwic2NoZW1lRGV0YWlscz8uc3RvcmVMaXN0Py5sZW5ndGggPj0yXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiPiA8c3Bhbj5TZWxlY3RcbiAgICAgICAgICAgICAgICAgIFN0b3JlIDogPC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmUtc2VsZWN0b3JcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwic3RvcmVEcm9wZG93blwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTdG9yZVwiIGNsYXNzPVwiZm9ybS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZ2V0TWV0YWxQcmljZSgpXCI+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBkaXNhYmxlZD5DaG9vc2UgYSBzdG9yZS4uLjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc3RvcmUgb2Ygc3RvcmVzO1wiIFtuZ1ZhbHVlXT1cInN0b3JlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7c3RvcmUubmFtZX19IC0ge3tzdG9yZS5zdG9yZVJlZklkfX1cbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YWZmLXNlbGVjdG9yIHctNTAgIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiICpuZ0lmPVwic3RhZmZNZW1iZXJzLmxlbmd0aCA+PSAyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiPjxzcGFuPlNlbGVjdFxuICAgICAgICAgICAgICAgICAgU3RhZmYgTWVtYmVyIDogPC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwic3RhZmZEcm9wZG93blwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTdGFmZlwiIGNsYXNzPVwiZm9ybS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgZGlzYWJsZWQ+Q2hvb3NlIGEgc3RhZmYgbWVtYmVyLi4uPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc3RhZmYgb2Ygc3RhZmZNZW1iZXJzO1wiIFtuZ1ZhbHVlXT1cInN0YWZmXCI+XG4gICAgICAgICAgICAgICAgICB7e3N0YWZmLm5hbWV9fSAtIHt7c3RhZmYucm9sZSA/IHN0YWZmLnJvbGUgOiAnc3RhZmYnIH19XG4gICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRlcm1zLWFuZC1jb25kaXRpb25cIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInRlcm1zQW5kQ29uZGl0aW9uXCI+SSBhZ3JlZSB0byA8YSAoY2xpY2spPVwic2Nyb2xsRG93bigpXCI+VGVybXMgJlxuICAgICAgICAgICAgICBDb25kaXRpb25zPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJlbnJvbGwtYnRuIHctMTAwIHB5LTMgZnctYm9sZCBtYi0yXCIgW2FwcEJ1dHRvbkVkaXRvcl09XCJlZGl0ID8/IGZhbHNlXCIgc2ltcG9CdXR0b25EaXJlY3RpdmVcbiAgICAgICAgICAgIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgwKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgwKVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxuICAgICAgICAgICAgW2lkXT1cImRhdGE/LmlkK2dldEJ1dHRvbklkKDApXCIgKGNsaWNrKT1cImVucm9sbFNjaGVtZShzY2hlbWVEZXRhaWxzKVwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgIWVucm9sbEJ1dHRvbkxvYWRlclwiPkVucm9sbCBpbiBTY2hlbWU8L3NwYW4+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW5yb2xsQnV0dG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPjxtYXQtc3Bpbm5lciBjbGFzcz1cInctMTAwIGgtMTAwXCI+PC9tYXQtc3Bpbm5lcj48L2Rpdj5cbiAgICAgICAgICAgICAgICBMb2FkaW5nLi4uXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFNjaGVtZSA9PT0gJ2dyb3VwJ1wiIGNsYXNzPVwic2NoZW1lLXJlc3VsdHNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIOKtkCA8aDYgY2xhc3M9XCJtYi0wIGdyb3VwLXJlc3VsdHMtdGl0bGVcIj5Hcm91cCBTY2hlbWUgUmVzdWx0czwvaDY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNhcmQgdGV4dC1jZW50ZXIgcC0zIGJvcmRlciByb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1hbW91bnQgZnctYm9sZCBmcy01XCI+4oK5e3sobW9udGhseUFtb3VudCAqIDExKSB8IG51bWJlcn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1sYWJlbCB0ZXh0LW11dGVkIHNtYWxsXCI+WW91ciBUb3RhbCAxMS1Nb250aCBDb250cmlidXRpb248L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNhcmQgcmVzdWx0LWNhcmQtZ3JvdXAgdGV4dC1jZW50ZXIgcC0zIGJvcmRlciByb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1hbW91bnQgZnctYm9sZCBmcy01XCI+4oK5e3sobW9udGhseUFtb3VudCAqIDExKSB8IG51bWJlcn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1sYWJlbCBzbWFsbCBvcGFjaXR5LTc1XCI+TW9udGhseSBMdWNreSBEcmF3IEFtb3VudDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImVucm9sbC1idG4gdy0xMDAgcHktMyBmdy1ib2xkIG1iLTJcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbYnV0dG9uU3R5bGVdPVwiZ2V0QnV0dG9uU3R5bGUoMClcIiBbYnV0dG9uSWRdPVwiZ2V0QnV0dG9uSWQoMClcIlxuICAgICAgICAgICAgICAgICAgICBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCIgW2lkXT1cImRhdGE/LmlkK2dldEJ1dHRvbklkKDApXCIgW2J1dHRvbkRhdGFdPVwiZ2V0QnV0dG9uRGF0YSgwKVwiPlxuICAgICAgICAgICAgICAgICAgICBFbnJvbGwgaW4gU2NoZW1lXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2ZhcVRlbXBsYXRlPlxuICA8c2VjdGlvbiBjbGFzcz1cImZhcS1zZWN0aW9uIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmYXEtY29udGFpbmVyXCI+XG4gICAgICA8aDEgY2xhc3M9XCJmYXEtdGl0bGVcIj5GcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9uczwvaDE+XG4gICAgICA8cCBjbGFzcz1cImZhcS1zdWJ0aXRsZVwiPkV2ZXJ5dGhpbmcgeW91IG5lZWQgdG8ga25vdyBhYm91dCBvdXIgR3JvdXAgSW52ZXN0bWVudCBTY2hlbWU8L3A+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYXEtbGlzdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYXEtaXRlbVwiICpuZ0Zvcj1cImxldCBmYXEgb2YgZmFxTGlzdCA/PyBbXVwiIChjbGljayk9XCJmYXEuc2hvd0Fuc3dlciA9ICFmYXEuc2hvd0Fuc3dlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhcS1xdWVzdGlvblwiPlxuICAgICAgICAgICAgICA8c3Bhbj57e2ZhcT8ucXVlc3Rpb24gPyBmYXE/LnF1ZXN0aW9uIDogJ04vQSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiZmFxLnNob3dBbnN3ZXJcIj5rZXlib2FyZF9hcnJvd191cDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFmYXEuc2hvd0Fuc3dlclwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmFxLWFuc3dlclwiICpuZ0lmPVwiZmFxLnNob3dBbnN3ZXJcIj5cbiAgICAgICAgICAgICAgPHA+e3tmYXE/LmFuc3dlciA/IGZhcT8uYW5zd2VyIDonTi9BJyB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICN0ZXJtc0FuZENvbmRpdGlvbnM+XG4gIDxzZWN0aW9uIGNsYXNzPVwidGVybXMtc2VjdGlvbiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBpZD1cInRlcm1zQW5kQ29uZGl0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cInRlcm1zLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW5cIj5cbiAgICAgIDxoMSBjbGFzcz1cInRlcm1zLXRpdGxlXCI+VGVybXMgYW5kIENvbmRpdGlvbnM8L2gxPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidGVybXMtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGVybS1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBrZXkgb2YgZ2V0S2V5cyhzY2hlbWVEZXRhaWxzPy50ZXJtc0FuZENvbmRpdGlvbnMpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRlcm1zX2NvdW50XCI+XG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXJtLWhlYWRpbmdcIj57eyBrZXkgfX0uPC9oMz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXJtLXRleHQgbWItMFwiPlxuICAgICAgICAgICAgICB7eyBzY2hlbWVEZXRhaWxzPy50ZXJtc0FuZENvbmRpdGlvbnM/LltrZXldPy5yZXBsYWNlQWxsKCdcXG4nLCcgJykgfHwgJ04vQScgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiaW1wb3J0YW50LW5vdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5JbXBvcnRhbnQ6PC9zdHJvbmc+IFRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRoIHByaW9yIG5vdGljZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIFBhcnRpY2lwYW50cyB3aWxsIGJlIG5vdGlmaWVkIG9mIGFueSBjaGFuZ2VzIHZpYSByZWdpc3RlcmVkIGVtYWlsIG9yIFNNUy4gQ29udGludWVkXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGF0aW9uIGFmdGVyIG5vdGlmaWNhdGlvbiBjb25zdGl0dXRlcyBhY2NlcHRhbmNlIG9mIHJldmlzZWQgdGVybXMuPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNzaG93Q2hhcmdlcz5cbiAgPGRpdiBjbGFzcz1cInBheW1lbnQtZGlhbG9nXCI+XG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXJcIj5cbiAgICAgIDxoMj5QYXltZW50IERldGFpbHM8L2gyPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ0blwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xvc2VEaWFsb2coJ0ZBSUwnKVwiPlxuICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1yb3dcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkluc3RhbGxtZW50IEFtb3VudDo8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYW1vdW50XCI+4oK5e3tzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8uaW5zdGFsbG1lbnRBbW91bnQgP1xuICAgICAgICAgIChzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8uaW5zdGFsbG1lbnRBbW91bnQgfCBudW1iZXIpIDogMCB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1yb3dcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkNvbnZlbmllbmNlIEZlZTo8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYW1vdW50XCI+4oK5e3tzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8uY29udmVuaWVuY2VGZWU/LnZhbHVlID9cbiAgICAgICAgICAoc3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/LmNvbnZlbmllbmNlRmVlPy52YWx1ZSB8IG51bWJlcikgOiAwIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXJvd1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+UGF5bWVudCBTZXJ2aWNlIENoYXJnZXM6PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImFtb3VudFwiPuKCuXt7c3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/LnBheW1lbnRTZXJ2aWNlQ2hhcmdlcz8udmFsdWUgP1xuICAgICAgICAgIChzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8ucGF5bWVudFNlcnZpY2VDaGFyZ2VzPy52YWx1ZSB8IG51bWJlcikgOiAwIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LXJvdyB0b3RhbC1yb3dcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCB0b3RhbC1sYWJlbFwiPlRvdGFsIEFtb3VudDo8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYW1vdW50IHRvdGFsLWFtb3VudFwiPuKCuXt7c3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/LnRvdGFsQW1vdW50ID9cbiAgICAgICAgICAoc3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/LnRvdGFsQW1vdW50IHwgbnVtYmVyKSA6IDAgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctYWN0aW9uc1wiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbnRpbnVlLWJ0blwiIChjbGljayk9XCJjbG9zZURpYWxvZygnU1VDQ0VTUycpXCI+Q29udGludWU8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1lLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3NjaGVtZS1kZXRhaWwvc2NoZW1lLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3NjaGVtZS1kZXRhaWwvc2NoZW1lLWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFJMUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXBGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7QUFVM0QsTUFBTSxPQUFPLHFCQUFxQjtJQVFoQyxZQUFvQixXQUEyQixFQUNyQyxXQUF3QixFQUN4QixjQUFxQyxFQUNyQyxTQUFvQixFQUNYLE1BQWMsRUFDZCxhQUE0QixFQUM1QixjQUE4QjtRQU43QixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDckMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQ3JDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDWCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBYnhDLFNBQUksR0FBNkIsSUFBSSxDQUFDO1FBRXRDLFNBQUksR0FBYSxJQUFJLENBQUM7UUFHL0IsOEJBQXlCLEdBQVksS0FBSyxDQUFDO1FBMEIzQyxXQUFNLEdBQUcsTUFBTSxDQUFBO1FBSWYsV0FBTSxHQUFVLEVBQUUsQ0FBQztRQUNuQixpQkFBWSxHQUFVLEVBQUUsQ0FBQztRQUN6QixjQUFTLEdBQVcsSUFBSSxDQUFDO1FBQ3pCLGNBQVMsR0FBVyxNQUFNLENBQUM7UUFDM0Isa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDMUIsdUJBQWtCLEdBQVUsRUFBRSxDQUFBO1FBRTlCLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRTFCLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBQzFCLG9CQUFlLEdBQVcsQ0FBQyxDQUFBO1FBQzNCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUtuQyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFhcEMsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUE0Q3hCLFlBQU8sR0FBVSxFQUFFLENBQUM7SUEvRmhCLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUM1QyxDQUFDO1lBQ0QsSUFBSSxNQUFNLENBQUMsbUJBQW1CLENBQUM7Z0JBQzdCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUE7UUFDRixnRUFBZ0U7SUFDbEUsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFRO1FBQ2QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBbUJELElBQUksWUFBWTtRQUNkLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFpQixDQUFDO0lBQ25ELENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYTtRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDcEQsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUNELGNBQWMsQ0FBQyxLQUFhO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNuRCxDQUFDO0lBQ0QsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFBO0lBQ3hELENBQUM7SUFHRCxhQUFhLENBQUMsS0FBVztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDdkMsQ0FBQztJQUNELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUMzQyxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtnQkFDMUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDaEMsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvRCxNQUFNLE1BQU0sR0FBd0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3RGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDeEQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsS0FBSyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDakUsQ0FBQztpQkFDSSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNyRCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxZQUFZLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDeEYsQ0FBQztpQkFDSSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxZQUFZLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDeEYsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JGLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxNQUFXO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUM5QyxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUNsQyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLEVBQUUsS0FBSyxDQUFDO1lBQ3JDLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWE7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNqRSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtnQkFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLG1CQUFtQixDQUFDO2dCQUN6RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFBO2dCQUM3SCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztnQkFDL0csSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEYsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO2dCQUN2RSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUE7Z0JBRW5ELElBQUksSUFBSSxDQUFDLHlCQUF5QjtvQkFDaEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxZQUFZLENBQUMsTUFBVztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsaUNBQWlDLEVBQUUsQ0FBQyxDQUFDO1lBQ3hILE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUMvQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xELElBQUksT0FBTyxHQUNYO1lBQ0UsZ0JBQWdCLEVBQUU7Z0JBQ2hCLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTTtnQkFDaEMsYUFBYSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsSUFBSTtnQkFDekMsY0FBYyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTTtnQkFDNUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsS0FBSzthQUM1QztZQUNELFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNwQixVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVU7WUFDOUIscUJBQXFCLEVBQUUsTUFBTSxFQUFFLGNBQWM7WUFDN0MsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDckMsVUFBVSxFQUFFLE1BQU0sRUFBRSxzQkFBc0I7WUFDMUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUM1RSxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ3hGLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUk7WUFDOUYsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSTtZQUNsRixhQUFhLEVBQUUsTUFBTSxFQUFFLGFBQWE7WUFDcEMsZUFBZSxFQUFFLE1BQU0sRUFBRSxlQUFlO1lBQ3hDLFNBQVMsRUFBRSxNQUFNLEVBQUUsYUFBYTtZQUNoQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVU7WUFDOUIsWUFBWSxFQUFFLE1BQU0sRUFBRSxZQUFZO1lBQ2xDLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxxQkFBcUI7WUFDcEQsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLGtCQUFrQjtZQUM5QyxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVU7WUFDOUIsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTO1lBQzVCLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUztZQUM1QixlQUFlLEVBQUUsRUFBRTtTQUNwQixDQUFBO1FBRUQsSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDckQsSUFBSSxFQUFFLENBQUMsUUFBYSxFQUFFLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7b0JBQ2hDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDaEMsQ0FBQzt5QkFDSSxDQUFDO3dCQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7d0JBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFOzRCQUM3RCxVQUFVLEVBQUUsb0JBQW9CO3lCQUNqQyxDQUFDLENBQUE7d0JBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTs0QkFDbEQsSUFBSSxHQUFHLEtBQUssU0FBUztnQ0FDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDbEMsQ0FBQyxDQUFDLENBQUE7b0JBQ0osQ0FBQztnQkFDSCxDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNiLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7b0JBQ2hDLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztvQkFFMUIsQ0FBQztnQkFDSCxDQUFDO2FBQ0YsQ0FBQyxDQUFBO1FBQ0osQ0FBQzthQUNJLENBQUM7WUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUNELFdBQVcsQ0FBQyxNQUEwQjtRQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQVk7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN0RCxJQUFJLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDdEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDL0MsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFLEdBQUcsQ0FBQztTQUMzQixDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsZUFBZSxDQUFDLFNBQWlCO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDaEYsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQTtRQUNqRixJQUFJLENBQUMsT0FBTztZQUNWLE9BQU07UUFFUixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUM3RCxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFFM0IsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztvQkFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDbkYsT0FBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUM7SUFDbEMsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDeEQsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQzsrR0FwUFUscUJBQXFCO21HQUFyQixxQkFBcUIsNkxBSHJCLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyw0SkM1QnhDLG15cEJBaVpjLHVoUkR2WGtCLFlBQVksaXBCQUFFLGVBQWUsK0JBQUUsMEJBQTBCLDBHQUFFLFdBQVcsMnJDQUFFLG1CQUFtQiw2SUFBRSxPQUFPLDJJQUFFLHFCQUFxQix5S0FBRSxrQkFBa0IsK0tBQUUsd0JBQXdCLHFJQUFFLFdBQVcsd1dBQUUsU0FBUyxpTUFBRSxlQUFlOzs0RkFLck8scUJBQXFCO2tCQVJqQyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLDBCQUEwQixFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsYUFFdE8sQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDO3VQQUk3QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDc0MsbUJBQW1CO3NCQUE5RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBZ0UxQyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNjaGVtZURldGFpbE1vZGFsIH0gZnJvbSAnLi9zY2hlbWUtZGV0YWlsLm1vZGFsJztcclxuaW1wb3J0IHsgQ2RrRHJhZ1BsYWNlaG9sZGVyIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9kcmFnLWRyb3BcIjtcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvdGV4dC1lZGl0b3IvdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvc3BhY2luZy1ob3Jpem9udGFsLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IExheU91dE1vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQnV0dG9uRWRpdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1lZGl0b3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXJcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IE1hdFNsaWRlciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXJcIjtcclxuaW1wb3J0IHsgTWF0U2xpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tc2NoZW1lLWRldGFpbCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ2RrRHJhZ1BsYWNlaG9sZGVyLCBDb21tb25Nb2R1bGUsIE1hdERpYWxvZ01vZHVsZSwgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUsIEZvcm1zTW9kdWxlLCBUZXh0RWRpdG9yQ29tcG9uZW50LCBNYXRJY29uLCBCdXR0b25FZGl0b3JEaXJlY3RpdmUsIE1hdFByb2dyZXNzU3Bpbm5lciwgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlLCBUb2FzdE1vZHVsZSwgTWF0U2xpZGVyLCBNYXRTbGlkZXJNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2hlbWUtZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtNYXREaWFsb2csIE1lc3NhZ2VTZXJ2aWNlXSxcclxuICBzdHlsZVVybDogJy4vc2NoZW1lLWRldGFpbC5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2NoZW1lRGV0YWlsQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBkYXRhOiBTY2hlbWVEZXRhaWxNb2RhbCB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGluZGV4PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuID0gdHJ1ZTtcclxuICBAVmlld0NoaWxkKCdzaG93Q2hhcmdlcycsIHsgc3RhdGljOiB0cnVlIH0pIHNob3dDaGFyZ2VzVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgZGlhbG9nUmVmITogTWF0RGlhbG9nUmVmPGFueT47IC8vIHNhdmUgdGhlIGRpYWxvZyByZWZcclxuICBzY3JvbGxUb1Rlcm1zQW5kQ29uZGl0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aXZlUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1hdERpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmdldFNjcmVlblNpemUoKTtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICB0aGlzLmFjdGl2ZVJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICBpZiAocGFyYW1zWydzY2hlbWVJZCddKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTY2hlbWVEZXRhaWxzKHBhcmFtc1snc2NoZW1lSWQnXSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHBhcmFtc1sndGVybXNBbmRDb25kaXRpb24nXSlcclxuICAgICAgICB0aGlzLnNjcm9sbFRvVGVybXNBbmRDb25kaXRpb24gPSB0cnVlO1xyXG4gICAgfSlcclxuICAgIC8vIHRoaXMuZ2V0U2NoZW1lRGV0YWlscyhcIjg0YTgzMDRmLTg0YzUtMTFmMC1iMGJkLWVmZTZhOTYyNmI5MlwiKVxyXG4gIH1cclxuICBnZXRLZXlzKG9iajogYW55KTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaiA/PyB7fSk7XHJcbiAgfVxyXG4gIE9iamVjdCA9IE9iamVjdFxyXG4gIHN0eWxlczogYW55O1xyXG4gIHNlbGVjdGVkU3RvcmU6IGFueTtcclxuICBzZWxlY3RlZFN0YWZmOiBhbnk7XHJcbiAgc3RvcmVzOiBhbnlbXSA9IFtdO1xyXG4gIHN0YWZmTWVtYmVyczogYW55W10gPSBbXTtcclxuICBtaW5BbW91bnQ6IG51bWJlciA9IDEwMDA7XHJcbiAgbWF4QW1vdW50OiBudW1iZXIgPSAxMDAwMDA7XHJcbiAgbW9udGhseUFtb3VudDogbnVtYmVyID0gMDtcclxuICBpbnN0YWxsbWVudE9wdGlvbnM6IGFueVtdID0gW11cclxuICBzY2hlbWVEZXRhaWxzOiBhbnk7XHJcbiAgbWF0dXJpdHlDb3VudDogbnVtYmVyID0gMTA7XHJcbiAgYmVuZWZpdEFtb3VudDogbnVtYmVyID0gMDtcclxuICBtZXRhbFByaWNlOiBhbnk7XHJcbiAgcHVyY2hhc2VkR3JhbTogbnVtYmVyID0gMDtcclxuICBjdXJyZW50R29sZFJhdGU6IG51bWJlciA9IDBcclxuICB0ZXJtc0FuZENvbmRpdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBnZXQgc3R5bGVzTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZXM/LmxheW91dCB9IGFzIExheU91dE1vZGVsO1xyXG4gIH1cclxuICBlbnJvbGxCdXR0b25Mb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBnZXRCdXR0b25EYXRhKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/LmFjdGlvbj8uYnV0dG9uc1tpbmRleF0/LmNvbnRlbnQ7XHJcbiAgfVxyXG4gIGdldEJ1dHRvbklkKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/LmFjdGlvbj8uYnV0dG9uc1tpbmRleF0/LmlkID8/IFwiXCI7XHJcbiAgfVxyXG4gIGdldEJ1dHRvblN0eWxlKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/LmFjdGlvbj8uYnV0dG9uc1tpbmRleF0/LnN0eWxlcztcclxuICB9XHJcbiAgZ2V0IGdldElucHV0VGV4dCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/LmNvbnRlbnQ/LmlucHV0VGV4dD8uWzBdPy52YWx1ZSA/PyBcIlwiXHJcbiAgfVxyXG4gIHNjcmVlbldpZHRoOiBudW1iZXIgPSAwO1xyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIGdldFNjcmVlblNpemUoZXZlbnQ/OiBhbnkpIHtcclxuICAgIHRoaXMuc2NyZWVuV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICB9XHJcbiAgZ2V0U3RhZmZMaXN0KCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRBbGxTdGFmZkxpc3QoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnN0YWZmTWVtYmVycyA9IHJlcz8uZGF0YT8uZGF0YSA/IHJlcz8uZGF0YT8uZGF0YSA6IFtdXHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5zdGFmZk1lbWJlcnMpXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBvbkFtb3VudENoYW5nZSgpIHtcclxuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnNjaGVtZURldGFpbHMuamV3ZWxsZXJCZW5lZml0KS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHZhbHVlczogUmVjb3JkPHN0cmluZywgYW55PiA9IE9iamVjdC52YWx1ZXModGhpcy5zY2hlbWVEZXRhaWxzLmpld2VsbGVyQmVuZWZpdCk7XHJcbiAgICAgIGNvbnN0IGhpZ2hlc3RWYWx1ZSA9IE1hdGgubWF4KC4uLk9iamVjdC52YWx1ZXModmFsdWVzKSk7XHJcbiAgICAgIGlmICh0aGlzLnNjaGVtZURldGFpbHMuYmVuZWZpdFR5cGUgPT09IFwiUEVSQ0VOVF9PTl9NT05USFwiKSB7XHJcbiAgICAgICAgdGhpcy5iZW5lZml0QW1vdW50ID0gKHRoaXMubW9udGhseUFtb3VudCAqIGhpZ2hlc3RWYWx1ZSkgLyAxMDA7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5zY2hlbWVEZXRhaWxzLmJlbmVmaXRUeXBlID09PSBcIlNDSEVNRVwiKSB7XHJcbiAgICAgICAgdGhpcy5iZW5lZml0QW1vdW50ID0gKCh0aGlzLm1vbnRobHlBbW91bnQgKiB0aGlzLm1hdHVyaXR5Q291bnQpICogaGlnaGVzdFZhbHVlKSAvIDEwMDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnNjaGVtZURldGFpbHMuYmVuZWZpdFR5cGUgPT09IFwiRElTQ09VTlRcIikge1xyXG4gICAgICAgIHRoaXMuYmVuZWZpdEFtb3VudCA9ICgodGhpcy5tb250aGx5QW1vdW50ICogdGhpcy5tYXR1cml0eUNvdW50KSAqIGhpZ2hlc3RWYWx1ZSkgLyAxMDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMucHVyY2hhc2VkR3JhbSA9IE51bWJlcigodGhpcy5tb250aGx5QW1vdW50IC8gdGhpcy5jdXJyZW50R29sZFJhdGUpLnRvRml4ZWQoMikpXHJcbiAgfVxyXG4gIHNldE1vbnRobHlBbW91bnQoYW1vdW50OiBhbnkpIHtcclxuICAgIHRoaXMuaW5zdGFsbG1lbnRPcHRpb25zLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XHJcbiAgICAgIGlmIChvcHRpb24udmFsdWUgPT0gYW1vdW50Py52YWx1ZSkge1xyXG4gICAgICAgIG9wdGlvbi5zdGF0dXMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubW9udGhseUFtb3VudCA9IGFtb3VudD8udmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgb3B0aW9uLnN0YXR1cyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5vbkFtb3VudENoYW5nZSgpO1xyXG4gIH1cclxuICBmYXFMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGdldFNjaGVtZURldGFpbHMoc2NoZW1lSWQ6IGFueSkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRTY2hlbWVEZXRhaWxzKHNjaGVtZUlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmRhdGEpIHtcclxuICAgICAgICB0aGlzLmdldFN0YWZmTGlzdCgpO1xyXG4gICAgICAgIHRoaXMuc2NoZW1lRGV0YWlscyA9IHJlcy5kYXRhO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuc2NoZW1lRGV0YWlscylcclxuICAgICAgICB0aGlzLm1pbkFtb3VudCA9IHRoaXMuc2NoZW1lRGV0YWlscz8ubWluSW5zdGFsbG1lbnRWYWx1ZTtcclxuICAgICAgICB0aGlzLm1heEFtb3VudCA9IHRoaXMuc2NoZW1lRGV0YWlscz8ubWF4SW5zdGFsbG1lbnRWYWx1ZTtcclxuICAgICAgICB0aGlzLm1vbnRobHlBbW91bnQgPSB0aGlzLm1pbkFtb3VudDtcclxuICAgICAgICB0aGlzLnNjaGVtZURldGFpbHM/LnN1Z2dlc3RlZFZhbHVlcz8uZm9yRWFjaCgoc2NoZW1lOiBhbnkpID0+IHRoaXMuaW5zdGFsbG1lbnRPcHRpb25zLnB1c2goeyBzdGF0dXM6IGZhbHNlLCB2YWx1ZTogc2NoZW1lIH0pKVxyXG4gICAgICAgIHRoaXMubWF0dXJpdHlDb3VudCA9IHRoaXMuc2NoZW1lRGV0YWlscz8ubWF0dXJpdHlDb3VudCA/IHRoaXMuc2NoZW1lRGV0YWlscy5tYXR1cml0eUNvdW50IDogdGhpcy5tYXR1cml0eUNvdW50O1xyXG4gICAgICAgIHRoaXMuc3RvcmVzID0gdGhpcy5zY2hlbWVEZXRhaWxzPy5zdG9yZUxpc3QgPyB0aGlzLnNjaGVtZURldGFpbHMuc3RvcmVMaXN0IDogW107XHJcbiAgICAgICAgdGhpcy5nZXRNZXRhbFByaWNlKCk7XHJcbiAgICAgICAgdGhpcy5mYXFMaXN0ID0gdGhpcy5zY2hlbWVEZXRhaWxzPy5mYXFzID8gdGhpcy5zY2hlbWVEZXRhaWxzPy5mYXFzIDogW11cclxuICAgICAgICB0aGlzLmZhcUxpc3QuZm9yRWFjaChmYXEgPT4gZmFxLnNob3dBbnN3ZXIgPSBmYWxzZSlcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsVG9UZXJtc0FuZENvbmRpdGlvbilcclxuICAgICAgICAgIHRoaXMuc2Nyb2xsRG93bigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZW5yb2xsU2NoZW1lKHNjaGVtZTogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMudGVybXNBbmRDb25kaXRpb24pIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ1Rlcm1zICYgQ29uZGl0aW9uJywgZGV0YWlsOiAnUGxlYXNlIGFjY2VwdCB0ZXJtcyAmIGNvbmRpdGlvbicgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVucm9sbEJ1dHRvbkxvYWRlciA9IHRydWU7XHJcbiAgICBjb25zdCB1c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgbGV0IHBheWxvYWQgPVxyXG4gICAge1xyXG4gICAgICB1c2VyQmFzaWNEZXRhaWxzOiB7XHJcbiAgICAgICAgY3VzdG9tZXJfaWQ6IHVzZXJEZXRhaWxzPy51c2VySWQsXHJcbiAgICAgICAgY3VzdG9tZXJfbmFtZTogdXNlckRldGFpbHM/LmNvbnRhY3Q/Lm5hbWUsXHJcbiAgICAgICAgY3VzdG9tZXJfcGhvbmU6IHVzZXJEZXRhaWxzPy5jb250YWN0Py5tb2JpbGUsXHJcbiAgICAgICAgY3VzdG9tZXJfZW1haWw6IHVzZXJEZXRhaWxzPy5jb250YWN0Py5lbWFpbCxcclxuICAgICAgfSxcclxuICAgICAgc2NoZW1lSWQ6IHNjaGVtZT8uaWQsXHJcbiAgICAgIHNjaGVtZU5hbWU6IHNjaGVtZT8uc2NoZW1lTmFtZSxcclxuICAgICAgZWFybHlSZWRlbXB0aW9uQ2hhcmdlOiBzY2hlbWU/LmVucm9sbG1lbnRGZWVzLFxyXG4gICAgICBpbnN0YWxsbWVudEFtb3VudDogdGhpcy5tb250aGx5QW1vdW50LFxyXG4gICAgICBzdG9yZVJlZklkOiBzY2hlbWU/LnNjaGVtZVJlcHJlc2VudGF0aXZlSWQsXHJcbiAgICAgIHN0b3JlSWQ6IHRoaXMuc3RvcmVzLmxlbmd0aCA8IDIgPyB0aGlzLnN0b3Jlc1swXS5pZCA6IHRoaXMuc2VsZWN0ZWRTdG9yZT8uaWQsXHJcbiAgICAgIHN0YWZmSWQ6IHRoaXMuc3RhZmZNZW1iZXJzLmxlbmd0aCA8IDIgPyB0aGlzLnN0YWZmTWVtYmVyc1swXS5pZCA6IHRoaXMuc2VsZWN0ZWRTdGFmZj8uaWQsXHJcbiAgICAgIHN0YWZmTmFtZTogdGhpcy5zdGFmZk1lbWJlcnMubGVuZ3RoIDwgMiA/IHRoaXMuc3RhZmZNZW1iZXJzWzBdLm5hbWUgOiB0aGlzLnNlbGVjdGVkU3RhZmY/Lm5hbWUsXHJcbiAgICAgIHN0b3JlTmFtZTogdGhpcy5zdG9yZXMubGVuZ3RoIDwgMiA/IHRoaXMuc3RvcmVzWzBdLm5hbWUgOiB0aGlzLnNlbGVjdGVkU3RvcmU/Lm5hbWUsXHJcbiAgICAgIG1hdHVyaXR5Q291bnQ6IHNjaGVtZT8ubWF0dXJpdHlDb3VudCxcclxuICAgICAgamV3ZWxsZXJCZW5lZml0OiBzY2hlbWU/Lmpld2VsbGVyQmVuZWZpdCxcclxuICAgICAgZHVlTW9udGhzOiBzY2hlbWU/Lm1hdHVyaXR5Q291bnQsXHJcbiAgICAgIGJ1c2luZXNzSWQ6IHNjaGVtZT8uYnVzaW5lc3NJZCxcclxuICAgICAgYnVzaW5lc3NOYW1lOiBzY2hlbWU/LmJ1c2luZXNzTmFtZSxcclxuICAgICAgZW5hYmxlRWFybHlSZWRlbXB0aW9uOiBzY2hlbWU/LmVuYWJsZUVhcmx5UmVkZW1wdGlvbixcclxuICAgICAgcmVkZW1wdGlvblNsYWJMaXN0OiBzY2hlbWU/LnJlZGVtcHRpb25TbGFiTGlzdCxcclxuICAgICAgc2NoZW1lVHlwZTogc2NoZW1lPy5zY2hlbWVUeXBlLFxyXG4gICAgICBtZXRhbFR5cGU6IHNjaGVtZT8ubWV0YWxUeXBlLFxyXG4gICAgICBrYXJhdFR5cGU6IHNjaGVtZT8ua2FyYXRUeXBlLFxyXG4gICAgICBjdXN0b21lckFjY291bnQ6IFwiXCJcclxuICAgIH1cclxuXHJcbiAgICBpZiAodXNlckRldGFpbHMgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmVucm9sbFNjaGVtZShwYXlsb2FkLCB0cnVlKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmVucm9sbEJ1dHRvbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuY2FzaGZyZWVSZXNwb25zZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGludWVQYXltZW50KHBheWxvYWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVDaGFyZ2VzID0gcmVzcG9uc2UuZGF0YS5jYXJ0O1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMubWF0RGlhbG9nLm9wZW4odGhpcy5zaG93Q2hhcmdlc1RlbXBsYXRlLCB7XHJcbiAgICAgICAgICAgICAgcGFuZWxDbGFzczogJ3Nob3ctY2hhcmdlcy1jbGFzcydcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcyA9PT0gJ1NVQ0NFU1MnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250aW51ZVBheW1lbnQocGF5bG9hZCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5lbnJvbGxCdXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIGlmIChlcnI/LmVycm9yPy5tZXNzYWdlKSB7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9sb2dpbiddLCB7IHF1ZXJ5UGFyYW1zOiB7IHNjaGVtZURldGFpbDogJ3NjaGVtZS1kZXRhaWwnIH0gfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNsb3NlRGlhbG9nKGFjdGlvbjogJ1NVQ0NFU1MnIHwgJ0ZBSUwnKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShhY3Rpb24pO1xyXG4gIH1cclxuICBzdG9yZUNoYXJnZXM6IGFueTtcclxuICBjb250aW51ZVBheW1lbnQocGF5bG9hZDogYW55KSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmVucm9sbFNjaGVtZShwYXlsb2FkLCBmYWxzZSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncGFzc2Jvb2tPcmRlcklkJywgcmVzcG9uc2UuZGF0YS5vcmRlcklkKTtcclxuICAgICAgICB0aGlzLm9wZW5DYXNoZnJlZVNkayhyZXNwb25zZS5kYXRhLnNlc3Npb25JZClcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7IH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIG9wZW5DYXNoZnJlZVNkayhzZXNzaW9uSWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmNhc2hGcmVlRXZlbnQuZW1pdCh7IGRhdGE6IHsgb3JkZXJTaWduYXR1cmU6IHNlc3Npb25JZCB9IH0pXHJcbiAgfVxyXG5cclxuICBnZXRNZXRhbFByaWNlKCkge1xyXG4gICAgbGV0IHN0b3JlSWQgPSB0aGlzLnN0b3Jlcy5sZW5ndGggPCAyID8gdGhpcy5zdG9yZXNbMF0uaWQgOiB0aGlzLnNlbGVjdGVkU3RvcmU/LmlkXHJcbiAgICBpZiAoIXN0b3JlSWQpXHJcbiAgICAgIHJldHVyblxyXG5cclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0TWV0YWxQcmljZShzdG9yZUlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubWV0YWxQcmljZSA9IHJlcy5kYXRhO1xyXG5cclxuICAgICAgZm9yIChsZXQgZ29sZCBvZiB0aGlzLm1ldGFsUHJpY2U/LnByaWNlRGF0YSA/PyBbXSkge1xyXG4gICAgICAgIGlmIChnb2xkLmthcmF0cyA9PT0gdGhpcy5zY2hlbWVEZXRhaWxzLmthcmF0VHlwZSkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50R29sZFJhdGUgPSBnb2xkLnByaWNlO1xyXG4gICAgICAgICAgdGhpcy5wdXJjaGFzZWRHcmFtID0gTnVtYmVyKCh0aGlzLm1vbnRobHlBbW91bnQgLyB0aGlzLmN1cnJlbnRHb2xkUmF0ZSkudG9GaXhlZCgyKSlcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzU7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxEb3duKCkge1xyXG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVybXNBbmRDb25kaXRpb24nKTtcclxuICAgIGlmIChlbCkge1xyXG4gICAgICBlbC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiIsIjxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgW2Jhc2VaSW5kZXhdPVwiMTAwMDAwMDAwMDBcIiBbYXV0b1pJbmRleF09XCJ0cnVlXCJcclxuICBbc2hvd1RyYW5zZm9ybU9wdGlvbnNdPVwiaXNNb2JpbGUgPyAndHJhbnNsYXRlWSgtMTAwJSknIDogJydcIj48L3AtdG9hc3Q+XHJcblxyXG5cclxuPHNlY3Rpb24gY2xhc3M9XCJtYWluX3NlY3Rpb24gdy0xMDBcIiBbc3BhY2luZ0hvcml6b250YWxdPVwic3R5bGVzTGF5b3V0XCIgW2lkXT1cImRhdGE/LmlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInBsYW5fZGVzY19zZWN0aW9uXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGxhbkRlc2NUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJhYm91dF9wbGFuX3NlY3Rpb24gcC01IGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFib3V0VXNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJzY2hlbWVfY2FsY3VsYXRvcl9zZWN0aW9uIHAtNSBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzY2hlbWVDYWxjdWxhdG9yXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInJlZGVlbV9hbnNfc2VjdGlvblwiICpuZ0lmPVwic2NoZW1lRGV0YWlscz8ucmVkZWVtRGVzYy5sZW5ndGggPiAwXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVkZWVtSW5mb1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwic2NoZW1lX3dvcmtfc2VjdGlvblwiICpuZ0lmPVwic2NoZW1lRGV0YWlscz8uc2NoZW1lV29ya2luZ0Rlc2MgIT0ge30gJiYgc2NoZW1lRGV0YWlsc1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNjaGVtZVdvcmtTZWN0aW9uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImZhcV9zZWN0aW9uIHAtNVwiICpuZ0lmPVwiZmFxTGlzdC5sZW5ndGggPiAwXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmFxVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwidGVybXNfY29uZGl0aW9uX3NlY3Rpb24gcC01XCJcclxuICAgICpuZ0lmPVwic2NoZW1lRGV0YWlscz8udGVybXNBbmRDb25kaXRpb25zICYmIHNjaGVtZURldGFpbHM/LnRlcm1zQW5kQ29uZGl0aW9ucyAhPSB7fVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlcm1zQW5kQ29uZGl0aW9uc1wiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbjxuZy10ZW1wbGF0ZSAjcmVkZWVtSW5mb1NlY3Rpb24+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJmYXEtc2VjdGlvbiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmYXEtY29udGFpbmVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cImZhcS10aXRsZVwiPkhvdyB0byByZWRlZW0/PC9oMT5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYXEtbGlzdFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlZGVlbV9pbmZvX3NlY3Rpb25cIiAqbmdJZj1cInNjaGVtZURldGFpbHM/LnJlZGVlbURlc2NcIj5cclxuICAgICAgICAgICAge3tzY2hlbWVEZXRhaWxzPy5yZWRlZW1EZXNjIHx8ICdOL0EnfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNzY2hlbWVXb3JrU2VjdGlvbj5cclxuICA8c2VjdGlvbiBjbGFzcz1cImZhcS1zZWN0aW9uIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZhcS1jb250YWluZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwiZmFxLXRpdGxlXCI+SG93IERvZXMgdGhpcyBwbGFuIHdvcms/PC9oMT5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYXEtbGlzdFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFuc19zZWN0aW9uXCIgKm5nRm9yPVwibGV0IGZhcSBvZiBnZXRLZXlzKHNjaGVtZURldGFpbHM/LnNjaGVtZVdvcmtpbmdEZXNjKTtsZXQgaSA9aW5kZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCAgYWxpZ24taXRlbXMtc3RhcnQgZ2FwLTMgZi0xNlwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7ZmFxfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3sgc2NoZW1lRGV0YWlscz8uc2NoZW1lV29ya2luZ0Rlc2M/LltmYXFdPy5yZXBsYWNlQWxsKCdcXG4nLCcgJykgfHwgJ04vQScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3BsYW5EZXNjVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImhlcm8tc2VjdGlvbiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIGctNVwiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY29sLW1kLTYnOiBzY2hlbWVEZXRhaWxzPy5pbWdVcmxzWzBdLCAnY29sLTEyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlcic6ICFzY2hlbWVEZXRhaWxzPy5pbWdVcmxzWzBdfVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlcm8tY29udGVudFwiPlxyXG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJoZXJvLXRpdGxlIG1iLTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS1oaWdobGlnaHRcIj57e3NjaGVtZURldGFpbHM/LnNjaGVtZU5hbWUgPyBzY2hlbWVEZXRhaWxzPy5zY2hlbWVOYW1lIDonTi9BJ319PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gxPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImhlcm8tZGVzY3JpcHRpb24gbWItNFwiPlxyXG4gICAgICAgICAgICAgIHt7c2NoZW1lRGV0YWlscz8uZGVzYyA/IHNjaGVtZURldGFpbHM/LmRlc2MgOidOL0EnfX1cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02XCIgKm5nSWY9XCJzY2hlbWVEZXRhaWxzPy5pbWdVcmxzWzBdXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVyby1pbWFnZVwiPlxyXG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwic2NoZW1lRGV0YWlscz8uaW1nVXJscyA/IHNjaGVtZURldGFpbHM/LmltZ1VybHNbMF0gOidOL0EnXCIgYWx0PVwiUGVhcmwgSmV3ZWxyeVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJqZXdlbGxlcnktaW1nIHctMTAwXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNhYm91dFVzVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cInRleHRfaGVhZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwiZ2V0SW5wdXRUZXh0XCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGVzY190ZXh0XCI+XHJcbiAgICAgIHt7c2NoZW1lRGV0YWlscz8uYWJvdXR9fVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjc2NoZW1lQ2FsY3VsYXRvcj5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhbGNfaGVhZGVyIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICA8c3Bhbj5DYWxjdWxhdGUgWW91ciBSZXR1cm5zPC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsY19kZXNjXCI+XHJcbiAgICAgICAgU2VlIGhvdyB5b3VyIHNhdmluZ3MgZ3JvdyB3aXRoIG91ciBzbWFydCBpbnZlc3RtZW50IHNjaGVtZXMuIGNob29zZSB5b3VyIHByZWZlcnJlZCBzY2hlbWUgYW5kIGRpc2NvdmVyXHJcbiAgICAgICAgeW91ciBwb3RlbnRpYWwgcmV0dXJucy5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYWxjdWxhdG9yX3NlY3Rpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImdvbGQtcHVyaXR5XCJcclxuICAgICAgICAqbmdJZj1cInNjaGVtZURldGFpbHM/LnNjaGVtZVR5cGUgPT09ICdHT0xEX1BST1RFQ1RJT04nICYmIChzdG9yZXMubGVuZ3RoID09IDEgfHwgc2VsZWN0ZWRTdG9yZT8uaWQpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInB1cml0eVwiICpuZ0Zvcj1cImxldCBnb2xkIG9mIG1ldGFsUHJpY2U/LnByaWNlRGF0YSA/PyBbXVwiPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2pld2VsbGVycy5zdGFnZS5wYXNzYm9va2FwcC5pbi9hc3NldHMvaW1hZ2VzL2dvbGQtc2NoZW1lLzE4a19nb2xkX3BpYy5zdmdcIiBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImdvbGQ/LmthcmF0cyA9PT0gJzE4X2snXCI+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vamV3ZWxsZXJzLnN0YWdlLnBhc3Nib29rYXBwLmluL2Fzc2V0cy9pbWFnZXMvZ29sZC1zY2hlbWUvMjRrX2dvbGRfcGljLnN2Z1wiIGFsdD1cIlwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZ29sZD8ua2FyYXRzID09PSAnMjRfaydcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9qZXdlbGxlcnMuc3RhZ2UucGFzc2Jvb2thcHAuaW4vYXNzZXRzL2ltYWdlcy9nb2xkLXNjaGVtZS8yMmtfZ29sZF9waWMuc3ZnXCIgYWx0PVwiXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJnb2xkPy5rYXJhdHMgPT09ICcyMl9rJ1wiPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGRpdj57e2dvbGQ/LmthcmF0cz8ucmVwbGFjZUFsbCgnXycsIFwiXCIpfX0gR29sZCBQdXJpdHk8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvbGQtcHJpY2VcIj7igrl7e2dvbGQucHJpY2V9fTwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRlciBtYi0zIHB4LTMgbW9udGhseS1zY2hlbWVcIj5cclxuICAgICAgICA8aDYgY2xhc3M9XCJtYi0wIHN1Yi1oZWFkZXItdGV4dFwiPlNlbGVjdCBZb3VyIE1vbnRobHkgSW52ZXN0bWVudCBBbW91bnQ8L2g2PlxyXG4gICAgICAgIDxwIGNsYXNzPVwiZW5yb2xsZWQtZ3JhbVwiXHJcbiAgICAgICAgICAqbmdJZj1cInNjaGVtZURldGFpbHM/LnNjaGVtZVR5cGUgPT09ICdHT0xEX1BST1RFQ1RJT04nICYmIChzdG9yZXMubGVuZ3RoID09IDEgfHwgc2VsZWN0ZWRTdG9yZT8uaWQpXCI+XHJcbiAgICAgICAgICB7e3B1cmNoYXNlZEdyYW19fSBnbXM8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhbGN1bGF0ZS1zbGlkZXIgbWItNCBweC0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci1jb250YWluZXIgcG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgIDxtYXQtc2xpZGVyIFttaW5dPVwibWluQW1vdW50XCIgW21heF09XCJtYXhBbW91bnRcIiBbc3RlcF09XCJzY2hlbWVEZXRhaWxzPy52YWx1ZVN0ZXBcIiBjbGFzcz1cInctMTAwIHBhbGUtc2xpZGVyXCJcclxuICAgICAgICAgICAgW3N0eWxlLi0tbWRjLXNsaWRlci1oYW5kbGUtY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgICAgIFtzdHlsZS4tLW1kYy1zbGlkZXItZm9jdXMtaGFuZGxlLWNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICBbc3R5bGUuLS1tZGMtc2xpZGVyLWhvdmVyLWhhbmRsZS1jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAgICAgW3N0eWxlLi0tbWRjLXNsaWRlci1hY3RpdmUtdHJhY2stY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgICAgIFtzdHlsZS4tLW1kYy1zbGlkZXItd2l0aC10aWNrLW1hcmtzLWFjdGl2ZS1jb250YWluZXItY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgICAgIFtzdHlsZS4tLW1hdC1zbGlkZXItcmlwcGxlLWNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICBbc3R5bGUuLS1tYXQtc2xpZGVyLXZhbHVlLWluZGljYXRvci1jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRTbGlkZXJUaHVtYiBbKG5nTW9kZWwpXT1cIm1vbnRobHlBbW91bnRcIiAobmdNb2RlbENoYW5nZSk9XCJvbkFtb3VudENoYW5nZSgpXCI+XHJcbiAgICAgICAgICA8L21hdC1zbGlkZXI+XHJcbiAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cImZvcm0tcmFuZ2UgY3VzdG9tLXJhbmdlXCIgW21pbl09XCJtaW5BbW91bnRcIiBbbWF4XT1cIm1heEFtb3VudFwiXHJcbiAgICAgICAgICAgIFtzdGVwXT1cInNjaGVtZURldGFpbHM/LnZhbHVlU3RlcFwiIFsobmdNb2RlbCldPVwibW9udGhseUFtb3VudFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQW1vdW50Q2hhbmdlKClcIj4gLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyLWxhYmVscyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMlwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGRcIj7igrl7e21pbkFtb3VudCB8IG51bWJlcn19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGRcIj7igrl7e21heEFtb3VudCB8IG51bWJlcn19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZG9tX29wdGlvbnMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTMgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJpbnN0YWxsbWVudE9wdGlvbnMgJiYgaW5zdGFsbG1lbnRPcHRpb25zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbiBjdXJzb3ItcG9pbnRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIm9wdGlvbi5zdGF0dXMgPyB7J2JvcmRlcic6ICcycHggc29saWQgZ3JleScsJ2ZvbnQtd2VpZ2h0JzonYm9sZCd9IDoge31cIlxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgaW5zdGFsbG1lbnRPcHRpb25zXCIgKGNsaWNrKT1cInNldE1vbnRobHlBbW91bnQob3B0aW9uKVwiPlxyXG4gICAgICAgICAgICAgIOKCuSB7e29wdGlvbj8udmFsdWV9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1jZW50ZXIgZnctYm9sZCBmcy00IG1vbnRobHktYW1vdW50XCI+4oK5e3ttb250aGx5QW1vdW50IHwgbnVtYmVyfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHNtYWxsIG10LTFcIj5Nb250aGx5IEludmVzdG1lbnQ8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsY3VsYXRvci1ib3R0b20gcHgtMyBtYi01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNjaGVtZS1yZXN1bHRzXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0zIGctMlwiPlxyXG4gICAgICAgICAgICA8IS0tIENvbnRyaWJ1dGlvbiBDYXJkIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS02XCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2NhcmQtY29udGFpbmVyJzogdGhpcy5zY2hlbWVEZXRhaWxzPy5zY2hlbWVUeXBlICE9PSAnR09MRF9QUk9URUNUSU9OJ31cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCB0ZXh0LWNlbnRlciBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTIgcC1tZC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGNhbGNfYW1vdW50IGZzLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICDigrl7eyhtb250aGx5QW1vdW50ICogbWF0dXJpdHlDb3VudCkgfCBudW1iZXJ9fVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICBZb3VyIHt7bWF0dXJpdHlDb3VudH19LU1vbnRoIENvbnRyaWJ1dGlvblxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gUGx1cyBJY29uIC0gSGlkZGVuIG9uIG1vYmlsZSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIGQtbm9uZSBkLW1kLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLnNjaGVtZURldGFpbHM/LnNjaGVtZVR5cGUgIT09ICdHT0xEX1BST1RFQ1RJT04nXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTMgdGV4dC1tdXRlZFwiPis8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEJlbmVmaXQgQ2FyZCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNiBjYXJkLWNvbnRhaW5lclwiICpuZ0lmPVwidGhpcy5zY2hlbWVEZXRhaWxzPy5zY2hlbWVUeXBlICE9PSAnR09MRF9QUk9URUNUSU9OJ1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHRleHQtY2VudGVyIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMiBwLW1kLTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGQgY2FsY19hbW91bnQgZnMtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOKCuXt7YmVuZWZpdEFtb3VudCB8IG51bWJlcn19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFNjaGVtZSBCZW5lZml0XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBFcXVhbHMgSWNvbiAtIEhpZGRlbiBvbiBtb2JpbGUgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0byBkLW5vbmUgZC1tZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwidGhpcy5zY2hlbWVEZXRhaWxzPy5zY2hlbWVUeXBlICE9PSAnR09MRF9QUk9URUNUSU9OJ1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy0zIHRleHQtbXV0ZWRcIj49PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUb3RhbCBDYXJkIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNhcmQtY29udGFpbmVyIGNvbC1zbS02IG10LTIgbXQtbWQtMFwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLnNjaGVtZURldGFpbHM/LnNjaGVtZVR5cGUgIT09ICdHT0xEX1BST1RFQ1RJT04nXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgdGV4dC1jZW50ZXIgaC0xMDAgYm9yZGVyLTJcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMiBwLW1kLTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGQgY2FsY19hbW91bnQgIGZzLW1kLTUgdGV4dC13aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2NoZW1lRGV0YWlscz8uYmVuZWZpdFR5cGUgIT0gJ0RJU0NPVU5UJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAg4oK5e3soKG1vbnRobHlBbW91bnQgKiBtYXR1cml0eUNvdW50KSArIGJlbmVmaXRBbW91bnQpIHwgbnVtYmVyfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzY2hlbWVEZXRhaWxzPy5iZW5lZml0VHlwZSA9PT0gJ0RJU0NPVU5UJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAg4oK5e3sobW9udGhseUFtb3VudCAqIG1hdHVyaXR5Q291bnQpIHwgbnVtYmVyfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC13aGl0ZS01MCBzbWFsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFRvdGFsIFJlZGVtcHRpb24gVmFsdWVcclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS02XCIgKm5nSWY9XCJ0aGlzLnNjaGVtZURldGFpbHM/LnNjaGVtZVR5cGUgPT09ICdHT0xEX1BST1RFQ1RJT04nXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgdGV4dC1jZW50ZXIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0yIHAtbWQtMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBjYWxjX2Ftb3VudCBmcy1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3twdXJjaGFzZWRHcmFtfX0gZ21zXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEdvbGQgQWxsb2NhdGlvbiBUb2RheVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9udXMtbWVzc2FnZSB0ZXh0LWNlbnRlciBtYi0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInNjaGVtZURldGFpbHM/LnN0b3JlTGlzdD8ubGVuZ3RoID49MiB8fCBzdGFmZk1lbWJlcnMubGVuZ3RoID49IDIgXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZV9zZWxlY3Rpb24gIHctNTAgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCIgKm5nSWY9XCJzY2hlbWVEZXRhaWxzPy5zdG9yZUxpc3Q/Lmxlbmd0aCA+PTJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgaC0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXJcIj4gPHNwYW4+U2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgIFN0b3JlIDogPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZS1zZWxlY3RvclwiPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBpZD1cInN0b3JlRHJvcGRvd25cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkU3RvcmVcIiBjbGFzcz1cImZvcm0tc2VsZWN0XCJcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZ2V0TWV0YWxQcmljZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiIGRpc2FibGVkPkNob29zZSBhIHN0b3JlLi4uPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHN0b3JlIG9mIHN0b3JlcztcIiBbbmdWYWx1ZV09XCJzdG9yZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7c3RvcmUubmFtZX19IC0ge3tzdG9yZS5zdG9yZVJlZklkfX1cclxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGFmZi1zZWxlY3RvciB3LTUwICBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIiAqbmdJZj1cInN0YWZmTWVtYmVycy5sZW5ndGggPj0gMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiPjxzcGFuPlNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICBTdGFmZiBNZW1iZXIgOiA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNlbGVjdCBpZD1cInN0YWZmRHJvcGRvd25cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkU3RhZmZcIiBjbGFzcz1cImZvcm0tc2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgZGlzYWJsZWQ+Q2hvb3NlIGEgc3RhZmYgbWVtYmVyLi4uPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzdGFmZiBvZiBzdGFmZk1lbWJlcnM7XCIgW25nVmFsdWVdPVwic3RhZmZcIj5cclxuICAgICAgICAgICAgICAgICAge3tzdGFmZi5uYW1lfX0gLSB7e3N0YWZmLnJvbGUgPyBzdGFmZi5yb2xlIDogJ3N0YWZmJyB9fVxyXG4gICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGVybXMtYW5kLWNvbmRpdGlvblwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJ0ZXJtc0FuZENvbmRpdGlvblwiPkkgYWdyZWUgdG8gPGEgKGNsaWNrKT1cInNjcm9sbERvd24oKVwiPlRlcm1zICZcclxuICAgICAgICAgICAgICBDb25kaXRpb25zPC9hPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZW5yb2xsLWJ0biB3LTEwMCBweS0zIGZ3LWJvbGQgbWItMlwiIFthcHBCdXR0b25FZGl0b3JdPVwiZWRpdCA/PyBmYWxzZVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlXHJcbiAgICAgICAgICAgIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgwKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgwKVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgICBbaWRdPVwiZGF0YT8uaWQrZ2V0QnV0dG9uSWQoMClcIiAoY2xpY2spPVwiZW5yb2xsU2NoZW1lKHNjaGVtZURldGFpbHMpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiICFlbnJvbGxCdXR0b25Mb2FkZXJcIj5FbnJvbGwgaW4gU2NoZW1lPC9zcGFuPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW5yb2xsQnV0dG9uTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXJcIj48bWF0LXNwaW5uZXIgY2xhc3M9XCJ3LTEwMCBoLTEwMFwiPjwvbWF0LXNwaW5uZXI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICBMb2FkaW5nLi4uXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRTY2hlbWUgPT09ICdncm91cCdcIiBjbGFzcz1cInNjaGVtZS1yZXN1bHRzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAg4q2QIDxoNiBjbGFzcz1cIm1iLTAgZ3JvdXAtcmVzdWx0cy10aXRsZVwiPkdyb3VwIFNjaGVtZSBSZXN1bHRzPC9oNj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNhcmQgdGV4dC1jZW50ZXIgcC0zIGJvcmRlciByb3VuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWFtb3VudCBmdy1ib2xkIGZzLTVcIj7igrl7eyhtb250aGx5QW1vdW50ICogMTEpIHwgbnVtYmVyfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtbGFiZWwgdGV4dC1tdXRlZCBzbWFsbFwiPllvdXIgVG90YWwgMTEtTW9udGggQ29udHJpYnV0aW9uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNhcmQgcmVzdWx0LWNhcmQtZ3JvdXAgdGV4dC1jZW50ZXIgcC0zIGJvcmRlciByb3VuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWFtb3VudCBmdy1ib2xkIGZzLTVcIj7igrl7eyhtb250aGx5QW1vdW50ICogMTEpIHwgbnVtYmVyfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtbGFiZWwgc21hbGwgb3BhY2l0eS03NVwiPk1vbnRobHkgTHVja3kgRHJhdyBBbW91bnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZW5yb2xsLWJ0biB3LTEwMCBweS0zIGZ3LWJvbGQgbWItMlwiIFthcHBCdXR0b25FZGl0b3JdPVwiZWRpdCA/PyBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2J1dHRvblN0eWxlXT1cImdldEJ1dHRvblN0eWxlKDApXCIgW2J1dHRvbklkXT1cImdldEJ1dHRvbklkKDApXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCIgW2lkXT1cImRhdGE/LmlkK2dldEJ1dHRvbklkKDApXCIgW2J1dHRvbkRhdGFdPVwiZ2V0QnV0dG9uRGF0YSgwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEVucm9sbCBpbiBTY2hlbWVcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2ZhcVRlbXBsYXRlPlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwiZmFxLXNlY3Rpb24gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmFxLWNvbnRhaW5lclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJmYXEtdGl0bGVcIj5GcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9uczwvaDE+XHJcbiAgICAgIDxwIGNsYXNzPVwiZmFxLXN1YnRpdGxlXCI+RXZlcnl0aGluZyB5b3UgbmVlZCB0byBrbm93IGFib3V0IG91ciBHcm91cCBJbnZlc3RtZW50IFNjaGVtZTwvcD5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYXEtbGlzdFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZhcS1pdGVtXCIgKm5nRm9yPVwibGV0IGZhcSBvZiBmYXFMaXN0ID8/IFtdXCIgKGNsaWNrKT1cImZhcS5zaG93QW5zd2VyID0gIWZhcS5zaG93QW5zd2VyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYXEtcXVlc3Rpb25cIj5cclxuICAgICAgICAgICAgICA8c3Bhbj57e2ZhcT8ucXVlc3Rpb24gPyBmYXE/LnF1ZXN0aW9uIDogJ04vQSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJmYXEuc2hvd0Fuc3dlclwiPmtleWJvYXJkX2Fycm93X3VwPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhZmFxLnNob3dBbnN3ZXJcIj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYXEtYW5zd2VyXCIgKm5nSWY9XCJmYXEuc2hvd0Fuc3dlclwiPlxyXG4gICAgICAgICAgICAgIDxwPnt7ZmFxPy5hbnN3ZXIgPyBmYXE/LmFuc3dlciA6J04vQScgfX08L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3Rlcm1zQW5kQ29uZGl0aW9ucz5cclxuICA8c2VjdGlvbiBjbGFzcz1cInRlcm1zLXNlY3Rpb24gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgaWQ9XCJ0ZXJtc0FuZENvbmRpdGlvblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInRlcm1zLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgPGgxIGNsYXNzPVwidGVybXMtdGl0bGVcIj5UZXJtcyBhbmQgQ29uZGl0aW9uczwvaDE+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGVybXMtY29udGVudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXJtLWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQga2V5IG9mIGdldEtleXMoc2NoZW1lRGV0YWlscz8udGVybXNBbmRDb25kaXRpb25zKTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRlcm1zX2NvdW50XCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cInRlcm0taGVhZGluZ1wiPnt7IGtleSB9fS48L2gzPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cInRlcm0tdGV4dCBtYi0wXCI+XHJcbiAgICAgICAgICAgICAge3sgc2NoZW1lRGV0YWlscz8udGVybXNBbmRDb25kaXRpb25zPy5ba2V5XT8ucmVwbGFjZUFsbCgnXFxuJywnICcpIHx8ICdOL0EnIH19XHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJpbXBvcnRhbnQtbm90ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+SW1wb3J0YW50Ojwvc3Ryb25nPiBUaGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aCBwcmlvciBub3RpY2UuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFBhcnRpY2lwYW50cyB3aWxsIGJlIG5vdGlmaWVkIG9mIGFueSBjaGFuZ2VzIHZpYSByZWdpc3RlcmVkIGVtYWlsIG9yIFNNUy4gQ29udGludWVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYXRpb24gYWZ0ZXIgbm90aWZpY2F0aW9uIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgcmV2aXNlZCB0ZXJtcy48L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3Nob3dDaGFyZ2VzPlxyXG4gIDxkaXYgY2xhc3M9XCJwYXltZW50LWRpYWxvZ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXJcIj5cclxuICAgICAgPGgyPlBheW1lbnQgRGV0YWlsczwvaDI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1idG5cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNsb3NlRGlhbG9nKCdGQUlMJylcIj5cclxuICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtcm93XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkluc3RhbGxtZW50IEFtb3VudDo8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhbW91bnRcIj7igrl7e3N0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy5pbnN0YWxsbWVudEFtb3VudCA/XHJcbiAgICAgICAgICAoc3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/Lmluc3RhbGxtZW50QW1vdW50IHwgbnVtYmVyKSA6IDAgfX08L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtcm93XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkNvbnZlbmllbmNlIEZlZTo8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhbW91bnRcIj7igrl7e3N0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy5jb252ZW5pZW5jZUZlZT8udmFsdWUgP1xyXG4gICAgICAgICAgKHN0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy5jb252ZW5pZW5jZUZlZT8udmFsdWUgfCBudW1iZXIpIDogMCB9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1yb3dcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+UGF5bWVudCBTZXJ2aWNlIENoYXJnZXM6PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYW1vdW50XCI+4oK5e3tzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8ucGF5bWVudFNlcnZpY2VDaGFyZ2VzPy52YWx1ZSA/XHJcbiAgICAgICAgICAoc3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/LnBheW1lbnRTZXJ2aWNlQ2hhcmdlcz8udmFsdWUgfCBudW1iZXIpIDogMCB9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1yb3cgdG90YWwtcm93XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCB0b3RhbC1sYWJlbFwiPlRvdGFsIEFtb3VudDo8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhbW91bnQgdG90YWwtYW1vdW50XCI+4oK5e3tzdG9yZUNoYXJnZXM/LmJyZWFrZG93bj8udG90YWxBbW91bnQgP1xyXG4gICAgICAgICAgKHN0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy50b3RhbEFtb3VudCB8IG51bWJlcikgOiAwIH19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctYWN0aW9uc1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiY29udGludWUtYnRuXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKCdTVUNDRVNTJylcIj5Db250aW51ZTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
|