@sabstravtech/obtservices 0.0.0 → 0.0.2
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/dist/obtservices/angular/components/basket-panel.d.ts +34 -0
- package/dist/obtservices/angular/components/with-component.d.ts +12 -0
- package/dist/obtservices/angular/data.d.ts +5530 -0
- package/dist/obtservices/angular/fetchers.d.ts +32 -0
- package/dist/obtservices/angular/lib/vendor/classes/environment.d.ts +3 -0
- package/dist/obtservices/angular/lib/vendor/classes/event-messenager.d.ts +4 -0
- package/dist/obtservices/angular/lib/vendor/classes/helpers.d.ts +15 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/basket-fetcher.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/cabhire-quote-fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/carhire-availability-detail.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/carhire-quote-fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/conferma-office-names.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/conferma-quicklist.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/eurostar-quote.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/flight-quote.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/get-rail-cards.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/get-rail-station.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/get-risk-alerts.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/get-user-company-offices.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/get-user-current-carbon-allowance.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/get-user-recent-searches.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/get-users-baskets-fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/getMiAutoSugestions.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/hotel-avaliability-fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/hotel-quote-fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/irl-quote-fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/lounge-quote.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/parking-quote-fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/rail-quote-fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/search-airlines-fetcher.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/search-airports-fetcher.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/search-cities.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/search-conferma-cities.fetcher.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/search-depots.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/search-hotel-chains.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/search-postcodes.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/search-rail-stations.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/search-users-can-book-for-fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/user-addresses.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/user-fetcher.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/user-message.fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/user-products-fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/fetchers/user-ui-configs-fetcher.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/services/enterprise-basket.service.d.ts +29 -0
- package/dist/obtservices/angular/lib/vendor/services/hotel-avallibility.service.d.ts +9 -0
- package/dist/obtservices/angular/lib/vendor/services/http-call.service.d.ts +48 -0
- package/dist/obtservices/angular/lib/vendor/services/logon.service.d.ts +18 -0
- package/dist/obtservices/angular/lib/vendor/services/modal-opener.service.d.ts +4 -0
- package/dist/obtservices/angular/lib/vendor/services/my-bookings.service.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/services/route-happy.service.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/services/search.service.d.ts +47 -0
- package/dist/obtservices/angular/lib/vendor/services/storage.service.d.ts +18 -0
- package/dist/obtservices/angular/lib/vendor/services/user.service.d.ts +10 -0
- package/dist/obtservices/angular/lib/vendor/services/webtoken.service.d.ts +7 -0
- package/dist/obtservices/angular/lib/vendor/testers/postcode-validate.tester.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/testers/validate-mi-free-value.tester.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/types/graphql.angular.types.d.ts +5915 -0
- package/dist/obtservices/angular/lib/vendor/updaters/accept-new-price.updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/add-item-to-basket.updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/addUserToBasketItem.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/book-basket-updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/create-basket-updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/move-basket-item-to-basket.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/remove-basket-updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/remove-item-from-basket.updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/remove-recent-search.updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/remove-user-address.updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/revalidate-basket-updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/save-recent-search.updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/save-user-address.updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/send-basket-for-approval.updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/set-basket-item-lead-passenger.updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/set-basket-item-mi-group.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/set-basket-item-mi-value-updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/set-payment-option.updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/update-basket-notes-updater.d.ts +6 -0
- package/dist/obtservices/angular/lib/vendor/updaters/update-basket-title-updater.d.ts +6 -0
- package/dist/obtservices/angular/obtservices-angular.d.ts +17 -0
- package/dist/obtservices/angular/obtservices-angular.metadata.json +1 -0
- package/dist/obtservices/angular/obtservices.module.d.ts +7 -0
- package/dist/obtservices/angular/package.json +11 -0
- package/dist/obtservices/base/fetchers.d.ts +36 -0
- package/dist/obtservices/base/lib/vendor/classes/base-enterprise.d.ts +39 -0
- package/dist/obtservices/base/lib/vendor/classes/base-network-call.d.ts +10 -0
- package/dist/obtservices/base/lib/vendor/classes/basket-info-mi-details.impl.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/classes/bookable-basket.d.ts +40 -0
- package/dist/obtservices/base/lib/vendor/classes/cabhire-enterprise-search.d.ts +138 -0
- package/dist/obtservices/base/lib/vendor/classes/carhire-enterprise-search.d.ts +203 -0
- package/dist/obtservices/base/lib/vendor/classes/enviroment.d.ts +24 -0
- package/dist/obtservices/base/lib/vendor/classes/eurostar-enterprise-search.d.ts +268 -0
- package/dist/obtservices/base/lib/vendor/classes/eurostar-search-type.enum.d.ts +4 -0
- package/dist/obtservices/base/lib/vendor/classes/event-messenager.d.ts +12 -0
- package/dist/obtservices/base/lib/vendor/classes/flight-enterprise-search.d.ts +251 -0
- package/dist/obtservices/base/lib/vendor/classes/flight-search-type.enum.d.ts +5 -0
- package/dist/obtservices/base/lib/vendor/classes/helpers.d.ts +173 -0
- package/dist/obtservices/base/lib/vendor/classes/hotel-enterprise-search.d.ts +176 -0
- package/dist/obtservices/base/lib/vendor/classes/irl-enterprise-search.d.ts +139 -0
- package/dist/obtservices/base/lib/vendor/classes/limited-cache.class.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/classes/lounges-enterprise-search.d.ts +68 -0
- package/dist/obtservices/base/lib/vendor/classes/management-info-and-valid.d.ts +41 -0
- package/dist/obtservices/base/lib/vendor/classes/modal-types.enum.d.ts +12 -0
- package/dist/obtservices/base/lib/vendor/classes/parking-enterprise-search.d.ts +103 -0
- package/dist/obtservices/base/lib/vendor/classes/rail-direction.enum.d.ts +4 -0
- package/dist/obtservices/base/lib/vendor/classes/rail-enterprise-search.d.ts +193 -0
- package/dist/obtservices/base/lib/vendor/classes/routehappy-request.d.ts +126 -0
- package/dist/obtservices/base/lib/vendor/classes/routehappy-response.d.ts +107 -0
- package/dist/obtservices/base/lib/vendor/classes/supplementary-booking-info-impl.d.ts +62 -0
- package/dist/obtservices/base/lib/vendor/classes/user-favourite.enum.d.ts +12 -0
- package/dist/obtservices/base/lib/vendor/classes/validator.checker.d.ts +6 -0
- package/dist/obtservices/base/lib/vendor/fetchers/basket-fetcher.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/fetchers/cabhire-quote-fetcher.d.ts +23 -0
- package/dist/obtservices/base/lib/vendor/fetchers/carhire-availability-detail.fetcher.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/fetchers/carhire-quote-fetcher.d.ts +23 -0
- package/dist/obtservices/base/lib/vendor/fetchers/conferma-office-names.fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/conferma-quicklist.fetcher.d.ts +23 -0
- package/dist/obtservices/base/lib/vendor/fetchers/eurostar-quote.fetcher.d.ts +23 -0
- package/dist/obtservices/base/lib/vendor/fetchers/flight-quote.fetcher.d.ts +23 -0
- package/dist/obtservices/base/lib/vendor/fetchers/get-rail-cards.fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/get-rail-station.fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/get-risk-alerts.fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/get-user-company-offices.fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/get-user-current-carbon-allowance.fetcher.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/fetchers/get-user-recent-searches.fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/get-users-baskets-fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/getMiAutoSugestions.fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/hotel-avaliability-fetcher.d.ts +24 -0
- package/dist/obtservices/base/lib/vendor/fetchers/hotel-quote-fetcher.d.ts +23 -0
- package/dist/obtservices/base/lib/vendor/fetchers/irl-quote-fetcher.d.ts +23 -0
- package/dist/obtservices/base/lib/vendor/fetchers/list-fetchable-enterprise.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/fetchers/lounge-quote.fetcher.d.ts +23 -0
- package/dist/obtservices/base/lib/vendor/fetchers/object-fetchable-enterprise.d.ts +11 -0
- package/dist/obtservices/base/lib/vendor/fetchers/parking-quote-fetcher.d.ts +23 -0
- package/dist/obtservices/base/lib/vendor/fetchers/rail-quote-fetcher.d.ts +23 -0
- package/dist/obtservices/base/lib/vendor/fetchers/search-airlines.fetcher.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/fetchers/search-airports-fetcher.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/fetchers/search-cities.fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/search-conferma-cities.fetcher.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/fetchers/search-depots.fetcher.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/fetchers/search-hotel-chains.fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/search-postcodes.fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/search-rail-stations.fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/search-users-can-book-for-fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/user-addresses.fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/user-fetcher.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/fetchers/user-message.fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/user-products-fetcher.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/fetchers/user-ui-configs-fetcher.d.ts +23 -0
- package/dist/obtservices/base/lib/vendor/interfaces/Icabhire-enterprise-search.d.ts +133 -0
- package/dist/obtservices/base/lib/vendor/interfaces/Icarhire-enterprise-search.d.ts +99 -0
- package/dist/obtservices/base/lib/vendor/interfaces/Ienterprise-basket.service.d.ts +64 -0
- package/dist/obtservices/base/lib/vendor/interfaces/Ieurostar-enterprise-search.d.ts +124 -0
- package/dist/obtservices/base/lib/vendor/interfaces/Iflight-enterprise-search.d.ts +123 -0
- package/dist/obtservices/base/lib/vendor/interfaces/Ihotel-enterprise-search.d.ts +192 -0
- package/dist/obtservices/base/lib/vendor/interfaces/Iirl-enterprise-search.d.ts +45 -0
- package/dist/obtservices/base/lib/vendor/interfaces/Ilounges-enterprise-search.d.ts +36 -0
- package/dist/obtservices/base/lib/vendor/interfaces/Imybookings.service.d.ts +24 -0
- package/dist/obtservices/base/lib/vendor/interfaces/Iparking-enterprise-search.d.ts +58 -0
- package/dist/obtservices/base/lib/vendor/interfaces/Irail-enterprise-search.d.ts +110 -0
- package/dist/obtservices/base/lib/vendor/interfaces/Isearch.service.d.ts +101 -0
- package/dist/obtservices/base/lib/vendor/interfaces/Isupplementary-booking-info-impl.d.ts +42 -0
- package/dist/obtservices/base/lib/vendor/interfaces/Iuser.service.d.ts +59 -0
- package/dist/obtservices/base/lib/vendor/interfaces/car-hire-classes.interface.d.ts +7 -0
- package/dist/obtservices/base/lib/vendor/interfaces/car-hire-filters.interface.d.ts +10 -0
- package/dist/obtservices/base/lib/vendor/interfaces/car-hire-sort.interface.d.ts +4 -0
- package/dist/obtservices/base/lib/vendor/interfaces/cheapest-price.d.ts +4 -0
- package/dist/obtservices/base/lib/vendor/interfaces/code-name.d.ts +4 -0
- package/dist/obtservices/base/lib/vendor/interfaces/flight-filters.interface.d.ts +29 -0
- package/dist/obtservices/base/lib/vendor/interfaces/flight-multi-destination.interface.d.ts +7 -0
- package/dist/obtservices/base/lib/vendor/interfaces/rail-airport-express-stations.interface.d.ts +4 -0
- package/dist/obtservices/base/lib/vendor/interfaces/rail-basket-item.interface.d.ts +69 -0
- package/dist/obtservices/base/lib/vendor/interfaces/rail-journey-leg.interface.d.ts +6 -0
- package/dist/obtservices/base/lib/vendor/interfaces/rail-recent-search-args.interface.d.ts +19 -0
- package/dist/obtservices/base/lib/vendor/interfaces/rail-selected-ticket.interface.d.ts +10 -0
- package/dist/obtservices/base/lib/vendor/interfaces/rail-ticket-group.interface.d.ts +26 -0
- package/dist/obtservices/base/lib/vendor/interfaces/rail-ticket-groups.interface.d.ts +4 -0
- package/dist/obtservices/base/lib/vendor/interfaces/search-objects.interface.d.ts +16 -0
- package/dist/obtservices/base/lib/vendor/interfaces/select-filter.interface.d.ts +5 -0
- package/dist/obtservices/base/lib/vendor/interfaces/user.data.d.ts +21 -0
- package/dist/obtservices/base/lib/vendor/interfaces/value-display.d.ts +4 -0
- package/dist/obtservices/base/lib/vendor/models/login.model.d.ts +52 -0
- package/dist/obtservices/base/lib/vendor/models/regexp.model.d.ts +10 -0
- package/dist/obtservices/base/lib/vendor/models/traveller.object.d.ts +22 -0
- package/dist/obtservices/base/lib/vendor/services/enterprise-basket.service.d.ts +177 -0
- package/dist/obtservices/base/lib/vendor/services/hotel-avallibility.service.d.ts +31 -0
- package/dist/obtservices/base/lib/vendor/services/http-call.service.d.ts +17 -0
- package/dist/obtservices/base/lib/vendor/services/logon.service.d.ts +39 -0
- package/dist/obtservices/base/lib/vendor/services/modal-opener.service.d.ts +13 -0
- package/dist/obtservices/base/lib/vendor/services/my-bookings.service.d.ts +31 -0
- package/dist/obtservices/base/lib/vendor/services/routehappy.service.d.ts +47 -0
- package/dist/obtservices/base/lib/vendor/services/search.service.d.ts +236 -0
- package/dist/obtservices/base/lib/vendor/services/storage.service.d.ts +9 -0
- package/dist/obtservices/base/lib/vendor/services/url.service.d.ts +10 -0
- package/dist/obtservices/base/lib/vendor/services/user.service.d.ts +62 -0
- package/dist/obtservices/base/lib/vendor/services/webtoken.service.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/testers/base.tester.d.ts +11 -0
- package/dist/obtservices/base/lib/vendor/testers/postcode-validate.tester.d.ts +17 -0
- package/dist/obtservices/base/lib/vendor/testers/validate-mi-free-value.tester.d.ts +17 -0
- package/dist/obtservices/base/lib/vendor/types/graphql.types.d.ts +5597 -0
- package/dist/obtservices/base/lib/vendor/types/types.d.ts +444 -0
- package/dist/obtservices/base/lib/vendor/updaters/accept-new-price.updater.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/add-item-to-basket.updater.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/addUserToBasketItem.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/book-basket-updater.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/create-basket-updater.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/move-basket-item-to-basket.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/object-updater-enterprise.d.ts +11 -0
- package/dist/obtservices/base/lib/vendor/updaters/remove-basket-updater.d.ts +19 -0
- package/dist/obtservices/base/lib/vendor/updaters/remove-item-from-basket.updater.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/remove-recent-search-updater.d.ts +19 -0
- package/dist/obtservices/base/lib/vendor/updaters/remove-user-address-updater.d.ts +19 -0
- package/dist/obtservices/base/lib/vendor/updaters/revalidate-basket-updater.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/save-recent-search-updater.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/save-user-address.updater.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/send-basket-for-approval.updater.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/set-basket-item-lead-passenger.updater.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/set-basket-item-mi-group.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/set-basket-item-mi-value-updater.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/set-basket-item-paymenr-option.updater.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/update-basket-notes-updater.d.ts +20 -0
- package/dist/obtservices/base/lib/vendor/updaters/update-basket-title-updater.d.ts +20 -0
- package/dist/obtservices/base/obtservices-base.d.ts +9 -0
- package/dist/obtservices/base/obtservices-base.metadata.json +1 -0
- package/dist/obtservices/base/package.json +11 -0
- package/dist/obtservices/bundles/obtservices-angular.umd.js +32033 -0
- package/dist/obtservices/bundles/obtservices-angular.umd.js.map +1 -0
- package/dist/obtservices/bundles/obtservices-angular.umd.min.js +2 -0
- package/dist/obtservices/bundles/obtservices-angular.umd.min.js.map +1 -0
- package/dist/obtservices/bundles/obtservices-base.umd.js +18609 -0
- package/dist/obtservices/bundles/obtservices-base.umd.js.map +1 -0
- package/dist/obtservices/bundles/obtservices-base.umd.min.js +16 -0
- package/dist/obtservices/bundles/obtservices-base.umd.min.js.map +1 -0
- package/dist/obtservices/bundles/obtservices.umd.js +18 -0
- package/dist/obtservices/bundles/obtservices.umd.js.map +1 -0
- package/dist/obtservices/bundles/obtservices.umd.min.js +2 -0
- package/dist/obtservices/bundles/obtservices.umd.min.js.map +1 -0
- package/dist/obtservices/esm2015/angular/classes.js +4 -0
- package/dist/obtservices/esm2015/angular/components/basket-panel.js +113 -0
- package/dist/obtservices/esm2015/angular/components/with-component.js +26 -0
- package/dist/obtservices/esm2015/angular/components.js +3 -0
- package/dist/obtservices/esm2015/angular/data.js +5 -0
- package/dist/obtservices/esm2015/angular/fetchers.js +33 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/classes/environment.js +10 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/classes/event-messenager.js +16 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/classes/helpers.js +81 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/data/airports.data.json +5508 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/data/flight-booking.data.json +136 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/basket-fetcher.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/cabhire-quote-fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/carhire-availability-detail.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/carhire-quote-fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/conferma-office-names.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/conferma-quicklist.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/eurostar-quote.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/flight-quote.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/get-rail-cards.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/get-rail-station.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/get-risk-alerts.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/get-user-company-offices.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/get-user-current-carbon-allowance.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/get-user-recent-searches.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/get-users-baskets-fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/getMiAutoSugestions.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/hotel-avaliability-fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/hotel-quote-fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/irl-quote-fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/lounge-quote.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/parking-quote-fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/rail-quote-fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/search-airlines-fetcher.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/search-airports-fetcher.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/search-cities.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/search-conferma-cities.fetcher.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/search-depots.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/search-hotel-chains.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/search-postcodes.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/search-rail-stations.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/search-users-can-book-for-fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/user-addresses.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/user-fetcher.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/user-message.fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/user-products-fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/fetchers/user-ui-configs-fetcher.js +25 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/services/enterprise-basket.service.js +91 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/services/hotel-avallibility.service.js +28 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/services/http-call.service.js +220 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/services/logon.service.js +41 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/services/modal-opener.service.js +15 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/services/my-bookings.service.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/services/route-happy.service.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/services/search.service.js +142 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/services/storage.service.js +79 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/services/user.service.js +31 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/services/webtoken.service.js +59 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/testers/postcode-validate.tester.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/testers/validate-mi-free-value.tester.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/types/graphql.angular.types.js +5662 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/accept-new-price.updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/add-item-to-basket.updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/addUserToBasketItem.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/book-basket-updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/create-basket-updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/move-basket-item-to-basket.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/remove-basket-updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/remove-item-from-basket.updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/remove-recent-search.updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/remove-user-address.updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/revalidate-basket-updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/save-recent-search.updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/save-user-address.updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/send-basket-for-approval.updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/set-basket-item-lead-passenger.updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/set-basket-item-mi-group.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/set-basket-item-mi-value-updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/set-payment-option.updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/update-basket-notes-updater.js +22 -0
- package/dist/obtservices/esm2015/angular/lib/vendor/updaters/update-basket-title-updater.js +22 -0
- package/dist/obtservices/esm2015/angular/obtservices-angular.js +18 -0
- package/dist/obtservices/esm2015/angular/obtservices.module.js +128 -0
- package/dist/obtservices/esm2015/angular/public_api.js +9 -0
- package/dist/obtservices/esm2015/angular/services.js +12 -0
- package/dist/obtservices/esm2015/angular/types.js +2 -0
- package/dist/obtservices/esm2015/angular/updaters.js +14 -0
- package/dist/obtservices/esm2015/base/classes.js +28 -0
- package/dist/obtservices/esm2015/base/fetchers.js +37 -0
- package/dist/obtservices/esm2015/base/interfaces.js +30 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/base-enterprise.js +78 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/base-network-call.js +24 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/basket-info-mi-details.impl.js +35 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/bookable-basket.js +237 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/cabhire-enterprise-search.js +696 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/carhire-enterprise-search.js +1204 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/enviroment.js +12 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/eurostar-enterprise-search.js +1462 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/eurostar-search-type.enum.js +6 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/event-messenager.js +17 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/flight-enterprise-search.js +1640 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/flight-search-type.enum.js +7 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/helpers.js +978 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/hotel-enterprise-search.js +1022 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/irl-enterprise-search.js +1117 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/limited-cache.class.js +64 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/lounges-enterprise-search.js +323 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/management-info-and-valid.js +174 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/modal-types.enum.js +22 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/parking-enterprise-search.js +397 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/rail-direction.enum.js +6 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/rail-enterprise-search.js +1324 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/routehappy-request.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/routehappy-response.js +8 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/supplementary-booking-info-impl.js +250 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/user-favourite.enum.js +15 -0
- package/dist/obtservices/esm2015/base/lib/vendor/classes/validator.checker.js +4 -0
- package/dist/obtservices/esm2015/base/lib/vendor/data/countries.json +1212 -0
- package/dist/obtservices/esm2015/base/lib/vendor/data/euro-stations.json +30 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/basket-fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/cabhire-quote-fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/carhire-availability-detail.fetcher.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/carhire-quote-fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/conferma-office-names.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/conferma-quicklist.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/eurostar-quote.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/flight-quote.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/get-rail-cards.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/get-rail-station.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/get-risk-alerts.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/get-user-company-offices.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/get-user-current-carbon-allowance.fetcher.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/get-user-recent-searches.fetcher.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/get-users-baskets-fetcher.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/getMiAutoSugestions.fetcher.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/hotel-avaliability-fetcher.js +22 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/hotel-quote-fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/irl-quote-fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/list-fetchable-enterprise.js +27 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/lounge-quote.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/object-fetchable-enterprise.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/parking-quote-fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/rail-quote-fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/search-airlines.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/search-airports-fetcher.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/search-cities.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/search-conferma-cities.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/search-depots.fetcher.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/search-hotel-chains.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/search-postcodes.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/search-rail-stations.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/search-users-can-book-for-fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/user-addresses.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/user-fetcher.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/user-message.fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/user-products-fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/fetchers/user-ui-configs-fetcher.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/Icabhire-enterprise-search.js +17 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/Icarhire-enterprise-search.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/Ienterprise-basket.service.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/Ieurostar-enterprise-search.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/Iflight-enterprise-search.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/Ihotel-enterprise-search.js +18 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/Iirl-enterprise-search.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/Ilounges-enterprise-search.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/Imybookings.service.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/Iparking-enterprise-search.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/Irail-enterprise-search.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/Isearch.service.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/Isupplementary-booking-info-impl.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/Iuser.service.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/car-hire-classes.interface.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/car-hire-filters.interface.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/car-hire-sort.interface.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/cheapest-price.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/code-name.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/flight-filters.interface.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/flight-multi-destination.interface.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/rail-airport-express-stations.interface.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/rail-basket-item.interface.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/rail-journey-leg.interface.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/rail-recent-search-args.interface.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/rail-selected-ticket.interface.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/rail-ticket-group.interface.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/rail-ticket-groups.interface.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/search-objects.interface.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/select-filter.interface.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/user.data.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/interfaces/value-display.js +2 -0
- package/dist/obtservices/esm2015/base/lib/vendor/models/login.model.js +71 -0
- package/dist/obtservices/esm2015/base/lib/vendor/models/regexp.model.js +13 -0
- package/dist/obtservices/esm2015/base/lib/vendor/models/traveller.object.js +38 -0
- package/dist/obtservices/esm2015/base/lib/vendor/services/enterprise-basket.service.js +669 -0
- package/dist/obtservices/esm2015/base/lib/vendor/services/hotel-avallibility.service.js +165 -0
- package/dist/obtservices/esm2015/base/lib/vendor/services/http-call.service.js +16 -0
- package/dist/obtservices/esm2015/base/lib/vendor/services/logon.service.js +177 -0
- package/dist/obtservices/esm2015/base/lib/vendor/services/modal-opener.service.js +20 -0
- package/dist/obtservices/esm2015/base/lib/vendor/services/my-bookings.service.js +124 -0
- package/dist/obtservices/esm2015/base/lib/vendor/services/routehappy.service.js +196 -0
- package/dist/obtservices/esm2015/base/lib/vendor/services/search.service.js +1281 -0
- package/dist/obtservices/esm2015/base/lib/vendor/services/storage.service.js +3 -0
- package/dist/obtservices/esm2015/base/lib/vendor/services/url.service.js +12 -0
- package/dist/obtservices/esm2015/base/lib/vendor/services/user.service.js +223 -0
- package/dist/obtservices/esm2015/base/lib/vendor/services/webtoken.service.js +56 -0
- package/dist/obtservices/esm2015/base/lib/vendor/testers/base.tester.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/testers/postcode-validate.tester.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/testers/validate-mi-free-value.tester.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/types/graphql.types.js +456 -0
- package/dist/obtservices/esm2015/base/lib/vendor/types/types.js +161 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/accept-new-price.updater.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/add-item-to-basket.updater.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/addUserToBasketItem.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/book-basket-updater.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/create-basket-updater.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/move-basket-item-to-basket.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/object-updater-enterprise.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/remove-basket-updater.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/remove-item-from-basket.updater.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/remove-recent-search-updater.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/remove-user-address-updater.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/revalidate-basket-updater.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/save-recent-search-updater.js +11 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/save-user-address.updater.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/send-basket-for-approval.updater.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/set-basket-item-lead-passenger.updater.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/set-basket-item-mi-group.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/set-basket-item-mi-value-updater.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/set-basket-item-paymenr-option.updater.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/update-basket-notes-updater.js +10 -0
- package/dist/obtservices/esm2015/base/lib/vendor/updaters/update-basket-title-updater.js +10 -0
- package/dist/obtservices/esm2015/base/models.js +4 -0
- package/dist/obtservices/esm2015/base/obtservices-base.js +9 -0
- package/dist/obtservices/esm2015/base/public_api.js +9 -0
- package/dist/obtservices/esm2015/base/services.js +13 -0
- package/dist/obtservices/esm2015/base/testers.js +3 -0
- package/dist/obtservices/esm2015/base/types.js +2 -0
- package/dist/obtservices/esm2015/base/updaters.js +21 -0
- package/dist/obtservices/esm2015/obtservices.js +5 -0
- package/dist/obtservices/esm2015/public_api.js +2 -0
- package/dist/obtservices/fesm2015/obtservices-angular.js +35267 -0
- package/dist/obtservices/fesm2015/obtservices-angular.js.map +1 -0
- package/dist/obtservices/fesm2015/obtservices-base.js +16573 -0
- package/dist/obtservices/fesm2015/obtservices-base.js.map +1 -0
- package/dist/obtservices/fesm2015/obtservices.js +8 -0
- package/dist/obtservices/fesm2015/obtservices.js.map +1 -0
- package/dist/obtservices/obtservices.d.ts +4 -0
- package/dist/obtservices/obtservices.metadata.json +1 -0
- package/dist/obtservices/package.json +23 -0
- package/dist/obtservices/public_api.d.ts +1 -0
- package/dist/obtservices/tsconfig.lib.tsbuildinfo +3 -0
- package/package.json +4 -1
- package/.editorconfig +0 -13
- package/.gitmodules +0 -0
- package/.vscode/settings.json +0 -4
- package/angular.json +0 -45
- package/audit.config.json +0 -6
- package/codegen.yml +0 -18
- package/ng-package.json +0 -7
- package/projects/obtservices/angular/package.json +0 -3
- package/projects/obtservices/angular/src/components/basket-panel.ts +0 -139
- package/projects/obtservices/angular/src/components/with-component.ts +0 -40
- package/projects/obtservices/angular/src/data.ts +0 -5
- package/projects/obtservices/angular/src/fetchers.ts +0 -32
- package/projects/obtservices/angular/src/lib/vendor/classes/environment.ts +0 -5
- package/projects/obtservices/angular/src/lib/vendor/classes/event-messenager.ts +0 -11
- package/projects/obtservices/angular/src/lib/vendor/classes/helpers.ts +0 -87
- package/projects/obtservices/angular/src/lib/vendor/data/airports.data.json +0 -5508
- package/projects/obtservices/angular/src/lib/vendor/data/animations.ts +0 -38
- package/projects/obtservices/angular/src/lib/vendor/data/booking-expected-responses.json +0 -100
- package/projects/obtservices/angular/src/lib/vendor/data/cities.data.json +0 -31499
- package/projects/obtservices/angular/src/lib/vendor/data/countries.json +0 -1212
- package/projects/obtservices/angular/src/lib/vendor/data/flight-booking.data.json +0 -136
- package/projects/obtservices/angular/src/lib/vendor/data/postcodes1.json +0 -194
- package/projects/obtservices/angular/src/lib/vendor/data/rail_addresses.json +0 -2524
- package/projects/obtservices/angular/src/lib/vendor/fetchers/basket-fetcher.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/fetchers/cabhire-quote-fetcher.ts +0 -15
- package/projects/obtservices/angular/src/lib/vendor/fetchers/carhire-availability-detail.fetcher.ts +0 -17
- package/projects/obtservices/angular/src/lib/vendor/fetchers/carhire-quote-fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/conferma-office-names.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/conferma-quicklist.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/eurostar-quote.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/flight-quote.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/get-rail-cards.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/get-rail-station.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/get-risk-alerts.fetcher.ts +0 -18
- package/projects/obtservices/angular/src/lib/vendor/fetchers/get-user-company-offices.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/get-user-current-carbon-allowance.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/get-user-recent-searches.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/get-users-baskets-fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/getMiAutoSugestions.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/hotel-avaliability-fetcher.ts +0 -17
- package/projects/obtservices/angular/src/lib/vendor/fetchers/hotel-quote-fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/irl-quote-fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/lounge-quote.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/parking-quote-fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/rail-quote-fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-airlines-fetcher.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-airports-fetcher.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-cities.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-conferma-cities.fetcher.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-depots.fetcher.ts +0 -18
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-hotel-chains.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-postcodes.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-rail-stations.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-users-can-book-for-fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/user-addresses.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/user-fetcher.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/fetchers/user-message.fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/user-products-fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/fetchers/user-ui-configs-fetcher.ts +0 -16
- package/projects/obtservices/angular/src/lib/vendor/services/enterprise-basket.service.ts +0 -133
- package/projects/obtservices/angular/src/lib/vendor/services/hotel-avallibility.service.ts +0 -19
- package/projects/obtservices/angular/src/lib/vendor/services/http-call.service.ts +0 -252
- package/projects/obtservices/angular/src/lib/vendor/services/logon.service.ts +0 -40
- package/projects/obtservices/angular/src/lib/vendor/services/modal-opener.service.ts +0 -9
- package/projects/obtservices/angular/src/lib/vendor/services/my-bookings.service.ts +0 -21
- package/projects/obtservices/angular/src/lib/vendor/services/route-happy.service.ts +0 -11
- package/projects/obtservices/angular/src/lib/vendor/services/search.service.ts +0 -213
- package/projects/obtservices/angular/src/lib/vendor/services/storage.service.ts +0 -82
- package/projects/obtservices/angular/src/lib/vendor/services/user.service.ts +0 -36
- package/projects/obtservices/angular/src/lib/vendor/services/webtoken.service.ts +0 -62
- package/projects/obtservices/angular/src/lib/vendor/testers/postcode-validate.tester.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/testers/validate-mi-free-value.tester.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/types/graphql.angular.types.ts +0 -11081
- package/projects/obtservices/angular/src/lib/vendor/updaters/accept-new-price.updater.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/add-item-to-basket.updater.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/addUserToBasketItem.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/book-basket-updater.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/create-basket-updater.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/move-basket-item-to-basket.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/remove-basket-updater.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/remove-item-from-basket.updater.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/remove-recent-search.updater.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/remove-user-address.updater.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/revalidate-basket-updater.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/save-recent-search.updater.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/save-user-address.updater.ts +0 -11
- package/projects/obtservices/angular/src/lib/vendor/updaters/send-basket-for-approval.updater.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/set-basket-item-lead-passenger.updater.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/set-basket-item-mi-group.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/set-basket-item-mi-value-updater.ts +0 -15
- package/projects/obtservices/angular/src/lib/vendor/updaters/set-payment-option.updater.ts +0 -15
- package/projects/obtservices/angular/src/lib/vendor/updaters/update-basket-notes-updater.ts +0 -14
- package/projects/obtservices/angular/src/lib/vendor/updaters/update-basket-title-updater.ts +0 -14
- package/projects/obtservices/angular/src/obtservices.module.ts +0 -131
- package/projects/obtservices/base/package.json +0 -3
- package/projects/obtservices/base/src/custom.d.ts +0 -3
- package/projects/obtservices/base/src/fetchers.ts +0 -36
- package/projects/obtservices/base/src/lib/vendor/classes/base-enterprise.ts +0 -126
- package/projects/obtservices/base/src/lib/vendor/classes/base-network-call.ts +0 -40
- package/projects/obtservices/base/src/lib/vendor/classes/basket-info-mi-details.impl.ts +0 -68
- package/projects/obtservices/base/src/lib/vendor/classes/bookable-basket.ts +0 -343
- package/projects/obtservices/base/src/lib/vendor/classes/cabhire-enterprise-search.ts +0 -907
- package/projects/obtservices/base/src/lib/vendor/classes/carhire-enterprise-search.ts +0 -1597
- package/projects/obtservices/base/src/lib/vendor/classes/empty-enterprise-search.ts +0 -75
- package/projects/obtservices/base/src/lib/vendor/classes/enviroment.ts +0 -25
- package/projects/obtservices/base/src/lib/vendor/classes/eurostar-enterprise-search.ts +0 -2126
- package/projects/obtservices/base/src/lib/vendor/classes/eurostar-search-type.enum.ts +0 -4
- package/projects/obtservices/base/src/lib/vendor/classes/event-messenager.ts +0 -23
- package/projects/obtservices/base/src/lib/vendor/classes/flight-enterprise-search.ts +0 -2399
- package/projects/obtservices/base/src/lib/vendor/classes/flight-search-type.enum.ts +0 -5
- package/projects/obtservices/base/src/lib/vendor/classes/helpers.ts +0 -1233
- package/projects/obtservices/base/src/lib/vendor/classes/hotel-enterprise-search.ts +0 -1370
- package/projects/obtservices/base/src/lib/vendor/classes/irl-enterprise-search.ts +0 -1380
- package/projects/obtservices/base/src/lib/vendor/classes/limited-cache.class.ts +0 -70
- package/projects/obtservices/base/src/lib/vendor/classes/lounges-enterprise-search.ts +0 -444
- package/projects/obtservices/base/src/lib/vendor/classes/management-info-and-valid.ts +0 -268
- package/projects/obtservices/base/src/lib/vendor/classes/modal-types.enum.ts +0 -28
- package/projects/obtservices/base/src/lib/vendor/classes/parking-enterprise-search.ts +0 -541
- package/projects/obtservices/base/src/lib/vendor/classes/rail-direction.enum.ts +0 -4
- package/projects/obtservices/base/src/lib/vendor/classes/rail-enterprise-search.ts +0 -1751
- package/projects/obtservices/base/src/lib/vendor/classes/routehappy-request.ts +0 -146
- package/projects/obtservices/base/src/lib/vendor/classes/routehappy-response.ts +0 -128
- package/projects/obtservices/base/src/lib/vendor/classes/supplementary-booking-info-impl.ts +0 -375
- package/projects/obtservices/base/src/lib/vendor/classes/user-favourite.enum.ts +0 -12
- package/projects/obtservices/base/src/lib/vendor/classes/validator.checker.ts +0 -7
- package/projects/obtservices/base/src/lib/vendor/data/airports.data.json +0 -5508
- package/projects/obtservices/base/src/lib/vendor/data/booking-expected-responses.json +0 -100
- package/projects/obtservices/base/src/lib/vendor/data/cities.data.json +0 -31499
- package/projects/obtservices/base/src/lib/vendor/data/countries.json +0 -1212
- package/projects/obtservices/base/src/lib/vendor/data/euro-stations.json +0 -30
- package/projects/obtservices/base/src/lib/vendor/data/flight-booking.data.json +0 -136
- package/projects/obtservices/base/src/lib/vendor/data/postcodes1.json +0 -194
- package/projects/obtservices/base/src/lib/vendor/data/rail_addresses.json +0 -2524
- package/projects/obtservices/base/src/lib/vendor/fetchers/basket-fetcher.ts +0 -29
- package/projects/obtservices/base/src/lib/vendor/fetchers/cabhire-quote-fetcher.ts +0 -34
- package/projects/obtservices/base/src/lib/vendor/fetchers/carhire-availability-detail.fetcher.ts +0 -35
- package/projects/obtservices/base/src/lib/vendor/fetchers/carhire-quote-fetcher.ts +0 -34
- package/projects/obtservices/base/src/lib/vendor/fetchers/conferma-office-names.fetcher.ts +0 -34
- package/projects/obtservices/base/src/lib/vendor/fetchers/conferma-quicklist.fetcher.ts +0 -35
- package/projects/obtservices/base/src/lib/vendor/fetchers/eurostar-quote.fetcher.ts +0 -35
- package/projects/obtservices/base/src/lib/vendor/fetchers/flight-quote.fetcher.ts +0 -35
- package/projects/obtservices/base/src/lib/vendor/fetchers/get-rail-cards.fetcher.ts +0 -35
- package/projects/obtservices/base/src/lib/vendor/fetchers/get-rail-station.fetcher.ts +0 -35
- package/projects/obtservices/base/src/lib/vendor/fetchers/get-risk-alerts.fetcher.ts +0 -35
- package/projects/obtservices/base/src/lib/vendor/fetchers/get-user-company-offices.fetcher.ts +0 -34
- package/projects/obtservices/base/src/lib/vendor/fetchers/get-user-current-carbon-allowance.fetcher.ts +0 -35
- package/projects/obtservices/base/src/lib/vendor/fetchers/get-user-recent-searches.fetcher.ts +0 -36
- package/projects/obtservices/base/src/lib/vendor/fetchers/get-users-baskets-fetcher.ts +0 -33
- package/projects/obtservices/base/src/lib/vendor/fetchers/getMiAutoSugestions.fetcher.ts +0 -35
- package/projects/obtservices/base/src/lib/vendor/fetchers/hotel-avaliability-fetcher.ts +0 -53
- package/projects/obtservices/base/src/lib/vendor/fetchers/hotel-quote-fetcher.ts +0 -35
- package/projects/obtservices/base/src/lib/vendor/fetchers/irl-quote-fetcher.ts +0 -34
- package/projects/obtservices/base/src/lib/vendor/fetchers/list-fetchable-enterprise.ts +0 -59
- package/projects/obtservices/base/src/lib/vendor/fetchers/lounge-quote.fetcher.ts +0 -34
- package/projects/obtservices/base/src/lib/vendor/fetchers/object-fetchable-enterprise.ts +0 -20
- package/projects/obtservices/base/src/lib/vendor/fetchers/parking-quote-fetcher.ts +0 -34
- package/projects/obtservices/base/src/lib/vendor/fetchers/rail-quote-fetcher.ts +0 -34
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-airlines.fetcher.ts +0 -30
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-airports-fetcher.ts +0 -29
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-cities.fetcher.ts +0 -34
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-conferma-cities.fetcher.ts +0 -32
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-depots.fetcher.ts +0 -34
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-hotel-chains.fetcher.ts +0 -34
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-postcodes.fetcher.ts +0 -37
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-rail-stations.fetcher.ts +0 -35
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-users-can-book-for-fetcher.ts +0 -35
- package/projects/obtservices/base/src/lib/vendor/fetchers/user-addresses.fetcher.ts +0 -34
- package/projects/obtservices/base/src/lib/vendor/fetchers/user-fetcher.ts +0 -27
- package/projects/obtservices/base/src/lib/vendor/fetchers/user-message.fetcher.ts +0 -34
- package/projects/obtservices/base/src/lib/vendor/fetchers/user-products-fetcher.ts +0 -35
- package/projects/obtservices/base/src/lib/vendor/fetchers/user-ui-configs-fetcher.ts +0 -35
- package/projects/obtservices/base/src/lib/vendor/interfaces/Icabhire-enterprise-search.ts +0 -174
- package/projects/obtservices/base/src/lib/vendor/interfaces/Icarhire-enterprise-search.ts +0 -143
- package/projects/obtservices/base/src/lib/vendor/interfaces/Ienterprise-basket.service.ts +0 -127
- package/projects/obtservices/base/src/lib/vendor/interfaces/Ieurostar-enterprise-search.ts +0 -197
- package/projects/obtservices/base/src/lib/vendor/interfaces/Iflight-enterprise-search.ts +0 -196
- package/projects/obtservices/base/src/lib/vendor/interfaces/Ihotel-enterprise-search.ts +0 -219
- package/projects/obtservices/base/src/lib/vendor/interfaces/Iirl-enterprise-search.ts +0 -135
- package/projects/obtservices/base/src/lib/vendor/interfaces/Ilounges-enterprise-search.ts +0 -58
- package/projects/obtservices/base/src/lib/vendor/interfaces/Imybookings.service.ts +0 -27
- package/projects/obtservices/base/src/lib/vendor/interfaces/Iparking-enterprise-search.ts +0 -72
- package/projects/obtservices/base/src/lib/vendor/interfaces/Irail-enterprise-search.ts +0 -161
- package/projects/obtservices/base/src/lib/vendor/interfaces/Isearch.service.ts +0 -178
- package/projects/obtservices/base/src/lib/vendor/interfaces/Isupplementary-booking-info-impl.ts +0 -63
- package/projects/obtservices/base/src/lib/vendor/interfaces/Iuser.service.ts +0 -87
- package/projects/obtservices/base/src/lib/vendor/interfaces/car-hire-classes.interface.ts +0 -8
- package/projects/obtservices/base/src/lib/vendor/interfaces/car-hire-filters.interface.ts +0 -11
- package/projects/obtservices/base/src/lib/vendor/interfaces/car-hire-sort.interface.ts +0 -4
- package/projects/obtservices/base/src/lib/vendor/interfaces/cheapest-price.ts +0 -4
- package/projects/obtservices/base/src/lib/vendor/interfaces/code-name.ts +0 -4
- package/projects/obtservices/base/src/lib/vendor/interfaces/flight-filters.interface.ts +0 -41
- package/projects/obtservices/base/src/lib/vendor/interfaces/flight-multi-destination.interface.ts +0 -8
- package/projects/obtservices/base/src/lib/vendor/interfaces/rail-airport-express-stations.interface.ts +0 -4
- package/projects/obtservices/base/src/lib/vendor/interfaces/rail-basket-item.interface.ts +0 -79
- package/projects/obtservices/base/src/lib/vendor/interfaces/rail-journey-leg.interface.ts +0 -6
- package/projects/obtservices/base/src/lib/vendor/interfaces/rail-recent-search-args.interface.ts +0 -20
- package/projects/obtservices/base/src/lib/vendor/interfaces/rail-selected-ticket.interface.ts +0 -11
- package/projects/obtservices/base/src/lib/vendor/interfaces/rail-ticket-group.interface.ts +0 -29
- package/projects/obtservices/base/src/lib/vendor/interfaces/rail-ticket-groups.interface.ts +0 -5
- package/projects/obtservices/base/src/lib/vendor/interfaces/search-objects.interface.ts +0 -17
- package/projects/obtservices/base/src/lib/vendor/interfaces/select-filter.interface.ts +0 -5
- package/projects/obtservices/base/src/lib/vendor/interfaces/user.data.ts +0 -22
- package/projects/obtservices/base/src/lib/vendor/interfaces/value-display.ts +0 -4
- package/projects/obtservices/base/src/lib/vendor/models/login.model.ts +0 -97
- package/projects/obtservices/base/src/lib/vendor/models/regexp.model.ts +0 -13
- package/projects/obtservices/base/src/lib/vendor/models/traveller.object.ts +0 -61
- package/projects/obtservices/base/src/lib/vendor/services/enterprise-basket.service.ts +0 -1150
- package/projects/obtservices/base/src/lib/vendor/services/hotel-avallibility.service.ts +0 -251
- package/projects/obtservices/base/src/lib/vendor/services/http-call.service.ts +0 -57
- package/projects/obtservices/base/src/lib/vendor/services/logon.service.ts +0 -245
- package/projects/obtservices/base/src/lib/vendor/services/modal-opener.service.ts +0 -30
- package/projects/obtservices/base/src/lib/vendor/services/my-bookings.service.ts +0 -184
- package/projects/obtservices/base/src/lib/vendor/services/routehappy.service.ts +0 -275
- package/projects/obtservices/base/src/lib/vendor/services/search.service.ts +0 -2026
- package/projects/obtservices/base/src/lib/vendor/services/storage.service.ts +0 -15
- package/projects/obtservices/base/src/lib/vendor/services/url.service.ts +0 -12
- package/projects/obtservices/base/src/lib/vendor/services/user.service.ts +0 -354
- package/projects/obtservices/base/src/lib/vendor/services/webtoken.service.ts +0 -66
- package/projects/obtservices/base/src/lib/vendor/testers/base.tester.ts +0 -18
- package/projects/obtservices/base/src/lib/vendor/testers/postcode-validate.tester.ts +0 -24
- package/projects/obtservices/base/src/lib/vendor/testers/validate-mi-free-value.tester.ts +0 -23
- package/projects/obtservices/base/src/lib/vendor/types/graphql.types.ts +0 -6184
- package/projects/obtservices/base/src/lib/vendor/types/types.ts +0 -630
- package/projects/obtservices/base/src/lib/vendor/updaters/accept-new-price.updater.ts +0 -31
- package/projects/obtservices/base/src/lib/vendor/updaters/add-item-to-basket.updater.ts +0 -29
- package/projects/obtservices/base/src/lib/vendor/updaters/addUserToBasketItem.ts +0 -30
- package/projects/obtservices/base/src/lib/vendor/updaters/book-basket-updater.ts +0 -28
- package/projects/obtservices/base/src/lib/vendor/updaters/create-basket-updater.ts +0 -29
- package/projects/obtservices/base/src/lib/vendor/updaters/move-basket-item-to-basket.ts +0 -30
- package/projects/obtservices/base/src/lib/vendor/updaters/object-updater-enterprise.ts +0 -20
- package/projects/obtservices/base/src/lib/vendor/updaters/remove-basket-updater.ts +0 -29
- package/projects/obtservices/base/src/lib/vendor/updaters/remove-item-from-basket.updater.ts +0 -28
- package/projects/obtservices/base/src/lib/vendor/updaters/remove-recent-search-updater.ts +0 -29
- package/projects/obtservices/base/src/lib/vendor/updaters/remove-user-address-updater.ts +0 -29
- package/projects/obtservices/base/src/lib/vendor/updaters/revalidate-basket-updater.ts +0 -29
- package/projects/obtservices/base/src/lib/vendor/updaters/save-recent-search-updater.ts +0 -30
- package/projects/obtservices/base/src/lib/vendor/updaters/save-user-address.updater.ts +0 -30
- package/projects/obtservices/base/src/lib/vendor/updaters/send-basket-for-approval.updater.ts +0 -31
- package/projects/obtservices/base/src/lib/vendor/updaters/set-basket-item-lead-passenger.updater.ts +0 -30
- package/projects/obtservices/base/src/lib/vendor/updaters/set-basket-item-mi-group.ts +0 -32
- package/projects/obtservices/base/src/lib/vendor/updaters/set-basket-item-mi-value-updater.ts +0 -30
- package/projects/obtservices/base/src/lib/vendor/updaters/set-basket-item-paymenr-option.updater.ts +0 -28
- package/projects/obtservices/base/src/lib/vendor/updaters/update-basket-notes-updater.ts +0 -30
- package/projects/obtservices/base/src/lib/vendor/updaters/update-basket-title-updater.ts +0 -30
- package/projects/obtservices/base/src/testers.ts +0 -2
- package/projects/obtservices/graphQL/autogenerated/index.js +0 -2
- package/projects/obtservices/graphQL/autogenerated/mutations/acceptNewPrice.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/addItemToBasket.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/addUsersToBasketItem.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/bookBasket.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/cancelBooking.gql +0 -6
- package/projects/obtservices/graphQL/autogenerated/mutations/confermaCreateCard.gql +0 -23
- package/projects/obtservices/graphQL/autogenerated/mutations/confermaDeleteCard.gql +0 -3
- package/projects/obtservices/graphQL/autogenerated/mutations/createBasket.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/deleteBasket.gql +0 -3
- package/projects/obtservices/graphQL/autogenerated/mutations/deleteFavouriteSearch.gql +0 -3
- package/projects/obtservices/graphQL/autogenerated/mutations/deleteRecentSearch.gql +0 -3
- package/projects/obtservices/graphQL/autogenerated/mutations/deleteUserAddress.gql +0 -3
- package/projects/obtservices/graphQL/autogenerated/mutations/index.js +0 -36
- package/projects/obtservices/graphQL/autogenerated/mutations/moveItemToADifferentBasket.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/removeItemFromBasket.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/removeItemsFromBasket.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/removeUserFromBasketItem.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/reopenBasket.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/revalidateBasket.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/revalidateBasketItem.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/saveFavouriteSearch.gql +0 -348
- package/projects/obtservices/graphQL/autogenerated/mutations/saveRecentSearch.gql +0 -348
- package/projects/obtservices/graphQL/autogenerated/mutations/saveUserAddress.gql +0 -14
- package/projects/obtservices/graphQL/autogenerated/mutations/sendBasketForApproval.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/setAddressAsUserPrimary.gql +0 -14
- package/projects/obtservices/graphQL/autogenerated/mutations/setBasketItemLeadPassenger.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/setBasketItemMIGroup.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/setBasketItemMIValue.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/setBasketItemPaymentMethod.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/setMIDefaultValue.gql +0 -3
- package/projects/obtservices/graphQL/autogenerated/mutations/setUserLanguage.gql +0 -339
- package/projects/obtservices/graphQL/autogenerated/mutations/updateBasketNotes.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/mutations/updateBasketTitle.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/queries/alive.gql +0 -3
- package/projects/obtservices/graphQL/autogenerated/queries/carHireAvailabilityDetailRequest.gql +0 -42
- package/projects/obtservices/graphQL/autogenerated/queries/confermaBlockClientHotels.gql +0 -23
- package/projects/obtservices/graphQL/autogenerated/queries/confermaBlockConsumerHotels.gql +0 -23
- package/projects/obtservices/graphQL/autogenerated/queries/confermaListCards.gql +0 -11
- package/projects/obtservices/graphQL/autogenerated/queries/confermaUnblockClientHotels.gql +0 -23
- package/projects/obtservices/graphQL/autogenerated/queries/confermaUnblockConsumerHotels.gql +0 -23
- package/projects/obtservices/graphQL/autogenerated/queries/getCOVIDMicrositeToken.gql +0 -3
- package/projects/obtservices/graphQL/autogenerated/queries/getCancellationInfo.gql +0 -7
- package/projects/obtservices/graphQL/autogenerated/queries/getCarHireDepots.gql +0 -13
- package/projects/obtservices/graphQL/autogenerated/queries/getConfermaOffice.gql +0 -50
- package/projects/obtservices/graphQL/autogenerated/queries/getConfermaOfficeNames.gql +0 -26
- package/projects/obtservices/graphQL/autogenerated/queries/getConfermaQuicklist.gql +0 -131
- package/projects/obtservices/graphQL/autogenerated/queries/getCountries.gql +0 -8
- package/projects/obtservices/graphQL/autogenerated/queries/getHotelAvailability.gql +0 -78
- package/projects/obtservices/graphQL/autogenerated/queries/getHotelChains.gql +0 -3
- package/projects/obtservices/graphQL/autogenerated/queries/getIRLSupplierStation.gql +0 -28
- package/projects/obtservices/graphQL/autogenerated/queries/getMultipleHotelsAvailability.gql +0 -78
- package/projects/obtservices/graphQL/autogenerated/queries/getPostcodeDetails.gql +0 -25
- package/projects/obtservices/graphQL/autogenerated/queries/getRailStation.gql +0 -27
- package/projects/obtservices/graphQL/autogenerated/queries/getRailcards.gql +0 -6
- package/projects/obtservices/graphQL/autogenerated/queries/getRiskAlerts.gql +0 -17
- package/projects/obtservices/graphQL/autogenerated/queries/getUser.gql +0 -339
- package/projects/obtservices/graphQL/autogenerated/queries/getUserAddresses.gql +0 -14
- package/projects/obtservices/graphQL/autogenerated/queries/getUserBasket.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/queries/getUserBaskets.gql +0 -1580
- package/projects/obtservices/graphQL/autogenerated/queries/getUserCompanyOffices.gql +0 -88
- package/projects/obtservices/graphQL/autogenerated/queries/getUserCurrentCarbonAllowance.gql +0 -524
- package/projects/obtservices/graphQL/autogenerated/queries/getUserFavouriteSearches.gql +0 -348
- package/projects/obtservices/graphQL/autogenerated/queries/getUserMIAutoSuggestValues.gql +0 -10
- package/projects/obtservices/graphQL/autogenerated/queries/getUserMessages.gql +0 -10
- package/projects/obtservices/graphQL/autogenerated/queries/getUserPhoneNumbers.gql +0 -13
- package/projects/obtservices/graphQL/autogenerated/queries/getUserRecentSearches.gql +0 -348
- package/projects/obtservices/graphQL/autogenerated/queries/getUserServices.gql +0 -16
- package/projects/obtservices/graphQL/autogenerated/queries/getUserTravelRules.gql +0 -111
- package/projects/obtservices/graphQL/autogenerated/queries/getUserUIConfigs.gql +0 -52
- package/projects/obtservices/graphQL/autogenerated/queries/index.js +0 -64
- package/projects/obtservices/graphQL/autogenerated/queries/isPostcodeValid.gql +0 -3
- package/projects/obtservices/graphQL/autogenerated/queries/postcodeAutoSuggest.gql +0 -3
- package/projects/obtservices/graphQL/autogenerated/queries/searchAirlines.gql +0 -32
- package/projects/obtservices/graphQL/autogenerated/queries/searchAirports.gql +0 -60
- package/projects/obtservices/graphQL/autogenerated/queries/searchCabHire.gql +0 -63
- package/projects/obtservices/graphQL/autogenerated/queries/searchCarHire.gql +0 -104
- package/projects/obtservices/graphQL/autogenerated/queries/searchCities.gql +0 -14
- package/projects/obtservices/graphQL/autogenerated/queries/searchConfermaCities.gql +0 -11
- package/projects/obtservices/graphQL/autogenerated/queries/searchEurostar.gql +0 -833
- package/projects/obtservices/graphQL/autogenerated/queries/searchFastTrack.gql +0 -46
- package/projects/obtservices/graphQL/autogenerated/queries/searchFlights.gql +0 -23
- package/projects/obtservices/graphQL/autogenerated/queries/searchFlightsV2.gql +0 -833
- package/projects/obtservices/graphQL/autogenerated/queries/searchHotelChains.gql +0 -3
- package/projects/obtservices/graphQL/autogenerated/queries/searchHotels.gql +0 -131
- package/projects/obtservices/graphQL/autogenerated/queries/searchIRL.gql +0 -514
- package/projects/obtservices/graphQL/autogenerated/queries/searchIRLSupplierStations.gql +0 -28
- package/projects/obtservices/graphQL/autogenerated/queries/searchLounges.gql +0 -89
- package/projects/obtservices/graphQL/autogenerated/queries/searchParking.gql +0 -70
- package/projects/obtservices/graphQL/autogenerated/queries/searchPostcodes.gql +0 -25
- package/projects/obtservices/graphQL/autogenerated/queries/searchRail.gql +0 -840
- package/projects/obtservices/graphQL/autogenerated/queries/searchRailStations.gql +0 -27
- package/projects/obtservices/graphQL/autogenerated/queries/searchUserCanBookFor.gql +0 -339
- package/projects/obtservices/graphQL/autogenerated/queries/validateBasketItemMI.gql +0 -3
- package/projects/obtservices/graphQL/autogenerated/queries/validateUserMIFreeValue.gql +0 -3
- package/projects/obtservices/graphQL/documents/acceptNewPrice.graphql +0 -5
- package/projects/obtservices/graphQL/documents/addUserToBasketItem.graphql +0 -9
- package/projects/obtservices/graphQL/documents/basket.fragments.graphql +0 -171
- package/projects/obtservices/graphQL/documents/baskets.graphql +0 -111
- package/projects/obtservices/graphQL/documents/bookBasket.graphql +0 -9
- package/projects/obtservices/graphQL/documents/cabhire.graphql +0 -66
- package/projects/obtservices/graphQL/documents/carHireAvailabilityDetailRequest.graphql +0 -44
- package/projects/obtservices/graphQL/documents/carhire.graphql +0 -117
- package/projects/obtservices/graphQL/documents/deleteRecentSearch.graphql +0 -3
- package/projects/obtservices/graphQL/documents/deleteUserAddress.graphql +0 -3
- package/projects/obtservices/graphQL/documents/error.fragments.graphql +0 -10
- package/projects/obtservices/graphQL/documents/flights.graphql +0 -830
- package/projects/obtservices/graphQL/documents/getCarHireDepots.graphql +0 -13
- package/projects/obtservices/graphQL/documents/getConfermaOfficeNames.graphql +0 -11
- package/projects/obtservices/graphQL/documents/getConfermaQuicklist.graphql +0 -108
- package/projects/obtservices/graphQL/documents/getRailStation.graphql +0 -31
- package/projects/obtservices/graphQL/documents/getRailcards.graphql +0 -6
- package/projects/obtservices/graphQL/documents/getRiskAlerts.graphql +0 -24
- package/projects/obtservices/graphQL/documents/getUserAddresses.graphql +0 -14
- package/projects/obtservices/graphQL/documents/getUserCompanyOffices.graphql +0 -18
- package/projects/obtservices/graphQL/documents/getUserCurrentCarbonAllowance.graphql +0 -29
- package/projects/obtservices/graphQL/documents/getUserMIAutoSuggestValues.graphql +0 -10
- package/projects/obtservices/graphQL/documents/getUserPhoneNumbers.graphql +0 -13
- package/projects/obtservices/graphQL/documents/getUserRecentSearches.graphql +0 -20
- package/projects/obtservices/graphQL/documents/hotels.graphql +0 -242
- package/projects/obtservices/graphQL/documents/isPostcodeValid.graphql +0 -3
- package/projects/obtservices/graphQL/documents/lookups.graphql +0 -54
- package/projects/obtservices/graphQL/documents/lounges.graphql +0 -88
- package/projects/obtservices/graphQL/documents/moveItemToADifferentBasket.graphql +0 -9
- package/projects/obtservices/graphQL/documents/parking.graphql +0 -79
- package/projects/obtservices/graphQL/documents/rail.graphql +0 -645
- package/projects/obtservices/graphQL/documents/saveRecentSearch.graphql +0 -5
- package/projects/obtservices/graphQL/documents/saveUserAddress.graphql +0 -14
- package/projects/obtservices/graphQL/documents/searchAirlines.graphql +0 -32
- package/projects/obtservices/graphQL/documents/searchCities.graphql +0 -14
- package/projects/obtservices/graphQL/documents/searchConfermaCities.graphql +0 -11
- package/projects/obtservices/graphQL/documents/searchEurostar.graphql +0 -810
- package/projects/obtservices/graphQL/documents/searchHotelChains.graphql +0 -3
- package/projects/obtservices/graphQL/documents/searchIRL.graphql +0 -521
- package/projects/obtservices/graphQL/documents/searchPostcodes.graphql +0 -7
- package/projects/obtservices/graphQL/documents/searchRailStations.graphql +0 -27
- package/projects/obtservices/graphQL/documents/searchUserAddresses.graphql +0 -14
- package/projects/obtservices/graphQL/documents/set-basker-item-mi-group.graphql +0 -9
- package/projects/obtservices/graphQL/documents/setBasketItemLeadPassenger.graphql +0 -5
- package/projects/obtservices/graphQL/documents/setBasketItemMIValue.graphql +0 -16
- package/projects/obtservices/graphQL/documents/setBasketItemPaymentMethod.graphql +0 -12
- package/projects/obtservices/graphQL/documents/updateBasketNotes.graphql +0 -10
- package/projects/obtservices/graphQL/documents/updateBasketTitle.graphql +0 -10
- package/projects/obtservices/graphQL/documents/user.fragments.graphql +0 -65
- package/projects/obtservices/graphQL/documents/user.graphql +0 -95
- package/projects/obtservices/graphQL/documents/validateUserMIFreeValue.graphql +0 -3
- package/projects/obtservices/graphQL/schema/schema.graphql +0 -2635
- package/projects/obtservices/karma.conf.js +0 -32
- package/projects/obtservices/ng-package.json +0 -7
- package/projects/obtservices/package-lock.json +0 -5
- package/projects/obtservices/package.json +0 -12
- package/projects/obtservices/src/obtservices.ts +0 -0
- package/projects/obtservices/src/public_api.ts +0 -1
- package/projects/obtservices/tsconfig.lib.json +0 -30
- package/projects/obtservices/tsconfig.spec.json +0 -17
- package/projects/obtservices/tslint.json +0 -17
- package/tsconfig.json +0 -36
- package/tslint.json +0 -62
- /package/{projects → dist}/obtservices/README.md +0 -0
- /package/{projects/obtservices/angular/src/classes.ts → dist/obtservices/angular/classes.d.ts} +0 -0
- /package/{projects/obtservices/angular/src/components.ts → dist/obtservices/angular/components.d.ts} +0 -0
- /package/{projects/obtservices/angular/src/public_api.ts → dist/obtservices/angular/public_api.d.ts} +0 -0
- /package/{projects/obtservices/angular/src/services.ts → dist/obtservices/angular/services.d.ts} +0 -0
- /package/{projects/obtservices/angular/src/types.ts → dist/obtservices/angular/types.d.ts} +0 -0
- /package/{projects/obtservices/angular/src/updaters.ts → dist/obtservices/angular/updaters.d.ts} +0 -0
- /package/{projects/obtservices/base/src/classes.ts → dist/obtservices/base/classes.d.ts} +0 -0
- /package/{projects/obtservices/base/src/interfaces.ts → dist/obtservices/base/interfaces.d.ts} +0 -0
- /package/{projects/obtservices/base/src/models.ts → dist/obtservices/base/models.d.ts} +0 -0
- /package/{projects/obtservices/base/src/public_api.ts → dist/obtservices/base/public_api.d.ts} +0 -0
- /package/{projects/obtservices/base/src/services.ts → dist/obtservices/base/services.d.ts} +0 -0
- /package/{projects/obtservices/angular/src/testers.ts → dist/obtservices/base/testers.d.ts} +0 -0
- /package/{projects/obtservices/base/src/types.ts → dist/obtservices/base/types.d.ts} +0 -0
- /package/{projects/obtservices/base/src/updaters.ts → dist/obtservices/base/updaters.d.ts} +0 -0
|
@@ -0,0 +1,669 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import moment from 'moment';
|
|
3
|
+
import Ajv from 'ajv';
|
|
4
|
+
import { BehaviorSubject, Subject } from 'rxjs';
|
|
5
|
+
import { switchMap, take, tap, map } from 'rxjs/operators';
|
|
6
|
+
import { BasketStatus, PassengerType, ServiceType } from '../types/graphql.types';
|
|
7
|
+
import { MenuSlideEnum } from '../types/types';
|
|
8
|
+
import { ModalTypes } from '../classes/modal-types.enum';
|
|
9
|
+
import { SupplementaryBookingInfoImpl } from '../classes/supplementary-booking-info-impl';
|
|
10
|
+
import { BasketInfoMiDetailsImpl } from '../classes/basket-info-mi-details.impl';
|
|
11
|
+
const TEMPID = 'TEMPID_';
|
|
12
|
+
export class InternalBasket {
|
|
13
|
+
constructor(basket, helpers, basketService, getUserFetcher) {
|
|
14
|
+
this.helpers = helpers;
|
|
15
|
+
this.basketService = basketService;
|
|
16
|
+
this.getUserFetcher = getUserFetcher;
|
|
17
|
+
Object.assign(this, {
|
|
18
|
+
subject: new BehaviorSubject(Object.assign(Object.assign({}, basket), { prices: {}, mixedCurrency: false, count: 0, miGroups: [], basketInfoMiDetails: [], suppInfo: [] })),
|
|
19
|
+
tempid: basket.id,
|
|
20
|
+
id: basket.id,
|
|
21
|
+
title: basket.title,
|
|
22
|
+
prices: {},
|
|
23
|
+
mixedCurrency: false,
|
|
24
|
+
count: 0,
|
|
25
|
+
miGroups: [],
|
|
26
|
+
basketInfoMiDetails: [],
|
|
27
|
+
suppInfo: []
|
|
28
|
+
});
|
|
29
|
+
this.next(basket);
|
|
30
|
+
}
|
|
31
|
+
destructor() {
|
|
32
|
+
this.subject.complete();
|
|
33
|
+
}
|
|
34
|
+
next(basket) {
|
|
35
|
+
var _a;
|
|
36
|
+
basket = this.helpers.clone(basket);
|
|
37
|
+
if (basket.status === BasketStatus.Approved &&
|
|
38
|
+
basket.basketItems[0].perItemPhoneNumber === undefined) {
|
|
39
|
+
// We're in approved state so we need to make sure we have the supplement stuff
|
|
40
|
+
this.basketService
|
|
41
|
+
.getBasket({ id: basket.id, withSupplemental: true })
|
|
42
|
+
.subscribe((newBasket) => {
|
|
43
|
+
this.next(newBasket);
|
|
44
|
+
});
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
this.id = basket.id;
|
|
48
|
+
this.title = basket.title;
|
|
49
|
+
const toSend = Object.assign(Object.assign({}, basket), (basket.basketItems || []).reduce((accum, item, index) => {
|
|
50
|
+
var _a, _b;
|
|
51
|
+
if (!accum.prices[item.currency]) {
|
|
52
|
+
accum.prices[item.currency] = 0;
|
|
53
|
+
}
|
|
54
|
+
accum.prices[item.currency] += item.price;
|
|
55
|
+
accum.suppInfo.push(new SupplementaryBookingInfoImpl(item, this.helpers, this.getUserFetcher));
|
|
56
|
+
if (item.miGroupsAvailable && item.miGroupsAvailable.length > 0) {
|
|
57
|
+
accum.miGroups.push({
|
|
58
|
+
type: item.service.type,
|
|
59
|
+
options: item.miGroupsAvailable,
|
|
60
|
+
basketItem: item,
|
|
61
|
+
value: item.miGroupSelected || ''
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
if (((_a = item.managementInfo) === null || _a === void 0 ? void 0 : _a.length) > 0 && ((_b = item.users) === null || _b === void 0 ? void 0 : _b.length) > 0) {
|
|
65
|
+
accum.basketInfoMiDetails.push(new BasketInfoMiDetailsImpl(item, this.basketService, this.helpers));
|
|
66
|
+
}
|
|
67
|
+
return accum;
|
|
68
|
+
}, {
|
|
69
|
+
prices: {},
|
|
70
|
+
mixedCurrency: false,
|
|
71
|
+
count: ((_a = basket.basketItems) === null || _a === void 0 ? void 0 : _a.length) || 0,
|
|
72
|
+
miGroups: [],
|
|
73
|
+
basketInfoMiDetails: [],
|
|
74
|
+
suppInfo: []
|
|
75
|
+
}));
|
|
76
|
+
toSend.mixedCurrency = Object.keys(toSend.prices).length > 1;
|
|
77
|
+
this.subject.next(toSend);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export class BaseEnterpriseBasketService {
|
|
81
|
+
constructor(acceptNewPriceUpdater, addItemToBasketUpdater, addUserToBasketItem, basketCreator, basketFetcher, bookBasketUpdater, deleteBasketUpdater, getMiAutoSugestionFetcher, helpers, removeItemFromBasketUpdater, revalidateBasketUpdater, setBasketItemMiGroupUpdater, setBasketItemMiValueUpdater, validateMiFreeValue, sendBasketForApprovalUpdater, getUserFetcher, getUserBasketsFetcher, SetBasketItemLeadPassenger, moveItemToADifferentBasket, updateBasketNotesUpdater, updateBasketTitleUpdater, setPaymentMethodUpdater, userService, modalService) {
|
|
82
|
+
this.acceptNewPriceUpdater = acceptNewPriceUpdater;
|
|
83
|
+
this.addItemToBasketUpdater = addItemToBasketUpdater;
|
|
84
|
+
this.addUserToBasketItem = addUserToBasketItem;
|
|
85
|
+
this.basketCreator = basketCreator;
|
|
86
|
+
this.basketFetcher = basketFetcher;
|
|
87
|
+
this.bookBasketUpdater = bookBasketUpdater;
|
|
88
|
+
this.deleteBasketUpdater = deleteBasketUpdater;
|
|
89
|
+
this.getMiAutoSugestionFetcher = getMiAutoSugestionFetcher;
|
|
90
|
+
this.helpers = helpers;
|
|
91
|
+
this.removeItemFromBasketUpdater = removeItemFromBasketUpdater;
|
|
92
|
+
this.revalidateBasketUpdater = revalidateBasketUpdater;
|
|
93
|
+
this.setBasketItemMiGroupUpdater = setBasketItemMiGroupUpdater;
|
|
94
|
+
this.setBasketItemMiValueUpdater = setBasketItemMiValueUpdater;
|
|
95
|
+
this.validateMiFreeValue = validateMiFreeValue;
|
|
96
|
+
this.sendBasketForApprovalUpdater = sendBasketForApprovalUpdater;
|
|
97
|
+
this.getUserFetcher = getUserFetcher;
|
|
98
|
+
this.getUserBasketsFetcher = getUserBasketsFetcher;
|
|
99
|
+
this.SetBasketItemLeadPassenger = SetBasketItemLeadPassenger;
|
|
100
|
+
this.moveItemToADifferentBasket = moveItemToADifferentBasket;
|
|
101
|
+
this.updateBasketNotesUpdater = updateBasketNotesUpdater;
|
|
102
|
+
this.updateBasketTitleUpdater = updateBasketTitleUpdater;
|
|
103
|
+
this.setPaymentMethodUpdater = setPaymentMethodUpdater;
|
|
104
|
+
this.userService = userService;
|
|
105
|
+
this.modalService = modalService;
|
|
106
|
+
this.currentBaskets = [];
|
|
107
|
+
this.highlightBasketItemsEmitter = new Subject();
|
|
108
|
+
this.basketChangeEmitter = new BehaviorSubject('');
|
|
109
|
+
this.baskets = new BehaviorSubject([]);
|
|
110
|
+
this.basketList = [
|
|
111
|
+
{
|
|
112
|
+
type: ServiceType.Flight,
|
|
113
|
+
text: 'FLIGHTS',
|
|
114
|
+
price: 0
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
type: ServiceType.Rail,
|
|
118
|
+
text: 'RAIL',
|
|
119
|
+
price: 0
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: ServiceType.Hotel,
|
|
123
|
+
text: 'HOTELS',
|
|
124
|
+
price: 0
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: ServiceType.Cab,
|
|
128
|
+
text: 'TAXIS',
|
|
129
|
+
price: 0
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: ServiceType.Car,
|
|
133
|
+
text: 'CARS',
|
|
134
|
+
price: 0
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
type: ServiceType.InternationalRail,
|
|
138
|
+
text: 'EUROSTAR',
|
|
139
|
+
price: 0
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
type: ServiceType.Parking,
|
|
143
|
+
text: 'PARKING',
|
|
144
|
+
price: 0
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: ServiceType.Lounge,
|
|
148
|
+
text: 'LOUNGES',
|
|
149
|
+
price: 0
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: ServiceType.Coach,
|
|
153
|
+
text: 'COACH',
|
|
154
|
+
price: 0
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: ServiceType.FastTrack,
|
|
158
|
+
text: 'FAST_TRACK',
|
|
159
|
+
price: 0
|
|
160
|
+
}
|
|
161
|
+
];
|
|
162
|
+
this.basketPrices = new BehaviorSubject({ total: null, list: this.basketList });
|
|
163
|
+
this.menuState = MenuSlideEnum.OUT;
|
|
164
|
+
this.userService.changeUser.subscribe({
|
|
165
|
+
next: (userDetails) => {
|
|
166
|
+
this.reset();
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
get currentBasketID() {
|
|
171
|
+
return this.basketChangeEmitter.value;
|
|
172
|
+
}
|
|
173
|
+
set currentBasketID(value) {
|
|
174
|
+
if (value !== this.currentBasketID) {
|
|
175
|
+
// this prevents the emitter getting stuck in a loop - casuing browser overloads
|
|
176
|
+
this.basketChangeEmitter.next(value);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
reset() {
|
|
180
|
+
if (this.userService.getfullUserDetails(false).userData.value) {
|
|
181
|
+
this.getUserBasketsFetcher
|
|
182
|
+
.fetchList({
|
|
183
|
+
basketStatus: BasketStatus.Open,
|
|
184
|
+
user: this.userService
|
|
185
|
+
.getfullUserDetails(true)
|
|
186
|
+
.userData.value.user_id.toString()
|
|
187
|
+
})
|
|
188
|
+
.pipe(take(1))
|
|
189
|
+
.subscribe((baskets) => {
|
|
190
|
+
this.currentBaskets = baskets.map((basket) => {
|
|
191
|
+
if (basket) {
|
|
192
|
+
let intBasket = this.findBasket(basket.id);
|
|
193
|
+
if (!intBasket) {
|
|
194
|
+
intBasket = new InternalBasket(basket, this.helpers, this, this.getUserFetcher);
|
|
195
|
+
this.currentBaskets.push(intBasket);
|
|
196
|
+
}
|
|
197
|
+
return intBasket;
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
this.baskets.next(this.currentBaskets);
|
|
201
|
+
if (this.currentBaskets.length > 0) {
|
|
202
|
+
this.currentBasketID = this.currentBaskets[0].id;
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
this.currentBasketID = null;
|
|
206
|
+
}
|
|
207
|
+
this.basketChangeEmitter.next(this.currentBasketID);
|
|
208
|
+
}, (error) => {
|
|
209
|
+
console.error(error);
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
this.currentBaskets.forEach((basket) => basket.subject.unsubscribe());
|
|
214
|
+
this.currentBaskets = [];
|
|
215
|
+
this.currentBasketID = null;
|
|
216
|
+
this.baskets.next(this.currentBaskets);
|
|
217
|
+
this.basketChangeEmitter.next(this.currentBasketID);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
getAllOpenBaskets(user_id) {
|
|
221
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
222
|
+
// let intBasket = this.findBasket(user_id)
|
|
223
|
+
return this.getUserBasketsFetcher
|
|
224
|
+
.fetchList({ basketStatus: BasketStatus.Open, user: user_id })
|
|
225
|
+
.pipe(take(1), map((results) => {
|
|
226
|
+
if (results.length) {
|
|
227
|
+
results.forEach((result) => {
|
|
228
|
+
if (!this.findBasket(result.id)) {
|
|
229
|
+
const intBasket = new InternalBasket(result, this.helpers, this, this.getUserFetcher);
|
|
230
|
+
this.currentBaskets.push(intBasket);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
const intBasket = new InternalBasket({
|
|
236
|
+
id: user_id,
|
|
237
|
+
basketItems: []
|
|
238
|
+
}, this.helpers, this, this.getUserFetcher);
|
|
239
|
+
this.currentBaskets.push(intBasket);
|
|
240
|
+
}
|
|
241
|
+
return results;
|
|
242
|
+
}))
|
|
243
|
+
.toPromise();
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
addToBasket(item, intBasket, searchService, travellers = []) {
|
|
247
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
248
|
+
if ((travellers === null || travellers === void 0 ? void 0 : travellers.length) > 0) {
|
|
249
|
+
item.users = this.helpers.makeUsers(travellers);
|
|
250
|
+
item.leadPassenger = item.users[0].id;
|
|
251
|
+
}
|
|
252
|
+
item = this.checkDetails(item);
|
|
253
|
+
if (item && intBasket) {
|
|
254
|
+
this.addItemToBasketUpdater
|
|
255
|
+
.updateOne(item)
|
|
256
|
+
.pipe(take(1))
|
|
257
|
+
.subscribe((newBasket) => {
|
|
258
|
+
intBasket.next(Object.assign(Object.assign({}, intBasket.subject.value), newBasket));
|
|
259
|
+
const service = this.userService.findService(item.service).type;
|
|
260
|
+
searchService.search_objects[service].booking_chosen = true;
|
|
261
|
+
searchService.search_objects[service].chosen = false;
|
|
262
|
+
const bi = newBasket.basketItems;
|
|
263
|
+
this.highlightBasketItemsEmitter.next(bi);
|
|
264
|
+
this.basketChangeEmitter.next(this.currentBasketID);
|
|
265
|
+
}, (error) => {
|
|
266
|
+
console.error(error);
|
|
267
|
+
intBasket.subject.next(intBasket.subject.value);
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
return false;
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
loadBasket(id) {
|
|
274
|
+
let intBasket = this.findBasket(id);
|
|
275
|
+
if (!intBasket) {
|
|
276
|
+
intBasket = new InternalBasket({
|
|
277
|
+
id,
|
|
278
|
+
basketItems: []
|
|
279
|
+
}, this.helpers, this, this.getUserFetcher);
|
|
280
|
+
this.currentBaskets.push(intBasket);
|
|
281
|
+
}
|
|
282
|
+
this.basketFetcher
|
|
283
|
+
.fetchOne({ id })
|
|
284
|
+
.subscribe((newBasket) => {
|
|
285
|
+
intBasket.next(newBasket);
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
subsribeToBasket(id, observer) {
|
|
289
|
+
const intBasket = this.findBasket(id);
|
|
290
|
+
if (intBasket) {
|
|
291
|
+
intBasket.subject.subscribe(observer);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
removeExpiredItems(id) {
|
|
295
|
+
const intBasket = this.findBasket(id);
|
|
296
|
+
intBasket.subject.value.basketItems
|
|
297
|
+
.filter((basketItem) => {
|
|
298
|
+
return (basketItem.latestValidationPriceDifference !== 0 || basketItem.expired);
|
|
299
|
+
})
|
|
300
|
+
.forEach((basketItem) => {
|
|
301
|
+
this.removeBasketItem(id, basketItem);
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
removeBasketItem(basketId, item) {
|
|
305
|
+
const intBasket = this.findBasket(basketId);
|
|
306
|
+
this.removeItemFromBasketUpdater
|
|
307
|
+
.updateOne({ basketItem: item.id })
|
|
308
|
+
.subscribe((newBasket) => {
|
|
309
|
+
intBasket.next(Object.assign(Object.assign({}, intBasket.subject.value), newBasket));
|
|
310
|
+
this.basketChangeEmitter.next(basketId);
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
getDefaultBasket(getBookedBasket = false) {
|
|
314
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
315
|
+
const internalBasket = null;
|
|
316
|
+
// console.log(this.currentBasketID);
|
|
317
|
+
return yield this.findOrCreateBasket(this.currentBasketID, getBookedBasket).then((data) => {
|
|
318
|
+
return data;
|
|
319
|
+
});
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
findBasket(id) {
|
|
323
|
+
return this.currentBaskets.find((basket) => {
|
|
324
|
+
return basket.id === id || basket.tempid === id;
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
findOrCreateBasket(id, getBookedBasket = false) {
|
|
328
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
329
|
+
let basket = null;
|
|
330
|
+
if (!id) {
|
|
331
|
+
const allOpenBaskets = yield this.getAllOpenBaskets(this.userService
|
|
332
|
+
.getfullUserDetails(true)
|
|
333
|
+
.userData.value.user_id.toString());
|
|
334
|
+
// find the last updated basket
|
|
335
|
+
if (!(allOpenBaskets === null || allOpenBaskets === void 0 ? void 0 : allOpenBaskets.length)) {
|
|
336
|
+
basket = yield this.createBasket();
|
|
337
|
+
this.currentBaskets.push(basket);
|
|
338
|
+
this.baskets.next(this.currentBaskets);
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
// baskets are already sorted by last updated - return the last updated basket
|
|
342
|
+
basket = this.findBasket(allOpenBaskets[0].id);
|
|
343
|
+
if (basket.subject.value.status === 'BOOKED' && !getBookedBasket) {
|
|
344
|
+
console.warn('+++ Retrieved basket is in booked status - creating a new one +++');
|
|
345
|
+
basket = yield this.createBasket();
|
|
346
|
+
this.currentBaskets.push(basket);
|
|
347
|
+
}
|
|
348
|
+
this.baskets.next(this.currentBaskets);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
basket = this.findBasket(id);
|
|
353
|
+
// console.log('+++ Found Basket: ', basket, ' +++');
|
|
354
|
+
}
|
|
355
|
+
return basket;
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
createBasket() {
|
|
359
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
360
|
+
const basket = {
|
|
361
|
+
id: TEMPID + moment().unix().toString(),
|
|
362
|
+
owner: null,
|
|
363
|
+
reference: null,
|
|
364
|
+
title: null,
|
|
365
|
+
notes: null,
|
|
366
|
+
createdAt: null,
|
|
367
|
+
updatedAt: null,
|
|
368
|
+
basketItems: [],
|
|
369
|
+
status: null,
|
|
370
|
+
validated: false
|
|
371
|
+
};
|
|
372
|
+
const intBasket = new InternalBasket(basket, this.helpers, this, this.getUserFetcher);
|
|
373
|
+
// { subject: new BehaviorSubject<Basket>(basket), tempid: basket.id, id: basket.id, title: basket.id };
|
|
374
|
+
const toReturn = yield this.createBasketOnDB(intBasket);
|
|
375
|
+
this.currentBaskets.push(toReturn);
|
|
376
|
+
this.baskets.next(this.currentBaskets);
|
|
377
|
+
this.basketChangeEmitter.next(toReturn.id);
|
|
378
|
+
return toReturn;
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
createBasketOnDB(intBasket) {
|
|
382
|
+
return new Promise((resolve, reject) => {
|
|
383
|
+
this.basketCreator
|
|
384
|
+
.updateOne({})
|
|
385
|
+
.pipe(take(1))
|
|
386
|
+
.subscribe((basket) => {
|
|
387
|
+
intBasket.id = basket.id;
|
|
388
|
+
intBasket.next(basket);
|
|
389
|
+
resolve(intBasket);
|
|
390
|
+
}, (error) => {
|
|
391
|
+
reject(error);
|
|
392
|
+
}, () => { });
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
toggleMenu() {
|
|
396
|
+
if (this.menuState === MenuSlideEnum.IN ||
|
|
397
|
+
this.menuState === MenuSlideEnum.FLAT) {
|
|
398
|
+
this.menuState = MenuSlideEnum.OUT;
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
this.menuState = MenuSlideEnum.IN;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
closeMenu() {
|
|
405
|
+
this.menuState = MenuSlideEnum.IN;
|
|
406
|
+
}
|
|
407
|
+
getLatestBasketItemForTypes(basketItems) {
|
|
408
|
+
return (basketItems || []).reduce((latestItems, basketItem) => {
|
|
409
|
+
latestItems[basketItem.service.type] = basketItem;
|
|
410
|
+
return latestItems;
|
|
411
|
+
}, {});
|
|
412
|
+
}
|
|
413
|
+
checkDetails(item) {
|
|
414
|
+
const serviceToCheck = this.userService.findService(item.service);
|
|
415
|
+
if (!serviceToCheck) {
|
|
416
|
+
console.error('Unable to find service for basket item : ' + item.service);
|
|
417
|
+
return null;
|
|
418
|
+
}
|
|
419
|
+
// check the item.detail object against the relevant service detailSchema using Ajv
|
|
420
|
+
const ajv = new Ajv();
|
|
421
|
+
const validateDetailSchema = ajv.compile(serviceToCheck.detailSchema);
|
|
422
|
+
const validateSearchSchema = ajv.compile(serviceToCheck.searchQuerySchema);
|
|
423
|
+
// if there are any moment date objects in the searchQuery object convert these to date-time strings
|
|
424
|
+
item.searchQuery = this.helpers.sanitizeMomentDates(item.searchQuery);
|
|
425
|
+
if (!validateSearchSchema(item.searchQuery)) {
|
|
426
|
+
const error = `Item searchQuery is not valid for ${serviceToCheck.name} search schema.`;
|
|
427
|
+
console.warn('searchSchema', serviceToCheck.searchQuerySchema);
|
|
428
|
+
console.warn('item.searchQuery', item.searchQuery);
|
|
429
|
+
console.log(validateSearchSchema.errors);
|
|
430
|
+
this.modalService.open(ModalTypes.ModalErrorComponent, {}, { error });
|
|
431
|
+
return null;
|
|
432
|
+
}
|
|
433
|
+
if (!validateDetailSchema(item.detail)) {
|
|
434
|
+
const error = `Item detail is not valid for ${serviceToCheck.name} detail schema.`;
|
|
435
|
+
console.warn('detailSchema', serviceToCheck.detailSchema);
|
|
436
|
+
console.warn('item.detail', item.detail);
|
|
437
|
+
console.log('Schema errors', validateDetailSchema.errors);
|
|
438
|
+
this.modalService.open(ModalTypes.ModalErrorComponent, {}, { error });
|
|
439
|
+
return null;
|
|
440
|
+
}
|
|
441
|
+
return item;
|
|
442
|
+
}
|
|
443
|
+
getNumberItemsForBasket(basket = null) {
|
|
444
|
+
basket = basket || this.findBasket(this.currentBasketID);
|
|
445
|
+
return (basket === null || basket === void 0 ? void 0 : basket.subject.value.basketItems.length) || 0;
|
|
446
|
+
}
|
|
447
|
+
removeBasket(basketid) {
|
|
448
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
449
|
+
if (basketid) {
|
|
450
|
+
yield this.deleteBasketUpdater
|
|
451
|
+
.updateOne({ id: basketid })
|
|
452
|
+
.pipe(take(1), switchMap((data) => {
|
|
453
|
+
var _a, _b;
|
|
454
|
+
(_a = this.findBasket(basketid)) === null || _a === void 0 ? void 0 : _a.destructor();
|
|
455
|
+
this.currentBaskets = this.currentBaskets.filter((intBa) => {
|
|
456
|
+
return intBa.id !== basketid;
|
|
457
|
+
});
|
|
458
|
+
this.baskets.next(this.currentBaskets);
|
|
459
|
+
if (basketid === this.currentBasketID) {
|
|
460
|
+
this.currentBasketID = ((_b = this.currentBaskets[0]) === null || _b === void 0 ? void 0 : _b.id) || null;
|
|
461
|
+
this.basketChangeEmitter.next(this.currentBasketID);
|
|
462
|
+
}
|
|
463
|
+
return data;
|
|
464
|
+
}))
|
|
465
|
+
.toPromise();
|
|
466
|
+
}
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
continueSearchAndBook(basketItems, itiniaryUrl, searchService) {
|
|
470
|
+
const latestBasketItems = this.getLatestBasketItemForTypes(basketItems);
|
|
471
|
+
const nextSearch = searchService.getHighestSearchPriorityObject(latestBasketItems);
|
|
472
|
+
if (nextSearch) {
|
|
473
|
+
searchService.searches[nextSearch.type].updateFromPreviousSearches(latestBasketItems);
|
|
474
|
+
return [nextSearch.searchUrl];
|
|
475
|
+
}
|
|
476
|
+
else {
|
|
477
|
+
return itiniaryUrl;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
addTravellers(basketid, basketItem, travellers, index = 0) {
|
|
481
|
+
const basket = this.findBasket(basketid);
|
|
482
|
+
if (index < travellers.length) {
|
|
483
|
+
const traveller = travellers[index];
|
|
484
|
+
const passengerType = traveller.isChild
|
|
485
|
+
? PassengerType.Child
|
|
486
|
+
: traveller.isInfant
|
|
487
|
+
? PassengerType.Infant
|
|
488
|
+
: PassengerType.Adult;
|
|
489
|
+
this.addUserToBasketItem
|
|
490
|
+
.updateOne({
|
|
491
|
+
basketItem: basketItem.id,
|
|
492
|
+
users: [
|
|
493
|
+
{
|
|
494
|
+
id: traveller.id,
|
|
495
|
+
passengerType
|
|
496
|
+
}
|
|
497
|
+
],
|
|
498
|
+
withSupplemental: false
|
|
499
|
+
})
|
|
500
|
+
.subscribe(() => { }, () => { }, () => {
|
|
501
|
+
this.addTravellers(basket.id, basketItem, travellers, index + 1);
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
this.basketFetcher.fetchOne({ id: basket.id }).subscribe((basket1) => {
|
|
506
|
+
basket.subject.next(Object.assign(Object.assign({}, basket.subject.value), basket1));
|
|
507
|
+
}, (_) => { }, () => {
|
|
508
|
+
basket.next(basket.subject.value);
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
setLeadPassenger(basketid, basketItem, travellers, index = 0) {
|
|
513
|
+
const basket = this.findBasket(basketid);
|
|
514
|
+
if (index < 1) {
|
|
515
|
+
this.SetBasketItemLeadPassenger.updateOne({
|
|
516
|
+
id: basketItem.id,
|
|
517
|
+
user: travellers.id,
|
|
518
|
+
withSupplemental: false
|
|
519
|
+
}).subscribe(() => { }, () => { }, () => {
|
|
520
|
+
this.setLeadPassenger(basket.id, basketItem, travellers, index + 1);
|
|
521
|
+
});
|
|
522
|
+
}
|
|
523
|
+
else {
|
|
524
|
+
this.basketFetcher.fetchOne({ id: basket.id }).subscribe((basket1) => {
|
|
525
|
+
basket.subject.next(Object.assign(Object.assign({}, basket.subject.value), basket1));
|
|
526
|
+
}, (_) => { }, () => {
|
|
527
|
+
basket.next(basket.subject.value);
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
updateBasket(basketid, obs) {
|
|
532
|
+
return new Promise((resolve, reject) => {
|
|
533
|
+
obs.pipe(take(1)).subscribe((basket) => {
|
|
534
|
+
const intBasket = this.findBasket(basketid);
|
|
535
|
+
intBasket.next(basket);
|
|
536
|
+
resolve();
|
|
537
|
+
}, (error) => {
|
|
538
|
+
console.error(error);
|
|
539
|
+
const intBasket = this.findBasket(basketid);
|
|
540
|
+
intBasket.next(intBasket.subject.value);
|
|
541
|
+
reject(error);
|
|
542
|
+
}, () => { });
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
revalidate(basketid) {
|
|
546
|
+
this.updateBasket(basketid, this.revalidateBasketUpdater.updateOne({ id: basketid }));
|
|
547
|
+
}
|
|
548
|
+
setBasketItemMiGroup(basketid, basketItemid, group) {
|
|
549
|
+
this.updateBasket(basketid, this.setBasketItemMiGroupUpdater.updateOne({
|
|
550
|
+
basketItem: basketItemid,
|
|
551
|
+
group
|
|
552
|
+
}));
|
|
553
|
+
}
|
|
554
|
+
acceptNewPrice(basketid, item) {
|
|
555
|
+
this.updateBasket(basketid, this.acceptNewPriceUpdater.updateOne({ id: item.id }));
|
|
556
|
+
}
|
|
557
|
+
validateFreeValeMi(miItem, freeValue) {
|
|
558
|
+
return new Promise((resolve, reject) => {
|
|
559
|
+
this.validateMiFreeValue
|
|
560
|
+
.test({ mi: miItem.id, freeValue })
|
|
561
|
+
.subscribe(resolve, reject);
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
setMiFreeValue(basketid, miItem, freeValue, userId = null) {
|
|
565
|
+
const intBasket = this.findBasket(basketid);
|
|
566
|
+
const args = {
|
|
567
|
+
mi: miItem.id,
|
|
568
|
+
miFreeValue: freeValue
|
|
569
|
+
};
|
|
570
|
+
if (!!userId) {
|
|
571
|
+
args.user = userId;
|
|
572
|
+
}
|
|
573
|
+
this.setBasketItemMiValueUpdater
|
|
574
|
+
.updateOne(args)
|
|
575
|
+
.pipe(take(1))
|
|
576
|
+
.subscribe((basket) => {
|
|
577
|
+
intBasket.next(basket);
|
|
578
|
+
}, (_) => { }, () => {
|
|
579
|
+
intBasket.next(intBasket.subject.value);
|
|
580
|
+
});
|
|
581
|
+
}
|
|
582
|
+
setMiSelectedValue(basketid, miItem, selectedValue, userId = null) {
|
|
583
|
+
const args = {
|
|
584
|
+
mi: miItem.id,
|
|
585
|
+
miValue: selectedValue
|
|
586
|
+
};
|
|
587
|
+
if (!!userId) {
|
|
588
|
+
args.user = userId;
|
|
589
|
+
}
|
|
590
|
+
this.updateBasket(basketid, this.setBasketItemMiValueUpdater.updateOne(args));
|
|
591
|
+
}
|
|
592
|
+
getMiAutoSugestions(miId, partialLabel, isLoading) {
|
|
593
|
+
isLoading === null || isLoading === void 0 ? void 0 : isLoading.next(true);
|
|
594
|
+
return this.getMiAutoSugestionFetcher
|
|
595
|
+
.fetchList({ mi: miId, partialLabel })
|
|
596
|
+
.pipe(tap((_) => {
|
|
597
|
+
isLoading === null || isLoading === void 0 ? void 0 : isLoading.next(false);
|
|
598
|
+
}));
|
|
599
|
+
}
|
|
600
|
+
saveMiData(basketId, bmiArray) {
|
|
601
|
+
bmiArray.forEach((bmi) => {
|
|
602
|
+
bmi.miPerItem.forEach((item) => {
|
|
603
|
+
item.save(basketId, null);
|
|
604
|
+
});
|
|
605
|
+
bmi.users.forEach((user) => {
|
|
606
|
+
bmi.miPerUser[user].managementInfo.forEach((item) => {
|
|
607
|
+
item.save(basketId, user);
|
|
608
|
+
});
|
|
609
|
+
});
|
|
610
|
+
});
|
|
611
|
+
}
|
|
612
|
+
sendBasketForApproval(basketid) {
|
|
613
|
+
this.updateBasket(basketid, this.sendBasketForApprovalUpdater
|
|
614
|
+
.updateOne({ basket: basketid })
|
|
615
|
+
.pipe(take(1)));
|
|
616
|
+
}
|
|
617
|
+
setBasketItemPaymentOption(basket, basketItem, paymentMethod) {
|
|
618
|
+
return this.updateBasket(basket.id, this.setPaymentMethodUpdater.updateOne({
|
|
619
|
+
basketItem: basketItem.id,
|
|
620
|
+
paymentMethod
|
|
621
|
+
}));
|
|
622
|
+
}
|
|
623
|
+
bookBasket(basketid, supplementaryInfo) {
|
|
624
|
+
this.updateBasket(basketid, this.bookBasketUpdater.updateOne({ id: basketid, supplementaryInfo }));
|
|
625
|
+
}
|
|
626
|
+
moveBasketItem(originalBasketId, basketItem, basketIdToMoveTo) {
|
|
627
|
+
this.moveItemToADifferentBasket
|
|
628
|
+
.updateOne({
|
|
629
|
+
basketItem: basketItem.id,
|
|
630
|
+
newBasket: basketIdToMoveTo
|
|
631
|
+
})
|
|
632
|
+
.subscribe(() => {
|
|
633
|
+
this.loadBasket(originalBasketId);
|
|
634
|
+
this.loadBasket(basketIdToMoveTo);
|
|
635
|
+
});
|
|
636
|
+
}
|
|
637
|
+
updateBasketNotes(basketId, notes) {
|
|
638
|
+
this.updateBasket(basketId, this.updateBasketNotesUpdater.updateOne({ id: basketId, notes }));
|
|
639
|
+
}
|
|
640
|
+
updateBasketTitle(basketId, title) {
|
|
641
|
+
this.updateBasket(basketId, this.updateBasketTitleUpdater.updateOne({ id: basketId, newTitle: title }));
|
|
642
|
+
}
|
|
643
|
+
getBasket(query) {
|
|
644
|
+
return this.basketFetcher.fetchOne(query);
|
|
645
|
+
}
|
|
646
|
+
atLeastOneSearchChosen() {
|
|
647
|
+
const intBasket = this.findBasket(this.currentBasketID);
|
|
648
|
+
return (intBasket === null || intBasket === void 0 ? void 0 : intBasket.subject.value.basketItems.length) > 0;
|
|
649
|
+
}
|
|
650
|
+
getBasketStats(index) {
|
|
651
|
+
var _a, _b, _c;
|
|
652
|
+
const basketPricesObj = ((_c = (_b = (_a = this.baskets.value[index]) === null || _a === void 0 ? void 0 : _a.subject) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.prices) || {};
|
|
653
|
+
const basketPricesKey = Object.keys(basketPricesObj)[0];
|
|
654
|
+
if (basketPricesKey) {
|
|
655
|
+
this.basketPrices.value.currency = basketPricesKey;
|
|
656
|
+
this.basketPrices.value.total =
|
|
657
|
+
this.baskets.value[index].subject.value.prices[basketPricesKey];
|
|
658
|
+
}
|
|
659
|
+
else {
|
|
660
|
+
this.basketPrices.value.total = 0;
|
|
661
|
+
}
|
|
662
|
+
this.basketPrices.value.list.forEach((keys) => {
|
|
663
|
+
var _a, _b, _c;
|
|
664
|
+
keys.price = (_c = (_b = (_a = this.baskets.value[index]) === null || _a === void 0 ? void 0 : _a.subject) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.basketItems.filter((item) => item.service.type === keys.type).reduce((sum, current) => sum + current.price, 0);
|
|
665
|
+
});
|
|
666
|
+
return this.basketPrices;
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50ZXJwcmlzZS1iYXNrZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29idHNlcnZpY2VzL2Jhc2Uvc3JjL2xpYi92ZW5kb3Ivc2VydmljZXMvZW50ZXJwcmlzZS1iYXNrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUF3QixPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNELE9BQU8sRUFJTCxZQUFZLEVBRVosYUFBYSxFQUdiLFdBQVcsRUFHWixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFJTCxhQUFhLEVBRWQsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDMUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFtR2pGLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQztBQStDekIsTUFBTSxPQUFPLGNBQWM7SUFjekIsWUFDRSxNQUF3QixFQUNoQixPQUEyQixFQUMzQixhQUErQyxFQUMvQyxjQUFxQztRQUZyQyxZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0M7UUFDL0MsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBRTdDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ2xCLE9BQU8sRUFBRSxJQUFJLGVBQWUsaUNBQ3ZCLE1BQU0sS0FDVCxN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LElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQywwQ0FBRSxPQUFPLDBDQUFFLEtBQUssMENBQUUsV0FBVyxDQUNoRSxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQ2hELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IEFqdiBmcm9tICdhanYnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIE9ic2VydmVyLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZSwgdGFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEFkZEl0ZW1Ub0Jhc2tldCxcclxuICBCYXNrZXQsXHJcbiAgQmFza2V0SXRlbSxcclxuICBCYXNrZXRTdGF0dXMsXHJcbiAgTWFuYWdlbWVudEluZm8sXHJcbiAgUGFzc2VuZ2VyVHlwZSxcclxuICBQYXltZW50TWV0aG9kLFxyXG4gIFNlcnZpY2UsXHJcbiAgU2VydmljZVR5cGUsXHJcbiAgU2V0QmFza2V0SXRlbU1pVmFsdWUsXHJcbiAgU3VwcGxlbWVudGFyeUJvb2tpbmdJbmZvXHJcbn0gZnJvbSAnLi4vdHlwZXMvZ3JhcGhxbC50eXBlcyc7XHJcbmltcG9ydCB7XHJcbiAgR2V0TWlBdXRvU3VnZXN0aW9uQXJyYXksXHJcbiAgR2V0VXNlckJhc2tldEl0ZW1SZXN1bHQsXHJcbiAgR2V0VXNlckJhc2tldFJlc3VsdCxcclxuICBNZW51U2xpZGVFbnVtLFxyXG4gIFVzZXJCYXNrZXRSZXN1bHRcclxufSBmcm9tICcuLi90eXBlcy90eXBlcyc7XHJcbmltcG9ydCB7IE1hbmFnZW1lbnRJbmZvQW5kSXNWYWxpZCB9IGZyb20gJy4uL2NsYXNzZXMvbWFuYWdlbWVudC1pbmZvLWFuZC12YWxpZCc7XHJcbmltcG9ydCB7IE1vZGFsVHlwZXMgfSBmcm9tICcuLi9jbGFzc2VzL21vZGFsLXR5cGVzLmVudW0nO1xyXG5pbXBvcnQgeyBTdXBwbGVtZW50YXJ5Qm9va2luZ0luZm9JbXBsIH0gZnJvbSAnLi4vY2xhc3Nlcy9zdXBwbGVtZW50YXJ5LWJvb2tpbmctaW5mby1pbXBsJztcclxuaW1wb3J0IHsgQmFza2V0SW5mb01pRGV0YWlsc0ltcGwgfSBmcm9tICcuLi9jbGFzc2VzL2Jhc2tldC1pbmZvLW1pLWRldGFpbHMuaW1wbCc7XHJcbmltcG9ydCB7IEJhc2VIZWxwZXJSb3V0aW5lcyB9IGZyb20gJy4uL2NsYXNzZXMvaGVscGVycyc7XHJcbmltcG9ydCB7IEJhc2VNb2RhbE9wZW5lclNlcnZpY2UgfSBmcm9tICcuL21vZGFsLW9wZW5lci5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBCYXNlR2V0VXNlckZldGNoZXIsXHJcbiAgU2VhcmNoR2V0VXNlckZldGNoZXJUeXBlXHJcbn0gZnJvbSAnLi4vZmV0Y2hlcnMvdXNlci1mZXRjaGVyJztcclxuaW1wb3J0IHtcclxuICBBY2NlcHROZXdQcmljZUZldGNoZXJUeXBlLFxyXG4gIEJhc2VBY2NlcHROZXdQcmljZVVwZGF0ZXJcclxufSBmcm9tICcuLi91cGRhdGVycy9hY2NlcHQtbmV3LXByaWNlLnVwZGF0ZXInO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VHZXRCYXNrZXRGZXRjaGVyLFxyXG4gIEdldEJhc2tldEZldGNoZXJUeXBlXHJcbn0gZnJvbSAnLi4vZmV0Y2hlcnMvYmFza2V0LWZldGNoZXInO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VHZXRVc2VyQmFza2V0c0ZldGNoZXIsXHJcbiAgR2V0VXNlckJhc2tldHNGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL2ZldGNoZXJzL2dldC11c2Vycy1iYXNrZXRzLWZldGNoZXInO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VHZXRNaUF1dG9TdWdlc3Rpb25GZXRjaGVyLFxyXG4gIE1pQXV0b1N1Z2dlc3RGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL2ZldGNoZXJzL2dldE1pQXV0b1N1Z2VzdGlvbnMuZmV0Y2hlcic7XHJcbmltcG9ydCB7XHJcbiAgQWRkSXRlbVRvQmFza2V0RmV0Y2hlclR5cGUsXHJcbiAgQmFzZUFkZEl0ZW1Ub0Jhc2tldFVwZGF0ZXJcclxufSBmcm9tICcuLi91cGRhdGVycy9hZGQtaXRlbS10by1iYXNrZXQudXBkYXRlcic7XHJcbmltcG9ydCB7XHJcbiAgQWRkVXNlckJhc2tldEZldGNoZXJUeXBlLFxyXG4gIEJhc2VBZGRVc2VyVG9CYXNrZXRJdGVtVXBkYXRlclxyXG59IGZyb20gJy4uL3VwZGF0ZXJzL2FkZFVzZXJUb0Jhc2tldEl0ZW0nO1xyXG5pbXBvcnQge1xyXG4gIFNldEJhc2tldEl0ZW1MZWFkUGFzc2VuZ2VyRmV0Y2hlclR5cGUsXHJcbiAgQmFzZVNldEJhc2tldEl0ZW1MZWFkUGFzc2VuZ2VyVXBkYXRlclxyXG59IGZyb20gJy4uL3VwZGF0ZXJzL3NldC1iYXNrZXQtaXRlbS1sZWFkLXBhc3Nlbmdlci51cGRhdGVyJztcclxuaW1wb3J0IHtcclxuICBCYXNlQm9va0Jhc2tldFVwZGF0ZXIsXHJcbiAgQm9va0Jhc2tldEZldGNoZXJUeXBlXHJcbn0gZnJvbSAnLi4vdXBkYXRlcnMvYm9vay1iYXNrZXQtdXBkYXRlcic7XHJcbmltcG9ydCB7XHJcbiAgQmFzZUNyZWF0ZUJhc2tldFVwZGF0ZXIsXHJcbiAgQ3JlYXRlQmFza2V0RmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi91cGRhdGVycy9jcmVhdGUtYmFza2V0LXVwZGF0ZXInO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VEZWxldGVCYXNrZXRVcGRhdGVyLFxyXG4gIERlbGV0ZUJhc2tldEZldGNoZXJUeXBlXHJcbn0gZnJvbSAnLi4vdXBkYXRlcnMvcmVtb3ZlLWJhc2tldC11cGRhdGVyJztcclxuaW1wb3J0IHtcclxuICBCYXNlUmVtb3ZlSXRlbUZyb21CYXNrZXRVcGRhdGVyLFxyXG4gIERlbGV0ZUJhc2tldEl0ZW1GZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL3VwZGF0ZXJzL3JlbW92ZS1pdGVtLWZyb20tYmFza2V0LnVwZGF0ZXInO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VSZXZhbGlkYXRlQmFza2V0VXBkYXRlcixcclxuICBSZXZhbGlkYXRlQmFza2V0RmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi91cGRhdGVycy9yZXZhbGlkYXRlLWJhc2tldC11cGRhdGVyJztcclxuaW1wb3J0IHtcclxuICBCYXNlU2VuZEJhc2tldEZvckFwcHJvdmFsVXBkYXRlcixcclxuICBTZW5kQmFza2V0QXBwcm92YWxGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL3VwZGF0ZXJzL3NlbmQtYmFza2V0LWZvci1hcHByb3ZhbC51cGRhdGVyJztcclxuaW1wb3J0IHtcclxuICBCYXNlU2V0QmFza2V0SXRlbU1pR3JvdXBVcGRhdGVyLFxyXG4gIFNldEJhc2tldEl0TWlHcm91cEZldGNoZXJUeXBlXHJcbn0gZnJvbSAnLi4vdXBkYXRlcnMvc2V0LWJhc2tldC1pdGVtLW1pLWdyb3VwJztcclxuaW1wb3J0IHsgVHJhdmVsbGVyIH0gZnJvbSAnLi4vbW9kZWxzL3RyYXZlbGxlci5vYmplY3QnO1xyXG5pbXBvcnQgeyBTZWFyY2hPYmplY3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlYXJjaC1vYmplY3RzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7XHJcbiAgQmFzZVNldEJhc2tldEl0ZW1NaVZhbHVlVXBkYXRlcixcclxuICBTZXRCYXNrZXRJdE1pRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi91cGRhdGVycy9zZXQtYmFza2V0LWl0ZW0tbWktdmFsdWUtdXBkYXRlcic7XHJcbmltcG9ydCB7XHJcbiAgQmFzZVZhbGlkYXRlTWlGcmVlVmFsdWVUZXN0ZXIsXHJcbiAgVmFsaWRhdGVNaUZldGNoZXJUeXBlXHJcbn0gZnJvbSAnLi4vdGVzdGVycy92YWxpZGF0ZS1taS1mcmVlLXZhbHVlLnRlc3Rlcic7XHJcbmltcG9ydCB7IEVudGVycHJpc2VTZWFyY2hTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9Jc2VhcmNoLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIEZ1bGxVc2VyRGV0YWlscyxcclxuICBVc2VyU2VydmljZUludGVyZmFjZVxyXG59IGZyb20gJy4uL2ludGVyZmFjZXMvSXVzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2UsXHJcbiAgSW50ZXJuYWxCYXNrZXRJbnRlcmZhY2VcclxufSBmcm9tICcuLi9pbnRlcmZhY2VzL0llbnRlcnByaXNlLWJhc2tldC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3VwcGxlbWVudGFyeUJvb2tpbmdJbmZvSW50ZXJmYWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9Jc3VwcGxlbWVudGFyeS1ib29raW5nLWluZm8taW1wbCc7XHJcbmltcG9ydCB7XHJcbiAgQmFzZW1vdmVCYXNrZXRJdGVtVG9CYXNrZXQsXHJcbiAgTW92ZUl0ZW1Ub0FEaWZmZXJlbnRCYXNrZXRUeXBlXHJcbn0gZnJvbSAnLi4vdXBkYXRlcnMvbW92ZS1iYXNrZXQtaXRlbS10by1iYXNrZXQnO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VVcGRhdGVCYXNrZXROb3Rlc1R5cGUsXHJcbiAgQmFzZVVwZGF0ZUJhc2tldE5vdGVVcGRhdGVyXHJcbn0gZnJvbSAnLi4vdXBkYXRlcnMvdXBkYXRlLWJhc2tldC1ub3Rlcy11cGRhdGVyJztcclxuaW1wb3J0IHtcclxuICBCYXNlVXBkYXRlQmFza2V0VGl0bGVUeXBlLFxyXG4gIEJhc2VVcGRhdGVCYXNrZXRUaXRsZVVwZGF0ZXJcclxufSBmcm9tICcuLi91cGRhdGVycy91cGRhdGUtYmFza2V0LXRpdGxlLXVwZGF0ZXInO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VTZXRQYXltZW50T3B0aW9uVXBkYXRlcixcclxuICBTZXRCYXNrZXRJdGVtUGF5bWVudE1ldGhvZFR5cGVcclxufSBmcm9tICcuLi91cGRhdGVycy9zZXQtYmFza2V0LWl0ZW0tcGF5bWVuci1vcHRpb24udXBkYXRlcic7XHJcbmNvbnN0IFRFTVBJRCA9ICdURU1QSURfJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQmFza2V0QW5kSXRlbSB7XHJcbiAgYmFza2V0SWQ6IHN0cmluZztcclxuICBpdGVtOiBCYXNrZXRJdGVtO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgTWlHcm91cERldGFpbCB7XHJcbiAgdHlwZTogU2VydmljZVR5cGU7XHJcbiAgb3B0aW9uczogc3RyaW5nW107XHJcbiAgYmFza2V0SXRlbTogQmFza2V0SXRlbTtcclxuICB2YWx1ZTogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQmFza2V0SXRlbU1hbmFnZW1lbnRJbmZvIHtcclxuICBtaVBlckl0ZW06IE1hbmFnZW1lbnRJbmZvQW5kSXNWYWxpZFtdO1xyXG4gIG1pUGVyVXNlcjoge1xyXG4gICAgW2tleTogc3RyaW5nXToge1xyXG4gICAgICBtYW5hZ2VtZW50SW5mbzogTWFuYWdlbWVudEluZm9BbmRJc1ZhbGlkW107XHJcbiAgICAgIHN1cHBsZW1lbnRhcnlCb29raW5nSW5mbz86IFN1cHBsZW1lbnRhcnlCb29raW5nSW5mb0ludGVyZmFjZTtcclxuICAgIH07XHJcbiAgfTtcclxuICB1c2Vyczogc3RyaW5nW107XHJcbiAgYmFza2V0SXRlbTogQmFza2V0SXRlbTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBCYXNrZXRJbmZvcm1hdGlvbiB7XHJcbiAgcHJpY2VzOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9O1xyXG4gIG1peGVkQ3VycmVuY3k6IGJvb2xlYW47XHJcbiAgY291bnQ6IG51bWJlcjtcclxuICBtaUdyb3VwczogTWlHcm91cERldGFpbFtdO1xyXG4gIGJhc2tldEluZm9NaURldGFpbHM6IEJhc2tldEluZm9NaURldGFpbHNJbXBsW107XHJcbiAgc3VwcEluZm86IFN1cHBsZW1lbnRhcnlCb29raW5nSW5mb0ludGVyZmFjZVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJhc2tldFByaWNlc0xpc3Qge1xyXG4gIHR5cGU6IFNlcnZpY2VUeXBlO1xyXG4gIHByaWNlOiBudW1iZXI7XHJcbiAgY3VycmVuY3k/OiBzdHJpbmc7XHJcbiAgdGV4dDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJhc2tldFByaWNlcyB7XHJcbiAgdG90YWw6IG51bWJlcjtcclxuICBjdXJyZW5jeT86IHN0cmluZztcclxuICBsaXN0OiBCYXNrZXRQcmljZXNMaXN0W107XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEJhc2tldERldGFpbHMgPSBVc2VyQmFza2V0UmVzdWx0ICYgQmFza2V0SW5mb3JtYXRpb247XHJcbmV4cG9ydCBjbGFzcyBJbnRlcm5hbEJhc2tldDxRIGV4dGVuZHMgU2VhcmNoR2V0VXNlckZldGNoZXJUeXBlPlxyXG4gIGltcGxlbWVudHMgQmFza2V0SW5mb3JtYXRpb24sIEludGVybmFsQmFza2V0SW50ZXJmYWNlXHJcbntcclxuICBzdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8QmFza2V0RGV0YWlscz47XHJcbiAgaWQ/OiBzdHJpbmc7XHJcbiAgdGVtcGlkPzogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgcHJpY2VzOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9O1xyXG4gIG1peGVkQ3VycmVuY3k6IGJvb2xlYW47XHJcbiAgY291bnQ6IG51bWJlcjtcclxuICBtaUdyb3VwczogTWlHcm91cERldGFpbFtdO1xyXG4gIGJhc2tldEluZm9NaURldGFpbHM6IEJhc2tldEluZm9NaURldGFpbHNJbXBsW107XHJcbiAgc3VwcEluZm86IFN1cHBsZW1lbnRhcnlCb29raW5nSW5mb0ludGVyZmFjZVtdO1xyXG4gIGdyYW5kVG90YWw6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH07XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBiYXNrZXQ6IFVzZXJCYXNrZXRSZXN1bHQsXHJcbiAgICBwcml2YXRlIGhlbHBlcnM6IEJhc2VIZWxwZXJSb3V0aW5lcyxcclxuICAgIHByaXZhdGUgYmFza2V0U2VydmljZTogRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2UsXHJcbiAgICBwcml2YXRlIGdldFVzZXJGZXRjaGVyOiBCYXNlR2V0VXNlckZldGNoZXI8UT5cclxuICApIHtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcywge1xyXG4gICAgICBzdWJqZWN0OiBuZXcgQmVoYXZpb3JTdWJqZWN0PEJhc2tldERldGFpbHM+KHtcclxuICAgICAgICAuLi5iYXNrZXQsXHJcbiAgICAgICAgcHJpY2VzOiB7fSxcclxuICAgICAgICBtaXhlZEN1cnJlbmN5OiBmYWxzZSxcclxuICAgICAgICBjb3VudDogMCxcclxuICAgICAgICBtaUdyb3VwczogW10sXHJcbiAgICAgICAgYmFza2V0SW5mb01pRGV0YWlsczogW10sXHJcbiAgICAgICAgc3VwcEluZm86IFtdXHJcbiAgICAgIH0pLFxyXG4gICAgICB0ZW1waWQ6IGJhc2tldC5pZCxcclxuICAgICAgaWQ6IGJhc2tldC5pZCxcclxuICAgICAgdGl0bGU6IGJhc2tldC50aXRsZSxcclxuICAgICAgcHJpY2VzOiB7fSxcclxuICAgICAgbWl4ZWRDdXJyZW5jeTogZmFsc2UsXHJcbiAgICAgIGNvdW50OiAwLFxyXG4gICAgICBtaUdyb3VwczogW10sXHJcbiAgICAgIGJhc2tldEluZm9NaURldGFpbHM6IFtdLFxyXG4gICAgICBzdXBwSW5mbzogW11cclxuICAgIH0pO1xyXG4gICAgdGhpcy5uZXh0KGJhc2tldCk7XHJcbiAgfVxyXG5cclxuICBkZXN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5zdWJqZWN0LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZXh0KGJhc2tldDogVXNlckJhc2tldFJlc3VsdCkge1xyXG4gICAgYmFza2V0ID0gdGhpcy5oZWxwZXJzLmNsb25lKGJhc2tldCk7XHJcbiAgICBpZiAoXHJcbiAgICAgIGJhc2tldC5zdGF0dXMgPT09IEJhc2tldFN0YXR1cy5BcHByb3ZlZCAmJlxyXG4gICAgICBiYXNrZXQuYmFza2V0SXRlbXNbMF0ucGVySXRlbVBob25lTnVtYmVyID09PSB1bmRlZmluZWRcclxuICAgICkge1xyXG4gICAgICAvLyBXZSdyZSBpbiBhcHByb3ZlZCBzdGF0ZSBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBzdXBwbGVtZW50IHN0dWZmXHJcbiAgICAgIHRoaXMuYmFza2V0U2VydmljZVxyXG4gICAgICAgIC5nZXRCYXNrZXQoeyBpZDogYmFza2V0LmlkLCB3aXRoU3VwcGxlbWVudGFsOiB0cnVlIH0pXHJcbiAgICAgICAgLnN1YnNjcmliZSgobmV3QmFza2V0OiBVc2VyQmFza2V0UmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm5leHQobmV3QmFza2V0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pZCA9IGJhc2tldC5pZDtcclxuICAgIHRoaXMudGl0bGUgPSBiYXNrZXQudGl0bGU7XHJcbiAgICBjb25zdCB0b1NlbmQ6IEJhc2tldERldGFpbHMgPSB7XHJcbiAgICAgIC4uLmJhc2tldCxcclxuICAgICAgLi4uKGJhc2tldC5iYXNrZXRJdGVtcyB8fCBbXSkucmVkdWNlKFxyXG4gICAgICAgIChhY2N1bTogQmFza2V0SW5mb3JtYXRpb24sIGl0ZW06IEJhc2tldEl0ZW0sIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGlmICghYWNjdW0ucHJpY2VzW2l0ZW0uY3VycmVuY3ldKSB7XHJcbiAgICAgICAgICAgIGFjY3VtLnByaWNlc1tpdGVtLmN1cnJlbmN5XSA9IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhY2N1bS5wcmljZXNbaXRlbS5jdXJyZW5jeV0gKz0gaXRlbS5wcmljZTtcclxuXHJcbiAgICAgICAgICBhY2N1bS5zdXBwSW5mby5wdXNoKFxyXG4gICAgICAgICAgICBuZXcgU3VwcGxlbWVudGFyeUJvb2tpbmdJbmZvSW1wbChcclxuICAgICAgICAgICAgICBpdGVtLFxyXG4gICAgICAgICAgICAgIHRoaXMuaGVscGVycyxcclxuICAgICAgICAgICAgICB0aGlzLmdldFVzZXJGZXRjaGVyXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAoaXRlbS5taUdyb3Vwc0F2YWlsYWJsZSAmJiBpdGVtLm1pR3JvdXBzQXZhaWxhYmxlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgYWNjdW0ubWlHcm91cHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgdHlwZTogaXRlbS5zZXJ2aWNlLnR5cGUsXHJcbiAgICAgICAgICAgICAgb3B0aW9uczogaXRlbS5taUdyb3Vwc0F2YWlsYWJsZSxcclxuICAgICAgICAgICAgICBiYXNrZXRJdGVtOiBpdGVtLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtLm1pR3JvdXBTZWxlY3RlZCB8fCAnJ1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtLm1hbmFnZW1lbnRJbmZvPy5sZW5ndGggPiAwICYmIGl0ZW0udXNlcnM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgYWNjdW0uYmFza2V0SW5mb01pRGV0YWlscy5wdXNoKFxyXG4gICAgICAgICAgICAgIG5ldyBCYXNrZXRJbmZvTWlEZXRhaWxzSW1wbChcclxuICAgICAgICAgICAgICAgIGl0ZW0sXHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2tldFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlbHBlcnNcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gYWNjdW07XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcmljZXM6IHt9LFxyXG4gICAgICAgICAgbWl4ZWRDdXJyZW5jeTogZmFsc2UsXHJcbiAgICAgICAgICBjb3VudDogYmFza2V0LmJhc2tldEl0ZW1zPy5sZW5ndGggfHwgMCxcclxuICAgICAgICAgIG1pR3JvdXBzOiBbXSxcclxuICAgICAgICAgIGJhc2tldEluZm9NaURldGFpbHM6IFtdLFxyXG4gICAgICAgICAgc3VwcEluZm86IFtdXHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICB9O1xyXG4gICAgdG9TZW5kLm1peGVkQ3VycmVuY3kgPSBPYmplY3Qua2V5cyh0b1NlbmQucHJpY2VzKS5sZW5ndGggPiAxO1xyXG4gICAgdGhpcy5zdWJqZWN0Lm5leHQodG9TZW5kKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRW50ZXJwcmlzZUJhc2tldFNlcnZpY2U8XHJcbiAgQU5QVV9RIGV4dGVuZHMgQWNjZXB0TmV3UHJpY2VGZXRjaGVyVHlwZSxcclxuICBBSVRCX1EgZXh0ZW5kcyBBZGRJdGVtVG9CYXNrZXRGZXRjaGVyVHlwZSxcclxuICBBVVRCX1EgZXh0ZW5kcyBBZGRVc2VyQmFza2V0RmV0Y2hlclR5cGUsXHJcbiAgQ0JfUSBleHRlbmRzIENyZWF0ZUJhc2tldEZldGNoZXJUeXBlLFxyXG4gIEdCX1EgZXh0ZW5kcyBHZXRCYXNrZXRGZXRjaGVyVHlwZSxcclxuICBCQl9RIGV4dGVuZHMgQm9va0Jhc2tldEZldGNoZXJUeXBlLFxyXG4gIERCX1EgZXh0ZW5kcyBEZWxldGVCYXNrZXRGZXRjaGVyVHlwZSxcclxuICBHQVNfUSBleHRlbmRzIE1pQXV0b1N1Z2dlc3RGZXRjaGVyVHlwZSxcclxuICBSSUJfUSBleHRlbmRzIERlbGV0ZUJhc2tldEl0ZW1GZXRjaGVyVHlwZSxcclxuICBSVkJfUSBleHRlbmRzIFJldmFsaWRhdGVCYXNrZXRGZXRjaGVyVHlwZSxcclxuICBTQk1JX1EgZXh0ZW5kcyBTZXRCYXNrZXRJdE1pR3JvdXBGZXRjaGVyVHlwZSxcclxuICBTVk1JX1EgZXh0ZW5kcyBTZXRCYXNrZXRJdE1pRmV0Y2hlclR5cGUsXHJcbiAgVk1JX1EgZXh0ZW5kcyBWYWxpZGF0ZU1pRmV0Y2hlclR5cGUsXHJcbiAgU0JBX1EgZXh0ZW5kcyBTZW5kQmFza2V0QXBwcm92YWxGZXRjaGVyVHlwZSxcclxuICBHVV9RIGV4dGVuZHMgU2VhcmNoR2V0VXNlckZldGNoZXJUeXBlLFxyXG4gIEdVQl9RIGV4dGVuZHMgR2V0VXNlckJhc2tldHNGZXRjaGVyVHlwZSxcclxuICBTQkxQX1EgZXh0ZW5kcyBTZXRCYXNrZXRJdGVtTGVhZFBhc3NlbmdlckZldGNoZXJUeXBlLFxyXG4gIE1JVERCX1EgZXh0ZW5kcyBNb3ZlSXRlbVRvQURpZmZlcmVudEJhc2tldFR5cGUsXHJcbiAgVUJOX1EgZXh0ZW5kcyBCYXNlVXBkYXRlQmFza2V0Tm90ZXNUeXBlLFxyXG4gIFVCVF9RIGV4dGVuZHMgQmFzZVVwZGF0ZUJhc2tldFRpdGxlVHlwZSxcclxuICBTQk1fUSBleHRlbmRzIFNldEJhc2tldEl0ZW1QYXltZW50TWV0aG9kVHlwZVxyXG4+IGltcGxlbWVudHMgRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2Vcclxue1xyXG4gIHByaXZhdGUgY3VycmVudEJhc2tldHM6IEludGVybmFsQmFza2V0PEdVX1E+W10gPSBbXTtcclxuXHJcbiAgaGlnaGxpZ2h0QmFza2V0SXRlbXNFbWl0dGVyOiBTdWJqZWN0PEdldFVzZXJCYXNrZXRJdGVtUmVzdWx0W10+ID0gbmV3IFN1YmplY3Q8XHJcbiAgICBHZXRVc2VyQmFza2V0SXRlbVJlc3VsdFtdXHJcbiAgPigpO1xyXG5cclxuICBiYXNrZXRDaGFuZ2VFbWl0dGVyOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihcclxuICAgICcnXHJcbiAgKTtcclxuXHJcbiAgcHJpdmF0ZSBnZXQgY3VycmVudEJhc2tldElEKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5iYXNrZXRDaGFuZ2VFbWl0dGVyLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXQgY3VycmVudEJhc2tldElEKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5jdXJyZW50QmFza2V0SUQpIHtcclxuICAgICAgLy8gdGhpcyBwcmV2ZW50cyB0aGUgZW1pdHRlciBnZXR0aW5nIHN0dWNrIGluIGEgbG9vcCAgLSBjYXN1aW5nIGJyb3dzZXIgb3ZlcmxvYWRzXHJcbiAgICAgIHRoaXMuYmFza2V0Q2hhbmdlRW1pdHRlci5uZXh0KHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJhc2tldHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEludGVybmFsQmFza2V0PEdVX1E+W10+KFtdKTtcclxuXHJcbiAgYmFza2V0TGlzdDogQmFza2V0UHJpY2VzTGlzdFtdID0gW1xyXG4gICAge1xyXG4gICAgICB0eXBlOiBTZXJ2aWNlVHlwZS5GbGlnaHQsXHJcbiAgICAgIHRleHQ6ICdGTElHSFRTJyxcclxuICAgICAgcHJpY2U6IDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6IFNlcnZpY2VUeXBlLlJhaWwsXHJcbiAgICAgIHRleHQ6ICdSQUlMJyxcclxuICAgICAgcHJpY2U6IDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6IFNlcnZpY2VUeXBlLkhvdGVsLFxyXG4gICAgICB0ZXh0OiAnSE9URUxTJyxcclxuICAgICAgcHJpY2U6IDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6IFNlcnZpY2VUeXBlLkNhYixcclxuICAgICAgdGV4dDogJ1RBWElTJyxcclxuICAgICAgcHJpY2U6IDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6IFNlcnZpY2VUeXBlLkNhcixcclxuICAgICAgdGV4dDogJ0NBUlMnLFxyXG4gICAgICBwcmljZTogMFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdHlwZTogU2VydmljZVR5cGUuSW50ZXJuYXRpb25hbFJhaWwsXHJcbiAgICAgIHRleHQ6ICdFVVJPU1RBUicsXHJcbiAgICAgIHByaWNlOiAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0eXBlOiBTZXJ2aWNlVHlwZS5QYXJraW5nLFxyXG4gICAgICB0ZXh0OiAnUEFSS0lORycsXHJcbiAgICAgIHByaWNlOiAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICB0eXBlOiBTZXJ2aWNlVHlwZS5Mb3VuZ2UsXHJcbiAgICAgIHRleHQ6ICdMT1VOR0VTJyxcclxuICAgICAgcHJpY2U6IDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6IFNlcnZpY2VUeXBlLkNvYWNoLFxyXG4gICAgICB0ZXh0OiAnQ09BQ0gnLFxyXG4gICAgICBwcmljZTogMFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdHlwZTogU2VydmljZVR5cGUuRmFzdFRyYWNrLFxyXG4gICAgICB0ZXh0OiAnRkFTVF9UUkFDSycsXHJcbiAgICAgIHByaWNlOiAwXHJcbiAgICB9XHJcbiAgXTtcclxuXHJcbiAgYmFza2V0UHJpY2VzOiBCZWhhdmlvclN1YmplY3Q8QmFza2V0UHJpY2VzPiA9XHJcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PEJhc2tldFByaWNlcz4oeyB0b3RhbDogbnVsbCwgbGlzdDogdGhpcy5iYXNrZXRMaXN0IH0pO1xyXG5cclxuICBtZW51U3RhdGUgPSBNZW51U2xpZGVFbnVtLk9VVDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFjY2VwdE5ld1ByaWNlVXBkYXRlcjogQmFzZUFjY2VwdE5ld1ByaWNlVXBkYXRlcjxBTlBVX1E+LFxyXG4gICAgcHJpdmF0ZSBhZGRJdGVtVG9CYXNrZXRVcGRhdGVyOiBCYXNlQWRkSXRlbVRvQmFza2V0VXBkYXRlcjxBSVRCX1E+LFxyXG4gICAgcHJpdmF0ZSBhZGRVc2VyVG9CYXNrZXRJdGVtOiBCYXNlQWRkVXNlclRvQmFza2V0SXRlbVVwZGF0ZXI8QVVUQl9RPixcclxuICAgIHByaXZhdGUgYmFza2V0Q3JlYXRvcjogQmFzZUNyZWF0ZUJhc2tldFVwZGF0ZXI8Q0JfUT4sXHJcbiAgICBwdWJsaWMgYmFza2V0RmV0Y2hlcjogQmFzZUdldEJhc2tldEZldGNoZXI8R0JfUT4sXHJcbiAgICBwcml2YXRlIGJvb2tCYXNrZXRVcGRhdGVyOiBCYXNlQm9va0Jhc2tldFVwZGF0ZXI8QkJfUT4sXHJcbiAgICBwcml2YXRlIGRlbGV0ZUJhc2tldFVwZGF0ZXI6IEJhc2VEZWxldGVCYXNrZXRVcGRhdGVyPERCX1E+LFxyXG4gICAgcHJpdmF0ZSBnZXRNaUF1dG9TdWdlc3Rpb25GZXRjaGVyOiBCYXNlR2V0TWlBdXRvU3VnZXN0aW9uRmV0Y2hlcjxHQVNfUT4sXHJcbiAgICBwcml2YXRlIGhlbHBlcnM6IEJhc2VIZWxwZXJSb3V0aW5lcyxcclxuICAgIHByaXZhdGUgcmVtb3ZlSXRlbUZyb21CYXNrZXRVcGRhdGVyOiBCYXNlUmVtb3ZlSXRlbUZyb21CYXNrZXRVcGRhdGVyPFJJQl9RPixcclxuICAgIHByaXZhdGUgcmV2YWxpZGF0ZUJhc2tldFVwZGF0ZXI6IEJhc2VSZXZhbGlkYXRlQmFza2V0VXBkYXRlcjxSVkJfUT4sXHJcbiAgICBwcml2YXRlIHNldEJhc2tldEl0ZW1NaUdyb3VwVXBkYXRlcjogQmFzZVNldEJhc2tldEl0ZW1NaUdyb3VwVXBkYXRlcjxTQk1JX1E+LFxyXG4gICAgcHJpdmF0ZSBzZXRCYXNrZXRJdGVtTWlWYWx1ZVVwZGF0ZXI6IEJhc2VTZXRCYXNrZXRJdGVtTWlWYWx1ZVVwZGF0ZXI8U1ZNSV9RPixcclxuICAgIHByaXZhdGUgdmFsaWRhdGVNaUZyZWVWYWx1ZTogQmFzZVZhbGlkYXRlTWlGcmVlVmFsdWVUZXN0ZXI8Vk1JX1E+LFxyXG4gICAgcHJpdmF0ZSBzZW5kQmFza2V0Rm9yQXBwcm92YWxVcGRhdGVyOiBCYXNlU2VuZEJhc2tldEZvckFwcHJvdmFsVXBkYXRlcjxTQkFfUT4sXHJcbiAgICBwcml2YXRlIGdldFVzZXJGZXRjaGVyOiBCYXNlR2V0VXNlckZldGNoZXI8R1VfUT4sXHJcbiAgICBwcml2YXRlIGdldFVzZXJCYXNrZXRzRmV0Y2hlcjogQmFzZUdldFVzZXJCYXNrZXRzRmV0Y2hlcjxHVUJfUT4sXHJcbiAgICBwcml2YXRlIFNldEJhc2tldEl0ZW1MZWFkUGFzc2VuZ2VyOiBCYXNlU2V0QmFza2V0SXRlbUxlYWRQYXNzZW5nZXJVcGRhdGVyPFNCTFBfUT4sXHJcbiAgICBwcml2YXRlIG1vdmVJdGVtVG9BRGlmZmVyZW50QmFza2V0OiBCYXNlbW92ZUJhc2tldEl0ZW1Ub0Jhc2tldDxNSVREQl9RPixcclxuICAgIHByaXZhdGUgdXBkYXRlQmFza2V0Tm90ZXNVcGRhdGVyOiBCYXNlVXBkYXRlQmFza2V0Tm90ZVVwZGF0ZXI8VUJOX1E+LFxyXG4gICAgcHJpdmF0ZSB1cGRhdGVCYXNrZXRUaXRsZVVwZGF0ZXI6IEJhc2VVcGRhdGVCYXNrZXRUaXRsZVVwZGF0ZXI8VUJUX1E+LFxyXG4gICAgcHJpdmF0ZSBzZXRQYXltZW50TWV0aG9kVXBkYXRlcjogQmFzZVNldFBheW1lbnRPcHRpb25VcGRhdGVyPFNCTV9RPixcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlSW50ZXJmYWNlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IEJhc2VNb2RhbE9wZW5lclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuY2hhbmdlVXNlci5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAodXNlckRldGFpbHM6IEZ1bGxVc2VyRGV0YWlscykgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzZXQoKSB7XHJcbiAgICBpZiAodGhpcy51c2VyU2VydmljZS5nZXRmdWxsVXNlckRldGFpbHMoZmFsc2UpLnVzZXJEYXRhLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZ2V0VXNlckJhc2tldHNGZXRjaGVyXHJcbiAgICAgICAgLmZldGNoTGlzdCh7XHJcbiAgICAgICAgICBiYXNrZXRTdGF0dXM6IEJhc2tldFN0YXR1cy5PcGVuLFxyXG4gICAgICAgICAgdXNlcjogdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAgICAgICAuZ2V0ZnVsbFVzZXJEZXRhaWxzKHRydWUpXHJcbiAgICAgICAgICAgIC51c2VyRGF0YS52YWx1ZS51c2VyX2lkLnRvU3RyaW5nKClcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChiYXNrZXRzOiBVc2VyQmFza2V0UmVzdWx0W10pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50QmFza2V0cyA9IGJhc2tldHMubWFwKChiYXNrZXQ6IFVzZXJCYXNrZXRSZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYmFza2V0KSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgaW50QmFza2V0ID0gdGhpcy5maW5kQmFza2V0KGJhc2tldC5pZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWludEJhc2tldCkge1xyXG4gICAgICAgICAgICAgICAgICBpbnRCYXNrZXQgPSBuZXcgSW50ZXJuYWxCYXNrZXQoXHJcbiAgICAgICAgICAgICAgICAgICAgYmFza2V0LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVscGVycyxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VXNlckZldGNoZXJcclxuICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEJhc2tldHMucHVzaChpbnRCYXNrZXQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGludEJhc2tldDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5iYXNrZXRzLm5leHQodGhpcy5jdXJyZW50QmFza2V0cyk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50QmFza2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QmFza2V0SUQgPSB0aGlzLmN1cnJlbnRCYXNrZXRzWzBdLmlkO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudEJhc2tldElEID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5iYXNrZXRDaGFuZ2VFbWl0dGVyLm5leHQodGhpcy5jdXJyZW50QmFza2V0SUQpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRCYXNrZXRzLmZvckVhY2goKGJhc2tldDogSW50ZXJuYWxCYXNrZXRJbnRlcmZhY2UpID0+XHJcbiAgICAgICAgYmFza2V0LnN1YmplY3QudW5zdWJzY3JpYmUoKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmN1cnJlbnRCYXNrZXRzID0gW107XHJcbiAgICAgIHRoaXMuY3VycmVudEJhc2tldElEID0gbnVsbDtcclxuICAgICAgdGhpcy5iYXNrZXRzLm5leHQodGhpcy5jdXJyZW50QmFza2V0cyk7XHJcbiAgICAgIHRoaXMuYmFza2V0Q2hhbmdlRW1pdHRlci5uZXh0KHRoaXMuY3VycmVudEJhc2tldElEKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxPcGVuQmFza2V0cyh1c2VyX2lkOiBzdHJpbmcpOiBQcm9taXNlPFVzZXJCYXNrZXRSZXN1bHRbXT4ge1xyXG4gICAgLy8gbGV0IGludEJhc2tldCA9IHRoaXMuZmluZEJhc2tldCh1c2VyX2lkKVxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlckJhc2tldHNGZXRjaGVyXHJcbiAgICAgIC5mZXRjaExpc3QoeyBiYXNrZXRTdGF0dXM6IEJhc2tldFN0YXR1cy5PcGVuLCB1c2VyOiB1c2VyX2lkIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgbWFwKChyZXN1bHRzOiBVc2VyQmFza2V0UmVzdWx0W10pID0+IHtcclxuICAgICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXN1bHRzLmZvckVhY2goKHJlc3VsdDogVXNlckJhc2tldFJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5maW5kQmFza2V0KHJlc3VsdC5pZCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGludEJhc2tldCA9IG5ldyBJbnRlcm5hbEJhc2tldChcclxuICAgICAgICAgICAgICAgICAgcmVzdWx0LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmhlbHBlcnMsXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMsXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VXNlckZldGNoZXJcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRCYXNrZXRzLnB1c2goaW50QmFza2V0KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgaW50QmFza2V0ID0gbmV3IEludGVybmFsQmFza2V0KFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlkOiB1c2VyX2lkLFxyXG4gICAgICAgICAgICAgICAgYmFza2V0SXRlbXM6IFtdXHJcbiAgICAgICAgICAgICAgfSBhcyBCYXNrZXREZXRhaWxzLFxyXG4gICAgICAgICAgICAgIHRoaXMuaGVscGVycyxcclxuICAgICAgICAgICAgICB0aGlzLFxyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0VXNlckZldGNoZXJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50QmFza2V0cy5wdXNoKGludEJhc2tldCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgYWRkVG9CYXNrZXQoXHJcbiAgICBpdGVtOiBBZGRJdGVtVG9CYXNrZXQuVmFyaWFibGVzLFxyXG4gICAgaW50QmFza2V0OiBJbnRlcm5hbEJhc2tldDxHVV9RPixcclxuICAgIHNlYXJjaFNlcnZpY2U6IEVudGVycHJpc2VTZWFyY2hTZXJ2aWNlSW50ZXJmYWNlLFxyXG4gICAgdHJhdmVsbGVyczogVHJhdmVsbGVyW10gPSBbXVxyXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKHRyYXZlbGxlcnM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgaXRlbS51c2VycyA9IHRoaXMuaGVscGVycy5tYWtlVXNlcnModHJhdmVsbGVycyk7XHJcbiAgICAgIGl0ZW0ubGVhZFBhc3NlbmdlciA9IGl0ZW0udXNlcnNbMF0uaWQ7XHJcbiAgICB9XHJcbiAgICBpdGVtID0gdGhpcy5jaGVja0RldGFpbHMoaXRlbSk7XHJcbiAgICBpZiAoaXRlbSAmJiBpbnRCYXNrZXQpIHtcclxuICAgICAgdGhpcy5hZGRJdGVtVG9CYXNrZXRVcGRhdGVyXHJcbiAgICAgICAgLnVwZGF0ZU9uZShpdGVtKVxyXG4gICAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChuZXdCYXNrZXQ6IFBhcnRpYWw8VXNlckJhc2tldFJlc3VsdD4pID0+IHtcclxuICAgICAgICAgICAgaW50QmFza2V0Lm5leHQoe1xyXG4gICAgICAgICAgICAgIC4uLmludEJhc2tldC5zdWJqZWN0LnZhbHVlLFxyXG4gICAgICAgICAgICAgIC4uLm5ld0Jhc2tldFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IHRoaXMudXNlclNlcnZpY2UuZmluZFNlcnZpY2UoaXRlbS5zZXJ2aWNlKS50eXBlO1xyXG4gICAgICAgICAgICBzZWFyY2hTZXJ2aWNlLnNlYXJjaF9vYmplY3RzW3NlcnZpY2VdLmJvb2tpbmdfY2hvc2VuID0gdHJ1ZTtcclxuICAgICAgICAgICAgc2VhcmNoU2VydmljZS5zZWFyY2hfb2JqZWN0c1tzZXJ2aWNlXS5jaG9zZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3QgYmk6IEdldFVzZXJCYXNrZXRJdGVtUmVzdWx0W10gPSBuZXdCYXNrZXQuYmFza2V0SXRlbXM7XHJcbiAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0QmFza2V0SXRlbXNFbWl0dGVyLm5leHQoYmkpO1xyXG4gICAgICAgICAgICB0aGlzLmJhc2tldENoYW5nZUVtaXR0ZXIubmV4dCh0aGlzLmN1cnJlbnRCYXNrZXRJRCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIGludEJhc2tldC5zdWJqZWN0Lm5leHQoaW50QmFza2V0LnN1YmplY3QudmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBsb2FkQmFza2V0KGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBpbnRCYXNrZXQgPSB0aGlzLmZpbmRCYXNrZXQoaWQpO1xyXG4gICAgaWYgKCFpbnRCYXNrZXQpIHtcclxuICAgICAgaW50QmFza2V0ID0gbmV3IEludGVybmFsQmFza2V0KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgYmFza2V0SXRlbXM6IFtdXHJcbiAgICAgICAgfSBhcyBCYXNrZXREZXRhaWxzLFxyXG4gICAgICAgIHRoaXMuaGVscGVycyxcclxuICAgICAgICB0aGlzLFxyXG4gICAgICAgIHRoaXMuZ2V0VXNlckZldGNoZXJcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jdXJyZW50QmFza2V0cy5wdXNoKGludEJhc2tldCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmJhc2tldEZldGNoZXJcclxuICAgICAgLmZldGNoT25lKHsgaWQgfSlcclxuICAgICAgLnN1YnNjcmliZSgobmV3QmFza2V0OiBVc2VyQmFza2V0UmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaW50QmFza2V0Lm5leHQobmV3QmFza2V0KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdWJzcmliZVRvQmFza2V0KGlkOiBzdHJpbmcsIG9ic2VydmVyOiBPYnNlcnZlcjxCYXNrZXREZXRhaWxzPik6IHZvaWQge1xyXG4gICAgY29uc3QgaW50QmFza2V0ID0gdGhpcy5maW5kQmFza2V0KGlkKTtcclxuICAgIGlmIChpbnRCYXNrZXQpIHtcclxuICAgICAgaW50QmFza2V0LnN1YmplY3Quc3Vic2NyaWJlKG9ic2VydmVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUV4cGlyZWRJdGVtcyhpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnRCYXNrZXQgPSB0aGlzLmZpbmRCYXNrZXQoaWQpO1xyXG4gICAgaW50QmFza2V0LnN1YmplY3QudmFsdWUuYmFza2V0SXRlbXNcclxuICAgICAgLmZpbHRlcigoYmFza2V0SXRlbTogQmFza2V0SXRlbSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICBiYXNrZXRJdGVtLmxhdGVzdFZhbGlkYXRpb25QcmljZURpZmZlcmVuY2UgIT09IDAgfHwgYmFza2V0SXRlbS5leHBpcmVkXHJcbiAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgICAgLmZvckVhY2goKGJhc2tldEl0ZW06IEJhc2tldEl0ZW0pID0+IHtcclxuICAgICAgICB0aGlzLnJlbW92ZUJhc2tldEl0ZW0oaWQsIGJhc2tldEl0ZW0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUJhc2tldEl0ZW0oYmFza2V0SWQ6IHN0cmluZywgaXRlbTogQmFza2V0SXRlbSk6IHZvaWQge1xyXG4gICAgY29uc3QgaW50QmFza2V0OiBJbnRlcm5hbEJhc2tldDxHVV9RPiA9IHRoaXMuZmluZEJhc2tldChiYXNrZXRJZCk7XHJcbiAgICB0aGlzLnJlbW92ZUl0ZW1Gcm9tQmFza2V0VXBkYXRlclxyXG4gICAgICAudXBkYXRlT25lKHsgYmFza2V0SXRlbTogaXRlbS5pZCB9KVxyXG4gICAgICAuc3Vic2NyaWJlKChuZXdCYXNrZXQ6IEJhc2tldCkgPT4ge1xyXG4gICAgICAgIGludEJhc2tldC5uZXh0KHtcclxuICAgICAgICAgIC4uLmludEJhc2tldC5zdWJqZWN0LnZhbHVlLFxyXG4gICAgICAgICAgLi4ubmV3QmFza2V0XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5iYXNrZXRDaGFuZ2VFbWl0dGVyLm5leHQoYmFza2V0SWQpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZWZhdWx0QmFza2V0KFxyXG4gICAgZ2V0Qm9va2VkQmFza2V0OiBib29sZWFuID0gZmFsc2VcclxuICApOiBQcm9taXNlPEludGVybmFsQmFza2V0PEdVX1E+PiB7XHJcbiAgICBjb25zdCBpbnRlcm5hbEJhc2tldDogSW50ZXJuYWxCYXNrZXQ8R1VfUT4gPSBudWxsO1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50QmFza2V0SUQpO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZE9yQ3JlYXRlQmFza2V0KFxyXG4gICAgICB0aGlzLmN1cnJlbnRCYXNrZXRJRCxcclxuICAgICAgZ2V0Qm9va2VkQmFza2V0XHJcbiAgICApLnRoZW4oKGRhdGEpID0+IHtcclxuICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZEJhc2tldChpZDogc3RyaW5nKTogSW50ZXJuYWxCYXNrZXQ8R1VfUT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEJhc2tldHMuZmluZCgoYmFza2V0OiBJbnRlcm5hbEJhc2tldDxHVV9RPikgPT4ge1xyXG4gICAgICByZXR1cm4gYmFza2V0LmlkID09PSBpZCB8fCBiYXNrZXQudGVtcGlkID09PSBpZDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaW5kT3JDcmVhdGVCYXNrZXQoXHJcbiAgICBpZD86IHN0cmluZyxcclxuICAgIGdldEJvb2tlZEJhc2tldDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKTogUHJvbWlzZTxJbnRlcm5hbEJhc2tldDxHVV9RPj4ge1xyXG4gICAgbGV0IGJhc2tldDogSW50ZXJuYWxCYXNrZXQ8R1VfUT4gPSBudWxsO1xyXG4gICAgaWYgKCFpZCkge1xyXG4gICAgICBjb25zdCBhbGxPcGVuQmFza2V0cyA9IGF3YWl0IHRoaXMuZ2V0QWxsT3BlbkJhc2tldHMoXHJcbiAgICAgICAgdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAgICAgLmdldGZ1bGxVc2VyRGV0YWlscyh0cnVlKVxyXG4gICAgICAgICAgLnVzZXJEYXRhLnZhbHVlLnVzZXJfaWQudG9TdHJpbmcoKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgLy8gZmluZCB0aGUgbGFzdCB1cGRhdGVkIGJhc2tldFxyXG4gICAgICBpZiAoIWFsbE9wZW5CYXNrZXRzPy5sZW5ndGgpIHtcclxuICAgICAgICBiYXNrZXQgPSBhd2FpdCB0aGlzLmNyZWF0ZUJhc2tldCgpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEJhc2tldHMucHVzaChiYXNrZXQpO1xyXG4gICAgICAgIHRoaXMuYmFza2V0cy5uZXh0KHRoaXMuY3VycmVudEJhc2tldHMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGJhc2tldHMgYXJlIGFscmVhZHkgc29ydGVkIGJ5IGxhc3QgdXBkYXRlZCAtIHJldHVybiB0aGUgbGFzdCB1cGRhdGVkIGJhc2tldFxyXG4gICAgICAgIGJhc2tldCA9IHRoaXMuZmluZEJhc2tldChhbGxPcGVuQmFza2V0c1swXS5pZCk7XHJcblxyXG4gICAgICAgIGlmIChiYXNrZXQuc3ViamVjdC52YWx1ZS5zdGF0dXMgPT09ICdCT09LRUQnICYmICFnZXRCb29rZWRCYXNrZXQpIHtcclxuICAgICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgICAgJysrKyBSZXRyaWV2ZWQgYmFza2V0IGlzIGluIGJvb2tlZCBzdGF0dXMgLSBjcmVhdGluZyBhIG5ldyBvbmUgKysrJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGJhc2tldCA9IGF3YWl0IHRoaXMuY3JlYXRlQmFza2V0KCk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRCYXNrZXRzLnB1c2goYmFza2V0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5iYXNrZXRzLm5leHQodGhpcy5jdXJyZW50QmFza2V0cyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGJhc2tldCA9IHRoaXMuZmluZEJhc2tldChpZCk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCcrKysgRm91bmQgQmFza2V0OiAnLCBiYXNrZXQsICcgKysrJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGJhc2tldDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVCYXNrZXQoKTogUHJvbWlzZTxJbnRlcm5hbEJhc2tldDxHVV9RPj4ge1xyXG4gICAgY29uc3QgYmFza2V0OiBVc2VyQmFza2V0UmVzdWx0ID0ge1xyXG4gICAgICBpZDogVEVNUElEICsgbW9tZW50KCkudW5peCgpLnRvU3RyaW5nKCksXHJcbiAgICAgIG93bmVyOiBudWxsLFxyXG4gICAgICByZWZlcmVuY2U6IG51bGwsXHJcbiAgICAgIHRpdGxlOiBudWxsLFxyXG4gICAgICBub3RlczogbnVsbCxcclxuICAgICAgY3JlYXRlZEF0OiBudWxsLFxyXG4gICAgICB1cGRhdGVkQXQ6IG51bGwsXHJcbiAgICAgIGJhc2tldEl0ZW1zOiBbXSxcclxuICAgICAgc3RhdHVzOiBudWxsLFxyXG4gICAgICB2YWxpZGF0ZWQ6IGZhbHNlXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGludEJhc2tldCA9IG5ldyBJbnRlcm5hbEJhc2tldDxHVV9RPihcclxuICAgICAgYmFza2V0LFxyXG4gICAgICB0aGlzLmhlbHBlcnMsXHJcbiAgICAgIHRoaXMsXHJcbiAgICAgIHRoaXMuZ2V0VXNlckZldGNoZXJcclxuICAgICk7XHJcbiAgICAvLyB7IHN1YmplY3Q6IG5ldyBCZWhhdmlvclN1YmplY3Q8QmFza2V0PihiYXNrZXQpLCB0ZW1waWQ6IGJhc2tldC5pZCwgaWQ6IGJhc2tldC5pZCwgdGl0bGU6IGJhc2tldC5pZCB9O1xyXG5cclxuICAgIGNvbnN0IHRvUmV0dXJuID0gYXdhaXQgdGhpcy5jcmVhdGVCYXNrZXRPbkRCKGludEJhc2tldCk7XHJcbiAgICB0aGlzLmN1cnJlbnRCYXNrZXRzLnB1c2godG9SZXR1cm4pO1xyXG4gICAgdGhpcy5iYXNrZXRzLm5leHQodGhpcy5jdXJyZW50QmFza2V0cyk7XHJcbiAgICB0aGlzLmJhc2tldENoYW5nZUVtaXR0ZXIubmV4dCh0b1JldHVybi5pZCk7XHJcbiAgICByZXR1cm4gdG9SZXR1cm47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUJhc2tldE9uREIoXHJcbiAgICBpbnRCYXNrZXQ6IEludGVybmFsQmFza2V0PEdVX1E+XHJcbiAgKTogUHJvbWlzZTxJbnRlcm5hbEJhc2tldDxHVV9RPj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5iYXNrZXRDcmVhdG9yXHJcbiAgICAgICAgLnVwZGF0ZU9uZSh7fSlcclxuICAgICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAoYmFza2V0OiBVc2VyQmFza2V0UmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIGludEJhc2tldC5pZCA9IGJhc2tldC5pZDtcclxuICAgICAgICAgICAgaW50QmFza2V0Lm5leHQoYmFza2V0KTtcclxuICAgICAgICAgICAgcmVzb2x2ZShpbnRCYXNrZXQpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKCkgPT4ge31cclxuICAgICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVNZW51KCk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLm1lbnVTdGF0ZSA9PT0gTWVudVNsaWRlRW51bS5JTiB8fFxyXG4gICAgICB0aGlzLm1lbnVTdGF0ZSA9PT0gTWVudVNsaWRlRW51bS5GTEFUXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5tZW51U3RhdGUgPSBNZW51U2xpZGVFbnVtLk9VVDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWVudVN0YXRlID0gTWVudVNsaWRlRW51bS5JTjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlTWVudSgpOiB2b2lkIHtcclxuICAgIHRoaXMubWVudVN0YXRlID0gTWVudVNsaWRlRW51bS5JTjtcclxuICB9XHJcblxyXG4gIGdldExhdGVzdEJhc2tldEl0ZW1Gb3JUeXBlcyhcclxuICAgIGJhc2tldEl0ZW1zOiBCYXNrZXRJdGVtW11cclxuICApOiBSZWNvcmQ8U2VydmljZVR5cGUsIEJhc2tldEl0ZW0+IHtcclxuICAgIHJldHVybiAoYmFza2V0SXRlbXMgfHwgW10pLnJlZHVjZShcclxuICAgICAgKFxyXG4gICAgICAgIGxhdGVzdEl0ZW1zOiBSZWNvcmQ8U2VydmljZVR5cGUsIEJhc2tldEl0ZW0+LFxyXG4gICAgICAgIGJhc2tldEl0ZW06IEJhc2tldEl0ZW1cclxuICAgICAgKSA9PiB7XHJcbiAgICAgICAgbGF0ZXN0SXRlbXNbYmFza2V0SXRlbS5zZXJ2aWNlLnR5cGVdID0gYmFza2V0SXRlbTtcclxuICAgICAgICByZXR1cm4gbGF0ZXN0SXRlbXM7XHJcbiAgICAgIH0sXHJcbiAgICAgIHt9IGFzIFJlY29yZDxTZXJ2aWNlVHlwZSwgQmFza2V0SXRlbT5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrRGV0YWlscyhcclxuICAgIGl0ZW06IEFkZEl0ZW1Ub0Jhc2tldC5WYXJpYWJsZXNcclxuICApOiBBZGRJdGVtVG9CYXNrZXQuVmFyaWFibGVzIHtcclxuICAgIGNvbnN0IHNlcnZpY2VUb0NoZWNrOiBTZXJ2aWNlID0gdGhpcy51c2VyU2VydmljZS5maW5kU2VydmljZShpdGVtLnNlcnZpY2UpO1xyXG4gICAgaWYgKCFzZXJ2aWNlVG9DaGVjaykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdVbmFibGUgdG8gZmluZCBzZXJ2aWNlIGZvciBiYXNrZXQgaXRlbSA6ICcgKyBpdGVtLnNlcnZpY2UpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjaGVjayB0aGUgaXRlbS5kZXRhaWwgb2JqZWN0IGFnYWluc3QgdGhlIHJlbGV2YW50IHNlcnZpY2UgZGV0YWlsU2NoZW1hIHVzaW5nIEFqdlxyXG4gICAgY29uc3QgYWp2ID0gbmV3IEFqdigpO1xyXG4gICAgY29uc3QgdmFsaWRhdGVEZXRhaWxTY2hlbWEgPSBhanYuY29tcGlsZShzZXJ2aWNlVG9DaGVjay5kZXRhaWxTY2hlbWEpO1xyXG4gICAgY29uc3QgdmFsaWRhdGVTZWFyY2hTY2hlbWEgPSBhanYuY29tcGlsZShzZXJ2aWNlVG9DaGVjay5zZWFyY2hRdWVyeVNjaGVtYSk7XHJcblxyXG4gICAgLy8gaWYgdGhlcmUgYXJlIGFueSBtb21lbnQgZGF0ZSBvYmplY3RzIGluIHRoZSBzZWFyY2hRdWVyeSBvYmplY3QgY29udmVydCB0aGVzZSB0byBkYXRlLXRpbWUgc3RyaW5nc1xyXG4gICAgaXRlbS5zZWFyY2hRdWVyeSA9IHRoaXMuaGVscGVycy5zYW5pdGl6ZU1vbWVudERhdGVzKGl0ZW0uc2VhcmNoUXVlcnkpO1xyXG5cclxuICAgIGlmICghdmFsaWRhdGVTZWFyY2hTY2hlbWEoaXRlbS5zZWFyY2hRdWVyeSkpIHtcclxuICAgICAgY29uc3QgZXJyb3IgPSBgSXRlbSBzZWFyY2hRdWVyeSBpcyBub3QgdmFsaWQgZm9yICR7c2VydmljZVRvQ2hlY2submFtZX0gc2VhcmNoIHNjaGVtYS5gO1xyXG4gICAgICBjb25zb2xlLndhcm4oJ3NlYXJjaFNjaGVtYScsIHNlcnZpY2VUb0NoZWNrLnNlYXJjaFF1ZXJ5U2NoZW1hKTtcclxuICAgICAgY29uc29sZS53YXJuKCdpdGVtLnNlYXJjaFF1ZXJ5JywgaXRlbS5zZWFyY2hRdWVyeSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKHZhbGlkYXRlU2VhcmNoU2NoZW1hLmVycm9ycyk7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oTW9kYWxUeXBlcy5Nb2RhbEVycm9yQ29tcG9uZW50LCB7fSwgeyBlcnJvciB9KTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF2YWxpZGF0ZURldGFpbFNjaGVtYShpdGVtLmRldGFpbCkpIHtcclxuICAgICAgY29uc3QgZXJyb3IgPSBgSXRlbSBkZXRhaWwgaXMgbm90IHZhbGlkIGZvciAke3NlcnZpY2VUb0NoZWNrLm5hbWV9IGRldGFpbCBzY2hlbWEuYDtcclxuICAgICAgY29uc29sZS53YXJuKCdkZXRhaWxTY2hlbWEnLCBzZXJ2aWNlVG9DaGVjay5kZXRhaWxTY2hlbWEpO1xyXG4gICAgICBjb25zb2xlLndhcm4oJ2l0ZW0uZGV0YWlsJywgaXRlbS5kZXRhaWwpO1xyXG4gICAgICBjb25zb2xlLmxvZygnU2NoZW1hIGVycm9ycycsIHZhbGlkYXRlRGV0YWlsU2NoZW1hLmVycm9ycyk7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oTW9kYWxUeXBlcy5Nb2RhbEVycm9yQ29tcG9uZW50LCB7fSwgeyBlcnJvciB9KTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9XHJcblxyXG4gIGdldE51bWJlckl0ZW1zRm9yQmFza2V0KGJhc2tldDogSW50ZXJuYWxCYXNrZXQ8R1VfUT4gPSBudWxsKTogbnVtYmVyIHtcclxuICAgIGJhc2tldCA9IGJhc2tldCB8fCB0aGlzLmZpbmRCYXNrZXQodGhpcy5jdXJyZW50QmFza2V0SUQpO1xyXG4gICAgcmV0dXJuIGJhc2tldD8uc3ViamVjdC52YWx1ZS5iYXNrZXRJdGVtcy5sZW5ndGggfHwgMDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbW92ZUJhc2tldChiYXNrZXRpZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoYmFza2V0aWQpIHtcclxuICAgICAgYXdhaXQgdGhpcy5kZWxldGVCYXNrZXRVcGRhdGVyXHJcbiAgICAgICAgLnVwZGF0ZU9uZSh7IGlkOiBiYXNrZXRpZCB9KVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgIHN3aXRjaE1hcCgoZGF0YTogYW55KTogYW55ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5maW5kQmFza2V0KGJhc2tldGlkKT8uZGVzdHJ1Y3RvcigpO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRCYXNrZXRzID0gdGhpcy5jdXJyZW50QmFza2V0cy5maWx0ZXIoKGludEJhKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGludEJhLmlkICE9PSBiYXNrZXRpZDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYmFza2V0cy5uZXh0KHRoaXMuY3VycmVudEJhc2tldHMpO1xyXG4gICAgICAgICAgICBpZiAoYmFza2V0aWQgPT09IHRoaXMuY3VycmVudEJhc2tldElEKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QmFza2V0SUQgPSB0aGlzLmN1cnJlbnRCYXNrZXRzWzBdPy5pZCB8fCBudWxsO1xyXG4gICAgICAgICAgICAgIHRoaXMuYmFza2V0Q2hhbmdlRW1pdHRlci5uZXh0KHRoaXMuY3VycmVudEJhc2tldElEKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnRpbnVlU2VhcmNoQW5kQm9vayhcclxuICAgIGJhc2tldEl0ZW1zOiBhbnlbXSxcclxuICAgIGl0aW5pYXJ5VXJsOiBzdHJpbmdbXSxcclxuICAgIHNlYXJjaFNlcnZpY2U6IEVudGVycHJpc2VTZWFyY2hTZXJ2aWNlSW50ZXJmYWNlXHJcbiAgKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgbGF0ZXN0QmFza2V0SXRlbXMgPSB0aGlzLmdldExhdGVzdEJhc2tldEl0ZW1Gb3JUeXBlcyhiYXNrZXRJdGVtcyk7XHJcbiAgICBjb25zdCBuZXh0U2VhcmNoOiBTZWFyY2hPYmplY3QgPVxyXG4gICAgICBzZWFyY2hTZXJ2aWNlLmdldEhpZ2hlc3RTZWFyY2hQcmlvcml0eU9iamVjdChsYXRlc3RCYXNrZXRJdGVtcyk7XHJcbiAgICBpZiAobmV4dFNlYXJjaCkge1xyXG4gICAgICAoc2VhcmNoU2VydmljZS5zZWFyY2hlcyBhcyBhbnkpW1xyXG4gICAgICAgIG5leHRTZWFyY2gudHlwZVxyXG4gICAgICBdLnVwZGF0ZUZyb21QcmV2aW91c1NlYXJjaGVzKGxhdGVzdEJhc2tldEl0ZW1zKTtcclxuICAgICAgcmV0dXJuIFtuZXh0U2VhcmNoLnNlYXJjaFVybF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaXRpbmlhcnlVcmw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRUcmF2ZWxsZXJzKFxyXG4gICAgYmFza2V0aWQ6IHN0cmluZyxcclxuICAgIGJhc2tldEl0ZW06IEJhc2tldEl0ZW0sXHJcbiAgICB0cmF2ZWxsZXJzOiBUcmF2ZWxsZXJbXSxcclxuICAgIGluZGV4OiBudW1iZXIgPSAwXHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCBiYXNrZXQgPSB0aGlzLmZpbmRCYXNrZXQoYmFza2V0aWQpO1xyXG4gICAgaWYgKGluZGV4IDwgdHJhdmVsbGVycy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgdHJhdmVsbGVyID0gdHJhdmVsbGVyc1tpbmRleF07XHJcbiAgICAgIGNvbnN0IHBhc3NlbmdlclR5cGU6IFBhc3NlbmdlclR5cGUgPSB0cmF2ZWxsZXIuaXNDaGlsZFxyXG4gICAgICAgID8gUGFzc2VuZ2VyVHlwZS5DaGlsZFxyXG4gICAgICAgIDogdHJhdmVsbGVyLmlzSW5mYW50XHJcbiAgICAgICAgPyBQYXNzZW5nZXJUeXBlLkluZmFudFxyXG4gICAgICAgIDogUGFzc2VuZ2VyVHlwZS5BZHVsdDtcclxuXHJcbiAgICAgIHRoaXMuYWRkVXNlclRvQmFza2V0SXRlbVxyXG4gICAgICAgIC51cGRhdGVPbmUoe1xyXG4gICAgICAgICAgYmFza2V0SXRlbTogYmFza2V0SXRlbS5pZCxcclxuICAgICAgICAgIHVzZXJzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBpZDogdHJhdmVsbGVyLmlkLFxyXG4gICAgICAgICAgICAgIHBhc3NlbmdlclR5cGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXSxcclxuICAgICAgICAgIHdpdGhTdXBwbGVtZW50YWw6IGZhbHNlXHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKCkgPT4ge30sXHJcbiAgICAgICAgICAoKSA9PiB7fSxcclxuICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hZGRUcmF2ZWxsZXJzKGJhc2tldC5pZCwgYmFza2V0SXRlbSwgdHJhdmVsbGVycywgaW5kZXggKyAxKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5iYXNrZXRGZXRjaGVyLmZldGNoT25lKHsgaWQ6IGJhc2tldC5pZCB9KS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGJhc2tldDE6IEdldFVzZXJCYXNrZXRSZXN1bHQpID0+IHtcclxuICAgICAgICAgIGJhc2tldC5zdWJqZWN0Lm5leHQoeyAuLi5iYXNrZXQuc3ViamVjdC52YWx1ZSwgLi4uYmFza2V0MSB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChfKSA9PiB7fSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICBiYXNrZXQubmV4dChiYXNrZXQuc3ViamVjdC52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TGVhZFBhc3NlbmdlcihcclxuICAgIGJhc2tldGlkOiBzdHJpbmcsXHJcbiAgICBiYXNrZXRJdGVtOiBCYXNrZXRJdGVtLFxyXG4gICAgdHJhdmVsbGVyczogVHJhdmVsbGVyLFxyXG4gICAgaW5kZXg6IG51bWJlciA9IDBcclxuICApOiB2b2lkIHtcclxuICAgIGNvbnN0IGJhc2tldCA9IHRoaXMuZmluZEJhc2tldChiYXNrZXRpZCk7XHJcbiAgICBpZiAoaW5kZXggPCAxKSB7XHJcbiAgICAgIHRoaXMuU2V0QmFza2V0SXRlbUxlYWRQYXNzZW5nZXIudXBkYXRlT25lKHtcclxuICAgICAgICBpZDogYmFza2V0SXRlbS5pZCxcclxuICAgICAgICB1c2VyOiB0cmF2ZWxsZXJzLmlkLFxyXG4gICAgICAgIHdpdGhTdXBwbGVtZW50YWw6IGZhbHNlXHJcbiAgICAgIH0pLnN1YnNjcmliZShcclxuICAgICAgICAoKSA9PiB7fSxcclxuICAgICAgICAoKSA9PiB7fSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNldExlYWRQYXNzZW5nZXIoYmFza2V0LmlkLCBiYXNrZXRJdGVtLCB0cmF2ZWxsZXJzLCBpbmRleCArIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYmFza2V0RmV0Y2hlci5mZXRjaE9uZSh7IGlkOiBiYXNrZXQuaWQgfSkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChiYXNrZXQxOiBHZXRVc2VyQmFza2V0UmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBiYXNrZXQuc3ViamVjdC5uZXh0KHsgLi4uYmFza2V0LnN1YmplY3QudmFsdWUsIC4uLmJhc2tldDEgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoXykgPT4ge30sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgYmFza2V0Lm5leHQoYmFza2V0LnN1YmplY3QudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZUJhc2tldChcclxuICAgIGJhc2tldGlkOiBzdHJpbmcsXHJcbiAgICBvYnM6IE9ic2VydmFibGU8QmFza2V0RGV0YWlscz5cclxuICApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIG9icy5waXBlKHRha2UoMSkpLnN1YnNjcmliZShcclxuICAgICAgICAoYmFza2V0OiBCYXNrZXREZXRhaWxzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpbnRCYXNrZXQgPSB0aGlzLmZpbmRCYXNrZXQoYmFza2V0aWQpO1xyXG4gICAgICAgICAgaW50QmFza2V0Lm5leHQoYmFza2V0KTtcclxuICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgIGNvbnN0IGludEJhc2tldCA9IHRoaXMuZmluZEJhc2tldChiYXNrZXRpZCk7XHJcbiAgICAgICAgICBpbnRCYXNrZXQubmV4dChpbnRCYXNrZXQuc3ViamVjdC52YWx1ZSk7XHJcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge31cclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmV2YWxpZGF0ZShiYXNrZXRpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZUJhc2tldChcclxuICAgICAgYmFza2V0aWQsXHJcbiAgICAgIHRoaXMucmV2YWxpZGF0ZUJhc2tldFVwZGF0ZXIudXBkYXRlT25lKHsgaWQ6IGJhc2tldGlkIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2V0QmFza2V0SXRlbU1pR3JvdXAoXHJcbiAgICBiYXNrZXRpZDogc3RyaW5nLFxyXG4gICAgYmFza2V0SXRlbWlkOiBzdHJpbmcsXHJcbiAgICBncm91cDogc3RyaW5nXHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZUJhc2tldChcclxuICAgICAgYmFza2V0aWQsXHJcbiAgICAgIHRoaXMuc2V0QmFza2V0SXRlbU1pR3JvdXBVcGRhdGVyLnVwZGF0ZU9uZSh7XHJcbiAgICAgICAgYmFza2V0SXRlbTogYmFza2V0SXRlbWlkLFxyXG4gICAgICAgIGdyb3VwXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYWNjZXB0TmV3UHJpY2UoYmFza2V0aWQ6IHN0cmluZywgaXRlbTogQmFza2V0SXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy51cGRhdGVCYXNrZXQoXHJcbiAgICAgIGJhc2tldGlkLFxyXG4gICAgICB0aGlzLmFjY2VwdE5ld1ByaWNlVXBkYXRlci51cGRhdGVPbmUoeyBpZDogaXRlbS5pZCB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlRnJlZVZhbGVNaShcclxuICAgIG1pSXRlbTogTWFuYWdlbWVudEluZm8sXHJcbiAgICBmcmVlVmFsdWU6IHN0cmluZ1xyXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy52YWxpZGF0ZU1pRnJlZVZhbHVlXHJcbiAgICAgICAgLnRlc3QoeyBtaTogbWlJdGVtLmlkLCBmcmVlVmFsdWUgfSlcclxuICAgICAgICAuc3Vic2NyaWJlKHJlc29sdmUsIHJlamVjdCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldE1pRnJlZVZhbHVlKFxyXG4gICAgYmFza2V0aWQ6IHN0cmluZyxcclxuICAgIG1pSXRlbTogTWFuYWdlbWVudEluZm8sXHJcbiAgICBmcmVlVmFsdWU6IHN0cmluZyxcclxuICAgIHVzZXJJZDogc3RyaW5nID0gbnVsbFxyXG4gICkge1xyXG4gICAgY29uc3QgaW50QmFza2V0ID0gdGhpcy5maW5kQmFza2V0KGJhc2tldGlkKTtcclxuICAgIGNvbnN0IGFyZ3M6IFNldEJhc2tldEl0ZW1NaVZhbHVlLlZhcmlhYmxlcyA9IHtcclxuICAgICAgbWk6IG1pSXRlbS5pZCxcclxuICAgICAgbWlGcmVlVmFsdWU6IGZyZWVWYWx1ZVxyXG4gICAgfTtcclxuICAgIGlmICghIXVzZXJJZCkge1xyXG4gICAgICBhcmdzLnVzZXIgPSB1c2VySWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEJhc2tldEl0ZW1NaVZhbHVlVXBkYXRlclxyXG4gICAgICAudXBkYXRlT25lKGFyZ3MpXHJcbiAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGJhc2tldDogQmFza2V0RGV0YWlscykgPT4ge1xyXG4gICAgICAgICAgaW50QmFza2V0Lm5leHQoYmFza2V0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChfKSA9PiB7fSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICBpbnRCYXNrZXQubmV4dChpbnRCYXNrZXQuc3ViamVjdC52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgc2V0TWlTZWxlY3RlZFZhbHVlKFxyXG4gICAgYmFza2V0aWQ6IHN0cmluZyxcclxuICAgIG1pSXRlbTogTWFuYWdlbWVudEluZm8sXHJcbiAgICBzZWxlY3RlZFZhbHVlOiBzdHJpbmcsXHJcbiAgICB1c2VySWQ6IHN0cmluZyA9IG51bGxcclxuICApIHtcclxuICAgIGNvbnN0IGFyZ3M6IFNldEJhc2tldEl0ZW1NaVZhbHVlLlZhcmlhYmxlcyA9IHtcclxuICAgICAgbWk6IG1pSXRlbS5pZCxcclxuICAgICAgbWlWYWx1ZTogc2VsZWN0ZWRWYWx1ZVxyXG4gICAgfTtcclxuICAgIGlmICghIXVzZXJJZCkge1xyXG4gICAgICBhcmdzLnVzZXIgPSB1c2VySWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZUJhc2tldChcclxuICAgICAgYmFza2V0aWQsXHJcbiAgICAgIHRoaXMuc2V0QmFza2V0SXRlbU1pVmFsdWVVcGRhdGVyLnVwZGF0ZU9uZShhcmdzKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldE1pQXV0b1N1Z2VzdGlvbnMoXHJcbiAgICBtaUlkOiBzdHJpbmcsXHJcbiAgICBwYXJ0aWFsTGFiZWw6IHN0cmluZyxcclxuICAgIGlzTG9hZGluZzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+XHJcbiAgKTogT2JzZXJ2YWJsZTxHZXRNaUF1dG9TdWdlc3Rpb25BcnJheT4ge1xyXG4gICAgaXNMb2FkaW5nPy5uZXh0KHRydWUpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmdldE1pQXV0b1N1Z2VzdGlvbkZldGNoZXJcclxuICAgICAgLmZldGNoTGlzdCh7IG1pOiBtaUlkLCBwYXJ0aWFsTGFiZWwgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFwKChfKSA9PiB7XHJcbiAgICAgICAgICBpc0xvYWRpbmc/Lm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBzYXZlTWlEYXRhKGJhc2tldElkOiBzdHJpbmcsIGJtaUFycmF5OiBCYXNrZXRJdGVtTWFuYWdlbWVudEluZm9bXSkge1xyXG4gICAgYm1pQXJyYXkuZm9yRWFjaCgoYm1pOiBCYXNrZXRJdGVtTWFuYWdlbWVudEluZm8pID0+IHtcclxuICAgICAgYm1pLm1pUGVySXRlbS5mb3JFYWNoKChpdGVtOiBNYW5hZ2VtZW50SW5mb0FuZElzVmFsaWQpID0+IHtcclxuICAgICAgICBpdGVtLnNhdmUoYmFza2V0SWQsIG51bGwpO1xyXG4gICAgICB9KTtcclxuICAgICAgYm1pLnVzZXJzLmZvckVhY2goKHVzZXI6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGJtaS5taVBlclVzZXJbdXNlcl0ubWFuYWdlbWVudEluZm8uZm9yRWFjaChcclxuICAgICAgICAgIChpdGVtOiBNYW5hZ2VtZW50SW5mb0FuZElzVmFsaWQpID0+IHtcclxuICAgICAgICAgICAgaXRlbS5zYXZlKGJhc2tldElkLCB1c2VyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2VuZEJhc2tldEZvckFwcHJvdmFsKGJhc2tldGlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudXBkYXRlQmFza2V0KFxyXG4gICAgICBiYXNrZXRpZCxcclxuICAgICAgdGhpcy5zZW5kQmFza2V0Rm9yQXBwcm92YWxVcGRhdGVyXHJcbiAgICAgICAgLnVwZGF0ZU9uZSh7IGJhc2tldDogYmFza2V0aWQgfSlcclxuICAgICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNldEJhc2tldEl0ZW1QYXltZW50T3B0aW9uKFxyXG4gICAgYmFza2V0OiBCYXNrZXREZXRhaWxzLFxyXG4gICAgYmFza2V0SXRlbTogQmFza2V0SXRlbSxcclxuICAgIHBheW1lbnRNZXRob2Q6IHN0cmluZ1xyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXBkYXRlQmFza2V0KFxyXG4gICAgICBiYXNrZXQuaWQsXHJcbiAgICAgIHRoaXMuc2V0UGF5bWVudE1ldGhvZFVwZGF0ZXIudXBkYXRlT25lKHtcclxuICAgICAgICBiYXNrZXRJdGVtOiBiYXNrZXRJdGVtLmlkLFxyXG4gICAgICAgIHBheW1lbnRNZXRob2RcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBib29rQmFza2V0KGJhc2tldGlkOiBzdHJpbmcsIHN1cHBsZW1lbnRhcnlJbmZvOiBTdXBwbGVtZW50YXJ5Qm9va2luZ0luZm9bXSkge1xyXG4gICAgdGhpcy51cGRhdGVCYXNrZXQoXHJcbiAgICAgIGJhc2tldGlkLFxyXG4gICAgICB0aGlzLmJvb2tCYXNrZXRVcGRhdGVyLnVwZGF0ZU9uZSh7IGlkOiBiYXNrZXRpZCwgc3VwcGxlbWVudGFyeUluZm8gfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBtb3ZlQmFza2V0SXRlbShcclxuICAgIG9yaWdpbmFsQmFza2V0SWQ6IHN0cmluZyxcclxuICAgIGJhc2tldEl0ZW06IEJhc2tldEl0ZW0sXHJcbiAgICBiYXNrZXRJZFRvTW92ZVRvOiBzdHJpbmdcclxuICApOiB2b2lkIHtcclxuICAgIHRoaXMubW92ZUl0ZW1Ub0FEaWZmZXJlbnRCYXNrZXRcclxuICAgICAgLnVwZGF0ZU9uZSh7XHJcbiAgICAgICAgYmFza2V0SXRlbTogYmFza2V0SXRlbS5pZCxcclxuICAgICAgICBuZXdCYXNrZXQ6IGJhc2tldElkVG9Nb3ZlVG9cclxuICAgICAgfSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkQmFza2V0KG9yaWdpbmFsQmFza2V0SWQpO1xyXG4gICAgICAgIHRoaXMubG9hZEJhc2tldChiYXNrZXRJZFRvTW92ZVRvKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVCYXNrZXROb3RlcyhiYXNrZXRJZDogc3RyaW5nLCBub3Rlczogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZUJhc2tldChcclxuICAgICAgYmFza2V0SWQsXHJcbiAgICAgIHRoaXMudXBkYXRlQmFza2V0Tm90ZXNVcGRhdGVyLnVwZGF0ZU9uZSh7IGlkOiBiYXNrZXRJZCwgbm90ZXMgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVCYXNrZXRUaXRsZShiYXNrZXRJZDogc3RyaW5nLCB0aXRsZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZUJhc2tldChcclxuICAgICAgYmFza2V0SWQsXHJcbiAgICAgIHRoaXMudXBkYXRlQmFza2V0VGl0bGVVcGRhdGVyLnVwZGF0ZU9uZSh7IGlkOiBiYXNrZXRJZCwgbmV3VGl0bGU6IHRpdGxlIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRCYXNrZXQocXVlcnk6IHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICB3aXRoU3VwcGxlbWVudGFsOiB0cnVlO1xyXG4gIH0pOiBPYnNlcnZhYmxlPEdldFVzZXJCYXNrZXRSZXN1bHQ+IHtcclxuICAgIHJldHVybiB0aGlzLmJhc2tldEZldGNoZXIuZmV0Y2hPbmUocXVlcnkpO1xyXG4gIH1cclxuXHJcbiAgYXRMZWFzdE9uZVNlYXJjaENob3NlbigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGludEJhc2tldDogSW50ZXJuYWxCYXNrZXRJbnRlcmZhY2UgPSB0aGlzLmZpbmRCYXNrZXQoXHJcbiAgICAgIHRoaXMuY3VycmVudEJhc2tldElEXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGludEJhc2tldD8uc3ViamVjdC52YWx1ZS5iYXNrZXRJdGVtcy5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEJhc2tldFN0YXRzKGluZGV4OiBudW1iZXIpOiBCZWhhdmlvclN1YmplY3Q8QmFza2V0UHJpY2VzPiB7XHJcbiAgICBjb25zdCBiYXNrZXRQcmljZXNPYmogPVxyXG4gICAgICB0aGlzLmJhc2tldHMudmFsdWVbaW5kZXhdPy5zdWJqZWN0Py52YWx1ZT8ucHJpY2VzIHx8IHt9O1xyXG4gICAgY29uc3QgYmFza2V0UHJpY2VzS2V5ID0gT2JqZWN0LmtleXMoYmFza2V0UHJpY2VzT2JqKVswXTtcclxuICAgIGlmIChiYXNrZXRQcmljZXNLZXkpIHtcclxuICAgICAgdGhpcy5iYXNrZXRQcmljZXMudmFsdWUuY3VycmVuY3kgPSBiYXNrZXRQcmljZXNLZXk7XHJcbiAgICAgIHRoaXMuYmFza2V0UHJpY2VzLnZhbHVlLnRvdGFsID1cclxuICAgICAgICB0aGlzLmJhc2tldHMudmFsdWVbaW5kZXhdLnN1YmplY3QudmFsdWUucHJpY2VzW2Jhc2tldFByaWNlc0tleV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmJhc2tldFByaWNlcy52YWx1ZS50b3RhbCA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5iYXNrZXRQcmljZXMudmFsdWUubGlzdC5mb3JFYWNoKChrZXlzKSA9PiB7XHJcbiAgICAgIGtleXMucHJpY2UgPSB0aGlzLmJhc2tldHMudmFsdWVbaW5kZXhdPy5zdWJqZWN0Py52YWx1ZT8uYmFza2V0SXRlbXNcclxuICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnNlcnZpY2UudHlwZSA9PT0ga2V5cy50eXBlKVxyXG4gICAgICAgIC5yZWR1Y2UoKHN1bSwgY3VycmVudCkgPT4gc3VtICsgY3VycmVudC5wcmljZSwgMCk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmJhc2tldFByaWNlcztcclxuICB9XHJcbn1cclxuXHJcbmludGVyZmFjZSBEZXRhaWxTY2hlbWFQcm9wZXJ0aWVzIHtcclxuICB0eXBlPzogJ3N0cmluZycgfCAnbnVtYmVyJyB8ICdpbnRlZ2VyJyB8ICdhcnJheSc7XHJcbiAgJHJlZj86IHN0cmluZztcclxuICBmb3JtYXQ/OiBzdHJpbmc7XHJcbn1cclxuaW50ZXJmYWNlIERldGFpbFNjaGVtYSB7XHJcbiAgJGRlZnM/OiB7IFtrZXk6IHN0cmluZ106IERldGFpbFNjaGVtYSB9O1xyXG4gIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBib29sZWFuO1xyXG4gIHByb3BlcnRpZXM6IHsgW2tleTogc3RyaW5nXTogRGV0YWlsU2NoZW1hUHJvcGVydGllcyB9O1xyXG4gIHJlcXVpcmVkOiBzdHJpbmdbXTtcclxufVxyXG4iXX0=
|