@resolveio/client-lib-core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/account-manager.service.mjs +213 -0
- package/esm2020/lib/auth/auth-guard.service.mjs +137 -0
- package/esm2020/lib/auth/auth-permissions.service.mjs +24 -0
- package/esm2020/lib/auth/auth.service.mjs +241 -0
- package/esm2020/lib/auth/auth365.component.mjs +44 -0
- package/esm2020/lib/auth/can-deactivate-guard.service.mjs +13 -0
- package/esm2020/lib/auth/enroll.component.mjs +81 -0
- package/esm2020/lib/auth/forgot-password.component.mjs +82 -0
- package/esm2020/lib/core.component.mjs +488 -0
- package/esm2020/lib/core.module.mjs +179 -0
- package/esm2020/lib/core.service.mjs +96 -0
- package/esm2020/lib/directive/focus.mjs +22 -0
- package/esm2020/lib/directive/scroll.mjs +55 -0
- package/esm2020/lib/home/about-us.component.mjs +34 -0
- package/esm2020/lib/home/contact-us.component.mjs +57 -0
- package/esm2020/lib/home/demo.component.mjs +59 -0
- package/esm2020/lib/home/home.component.mjs +105 -0
- package/esm2020/lib/home/home.module.mjs +50 -0
- package/esm2020/lib/logger/logger.component.mjs +221 -0
- package/esm2020/lib/models/app-status.model.mjs +2 -0
- package/esm2020/lib/models/collection-document.model.mjs +2 -0
- package/esm2020/lib/models/cron-job.model.mjs +2 -0
- package/esm2020/lib/models/dialog.model.mjs +2 -0
- package/esm2020/lib/models/file.model.mjs +2 -0
- package/esm2020/lib/models/log-method-latency.model.mjs +2 -0
- package/esm2020/lib/models/navbar-main-tab.model.mjs +2 -0
- package/esm2020/lib/models/pagination.model.mjs +2 -0
- package/esm2020/lib/models/permission.model.mjs +2 -0
- package/esm2020/lib/models/select-data-label.model.mjs +2 -0
- package/esm2020/lib/models/subscription.model.mjs +2 -0
- package/esm2020/lib/models/support-ticket.model.mjs +2 -0
- package/esm2020/lib/models/user-group.model.mjs +2 -0
- package/esm2020/lib/models/user.model.mjs +2 -0
- package/esm2020/lib/offline-db.mjs +519 -0
- package/esm2020/lib/offline-manager.service.mjs +107 -0
- package/esm2020/lib/pipes/domsanitizor.pipe.mjs +28 -0
- package/esm2020/lib/pipes/filter.pipe.mjs +36 -0
- package/esm2020/lib/pipes/json-parse.pipe.mjs +29 -0
- package/esm2020/lib/pipes/minus-currency.pipe.mjs +16 -0
- package/esm2020/lib/pipes/phone.pipe.mjs +47 -0
- package/esm2020/lib/pipes/pipe.module.mjs +54 -0
- package/esm2020/lib/pipes/reverse-list.pipe.mjs +17 -0
- package/esm2020/lib/pipes/titlecase.pipe.mjs +22 -0
- package/esm2020/lib/resolveio-class.mjs +41 -0
- package/esm2020/lib/shared/shared.module.mjs +91 -0
- package/esm2020/lib/socket-manager.service.mjs +360 -0
- package/esm2020/lib/socket.service.mjs +129 -0
- package/esm2020/lib/standard-pages/contactus/contactus.component.mjs +45 -0
- package/esm2020/lib/standard-pages/faq/faq.component.mjs +45 -0
- package/esm2020/lib/standard-pages/features/features.component.mjs +23 -0
- package/esm2020/lib/standard-pages/home/home.component.mjs +38 -0
- package/esm2020/lib/standard-pages/howitwork/howitwork.component.mjs +23 -0
- package/esm2020/lib/standard-pages/loginsignup/loginsignup.component.mjs +23 -0
- package/esm2020/lib/standard-pages/pricing/pricing.component.mjs +37 -0
- package/esm2020/lib/standard-pages/standard-pages.module.mjs +69 -0
- package/esm2020/lib/support-ticket/detail/support-ticket-detail.component.mjs +204 -0
- package/esm2020/lib/support-ticket/edit/support-ticket-edit.component.mjs +122 -0
- package/esm2020/lib/support-ticket/list/support-ticket-list.component.mjs +137 -0
- package/esm2020/lib/support-ticket/new/support-ticket-new.component.mjs +115 -0
- package/esm2020/lib/support-ticket/support-ticket.component.mjs +63 -0
- package/esm2020/lib/support-ticket/support-ticket.module.mjs +57 -0
- package/esm2020/lib/support-ticket/support-ticket.routing.mjs +20 -0
- package/esm2020/lib/support-ticket/support-ticket.service.mjs +17 -0
- package/esm2020/lib/token-manager.service.mjs +24 -0
- package/esm2020/lib/user-settings/settings/users-settings.component.mjs +312 -0
- package/esm2020/lib/user-settings/user-settings.component.mjs +57 -0
- package/esm2020/lib/user-settings/user-settings.module.mjs +58 -0
- package/esm2020/lib/user-settings/user-settings.permission.mjs +10 -0
- package/esm2020/lib/user-settings/user-settings.routing.mjs +14 -0
- package/esm2020/lib/user-settings/user-settings.service.mjs +17 -0
- package/esm2020/lib/util/action-name.helper.mjs +9 -0
- package/esm2020/lib/util/aws.service.mjs +79 -0
- package/esm2020/lib/util/common.helper.mjs +140 -0
- package/esm2020/lib/util/validation.service.mjs +177 -0
- package/esm2020/lib/util/window-resize.service.mjs +24 -0
- package/esm2020/lib/util/window.service.mjs +16 -0
- package/esm2020/lib/widgets/alert/alert.model.mjs +2 -0
- package/esm2020/lib/widgets/alert/alert.service.mjs +76 -0
- package/esm2020/lib/widgets/chartjs/chart.component.mjs +86 -0
- package/esm2020/lib/widgets/chartjs/chart.module.mjs +17 -0
- package/esm2020/lib/widgets/collapse-table/collapse-table.component.mjs +79 -0
- package/esm2020/lib/widgets/collapse-table/collapse-table.module.mjs +36 -0
- package/esm2020/lib/widgets/data-table/data-table.component.mjs +77 -0
- package/esm2020/lib/widgets/data-table/data-table.model.mjs +2 -0
- package/esm2020/lib/widgets/data-table/data-table.module.mjs +43 -0
- package/esm2020/lib/widgets/date-shortcut/date-shortcut.component.mjs +195 -0
- package/esm2020/lib/widgets/date-shortcut/date-shortcut.module.mjs +34 -0
- package/esm2020/lib/widgets/dialog/dialog.confirm.content.mjs +63 -0
- package/esm2020/lib/widgets/dialog/dialog.error.content.mjs +57 -0
- package/esm2020/lib/widgets/dialog/dialog.input.content.mjs +197 -0
- package/esm2020/lib/widgets/dialog/dialog.login.content.mjs +348 -0
- package/esm2020/lib/widgets/dialog/dialog.notify.content.mjs +57 -0
- package/esm2020/lib/widgets/dialog/dialog.register.content.mjs +330 -0
- package/esm2020/lib/widgets/dialog/dialog.select-data-labels.content.mjs +191 -0
- package/esm2020/lib/widgets/dialog/dialog.select-datetime.content.mjs +140 -0
- package/esm2020/lib/widgets/dialog/dialog.service.mjs +71 -0
- package/esm2020/lib/widgets/file/file-upload.component.mjs +440 -0
- package/esm2020/lib/widgets/file/file-upload.module.mjs +50 -0
- package/esm2020/lib/widgets/form-button/form-button.component.mjs +91 -0
- package/esm2020/lib/widgets/form-button/form-button.module.mjs +30 -0
- package/esm2020/lib/widgets/navbar-main/navbar-main.component.mjs +209 -0
- package/esm2020/lib/widgets/navbar-module/navbar-module.component.mjs +138 -0
- package/esm2020/lib/widgets/navbar-module/navbar-module.model.mjs +2 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap-tour.service.mjs +14 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module.mjs +34 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/step-option.interface.mjs +2 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-anchor.directive.mjs +76 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.component.mjs +70 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.service.mjs +10 -0
- package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.component.mjs +38 -0
- package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.module.mjs +26 -0
- package/esm2020/lib/widgets/scheduler/scheduler.component.mjs +185 -0
- package/esm2020/lib/widgets/scheduler/scheduler.module.mjs +39 -0
- package/esm2020/lib/widgets/sort-table/sort-table-header.component.mjs +67 -0
- package/esm2020/lib/widgets/sort-table/sort-table-ngfor.component.mjs +48 -0
- package/esm2020/lib/widgets/sort-table/sort-table.directive.mjs +174 -0
- package/esm2020/lib/widgets/sort-table/sort-table.module.mjs +40 -0
- package/esm2020/lib/widgets/user-role/user-role.component.mjs +27 -0
- package/esm2020/lib/widgets/user-role/user-role.module.mjs +26 -0
- package/esm2020/public_api.mjs +109 -0
- package/esm2020/resolveio-client-lib-core.mjs +5 -0
- package/fesm2015/resolveio-client-lib-core.mjs +8856 -0
- package/fesm2015/resolveio-client-lib-core.mjs.map +1 -0
- package/fesm2020/resolveio-client-lib-core.mjs +8849 -0
- package/fesm2020/resolveio-client-lib-core.mjs.map +1 -0
- package/lib/account-manager.service.d.ts +42 -0
- package/lib/auth/auth-guard.service.d.ts +25 -0
- package/lib/auth/auth-permissions.service.d.ts +10 -0
- package/lib/auth/auth.service.d.ts +29 -0
- package/lib/auth/auth365.component.d.ts +20 -0
- package/lib/auth/can-deactivate-guard.service.d.ts +11 -0
- package/lib/auth/enroll.component.d.ts +28 -0
- package/lib/auth/forgot-password.component.d.ts +28 -0
- package/lib/core.component.d.ts +69 -0
- package/lib/core.module.d.ts +32 -0
- package/lib/core.service.d.ts +53 -0
- package/lib/directive/focus.d.ts +10 -0
- package/lib/directive/scroll.d.ts +20 -0
- package/lib/home/about-us.component.d.ts +15 -0
- package/lib/home/contact-us.component.d.ts +20 -0
- package/lib/home/demo.component.d.ts +25 -0
- package/lib/home/home.component.d.ts +33 -0
- package/lib/home/home.module.d.ts +13 -0
- package/lib/logger/logger.component.d.ts +37 -0
- package/lib/models/app-status.model.d.ts +4 -0
- package/lib/models/collection-document.model.d.ts +6 -0
- package/lib/models/cron-job.model.d.ts +13 -0
- package/lib/models/dialog.model.d.ts +18 -0
- package/lib/models/file.model.d.ts +9 -0
- package/lib/models/log-method-latency.model.d.ts +7 -0
- package/lib/models/navbar-main-tab.model.d.ts +14 -0
- package/lib/models/pagination.model.d.ts +17 -0
- package/lib/models/permission.model.d.ts +13 -0
- package/lib/models/select-data-label.model.d.ts +9 -0
- package/lib/models/subscription.model.d.ts +19 -0
- package/lib/models/support-ticket.model.d.ts +71 -0
- package/lib/models/user-group.model.d.ts +19 -0
- package/lib/models/user.model.d.ts +70 -0
- package/lib/offline-db.d.ts +28 -0
- package/lib/offline-manager.service.d.ts +23 -0
- package/lib/pipes/domsanitizor.pipe.d.ts +10 -0
- package/lib/pipes/filter.pipe.d.ts +12 -0
- package/lib/pipes/json-parse.pipe.d.ts +7 -0
- package/lib/pipes/minus-currency.pipe.d.ts +7 -0
- package/lib/pipes/phone.pipe.d.ts +7 -0
- package/lib/pipes/pipe.module.d.ts +13 -0
- package/lib/pipes/reverse-list.pipe.d.ts +6 -0
- package/lib/pipes/titlecase.pipe.d.ts +7 -0
- package/lib/resolveio-class.d.ts +26 -0
- package/lib/shared/shared.module.d.ts +16 -0
- package/lib/socket-manager.service.d.ts +33 -0
- package/lib/socket.service.d.ts +33 -0
- package/lib/standard-pages/contactus/contactus.component.d.ts +17 -0
- package/lib/standard-pages/faq/faq.component.d.ts +17 -0
- package/lib/standard-pages/features/features.component.d.ts +12 -0
- package/lib/standard-pages/home/home.component.d.ts +14 -0
- package/lib/standard-pages/howitwork/howitwork.component.d.ts +12 -0
- package/lib/standard-pages/loginsignup/loginsignup.component.d.ts +12 -0
- package/lib/standard-pages/pricing/pricing.component.d.ts +14 -0
- package/lib/standard-pages/standard-pages.module.d.ts +17 -0
- package/lib/support-ticket/detail/support-ticket-detail.component.d.ts +32 -0
- package/lib/support-ticket/edit/support-ticket-edit.component.d.ts +30 -0
- package/lib/support-ticket/list/support-ticket-list.component.d.ts +26 -0
- package/lib/support-ticket/new/support-ticket-new.component.d.ts +26 -0
- package/lib/support-ticket/support-ticket.component.d.ts +20 -0
- package/lib/support-ticket/support-ticket.module.d.ts +16 -0
- package/lib/support-ticket/support-ticket.routing.d.ts +3 -0
- package/lib/support-ticket/support-ticket.service.d.ts +9 -0
- package/lib/token-manager.service.d.ts +11 -0
- package/lib/user-settings/settings/users-settings.component.d.ts +57 -0
- package/lib/user-settings/user-settings.component.d.ts +20 -0
- package/lib/user-settings/user-settings.module.d.ts +15 -0
- package/lib/user-settings/user-settings.permission.d.ts +2 -0
- package/lib/user-settings/user-settings.routing.d.ts +3 -0
- package/lib/user-settings/user-settings.service.d.ts +9 -0
- package/lib/util/action-name.helper.d.ts +1 -0
- package/lib/util/aws.service.d.ts +16 -0
- package/lib/util/common.helper.d.ts +12 -0
- package/lib/util/validation.service.d.ts +85 -0
- package/lib/util/window-resize.service.d.ts +12 -0
- package/lib/util/window.service.d.ts +6 -0
- package/lib/widgets/alert/alert.model.d.ts +1 -0
- package/lib/widgets/alert/alert.service.d.ts +11 -0
- package/lib/widgets/chartjs/chart.component.d.ts +22 -0
- package/lib/widgets/chartjs/chart.module.d.ts +8 -0
- package/lib/widgets/collapse-table/collapse-table.component.d.ts +23 -0
- package/lib/widgets/collapse-table/collapse-table.module.d.ts +9 -0
- package/lib/widgets/data-table/data-table.component.d.ts +23 -0
- package/lib/widgets/data-table/data-table.model.d.ts +13 -0
- package/lib/widgets/data-table/data-table.module.d.ts +12 -0
- package/lib/widgets/date-shortcut/date-shortcut.component.d.ts +20 -0
- package/lib/widgets/date-shortcut/date-shortcut.module.d.ts +10 -0
- package/lib/widgets/dialog/dialog.confirm.content.d.ts +12 -0
- package/lib/widgets/dialog/dialog.error.content.d.ts +11 -0
- package/lib/widgets/dialog/dialog.input.content.d.ts +18 -0
- package/lib/widgets/dialog/dialog.login.content.d.ts +16 -0
- package/lib/widgets/dialog/dialog.notify.content.d.ts +11 -0
- package/lib/widgets/dialog/dialog.register.content.d.ts +13 -0
- package/lib/widgets/dialog/dialog.select-data-labels.content.d.ts +22 -0
- package/lib/widgets/dialog/dialog.select-datetime.content.d.ts +16 -0
- package/lib/widgets/dialog/dialog.service.d.ts +18 -0
- package/lib/widgets/file/file-upload.component.d.ts +49 -0
- package/lib/widgets/file/file-upload.module.d.ts +14 -0
- package/lib/widgets/form-button/form-button.component.d.ts +14 -0
- package/lib/widgets/form-button/form-button.module.d.ts +9 -0
- package/lib/widgets/navbar-main/navbar-main.component.d.ts +52 -0
- package/lib/widgets/navbar-module/navbar-module.component.d.ts +24 -0
- package/lib/widgets/navbar-module/navbar-module.model.d.ts +13 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap-tour.service.d.ts +7 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module.d.ts +17 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/step-option.interface.d.ts +5 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/tour-anchor.directive.d.ts +26 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.component.d.ts +20 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.service.d.ts +9 -0
- package/lib/widgets/responsive-button-group/responsive-button-group.component.d.ts +17 -0
- package/lib/widgets/responsive-button-group/responsive-button-group.module.d.ts +8 -0
- package/lib/widgets/scheduler/scheduler.component.d.ts +50 -0
- package/lib/widgets/scheduler/scheduler.module.d.ts +11 -0
- package/lib/widgets/sort-table/sort-table-header.component.d.ts +23 -0
- package/lib/widgets/sort-table/sort-table-ngfor.component.d.ts +17 -0
- package/lib/widgets/sort-table/sort-table.directive.d.ts +48 -0
- package/lib/widgets/sort-table/sort-table.module.d.ts +11 -0
- package/lib/widgets/user-role/user-role.component.d.ts +10 -0
- package/lib/widgets/user-role/user-role.module.d.ts +8 -0
- package/package.json +72 -0
- package/public_api.d.ts +105 -0
- package/resolveio-client-lib-core.d.ts +5 -0
- package/src/assets/css/font-awesome.css +2338 -0
- package/src/assets/css/home-page-layout.css +7221 -0
- package/src/assets/css/home-page-theme.css +1157 -0
- package/src/assets/css/leaflet.css +629 -0
- package/src/assets/css/owl.carousel.min.css +1 -0
- package/src/assets/css/owl.theme.min.css +1 -0
- package/src/assets/css/style.css +1283 -0
- package/src/assets/css/tablet.css +18 -0
- package/src/assets/css/toastr.css +192 -0
- package/src/assets/images/ResolveIO.png +0 -0
- package/src/assets/images/ResolveIO_white.png +0 -0
- package/src/assets/images/contactus/Contact_bnr.jpg +0 -0
- package/src/assets/images/contactus/cont-comp.png +0 -0
- package/src/assets/images/contactus/cont-mail.png +0 -0
- package/src/assets/images/contactus/cont-phone.png +0 -0
- package/src/assets/images/contactus/form-img.png +0 -0
- package/src/assets/images/contactus/user.png +0 -0
- package/src/assets/images/faq/Faq-form.png +0 -0
- package/src/assets/images/faq/clientlogo1.jpg +0 -0
- package/src/assets/images/faq/clientlogo2.jpg +0 -0
- package/src/assets/images/faq/clientlogo3.jpg +0 -0
- package/src/assets/images/faq/clientlogo4.jpg +0 -0
- package/src/assets/images/faq/clientlogo5.jpg +0 -0
- package/src/assets/images/faq/faq_banner copy.jpg +0 -0
- package/src/assets/images/faq/faq_banner.jpg +0 -0
- package/src/assets/images/faq/faqwomen.jpg +0 -0
- package/src/assets/images/faq/mail-input.png +0 -0
- package/src/assets/images/faq/user-input.png +0 -0
- package/src/assets/images/favicon-32x32.png +0 -0
- package/src/assets/images/features/future-bnr.jpg +0 -0
- package/src/assets/images/features/polygon.png +0 -0
- package/src/assets/images/home/banner-1.jpg +0 -0
- package/src/assets/images/home/booking.png +0 -0
- package/src/assets/images/home/client.jpg +0 -0
- package/src/assets/images/home/client2.jpg +0 -0
- package/src/assets/images/home/clientlogo1.jpg +0 -0
- package/src/assets/images/home/clientlogo2.jpg +0 -0
- package/src/assets/images/home/clientlogo3.jpg +0 -0
- package/src/assets/images/home/clientlogo4.jpg +0 -0
- package/src/assets/images/home/clientlogo5.jpg +0 -0
- package/src/assets/images/home/easy_invoicing.png +0 -0
- package/src/assets/images/home/inventory.png +0 -0
- package/src/assets/images/home/manage.png +0 -0
- package/src/assets/images/home/more.png +0 -0
- package/src/assets/images/home/order_management.png +0 -0
- package/src/assets/images/home/plan.png +0 -0
- package/src/assets/images/home-page/AjaxLoader.gif +0 -0
- package/src/assets/images/home-page/ResolveIO_white.png +0 -0
- package/src/assets/images/home-page/abt_thumb.png +0 -0
- package/src/assets/images/home-page/aero_icon_right_white.png +0 -0
- package/src/assets/images/home-page/arrow_btn.png +0 -0
- package/src/assets/images/home-page/banner_thumb.png +0 -0
- package/src/assets/images/home-page/blank.gif +0 -0
- package/src/assets/images/home-page/close_icon.png +0 -0
- package/src/assets/images/home-page/contact_bg.jpg +0 -0
- package/src/assets/images/home-page/email_icon.png +0 -0
- package/src/assets/images/home-page/fancybox_loading.gif +0 -0
- package/src/assets/images/home-page/fancybox_loading@2x.gif +0 -0
- package/src/assets/images/home-page/fancybox_overlay.png +0 -0
- package/src/assets/images/home-page/fancybox_sprite.png +0 -0
- package/src/assets/images/home-page/fancybox_sprite@2x.png +0 -0
- package/src/assets/images/home-page/header_center_after.png +0 -0
- package/src/assets/images/home-page/header_left_after.png +0 -0
- package/src/assets/images/home-page/home_banner_1.jpg +0 -0
- package/src/assets/images/home-page/logo.png +0 -0
- package/src/assets/images/home-page/logo_thumb_ace.png +0 -0
- package/src/assets/images/home-page/logo_thumb_acquire.png +0 -0
- package/src/assets/images/home-page/logo_thumb_chemtech.jpeg +0 -0
- package/src/assets/images/home-page/logo_thumb_cherokee.png +0 -0
- package/src/assets/images/home-page/logo_thumb_coilchem.png +0 -0
- package/src/assets/images/home-page/logo_thumb_dcs.png +0 -0
- package/src/assets/images/home-page/logo_thumb_integrity.png +0 -0
- package/src/assets/images/home-page/logo_thumb_intrepid.png +0 -0
- package/src/assets/images/home-page/logo_thumb_omt.png +0 -0
- package/src/assets/images/home-page/logo_thumb_quantum.png +0 -0
- package/src/assets/images/home-page/logo_thumb_smartchemical.png +0 -0
- package/src/assets/images/home-page/logo_thumb_terra.png +0 -0
- package/src/assets/images/home-page/logo_thumb_truechem.png +0 -0
- package/src/assets/images/home-page/password_icon.png +0 -0
- package/src/assets/images/home-page/phone_icon.png +0 -0
- package/src/assets/images/home-page/software_icon_1.png +0 -0
- package/src/assets/images/home-page/software_icon_2.png +0 -0
- package/src/assets/images/home-page/software_sec_bg.jpg +0 -0
- package/src/assets/images/home-page/software_thumb.png +0 -0
- package/src/assets/images/home-page/white_arrow_btn.png +0 -0
- package/src/assets/images/howitwork/add-booking.png +0 -0
- package/src/assets/images/howitwork/add-order.png +0 -0
- package/src/assets/images/howitwork/add-stuff.png +0 -0
- package/src/assets/images/howitwork/how_banner.jpg +0 -0
- package/src/assets/images/howitwork/howimg1.png +0 -0
- package/src/assets/images/howitwork/howimg2.png +0 -0
- package/src/assets/images/howitwork/step-check.png +0 -0
- package/src/assets/images/loginsignup/formimg.jpg +0 -0
- package/src/assets/images/loginsignup/login-logo.png +0 -0
- package/src/assets/images/owl.video.play.png +0 -0
- package/src/assets/images/pricing/Pricing_banner.jpg +0 -0
- package/src/assets/images/pricing/clientlogo1.jpg +0 -0
- package/src/assets/images/pricing/clientlogo2.jpg +0 -0
- package/src/assets/images/pricing/clientlogo3.jpg +0 -0
- package/src/assets/images/pricing/clientlogo4.jpg +0 -0
- package/src/assets/images/pricing/clientlogo5.jpg +0 -0
- package/src/assets/images/pricing/info-ico.png +0 -0
- package/src/assets/scss/toastr.scss +201 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { FileUploadComponent } from './file-upload.component';
|
|
5
|
+
import { CollapseTableModule } from '../collapse-table/collapse-table.module';
|
|
6
|
+
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
|
7
|
+
import { ResponsiveButtonGroupModule } from '../responsive-button-group/responsive-button-group.module';
|
|
8
|
+
import { NgxFileDropModule } from 'ngx-file-drop';
|
|
9
|
+
import { NgxDocViewerModule } from 'ngx-doc-viewer';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class FileModule {
|
|
12
|
+
}
|
|
13
|
+
FileModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
14
|
+
FileModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FileModule, declarations: [FileUploadComponent], imports: [CommonModule,
|
|
15
|
+
FormsModule,
|
|
16
|
+
CollapseTableModule,
|
|
17
|
+
NgbModule,
|
|
18
|
+
ResponsiveButtonGroupModule,
|
|
19
|
+
NgxFileDropModule,
|
|
20
|
+
NgxDocViewerModule], exports: [FileUploadComponent] });
|
|
21
|
+
FileModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FileModule, imports: [[
|
|
22
|
+
CommonModule,
|
|
23
|
+
FormsModule,
|
|
24
|
+
CollapseTableModule,
|
|
25
|
+
NgbModule,
|
|
26
|
+
ResponsiveButtonGroupModule,
|
|
27
|
+
NgxFileDropModule,
|
|
28
|
+
NgxDocViewerModule
|
|
29
|
+
]] });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FileModule, decorators: [{
|
|
31
|
+
type: NgModule,
|
|
32
|
+
args: [{
|
|
33
|
+
imports: [
|
|
34
|
+
CommonModule,
|
|
35
|
+
FormsModule,
|
|
36
|
+
CollapseTableModule,
|
|
37
|
+
NgbModule,
|
|
38
|
+
ResponsiveButtonGroupModule,
|
|
39
|
+
NgxFileDropModule,
|
|
40
|
+
NgxDocViewerModule
|
|
41
|
+
],
|
|
42
|
+
declarations: [
|
|
43
|
+
FileUploadComponent
|
|
44
|
+
],
|
|
45
|
+
exports: [
|
|
46
|
+
FileUploadComponent
|
|
47
|
+
]
|
|
48
|
+
}]
|
|
49
|
+
}] });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3dpZGdldHMvZmlsZS9maWxlLXVwbG9hZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBbUJwRCxNQUFNLE9BQU8sVUFBVTs7dUdBQVYsVUFBVTt3R0FBVixVQUFVLGlCQU5yQixtQkFBbUIsYUFUbkIsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsU0FBUztRQUNULDJCQUEyQjtRQUMzQixpQkFBaUI7UUFDakIsa0JBQWtCLGFBTWxCLG1CQUFtQjt3R0FHUixVQUFVLFlBaEJiO1lBQ1IsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsU0FBUztZQUNULDJCQUEyQjtZQUMzQixpQkFBaUI7WUFDakIsa0JBQWtCO1NBQ2xCOzJGQVFXLFVBQVU7a0JBakJ0QixRQUFRO21CQUFDO29CQUNULE9BQU8sRUFBRTt3QkFDUixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixTQUFTO3dCQUNULDJCQUEyQjt3QkFDM0IsaUJBQWlCO3dCQUNqQixrQkFBa0I7cUJBQ2xCO29CQUNELFlBQVksRUFBRTt3QkFDYixtQkFBbUI7cUJBQ25CO29CQUNELE9BQU8sRUFBRTt3QkFDUixtQkFBbUI7cUJBQ25CO2lCQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2xsYXBzZVRhYmxlTW9kdWxlIH0gZnJvbSAnLi4vY29sbGFwc2UtdGFibGUvY29sbGFwc2UtdGFibGUubW9kdWxlJztcbmltcG9ydCB7IE5nYk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IFJlc3BvbnNpdmVCdXR0b25Hcm91cE1vZHVsZSB9IGZyb20gJy4uL3Jlc3BvbnNpdmUtYnV0dG9uLWdyb3VwL3Jlc3BvbnNpdmUtYnV0dG9uLWdyb3VwLm1vZHVsZSc7XG5pbXBvcnQgeyBOZ3hGaWxlRHJvcE1vZHVsZSB9IGZyb20gJ25neC1maWxlLWRyb3AnO1xuaW1wb3J0IHsgTmd4RG9jVmlld2VyTW9kdWxlIH0gZnJvbSAnbmd4LWRvYy12aWV3ZXInO1xuXG5ATmdNb2R1bGUoe1xuXHRpbXBvcnRzOiBbXG5cdFx0Q29tbW9uTW9kdWxlLFxuXHRcdEZvcm1zTW9kdWxlLFxuXHRcdENvbGxhcHNlVGFibGVNb2R1bGUsXG5cdFx0TmdiTW9kdWxlLFxuXHRcdFJlc3BvbnNpdmVCdXR0b25Hcm91cE1vZHVsZSxcblx0XHROZ3hGaWxlRHJvcE1vZHVsZSxcblx0XHROZ3hEb2NWaWV3ZXJNb2R1bGVcblx0XSxcblx0ZGVjbGFyYXRpb25zOiBbXG5cdFx0RmlsZVVwbG9hZENvbXBvbmVudFxuXHRdLFxuXHRleHBvcnRzOiBbXG5cdFx0RmlsZVVwbG9hZENvbXBvbmVudFxuXHRdXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVNb2R1bGUgeyB9Il19
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import { ProviderService, BaseComponent } from '../../resolveio-class';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../resolveio-class";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
import * as i3 from "@ng-bootstrap/ng-bootstrap";
|
|
8
|
+
export class FormButtonComponent extends BaseComponent {
|
|
9
|
+
constructor(_services) {
|
|
10
|
+
super(_services);
|
|
11
|
+
this._services = _services;
|
|
12
|
+
this.disabled = false;
|
|
13
|
+
}
|
|
14
|
+
getTipErrors() {
|
|
15
|
+
let res = [];
|
|
16
|
+
if (this.form && this.form.invalid && typeof (this.form.controls) === 'object') {
|
|
17
|
+
let keys = Object.keys(this.form.controls);
|
|
18
|
+
keys.forEach(key => {
|
|
19
|
+
let ctrl = this.form.controls[key];
|
|
20
|
+
if (ctrl.invalid) {
|
|
21
|
+
res.push(key.replace('_id', '').replace('id_', '').replace('_', ' ').replace(/\b\S/g, function (t) { return t.toUpperCase(); }) + ' is invalid');
|
|
22
|
+
if (this.isSuperAdmin()) {
|
|
23
|
+
if (typeof (ctrl.value) === 'object' && Array.isArray(ctrl.value) && ctrl.controls) {
|
|
24
|
+
for (let i = 0; i < ctrl.controls.length; i++) {
|
|
25
|
+
let group = ctrl.controls[i];
|
|
26
|
+
if (group.controls) {
|
|
27
|
+
let arrayKeys = Object.keys(group.controls);
|
|
28
|
+
arrayKeys.forEach(arrayKey => {
|
|
29
|
+
let arrayCtrl = group.controls[arrayKey];
|
|
30
|
+
if (arrayCtrl.invalid) {
|
|
31
|
+
res.push('[' + i + '] -> ' + arrayKey.replace('_id', '').replace('id_', '').replace('_', ' ').replace(/\b\S/g, function (t) { return t.toUpperCase(); }) + ' is invalid');
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return res;
|
|
42
|
+
}
|
|
43
|
+
isSuperAdmin() {
|
|
44
|
+
if (this._services._account.getUser() && this._services._account.getUser().roles.super_admin) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
FormButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormButtonComponent, deps: [{ token: i1.ProviderService }], target: i0.ɵɵFactoryTarget.Component });
|
|
51
|
+
FormButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: FormButtonComponent, selector: "form-button", inputs: { form: "form", disabled: "disabled" }, providers: [ProviderService], viewQueries: [{ propertyName: "formButton", first: true, predicate: ["formButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
52
|
+
<div style="position: relative; text-align: left; width: 100%">
|
|
53
|
+
<ng-template #tipContent>
|
|
54
|
+
<span style="font-weight: bold">Errors:<br></span>
|
|
55
|
+
<ul>
|
|
56
|
+
<li *ngFor="let error of getTipErrors()">{{error}}</li>
|
|
57
|
+
</ul>
|
|
58
|
+
</ng-template>
|
|
59
|
+
<div [ngbTooltip]="(getTipErrors().length ? tipContent : '')" placement="top-left" #t>
|
|
60
|
+
<button type="submit" [ngClass]="['btn', form && form.valid ? 'btn-success' : 'btn-danger']" [disabled]="!form || !form.valid || disabled" style="width: 200px" [autofocus]="true" #formButton>Submit</button>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
`, isInline: true, directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormButtonComponent, decorators: [{
|
|
65
|
+
type: Component,
|
|
66
|
+
args: [{
|
|
67
|
+
providers: [ProviderService],
|
|
68
|
+
selector: 'form-button',
|
|
69
|
+
template: `
|
|
70
|
+
<div style="position: relative; text-align: left; width: 100%">
|
|
71
|
+
<ng-template #tipContent>
|
|
72
|
+
<span style="font-weight: bold">Errors:<br></span>
|
|
73
|
+
<ul>
|
|
74
|
+
<li *ngFor="let error of getTipErrors()">{{error}}</li>
|
|
75
|
+
</ul>
|
|
76
|
+
</ng-template>
|
|
77
|
+
<div [ngbTooltip]="(getTipErrors().length ? tipContent : '')" placement="top-left" #t>
|
|
78
|
+
<button type="submit" [ngClass]="['btn', form && form.valid ? 'btn-success' : 'btn-danger']" [disabled]="!form || !form.valid || disabled" style="width: 200px" [autofocus]="true" #formButton>Submit</button>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
`
|
|
82
|
+
}]
|
|
83
|
+
}], ctorParameters: function () { return [{ type: i1.ProviderService }]; }, propDecorators: { form: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], disabled: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], formButton: [{
|
|
88
|
+
type: ViewChild,
|
|
89
|
+
args: ['formButton', { static: false }]
|
|
90
|
+
}] } });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3dpZGdldHMvZm9ybS1idXR0b24vZm9ybS1idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7QUFvQnZFLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxhQUFhO0lBTXJELFlBQW9CLFNBQTBCO1FBQzdDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQURFLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBSnJDLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFNMUIsQ0FBQztJQUVELFlBQVk7UUFDWCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFFYixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssUUFBUSxFQUFFO1lBQzlFLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUzQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNsQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFbkMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNqQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFVBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7b0JBRWhKLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFO3dCQUN4QixJQUFJLE9BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFnQixJQUFLLENBQUMsUUFBUSxFQUFFOzRCQUMvRixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQWUsSUFBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0NBQzNELElBQUksS0FBSyxHQUEyQixJQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBRSxDQUFDO2dDQUV2RCxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7b0NBQ25CLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29DQUU1QyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO3dDQUM1QixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dDQUV6QyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUU7NENBQ3RCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBUyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQzt5Q0FDeks7b0NBQ0YsQ0FBQyxDQUFDLENBQUM7aUNBQ0g7NkJBQ0Q7eUJBQ0Q7cUJBQ0Q7aUJBQ0Q7WUFDRixDQUFDLENBQUMsQ0FBQztTQUNIO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDWixDQUFDO0lBRUQsWUFBWTtRQUNYLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUM3RixPQUFPLElBQUksQ0FBQztTQUNaO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDOztnSEF0RFcsbUJBQW1CO29HQUFuQixtQkFBbUIsc0ZBakJwQixDQUFDLGVBQWUsQ0FBQywySkFFbEI7Ozs7Ozs7Ozs7OztFQVlUOzJGQUdXLG1CQUFtQjtrQkFsQi9CLFNBQVM7bUJBQUM7b0JBQ1YsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO29CQUM1QixRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7RUFZVDtpQkFDRDtzR0FHUyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFMkMsVUFBVTtzQkFBMUQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgUHJvdmlkZXJTZXJ2aWNlLCBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcmVzb2x2ZWlvLWNsYXNzJztcblxuQENvbXBvbmVudCh7XG5cdHByb3ZpZGVyczogW1Byb3ZpZGVyU2VydmljZV0sXG5cdHNlbGVjdG9yOiAnZm9ybS1idXR0b24nLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IHRleHQtYWxpZ246IGxlZnQ7IHdpZHRoOiAxMDAlXCI+XG5cdFx0XHQ8bmctdGVtcGxhdGUgI3RpcENvbnRlbnQ+XG5cdFx0XHRcdDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGRcIj5FcnJvcnM6PGJyPjwvc3Bhbj5cblx0XHRcdFx0PHVsPlxuXHRcdFx0XHRcdDxsaSAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZ2V0VGlwRXJyb3JzKClcIj57e2Vycm9yfX08L2xpPlxuXHRcdFx0XHQ8L3VsPlxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDxkaXYgW25nYlRvb2x0aXBdPVwiKGdldFRpcEVycm9ycygpLmxlbmd0aCA/IHRpcENvbnRlbnQgOiAnJylcIiBwbGFjZW1lbnQ9XCJ0b3AtbGVmdFwiICN0PlxuXHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBbbmdDbGFzc109XCJbJ2J0bicsIGZvcm0gJiYgZm9ybS52YWxpZCA/ICdidG4tc3VjY2VzcycgOiAnYnRuLWRhbmdlciddXCIgW2Rpc2FibGVkXT1cIiFmb3JtIHx8ICFmb3JtLnZhbGlkIHx8IGRpc2FibGVkXCIgc3R5bGU9XCJ3aWR0aDogMjAwcHhcIiBbYXV0b2ZvY3VzXT1cInRydWVcIiAjZm9ybUJ1dHRvbj5TdWJtaXQ8L2J1dHRvbj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRgXG59KVxuXG5leHBvcnQgY2xhc3MgRm9ybUJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgeyBcblx0QElucHV0KCkgZm9ybTogRm9ybUdyb3VwO1xuXHRASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG5cdEBWaWV3Q2hpbGQoJ2Zvcm1CdXR0b24nLCB7c3RhdGljOiBmYWxzZX0pIHB1YmxpYyBmb3JtQnV0dG9uO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgX3NlcnZpY2VzOiBQcm92aWRlclNlcnZpY2UpIHtcblx0XHRzdXBlcihfc2VydmljZXMpO1xuXHR9XG5cblx0Z2V0VGlwRXJyb3JzKCkge1xuXHRcdGxldCByZXMgPSBbXTtcblxuXHRcdGlmICh0aGlzLmZvcm0gJiYgdGhpcy5mb3JtLmludmFsaWQgJiYgdHlwZW9mKHRoaXMuZm9ybS5jb250cm9scykgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRsZXQga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scyk7XG5cblx0XHRcdGtleXMuZm9yRWFjaChrZXkgPT4ge1xuXHRcdFx0XHRsZXQgY3RybCA9IHRoaXMuZm9ybS5jb250cm9sc1trZXldO1xuXG5cdFx0XHRcdGlmIChjdHJsLmludmFsaWQpIHtcblx0XHRcdFx0XHRyZXMucHVzaChrZXkucmVwbGFjZSgnX2lkJywgJycpLnJlcGxhY2UoJ2lkXycsICcnKS5yZXBsYWNlKCdfJywgJyAnKS5yZXBsYWNlKC9cXGJcXFMvZywgZnVuY3Rpb24odCkgeyByZXR1cm4gdC50b1VwcGVyQ2FzZSgpOyB9KSArICcgaXMgaW52YWxpZCcpO1xuXG5cdFx0XHRcdFx0aWYgKHRoaXMuaXNTdXBlckFkbWluKCkpIHtcblx0XHRcdFx0XHRcdGlmICh0eXBlb2YoY3RybC52YWx1ZSkgPT09ICdvYmplY3QnICYmIEFycmF5LmlzQXJyYXkoY3RybC52YWx1ZSkgJiYgKDxGb3JtQXJyYXk+Y3RybCkuY29udHJvbHMpIHtcblx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCAoPEZvcm1BcnJheT5jdHJsKS5jb250cm9scy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdGxldCBncm91cCA9ICg8Rm9ybUdyb3VwPig8Rm9ybUFycmF5PmN0cmwpLmNvbnRyb2xzW2ldKTtcblxuXHRcdFx0XHRcdFx0XHRcdGlmIChncm91cC5jb250cm9scykge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IGFycmF5S2V5cyA9IE9iamVjdC5rZXlzKGdyb3VwLmNvbnRyb2xzKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0YXJyYXlLZXlzLmZvckVhY2goYXJyYXlLZXkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZXQgYXJyYXlDdHJsID0gZ3JvdXAuY29udHJvbHNbYXJyYXlLZXldO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChhcnJheUN0cmwuaW52YWxpZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlcy5wdXNoKCdbJyArIGkgKyAnXSAtPiAnICsgYXJyYXlLZXkucmVwbGFjZSgnX2lkJywgJycpLnJlcGxhY2UoJ2lkXycsICcnKS5yZXBsYWNlKCdfJywgJyAnKS5yZXBsYWNlKC9cXGJcXFMvZywgZnVuY3Rpb24odCkgeyByZXR1cm4gdC50b1VwcGVyQ2FzZSgpOyB9KSArICcgaXMgaW52YWxpZCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXM7XG5cdH1cblxuXHRpc1N1cGVyQWRtaW4oKSB7XG5cdFx0aWYgKHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmdldFVzZXIoKSAmJiB0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5nZXRVc2VyKCkucm9sZXMuc3VwZXJfYWRtaW4pIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { FormButtonComponent } from './form-button.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class FormButtonModule {
|
|
7
|
+
}
|
|
8
|
+
FormButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
FormButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormButtonModule, declarations: [FormButtonComponent], imports: [CommonModule,
|
|
10
|
+
NgbTooltipModule], exports: [FormButtonComponent] });
|
|
11
|
+
FormButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormButtonModule, imports: [[
|
|
12
|
+
CommonModule,
|
|
13
|
+
NgbTooltipModule
|
|
14
|
+
]] });
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormButtonModule, decorators: [{
|
|
16
|
+
type: NgModule,
|
|
17
|
+
args: [{
|
|
18
|
+
imports: [
|
|
19
|
+
CommonModule,
|
|
20
|
+
NgbTooltipModule
|
|
21
|
+
],
|
|
22
|
+
exports: [
|
|
23
|
+
FormButtonComponent
|
|
24
|
+
],
|
|
25
|
+
declarations: [
|
|
26
|
+
FormButtonComponent
|
|
27
|
+
]
|
|
28
|
+
}]
|
|
29
|
+
}] });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idXR0b24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3dpZGdldHMvZm9ybS1idXR0b24vZm9ybS1idXR0b24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQWM5RCxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBSDNCLG1CQUFtQixhQVBuQixZQUFZO1FBQ1osZ0JBQWdCLGFBR2hCLG1CQUFtQjs4R0FNUixnQkFBZ0IsWUFYbkI7WUFDUixZQUFZO1lBQ1osZ0JBQWdCO1NBQ2hCOzJGQVFXLGdCQUFnQjtrQkFaNUIsUUFBUTttQkFBQztvQkFDVCxPQUFPLEVBQUU7d0JBQ1IsWUFBWTt3QkFDWixnQkFBZ0I7cUJBQ2hCO29CQUNELE9BQU8sRUFBRTt3QkFDUixtQkFBbUI7cUJBQ25CO29CQUNELFlBQVksRUFBRTt3QkFDYixtQkFBbUI7cUJBQ25CO2lCQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdiVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nOyBcblxuaW1wb3J0IHsgRm9ybUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1idXR0b24uY29tcG9uZW50JztcdFx0XHRcblxuQE5nTW9kdWxlKHtcblx0aW1wb3J0czogW1xuXHRcdENvbW1vbk1vZHVsZSxcblx0XHROZ2JUb29sdGlwTW9kdWxlXG5cdF0sXG5cdGV4cG9ydHM6IFtcblx0XHRGb3JtQnV0dG9uQ29tcG9uZW50XG5cdF0sXG5cdGRlY2xhcmF0aW9uczogW1xuXHRcdEZvcm1CdXR0b25Db21wb25lbnRcblx0XVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtQnV0dG9uTW9kdWxlIHsgfVxuIl19
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { BaseComponent, ProviderService } from '../../resolveio-class';
|
|
2
|
+
import { Component, Input, QueryList, ViewChildren, ViewChild, ElementRef } from '@angular/core';
|
|
3
|
+
import { AuthService } from '../../auth/auth.service';
|
|
4
|
+
import { Validators } from '@angular/forms';
|
|
5
|
+
import { DialogService } from '../dialog/dialog.service';
|
|
6
|
+
import { CoreService } from '../../core.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../../resolveio-class";
|
|
9
|
+
import * as i2 from "../../auth/auth.service";
|
|
10
|
+
import * as i3 from "../dialog/dialog.service";
|
|
11
|
+
import * as i4 from "../../core.service";
|
|
12
|
+
import * as i5 from "@ng-bootstrap/ng-bootstrap";
|
|
13
|
+
import * as i6 from "@angular/common";
|
|
14
|
+
import * as i7 from "@angular/router";
|
|
15
|
+
import * as i8 from "../../directive/scroll";
|
|
16
|
+
export class NavbarMainComponent extends BaseComponent {
|
|
17
|
+
constructor(_services, auth, _ds, _app) {
|
|
18
|
+
super(_services);
|
|
19
|
+
this._services = _services;
|
|
20
|
+
this.auth = auth;
|
|
21
|
+
this._ds = _ds;
|
|
22
|
+
this._app = _app;
|
|
23
|
+
this.logo = '';
|
|
24
|
+
this.navTabs = [];
|
|
25
|
+
this.fontSize = 12;
|
|
26
|
+
this.user = null;
|
|
27
|
+
this.collapseShowing = false;
|
|
28
|
+
this.client = '';
|
|
29
|
+
this.isResolveIO = false;
|
|
30
|
+
this.standardProgram = false;
|
|
31
|
+
this.tourStarted = false;
|
|
32
|
+
this.scrollRightInterval = null;
|
|
33
|
+
this.scrollLeftInterval = null;
|
|
34
|
+
this.isDemo = false;
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
this._services._account.user.subscribe(user => {
|
|
38
|
+
this.user = user;
|
|
39
|
+
});
|
|
40
|
+
this.client = this._app.client.getValue();
|
|
41
|
+
this.standardProgram = this._app.standardProgram.getValue();
|
|
42
|
+
this.tourStarted = this._services._app.tourStarted.getValue();
|
|
43
|
+
if (!this.client) {
|
|
44
|
+
this.isResolveIO = true;
|
|
45
|
+
}
|
|
46
|
+
this._services._app.tourStarted.subscribe(tourStarted => {
|
|
47
|
+
this.tourStarted = tourStarted;
|
|
48
|
+
});
|
|
49
|
+
this._services._app.isDemo.subscribe(isDemo => {
|
|
50
|
+
this.isDemo = isDemo;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
ngAfterViewInit() {
|
|
54
|
+
setInterval(() => {
|
|
55
|
+
this.calculateDropdownsLeft();
|
|
56
|
+
}, 500);
|
|
57
|
+
document.documentElement.style.setProperty('--font-size', this.fontSize + 'px');
|
|
58
|
+
}
|
|
59
|
+
logout() {
|
|
60
|
+
this._app.isLoggingOut.next(true);
|
|
61
|
+
this._services._router.navigateByUrl('/home');
|
|
62
|
+
this._services._account.logOut();
|
|
63
|
+
}
|
|
64
|
+
login() {
|
|
65
|
+
this.auth.loginUser().then(() => { }, err => { });
|
|
66
|
+
}
|
|
67
|
+
hasScrolled() {
|
|
68
|
+
if (this.scrollable.nativeElement.scrollLeft <= 0) {
|
|
69
|
+
this.stopScrollRight();
|
|
70
|
+
}
|
|
71
|
+
return this.scrollable.nativeElement.scrollLeft > 0 ? true : false;
|
|
72
|
+
}
|
|
73
|
+
hasMoreScroll() {
|
|
74
|
+
if (this.scrollable.nativeElement.scrollWidth <= this.scrollable.nativeElement.clientWidth + this.scrollable.nativeElement.scrollLeft) {
|
|
75
|
+
this.stopScrollLeft();
|
|
76
|
+
}
|
|
77
|
+
return this.scrollable.nativeElement.scrollWidth > this.scrollable.nativeElement.clientWidth + this.scrollable.nativeElement.scrollLeft ? true : false;
|
|
78
|
+
}
|
|
79
|
+
startScrollRight() {
|
|
80
|
+
this.scrollRightInterval = setInterval(() => {
|
|
81
|
+
this.scrollable.nativeElement.scrollLeft -= 1;
|
|
82
|
+
}, 1);
|
|
83
|
+
}
|
|
84
|
+
stopScrollRight() {
|
|
85
|
+
clearInterval(this.scrollRightInterval);
|
|
86
|
+
}
|
|
87
|
+
scrollRightOnce() {
|
|
88
|
+
this.scrollable.nativeElement.scrollLeft -= 50;
|
|
89
|
+
}
|
|
90
|
+
startScrollLeft() {
|
|
91
|
+
this.scrollLeftInterval = setInterval(() => {
|
|
92
|
+
this.scrollable.nativeElement.scrollLeft += 1;
|
|
93
|
+
}, 1);
|
|
94
|
+
}
|
|
95
|
+
stopScrollLeft() {
|
|
96
|
+
clearInterval(this.scrollLeftInterval);
|
|
97
|
+
}
|
|
98
|
+
scrollLeftOnce() {
|
|
99
|
+
this.scrollable.nativeElement.scrollLeft += 50;
|
|
100
|
+
}
|
|
101
|
+
calculateDropdownsLeft() {
|
|
102
|
+
if (this.dropdowns && this.dropdowns.toArray() && this.dropdowns.toArray().length && this.scrollable) {
|
|
103
|
+
this.navTabs.filter(a => a.type === 'dropdown').forEach(tab => {
|
|
104
|
+
let dropDown = this.dropdowns.toArray().filter(a => a.nativeElement.innerText.split('\n')[0].replace(/[^A-Za-z0-9]/g, '') === tab.label.replace(/[^A-Za-z0-9]/g, ''))[0];
|
|
105
|
+
if (dropDown) {
|
|
106
|
+
tab.left = Math.max(dropDown.nativeElement.offsetLeft - this.scrollable.nativeElement.scrollLeft, this.scrollable.nativeElement.offsetLeft);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
tab.left = 0;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
isInRole(role) {
|
|
117
|
+
if (this.isSuperAdmin()) {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
if (this.user) {
|
|
121
|
+
if (this.user.roles.groups) {
|
|
122
|
+
for (let i = 0; i < this.user.roles.groups.length; i++) {
|
|
123
|
+
let group = this.user.roles.groups[i];
|
|
124
|
+
for (let j = 0; j < group.views.length; j++) {
|
|
125
|
+
let view = group.views[j];
|
|
126
|
+
if (view === role || view.startsWith(role + '/')) {
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
isSuperAdmin() {
|
|
136
|
+
return this.user && this.user.roles ? this.user.roles.super_admin : false;
|
|
137
|
+
}
|
|
138
|
+
isInOneRole(roles) {
|
|
139
|
+
if (this.isSuperAdmin()) {
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
for (let i = 0; i < roles.length; i++) {
|
|
143
|
+
let role = roles[i];
|
|
144
|
+
if (this._services._account.isUserInView(role)) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
navigateTo(route) {
|
|
151
|
+
this._services._router.navigateByUrl(route);
|
|
152
|
+
}
|
|
153
|
+
help() {
|
|
154
|
+
this._ds.input('What do you need help with?', [
|
|
155
|
+
{
|
|
156
|
+
label: 'Title of Problem',
|
|
157
|
+
form: 'problem_title',
|
|
158
|
+
data: '',
|
|
159
|
+
validators: [Validators.required],
|
|
160
|
+
validatorErrors: ['required'],
|
|
161
|
+
validatorMsg: ['Problem title is required.'],
|
|
162
|
+
required: true
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
label: 'Description of Problem',
|
|
166
|
+
form: 'problem_desc',
|
|
167
|
+
data: '',
|
|
168
|
+
validators: [Validators.required],
|
|
169
|
+
validatorErrors: ['required'],
|
|
170
|
+
validatorMsg: ['Problem description is required.'],
|
|
171
|
+
required: true,
|
|
172
|
+
type: 'textarea'
|
|
173
|
+
}
|
|
174
|
+
]).then(helpRes => {
|
|
175
|
+
this._services._socket.call('getHelpNotification', this._services._account.getUser().fullname, helpRes.problem_title.value, helpRes.problem_desc.value);
|
|
176
|
+
}, () => { });
|
|
177
|
+
}
|
|
178
|
+
isCustomer() {
|
|
179
|
+
return this._services._account.getUser().other.customers && this._services._account.getUser().other.customers.length ? true : false;
|
|
180
|
+
}
|
|
181
|
+
getWindowWidth() {
|
|
182
|
+
return window.innerWidth;
|
|
183
|
+
}
|
|
184
|
+
print() {
|
|
185
|
+
window.print();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
NavbarMainComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NavbarMainComponent, deps: [{ token: i1.ProviderService }, { token: i2.AuthService }, { token: i3.DialogService }, { token: i4.CoreService }], target: i0.ɵɵFactoryTarget.Component });
|
|
189
|
+
NavbarMainComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NavbarMainComponent, selector: "navbar-main", inputs: { logo: "logo", navTabs: "navTabs", fontSize: "fontSize" }, providers: [ProviderService], viewQueries: [{ propertyName: "scrollable", first: true, predicate: ["scrollable"], descendants: true, static: true }, { propertyName: "dropdowns", predicate: ["dropdowns"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<style>\n\t:root {\n --font-size: 12;\n }\n\n\t:host /deep/ * {\n\t\tfont-size: var(--font-size);\n\t}\n\n @media (max-width: 1200px) {\n .navbarMain a {\n font-size: 18px !important;\n }\n }\n @media (min-width: 1200px) {\n .scrollable-x {\n max-width: 60vw;\n overflow-x: auto;\n overflow-y: visible;\n align-items: center;\n }\n\n ::-webkit-scrollbar {\n display: none;\n }\n\n .verticalAlign {\n display: flex;\n align-items: center;\n }\n\n .dropdown {\n position: static;\n }\n }\n\n .navbar li {\n cursor: pointer;\n text-align: center;\n }\n\n .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: gray;\n }\n</style>\n\n<div class=\"row\">\n <nav class=\"navbar navbar-expand-xl navbar-dark bg-dark navbarMain\" style=\"width: 100%\">\n <a class=\"navbar-brand\" href=\"#\">\n <img [src]=\"logo\" style=\"width: auto; height: 36px;\" *ngIf=\"!isDemo\">\n </a>\n <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" aria-controls=\"navbarMainNav\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"navbar-collapse collapse\" id=\"navbarMainNav\">\n <ul class=\"navbar-nav\">\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" *ngIf=\"!standardProgram\" [style.border-right]=\"getWindowWidth() > 1200 ? '1px solid white' : ''\">\n <a class=\"nav-link\" routerLink=\"home\" [class.disabled]=\"tourStarted ? true : null\" routerLinkActive=\"active\">Home</a>\n </li>\n <ng-container *ngIf=\"standardProgram\">\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" [class.disabled]=\"tourStarted ? true : null\" routerLink=\"home-standard\" routerLinkActive=\"active\">Home</a>\n </li>\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" *ngIf=\"!user\">\n <a class=\"nav-link\" routerLink=\"contactus-standard\" routerLinkActive=\"active\">Contact Us</a>\n </li>\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" *ngIf=\"!user\">\n <a class=\"nav-link\" routerLink=\"faq\" routerLinkActive=\"active\">FAQ</a>\n </li>\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" *ngIf=\"!user\">\n <a class=\"nav-link\" routerLink=\"features\" routerLinkActive=\"active\">Features</a>\n </li>\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" *ngIf=\"!user\">\n <a class=\"nav-link\" routerLink=\"howitwork\" routerLinkActive=\"active\">How It Works</a>\n </li>\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" *ngIf=\"!user\">\n <a class=\"nav-link\" routerLink=\"pricing\" routerLinkActive=\"active\">Pricing</a>\n </li> \n </ng-container>\n <!-- <ng-container *ngIf=\"isResolveIO && !standardProgram\">\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" routerLink=\"about-us\" routerLinkActive=\"active\">About Us</a>\n </li>\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" routerLink=\"contact-us\" routerLinkActive=\"active\">Contact Us</a>\n </li>\n </ng-container> -->\n </ul>\n <div *ngIf=\"hasScrolled()\" (mouseover)=\"startScrollRight()\" (mouseout)=\"stopScrollRight()\" (click)=\"scrollRightOnce()\">\n <i class=\"fa fa-arrow-left\" style=\"color: white; font-size: 20px\"></i>\n </div>\n <ul [ngClass]=\"['navbar-nav', 'scrollable-x']\" #scrollable detect-scroll (onScroll)=\"calculateDropdownsLeft()\">\n <ng-container *ngFor=\"let tab of navTabs; let i = index;\">\n <ng-container *ngIf=\"tab.type === 'link'\">\n <!-- <li class=\"nav-item\" *ngIf=\"user && isInRole(tab.links[0].role)\" data-toggle=\"collapse\" [tourAnchor]=\"tab.tourAnchor\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" [class.disabled]=\"tourStarted ? true : null\" [routerLink]=\"tab.links[0].routerLink\" routerLinkActive=\"active\">{{tab.links[0].label}}</a>\n </li> -->\n <li class=\"nav-item\" *ngIf=\"user && isInRole(tab.links[0].role)\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" [class.disabled]=\"tourStarted ? true : null\" [routerLink]=\"tab.links[0].routerLink\" routerLinkActive=\"active\">{{tab.links[0].label}}</a>\n </li>\n </ng-container>\n <ng-container *ngIf=\"tab.type === 'dropdown'\">\n <li #dropdowns class=\"nav-item dropdown\" *ngIf=\"user && isInOneRole(tab.roles)\">\n <!-- <a class=\"nav-link dropdown-toggle\" [class.disabled]=\"tourStarted ? true : null\" id=\"navbarDropdownAsset\" role=\"button\" [tourAnchor]=\"tab.tourAnchor\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n {{tab.label}}\n </a> -->\n <a class=\"nav-link dropdown-toggle\" [class.disabled]=\"tourStarted ? true : null\" id=\"navbarDropdownAsset\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n {{tab.label}}\n </a>\n <div class=\"dropdown-menu bg-dark\" aria-labelledby=\"navbarDropdownAsset\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" [style.left.px]=\"tab.left || 0\">\n <ng-container *ngFor=\"let link of tab.links\">\n <a class=\"dropdown-item nav-link\" *ngIf=\"user && isInRole(link.role)\" [routerLink]=\"link.routerLink\">{{link.label}}</a>\n </ng-container>\n </div>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n <div *ngIf=\"hasMoreScroll()\" (mouseover)=\"startScrollLeft()\" (mouseout)=\"stopScrollLeft()\" (click)=\"scrollLeftOnce()\">\n <i class=\"fa fa-arrow-right\" style=\"color: white; font-size: 20px\"></i>\n </div>\n <hr />\n <ul [ngClass]=\"['navbar-nav', getWindowWidth() > 1200 ? 'float-lg-right' : '']\">\n <li class=\"nav-item\" *ngIf=\"user\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" [style.border-left]=\"getWindowWidth() > 1200 ? '1px solid white' : ''\" style=\"height: 30px;\">\n <a class=\"nav-link\" [class.disabled]=\"tourStarted ? true : null\" (click)=\"print()\" style=\"cursor: pointer;\"><i style=\"font-size:20px; color: white;\" class=\"fa fa-print\" aria-hidden=\"true\"></i></a>\n </li>\n <li class=\"nav-item\" *ngIf=\"user && client\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" style=\"height: 30px;\" tourAnchor=\"supportSection\">\n <a class=\"nav-link\" [class.disabled]=\"tourStarted ? true : null\" routerLink=\"support-ticket\" routerLinkActive=\"active\">Support</a>\n </li>\n <li class=\"nav-item\" *ngIf=\"user && isInRole('super-admin')\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" routerLink=\"logs\" routerLinkActive=\"active\">Logs</a>\n </li>\n <li class=\"nav-item\" *ngIf=\"user && isInRole('super-admin')\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" routerLink=\"super-admin\" routerLinkActive=\"active\">Super Admin</a>\n </li>\n </ul>\n <hr />\n <ul [ngClass]=\"['navbar-nav', getWindowWidth() > 1200 ? 'float-lg-right' : '']\">\n <li class=\"nav-item\" *ngIf=\"!user\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" (click)=\"login()\" style=\"cursor: pointer;\" routerLinkActive=\"active\">Login</a>\n </li>\n <li class=\"nav-item\" *ngIf=\"user\" tourAnchor=\"userSettings\">\n <a class=\"nav-link\" [class.disabled]=\"tourStarted ? true : null\" routerLink=\"user-settings\">Hello {{user.fullname}}!</a>\n </li>\n <li class=\"nav-item\" *ngIf=\"user\" style=\"cursor: pointer\" (click)=\"logout()\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" [class.disabled]=\"tourStarted ? true : null\">Logout</a>\n <li>\n </ul>\n </div>\n </nav>\n</div>", styles: ["\n\t:root {\n --font-size: 12;\n }\n\n\t:host /deep/ * {\n\t\tfont-size: var(--font-size);\n\t}\n\n @media (max-width: 1200px) {\n .navbarMain a {\n font-size: 18px !important;\n }\n }\n @media (min-width: 1200px) {\n .scrollable-x {\n max-width: 60vw;\n overflow-x: auto;\n overflow-y: visible;\n align-items: center;\n }\n\n ::-webkit-scrollbar {\n display: none;\n }\n\n .verticalAlign {\n display: flex;\n align-items: center;\n }\n\n .dropdown {\n position: static;\n }\n }\n\n .navbar li {\n cursor: pointer;\n text-align: center;\n }\n\n .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: gray;\n }\n"], directives: [{ type: i5.NgbNavbar, selector: ".navbar" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i7.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { type: i8.ScrollDirective, selector: "[detect-scroll]", inputs: ["bottomOffset", "topOffset"], outputs: ["onScroll"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
190
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NavbarMainComponent, decorators: [{
|
|
191
|
+
type: Component,
|
|
192
|
+
args: [{ selector: 'navbar-main', providers: [ProviderService], template: "<style>\n\t:root {\n --font-size: 12;\n }\n\n\t:host /deep/ * {\n\t\tfont-size: var(--font-size);\n\t}\n\n @media (max-width: 1200px) {\n .navbarMain a {\n font-size: 18px !important;\n }\n }\n @media (min-width: 1200px) {\n .scrollable-x {\n max-width: 60vw;\n overflow-x: auto;\n overflow-y: visible;\n align-items: center;\n }\n\n ::-webkit-scrollbar {\n display: none;\n }\n\n .verticalAlign {\n display: flex;\n align-items: center;\n }\n\n .dropdown {\n position: static;\n }\n }\n\n .navbar li {\n cursor: pointer;\n text-align: center;\n }\n\n .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: gray;\n }\n</style>\n\n<div class=\"row\">\n <nav class=\"navbar navbar-expand-xl navbar-dark bg-dark navbarMain\" style=\"width: 100%\">\n <a class=\"navbar-brand\" href=\"#\">\n <img [src]=\"logo\" style=\"width: auto; height: 36px;\" *ngIf=\"!isDemo\">\n </a>\n <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" aria-controls=\"navbarMainNav\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"navbar-collapse collapse\" id=\"navbarMainNav\">\n <ul class=\"navbar-nav\">\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" *ngIf=\"!standardProgram\" [style.border-right]=\"getWindowWidth() > 1200 ? '1px solid white' : ''\">\n <a class=\"nav-link\" routerLink=\"home\" [class.disabled]=\"tourStarted ? true : null\" routerLinkActive=\"active\">Home</a>\n </li>\n <ng-container *ngIf=\"standardProgram\">\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" [class.disabled]=\"tourStarted ? true : null\" routerLink=\"home-standard\" routerLinkActive=\"active\">Home</a>\n </li>\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" *ngIf=\"!user\">\n <a class=\"nav-link\" routerLink=\"contactus-standard\" routerLinkActive=\"active\">Contact Us</a>\n </li>\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" *ngIf=\"!user\">\n <a class=\"nav-link\" routerLink=\"faq\" routerLinkActive=\"active\">FAQ</a>\n </li>\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" *ngIf=\"!user\">\n <a class=\"nav-link\" routerLink=\"features\" routerLinkActive=\"active\">Features</a>\n </li>\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" *ngIf=\"!user\">\n <a class=\"nav-link\" routerLink=\"howitwork\" routerLinkActive=\"active\">How It Works</a>\n </li>\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" *ngIf=\"!user\">\n <a class=\"nav-link\" routerLink=\"pricing\" routerLinkActive=\"active\">Pricing</a>\n </li> \n </ng-container>\n <!-- <ng-container *ngIf=\"isResolveIO && !standardProgram\">\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" routerLink=\"about-us\" routerLinkActive=\"active\">About Us</a>\n </li>\n <li class=\"nav-item\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" routerLink=\"contact-us\" routerLinkActive=\"active\">Contact Us</a>\n </li>\n </ng-container> -->\n </ul>\n <div *ngIf=\"hasScrolled()\" (mouseover)=\"startScrollRight()\" (mouseout)=\"stopScrollRight()\" (click)=\"scrollRightOnce()\">\n <i class=\"fa fa-arrow-left\" style=\"color: white; font-size: 20px\"></i>\n </div>\n <ul [ngClass]=\"['navbar-nav', 'scrollable-x']\" #scrollable detect-scroll (onScroll)=\"calculateDropdownsLeft()\">\n <ng-container *ngFor=\"let tab of navTabs; let i = index;\">\n <ng-container *ngIf=\"tab.type === 'link'\">\n <!-- <li class=\"nav-item\" *ngIf=\"user && isInRole(tab.links[0].role)\" data-toggle=\"collapse\" [tourAnchor]=\"tab.tourAnchor\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" [class.disabled]=\"tourStarted ? true : null\" [routerLink]=\"tab.links[0].routerLink\" routerLinkActive=\"active\">{{tab.links[0].label}}</a>\n </li> -->\n <li class=\"nav-item\" *ngIf=\"user && isInRole(tab.links[0].role)\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" [class.disabled]=\"tourStarted ? true : null\" [routerLink]=\"tab.links[0].routerLink\" routerLinkActive=\"active\">{{tab.links[0].label}}</a>\n </li>\n </ng-container>\n <ng-container *ngIf=\"tab.type === 'dropdown'\">\n <li #dropdowns class=\"nav-item dropdown\" *ngIf=\"user && isInOneRole(tab.roles)\">\n <!-- <a class=\"nav-link dropdown-toggle\" [class.disabled]=\"tourStarted ? true : null\" id=\"navbarDropdownAsset\" role=\"button\" [tourAnchor]=\"tab.tourAnchor\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n {{tab.label}}\n </a> -->\n <a class=\"nav-link dropdown-toggle\" [class.disabled]=\"tourStarted ? true : null\" id=\"navbarDropdownAsset\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n {{tab.label}}\n </a>\n <div class=\"dropdown-menu bg-dark\" aria-labelledby=\"navbarDropdownAsset\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" [style.left.px]=\"tab.left || 0\">\n <ng-container *ngFor=\"let link of tab.links\">\n <a class=\"dropdown-item nav-link\" *ngIf=\"user && isInRole(link.role)\" [routerLink]=\"link.routerLink\">{{link.label}}</a>\n </ng-container>\n </div>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n <div *ngIf=\"hasMoreScroll()\" (mouseover)=\"startScrollLeft()\" (mouseout)=\"stopScrollLeft()\" (click)=\"scrollLeftOnce()\">\n <i class=\"fa fa-arrow-right\" style=\"color: white; font-size: 20px\"></i>\n </div>\n <hr />\n <ul [ngClass]=\"['navbar-nav', getWindowWidth() > 1200 ? 'float-lg-right' : '']\">\n <li class=\"nav-item\" *ngIf=\"user\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" [style.border-left]=\"getWindowWidth() > 1200 ? '1px solid white' : ''\" style=\"height: 30px;\">\n <a class=\"nav-link\" [class.disabled]=\"tourStarted ? true : null\" (click)=\"print()\" style=\"cursor: pointer;\"><i style=\"font-size:20px; color: white;\" class=\"fa fa-print\" aria-hidden=\"true\"></i></a>\n </li>\n <li class=\"nav-item\" *ngIf=\"user && client\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\" style=\"height: 30px;\" tourAnchor=\"supportSection\">\n <a class=\"nav-link\" [class.disabled]=\"tourStarted ? true : null\" routerLink=\"support-ticket\" routerLinkActive=\"active\">Support</a>\n </li>\n <li class=\"nav-item\" *ngIf=\"user && isInRole('super-admin')\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" routerLink=\"logs\" routerLinkActive=\"active\">Logs</a>\n </li>\n <li class=\"nav-item\" *ngIf=\"user && isInRole('super-admin')\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" routerLink=\"super-admin\" routerLinkActive=\"active\">Super Admin</a>\n </li>\n </ul>\n <hr />\n <ul [ngClass]=\"['navbar-nav', getWindowWidth() > 1200 ? 'float-lg-right' : '']\">\n <li class=\"nav-item\" *ngIf=\"!user\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" (click)=\"login()\" style=\"cursor: pointer;\" routerLinkActive=\"active\">Login</a>\n </li>\n <li class=\"nav-item\" *ngIf=\"user\" tourAnchor=\"userSettings\">\n <a class=\"nav-link\" [class.disabled]=\"tourStarted ? true : null\" routerLink=\"user-settings\">Hello {{user.fullname}}!</a>\n </li>\n <li class=\"nav-item\" *ngIf=\"user\" style=\"cursor: pointer\" (click)=\"logout()\" data-toggle=\"collapse\" data-target=\"#navbarMainNav\">\n <a class=\"nav-link\" [class.disabled]=\"tourStarted ? true : null\">Logout</a>\n <li>\n </ul>\n </div>\n </nav>\n</div>" }]
|
|
193
|
+
}], ctorParameters: function () { return [{ type: i1.ProviderService }, { type: i2.AuthService }, { type: i3.DialogService }, { type: i4.CoreService }]; }, propDecorators: { dropdowns: [{
|
|
194
|
+
type: ViewChildren,
|
|
195
|
+
args: ['dropdowns']
|
|
196
|
+
}], scrollable: [{
|
|
197
|
+
type: ViewChild,
|
|
198
|
+
args: ['scrollable', { static: true }]
|
|
199
|
+
}], logo: [{
|
|
200
|
+
type: Input,
|
|
201
|
+
args: ['logo']
|
|
202
|
+
}], navTabs: [{
|
|
203
|
+
type: Input,
|
|
204
|
+
args: ['navTabs']
|
|
205
|
+
}], fontSize: [{
|
|
206
|
+
type: Input,
|
|
207
|
+
args: ['fontSize']
|
|
208
|
+
}] } });
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLW1haW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3dpZGdldHMvbmF2YmFyLW1haW4vbmF2YmFyLW1haW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3dpZGdldHMvbmF2YmFyLW1haW4vbmF2YmFyLW1haW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQWlCLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXhILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7OztBQU9qRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBYTtJQXNCckQsWUFBb0IsU0FBMEIsRUFBVSxJQUFpQixFQUFVLEdBQWtCLEVBQVUsSUFBaUI7UUFDL0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBREUsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUFVLFNBQUksR0FBSixJQUFJLENBQWE7UUFqQmpILFNBQUksR0FBRyxFQUFFLENBQUM7UUFDUCxZQUFPLEdBQXlCLEVBQUUsQ0FBQztRQUNsQyxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRWpD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Q0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6SixDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRUQsVUFBVTtRQUNULE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDckksQ0FBQztJQUVELGNBQWM7UUFDYixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUs7UUFDSixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEIsQ0FBQzs7Z0hBak5XLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDBHQUZwQixDQUFDLGVBQWUsQ0FBQyxxUENiN0IsNGpUQXNKTTsyRkR2SU8sbUJBQW1CO2tCQUwvQixTQUFTOytCQUNDLGFBQWEsYUFFWixDQUFDLGVBQWUsQ0FBQztzTEFJRCxTQUFTO3NCQUFuQyxZQUFZO3VCQUFDLFdBQVc7Z0JBQ2dCLFVBQVU7c0JBQWxELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFFeEIsSUFBSTtzQkFBbEIsS0FBSzt1QkFBQyxNQUFNO2dCQUNLLE9BQU87c0JBQXhCLEtBQUs7dUJBQUMsU0FBUztnQkFDRyxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9yZXNvbHZlaW8tY2xhc3MnO1xuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXIubW9kZWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgUXVlcnlMaXN0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGRyZW4sIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5hdmJhck1haW5UYWJNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9uYXZiYXItbWFpbi10YWIubW9kZWwnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBDb3JlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25hdmJhci1tYWluJyxcblx0dGVtcGxhdGVVcmw6ICcuL25hdmJhci1tYWluLmNvbXBvbmVudC5odG1sJyxcblx0cHJvdmlkZXJzOiBbUHJvdmlkZXJTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBOYXZiYXJNYWluQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cblx0QFZpZXdDaGlsZHJlbignZHJvcGRvd25zJykgZHJvcGRvd25zOiBRdWVyeUxpc3Q8YW55Pjtcblx0QFZpZXdDaGlsZCgnc2Nyb2xsYWJsZScsIHtzdGF0aWM6IHRydWV9KSBzY3JvbGxhYmxlOiBFbGVtZW50UmVmO1xuXG5cdEBJbnB1dCgnbG9nbycpIGxvZ28gPSAnJztcblx0QElucHV0KCduYXZUYWJzJykgbmF2VGFiczogTmF2YmFyTWFpblRhYk1vZGVsW10gPSBbXTtcblx0QElucHV0KCdmb250U2l6ZScpIGZvbnRTaXplID0gMTI7XG5cblx0dXNlcjogVXNlck1vZGVsID0gbnVsbDtcblx0Y29sbGFwc2VTaG93aW5nID0gZmFsc2U7XG5cblx0Y2xpZW50ID0gJyc7XG5cblx0aXNSZXNvbHZlSU8gPSBmYWxzZTtcblx0c3RhbmRhcmRQcm9ncmFtID0gZmFsc2U7XG5cdHRvdXJTdGFydGVkID0gZmFsc2U7XG5cblx0c2Nyb2xsUmlnaHRJbnRlcnZhbCA9IG51bGw7XG5cdHNjcm9sbExlZnRJbnRlcnZhbCA9IG51bGw7XG5cdGlzRGVtbyA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgX3NlcnZpY2VzOiBQcm92aWRlclNlcnZpY2UsIHByaXZhdGUgYXV0aDogQXV0aFNlcnZpY2UsIHByaXZhdGUgX2RzOiBEaWFsb2dTZXJ2aWNlLCBwcml2YXRlIF9hcHA6IENvcmVTZXJ2aWNlKSB7XG5cdFx0c3VwZXIoX3NlcnZpY2VzKTtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LnVzZXIuc3Vic2NyaWJlKHVzZXIgPT4ge1xuXHRcdFx0dGhpcy51c2VyID0gdXNlcjtcblx0XHR9KTtcblxuXHRcdHRoaXMuY2xpZW50ID0gdGhpcy5fYXBwLmNsaWVudC5nZXRWYWx1ZSgpO1xuXHRcdHRoaXMuc3RhbmRhcmRQcm9ncmFtID0gdGhpcy5fYXBwLnN0YW5kYXJkUHJvZ3JhbS5nZXRWYWx1ZSgpO1xuXHRcdHRoaXMudG91clN0YXJ0ZWQgPSB0aGlzLl9zZXJ2aWNlcy5fYXBwLnRvdXJTdGFydGVkLmdldFZhbHVlKCk7XG5cblx0XHRpZiAoIXRoaXMuY2xpZW50KSB7XG5cdFx0XHR0aGlzLmlzUmVzb2x2ZUlPID0gdHJ1ZTtcblx0XHR9XG5cblx0XHR0aGlzLl9zZXJ2aWNlcy5fYXBwLnRvdXJTdGFydGVkLnN1YnNjcmliZSh0b3VyU3RhcnRlZCA9PiB7XG5cdFx0XHR0aGlzLnRvdXJTdGFydGVkID0gdG91clN0YXJ0ZWQ7XG5cdFx0fSk7XG5cblx0XHR0aGlzLl9zZXJ2aWNlcy5fYXBwLmlzRGVtby5zdWJzY3JpYmUoaXNEZW1vID0+IHtcblx0XHRcdHRoaXMuaXNEZW1vID0gaXNEZW1vO1xuXHRcdH0pO1xuXHR9XG5cblx0bmdBZnRlclZpZXdJbml0KCkge1xuXHRcdHNldEludGVydmFsKCgpID0+IHtcblx0XHRcdHRoaXMuY2FsY3VsYXRlRHJvcGRvd25zTGVmdCgpO1xuXHRcdH0sIDUwMCk7XG5cdFx0ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWZvbnQtc2l6ZScsIHRoaXMuZm9udFNpemUgKyAncHgnKTtcblx0fVxuXG5cdGxvZ291dCgpIHtcblx0XHR0aGlzLl9hcHAuaXNMb2dnaW5nT3V0Lm5leHQodHJ1ZSk7XG5cdFx0dGhpcy5fc2VydmljZXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvaG9tZScpO1xuXHRcdHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmxvZ091dCgpO1xuXHR9XG5cblx0bG9naW4oKSB7XG5cdFx0dGhpcy5hdXRoLmxvZ2luVXNlcigpLnRoZW4oKCkgPT4ge30sIGVyciA9PiB7fSk7XG5cdH1cblxuXHRoYXNTY3JvbGxlZCgpIHtcblx0XHRpZiAodGhpcy5zY3JvbGxhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA8PSAwKSB7XG5cdFx0XHR0aGlzLnN0b3BTY3JvbGxSaWdodCgpO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnNjcm9sbGFibGUubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID4gMCA/IHRydWUgOiBmYWxzZTtcblx0fVxuXG5cdGhhc01vcmVTY3JvbGwoKSB7XG5cdFx0aWYgKHRoaXMuc2Nyb2xsYWJsZS5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoIDw9IHRoaXMuc2Nyb2xsYWJsZS5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoICsgdGhpcy5zY3JvbGxhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCkge1xuXHRcdFx0dGhpcy5zdG9wU2Nyb2xsTGVmdCgpO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnNjcm9sbGFibGUubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aCA+IHRoaXMuc2Nyb2xsYWJsZS5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoICsgdGhpcy5zY3JvbGxhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA/IHRydWUgOiBmYWxzZTtcblx0fVxuXG5cdHN0YXJ0U2Nyb2xsUmlnaHQoKSB7XG5cdFx0dGhpcy5zY3JvbGxSaWdodEludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0dGhpcy5zY3JvbGxhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCAtPSAxO1xuXHRcdH0sIDEpO1xuXHR9XG5cblx0c3RvcFNjcm9sbFJpZ2h0KCkge1xuXHRcdGNsZWFySW50ZXJ2YWwodGhpcy5zY3JvbGxSaWdodEludGVydmFsKTtcblx0fVxuXG5cdHNjcm9sbFJpZ2h0T25jZSgpIHtcblx0XHR0aGlzLnNjcm9sbGFibGUubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0IC09IDUwO1xuXHR9XG5cblx0c3RhcnRTY3JvbGxMZWZ0KCkge1xuXHRcdHRoaXMuc2Nyb2xsTGVmdEludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0dGhpcy5zY3JvbGxhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCArPSAxO1xuXHRcdH0sIDEpO1xuXHR9XG5cblx0c3RvcFNjcm9sbExlZnQoKSB7XG5cdFx0Y2xlYXJJbnRlcnZhbCh0aGlzLnNjcm9sbExlZnRJbnRlcnZhbCk7XG5cdH1cblxuXHRzY3JvbGxMZWZ0T25jZSgpIHtcblx0XHR0aGlzLnNjcm9sbGFibGUubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ICs9IDUwO1xuXHR9XG5cdFxuXHRjYWxjdWxhdGVEcm9wZG93bnNMZWZ0KCkge1xuXHRcdGlmICh0aGlzLmRyb3Bkb3ducyAmJiB0aGlzLmRyb3Bkb3ducy50b0FycmF5KCkgJiYgdGhpcy5kcm9wZG93bnMudG9BcnJheSgpLmxlbmd0aCAmJiB0aGlzLnNjcm9sbGFibGUpIHtcblx0XHRcdHRoaXMubmF2VGFicy5maWx0ZXIoYSA9PiBhLnR5cGUgPT09ICdkcm9wZG93bicpLmZvckVhY2godGFiID0+IHtcblx0XHRcdFx0bGV0IGRyb3BEb3duID0gdGhpcy5kcm9wZG93bnMudG9BcnJheSgpLmZpbHRlcihhID0+IGEubmF0aXZlRWxlbWVudC5pbm5lclRleHQuc3BsaXQoJ1xcbicpWzBdLnJlcGxhY2UoL1teQS1aYS16MC05XS9nLCAnJykgPT09IHRhYi5sYWJlbC5yZXBsYWNlKC9bXkEtWmEtejAtOV0vZywgJycpKVswXTtcblxuXHRcdFx0XHRpZiAoZHJvcERvd24pIHtcblx0XHRcdFx0XHR0YWIubGVmdCA9IE1hdGgubWF4KGRyb3BEb3duLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCAtIHRoaXMuc2Nyb2xsYWJsZS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQsIHRoaXMuc2Nyb2xsYWJsZS5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdHRhYi5sZWZ0ID0gMDtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRpc0luUm9sZShyb2xlOiBhbnkpIHtcblx0XHRpZiAodGhpcy5pc1N1cGVyQWRtaW4oKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMudXNlcikge1xuXHRcdFx0aWYgKCg8YW55PnRoaXMudXNlci5yb2xlcykuZ3JvdXBzKSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgKDxhbnk+dGhpcy51c2VyLnJvbGVzKS5ncm91cHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRsZXQgZ3JvdXAgPSAoPGFueT50aGlzLnVzZXIucm9sZXMpLmdyb3Vwc1tpXTtcblx0XHRcdFx0XHRmb3IgKGxldCBqID0gMDsgaiA8IGdyb3VwLnZpZXdzLmxlbmd0aDsgaisrKSB7XHRcblx0XHRcdFx0XHRcdGxldCB2aWV3ID0gZ3JvdXAudmlld3Nbal07XG5cdFx0XHRcdFx0XHRpZiAodmlldyA9PT0gcm9sZSB8fCB2aWV3LnN0YXJ0c1dpdGgocm9sZSArICcvJykpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0aXNTdXBlckFkbWluKCkge1xuXHRcdHJldHVybiB0aGlzLnVzZXIgJiYgdGhpcy51c2VyLnJvbGVzID8gKDxhbnk+dGhpcy51c2VyLnJvbGVzKS5zdXBlcl9hZG1pbiA6IGZhbHNlO1xuXHR9XG5cblx0aXNJbk9uZVJvbGUocm9sZXM6IHN0cmluZ1tdKSB7XG5cdFx0aWYgKHRoaXMuaXNTdXBlckFkbWluKCkpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm9sZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCByb2xlID0gcm9sZXNbaV07XG5cblx0XHRcdGlmICh0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5pc1VzZXJJblZpZXcocm9sZSkpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0bmF2aWdhdGVUbyhyb3V0ZTogc3RyaW5nKSB7XG5cdFx0dGhpcy5fc2VydmljZXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJvdXRlKTtcblx0fVxuXG5cdGhlbHAoKSB7XG5cdFx0dGhpcy5fZHMuaW5wdXQoJ1doYXQgZG8geW91IG5lZWQgaGVscCB3aXRoPycsIFtcblx0XHRcdHtcblx0XHRcdFx0bGFiZWw6ICdUaXRsZSBvZiBQcm9ibGVtJywgXG5cdFx0XHRcdGZvcm06ICdwcm9ibGVtX3RpdGxlJywgXG5cdFx0XHRcdGRhdGE6ICcnLCBcblx0XHRcdFx0dmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuXHRcdFx0XHR2YWxpZGF0b3JFcnJvcnM6IFsncmVxdWlyZWQnXSxcblx0XHRcdFx0dmFsaWRhdG9yTXNnOiBbJ1Byb2JsZW0gdGl0bGUgaXMgcmVxdWlyZWQuJ10sXG5cdFx0XHRcdHJlcXVpcmVkOiB0cnVlXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRsYWJlbDogJ0Rlc2NyaXB0aW9uIG9mIFByb2JsZW0nLCBcblx0XHRcdFx0Zm9ybTogJ3Byb2JsZW1fZGVzYycsIFxuXHRcdFx0XHRkYXRhOiAnJywgXG5cdFx0XHRcdHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcblx0XHRcdFx0dmFsaWRhdG9yRXJyb3JzOiBbJ3JlcXVpcmVkJ10sXG5cdFx0XHRcdHZhbGlkYXRvck1zZzogWydQcm9ibGVtIGRlc2NyaXB0aW9uIGlzIHJlcXVpcmVkLiddLFxuXHRcdFx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJ1xuXHRcdFx0fVxuXHRcdF0pLnRoZW4oaGVscFJlcyA9PiB7XG5cdFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2dldEhlbHBOb3RpZmljYXRpb24nLCB0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5nZXRVc2VyKCkuZnVsbG5hbWUsIGhlbHBSZXMucHJvYmxlbV90aXRsZS52YWx1ZSwgaGVscFJlcy5wcm9ibGVtX2Rlc2MudmFsdWUpO1xuXHRcdH0sICgpID0+IHt9KTtcblx0fVxuXG5cdGlzQ3VzdG9tZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmdldFVzZXIoKS5vdGhlci5jdXN0b21lcnMgJiYgdGhpcy5fc2VydmljZXMuX2FjY291bnQuZ2V0VXNlcigpLm90aGVyLmN1c3RvbWVycy5sZW5ndGggPyB0cnVlIDogZmFsc2U7XG5cdH1cblxuXHRnZXRXaW5kb3dXaWR0aCgpIHtcblx0XHRyZXR1cm4gd2luZG93LmlubmVyV2lkdGg7XG5cdH1cblxuXHRwcmludCgpIHtcblx0XHR3aW5kb3cucHJpbnQoKTtcblx0fVxufSIsIjxzdHlsZT5cblx0OnJvb3Qge1xuICAgICAgICAtLWZvbnQtc2l6ZTogMTI7XG4gICAgfVxuXG5cdDpob3N0IC9kZWVwLyAqIHtcblx0XHRmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZSk7XG5cdH1cblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHtcbiAgICAgICAgLm5hdmJhck1haW4gYSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgICAgIC5zY3JvbGxhYmxlLXgge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA2MHZ3O1xuICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgICAgIG92ZXJmbG93LXk6IHZpc2libGU7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAudmVydGljYWxBbGlnbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wZG93biB7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm5hdmJhciBsaSB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6aG92ZXIsIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXMge1xuICAgICAgICBjb2xvcjogZ3JheTtcbiAgICB9XG48L3N0eWxlPlxuXG48ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPG5hdiBjbGFzcz1cIm5hdmJhciBuYXZiYXItZXhwYW5kLXhsIG5hdmJhci1kYXJrIGJnLWRhcmsgbmF2YmFyTWFpblwiIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJuYXZiYXItYnJhbmRcIiBocmVmPVwiI1wiPlxuICAgICAgICAgICAgPGltZyBbc3JjXT1cImxvZ29cIiBzdHlsZT1cIndpZHRoOiBhdXRvOyBoZWlnaHQ6IDM2cHg7XCIgKm5nSWY9XCIhaXNEZW1vXCI+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5hdmJhci10b2dnbGVyXCIgdHlwZT1cImJ1dHRvblwiIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIiBkYXRhLXRhcmdldD1cIiNuYXZiYXJNYWluTmF2XCIgYXJpYS1jb250cm9scz1cIm5hdmJhck1haW5OYXZcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIiBhcmlhLWxhYmVsPVwiVG9nZ2xlIG5hdmlnYXRpb25cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2YmFyLXRvZ2dsZXItaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXZiYXItY29sbGFwc2UgY29sbGFwc2VcIiBpZD1cIm5hdmJhck1haW5OYXZcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5hdmJhci1uYXZcIj5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIiBkYXRhLXRhcmdldD1cIiNuYXZiYXJNYWluTmF2XCIgKm5nSWY9XCIhc3RhbmRhcmRQcm9ncmFtXCIgW3N0eWxlLmJvcmRlci1yaWdodF09XCJnZXRXaW5kb3dXaWR0aCgpID4gMTIwMCA/ICcxcHggc29saWQgd2hpdGUnIDogJydcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtbGlua1wiIHJvdXRlckxpbms9XCJob21lXCIgW2NsYXNzLmRpc2FibGVkXT1cInRvdXJTdGFydGVkID8gdHJ1ZSA6IG51bGxcIiByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCI+SG9tZTwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGFuZGFyZFByb2dyYW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiBkYXRhLXRvZ2dsZT1cImNvbGxhcHNlXCIgZGF0YS10YXJnZXQ9XCIjbmF2YmFyTWFpbk5hdlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtbGlua1wiIFtjbGFzcy5kaXNhYmxlZF09XCJ0b3VyU3RhcnRlZCA/IHRydWUgOiBudWxsXCIgcm91dGVyTGluaz1cImhvbWUtc3RhbmRhcmRcIiByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCI+SG9tZTwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiBkYXRhLXRvZ2dsZT1cImNvbGxhcHNlXCIgZGF0YS10YXJnZXQ9XCIjbmF2YmFyTWFpbk5hdlwiICpuZ0lmPVwiIXVzZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiByb3V0ZXJMaW5rPVwiY29udGFjdHVzLXN0YW5kYXJkXCIgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiPkNvbnRhY3QgVXM8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiIGRhdGEtdGFyZ2V0PVwiI25hdmJhck1haW5OYXZcIiAqbmdJZj1cIiF1c2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgcm91dGVyTGluaz1cImZhcVwiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIj5GQVE8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiIGRhdGEtdGFyZ2V0PVwiI25hdmJhck1haW5OYXZcIiAqbmdJZj1cIiF1c2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgcm91dGVyTGluaz1cImZlYXR1cmVzXCIgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiPkZlYXR1cmVzPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIiBkYXRhLXRhcmdldD1cIiNuYXZiYXJNYWluTmF2XCIgKm5nSWY9XCIhdXNlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtbGlua1wiIHJvdXRlckxpbms9XCJob3dpdHdvcmtcIiByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCI+SG93IEl0IFdvcmtzPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIiBkYXRhLXRhcmdldD1cIiNuYXZiYXJNYWluTmF2XCIgKm5nSWY9XCIhdXNlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtbGlua1wiIHJvdXRlckxpbms9XCJwcmljaW5nXCIgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiPlByaWNpbmc8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Jlc29sdmVJTyAmJiAhc3RhbmRhcmRQcm9ncmFtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiIGRhdGEtdGFyZ2V0PVwiI25hdmJhck1haW5OYXZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiByb3V0ZXJMaW5rPVwiYWJvdXQtdXNcIiByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCI+QWJvdXQgVXM8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiIGRhdGEtdGFyZ2V0PVwiI25hdmJhck1haW5OYXZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiByb3V0ZXJMaW5rPVwiY29udGFjdC11c1wiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIj5Db250YWN0IFVzPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGFzU2Nyb2xsZWQoKVwiIChtb3VzZW92ZXIpPVwic3RhcnRTY3JvbGxSaWdodCgpXCIgKG1vdXNlb3V0KT1cInN0b3BTY3JvbGxSaWdodCgpXCIgKGNsaWNrKT1cInNjcm9sbFJpZ2h0T25jZSgpXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1sZWZ0XCIgc3R5bGU9XCJjb2xvcjogd2hpdGU7IGZvbnQtc2l6ZTogMjBweFwiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHVsIFtuZ0NsYXNzXT1cIlsnbmF2YmFyLW5hdicsICdzY3JvbGxhYmxlLXgnXVwiICNzY3JvbGxhYmxlIGRldGVjdC1zY3JvbGwgKG9uU2Nyb2xsKT1cImNhbGN1bGF0ZURyb3Bkb3duc0xlZnQoKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiBuYXZUYWJzOyBsZXQgaSA9IGluZGV4O1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFiLnR5cGUgPT09ICdsaW5rJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiICpuZ0lmPVwidXNlciAmJiBpc0luUm9sZSh0YWIubGlua3NbMF0ucm9sZSlcIiBkYXRhLXRvZ2dsZT1cImNvbGxhcHNlXCIgW3RvdXJBbmNob3JdPVwidGFiLnRvdXJBbmNob3JcIiBkYXRhLXRhcmdldD1cIiNuYXZiYXJNYWluTmF2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtbGlua1wiIFtjbGFzcy5kaXNhYmxlZF09XCJ0b3VyU3RhcnRlZCA/IHRydWUgOiBudWxsXCIgW3JvdXRlckxpbmtdPVwidGFiLmxpbmtzWzBdLnJvdXRlckxpbmtcIiByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCI+e3t0YWIubGlua3NbMF0ubGFiZWx9fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdJZj1cInVzZXIgJiYgaXNJblJvbGUodGFiLmxpbmtzWzBdLnJvbGUpXCIgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiIGRhdGEtdGFyZ2V0PVwiI25hdmJhck1haW5OYXZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgW2NsYXNzLmRpc2FibGVkXT1cInRvdXJTdGFydGVkID8gdHJ1ZSA6IG51bGxcIiBbcm91dGVyTGlua109XCJ0YWIubGlua3NbMF0ucm91dGVyTGlua1wiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIj57e3RhYi5saW5rc1swXS5sYWJlbH19PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWIudHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICNkcm9wZG93bnMgY2xhc3M9XCJuYXYtaXRlbSBkcm9wZG93blwiICpuZ0lmPVwidXNlciAmJiBpc0luT25lUm9sZSh0YWIucm9sZXMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YSBjbGFzcz1cIm5hdi1saW5rIGRyb3Bkb3duLXRvZ2dsZVwiIFtjbGFzcy5kaXNhYmxlZF09XCJ0b3VyU3RhcnRlZCA/IHRydWUgOiBudWxsXCIgaWQ9XCJuYXZiYXJEcm9wZG93bkFzc2V0XCIgcm9sZT1cImJ1dHRvblwiIFt0b3VyQW5jaG9yXT1cInRhYi50b3VyQW5jaG9yXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dGFiLmxhYmVsfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmsgZHJvcGRvd24tdG9nZ2xlXCIgW2NsYXNzLmRpc2FibGVkXT1cInRvdXJTdGFydGVkID8gdHJ1ZSA6IG51bGxcIiBpZD1cIm5hdmJhckRyb3Bkb3duQXNzZXRcIiByb2xlPVwiYnV0dG9uXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dGFiLmxhYmVsfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgYmctZGFya1wiIGFyaWEtbGFiZWxsZWRieT1cIm5hdmJhckRyb3Bkb3duQXNzZXRcIiBkYXRhLXRvZ2dsZT1cImNvbGxhcHNlXCIgZGF0YS10YXJnZXQ9XCIjbmF2YmFyTWFpbk5hdlwiIFtzdHlsZS5sZWZ0LnB4XT1cInRhYi5sZWZ0IHx8IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGluayBvZiB0YWIubGlua3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBuYXYtbGlua1wiICpuZ0lmPVwidXNlciAmJiBpc0luUm9sZShsaW5rLnJvbGUpXCIgW3JvdXRlckxpbmtdPVwibGluay5yb3V0ZXJMaW5rXCI+e3tsaW5rLmxhYmVsfX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhhc01vcmVTY3JvbGwoKVwiIChtb3VzZW92ZXIpPVwic3RhcnRTY3JvbGxMZWZ0KClcIiAobW91c2VvdXQpPVwic3RvcFNjcm9sbExlZnQoKVwiIChjbGljayk9XCJzY3JvbGxMZWZ0T25jZSgpXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1yaWdodFwiIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBmb250LXNpemU6IDIwcHhcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxociAvPlxuICAgICAgICAgICAgPHVsIFtuZ0NsYXNzXT1cIlsnbmF2YmFyLW5hdicsIGdldFdpbmRvd1dpZHRoKCkgPiAxMjAwID8gJ2Zsb2F0LWxnLXJpZ2h0JyA6ICcnXVwiPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgKm5nSWY9XCJ1c2VyXCIgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiIGRhdGEtdGFyZ2V0PVwiI25hdmJhck1haW5OYXZcIiBbc3R5bGUuYm9yZGVyLWxlZnRdPVwiZ2V0V2luZG93V2lkdGgoKSA+IDEyMDAgPyAnMXB4IHNvbGlkIHdoaXRlJyA6ICcnXCIgc3R5bGU9XCJoZWlnaHQ6IDMwcHg7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiBbY2xhc3MuZGlzYWJsZWRdPVwidG91clN0YXJ0ZWQgPyB0cnVlIDogbnVsbFwiIChjbGljayk9XCJwcmludCgpXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+PGkgc3R5bGU9XCJmb250LXNpemU6MjBweDsgY29sb3I6IHdoaXRlO1wiIGNsYXNzPVwiZmEgZmEtcHJpbnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdJZj1cInVzZXIgJiYgY2xpZW50XCIgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiIGRhdGEtdGFyZ2V0PVwiI25hdmJhck1haW5OYXZcIiBzdHlsZT1cImhlaWdodDogMzBweDtcIiB0b3VyQW5jaG9yPVwic3VwcG9ydFNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtbGlua1wiIFtjbGFzcy5kaXNhYmxlZF09XCJ0b3VyU3RhcnRlZCA/IHRydWUgOiBudWxsXCIgcm91dGVyTGluaz1cInN1cHBvcnQtdGlja2V0XCIgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiPlN1cHBvcnQ8L2E+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiICpuZ0lmPVwidXNlciAmJiBpc0luUm9sZSgnc3VwZXItYWRtaW4nKVwiIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIiBkYXRhLXRhcmdldD1cIiNuYXZiYXJNYWluTmF2XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiByb3V0ZXJMaW5rPVwibG9nc1wiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIj5Mb2dzPC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdJZj1cInVzZXIgJiYgaXNJblJvbGUoJ3N1cGVyLWFkbWluJylcIiBkYXRhLXRvZ2dsZT1cImNvbGxhcHNlXCIgZGF0YS10YXJnZXQ9XCIjbmF2YmFyTWFpbk5hdlwiPlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgcm91dGVyTGluaz1cInN1cGVyLWFkbWluXCIgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiPlN1cGVyIEFkbWluPC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPGhyIC8+XG4gICAgICAgICAgICA8dWwgW25nQ2xhc3NdPVwiWyduYXZiYXItbmF2JywgZ2V0V2luZG93V2lkdGgoKSA+IDEyMDAgPyAnZmxvYXQtbGctcmlnaHQnIDogJyddXCI+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdJZj1cIiF1c2VyXCIgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiIGRhdGEtdGFyZ2V0PVwiI25hdmJhck1haW5OYXZcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtbGlua1wiIChjbGljayk9XCJsb2dpbigpXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiPkxvZ2luPC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdJZj1cInVzZXJcIiB0b3VyQW5jaG9yPVwidXNlclNldHRpbmdzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiBbY2xhc3MuZGlzYWJsZWRdPVwidG91clN0YXJ0ZWQgPyB0cnVlIDogbnVsbFwiIHJvdXRlckxpbms9XCJ1c2VyLXNldHRpbmdzXCI+SGVsbG8ge3t1c2VyLmZ1bGxuYW1lfX0hPC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdJZj1cInVzZXJcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiIChjbGljayk9XCJsb2dvdXQoKVwiIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIiBkYXRhLXRhcmdldD1cIiNuYXZiYXJNYWluTmF2XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiBbY2xhc3MuZGlzYWJsZWRdPVwidG91clN0YXJ0ZWQgPyB0cnVlIDogbnVsbFwiPkxvZ291dDwvYT5cbiAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25hdj5cbjwvZGl2PiJdfQ==
|