@hitsoft/kadooglu-keops 0.0.1 → 0.0.3
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/config/enums/route-names.d.ts +15 -1
- package/esm2020/config/enums/route-names.mjs +1 -1
- package/esm2020/config/providers/route.provider.mjs +132 -4
- package/esm2020/lib/features/bl-tracking/components/bl-tracking-form.component.mjs +82 -0
- package/esm2020/lib/features/bl-tracking/components/bl-tracking.component.mjs +65 -0
- package/esm2020/lib/features/bl-tracking/hit-bl-tracking-routing.module.mjs +29 -0
- package/esm2020/lib/features/bl-tracking/hit-bl-tracking.module.mjs +58 -0
- package/esm2020/lib/features/carriers/components/carrier-form.component.mjs +78 -0
- package/esm2020/lib/features/carriers/components/carriers.component.mjs +66 -0
- package/esm2020/lib/features/carriers/hit-carriers-routing.module.mjs +29 -0
- package/esm2020/lib/features/carriers/hit-carriers.module.mjs +58 -0
- package/esm2020/lib/features/container-definitions/components/container-definition-form.component.mjs +2 -2
- package/esm2020/lib/features/container-definitions/components/container-definitions.component.mjs +2 -2
- package/esm2020/lib/features/container-loading-counts/components/container-loading-counts.component.mjs +4 -4
- package/esm2020/lib/features/container-loading-scenarios/components/container-loading-scenarios.component.mjs +2 -2
- package/esm2020/lib/features/container-loading-scenarios/container-loading-scenario-l10n-helper.mjs +2 -2
- package/esm2020/lib/features/container-mix-types/components/container-mix-type-form.component.mjs +2 -2
- package/esm2020/lib/features/container-mix-types/components/container-mix-types.component.mjs +2 -2
- package/esm2020/lib/features/container-pallet-capacities/components/container-pallet-capacities.component.mjs +7 -6
- package/esm2020/lib/features/container-pallet-capacities/components/container-pallet-capacity-form.component.mjs +2 -2
- package/esm2020/lib/features/cost-calculation/components/cost-calculation-inputs.component.mjs +20 -11
- package/esm2020/lib/features/cost-calculation/components/cost-calculation-result-sum.component.mjs +2 -2
- package/esm2020/lib/features/cost-calculation/components/cost-calculation.component.mjs +16 -22
- package/esm2020/lib/features/cost-calculation/cost-calculation.models.mjs +1 -1
- package/esm2020/lib/features/cost-calculation/engine/currency.utils.mjs +2 -2
- package/esm2020/lib/features/cost-calculation/engine/item-resolver.mjs +2 -2
- package/esm2020/lib/features/cost-calculation/engine/models.mjs +2 -2
- package/esm2020/lib/features/cost-calculation/engine/stage-builder.mjs +4 -4
- package/esm2020/lib/features/cost-calculation/hit-cost-calculation.module.mjs +7 -3
- package/esm2020/lib/features/cost-groups/components/cost-group-form.component.mjs +3 -3
- package/esm2020/lib/features/cost-groups/components/cost-groups.component.mjs +3 -3
- package/esm2020/lib/features/cost-groups/cost-group-role-l10n-helper.mjs +2 -2
- package/esm2020/lib/features/cost-items/components/cost-item-form.component.mjs +8 -7
- package/esm2020/lib/features/cost-items/components/cost-items.component.mjs +2 -2
- package/esm2020/lib/features/cost-items/cost-item-l10n-helper.mjs +2 -2
- package/esm2020/lib/features/cost-parameter-categories/components/cost-parameter-categories.component.mjs +2 -2
- package/esm2020/lib/features/cost-parameter-categories/components/cost-parameter-category-form.component.mjs +4 -4
- package/esm2020/lib/features/cost-parameter-categories/cost-parameter-category-l10n-helper.mjs +2 -5
- package/esm2020/lib/features/cost-parameters/components/cost-parameter-form.component.mjs +20 -38
- package/esm2020/lib/features/cost-parameters/components/cost-parameters.component.mjs +18 -11
- package/esm2020/lib/features/cost-parameters/cost-parameter-l10n-helper.mjs +2 -2
- package/esm2020/lib/features/destination-ports/components/destination-port-form.component.mjs +86 -0
- package/esm2020/lib/features/destination-ports/components/destination-ports.component.mjs +74 -0
- package/esm2020/lib/features/destination-ports/hit-destination-ports-routing.module.mjs +29 -0
- package/esm2020/lib/features/destination-ports/hit-destination-ports.module.mjs +58 -0
- package/esm2020/lib/features/exchange-rates/components/central-bank-rates.component.mjs +1 -1
- package/esm2020/lib/features/exchange-rates/components/exchange-rates.component.mjs +2 -2
- package/esm2020/lib/features/exchange-rates/components/fixed-rates-form.component.mjs +3 -3
- package/esm2020/lib/features/fob-inland-definitions/components/fob-inland-definition-form.component.mjs +80 -0
- package/esm2020/lib/features/fob-inland-definitions/components/fob-inland-definitions.component.mjs +65 -0
- package/esm2020/lib/features/fob-inland-definitions/hit-fob-inland-definitions-routing.module.mjs +29 -0
- package/esm2020/lib/features/fob-inland-definitions/hit-fob-inland-definitions.module.mjs +58 -0
- package/esm2020/lib/features/freight-offers/components/freight-offer-copy.component.mjs +67 -0
- package/esm2020/lib/features/freight-offers/components/freight-offer-form.component.mjs +181 -0
- package/esm2020/lib/features/freight-offers/components/freight-offers.component.mjs +159 -0
- package/esm2020/lib/features/freight-offers/hit-freight-offers-routing.module.mjs +29 -0
- package/esm2020/lib/features/freight-offers/hit-freight-offers.module.mjs +62 -0
- package/esm2020/lib/features/incoterms/components/incoterm-form.component.mjs +81 -0
- package/esm2020/lib/features/incoterms/components/incoterms.component.mjs +65 -0
- package/esm2020/lib/features/incoterms/hit-incoterms-routing.module.mjs +29 -0
- package/esm2020/lib/features/incoterms/hit-incoterms.module.mjs +58 -0
- package/esm2020/lib/features/index.mjs +29 -1
- package/esm2020/lib/features/item-package-groups/components/item-package-group-form.component.mjs +78 -0
- package/esm2020/lib/features/item-package-groups/components/item-package-groups.component.mjs +69 -0
- package/esm2020/lib/features/item-package-groups/hit-item-package-groups-routing.module.mjs +29 -0
- package/esm2020/lib/features/item-package-groups/hit-item-package-groups.module.mjs +58 -0
- package/esm2020/lib/features/item-package-types/components/item-package-type-form.component.mjs +78 -0
- package/esm2020/lib/features/item-package-types/components/item-package-types.component.mjs +69 -0
- package/esm2020/lib/features/item-package-types/hit-item-package-types-routing.module.mjs +29 -0
- package/esm2020/lib/features/item-package-types/hit-item-package-types.module.mjs +58 -0
- package/esm2020/lib/features/item-product-types/components/item-product-type-form.component.mjs +78 -0
- package/esm2020/lib/features/item-product-types/components/item-product-types.component.mjs +69 -0
- package/esm2020/lib/features/item-product-types/hit-item-product-types-routing.module.mjs +29 -0
- package/esm2020/lib/features/item-product-types/hit-item-product-types.module.mjs +58 -0
- package/esm2020/lib/features/lines/components/line-form.component.mjs +78 -0
- package/esm2020/lib/features/lines/components/lines.component.mjs +66 -0
- package/esm2020/lib/features/lines/hit-lines-routing.module.mjs +29 -0
- package/esm2020/lib/features/lines/hit-lines.module.mjs +58 -0
- package/esm2020/lib/features/packaging-materials/components/packaging-material-form.component.mjs +2 -2
- package/esm2020/lib/features/packaging-materials/components/packaging-materials.component.mjs +2 -2
- package/esm2020/lib/features/packaging-prices/components/packaging-price-form.component.mjs +6 -11
- package/esm2020/lib/features/packaging-prices/components/packaging-prices.component.mjs +2 -2
- package/esm2020/lib/features/packaging-prices/packaging-price-calculator.mjs +2 -2
- package/esm2020/lib/features/packaging-prices/packaging-price-excel.service.mjs +2 -2
- package/esm2020/lib/features/packaging-prices/packaging-price-form.factory.mjs +1 -1
- package/esm2020/lib/features/packaging-prices/packaging-price-lines.builder.mjs +2 -2
- package/esm2020/lib/features/packaging-types/components/packaging-type-form.component.mjs +2 -2
- package/esm2020/lib/features/packaging-types/components/packaging-types.component.mjs +2 -2
- package/esm2020/lib/features/pallet-definitions/components/pallet-definition-form.component.mjs +2 -2
- package/esm2020/lib/features/pallet-definitions/components/pallet-definitions.component.mjs +2 -2
- package/esm2020/lib/features/pos/components/pos-form.component.mjs +77 -0
- package/esm2020/lib/features/pos/components/pos.component.mjs +65 -0
- package/esm2020/lib/features/pos/hit-pos-routing.module.mjs +29 -0
- package/esm2020/lib/features/pos/hit-pos.module.mjs +58 -0
- package/esm2020/lib/features/price-parameter-types/components/price-parameter-type-form.component.mjs +2 -2
- package/esm2020/lib/features/price-parameter-types/components/price-parameter-types.component.mjs +4 -4
- package/esm2020/lib/features/price-parameters/components/price-parameter-form-cost-items.component.mjs +32 -0
- package/esm2020/lib/features/price-parameters/components/price-parameter-form-discount-rates-modal.component.mjs +52 -0
- package/esm2020/lib/features/price-parameters/components/price-parameter-form-discount-rates.component.mjs +84 -0
- package/esm2020/lib/features/price-parameters/components/price-parameter-form-items.component.mjs +43 -0
- package/esm2020/lib/features/price-parameters/components/price-parameter-form-price-lists.component.mjs +42 -0
- package/esm2020/lib/features/price-parameters/components/price-parameter-form.component.mjs +252 -0
- package/esm2020/lib/features/price-parameters/components/price-parameters.component.mjs +78 -0
- package/esm2020/lib/features/price-parameters/hit-price-parameters-routing.module.mjs +46 -0
- package/esm2020/lib/features/price-parameters/hit-price-parameters.module.mjs +93 -0
- package/esm2020/lib/features/price-parameters/price-parameter-cost-match.service.mjs +21 -0
- package/esm2020/lib/features/price-parameters/price-parameter-form-data.service.mjs +50 -0
- package/esm2020/lib/features/price-parameters/price-parameter-l10n-helper.mjs +7 -0
- package/esm2020/lib/features/price-parameters/price-parameter-lookups.service.mjs +32 -0
- package/esm2020/lib/features/sap-sales-persons/components/sap-sales-person-form.component.mjs +3 -3
- package/esm2020/lib/features/sap-sales-persons/components/sap-sales-persons.component.mjs +5 -3
- package/esm2020/lib/features/settings/components/cost-settings.component.mjs +2 -2
- package/esm2020/lib/kadooglu-keops-routing.module.mjs +25 -1
- package/esm2020/lib/shared/amount-currency-input/amount-currency-input.component.mjs +66 -0
- package/esm2020/lib/shared/cost-item-classification.utils.mjs +12 -0
- package/esm2020/lib/shared/cost-item-rows.builder.mjs +40 -0
- package/esm2020/lib/shared/pipes/resolve-code-name.pipe.mjs +16 -0
- package/esm2020/lib/shared/shared-ui.module.mjs +20 -0
- package/esm2020/lib/utils/currency.utils.mjs +4 -2
- package/esm2020/lib/utils/exchange-rate.utils.mjs +12 -0
- package/esm2020/proxy/bl-tracking/dtos/index.mjs +2 -0
- package/esm2020/proxy/bl-tracking/dtos/models.mjs +2 -0
- package/esm2020/{lib/proxy/cost-items → proxy/business-partners}/dtos/index.mjs +1 -1
- package/esm2020/proxy/business-partners/dtos/models.mjs +2 -0
- package/esm2020/proxy/carriers/dtos/index.mjs +2 -0
- package/esm2020/proxy/carriers/dtos/models.mjs +2 -0
- package/esm2020/{lib/proxy/exchange-rates → proxy/container-definitions}/dtos/index.mjs +1 -1
- package/esm2020/proxy/container-definitions/dtos/models.mjs +2 -0
- package/esm2020/proxy/container-loading-counts/dtos/index.mjs +2 -0
- package/esm2020/proxy/container-loading-counts/dtos/models.mjs +2 -0
- package/esm2020/proxy/container-loading-counts/loading-target-kind.enum.mjs +8 -0
- package/esm2020/proxy/container-loading-scenarios/dtos/index.mjs +2 -0
- package/esm2020/proxy/container-loading-scenarios/dtos/models.mjs +2 -0
- package/esm2020/proxy/container-loading-scenarios/pallet-status.enum.mjs +8 -0
- package/esm2020/proxy/container-mix-types/dtos/index.mjs +2 -0
- package/esm2020/proxy/container-mix-types/dtos/models.mjs +2 -0
- package/esm2020/proxy/container-pallet-capacities/dtos/index.mjs +2 -0
- package/esm2020/proxy/container-pallet-capacities/dtos/models.mjs +2 -0
- package/esm2020/proxy/controllers/bl-tracking.service.mjs +36 -0
- package/esm2020/proxy/controllers/business-partner.service.mjs +22 -0
- package/esm2020/proxy/controllers/carrier.service.mjs +36 -0
- package/esm2020/proxy/controllers/container-definition.service.mjs +40 -0
- package/esm2020/proxy/controllers/container-loading-count.service.mjs +31 -0
- package/esm2020/proxy/controllers/container-loading-scenario.service.mjs +27 -0
- package/esm2020/proxy/controllers/container-mix-type.service.mjs +40 -0
- package/esm2020/proxy/controllers/container-pallet-capacity.service.mjs +40 -0
- package/esm2020/proxy/controllers/cost-group.service.mjs +40 -0
- package/esm2020/proxy/controllers/cost-item.service.mjs +40 -0
- package/esm2020/proxy/controllers/cost-parameter-category.service.mjs +40 -0
- package/esm2020/proxy/controllers/cost-parameter.service.mjs +36 -0
- package/esm2020/proxy/controllers/cost-settings.service.mjs +27 -0
- package/esm2020/proxy/controllers/destination-port.service.mjs +44 -0
- package/esm2020/proxy/controllers/exchange-rate.service.mjs +27 -0
- package/esm2020/proxy/controllers/fob-inland-definition.service.mjs +36 -0
- package/esm2020/proxy/controllers/freight-offer.service.mjs +57 -0
- package/esm2020/proxy/controllers/incoterm.service.mjs +36 -0
- package/esm2020/proxy/controllers/index.mjs +33 -0
- package/esm2020/proxy/controllers/item-package-group.service.mjs +40 -0
- package/esm2020/proxy/controllers/item-package-type.service.mjs +40 -0
- package/esm2020/proxy/controllers/item-product-type.service.mjs +40 -0
- package/esm2020/proxy/controllers/item.service.mjs +23 -0
- package/esm2020/proxy/controllers/line.service.mjs +36 -0
- package/esm2020/proxy/controllers/packaging-material.service.mjs +40 -0
- package/esm2020/proxy/controllers/packaging-price.service.mjs +55 -0
- package/esm2020/proxy/controllers/packaging-type.service.mjs +40 -0
- package/esm2020/proxy/controllers/pallet-definition.service.mjs +40 -0
- package/esm2020/proxy/controllers/pos.service.mjs +36 -0
- package/esm2020/proxy/controllers/price-list.service.mjs +28 -0
- package/esm2020/proxy/controllers/price-parameter-type.service.mjs +40 -0
- package/esm2020/proxy/controllers/price-parameter.service.mjs +40 -0
- package/esm2020/proxy/controllers/sap-sales-person.service.mjs +27 -0
- package/esm2020/proxy/cost-groups/cost-group-role.enum.mjs +10 -0
- package/esm2020/proxy/cost-groups/dtos/index.mjs +2 -0
- package/esm2020/proxy/cost-groups/dtos/models.mjs +2 -0
- package/esm2020/proxy/cost-items/cost-item-calculation-type.enum.mjs +9 -0
- package/esm2020/{lib/proxy → proxy}/cost-items/cost-item-system-code.enum.mjs +1 -1
- package/esm2020/proxy/cost-items/dtos/index.mjs +2 -0
- package/esm2020/proxy/cost-items/dtos/models.mjs +2 -0
- package/esm2020/proxy/cost-parameter-categories/cost-parameter-category-parent-code.enum.mjs +8 -0
- package/esm2020/{lib/proxy/pallet-definitions → proxy/cost-parameter-categories}/dtos/index.mjs +1 -1
- package/esm2020/proxy/cost-parameter-categories/dtos/models.mjs +2 -0
- package/esm2020/proxy/cost-parameters/cost-parameter-status.enum.mjs +9 -0
- package/esm2020/proxy/cost-parameters/dtos/index.mjs +2 -0
- package/esm2020/proxy/cost-parameters/dtos/models.mjs +2 -0
- package/esm2020/proxy/currencies/currency.enum.mjs +9 -0
- package/esm2020/proxy/currencies/index.mjs +2 -0
- package/esm2020/proxy/destination-ports/dtos/index.mjs +2 -0
- package/esm2020/proxy/destination-ports/dtos/models.mjs +2 -0
- package/esm2020/proxy/exchange-rates/dtos/index.mjs +2 -0
- package/esm2020/proxy/exchange-rates/dtos/models.mjs +2 -0
- package/esm2020/proxy/exchange-rates/exchange-rate-source.enum.mjs +8 -0
- package/esm2020/{lib/proxy/cost-parameters → proxy/fob-inland-definitions}/dtos/index.mjs +1 -1
- package/esm2020/proxy/fob-inland-definitions/dtos/models.mjs +2 -0
- package/esm2020/proxy/freight-offers/dtos/index.mjs +2 -0
- package/esm2020/proxy/freight-offers/dtos/models.mjs +2 -0
- package/esm2020/proxy/hitsoft-kadooglu-keops-proxy.mjs +5 -0
- package/esm2020/proxy/incoterms/dtos/index.mjs +2 -0
- package/esm2020/proxy/incoterms/dtos/models.mjs +2 -0
- package/esm2020/proxy/item-package-groups/dtos/index.mjs +2 -0
- package/esm2020/proxy/item-package-groups/dtos/models.mjs +2 -0
- package/esm2020/{lib/proxy/cost-groups → proxy/item-package-types}/dtos/index.mjs +1 -1
- package/esm2020/proxy/item-package-types/dtos/models.mjs +2 -0
- package/esm2020/proxy/item-product-types/dtos/index.mjs +2 -0
- package/esm2020/proxy/item-product-types/dtos/models.mjs +2 -0
- package/esm2020/proxy/items/dtos/index.mjs +2 -0
- package/esm2020/proxy/items/dtos/models.mjs +2 -0
- package/esm2020/proxy/lines/dtos/index.mjs +2 -0
- package/esm2020/proxy/lines/dtos/models.mjs +2 -0
- package/esm2020/proxy/packaging-materials/dtos/index.mjs +2 -0
- package/esm2020/proxy/packaging-materials/dtos/models.mjs +2 -0
- package/esm2020/proxy/packaging-prices/dtos/index.mjs +2 -0
- package/esm2020/proxy/packaging-prices/dtos/models.mjs +2 -0
- package/esm2020/proxy/packaging-types/dtos/index.mjs +2 -0
- package/esm2020/proxy/packaging-types/dtos/models.mjs +2 -0
- package/esm2020/proxy/pallet-definitions/dtos/index.mjs +2 -0
- package/esm2020/proxy/pallet-definitions/dtos/models.mjs +2 -0
- package/esm2020/proxy/pos/dtos/index.mjs +2 -0
- package/esm2020/proxy/pos/dtos/models.mjs +2 -0
- package/esm2020/proxy/price-lists/dtos/index.mjs +2 -0
- package/esm2020/proxy/price-lists/dtos/models.mjs +2 -0
- package/esm2020/proxy/price-parameter-types/dtos/index.mjs +2 -0
- package/esm2020/proxy/price-parameter-types/dtos/models.mjs +2 -0
- package/esm2020/proxy/price-parameters/dtos/index.mjs +2 -0
- package/esm2020/proxy/price-parameters/dtos/models.mjs +2 -0
- package/esm2020/proxy/price-parameters/price-parameter-status.enum.mjs +9 -0
- package/esm2020/proxy/public-api.mjs +45 -0
- package/esm2020/proxy/sales-persons/dtos/index.mjs +2 -0
- package/esm2020/proxy/sales-persons/dtos/models.mjs +2 -0
- package/esm2020/proxy/settings/index.mjs +2 -0
- package/esm2020/proxy/settings/models.mjs +2 -0
- package/esm2020/public-api.mjs +1 -2
- package/fesm2015/hitsoft-kadooglu-keops-config.mjs +131 -3
- package/fesm2015/hitsoft-kadooglu-keops-config.mjs.map +1 -1
- package/fesm2015/hitsoft-kadooglu-keops-proxy.mjs +1185 -0
- package/fesm2015/hitsoft-kadooglu-keops-proxy.mjs.map +1 -0
- package/fesm2015/hitsoft-kadooglu-keops.mjs +4082 -1728
- package/fesm2015/hitsoft-kadooglu-keops.mjs.map +1 -1
- package/fesm2020/hitsoft-kadooglu-keops-config.mjs +131 -3
- package/fesm2020/hitsoft-kadooglu-keops-config.mjs.map +1 -1
- package/fesm2020/hitsoft-kadooglu-keops-proxy.mjs +1185 -0
- package/fesm2020/hitsoft-kadooglu-keops-proxy.mjs.map +1 -0
- package/fesm2020/hitsoft-kadooglu-keops.mjs +4070 -1729
- package/fesm2020/hitsoft-kadooglu-keops.mjs.map +1 -1
- package/lib/features/bl-tracking/components/bl-tracking-form.component.d.ts +24 -0
- package/lib/features/bl-tracking/components/bl-tracking.component.d.ts +22 -0
- package/lib/features/bl-tracking/hit-bl-tracking-routing.module.d.ts +7 -0
- package/lib/features/bl-tracking/hit-bl-tracking.module.d.ts +18 -0
- package/lib/features/carriers/components/carrier-form.component.d.ts +24 -0
- package/lib/features/carriers/components/carriers.component.d.ts +22 -0
- package/lib/features/carriers/hit-carriers-routing.module.d.ts +7 -0
- package/lib/features/carriers/hit-carriers.module.d.ts +18 -0
- package/lib/features/container-definitions/components/container-definition-form.component.d.ts +1 -2
- package/lib/features/container-definitions/components/container-definitions.component.d.ts +1 -2
- package/lib/features/container-loading-counts/components/container-loading-counts.component.d.ts +2 -5
- package/lib/features/container-loading-scenarios/components/container-loading-scenarios.component.d.ts +1 -5
- package/lib/features/container-loading-scenarios/container-loading-scenario-l10n-helper.d.ts +1 -1
- package/lib/features/container-mix-types/components/container-mix-type-form.component.d.ts +1 -2
- package/lib/features/container-mix-types/components/container-mix-types.component.d.ts +1 -2
- package/lib/features/container-pallet-capacities/components/container-pallet-capacities.component.d.ts +2 -5
- package/lib/features/container-pallet-capacities/components/container-pallet-capacity-form.component.d.ts +1 -4
- package/lib/features/cost-calculation/components/cost-calculation-inputs.component.d.ts +3 -5
- package/lib/features/cost-calculation/components/cost-calculation-results.component.d.ts +1 -1
- package/lib/features/cost-calculation/components/cost-calculation.component.d.ts +3 -6
- package/lib/features/cost-calculation/cost-calculation.models.d.ts +1 -3
- package/lib/features/cost-calculation/engine/currency.utils.d.ts +1 -1
- package/lib/features/cost-calculation/engine/models.d.ts +1 -3
- package/lib/features/cost-calculation/hit-cost-calculation.module.d.ts +2 -1
- package/lib/features/cost-groups/components/cost-group-form.component.d.ts +2 -4
- package/lib/features/cost-groups/components/cost-groups.component.d.ts +1 -5
- package/lib/features/cost-groups/cost-group-role-l10n-helper.d.ts +1 -1
- package/lib/features/cost-items/components/cost-item-form.component.d.ts +1 -3
- package/lib/features/cost-items/components/cost-items.component.d.ts +1 -2
- package/lib/features/cost-items/cost-item-l10n-helper.d.ts +1 -1
- package/lib/features/cost-parameter-categories/components/cost-parameter-categories.component.d.ts +1 -2
- package/lib/features/cost-parameter-categories/components/cost-parameter-category-form.component.d.ts +1 -3
- package/lib/features/cost-parameter-categories/cost-parameter-category-l10n-helper.d.ts +1 -1
- package/lib/features/cost-parameters/components/cost-parameter-form.component.d.ts +9 -9
- package/lib/features/cost-parameters/components/cost-parameters.component.d.ts +6 -6
- package/lib/features/cost-parameters/cost-parameter-l10n-helper.d.ts +1 -1
- package/lib/features/destination-ports/components/destination-port-form.component.d.ts +25 -0
- package/lib/features/destination-ports/components/destination-ports.component.d.ts +24 -0
- package/lib/features/destination-ports/hit-destination-ports-routing.module.d.ts +7 -0
- package/lib/features/destination-ports/hit-destination-ports.module.d.ts +18 -0
- package/lib/features/exchange-rates/components/central-bank-rates.component.d.ts +1 -1
- package/lib/features/exchange-rates/components/exchange-rates.component.d.ts +1 -2
- package/lib/features/exchange-rates/components/fixed-rates-form.component.d.ts +1 -3
- package/lib/features/fob-inland-definitions/components/fob-inland-definition-form.component.d.ts +24 -0
- package/lib/features/fob-inland-definitions/components/fob-inland-definitions.component.d.ts +22 -0
- package/lib/features/fob-inland-definitions/hit-fob-inland-definitions-routing.module.d.ts +7 -0
- package/lib/features/fob-inland-definitions/hit-fob-inland-definitions.module.d.ts +18 -0
- package/lib/features/freight-offers/components/freight-offer-copy.component.d.ts +22 -0
- package/lib/features/freight-offers/components/freight-offer-form.component.d.ts +49 -0
- package/lib/features/freight-offers/components/freight-offers.component.d.ts +47 -0
- package/lib/features/freight-offers/hit-freight-offers-routing.module.d.ts +7 -0
- package/lib/features/freight-offers/hit-freight-offers.module.d.ts +19 -0
- package/lib/features/incoterms/components/incoterm-form.component.d.ts +24 -0
- package/lib/features/incoterms/components/incoterms.component.d.ts +22 -0
- package/lib/features/incoterms/hit-incoterms-routing.module.d.ts +7 -0
- package/lib/features/incoterms/hit-incoterms.module.d.ts +18 -0
- package/lib/features/index.d.ts +21 -0
- package/lib/features/item-package-groups/components/item-package-group-form.component.d.ts +24 -0
- package/lib/features/item-package-groups/components/item-package-groups.component.d.ts +22 -0
- package/lib/features/item-package-groups/hit-item-package-groups-routing.module.d.ts +7 -0
- package/lib/features/item-package-groups/hit-item-package-groups.module.d.ts +18 -0
- package/lib/features/item-package-types/components/item-package-type-form.component.d.ts +24 -0
- package/lib/features/item-package-types/components/item-package-types.component.d.ts +22 -0
- package/lib/features/item-package-types/hit-item-package-types-routing.module.d.ts +7 -0
- package/lib/features/item-package-types/hit-item-package-types.module.d.ts +18 -0
- package/lib/features/item-product-types/components/item-product-type-form.component.d.ts +24 -0
- package/lib/features/item-product-types/components/item-product-types.component.d.ts +22 -0
- package/lib/features/item-product-types/hit-item-product-types-routing.module.d.ts +7 -0
- package/lib/features/item-product-types/hit-item-product-types.module.d.ts +18 -0
- package/lib/features/lines/components/line-form.component.d.ts +24 -0
- package/lib/features/lines/components/lines.component.d.ts +22 -0
- package/lib/features/lines/hit-lines-routing.module.d.ts +7 -0
- package/lib/features/lines/hit-lines.module.d.ts +18 -0
- package/lib/features/packaging-materials/components/packaging-material-form.component.d.ts +1 -3
- package/lib/features/packaging-materials/components/packaging-materials.component.d.ts +1 -2
- package/lib/features/packaging-prices/components/packaging-price-form.component.d.ts +1 -3
- package/lib/features/packaging-prices/components/packaging-prices.component.d.ts +1 -3
- package/lib/features/packaging-prices/packaging-price-calculator.d.ts +1 -1
- package/lib/features/packaging-prices/packaging-price-excel.service.d.ts +1 -2
- package/lib/features/packaging-prices/packaging-price-form.factory.d.ts +1 -1
- package/lib/features/packaging-prices/packaging-price-lines.builder.d.ts +1 -1
- package/lib/features/packaging-types/components/packaging-type-form.component.d.ts +1 -2
- package/lib/features/packaging-types/components/packaging-types.component.d.ts +1 -2
- package/lib/features/pallet-definitions/components/pallet-definition-form.component.d.ts +1 -2
- package/lib/features/pallet-definitions/components/pallet-definitions.component.d.ts +1 -2
- package/lib/features/pos/components/pos-form.component.d.ts +24 -0
- package/lib/features/pos/components/pos.component.d.ts +22 -0
- package/lib/features/pos/hit-pos-routing.module.d.ts +7 -0
- package/lib/features/pos/hit-pos.module.d.ts +18 -0
- package/lib/features/price-parameter-types/components/price-parameter-type-form.component.d.ts +1 -2
- package/lib/features/price-parameter-types/components/price-parameter-types.component.d.ts +1 -2
- package/lib/features/price-parameters/components/price-parameter-form-cost-items.component.d.ts +15 -0
- package/lib/features/price-parameters/components/price-parameter-form-discount-rates-modal.component.d.ts +24 -0
- package/lib/features/price-parameters/components/price-parameter-form-discount-rates.component.d.ts +22 -0
- package/lib/features/price-parameters/components/price-parameter-form-items.component.d.ts +15 -0
- package/lib/features/price-parameters/components/price-parameter-form-price-lists.component.d.ts +15 -0
- package/lib/features/price-parameters/components/price-parameter-form.component.d.ts +70 -0
- package/lib/features/price-parameters/components/price-parameters.component.d.ts +27 -0
- package/lib/features/price-parameters/hit-price-parameters-routing.module.d.ts +7 -0
- package/lib/features/price-parameters/hit-price-parameters.module.d.ts +24 -0
- package/lib/features/price-parameters/price-parameter-cost-match.service.d.ts +10 -0
- package/lib/features/price-parameters/price-parameter-form-data.service.d.ts +26 -0
- package/lib/features/price-parameters/price-parameter-l10n-helper.d.ts +2 -0
- package/lib/features/price-parameters/price-parameter-lookups.service.d.ts +16 -0
- package/lib/features/sap-sales-persons/components/sap-sales-person-form.component.d.ts +1 -2
- package/lib/features/sap-sales-persons/components/sap-sales-persons.component.d.ts +1 -2
- package/lib/features/settings/components/cost-settings.component.d.ts +1 -1
- package/lib/shared/amount-currency-input/amount-currency-input.component.d.ts +23 -0
- package/lib/shared/cost-item-classification.utils.d.ts +7 -0
- package/lib/shared/cost-item-rows.builder.d.ts +11 -0
- package/lib/shared/pipes/resolve-code-name.pipe.d.ts +11 -0
- package/lib/shared/shared-ui.module.d.ts +10 -0
- package/lib/utils/currency.utils.d.ts +2 -1
- package/lib/utils/exchange-rate.utils.d.ts +2 -0
- package/package.json +9 -1
- package/proxy/bl-tracking/dtos/models.d.ts +25 -0
- package/proxy/business-partners/dtos/models.d.ts +4 -0
- package/proxy/carriers/dtos/models.d.ts +10 -0
- package/{lib/proxy → proxy}/container-loading-counts/dtos/models.d.ts +1 -1
- package/proxy/controllers/bl-tracking.service.d.ts +14 -0
- package/proxy/controllers/business-partner.service.d.ts +11 -0
- package/proxy/controllers/carrier.service.d.ts +14 -0
- package/{lib/proxy → proxy}/controllers/container-loading-count.service.d.ts +2 -2
- package/{lib/proxy → proxy}/controllers/cost-parameter.service.d.ts +1 -2
- package/proxy/controllers/destination-port.service.d.ts +17 -0
- package/proxy/controllers/fob-inland-definition.service.d.ts +14 -0
- package/proxy/controllers/freight-offer.service.d.ts +19 -0
- package/proxy/controllers/incoterm.service.d.ts +14 -0
- package/{lib/proxy → proxy}/controllers/index.d.ts +14 -0
- package/proxy/controllers/item-package-group.service.d.ts +15 -0
- package/proxy/controllers/item-package-type.service.d.ts +15 -0
- package/proxy/controllers/item-product-type.service.d.ts +15 -0
- package/proxy/controllers/line.service.d.ts +14 -0
- package/proxy/controllers/pos.service.d.ts +14 -0
- package/proxy/controllers/price-list.service.d.ts +12 -0
- package/proxy/controllers/price-parameter.service.d.ts +15 -0
- package/{lib/proxy → proxy}/cost-parameter-categories/cost-parameter-category-parent-code.enum.d.ts +1 -4
- package/{lib/proxy → proxy}/cost-parameters/dtos/models.d.ts +0 -8
- package/proxy/destination-ports/dtos/models.d.ts +19 -0
- package/proxy/fob-inland-definitions/dtos/models.d.ts +19 -0
- package/proxy/freight-offers/dtos/models.d.ts +66 -0
- package/proxy/incoterms/dtos/models.d.ts +22 -0
- package/proxy/index.d.ts +5 -0
- package/proxy/item-package-groups/dtos/models.d.ts +13 -0
- package/proxy/item-package-types/dtos/index.d.ts +1 -0
- package/proxy/item-package-types/dtos/models.d.ts +13 -0
- package/proxy/item-product-types/dtos/index.d.ts +1 -0
- package/proxy/item-product-types/dtos/models.d.ts +13 -0
- package/proxy/items/dtos/index.d.ts +1 -0
- package/proxy/lines/dtos/index.d.ts +1 -0
- package/proxy/lines/dtos/models.d.ts +10 -0
- package/proxy/packaging-materials/dtos/index.d.ts +1 -0
- package/proxy/packaging-prices/dtos/index.d.ts +1 -0
- package/proxy/packaging-types/dtos/index.d.ts +1 -0
- package/proxy/pallet-definitions/dtos/index.d.ts +1 -0
- package/proxy/pos/dtos/index.d.ts +1 -0
- package/proxy/pos/dtos/models.d.ts +10 -0
- package/proxy/price-lists/dtos/index.d.ts +1 -0
- package/proxy/price-lists/dtos/models.d.ts +10 -0
- package/proxy/price-parameter-types/dtos/index.d.ts +1 -0
- package/proxy/price-parameters/dtos/index.d.ts +1 -0
- package/proxy/price-parameters/dtos/models.d.ts +78 -0
- package/proxy/price-parameters/price-parameter-status.enum.d.ts +6 -0
- package/proxy/public-api.d.ts +43 -0
- package/proxy/sales-persons/dtos/index.d.ts +1 -0
- package/proxy/settings/index.d.ts +1 -0
- package/public-api.d.ts +0 -1
- package/esm2020/lib/proxy/container-definitions/dtos/index.mjs +0 -2
- package/esm2020/lib/proxy/container-definitions/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/container-definitions/index.mjs +0 -3
- package/esm2020/lib/proxy/container-loading-counts/dtos/index.mjs +0 -2
- package/esm2020/lib/proxy/container-loading-counts/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/container-loading-counts/index.mjs +0 -4
- package/esm2020/lib/proxy/container-loading-counts/loading-target-kind.enum.mjs +0 -8
- package/esm2020/lib/proxy/container-loading-scenarios/dtos/index.mjs +0 -2
- package/esm2020/lib/proxy/container-loading-scenarios/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/container-loading-scenarios/index.mjs +0 -4
- package/esm2020/lib/proxy/container-loading-scenarios/pallet-status.enum.mjs +0 -8
- package/esm2020/lib/proxy/container-mix-types/dtos/index.mjs +0 -2
- package/esm2020/lib/proxy/container-mix-types/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/container-mix-types/index.mjs +0 -3
- package/esm2020/lib/proxy/container-pallet-capacities/dtos/index.mjs +0 -2
- package/esm2020/lib/proxy/container-pallet-capacities/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/container-pallet-capacities/index.mjs +0 -3
- package/esm2020/lib/proxy/controllers/container-definition.service.mjs +0 -40
- package/esm2020/lib/proxy/controllers/container-loading-count.service.mjs +0 -31
- package/esm2020/lib/proxy/controllers/container-loading-scenario.service.mjs +0 -27
- package/esm2020/lib/proxy/controllers/container-mix-type.service.mjs +0 -40
- package/esm2020/lib/proxy/controllers/container-pallet-capacity.service.mjs +0 -40
- package/esm2020/lib/proxy/controllers/cost-group.service.mjs +0 -40
- package/esm2020/lib/proxy/controllers/cost-item.service.mjs +0 -40
- package/esm2020/lib/proxy/controllers/cost-parameter-category.service.mjs +0 -40
- package/esm2020/lib/proxy/controllers/cost-parameter.service.mjs +0 -40
- package/esm2020/lib/proxy/controllers/cost-settings.service.mjs +0 -27
- package/esm2020/lib/proxy/controllers/exchange-rate.service.mjs +0 -27
- package/esm2020/lib/proxy/controllers/index.mjs +0 -19
- package/esm2020/lib/proxy/controllers/item.service.mjs +0 -23
- package/esm2020/lib/proxy/controllers/packaging-material.service.mjs +0 -40
- package/esm2020/lib/proxy/controllers/packaging-price.service.mjs +0 -55
- package/esm2020/lib/proxy/controllers/packaging-type.service.mjs +0 -40
- package/esm2020/lib/proxy/controllers/pallet-definition.service.mjs +0 -40
- package/esm2020/lib/proxy/controllers/price-parameter-type.service.mjs +0 -40
- package/esm2020/lib/proxy/controllers/sap-sales-person.service.mjs +0 -27
- package/esm2020/lib/proxy/cost-groups/cost-group-role.enum.mjs +0 -10
- package/esm2020/lib/proxy/cost-groups/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/cost-groups/index.mjs +0 -4
- package/esm2020/lib/proxy/cost-items/cost-item-calculation-type.enum.mjs +0 -9
- package/esm2020/lib/proxy/cost-items/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/cost-items/index.mjs +0 -5
- package/esm2020/lib/proxy/cost-parameter-categories/cost-parameter-category-parent-code.enum.mjs +0 -11
- package/esm2020/lib/proxy/cost-parameter-categories/dtos/index.mjs +0 -2
- package/esm2020/lib/proxy/cost-parameter-categories/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/cost-parameter-categories/index.mjs +0 -4
- package/esm2020/lib/proxy/cost-parameters/cost-parameter-status.enum.mjs +0 -9
- package/esm2020/lib/proxy/cost-parameters/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/cost-parameters/index.mjs +0 -4
- package/esm2020/lib/proxy/currencies/currency.enum.mjs +0 -9
- package/esm2020/lib/proxy/currencies/index.mjs +0 -2
- package/esm2020/lib/proxy/exchange-rates/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/exchange-rates/exchange-rate-source.enum.mjs +0 -8
- package/esm2020/lib/proxy/exchange-rates/index.mjs +0 -4
- package/esm2020/lib/proxy/index.mjs +0 -22
- package/esm2020/lib/proxy/items/dtos/index.mjs +0 -2
- package/esm2020/lib/proxy/items/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/items/index.mjs +0 -3
- package/esm2020/lib/proxy/packaging-materials/dtos/index.mjs +0 -2
- package/esm2020/lib/proxy/packaging-materials/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/packaging-materials/index.mjs +0 -3
- package/esm2020/lib/proxy/packaging-prices/dtos/index.mjs +0 -2
- package/esm2020/lib/proxy/packaging-prices/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/packaging-prices/index.mjs +0 -3
- package/esm2020/lib/proxy/packaging-types/dtos/index.mjs +0 -2
- package/esm2020/lib/proxy/packaging-types/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/packaging-types/index.mjs +0 -3
- package/esm2020/lib/proxy/pallet-definitions/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/pallet-definitions/index.mjs +0 -3
- package/esm2020/lib/proxy/price-parameter-types/dtos/index.mjs +0 -2
- package/esm2020/lib/proxy/price-parameter-types/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/price-parameter-types/index.mjs +0 -3
- package/esm2020/lib/proxy/sales-persons/dtos/index.mjs +0 -2
- package/esm2020/lib/proxy/sales-persons/dtos/models.mjs +0 -2
- package/esm2020/lib/proxy/sales-persons/index.mjs +0 -3
- package/esm2020/lib/proxy/settings/index.mjs +0 -2
- package/esm2020/lib/proxy/settings/models.mjs +0 -2
- package/lib/proxy/container-definitions/index.d.ts +0 -2
- package/lib/proxy/container-loading-counts/index.d.ts +0 -3
- package/lib/proxy/container-loading-scenarios/index.d.ts +0 -3
- package/lib/proxy/container-mix-types/index.d.ts +0 -2
- package/lib/proxy/container-pallet-capacities/index.d.ts +0 -2
- package/lib/proxy/cost-groups/index.d.ts +0 -3
- package/lib/proxy/cost-items/index.d.ts +0 -4
- package/lib/proxy/cost-parameter-categories/index.d.ts +0 -3
- package/lib/proxy/cost-parameters/index.d.ts +0 -3
- package/lib/proxy/exchange-rates/index.d.ts +0 -3
- package/lib/proxy/index.d.ts +0 -21
- package/lib/proxy/items/index.d.ts +0 -2
- package/lib/proxy/packaging-materials/index.d.ts +0 -2
- package/lib/proxy/packaging-prices/index.d.ts +0 -2
- package/lib/proxy/packaging-types/index.d.ts +0 -2
- package/lib/proxy/pallet-definitions/index.d.ts +0 -2
- package/lib/proxy/price-parameter-types/index.d.ts +0 -2
- package/lib/proxy/sales-persons/index.d.ts +0 -2
- /package/{lib/proxy/container-definitions → proxy/bl-tracking}/dtos/index.d.ts +0 -0
- /package/{lib/proxy/container-loading-counts → proxy/business-partners}/dtos/index.d.ts +0 -0
- /package/{lib/proxy/container-loading-scenarios → proxy/carriers}/dtos/index.d.ts +0 -0
- /package/{lib/proxy/container-mix-types → proxy/container-definitions}/dtos/index.d.ts +0 -0
- /package/{lib/proxy → proxy}/container-definitions/dtos/models.d.ts +0 -0
- /package/{lib/proxy/container-pallet-capacities → proxy/container-loading-counts}/dtos/index.d.ts +0 -0
- /package/{lib/proxy → proxy}/container-loading-counts/loading-target-kind.enum.d.ts +0 -0
- /package/{lib/proxy/cost-groups → proxy/container-loading-scenarios}/dtos/index.d.ts +0 -0
- /package/{lib/proxy → proxy}/container-loading-scenarios/dtos/models.d.ts +0 -0
- /package/{lib/proxy → proxy}/container-loading-scenarios/pallet-status.enum.d.ts +0 -0
- /package/{lib/proxy/cost-items → proxy/container-mix-types}/dtos/index.d.ts +0 -0
- /package/{lib/proxy → proxy}/container-mix-types/dtos/models.d.ts +0 -0
- /package/{lib/proxy/cost-parameter-categories → proxy/container-pallet-capacities}/dtos/index.d.ts +0 -0
- /package/{lib/proxy → proxy}/container-pallet-capacities/dtos/models.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/container-definition.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/container-loading-scenario.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/container-mix-type.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/container-pallet-capacity.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/cost-group.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/cost-item.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/cost-parameter-category.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/cost-settings.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/exchange-rate.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/item.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/packaging-material.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/packaging-price.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/packaging-type.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/pallet-definition.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/price-parameter-type.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/controllers/sap-sales-person.service.d.ts +0 -0
- /package/{lib/proxy → proxy}/cost-groups/cost-group-role.enum.d.ts +0 -0
- /package/{lib/proxy/cost-parameters → proxy/cost-groups}/dtos/index.d.ts +0 -0
- /package/{lib/proxy → proxy}/cost-groups/dtos/models.d.ts +0 -0
- /package/{lib/proxy → proxy}/cost-items/cost-item-calculation-type.enum.d.ts +0 -0
- /package/{lib/proxy → proxy}/cost-items/cost-item-system-code.enum.d.ts +0 -0
- /package/{lib/proxy/exchange-rates → proxy/cost-items}/dtos/index.d.ts +0 -0
- /package/{lib/proxy → proxy}/cost-items/dtos/models.d.ts +0 -0
- /package/{lib/proxy/items → proxy/cost-parameter-categories}/dtos/index.d.ts +0 -0
- /package/{lib/proxy → proxy}/cost-parameter-categories/dtos/models.d.ts +0 -0
- /package/{lib/proxy → proxy}/cost-parameters/cost-parameter-status.enum.d.ts +0 -0
- /package/{lib/proxy/packaging-materials → proxy/cost-parameters}/dtos/index.d.ts +0 -0
- /package/{lib/proxy → proxy}/currencies/currency.enum.d.ts +0 -0
- /package/{lib/proxy → proxy}/currencies/index.d.ts +0 -0
- /package/{lib/proxy/packaging-prices → proxy/destination-ports}/dtos/index.d.ts +0 -0
- /package/{lib/proxy/packaging-types → proxy/exchange-rates}/dtos/index.d.ts +0 -0
- /package/{lib/proxy → proxy}/exchange-rates/dtos/models.d.ts +0 -0
- /package/{lib/proxy → proxy}/exchange-rates/exchange-rate-source.enum.d.ts +0 -0
- /package/{lib/proxy/pallet-definitions → proxy/fob-inland-definitions}/dtos/index.d.ts +0 -0
- /package/{lib/proxy/price-parameter-types → proxy/freight-offers}/dtos/index.d.ts +0 -0
- /package/{lib/proxy/sales-persons → proxy/incoterms}/dtos/index.d.ts +0 -0
- /package/{lib/proxy/settings → proxy/item-package-groups/dtos}/index.d.ts +0 -0
- /package/{lib/proxy → proxy}/items/dtos/models.d.ts +0 -0
- /package/{lib/proxy → proxy}/packaging-materials/dtos/models.d.ts +0 -0
- /package/{lib/proxy → proxy}/packaging-prices/dtos/models.d.ts +0 -0
- /package/{lib/proxy → proxy}/packaging-types/dtos/models.d.ts +0 -0
- /package/{lib/proxy → proxy}/pallet-definitions/dtos/models.d.ts +0 -0
- /package/{lib/proxy → proxy}/price-parameter-types/dtos/models.d.ts +0 -0
- /package/{lib/proxy → proxy}/sales-persons/dtos/models.d.ts +0 -0
- /package/{lib/proxy → proxy}/settings/models.d.ts +0 -0
- /package/{src/lib/proxy → proxy/src}/README.md +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@hitsoft/kadooglu-keops/proxy";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "@abp/ng.core";
|
|
6
|
+
export class PriceParameterPriceListsTabComponent {
|
|
7
|
+
constructor(priceListService) {
|
|
8
|
+
this.priceListService = priceListService;
|
|
9
|
+
this.cpRegionCode = null;
|
|
10
|
+
this.ppTypeCode = null;
|
|
11
|
+
this.priceLists = [];
|
|
12
|
+
this.loading = false;
|
|
13
|
+
}
|
|
14
|
+
ngOnChanges() {
|
|
15
|
+
this.load();
|
|
16
|
+
}
|
|
17
|
+
load() {
|
|
18
|
+
if (!this.cpRegionCode || !this.ppTypeCode) {
|
|
19
|
+
this.priceLists = [];
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
this.loading = true;
|
|
23
|
+
this.priceListService.getList(this.cpRegionCode, this.ppTypeCode).subscribe({
|
|
24
|
+
next: list => {
|
|
25
|
+
this.priceLists = list ?? [];
|
|
26
|
+
this.loading = false;
|
|
27
|
+
},
|
|
28
|
+
error: () => (this.loading = false),
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
PriceParameterPriceListsTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PriceParameterPriceListsTabComponent, deps: [{ token: i1.PriceListService }], target: i0.ɵɵFactoryTarget.Component });
|
|
33
|
+
PriceParameterPriceListsTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PriceParameterPriceListsTabComponent, selector: "lib-price-parameter-price-lists-tab", inputs: { cpRegionCode: "cpRegionCode", ppTypeCode: "ppTypeCode" }, usesOnChanges: true, ngImport: i0, template: "<table class=\"table table-sm align-middle mt-3\">\r\n <thead>\r\n <tr>\r\n <th style=\"width: 140px\">{{ 'Keops::PriceParameters:PriceListNo' | abpLocalization }}</th>\r\n <th>{{ 'Keops::PriceParameters:PriceListName' | abpLocalization }}</th>\r\n <th style=\"width: 120px\">\r\n {{ 'Keops::PriceParameters:PriceListFactor' | abpLocalization }}\r\n </th>\r\n <th>{{ 'Keops::PriceParameters:PriceListBase' | abpLocalization }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let priceList of priceLists\">\r\n <td>\r\n <span class=\"badge bg-light text-dark border\">{{ priceList.priceListNo }}</span>\r\n </td>\r\n <td>{{ priceList.priceListName }}</td>\r\n <td>{{ priceList.factor }}</td>\r\n <td>{{ priceList.basePriceListName || '\u2014' }}</td>\r\n </tr>\r\n <tr *ngIf=\"!loading && priceLists.length === 0\">\r\n <td colspan=\"4\" class=\"text-center text-muted py-3\">\r\n {{ 'Keops::PriceParameters:NoData' | abpLocalization }}\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] });
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PriceParameterPriceListsTabComponent, decorators: [{
|
|
35
|
+
type: Component,
|
|
36
|
+
args: [{ selector: 'lib-price-parameter-price-lists-tab', template: "<table class=\"table table-sm align-middle mt-3\">\r\n <thead>\r\n <tr>\r\n <th style=\"width: 140px\">{{ 'Keops::PriceParameters:PriceListNo' | abpLocalization }}</th>\r\n <th>{{ 'Keops::PriceParameters:PriceListName' | abpLocalization }}</th>\r\n <th style=\"width: 120px\">\r\n {{ 'Keops::PriceParameters:PriceListFactor' | abpLocalization }}\r\n </th>\r\n <th>{{ 'Keops::PriceParameters:PriceListBase' | abpLocalization }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let priceList of priceLists\">\r\n <td>\r\n <span class=\"badge bg-light text-dark border\">{{ priceList.priceListNo }}</span>\r\n </td>\r\n <td>{{ priceList.priceListName }}</td>\r\n <td>{{ priceList.factor }}</td>\r\n <td>{{ priceList.basePriceListName || '\u2014' }}</td>\r\n </tr>\r\n <tr *ngIf=\"!loading && priceLists.length === 0\">\r\n <td colspan=\"4\" class=\"text-center text-muted py-3\">\r\n {{ 'Keops::PriceParameters:NoData' | abpLocalization }}\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n" }]
|
|
37
|
+
}], ctorParameters: function () { return [{ type: i1.PriceListService }]; }, propDecorators: { cpRegionCode: [{
|
|
38
|
+
type: Input
|
|
39
|
+
}], ppTypeCode: [{
|
|
40
|
+
type: Input
|
|
41
|
+
}] } });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2UtcGFyYW1ldGVyLWZvcm0tcHJpY2UtbGlzdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9wcmljZS1wYXJhbWV0ZXJzL2NvbXBvbmVudHMvcHJpY2UtcGFyYW1ldGVyLWZvcm0tcHJpY2UtbGlzdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9wcmljZS1wYXJhbWV0ZXJzL2NvbXBvbmVudHMvcHJpY2UtcGFyYW1ldGVyLWZvcm0tcHJpY2UtbGlzdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7Ozs7O0FBTzVELE1BQU0sT0FBTyxvQ0FBb0M7SUFPL0MsWUFBNkIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFOdEQsaUJBQVksR0FBa0IsSUFBSSxDQUFDO1FBQ25DLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBRTFDLGVBQVUsR0FBbUIsRUFBRSxDQUFDO1FBQ2hDLFlBQU8sR0FBRyxLQUFLLENBQUM7SUFFa0QsQ0FBQztJQUVuRSxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVPLElBQUk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDMUUsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7O2lJQTNCVSxvQ0FBb0M7cUhBQXBDLG9DQUFvQyxvS0NQakQsMGtDQTJCQTsyRkRwQmEsb0NBQW9DO2tCQUpoRCxTQUFTOytCQUNFLHFDQUFxQzt1R0FJdEMsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFByaWNlTGlzdER0bywgUHJpY2VMaXN0U2VydmljZSB9IGZyb20gJ0BoaXRzb2Z0L2thZG9vZ2x1LWtlb3BzL3Byb3h5JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXByaWNlLXBhcmFtZXRlci1wcmljZS1saXN0cy10YWInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmljZS1wYXJhbWV0ZXItZm9ybS1wcmljZS1saXN0cy5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcmljZVBhcmFtZXRlclByaWNlTGlzdHNUYWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIGNwUmVnaW9uQ29kZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcHBUeXBlQ29kZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaWNlTGlzdHM6IFByaWNlTGlzdER0b1tdID0gW107XHJcbiAgbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByaWNlTGlzdFNlcnZpY2U6IFByaWNlTGlzdFNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY3BSZWdpb25Db2RlIHx8ICF0aGlzLnBwVHlwZUNvZGUpIHtcclxuICAgICAgdGhpcy5wcmljZUxpc3RzID0gW107XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wcmljZUxpc3RTZXJ2aWNlLmdldExpc3QodGhpcy5jcFJlZ2lvbkNvZGUsIHRoaXMucHBUeXBlQ29kZSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogbGlzdCA9PiB7XHJcbiAgICAgICAgdGhpcy5wcmljZUxpc3RzID0gbGlzdCA/PyBbXTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+ICh0aGlzLmxvYWRpbmcgPSBmYWxzZSksXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc20gYWxpZ24tbWlkZGxlIG10LTNcIj5cclxuICA8dGhlYWQ+XHJcbiAgICA8dHI+XHJcbiAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAxNDBweFwiPnt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlByaWNlTGlzdE5vJyB8IGFicExvY2FsaXphdGlvbiB9fTwvdGg+XHJcbiAgICAgIDx0aD57eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpQcmljZUxpc3ROYW1lJyB8IGFicExvY2FsaXphdGlvbiB9fTwvdGg+XHJcbiAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAxMjBweFwiPlxyXG4gICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlByaWNlTGlzdEZhY3RvcicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC90aD5cclxuICAgICAgPHRoPnt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlByaWNlTGlzdEJhc2UnIHwgYWJwTG9jYWxpemF0aW9uIH19PC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90aGVhZD5cclxuICA8dGJvZHk+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IHByaWNlTGlzdCBvZiBwcmljZUxpc3RzXCI+XHJcbiAgICAgIDx0ZD5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJnLWxpZ2h0IHRleHQtZGFyayBib3JkZXJcIj57eyBwcmljZUxpc3QucHJpY2VMaXN0Tm8gfX08L3NwYW4+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIDx0ZD57eyBwcmljZUxpc3QucHJpY2VMaXN0TmFtZSB9fTwvdGQ+XHJcbiAgICAgIDx0ZD57eyBwcmljZUxpc3QuZmFjdG9yIH19PC90ZD5cclxuICAgICAgPHRkPnt7IHByaWNlTGlzdC5iYXNlUHJpY2VMaXN0TmFtZSB8fCAn4oCUJyB9fTwvdGQ+XHJcbiAgICA8L3RyPlxyXG4gICAgPHRyICpuZ0lmPVwiIWxvYWRpbmcgJiYgcHJpY2VMaXN0cy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgPHRkIGNvbHNwYW49XCI0XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHB5LTNcIj5cclxuICAgICAgICB7eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpOb0RhdGEnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvdGQ+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGJvZHk+XHJcbjwvdGFibGU+XHJcbiJdfQ==
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import { finalize } from 'rxjs/operators';
|
|
4
|
+
import { Currency, PriceParameterStatus, } from '@hitsoft/kadooglu-keops/proxy';
|
|
5
|
+
import { statusLabels } from '../price-parameter-l10n-helper';
|
|
6
|
+
import { CURRENCY_OPTIONS, CURRENCY_OPTIONS_FX_ONLY } from '../../../utils/currency.utils';
|
|
7
|
+
import { isRateCostItem, isCustomCostItem } from '../../../shared/cost-item-classification.utils';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/forms";
|
|
10
|
+
import * as i2 from "@angular/router";
|
|
11
|
+
import * as i3 from "@abp/ng.theme.shared";
|
|
12
|
+
import * as i4 from "@hitsoft/kadooglu-keops/proxy";
|
|
13
|
+
import * as i5 from "../price-parameter-form-data.service";
|
|
14
|
+
import * as i6 from "../price-parameter-cost-match.service";
|
|
15
|
+
import * as i7 from "../../../shared/cost-item-rows.builder";
|
|
16
|
+
import * as i8 from "@angular/common";
|
|
17
|
+
import * as i9 from "@abp/ng.core";
|
|
18
|
+
import * as i10 from "@abp/ng.components/page";
|
|
19
|
+
import * as i11 from "@ng-bootstrap/ng-bootstrap";
|
|
20
|
+
import * as i12 from "devextreme-angular";
|
|
21
|
+
import * as i13 from "../../../shared/amount-currency-input/amount-currency-input.component";
|
|
22
|
+
import * as i14 from "./price-parameter-form-cost-items.component";
|
|
23
|
+
import * as i15 from "./price-parameter-form-price-lists.component";
|
|
24
|
+
import * as i16 from "./price-parameter-form-items.component";
|
|
25
|
+
import * as i17 from "./price-parameter-form-discount-rates.component";
|
|
26
|
+
const statusOptions = [
|
|
27
|
+
PriceParameterStatus.InProgress,
|
|
28
|
+
PriceParameterStatus.Active,
|
|
29
|
+
PriceParameterStatus.Passive,
|
|
30
|
+
].map(value => ({ value, label: statusLabels[value] }));
|
|
31
|
+
const DEFAULT_DISCOUNT_ROWS = 10;
|
|
32
|
+
export class PriceParameterFormComponent {
|
|
33
|
+
constructor(fb, route, router, toaster, service, formDataService, costMatchService, rowsBuilder) {
|
|
34
|
+
this.fb = fb;
|
|
35
|
+
this.route = route;
|
|
36
|
+
this.router = router;
|
|
37
|
+
this.toaster = toaster;
|
|
38
|
+
this.service = service;
|
|
39
|
+
this.formDataService = formDataService;
|
|
40
|
+
this.costMatchService = costMatchService;
|
|
41
|
+
this.rowsBuilder = rowsBuilder;
|
|
42
|
+
this.saving = false;
|
|
43
|
+
this.editMode = false;
|
|
44
|
+
this.docEntry = null;
|
|
45
|
+
this.current = null;
|
|
46
|
+
this.costItems = [];
|
|
47
|
+
this.allCostItems = [];
|
|
48
|
+
this.typeOptions = [];
|
|
49
|
+
this.groupOptions = [];
|
|
50
|
+
this.regionOptions = [];
|
|
51
|
+
this.autoApplyEnabled = false;
|
|
52
|
+
this.systemRateUsd = 0;
|
|
53
|
+
this.systemRateEur = 0;
|
|
54
|
+
this.rateCurrency = Currency.USD;
|
|
55
|
+
this.businessPartnersDataSource = null;
|
|
56
|
+
this.selectedCustomerCode = null;
|
|
57
|
+
this.gekapCurrency = Currency.TRY;
|
|
58
|
+
this.rawOilCurrency = Currency.USD;
|
|
59
|
+
this.salesPriceExcludingPackagingCurrency = Currency.USD;
|
|
60
|
+
this.statusOptions = statusOptions;
|
|
61
|
+
this.currencyOptions = CURRENCY_OPTIONS;
|
|
62
|
+
this.rateCurrencyOptions = CURRENCY_OPTIONS_FX_ONLY;
|
|
63
|
+
this.customerDisplayExpr = (c) => c ? `${c.cardCode} - ${c.cardName}` : '';
|
|
64
|
+
this.isRate = isRateCostItem;
|
|
65
|
+
this.isCustom = isCustomCostItem;
|
|
66
|
+
}
|
|
67
|
+
ngOnInit() {
|
|
68
|
+
const docEntryParam = this.route.snapshot.paramMap.get('docEntry');
|
|
69
|
+
this.docEntry = docEntryParam != null ? Number(docEntryParam) : null;
|
|
70
|
+
this.editMode = this.docEntry != null && !Number.isNaN(this.docEntry);
|
|
71
|
+
this.form = this.fb.group({
|
|
72
|
+
typeCode: [null, [Validators.required]],
|
|
73
|
+
regionCode: [null, [Validators.required]],
|
|
74
|
+
groupCode: [null, [Validators.required]],
|
|
75
|
+
exchangeRate: [0],
|
|
76
|
+
fromDate: [{ value: null, disabled: this.editMode }, [Validators.required]],
|
|
77
|
+
toDate: [null, [Validators.required]],
|
|
78
|
+
status: [null, [Validators.required]],
|
|
79
|
+
description: [null, [Validators.maxLength(254)]],
|
|
80
|
+
customerCode: [null],
|
|
81
|
+
gekap: [0],
|
|
82
|
+
generalQuota: [0],
|
|
83
|
+
promotionalQuota: [0],
|
|
84
|
+
rawOilPrice: [0],
|
|
85
|
+
salesPriceExcludingPackaging: [0],
|
|
86
|
+
items: this.fb.array([]),
|
|
87
|
+
discounts: this.fb.array([]),
|
|
88
|
+
});
|
|
89
|
+
this.applyDiscounts(null);
|
|
90
|
+
this.form.get('regionCode').valueChanges.subscribe(() => this.onCombinationChange());
|
|
91
|
+
this.form.get('groupCode').valueChanges.subscribe(() => this.onCombinationChange());
|
|
92
|
+
this.load();
|
|
93
|
+
}
|
|
94
|
+
get itemsArray() {
|
|
95
|
+
return this.form.get('items');
|
|
96
|
+
}
|
|
97
|
+
get discountsArray() {
|
|
98
|
+
return this.form.get('discounts');
|
|
99
|
+
}
|
|
100
|
+
get title() {
|
|
101
|
+
return this.editMode
|
|
102
|
+
? 'Keops::PriceParameters:EditTitle'
|
|
103
|
+
: 'Keops::PriceParameters:CreateTitle';
|
|
104
|
+
}
|
|
105
|
+
get selectedRegionCode() {
|
|
106
|
+
return this.form?.get('regionCode')?.value ?? null;
|
|
107
|
+
}
|
|
108
|
+
get selectedTypeCode() {
|
|
109
|
+
return this.form?.get('typeCode')?.value ?? null;
|
|
110
|
+
}
|
|
111
|
+
get selectedGroupCode() {
|
|
112
|
+
return this.form?.get('groupCode')?.value ?? null;
|
|
113
|
+
}
|
|
114
|
+
onRateCurrencyChange() {
|
|
115
|
+
this.form
|
|
116
|
+
.get('exchangeRate')
|
|
117
|
+
.setValue(this.rateCurrency === Currency.EUR ? this.systemRateEur : this.systemRateUsd);
|
|
118
|
+
}
|
|
119
|
+
goBack() {
|
|
120
|
+
this.router.navigate(['/keops/cost/price-parameters']);
|
|
121
|
+
}
|
|
122
|
+
save() {
|
|
123
|
+
if (this.form.invalid) {
|
|
124
|
+
this.form.markAllAsTouched();
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
this.saving = true;
|
|
128
|
+
const input = {
|
|
129
|
+
...this.form.getRawValue(),
|
|
130
|
+
customerCode: this.selectedCustomerCode,
|
|
131
|
+
gekapCurrency: this.gekapCurrency,
|
|
132
|
+
rawOilCurrency: this.rawOilCurrency,
|
|
133
|
+
salesPriceExcludingPackagingCurrency: this.salesPriceExcludingPackagingCurrency,
|
|
134
|
+
items: this.rowsBuilder.toInput(this.itemsArray),
|
|
135
|
+
discounts: this.discountsArray.controls
|
|
136
|
+
.map(group => group.value)
|
|
137
|
+
.filter(value => value.salesEmployeeCode != null)
|
|
138
|
+
.map(value => ({
|
|
139
|
+
salesEmployeeCode: value.salesEmployeeCode,
|
|
140
|
+
rate: value.rate,
|
|
141
|
+
})),
|
|
142
|
+
};
|
|
143
|
+
const request$ = this.editMode
|
|
144
|
+
? this.service.update(this.docEntry, input)
|
|
145
|
+
: this.service.create(input);
|
|
146
|
+
request$.pipe(finalize(() => (this.saving = false))).subscribe({
|
|
147
|
+
next: () => {
|
|
148
|
+
this.toaster.success('AbpUi::SuccessfullySaved');
|
|
149
|
+
this.goBack();
|
|
150
|
+
},
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
load() {
|
|
154
|
+
this.formDataService.load(this.editMode ? this.docEntry : null).subscribe(data => {
|
|
155
|
+
this.typeOptions = data.typeOptions;
|
|
156
|
+
this.groupOptions = data.groupOptions;
|
|
157
|
+
this.regionOptions = data.regionOptions;
|
|
158
|
+
this.businessPartnersDataSource = data.businessPartnersDataSource;
|
|
159
|
+
this.allCostItems = data.costItems;
|
|
160
|
+
this.systemRateUsd = data.systemRateUsd;
|
|
161
|
+
this.systemRateEur = data.systemRateEur;
|
|
162
|
+
if (data.current) {
|
|
163
|
+
this.current = data.current;
|
|
164
|
+
this.patchFromCurrent(data.current);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
this.autoApplyEnabled = true;
|
|
168
|
+
this.onRateCurrencyChange();
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
patchFromCurrent(dto) {
|
|
173
|
+
this.form.patchValue({
|
|
174
|
+
typeCode: dto.typeCode ?? null,
|
|
175
|
+
regionCode: dto.regionCode ?? null,
|
|
176
|
+
groupCode: dto.groupCode ?? null,
|
|
177
|
+
exchangeRate: dto.exchangeRate ?? 0,
|
|
178
|
+
fromDate: this.toDateInput(dto.fromDate),
|
|
179
|
+
toDate: this.toDateInput(dto.toDate),
|
|
180
|
+
status: dto.status ?? PriceParameterStatus.Active,
|
|
181
|
+
description: dto.description ?? null,
|
|
182
|
+
customerCode: dto.customerCode ?? null,
|
|
183
|
+
gekap: dto.gekap ?? 0,
|
|
184
|
+
generalQuota: dto.generalQuota ?? 0,
|
|
185
|
+
promotionalQuota: dto.promotionalQuota ?? 0,
|
|
186
|
+
rawOilPrice: dto.rawOilPrice ?? 0,
|
|
187
|
+
salesPriceExcludingPackaging: dto.salesPriceExcludingPackaging ?? 0,
|
|
188
|
+
}, { emitEvent: false });
|
|
189
|
+
this.selectedCustomerCode = dto.customerCode ?? null;
|
|
190
|
+
this.gekapCurrency = dto.gekapCurrency ?? Currency.TRY;
|
|
191
|
+
this.rawOilCurrency = dto.rawOilCurrency ?? Currency.USD;
|
|
192
|
+
this.salesPriceExcludingPackagingCurrency =
|
|
193
|
+
dto.salesPriceExcludingPackagingCurrency ?? Currency.USD;
|
|
194
|
+
this.applyItems(dto.items);
|
|
195
|
+
this.applyDiscounts(dto.discounts);
|
|
196
|
+
this.autoApplyEnabled = true;
|
|
197
|
+
}
|
|
198
|
+
applyDiscounts(source) {
|
|
199
|
+
this.discountsArray.clear();
|
|
200
|
+
for (const discount of source ?? []) {
|
|
201
|
+
this.discountsArray.push(this.createDiscountRow(discount.salesEmployeeCode ?? null, discount.salesEmployeeName ?? null, discount.rate ?? null));
|
|
202
|
+
}
|
|
203
|
+
while (this.discountsArray.length < DEFAULT_DISCOUNT_ROWS) {
|
|
204
|
+
this.discountsArray.push(this.createDiscountRow(null, null, null));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
createDiscountRow(salesEmployeeCode, salesEmployeeName, rate) {
|
|
208
|
+
return this.fb.group({
|
|
209
|
+
salesEmployeeCode: [salesEmployeeCode],
|
|
210
|
+
salesEmployeeName: [salesEmployeeName],
|
|
211
|
+
rate: [rate],
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
applyItems(source) {
|
|
215
|
+
this.costItems = this.allCostItems;
|
|
216
|
+
this.rowsBuilder.build(this.itemsArray, this.costItems, source);
|
|
217
|
+
}
|
|
218
|
+
clearItems() {
|
|
219
|
+
this.costItems = [];
|
|
220
|
+
this.itemsArray.clear();
|
|
221
|
+
}
|
|
222
|
+
onCombinationChange() {
|
|
223
|
+
if (!this.autoApplyEnabled) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
const regionCode = this.form.get('regionCode').value;
|
|
227
|
+
const groupCode = this.form.get('groupCode').value;
|
|
228
|
+
if (!regionCode || !groupCode) {
|
|
229
|
+
this.clearItems();
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
this.costMatchService.findMatch(regionCode, groupCode).subscribe(match => {
|
|
233
|
+
if (!match) {
|
|
234
|
+
this.clearItems();
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
this.applyItems(match.items);
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
toDateInput(value) {
|
|
241
|
+
if (!value)
|
|
242
|
+
return null;
|
|
243
|
+
return value.substring(0, 10);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
PriceParameterFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PriceParameterFormComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i3.ToasterService }, { token: i4.PriceParameterService }, { token: i5.PriceParameterFormDataService }, { token: i6.PriceParameterCostMatchService }, { token: i7.CostItemRowsBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
247
|
+
PriceParameterFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PriceParameterFormComponent, selector: "lib-price-parameter-form", ngImport: i0, template: "<abp-page [title]=\"title | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row justify-content-end mx-0\">\r\n <div class=\"col-auto px-1 pt-0 pt-md-2 pe-0 d-flex gap-2\">\r\n <button type=\"button\" class=\"btn btn-outline-secondary\" (click)=\"goBack()\">\r\n <i class=\"fa fa-arrow-left me-1\"></i>\r\n {{ 'Keops::PriceParameters:BackToList' | abpLocalization }}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-warning\" [disabled]=\"true\">\r\n {{ 'Keops::PriceParameters:UpdatePriceList' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n iconClass=\"fa fa-check\"\r\n buttonClass=\"btn btn-success\"\r\n [loading]=\"saving\"\r\n [disabled]=\"form?.invalid\"\r\n (click)=\"save()\"\r\n >\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <div class=\"card mb-3\">\r\n <div class=\"card-header d-flex justify-content-between align-items-center\">\r\n <small class=\"text-muted\" *ngIf=\"editMode\">\r\n {{ 'Keops::PriceParameters:DocNum' | abpLocalization }}: {{ current?.docNum ?? '-' }} \u00B7\r\n {{ 'Keops::PriceParameters:DocDate' | abpLocalization }}:\r\n {{ (current?.docDate | shortDate) ?? '-' }}\r\n </small>\r\n <small class=\"text-muted ms-auto\">\r\n {{ 'Keops::PriceParameters:SystemRates' | abpLocalization }}: USD\r\n {{ systemRateUsd | number }} \u00B7 EUR {{ systemRateEur | number }}\r\n </small>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-lg-6\">\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Type' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"typeCode\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let type of typeOptions\" [ngValue]=\"type.code\">\r\n {{ type.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Region' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"regionCode\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let region of regionOptions\" [ngValue]=\"region.code\">\r\n {{ region.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Group' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"groupCode\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let group of groupOptions\" [ngValue]=\"group.code\">\r\n {{ group.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:ExchangeRate' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"exchangeRate\"\r\n [(currency)]=\"rateCurrency\"\r\n (currencyChange)=\"onRateCurrencyChange()\"\r\n [currencyOptions]=\"rateCurrencyOptions\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:StartDate' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <dx-date-box\r\n type=\"date\"\r\n dateSerializationFormat=\"yyyy-MM-dd\"\r\n formControlName=\"fromDate\"\r\n ></dx-date-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:EndDate' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <dx-date-box\r\n type=\"date\"\r\n dateSerializationFormat=\"yyyy-MM-dd\"\r\n formControlName=\"toDate\"\r\n ></dx-date-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:SalesPriceExcludingPackaging' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"salesPriceExcludingPackaging\"\r\n [(currency)]=\"salesPriceExcludingPackagingCurrency\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-lg-6\">\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Status' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"status\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let opt of statusOptions\" [ngValue]=\"opt.value\">\r\n {{ opt.label | abpLocalization }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:CustomerCode' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <dx-select-box\r\n [dataSource]=\"businessPartnersDataSource\"\r\n valueExpr=\"cardCode\"\r\n [displayExpr]=\"customerDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"['cardCode', 'cardName']\"\r\n searchMode=\"contains\"\r\n [searchTimeout]=\"200\"\r\n [minSearchLength]=\"0\"\r\n [showDataBeforeSearch]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedCustomerCode\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n ></dx-select-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Gekap' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"gekap\"\r\n [(currency)]=\"gekapCurrency\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:GeneralQuota' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" formControlName=\"generalQuota\" />\r\n <span class=\"input-group-text\">{{ 'Keops::PriceParameters:Unit:Ton' | abpLocalization }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:PromotionalQuota' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" formControlName=\"promotionalQuota\" />\r\n <span class=\"input-group-text\">{{ 'Keops::PriceParameters:Unit:Ton' | abpLocalization }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:RawOilPrice' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"rawOilPrice\"\r\n [(currency)]=\"rawOilCurrency\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Description' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <textarea class=\"form-control\" rows=\"2\" formControlName=\"description\"></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\" [destroyOnHide]=\"false\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:CostParameters' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-cost-items-tab [costItems]=\"costItems\" [itemsArray]=\"itemsArray\">\r\n </lib-price-parameter-cost-items-tab>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:PriceLists' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-price-lists-tab\r\n [cpRegionCode]=\"selectedRegionCode\"\r\n [ppTypeCode]=\"selectedTypeCode\"\r\n ></lib-price-parameter-price-lists-tab>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:Items' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-items-tab\r\n [cpRegionCode]=\"selectedRegionCode\"\r\n [cpGroupCode]=\"selectedGroupCode\"\r\n ></lib-price-parameter-items-tab>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:Discounts' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-discount-rates-tab [discountsArray]=\"discountsArray\">\r\n </lib-price-parameter-discount-rates-tab>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n</abp-page>\r\n", dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i9.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i10.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i10.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "directive", type: i11.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i11.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i11.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i11.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "component", type: i11.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i12.DxDateBoxComponent, selector: "dx-date-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "adaptivityEnabled", "applyButtonText", "applyValueMode", "buttons", "calendarOptions", "cancelButtonText", "dateOutOfRangeMessage", "dateSerializationFormat", "deferRendering", "disabled", "disabledDates", "displayFormat", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "interval", "invalidDateMessage", "isValid", "label", "labelMode", "max", "maxLength", "min", "name", "opened", "openOnFieldClick", "pickerType", "placeholder", "readOnly", "rtlEnabled", "showAnalogClock", "showClearButton", "showDropDownButton", "spellcheck", "stylingMode", "tabIndex", "text", "todayButtonText", "type", "useMaskBehavior", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "adaptivityEnabledChange", "applyButtonTextChange", "applyValueModeChange", "buttonsChange", "calendarOptionsChange", "cancelButtonTextChange", "dateOutOfRangeMessageChange", "dateSerializationFormatChange", "deferRenderingChange", "disabledChange", "disabledDatesChange", "displayFormatChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "intervalChange", "invalidDateMessageChange", "isValidChange", "labelChange", "labelModeChange", "maxChange", "maxLengthChange", "minChange", "nameChange", "openedChange", "openOnFieldClickChange", "pickerTypeChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showAnalogClockChange", "showClearButtonChange", "showDropDownButtonChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "todayButtonTextChange", "typeChange", "useMaskBehaviorChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i12.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i13.AmountCurrencyInputComponent, selector: "lib-amount-currency-input", inputs: ["currencyOptions", "currency"], outputs: ["currencyChange"] }, { kind: "component", type: i14.PriceParameterCostItemsTabComponent, selector: "lib-price-parameter-cost-items-tab", inputs: ["costItems", "itemsArray"] }, { kind: "component", type: i15.PriceParameterPriceListsTabComponent, selector: "lib-price-parameter-price-lists-tab", inputs: ["cpRegionCode", "ppTypeCode"] }, { kind: "component", type: i16.PriceParameterItemsTabComponent, selector: "lib-price-parameter-items-tab", inputs: ["cpRegionCode", "cpGroupCode"] }, { kind: "component", type: i17.PriceParameterDiscountRatesTabComponent, selector: "lib-price-parameter-discount-rates-tab", inputs: ["discountsArray"] }, { kind: "pipe", type: i8.DecimalPipe, name: "number" }, { kind: "pipe", type: i9.LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: i9.ShortDatePipe, name: "shortDate" }] });
|
|
248
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PriceParameterFormComponent, decorators: [{
|
|
249
|
+
type: Component,
|
|
250
|
+
args: [{ selector: 'lib-price-parameter-form', template: "<abp-page [title]=\"title | abpLocalization\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row justify-content-end mx-0\">\r\n <div class=\"col-auto px-1 pt-0 pt-md-2 pe-0 d-flex gap-2\">\r\n <button type=\"button\" class=\"btn btn-outline-secondary\" (click)=\"goBack()\">\r\n <i class=\"fa fa-arrow-left me-1\"></i>\r\n {{ 'Keops::PriceParameters:BackToList' | abpLocalization }}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-warning\" [disabled]=\"true\">\r\n {{ 'Keops::PriceParameters:UpdatePriceList' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n iconClass=\"fa fa-check\"\r\n buttonClass=\"btn btn-success\"\r\n [loading]=\"saving\"\r\n [disabled]=\"form?.invalid\"\r\n (click)=\"save()\"\r\n >\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <div class=\"card mb-3\">\r\n <div class=\"card-header d-flex justify-content-between align-items-center\">\r\n <small class=\"text-muted\" *ngIf=\"editMode\">\r\n {{ 'Keops::PriceParameters:DocNum' | abpLocalization }}: {{ current?.docNum ?? '-' }} \u00B7\r\n {{ 'Keops::PriceParameters:DocDate' | abpLocalization }}:\r\n {{ (current?.docDate | shortDate) ?? '-' }}\r\n </small>\r\n <small class=\"text-muted ms-auto\">\r\n {{ 'Keops::PriceParameters:SystemRates' | abpLocalization }}: USD\r\n {{ systemRateUsd | number }} \u00B7 EUR {{ systemRateEur | number }}\r\n </small>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-lg-6\">\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Type' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"typeCode\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let type of typeOptions\" [ngValue]=\"type.code\">\r\n {{ type.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Region' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"regionCode\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let region of regionOptions\" [ngValue]=\"region.code\">\r\n {{ region.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Group' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"groupCode\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let group of groupOptions\" [ngValue]=\"group.code\">\r\n {{ group.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:ExchangeRate' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"exchangeRate\"\r\n [(currency)]=\"rateCurrency\"\r\n (currencyChange)=\"onRateCurrencyChange()\"\r\n [currencyOptions]=\"rateCurrencyOptions\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:StartDate' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <dx-date-box\r\n type=\"date\"\r\n dateSerializationFormat=\"yyyy-MM-dd\"\r\n formControlName=\"fromDate\"\r\n ></dx-date-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:EndDate' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <dx-date-box\r\n type=\"date\"\r\n dateSerializationFormat=\"yyyy-MM-dd\"\r\n formControlName=\"toDate\"\r\n ></dx-date-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:SalesPriceExcludingPackaging' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"salesPriceExcludingPackaging\"\r\n [(currency)]=\"salesPriceExcludingPackagingCurrency\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-lg-6\">\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Status' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"col-8\">\r\n <select class=\"form-select\" formControlName=\"status\">\r\n <option [ngValue]=\"null\" disabled hidden>\r\n {{ 'Keops::SelectAnOption' | abpLocalization }}\r\n </option>\r\n <option *ngFor=\"let opt of statusOptions\" [ngValue]=\"opt.value\">\r\n {{ opt.label | abpLocalization }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:CustomerCode' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <dx-select-box\r\n [dataSource]=\"businessPartnersDataSource\"\r\n valueExpr=\"cardCode\"\r\n [displayExpr]=\"customerDisplayExpr\"\r\n [searchEnabled]=\"true\"\r\n [searchExpr]=\"['cardCode', 'cardName']\"\r\n searchMode=\"contains\"\r\n [searchTimeout]=\"200\"\r\n [minSearchLength]=\"0\"\r\n [showDataBeforeSearch]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"selectedCustomerCode\"\r\n [placeholder]=\"'Keops::SelectAnOption' | abpLocalization\"\r\n ></dx-select-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Gekap' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"gekap\"\r\n [(currency)]=\"gekapCurrency\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:GeneralQuota' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" formControlName=\"generalQuota\" />\r\n <span class=\"input-group-text\">{{ 'Keops::PriceParameters:Unit:Ton' | abpLocalization }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:PromotionalQuota' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <div class=\"input-group\">\r\n <input type=\"number\" class=\"form-control\" formControlName=\"promotionalQuota\" />\r\n <span class=\"input-group-text\">{{ 'Keops::PriceParameters:Unit:Ton' | abpLocalization }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:RawOilPrice' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <lib-amount-currency-input\r\n formControlName=\"rawOilPrice\"\r\n [(currency)]=\"rawOilCurrency\"\r\n ></lib-amount-currency-input>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-center mb-3\">\r\n <label class=\"col-4 col-form-label\">\r\n {{ 'Keops::PriceParameters:Description' | abpLocalization }}\r\n </label>\r\n <div class=\"col-8\">\r\n <textarea class=\"form-control\" rows=\"2\" formControlName=\"description\"></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\" [destroyOnHide]=\"false\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:CostParameters' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-cost-items-tab [costItems]=\"costItems\" [itemsArray]=\"itemsArray\">\r\n </lib-price-parameter-cost-items-tab>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:PriceLists' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-price-lists-tab\r\n [cpRegionCode]=\"selectedRegionCode\"\r\n [ppTypeCode]=\"selectedTypeCode\"\r\n ></lib-price-parameter-price-lists-tab>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:Items' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-items-tab\r\n [cpRegionCode]=\"selectedRegionCode\"\r\n [cpGroupCode]=\"selectedGroupCode\"\r\n ></lib-price-parameter-items-tab>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'Keops::PriceParameters:Tab:Discounts' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <lib-price-parameter-discount-rates-tab [discountsArray]=\"discountsArray\">\r\n </lib-price-parameter-discount-rates-tab>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n</abp-page>\r\n" }]
|
|
251
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i3.ToasterService }, { type: i4.PriceParameterService }, { type: i5.PriceParameterFormDataService }, { type: i6.PriceParameterCostMatchService }, { type: i7.CostItemRowsBuilder }]; } });
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2UtcGFyYW1ldGVyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9wcmljZS1wYXJhbWV0ZXJzL2NvbXBvbmVudHMvcHJpY2UtcGFyYW1ldGVyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUta2VvcHMvc3JjL2xpYi9mZWF0dXJlcy9wcmljZS1wYXJhbWV0ZXJzL2NvbXBvbmVudHMvcHJpY2UtcGFyYW1ldGVyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQXFDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcxQyxPQUFPLEVBSUwsUUFBUSxFQU1SLG9CQUFvQixHQUNyQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUc5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHbEcsTUFBTSxhQUFhLEdBQUc7SUFDcEIsb0JBQW9CLENBQUMsVUFBVTtJQUMvQixvQkFBb0IsQ0FBQyxNQUFNO0lBQzNCLG9CQUFvQixDQUFDLE9BQU87Q0FDN0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLEVB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RSxPQUFPLElBQUksQ0FBQztRQUN4QixPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O3dIQTdRVSwyQkFBMkI7NEdBQTNCLDJCQUEyQixnRUNyQ3hDLCsxWkFvU0E7MkZEL1BhLDJCQUEyQjtrQkFKdkMsU0FBUzsrQkFDRSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCBEYXRhU291cmNlIGZyb20gJ2RldmV4dHJlbWUvZGF0YS9kYXRhX3NvdXJjZSc7XHJcbmltcG9ydCB7XHJcbiAgUHJpY2VQYXJhbWV0ZXJTZXJ2aWNlLFxyXG4gIEJ1c2luZXNzUGFydG5lckR0byxcclxuICBDb3N0SXRlbUR0byxcclxuICBDdXJyZW5jeSxcclxuICBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlEdG8sXHJcbiAgUHJpY2VQYXJhbWV0ZXJUeXBlTG9va3VwRHRvLFxyXG4gIFByaWNlUGFyYW1ldGVyRHRvLFxyXG4gIFByaWNlUGFyYW1ldGVyRGlzY291bnREdG8sXHJcbiAgQ29zdFBhcmFtZXRlckl0ZW1EdG8sXHJcbiAgUHJpY2VQYXJhbWV0ZXJTdGF0dXMsXHJcbn0gZnJvbSAnQGhpdHNvZnQva2Fkb29nbHUta2VvcHMvcHJveHknO1xyXG5pbXBvcnQgeyBzdGF0dXNMYWJlbHMgfSBmcm9tICcuLi9wcmljZS1wYXJhbWV0ZXItbDEwbi1oZWxwZXInO1xyXG5pbXBvcnQgeyBQcmljZVBhcmFtZXRlckZvcm1EYXRhU2VydmljZSB9IGZyb20gJy4uL3ByaWNlLXBhcmFtZXRlci1mb3JtLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IFByaWNlUGFyYW1ldGVyQ29zdE1hdGNoU2VydmljZSB9IGZyb20gJy4uL3ByaWNlLXBhcmFtZXRlci1jb3N0LW1hdGNoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDVVJSRU5DWV9PUFRJT05TLCBDVVJSRU5DWV9PUFRJT05TX0ZYX09OTFkgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jdXJyZW5jeS51dGlscyc7XHJcbmltcG9ydCB7IGlzUmF0ZUNvc3RJdGVtLCBpc0N1c3RvbUNvc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Nvc3QtaXRlbS1jbGFzc2lmaWNhdGlvbi51dGlscyc7XHJcbmltcG9ydCB7IENvc3RJdGVtUm93c0J1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29zdC1pdGVtLXJvd3MuYnVpbGRlcic7XHJcblxyXG5jb25zdCBzdGF0dXNPcHRpb25zID0gW1xyXG4gIFByaWNlUGFyYW1ldGVyU3RhdHVzLkluUHJvZ3Jlc3MsXHJcbiAgUHJpY2VQYXJhbWV0ZXJTdGF0dXMuQWN0aXZlLFxyXG4gIFByaWNlUGFyYW1ldGVyU3RhdHVzLlBhc3NpdmUsXHJcbl0ubWFwKHZhbHVlID0+ICh7IHZhbHVlLCBsYWJlbDogc3RhdHVzTGFiZWxzW3ZhbHVlXSB9KSk7XHJcblxyXG5jb25zdCBERUZBVUxUX0RJU0NPVU5UX1JPV1MgPSAxMDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXByaWNlLXBhcmFtZXRlci1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJpY2UtcGFyYW1ldGVyLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJpY2VQYXJhbWV0ZXJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBmb3JtITogRm9ybUdyb3VwO1xyXG4gIHNhdmluZyA9IGZhbHNlO1xyXG4gIGVkaXRNb2RlID0gZmFsc2U7XHJcbiAgZG9jRW50cnk6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIGN1cnJlbnQ6IFByaWNlUGFyYW1ldGVyRHRvIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvc3RJdGVtczogQ29zdEl0ZW1EdG9bXSA9IFtdO1xyXG4gIHByaXZhdGUgYWxsQ29zdEl0ZW1zOiBDb3N0SXRlbUR0b1tdID0gW107XHJcbiAgdHlwZU9wdGlvbnM6IFByaWNlUGFyYW1ldGVyVHlwZUxvb2t1cER0b1tdID0gW107XHJcbiAgZ3JvdXBPcHRpb25zOiBDb3N0UGFyYW1ldGVyQ2F0ZWdvcnlEdG9bXSA9IFtdO1xyXG4gIHJlZ2lvbk9wdGlvbnM6IENvc3RQYXJhbWV0ZXJDYXRlZ29yeUR0b1tdID0gW107XHJcblxyXG4gIHByaXZhdGUgYXV0b0FwcGx5RW5hYmxlZCA9IGZhbHNlO1xyXG5cclxuICBzeXN0ZW1SYXRlVXNkID0gMDtcclxuICBzeXN0ZW1SYXRlRXVyID0gMDtcclxuICByYXRlQ3VycmVuY3k6IEN1cnJlbmN5ID0gQ3VycmVuY3kuVVNEO1xyXG5cclxuICBidXNpbmVzc1BhcnRuZXJzRGF0YVNvdXJjZTogRGF0YVNvdXJjZSB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkQ3VzdG9tZXJDb2RlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBnZWthcEN1cnJlbmN5OiBDdXJyZW5jeSA9IEN1cnJlbmN5LlRSWTtcclxuICByYXdPaWxDdXJyZW5jeTogQ3VycmVuY3kgPSBDdXJyZW5jeS5VU0Q7XHJcbiAgc2FsZXNQcmljZUV4Y2x1ZGluZ1BhY2thZ2luZ0N1cnJlbmN5OiBDdXJyZW5jeSA9IEN1cnJlbmN5LlVTRDtcclxuXHJcbiAgcmVhZG9ubHkgc3RhdHVzT3B0aW9ucyA9IHN0YXR1c09wdGlvbnM7XHJcbiAgcmVhZG9ubHkgY3VycmVuY3lPcHRpb25zID0gQ1VSUkVOQ1lfT1BUSU9OUztcclxuICByZWFkb25seSByYXRlQ3VycmVuY3lPcHRpb25zID0gQ1VSUkVOQ1lfT1BUSU9OU19GWF9PTkxZO1xyXG5cclxuICByZWFkb25seSBjdXN0b21lckRpc3BsYXlFeHByID0gKGM6IEJ1c2luZXNzUGFydG5lckR0byB8IG51bGwpOiBzdHJpbmcgPT5cclxuICAgIGMgPyBgJHtjLmNhcmRDb2RlfSAtICR7Yy5jYXJkTmFtZX1gIDogJyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXI6IFRvYXN0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlOiBQcmljZVBhcmFtZXRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1EYXRhU2VydmljZTogUHJpY2VQYXJhbWV0ZXJGb3JtRGF0YVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvc3RNYXRjaFNlcnZpY2U6IFByaWNlUGFyYW1ldGVyQ29zdE1hdGNoU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm93c0J1aWxkZXI6IENvc3RJdGVtUm93c0J1aWxkZXIsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRvY0VudHJ5UGFyYW0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnZG9jRW50cnknKTtcclxuICAgIHRoaXMuZG9jRW50cnkgPSBkb2NFbnRyeVBhcmFtICE9IG51bGwgPyBOdW1iZXIoZG9jRW50cnlQYXJhbSkgOiBudWxsO1xyXG4gICAgdGhpcy5lZGl0TW9kZSA9IHRoaXMuZG9jRW50cnkgIT0gbnVsbCAmJiAhTnVtYmVyLmlzTmFOKHRoaXMuZG9jRW50cnkpO1xyXG5cclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICB0eXBlQ29kZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIHJlZ2lvbkNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBncm91cENvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBleGNoYW5nZVJhdGU6IFswXSxcclxuICAgICAgZnJvbURhdGU6IFt7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogdGhpcy5lZGl0TW9kZSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICB0b0RhdGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBzdGF0dXM6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBkZXNjcmlwdGlvbjogW251bGwsIFtWYWxpZGF0b3JzLm1heExlbmd0aCgyNTQpXV0sXHJcbiAgICAgIGN1c3RvbWVyQ29kZTogW251bGxdLFxyXG4gICAgICBnZWthcDogWzBdLFxyXG4gICAgICBnZW5lcmFsUXVvdGE6IFswXSxcclxuICAgICAgcHJvbW90aW9uYWxRdW90YTogWzBdLFxyXG4gICAgICByYXdPaWxQcmljZTogWzBdLFxyXG4gICAgICBzYWxlc1ByaWNlRXhjbHVkaW5nUGFja2FnaW5nOiBbMF0sXHJcbiAgICAgIGl0ZW1zOiB0aGlzLmZiLmFycmF5KFtdKSxcclxuICAgICAgZGlzY291bnRzOiB0aGlzLmZiLmFycmF5KFtdKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYXBwbHlEaXNjb3VudHMobnVsbCk7XHJcblxyXG4gICAgdGhpcy5mb3JtLmdldCgncmVnaW9uQ29kZScpIS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMub25Db21iaW5hdGlvbkNoYW5nZSgpKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ2dyb3VwQ29kZScpIS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMub25Db21iaW5hdGlvbkNoYW5nZSgpKTtcclxuXHJcbiAgICB0aGlzLmxvYWQoKTtcclxuICB9XHJcblxyXG4gIGdldCBpdGVtc0FycmF5KCk6IEZvcm1BcnJheSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgnaXRlbXMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGlzY291bnRzQXJyYXkoKTogRm9ybUFycmF5IHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdkaXNjb3VudHMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRNb2RlXHJcbiAgICAgID8gJ0tlb3BzOjpQcmljZVBhcmFtZXRlcnM6RWRpdFRpdGxlJ1xyXG4gICAgICA6ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkNyZWF0ZVRpdGxlJztcclxuICB9XHJcblxyXG4gIGdldCBzZWxlY3RlZFJlZ2lvbkNvZGUoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtPy5nZXQoJ3JlZ2lvbkNvZGUnKT8udmFsdWUgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldCBzZWxlY3RlZFR5cGVDb2RlKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybT8uZ2V0KCd0eXBlQ29kZScpPy52YWx1ZSA/PyBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNlbGVjdGVkR3JvdXBDb2RlKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybT8uZ2V0KCdncm91cENvZGUnKT8udmFsdWUgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IGlzUmF0ZSA9IGlzUmF0ZUNvc3RJdGVtO1xyXG4gIHJlYWRvbmx5IGlzQ3VzdG9tID0gaXNDdXN0b21Db3N0SXRlbTtcclxuXHJcbiAgb25SYXRlQ3VycmVuY3lDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1cclxuICAgICAgLmdldCgnZXhjaGFuZ2VSYXRlJykhXHJcbiAgICAgIC5zZXRWYWx1ZSh0aGlzLnJhdGVDdXJyZW5jeSA9PT0gQ3VycmVuY3kuRVVSID8gdGhpcy5zeXN0ZW1SYXRlRXVyIDogdGhpcy5zeXN0ZW1SYXRlVXNkKTtcclxuICB9XHJcblxyXG4gIGdvQmFjaygpOiB2b2lkIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2tlb3BzL2Nvc3QvcHJpY2UtcGFyYW1ldGVycyddKTtcclxuICB9XHJcblxyXG4gIHNhdmUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCBpbnB1dCA9IHtcclxuICAgICAgLi4udGhpcy5mb3JtLmdldFJhd1ZhbHVlKCksXHJcbiAgICAgIGN1c3RvbWVyQ29kZTogdGhpcy5zZWxlY3RlZEN1c3RvbWVyQ29kZSxcclxuICAgICAgZ2VrYXBDdXJyZW5jeTogdGhpcy5nZWthcEN1cnJlbmN5LFxyXG4gICAgICByYXdPaWxDdXJyZW5jeTogdGhpcy5yYXdPaWxDdXJyZW5jeSxcclxuICAgICAgc2FsZXNQcmljZUV4Y2x1ZGluZ1BhY2thZ2luZ0N1cnJlbmN5OiB0aGlzLnNhbGVzUHJpY2VFeGNsdWRpbmdQYWNrYWdpbmdDdXJyZW5jeSxcclxuICAgICAgaXRlbXM6IHRoaXMucm93c0J1aWxkZXIudG9JbnB1dCh0aGlzLml0ZW1zQXJyYXkpLFxyXG4gICAgICBkaXNjb3VudHM6IHRoaXMuZGlzY291bnRzQXJyYXkuY29udHJvbHNcclxuICAgICAgICAubWFwKGdyb3VwID0+IGdyb3VwLnZhbHVlKVxyXG4gICAgICAgIC5maWx0ZXIodmFsdWUgPT4gdmFsdWUuc2FsZXNFbXBsb3llZUNvZGUgIT0gbnVsbClcclxuICAgICAgICAubWFwKHZhbHVlID0+ICh7XHJcbiAgICAgICAgICBzYWxlc0VtcGxveWVlQ29kZTogdmFsdWUuc2FsZXNFbXBsb3llZUNvZGUsXHJcbiAgICAgICAgICByYXRlOiB2YWx1ZS5yYXRlLFxyXG4gICAgICAgIH0pKSxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcmVxdWVzdCQgPSB0aGlzLmVkaXRNb2RlXHJcbiAgICAgID8gdGhpcy5zZXJ2aWNlLnVwZGF0ZSh0aGlzLmRvY0VudHJ5ISwgaW5wdXQpXHJcbiAgICAgIDogdGhpcy5zZXJ2aWNlLmNyZWF0ZShpbnB1dCk7XHJcblxyXG4gICAgcmVxdWVzdCQucGlwZShmaW5hbGl6ZSgoKSA9PiAodGhpcy5zYXZpbmcgPSBmYWxzZSkpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3MoJ0FicFVpOjpTdWNjZXNzZnVsbHlTYXZlZCcpO1xyXG4gICAgICAgIHRoaXMuZ29CYWNrKCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybURhdGFTZXJ2aWNlLmxvYWQodGhpcy5lZGl0TW9kZSA/IHRoaXMuZG9jRW50cnkgOiBudWxsKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMudHlwZU9wdGlvbnMgPSBkYXRhLnR5cGVPcHRpb25zO1xyXG4gICAgICB0aGlzLmdyb3VwT3B0aW9ucyA9IGRhdGEuZ3JvdXBPcHRpb25zO1xyXG4gICAgICB0aGlzLnJlZ2lvbk9wdGlvbnMgPSBkYXRhLnJlZ2lvbk9wdGlvbnM7XHJcbiAgICAgIHRoaXMuYnVzaW5lc3NQYXJ0bmVyc0RhdGFTb3VyY2UgPSBkYXRhLmJ1c2luZXNzUGFydG5lcnNEYXRhU291cmNlO1xyXG4gICAgICB0aGlzLmFsbENvc3RJdGVtcyA9IGRhdGEuY29zdEl0ZW1zO1xyXG4gICAgICB0aGlzLnN5c3RlbVJhdGVVc2QgPSBkYXRhLnN5c3RlbVJhdGVVc2Q7XHJcbiAgICAgIHRoaXMuc3lzdGVtUmF0ZUV1ciA9IGRhdGEuc3lzdGVtUmF0ZUV1cjtcclxuXHJcbiAgICAgIGlmIChkYXRhLmN1cnJlbnQpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnQgPSBkYXRhLmN1cnJlbnQ7XHJcbiAgICAgICAgdGhpcy5wYXRjaEZyb21DdXJyZW50KGRhdGEuY3VycmVudCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hdXRvQXBwbHlFbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9uUmF0ZUN1cnJlbmN5Q2hhbmdlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXRjaEZyb21DdXJyZW50KGR0bzogUHJpY2VQYXJhbWV0ZXJEdG8pOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZUNvZGU6IGR0by50eXBlQ29kZSA/PyBudWxsLFxyXG4gICAgICAgIHJlZ2lvbkNvZGU6IGR0by5yZWdpb25Db2RlID8/IG51bGwsXHJcbiAgICAgICAgZ3JvdXBDb2RlOiBkdG8uZ3JvdXBDb2RlID8/IG51bGwsXHJcbiAgICAgICAgZXhjaGFuZ2VSYXRlOiBkdG8uZXhjaGFuZ2VSYXRlID8/IDAsXHJcbiAgICAgICAgZnJvbURhdGU6IHRoaXMudG9EYXRlSW5wdXQoZHRvLmZyb21EYXRlKSxcclxuICAgICAgICB0b0RhdGU6IHRoaXMudG9EYXRlSW5wdXQoZHRvLnRvRGF0ZSksXHJcbiAgICAgICAgc3RhdHVzOiBkdG8uc3RhdHVzID8/IFByaWNlUGFyYW1ldGVyU3RhdHVzLkFjdGl2ZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogZHRvLmRlc2NyaXB0aW9uID8/IG51bGwsXHJcbiAgICAgICAgY3VzdG9tZXJDb2RlOiBkdG8uY3VzdG9tZXJDb2RlID8/IG51bGwsXHJcbiAgICAgICAgZ2VrYXA6IGR0by5nZWthcCA/PyAwLFxyXG4gICAgICAgIGdlbmVyYWxRdW90YTogZHRvLmdlbmVyYWxRdW90YSA/PyAwLFxyXG4gICAgICAgIHByb21vdGlvbmFsUXVvdGE6IGR0by5wcm9tb3Rpb25hbFF1b3RhID8/IDAsXHJcbiAgICAgICAgcmF3T2lsUHJpY2U6IGR0by5yYXdPaWxQcmljZSA/PyAwLFxyXG4gICAgICAgIHNhbGVzUHJpY2VFeGNsdWRpbmdQYWNrYWdpbmc6IGR0by5zYWxlc1ByaWNlRXhjbHVkaW5nUGFja2FnaW5nID8/IDAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9LFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkQ3VzdG9tZXJDb2RlID0gZHRvLmN1c3RvbWVyQ29kZSA/PyBudWxsO1xyXG4gICAgdGhpcy5nZWthcEN1cnJlbmN5ID0gZHRvLmdla2FwQ3VycmVuY3kgPz8gQ3VycmVuY3kuVFJZO1xyXG4gICAgdGhpcy5yYXdPaWxDdXJyZW5jeSA9IGR0by5yYXdPaWxDdXJyZW5jeSA/PyBDdXJyZW5jeS5VU0Q7XHJcbiAgICB0aGlzLnNhbGVzUHJpY2VFeGNsdWRpbmdQYWNrYWdpbmdDdXJyZW5jeSA9XHJcbiAgICAgIGR0by5zYWxlc1ByaWNlRXhjbHVkaW5nUGFja2FnaW5nQ3VycmVuY3kgPz8gQ3VycmVuY3kuVVNEO1xyXG5cclxuICAgIHRoaXMuYXBwbHlJdGVtcyhkdG8uaXRlbXMpO1xyXG4gICAgdGhpcy5hcHBseURpc2NvdW50cyhkdG8uZGlzY291bnRzKTtcclxuICAgIHRoaXMuYXV0b0FwcGx5RW5hYmxlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5RGlzY291bnRzKFxyXG4gICAgc291cmNlOiBSZWFkb25seUFycmF5PFByaWNlUGFyYW1ldGVyRGlzY291bnREdG8+IHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICApOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzY291bnRzQXJyYXkuY2xlYXIoKTtcclxuICAgIGZvciAoY29uc3QgZGlzY291bnQgb2Ygc291cmNlID8/IFtdKSB7XHJcbiAgICAgIHRoaXMuZGlzY291bnRzQXJyYXkucHVzaChcclxuICAgICAgICB0aGlzLmNyZWF0ZURpc2NvdW50Um93KFxyXG4gICAgICAgICAgZGlzY291bnQuc2FsZXNFbXBsb3llZUNvZGUgPz8gbnVsbCxcclxuICAgICAgICAgIGRpc2NvdW50LnNhbGVzRW1wbG95ZWVOYW1lID8/IG51bGwsXHJcbiAgICAgICAgICBkaXNjb3VudC5yYXRlID8/IG51bGwsXHJcbiAgICAgICAgKSxcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB3aGlsZSAodGhpcy5kaXNjb3VudHNBcnJheS5sZW5ndGggPCBERUZBVUxUX0RJU0NPVU5UX1JPV1MpIHtcclxuICAgICAgdGhpcy5kaXNjb3VudHNBcnJheS5wdXNoKHRoaXMuY3JlYXRlRGlzY291bnRSb3cobnVsbCwgbnVsbCwgbnVsbCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVEaXNjb3VudFJvdyhcclxuICAgIHNhbGVzRW1wbG95ZWVDb2RlOiBudW1iZXIgfCBudWxsLFxyXG4gICAgc2FsZXNFbXBsb3llZU5hbWU6IHN0cmluZyB8IG51bGwsXHJcbiAgICByYXRlOiBudW1iZXIgfCBudWxsLFxyXG4gICk6IEZvcm1Hcm91cCB7XHJcbiAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHNhbGVzRW1wbG95ZWVDb2RlOiBbc2FsZXNFbXBsb3llZUNvZGVdLFxyXG4gICAgICBzYWxlc0VtcGxveWVlTmFtZTogW3NhbGVzRW1wbG95ZWVOYW1lXSxcclxuICAgICAgcmF0ZTogW3JhdGVdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5SXRlbXMoc291cmNlOiBSZWFkb25seUFycmF5PENvc3RQYXJhbWV0ZXJJdGVtRHRvPiB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgIHRoaXMuY29zdEl0ZW1zID0gdGhpcy5hbGxDb3N0SXRlbXM7XHJcbiAgICB0aGlzLnJvd3NCdWlsZGVyLmJ1aWxkKHRoaXMuaXRlbXNBcnJheSwgdGhpcy5jb3N0SXRlbXMsIHNvdXJjZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFySXRlbXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvc3RJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5pdGVtc0FycmF5LmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ29tYmluYXRpb25DaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuYXV0b0FwcGx5RW5hYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVnaW9uQ29kZSA9IHRoaXMuZm9ybS5nZXQoJ3JlZ2lvbkNvZGUnKSEudmFsdWU7XHJcbiAgICBjb25zdCBncm91cENvZGUgPSB0aGlzLmZvcm0uZ2V0KCdncm91cENvZGUnKSEudmFsdWU7XHJcblxyXG4gICAgaWYgKCFyZWdpb25Db2RlIHx8ICFncm91cENvZGUpIHtcclxuICAgICAgdGhpcy5jbGVhckl0ZW1zKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvc3RNYXRjaFNlcnZpY2UuZmluZE1hdGNoKHJlZ2lvbkNvZGUsIGdyb3VwQ29kZSkuc3Vic2NyaWJlKG1hdGNoID0+IHtcclxuICAgICAgaWYgKCFtYXRjaCkge1xyXG4gICAgICAgIHRoaXMuY2xlYXJJdGVtcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5hcHBseUl0ZW1zKG1hdGNoLml0ZW1zKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0RhdGVJbnB1dCh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gdmFsdWUuc3Vic3RyaW5nKDAsIDEwKTtcclxuICB9XHJcbn1cclxuIiwiPGFicC1wYWdlIFt0aXRsZV09XCJ0aXRsZSB8IGFicExvY2FsaXphdGlvblwiPlxyXG4gIDxhYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lciBjbGFzcz1cImNvbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtZW5kIG14LTBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIHB4LTEgcHQtMCBwdC1tZC0yIHBlLTAgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LWxlZnQgbWUtMVwiPjwvaT5cclxuICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkJhY2tUb0xpc3QnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdhcm5pbmdcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAge3sgJ0tlb3BzOjpQcmljZVBhcmFtZXRlcnM6VXBkYXRlUHJpY2VMaXN0JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxhYnAtYnV0dG9uXHJcbiAgICAgICAgICBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiXHJcbiAgICAgICAgICBidXR0b25DbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiXHJcbiAgICAgICAgICBbbG9hZGluZ109XCJzYXZpbmdcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0/LmludmFsaWRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgJ0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYWJwLWJ1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG5cclxuICA8Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwic2F2ZSgpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtYi0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiICpuZ0lmPVwiZWRpdE1vZGVcIj5cclxuICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkRvY051bScgfCBhYnBMb2NhbGl6YXRpb24gfX06IHt7IGN1cnJlbnQ/LmRvY051bSA/PyAnLScgfX0gwrdcclxuICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkRvY0RhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19OlxyXG4gICAgICAgICAge3sgKGN1cnJlbnQ/LmRvY0RhdGUgfCBzaG9ydERhdGUpID8/ICctJyB9fVxyXG4gICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZCBtcy1hdXRvXCI+XHJcbiAgICAgICAgICB7eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpTeXN0ZW1SYXRlcycgfCBhYnBMb2NhbGl6YXRpb24gfX06IFVTRFxyXG4gICAgICAgICAge3sgc3lzdGVtUmF0ZVVzZCB8IG51bWJlciB9fSDCtyBFVVIge3sgc3lzdGVtUmF0ZUV1ciB8IG51bWJlciB9fVxyXG4gICAgICAgIDwvc21hbGw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbGctNlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlR5cGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwidHlwZUNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJudWxsXCIgZGlzYWJsZWQgaGlkZGVuPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6U2VsZWN0QW5PcHRpb24nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB0eXBlIG9mIHR5cGVPcHRpb25zXCIgW25nVmFsdWVdPVwidHlwZS5jb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgdHlwZS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC00IGNvbC1mb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpSZWdpb24nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwicmVnaW9uQ29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBkaXNhYmxlZCBoaWRkZW4+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgJ0tlb3BzOjpTZWxlY3RBbk9wdGlvbicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHJlZ2lvbiBvZiByZWdpb25PcHRpb25zXCIgW25nVmFsdWVdPVwicmVnaW9uLmNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyByZWdpb24ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtNCBjb2wtZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ0tlb3BzOjpQcmljZVBhcmFtZXRlcnM6R3JvdXAnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZ3JvdXBDb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiIGRpc2FibGVkIGhpZGRlbj5cclxuICAgICAgICAgICAgICAgICAgICB7eyAnS2VvcHM6OlNlbGVjdEFuT3B0aW9uJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZ3JvdXBPcHRpb25zXCIgW25nVmFsdWVdPVwiZ3JvdXAuY29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkV4Y2hhbmdlUmF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1hbW91bnQtY3VycmVuY3ktaW5wdXRcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZXhjaGFuZ2VSYXRlXCJcclxuICAgICAgICAgICAgICAgICAgWyhjdXJyZW5jeSldPVwicmF0ZUN1cnJlbmN5XCJcclxuICAgICAgICAgICAgICAgICAgKGN1cnJlbmN5Q2hhbmdlKT1cIm9uUmF0ZUN1cnJlbmN5Q2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICBbY3VycmVuY3lPcHRpb25zXT1cInJhdGVDdXJyZW5jeU9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgPjwvbGliLWFtb3VudC1jdXJyZW5jeS1pbnB1dD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlN0YXJ0RGF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgICAgICAgICA8ZHgtZGF0ZS1ib3hcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICBkYXRlU2VyaWFsaXphdGlvbkZvcm1hdD1cInl5eXktTU0tZGRcIlxyXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmcm9tRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICA+PC9keC1kYXRlLWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkVuZERhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPGR4LWRhdGUtYm94XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgZGF0ZVNlcmlhbGl6YXRpb25Gb3JtYXQ9XCJ5eXl5LU1NLWRkXCJcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidG9EYXRlXCJcclxuICAgICAgICAgICAgICAgID48L2R4LWRhdGUtYm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtNCBjb2wtZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ0tlb3BzOjpQcmljZVBhcmFtZXRlcnM6U2FsZXNQcmljZUV4Y2x1ZGluZ1BhY2thZ2luZycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1hbW91bnQtY3VycmVuY3ktaW5wdXRcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2FsZXNQcmljZUV4Y2x1ZGluZ1BhY2thZ2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgIFsoY3VycmVuY3kpXT1cInNhbGVzUHJpY2VFeGNsdWRpbmdQYWNrYWdpbmdDdXJyZW5jeVwiXHJcbiAgICAgICAgICAgICAgICA+PC9saWItYW1vdW50LWN1cnJlbmN5LWlucHV0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLWxnLTZcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC00IGNvbC1mb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpTdGF0dXMnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiIGRpc2FibGVkIGhpZGRlbj5cclxuICAgICAgICAgICAgICAgICAgICB7eyAnS2VvcHM6OlNlbGVjdEFuT3B0aW9uJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIHN0YXR1c09wdGlvbnNcIiBbbmdWYWx1ZV09XCJvcHQudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBvcHQubGFiZWwgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkN1c3RvbWVyQ29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3hcclxuICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiYnVzaW5lc3NQYXJ0bmVyc0RhdGFTb3VyY2VcIlxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI9XCJjYXJkQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNwbGF5RXhwcl09XCJjdXN0b21lckRpc3BsYXlFeHByXCJcclxuICAgICAgICAgICAgICAgICAgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzZWFyY2hFeHByXT1cIlsnY2FyZENvZGUnLCAnY2FyZE5hbWUnXVwiXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaE1vZGU9XCJjb250YWluc1wiXHJcbiAgICAgICAgICAgICAgICAgIFtzZWFyY2hUaW1lb3V0XT1cIjIwMFwiXHJcbiAgICAgICAgICAgICAgICAgIFttaW5TZWFyY2hMZW5ndGhdPVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzaG93RGF0YUJlZm9yZVNlYXJjaF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwic2VsZWN0ZWRDdXN0b21lckNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0tlb3BzOjpTZWxlY3RBbk9wdGlvbicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgPjwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkdla2FwJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLWFtb3VudC1jdXJyZW5jeS1pbnB1dFxyXG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJnZWthcFwiXHJcbiAgICAgICAgICAgICAgICAgIFsoY3VycmVuY3kpXT1cImdla2FwQ3VycmVuY3lcIlxyXG4gICAgICAgICAgICAgICAgPjwvbGliLWFtb3VudC1jdXJyZW5jeS1pbnB1dD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkdlbmVyYWxRdW90YScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJnZW5lcmFsUXVvdGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIj57eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpVbml0OlRvbicgfCBhYnBMb2NhbGl6YXRpb24gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlByb21vdGlvbmFsUXVvdGEnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwicHJvbW90aW9uYWxRdW90YVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiPnt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlVuaXQ6VG9uJyB8IGFicExvY2FsaXphdGlvbiB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtNCBjb2wtZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ0tlb3BzOjpQcmljZVBhcmFtZXRlcnM6UmF3T2lsUHJpY2UnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItYW1vdW50LWN1cnJlbmN5LWlucHV0XHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJhd09pbFByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgWyhjdXJyZW5jeSldPVwicmF3T2lsQ3VycmVuY3lcIlxyXG4gICAgICAgICAgICAgICAgPjwvbGliLWFtb3VudC1jdXJyZW5jeS1pbnB1dD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTQgY29sLWZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOkRlc2NyaXB0aW9uJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiByb3dzPVwiMlwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPHVsIG5nYk5hdiAjbmF2PVwibmdiTmF2XCIgY2xhc3M9XCJuYXYtdGFic1wiIFtkZXN0cm95T25IaWRlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICA8bGkgbmdiTmF2SXRlbT5cclxuICAgICAgICAgICAgPGEgbmdiTmF2TGluaz57eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpUYWI6Q29zdFBhcmFtZXRlcnMnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9hPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgICA8bGliLXByaWNlLXBhcmFtZXRlci1jb3N0LWl0ZW1zLXRhYiBbY29zdEl0ZW1zXT1cImNvc3RJdGVtc1wiIFtpdGVtc0FycmF5XT1cIml0ZW1zQXJyYXlcIj5cclxuICAgICAgICAgICAgICA8L2xpYi1wcmljZS1wYXJhbWV0ZXItY29zdC1pdGVtcy10YWI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgIDxsaSBuZ2JOYXZJdGVtPlxyXG4gICAgICAgICAgICA8YSBuZ2JOYXZMaW5rPnt7ICdLZW9wczo6UHJpY2VQYXJhbWV0ZXJzOlRhYjpQcmljZUxpc3RzJyB8IGFicExvY2FsaXphdGlvbiB9fTwvYT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgPGxpYi1wcmljZS1wYXJhbWV0ZXItcHJpY2UtbGlzdHMtdGFiXHJcbiAgICAgICAgICAgICAgICBbY3BSZWdpb25Db2RlXT1cInNlbGVjdGVkUmVnaW9uQ29kZVwiXHJcbiAgICAgICAgICAgICAgICBbcHBUeXBlQ29kZV09XCJzZWxlY3RlZFR5cGVDb2RlXCJcclxuICAgICAgICAgICAgICA+PC9saWItcHJpY2UtcGFyYW1ldGVyLXByaWNlLWxpc3RzLXRhYj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgICAgPGxpIG5nYk5hdkl0ZW0+XHJcbiAgICAgICAgICAgIDxhIG5nYk5hdkxpbms+e3sgJ0tlb3BzOjpQcmljZVBhcmFtZXRlcnM6VGFiOkl0ZW1zJyB8IGFicExvY2FsaXphdGlvbiB9fTwvYT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgPGxpYi1wcmljZS1wYXJhbWV0ZXItaXRlbXMtdGFiXHJcbiAgICAgICAgICAgICAgICBbY3BSZWdpb25Db2RlXT1cInNlbGVjdGVkUmVnaW9uQ29kZVwiXHJcbiAgICAgICAgICAgICAgICBbY3BHcm91cENvZGVdPVwic2VsZWN0ZWRHcm91cENvZGVcIlxyXG4gICAgICAgICAgICAgID48L2xpYi1wcmljZS1wYXJhbWV0ZXItaXRlbXMtdGFiPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICA8bGkgbmdiTmF2SXRlbT5cclxuICAgICAgICAgICAgPGEgbmdiTmF2TGluaz57eyAnS2VvcHM6OlByaWNlUGFyYW1ldGVyczpUYWI6RGlzY291bnRzJyB8IGFicExvY2FsaXphdGlvbiB9fTwvYT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgPGxpYi1wcmljZS1wYXJhbWV0ZXItZGlzY291bnQtcmF0ZXMtdGFiIFtkaXNjb3VudHNBcnJheV09XCJkaXNjb3VudHNBcnJheVwiPlxyXG4gICAgICAgICAgICAgIDwvbGliLXByaWNlLXBhcmFtZXRlci1kaXNjb3VudC1yYXRlcy10YWI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcblxyXG4gICAgICAgIDxkaXYgW25nYk5hdk91dGxldF09XCJuYXZcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbjwvYWJwLXBhZ2U+XHJcbiJdfQ==
|