techlify-inventory-common 18.4.1 → 18.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/esm2022/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.mjs +8 -8
  2. package/esm2022/lib/inventory-common/location/location.service.mjs +5 -1
  3. package/esm2022/lib/inventory-common/measure/measures-list/measures-list.component.mjs +12 -4
  4. package/esm2022/lib/inventory-common/product/product-basic-info/product-basic-info.component.mjs +3 -3
  5. package/esm2022/lib/inventory-common/product/product-list/product-list.component.mjs +25 -17
  6. package/esm2022/lib/inventory-common/product/product-measure-form/product-measure-form.component.mjs +9 -9
  7. package/esm2022/lib/inventory-common/product/product-measures-list/product-measures-list.component.mjs +8 -8
  8. package/esm2022/lib/inventory-common/product/product-quick-search/product-quick-search.component.mjs +2 -2
  9. package/esm2022/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.mjs +8 -8
  10. package/esm2022/lib/inventory-common/product/product-summary.service.mjs +20 -0
  11. package/esm2022/lib/inventory-common/product/product-view-page/product-view-page.component.mjs +1 -1
  12. package/esm2022/lib/inventory-common/product/product.service.mjs +4 -33
  13. package/esm2022/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.mjs +18 -52
  14. package/esm2022/lib/inventory-common/stock-issuances/stock-issuances-list/stock-issuances-list.component.mjs +4 -4
  15. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form/stock-issue-form.component.mjs +23 -11
  16. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form.module.mjs +5 -25
  17. package/esm2022/lib/inventory-common/stock-issuances/stock-issue-import-page/stock-issue-import-page.component.mjs +2 -2
  18. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form/stock-receipt-form.component.mjs +27 -12
  19. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form-button/stock-receipt-form-button.component.mjs +6 -3
  20. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.module.mjs +9 -25
  21. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-import-page/stock-receipt-import-page.component.mjs +2 -2
  22. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-list-page/stock-receipts-list-page.component.mjs +16 -5
  23. package/esm2022/lib/inventory-common/supplier/supplier-view/supplier-view.component.mjs +7 -5
  24. package/esm2022/lib/inventory-common/supplier/supplier.module.mjs +8 -4
  25. package/fesm2022/{techlify-inventory-common-category.module-isHvDgRZ.mjs → techlify-inventory-common-category.module-BSXuRnsI.mjs} +14 -14
  26. package/fesm2022/{techlify-inventory-common-category.module-isHvDgRZ.mjs.map → techlify-inventory-common-category.module-BSXuRnsI.mjs.map} +1 -1
  27. package/fesm2022/{techlify-inventory-common-location.module-DI57PYtO.mjs → techlify-inventory-common-location.module-hLxnh3np.mjs} +7 -26
  28. package/fesm2022/techlify-inventory-common-location.module-hLxnh3np.mjs.map +1 -0
  29. package/fesm2022/{techlify-inventory-common-measure.module-eEfRzXya.mjs → techlify-inventory-common-measure.module-CZcQfmvz.mjs} +23 -29
  30. package/fesm2022/techlify-inventory-common-measure.module-CZcQfmvz.mjs.map +1 -0
  31. package/fesm2022/{techlify-inventory-common-stock-issuances.module-BnpAew18.mjs → techlify-inventory-common-stock-issuances.module-9HG3-aO_.mjs} +3 -3
  32. package/fesm2022/techlify-inventory-common-stock-issuances.module-9HG3-aO_.mjs.map +1 -0
  33. package/fesm2022/{techlify-inventory-common-supplier.module-CbKK7WeC.mjs → techlify-inventory-common-supplier.module-BzCsszWn.mjs} +21 -17
  34. package/fesm2022/techlify-inventory-common-supplier.module-BzCsszWn.mjs.map +1 -0
  35. package/fesm2022/{techlify-inventory-common-techlify-inventory-common-BCHHzF2b.mjs → techlify-inventory-common-techlify-inventory-common-CmIBHBen.mjs} +229 -222
  36. package/fesm2022/techlify-inventory-common-techlify-inventory-common-CmIBHBen.mjs.map +1 -0
  37. package/fesm2022/techlify-inventory-common.mjs +1 -1
  38. package/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.d.ts +3 -3
  39. package/lib/inventory-common/location/location.service.d.ts +1 -0
  40. package/lib/inventory-common/product/product-list/product-list.component.d.ts +1 -0
  41. package/lib/inventory-common/product/product-measure-form/product-measure-form.component.d.ts +3 -3
  42. package/lib/inventory-common/product/product-measures-list/product-measures-list.component.d.ts +3 -3
  43. package/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.d.ts +3 -3
  44. package/lib/inventory-common/product/product-summary.service.d.ts +8 -0
  45. package/lib/inventory-common/product/product.service.d.ts +2 -13
  46. package/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form/stock-issue-form.component.d.ts +5 -1
  47. package/lib/inventory-common/stock-issuances/stock-issue-form/stock-issue-form.module.d.ts +3 -8
  48. package/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form/stock-receipt-form.component.d.ts +7 -2
  49. package/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form-button/stock-receipt-form-button.component.d.ts +2 -1
  50. package/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.module.d.ts +5 -9
  51. package/lib/inventory-common/stock-receipts/stock-receipts-list-page/stock-receipts-list-page.component.d.ts +2 -1
  52. package/lib/inventory-common/supplier/supplier.module.d.ts +2 -1
  53. package/package.json +1 -1
  54. package/fesm2022/techlify-inventory-common-location.module-DI57PYtO.mjs.map +0 -1
  55. package/fesm2022/techlify-inventory-common-measure.module-eEfRzXya.mjs.map +0 -1
  56. package/fesm2022/techlify-inventory-common-stock-issuances.module-BnpAew18.mjs.map +0 -1
  57. package/fesm2022/techlify-inventory-common-supplier.module-CbKK7WeC.mjs.map +0 -1
  58. package/fesm2022/techlify-inventory-common-techlify-inventory-common-BCHHzF2b.mjs.map +0 -1
@@ -5,16 +5,18 @@ import * as i0 from "@angular/core";
5
5
  import * as i1 from "ngx-techlify-core";
6
6
  import * as i2 from "@angular/forms";
7
7
  import * as i3 from "../../stock-issuance.service";
8
- import * as i4 from "@angular/common";
9
- import * as i5 from "@angular/material/form-field";
10
- import * as i6 from "@angular/material/input";
8
+ import * as i4 from "../../../location/location.service";
9
+ import * as i5 from "@angular/common";
10
+ import * as i6 from "@angular/material/button";
11
11
  import * as i7 from "@angular/material/datepicker";
12
- import * as i8 from "@angular/material/button";
12
+ import * as i8 from "@angular/material/form-field";
13
+ import * as i9 from "@angular/material/input";
13
14
  export class StockIssueFormComponent extends TechlifyFormComponentInterface {
14
15
  formBuilder;
15
16
  stockIssuanceService;
16
17
  alertService;
17
18
  dateUtils;
19
+ locationService;
18
20
  product;
19
21
  stockIssuance;
20
22
  issuableType;
@@ -22,12 +24,14 @@ export class StockIssueFormComponent extends TechlifyFormComponentInterface {
22
24
  saved = new EventEmitter();
23
25
  cancelled = new EventEmitter();
24
26
  isWorking;
25
- constructor(formValidatorService, formBuilder, stockIssuanceService, alertService, dateUtils) {
27
+ locationsCountValue = 0;
28
+ constructor(formValidatorService, formBuilder, stockIssuanceService, alertService, dateUtils, locationService) {
26
29
  super(formValidatorService);
27
30
  this.formBuilder = formBuilder;
28
31
  this.stockIssuanceService = stockIssuanceService;
29
32
  this.alertService = alertService;
30
33
  this.dateUtils = dateUtils;
34
+ this.locationService = locationService;
31
35
  this.errorMessages = {
32
36
  date: {
33
37
  required: 'The date field is required.',
@@ -39,12 +43,16 @@ export class StockIssueFormComponent extends TechlifyFormComponentInterface {
39
43
  this.form = this.formBuilder.group({
40
44
  id: [''],
41
45
  product_id: [''],
46
+ location_id: ['', Validators.required],
42
47
  date: [new Date(), Validators.required],
43
48
  quantity: [1, Validators.required],
44
49
  particulars: [''],
45
50
  });
46
51
  }
47
52
  ngOnInit() {
53
+ this.locationService.count().subscribe((count) => {
54
+ this.locationsCountValue = count;
55
+ });
48
56
  if (this.product) {
49
57
  this.form.get('product_id')?.setValue(this.product?.id);
50
58
  }
@@ -58,13 +66,17 @@ export class StockIssueFormComponent extends TechlifyFormComponentInterface {
58
66
  else {
59
67
  // on create for set default quantity from last record
60
68
  if (this.product?.last_stock_issuance) {
61
- const { quantity } = this.product.last_stock_issuance;
69
+ const { quantity, location_id } = this.product.last_stock_issuance;
62
70
  this.form.patchValue({
63
71
  quantity,
72
+ location_id,
64
73
  });
65
74
  }
66
75
  }
67
76
  }
77
+ get locationsCount() {
78
+ return this.locationsCountValue;
79
+ }
68
80
  save() {
69
81
  if (this.form.invalid) {
70
82
  this.alertService.addAlert('Please check the form for errors', 'error');
@@ -98,13 +110,13 @@ export class StockIssueFormComponent extends TechlifyFormComponentInterface {
98
110
  onProductChange(product) {
99
111
  this.product = product;
100
112
  }
101
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssueFormComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.FormBuilder }, { token: i3.StockIssuanceService }, { token: i1.AlertService }, { token: i1.DateUtils }], target: i0.ɵɵFactoryTarget.Component });
102
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StockIssueFormComponent, selector: "app-stock-issue-form", inputs: { product: "product", stockIssuance: "stockIssuance", issuableType: "issuableType", issuableId: "issuableId" }, outputs: { saved: "saved", cancelled: "cancelled" }, usesInheritance: true, ngImport: i0, template: "<h3 class=\"text-center\">{{ stockIssuance?.id ? 'Edit' : 'Issue' }} Stock for {{ product?.name }}</h3>\n<form [formGroup]=\"form\" class=\"d-flex flex-column gap-1 justify-content-start\" (submit)=\"save()\">\n <mat-form-field *ngIf=\"!product\">\n <mat-label>Product</mat-label>\n <app-searchable-selector\n formControlName=\"product_id\"\n apiUrl=\"api/products\"\n titleField=\"name\"\n (selectedValueChange)=\"onProductChange($event)\"\n ></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input matInput [matDatepicker]=\"datePicker\" formControlName=\"date\" (focus)=\"datePicker.open()\" />\n <mat-datepicker #datePicker></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('date')\">\n {{ getErrorMessage('date') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Quantity</mat-label>\n <input matInput formControlName=\"quantity\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('quantity')\">\n {{ getErrorMessage('quantity') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n <button [disabled]=\"isWorking\" (click)=\"cancelled.emit()\" mat-flat-button type=\"button\">Cancel</button>\n </div>\n</form>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i7.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i1.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }], preserveWhitespaces: true });
113
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssueFormComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.FormBuilder }, { token: i3.StockIssuanceService }, { token: i1.AlertService }, { token: i1.DateUtils }, { token: i4.LocationService }], target: i0.ɵɵFactoryTarget.Component });
114
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StockIssueFormComponent, selector: "app-stock-issue-form", inputs: { product: "product", stockIssuance: "stockIssuance", issuableType: "issuableType", issuableId: "issuableId" }, outputs: { saved: "saved", cancelled: "cancelled" }, usesInheritance: true, ngImport: i0, template: "<h3 class=\"text-center\">{{ stockIssuance?.id ? 'Edit' : 'Issue' }} Stock for {{ product?.name }}</h3>\n<form [formGroup]=\"form\" class=\"d-flex flex-column gap-1 justify-content-start\" (submit)=\"save()\">\n <mat-form-field *ngIf=\"!product\">\n <mat-label>Product</mat-label>\n <app-searchable-selector formControlName=\"product_id\" apiUrl=\"api/products\" titleField=\"name\"\n (selectedValueChange)=\"onProductChange($event)\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"locationsCount > 1\">\n <mat-label>Location</mat-label>\n <app-searchable-selector required formControlName=\"location_id\" apiUrl=\"api/inventory-locations\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input matInput [matDatepicker]=\"datePicker\" formControlName=\"date\" (focus)=\"datePicker.open()\" />\n <mat-datepicker #datePicker></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('date')\">\n {{ getErrorMessage('date') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Quantity</mat-label>\n <input matInput formControlName=\"quantity\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('quantity')\">\n {{ getErrorMessage('quantity') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n <button [disabled]=\"isWorking\" (click)=\"cancelled.emit()\" mat-flat-button type=\"button\">Cancel</button>\n </div>\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i7.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i7.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i1.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }], preserveWhitespaces: true });
103
115
  }
104
116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssueFormComponent, decorators: [{
105
117
  type: Component,
106
- args: [{ selector: 'app-stock-issue-form', template: "<h3 class=\"text-center\">{{ stockIssuance?.id ? 'Edit' : 'Issue' }} Stock for {{ product?.name }}</h3>\n<form [formGroup]=\"form\" class=\"d-flex flex-column gap-1 justify-content-start\" (submit)=\"save()\">\n <mat-form-field *ngIf=\"!product\">\n <mat-label>Product</mat-label>\n <app-searchable-selector\n formControlName=\"product_id\"\n apiUrl=\"api/products\"\n titleField=\"name\"\n (selectedValueChange)=\"onProductChange($event)\"\n ></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input matInput [matDatepicker]=\"datePicker\" formControlName=\"date\" (focus)=\"datePicker.open()\" />\n <mat-datepicker #datePicker></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('date')\">\n {{ getErrorMessage('date') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Quantity</mat-label>\n <input matInput formControlName=\"quantity\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('quantity')\">\n {{ getErrorMessage('quantity') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n <button [disabled]=\"isWorking\" (click)=\"cancelled.emit()\" mat-flat-button type=\"button\">Cancel</button>\n </div>\n</form>\n" }]
107
- }], ctorParameters: () => [{ type: i1.FormValidatorService }, { type: i2.FormBuilder }, { type: i3.StockIssuanceService }, { type: i1.AlertService }, { type: i1.DateUtils }], propDecorators: { product: [{
118
+ args: [{ selector: 'app-stock-issue-form', template: "<h3 class=\"text-center\">{{ stockIssuance?.id ? 'Edit' : 'Issue' }} Stock for {{ product?.name }}</h3>\n<form [formGroup]=\"form\" class=\"d-flex flex-column gap-1 justify-content-start\" (submit)=\"save()\">\n <mat-form-field *ngIf=\"!product\">\n <mat-label>Product</mat-label>\n <app-searchable-selector formControlName=\"product_id\" apiUrl=\"api/products\" titleField=\"name\"\n (selectedValueChange)=\"onProductChange($event)\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field *ngIf=\"locationsCount > 1\">\n <mat-label>Location</mat-label>\n <app-searchable-selector required formControlName=\"location_id\" apiUrl=\"api/inventory-locations\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input matInput [matDatepicker]=\"datePicker\" formControlName=\"date\" (focus)=\"datePicker.open()\" />\n <mat-datepicker #datePicker></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('date')\">\n {{ getErrorMessage('date') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Quantity</mat-label>\n <input matInput formControlName=\"quantity\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('quantity')\">\n {{ getErrorMessage('quantity') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n <button [disabled]=\"isWorking\" (click)=\"cancelled.emit()\" mat-flat-button type=\"button\">Cancel</button>\n </div>\n</form>" }]
119
+ }], ctorParameters: () => [{ type: i1.FormValidatorService }, { type: i2.FormBuilder }, { type: i3.StockIssuanceService }, { type: i1.AlertService }, { type: i1.DateUtils }, { type: i4.LocationService }], propDecorators: { product: [{
108
120
  type: Input
109
121
  }], stockIssuance: [{
110
122
  type: Input
@@ -117,4 +129,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
117
129
  }], cancelled: [{
118
130
  type: Output
119
131
  }] } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay1pc3N1YW5jZXMvc3RvY2staXNzdWUtZm9ybS9zdG9jay1pc3N1ZS1mb3JtL3N0b2NrLWlzc3VlLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2staXNzdWFuY2VzL3N0b2NrLWlzc3VlLWZvcm0vc3RvY2staXNzdWUtZm9ybS9zdG9jay1pc3N1ZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFpRCw4QkFBOEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xILE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQVN6RCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsOEJBQThCO0lBWS9EO0lBQ0E7SUFDQTtJQUNBO0lBZEQsT0FBTyxDQUFNO0lBQ2IsYUFBYSxDQUFNO0lBQ25CLFlBQVksQ0FBVTtJQUN0QixVQUFVLENBQVU7SUFDbkIsS0FBSyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ25ELFNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUVqRSxTQUFTLENBQVc7SUFFcEIsWUFDRSxvQkFBMEMsRUFDbEMsV0FBd0IsRUFDeEIsb0JBQTBDLEVBQzFDLFlBQTBCLEVBQzFCLFNBQW9CO1FBRTVCLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBTHBC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UUFDckUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQzNCLE9BQU8sR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQ2hCLElBQUksRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM5RSxDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDdEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFZO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7d0dBM0ZVLHVCQUF1Qjs0RkFBdkIsdUJBQXVCLGdRQ1hwQyx3a0RBdUNBOzs0RkQ1QmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHNCQUFzQjt5TUFLdkIsT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBEYXRlVXRpbHMsIEZvcm1WYWxpZGF0b3JTZXJ2aWNlLCBUZWNobGlmeUZvcm1Db21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN0b2NrSXNzdWFuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3RvY2staXNzdWFuY2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zdG9jay1pc3N1ZS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0b2NrLWlzc3VlLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdG9jay1pc3N1ZS1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFN0b2NrSXNzdWVGb3JtQ29tcG9uZW50IGV4dGVuZHMgVGVjaGxpZnlGb3JtQ29tcG9uZW50SW50ZXJmYWNlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcHJvZHVjdDogYW55O1xuICBASW5wdXQoKSBzdG9ja0lzc3VhbmNlOiBhbnk7XG4gIEBJbnB1dCgpIGlzc3VhYmxlVHlwZSE6IHN0cmluZztcbiAgQElucHV0KCkgaXNzdWFibGVJZCE6IG51bWJlcjtcbiAgQE91dHB1dCgpIHNhdmVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2FuY2VsbGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGlzV29ya2luZyE6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZm9ybVZhbGlkYXRvclNlcnZpY2U6IEZvcm1WYWxpZGF0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgc3RvY2tJc3N1YW5jZVNlcnZpY2U6IFN0b2NrSXNzdWFuY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlVXRpbHM6IERhdGVVdGlsc1xuICApIHtcbiAgICBzdXBlcihmb3JtVmFsaWRhdG9yU2VydmljZSk7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzID0ge1xuICAgICAgZGF0ZToge1xuICAgICAgICByZXF1aXJlZDogJ1RoZSBkYXRlIGZpZWxkIGlzIHJlcXVpcmVkLicsXG4gICAgICB9LFxuICAgICAgcXVhbnRpdHk6IHtcbiAgICAgICAgcmVxdWlyZWQ6ICdUaGUgcXVhbnRpdHkgZmllbGQgaXMgcmVxdWlyZWQuJyxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgaWQ6IFsnJ10sXG4gICAgICBwcm9kdWN0X2lkOiBbJyddLFxuICAgICAgZGF0ZTogW25ldyBEYXRlKCksIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcXVhbnRpdHk6IFsxLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHBhcnRpY3VsYXJzOiBbJyddLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMucHJvZHVjdCkge1xuICAgICAgdGhpcy5mb3JtLmdldCgncHJvZHVjdF9pZCcpPy5zZXRWYWx1ZSh0aGlzLnByb2R1Y3Q/LmlkKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RvY2tJc3N1YW5jZSkge1xuICAgICAgbGV0IGRhdGE6IGFueSA9IHsgLi4udGhpcy5zdG9ja0lzc3VhbmNlIH07XG4gICAgICBpZiAoZGF0YS5kYXRlKSB7XG4gICAgICAgIGRhdGEuZGF0ZSA9IG5ldyBEYXRlKGRhdGEuZGF0ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShkYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gb24gY3JlYXRlIGZvciBzZXQgZGVmYXVsdCBxdWFudGl0eSBmcm9tIGxhc3QgcmVjb3JkXG4gICAgICBpZiAodGhpcy5wcm9kdWN0Py5sYXN0X3N0b2NrX2lzc3VhbmNlKSB7XG4gICAgICAgIGNvbnN0IHsgcXVhbnRpdHkgfSA9IHRoaXMucHJvZHVjdC5sYXN0X3N0b2NrX2lzc3VhbmNlO1xuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgcXVhbnRpdHksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydCgnUGxlYXNlIGNoZWNrIHRoZSBmb3JtIGZvciBlcnJvcnMnLCAnZXJyb3InKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGF0YTogYW55ID0ge1xuICAgICAgcHJvZHVjdF9pZDogdGhpcy5wcm9kdWN0Py5pZCxcbiAgICAgIC4uLnRoaXMuZm9ybS52YWx1ZSxcbiAgICB9O1xuICAgIGlmIChkYXRhLmRhdGUpIHtcbiAgICAgIGRhdGEuZGF0ZSA9IHRoaXMuZGF0ZVV0aWxzLmdldFlZWVlNTUREU3RyaW5nKGRhdGEuZGF0ZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzc3VhYmxlSWQgJiYgdGhpcy5pc3N1YWJsZVR5cGUpIHtcbiAgICAgIGRhdGEuaXNzdWFibGVfdHlwZSA9IHRoaXMuaXNzdWFibGVUeXBlO1xuICAgICAgZGF0YS5pc3N1YWJsZV9pZCA9IHRoaXMuaXNzdWFibGVJZDtcbiAgICB9XG5cbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgbGV0IHJlcXVlc3Q6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuc3RvY2tJc3N1YW5jZVNlcnZpY2Uuc3RvcmUoZGF0YSk7XG4gICAgaWYgKHRoaXMuc3RvY2tJc3N1YW5jZT8uaWQpIHtcbiAgICAgIHJlcXVlc3QgPSB0aGlzLnN0b2NrSXNzdWFuY2VTZXJ2aWNlLnVwZGF0ZShkYXRhKTtcbiAgICB9XG4gICAgcmVxdWVzdC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zYXZlZC5lbWl0KHJlc3BvbnNlPy5pdGVtKTtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkQWxlcnQoJ1N0b2NrIElzc3VhbmNlIFNhdmVkIFN1Y2Nlc3NmdWxseSEnLCAnc3VjY2VzcycpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5pc1dvcmtpbmcgPSBmYWxzZSksXG4gICAgfSk7XG4gIH1cblxuICBvblByb2R1Y3RDaGFuZ2UocHJvZHVjdDogYW55KSB7XG4gICAgdGhpcy5wcm9kdWN0ID0gcHJvZHVjdDtcbiAgfVxufVxuIiwiPGgzIGNsYXNzPVwidGV4dC1jZW50ZXJcIj57eyBzdG9ja0lzc3VhbmNlPy5pZCA/ICdFZGl0JyA6ICdJc3N1ZScgfX0gU3RvY2sgZm9yIHt7IHByb2R1Y3Q/Lm5hbWUgfX08L2gzPlxuPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTEganVzdGlmeS1jb250ZW50LXN0YXJ0XCIgKHN1Ym1pdCk9XCJzYXZlKClcIj5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiIXByb2R1Y3RcIj5cbiAgICA8bWF0LWxhYmVsPlByb2R1Y3Q8L21hdC1sYWJlbD5cbiAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3JcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb2R1Y3RfaWRcIlxuICAgICAgYXBpVXJsPVwiYXBpL3Byb2R1Y3RzXCJcbiAgICAgIHRpdGxlRmllbGQ9XCJuYW1lXCJcbiAgICAgIChzZWxlY3RlZFZhbHVlQ2hhbmdlKT1cIm9uUHJvZHVjdENoYW5nZSgkZXZlbnQpXCJcbiAgICA+PC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1sYWJlbD5EYXRlPC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cImRhdGVQaWNrZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJkYXRlXCIgKGZvY3VzKT1cImRhdGVQaWNrZXIub3BlbigpXCIgLz5cbiAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGVQaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdkYXRlJylcIj5cbiAgICAgIHt7IGdldEVycm9yTWVzc2FnZSgnZGF0ZScpIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+UXVhbnRpdHk8L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicXVhbnRpdHlcIiB0eXBlPVwibnVtYmVyXCIgbWluPVwiMFwiIC8+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgncXVhbnRpdHknKVwiPlxuICAgICAge3sgZ2V0RXJyb3JNZXNzYWdlKCdxdWFudGl0eScpIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+UGFydGljdWxhcnM8L21hdC1sYWJlbD5cbiAgICA8dGV4dGFyZWEgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicGFydGljdWxhcnNcIiByb3dzPVwiM1wiPjwvdGV4dGFyZWE+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImlzV29ya2luZ1wiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJzdWJtaXRcIj5TYXZlPC9idXR0b24+XG4gICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNXb3JraW5nXCIgKGNsaWNrKT1cImNhbmNlbGxlZC5lbWl0KClcIiBtYXQtZmxhdC1idXR0b24gdHlwZT1cImJ1dHRvblwiPkNhbmNlbDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay1pc3N1YW5jZXMvc3RvY2staXNzdWUtZm9ybS9zdG9jay1pc3N1ZS1mb3JtL3N0b2NrLWlzc3VlLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2staXNzdWFuY2VzL3N0b2NrLWlzc3VlLWZvcm0vc3RvY2staXNzdWUtZm9ybS9zdG9jay1pc3N1ZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFpRCw4QkFBOEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xILE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFTekQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLDhCQUE4QjtJQWEvRDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBaEJELE9BQU8sQ0FBTTtJQUNiLGFBQWEsQ0FBTTtJQUNuQixZQUFZLENBQVU7SUFDdEIsVUFBVSxDQUFVO0lBQ25CLEtBQUssR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNuRCxTQUFTLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFakUsU0FBUyxDQUFXO0lBQ1osbUJBQW1CLEdBQVcsQ0FBQyxDQUFDO0lBRXhDLFlBQ0Usb0JBQTBDLEVBQ2xDLFdBQXdCLEVBQ3hCLG9CQUEwQyxFQUMxQyxZQUEwQixFQUMxQixTQUFvQixFQUNwQixlQUFnQztRQUV4QyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQU5wQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBR3hDLElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsSUFBSSxFQUFFO2dCQUNKLFFBQVEsRUFBRSw2QkFBNkI7YUFDeEM7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLGlDQUFpQzthQUM1QztTQUNGLENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ2pDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNSLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNoQixXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUN0QyxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDdkMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbEMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRTtZQUN2RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxHQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUM7YUFBTSxDQUFDO1lBQ04sc0RBQXNEO1lBQ3RELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUM7Z0JBQ25FLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO29CQUNuQixRQUFRO29CQUNSLFdBQVc7aUJBQ1osQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGtDQUFrQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hFLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQVE7WUFDaEIsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM1QixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztTQUNuQixDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDckMsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksT0FBTyxHQUFRLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQzNCLE9BQU8sR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQ2hCLElBQUksRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM5RSxDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDdEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFZO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7d0dBdkdVLHVCQUF1Qjs0RkFBdkIsdUJBQXVCLGdRQ1hwQyw2eERBdUNPOzs0RkQ1Qk0sdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHNCQUFzQjt1T0FLdkIsT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBEYXRlVXRpbHMsIEZvcm1WYWxpZGF0b3JTZXJ2aWNlLCBUZWNobGlmeUZvcm1Db21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN0b2NrSXNzdWFuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3RvY2staXNzdWFuY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBMb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9sb2NhdGlvbi9sb2NhdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXN0b2NrLWlzc3VlLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RvY2staXNzdWUtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0b2NrLWlzc3VlLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tJc3N1ZUZvcm1Db21wb25lbnQgZXh0ZW5kcyBUZWNobGlmeUZvcm1Db21wb25lbnRJbnRlcmZhY2UgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwcm9kdWN0OiBhbnk7XG4gIEBJbnB1dCgpIHN0b2NrSXNzdWFuY2U6IGFueTtcbiAgQElucHV0KCkgaXNzdWFibGVUeXBlITogc3RyaW5nO1xuICBASW5wdXQoKSBpc3N1YWJsZUlkITogbnVtYmVyO1xuICBAT3V0cHV0KCkgc2F2ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjYW5jZWxsZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgaXNXb3JraW5nITogYm9vbGVhbjtcbiAgcHJpdmF0ZSBsb2NhdGlvbnNDb3VudFZhbHVlOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGZvcm1WYWxpZGF0b3JTZXJ2aWNlOiBGb3JtVmFsaWRhdG9yU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHN0b2NrSXNzdWFuY2VTZXJ2aWNlOiBTdG9ja0lzc3VhbmNlU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0ZVV0aWxzOiBEYXRlVXRpbHMsXG4gICAgcHJpdmF0ZSBsb2NhdGlvblNlcnZpY2U6IExvY2F0aW9uU2VydmljZVxuICApIHtcbiAgICBzdXBlcihmb3JtVmFsaWRhdG9yU2VydmljZSk7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzID0ge1xuICAgICAgZGF0ZToge1xuICAgICAgICByZXF1aXJlZDogJ1RoZSBkYXRlIGZpZWxkIGlzIHJlcXVpcmVkLicsXG4gICAgICB9LFxuICAgICAgcXVhbnRpdHk6IHtcbiAgICAgICAgcmVxdWlyZWQ6ICdUaGUgcXVhbnRpdHkgZmllbGQgaXMgcmVxdWlyZWQuJyxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgaWQ6IFsnJ10sXG4gICAgICBwcm9kdWN0X2lkOiBbJyddLFxuICAgICAgbG9jYXRpb25faWQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBkYXRlOiBbbmV3IERhdGUoKSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBxdWFudGl0eTogWzEsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcGFydGljdWxhcnM6IFsnJ10sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvY2F0aW9uU2VydmljZS5jb3VudCgpLnN1YnNjcmliZSgoY291bnQ6IG51bWJlcikgPT4ge1xuICAgICAgdGhpcy5sb2NhdGlvbnNDb3VudFZhbHVlID0gY291bnQ7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5wcm9kdWN0KSB7XG4gICAgICB0aGlzLmZvcm0uZ2V0KCdwcm9kdWN0X2lkJyk/LnNldFZhbHVlKHRoaXMucHJvZHVjdD8uaWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdG9ja0lzc3VhbmNlKSB7XG4gICAgICBsZXQgZGF0YTogYW55ID0geyAuLi50aGlzLnN0b2NrSXNzdWFuY2UgfTtcbiAgICAgIGlmIChkYXRhLmRhdGUpIHtcbiAgICAgICAgZGF0YS5kYXRlID0gbmV3IERhdGUoZGF0YS5kYXRlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKGRhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBvbiBjcmVhdGUgZm9yIHNldCBkZWZhdWx0IHF1YW50aXR5IGZyb20gbGFzdCByZWNvcmRcbiAgICAgIGlmICh0aGlzLnByb2R1Y3Q/Lmxhc3Rfc3RvY2tfaXNzdWFuY2UpIHtcbiAgICAgICAgY29uc3QgeyBxdWFudGl0eSwgbG9jYXRpb25faWQgfSA9IHRoaXMucHJvZHVjdC5sYXN0X3N0b2NrX2lzc3VhbmNlO1xuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgcXVhbnRpdHksXG4gICAgICAgICAgbG9jYXRpb25faWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBsb2NhdGlvbnNDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmxvY2F0aW9uc0NvdW50VmFsdWU7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkQWxlcnQoJ1BsZWFzZSBjaGVjayB0aGUgZm9ybSBmb3IgZXJyb3JzJywgJ2Vycm9yJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRhdGE6IGFueSA9IHtcbiAgICAgIHByb2R1Y3RfaWQ6IHRoaXMucHJvZHVjdD8uaWQsXG4gICAgICAuLi50aGlzLmZvcm0udmFsdWUsXG4gICAgfTtcbiAgICBpZiAoZGF0YS5kYXRlKSB7XG4gICAgICBkYXRhLmRhdGUgPSB0aGlzLmRhdGVVdGlscy5nZXRZWVlZTU1ERFN0cmluZyhkYXRhLmRhdGUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc3N1YWJsZUlkICYmIHRoaXMuaXNzdWFibGVUeXBlKSB7XG4gICAgICBkYXRhLmlzc3VhYmxlX3R5cGUgPSB0aGlzLmlzc3VhYmxlVHlwZTtcbiAgICAgIGRhdGEuaXNzdWFibGVfaWQgPSB0aGlzLmlzc3VhYmxlSWQ7XG4gICAgfVxuXG4gICAgdGhpcy5pc1dvcmtpbmcgPSB0cnVlO1xuICAgIGxldCByZXF1ZXN0OiBhbnkgPSB0aGlzLnN0b2NrSXNzdWFuY2VTZXJ2aWNlLnN0b3JlKGRhdGEpO1xuICAgIGlmICh0aGlzLnN0b2NrSXNzdWFuY2U/LmlkKSB7XG4gICAgICByZXF1ZXN0ID0gdGhpcy5zdG9ja0lzc3VhbmNlU2VydmljZS51cGRhdGUoZGF0YSk7XG4gICAgfVxuICAgIHJlcXVlc3Quc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNXb3JraW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2F2ZWQuZW1pdChyZXNwb25zZT8uaXRlbSk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdTdG9jayBJc3N1YW5jZSBTYXZlZCBTdWNjZXNzZnVsbHkhJywgJ3N1Y2Nlc3MnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4gKHRoaXMuaXNXb3JraW5nID0gZmFsc2UpLFxuICAgIH0pO1xuICB9XG5cbiAgb25Qcm9kdWN0Q2hhbmdlKHByb2R1Y3Q6IGFueSkge1xuICAgIHRoaXMucHJvZHVjdCA9IHByb2R1Y3Q7XG4gIH1cbn1cbiIsIjxoMyBjbGFzcz1cInRleHQtY2VudGVyXCI+e3sgc3RvY2tJc3N1YW5jZT8uaWQgPyAnRWRpdCcgOiAnSXNzdWUnIH19IFN0b2NrIGZvciB7eyBwcm9kdWN0Py5uYW1lIH19PC9oMz5cbjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0xIGp1c3RpZnktY29udGVudC1zdGFydFwiIChzdWJtaXQpPVwic2F2ZSgpXCI+XG4gIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIiFwcm9kdWN0XCI+XG4gICAgPG1hdC1sYWJlbD5Qcm9kdWN0PC9tYXQtbGFiZWw+XG4gICAgPGFwcC1zZWFyY2hhYmxlLXNlbGVjdG9yIGZvcm1Db250cm9sTmFtZT1cInByb2R1Y3RfaWRcIiBhcGlVcmw9XCJhcGkvcHJvZHVjdHNcIiB0aXRsZUZpZWxkPVwibmFtZVwiXG4gICAgICAoc2VsZWN0ZWRWYWx1ZUNoYW5nZSk9XCJvblByb2R1Y3RDaGFuZ2UoJGV2ZW50KVwiPjwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwibG9jYXRpb25zQ291bnQgPiAxXCI+XG4gICAgPG1hdC1sYWJlbD5Mb2NhdGlvbjwvbWF0LWxhYmVsPlxuICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciByZXF1aXJlZCBmb3JtQ29udHJvbE5hbWU9XCJsb2NhdGlvbl9pZFwiIGFwaVVybD1cImFwaS9pbnZlbnRvcnktbG9jYXRpb25zXCI+PC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1sYWJlbD5EYXRlPC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cImRhdGVQaWNrZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJkYXRlXCIgKGZvY3VzKT1cImRhdGVQaWNrZXIub3BlbigpXCIgLz5cbiAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGVQaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdkYXRlJylcIj5cbiAgICAgIHt7IGdldEVycm9yTWVzc2FnZSgnZGF0ZScpIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+UXVhbnRpdHk8L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicXVhbnRpdHlcIiB0eXBlPVwibnVtYmVyXCIgbWluPVwiMFwiIC8+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgncXVhbnRpdHknKVwiPlxuICAgICAge3sgZ2V0RXJyb3JNZXNzYWdlKCdxdWFudGl0eScpIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+UGFydGljdWxhcnM8L21hdC1sYWJlbD5cbiAgICA8dGV4dGFyZWEgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicGFydGljdWxhcnNcIiByb3dzPVwiM1wiPjwvdGV4dGFyZWE+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImlzV29ya2luZ1wiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJzdWJtaXRcIj5TYXZlPC9idXR0b24+XG4gICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNXb3JraW5nXCIgKGNsaWNrKT1cImNhbmNlbGxlZC5lbWl0KClcIiBtYXQtZmxhdC1idXR0b24gdHlwZT1cImJ1dHRvblwiPkNhbmNlbDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT4iXX0=
@@ -3,33 +3,18 @@ import { CommonModule } from '@angular/common';
3
3
  import { StockIssueFormComponent } from './stock-issue-form/stock-issue-form.component';
4
4
  import { StockIssueFormButtonComponent } from './stock-issue-form-button/stock-issue-form-button.component';
5
5
  import { ReactiveFormsModule } from '@angular/forms';
6
- import { MatFormFieldModule } from '@angular/material/form-field';
7
- import { MatInputModule } from '@angular/material/input';
8
- import { MatDatepickerModule } from '@angular/material/datepicker';
9
- import { MatButtonModule } from '@angular/material/button';
10
- import { MatDialogModule } from '@angular/material/dialog';
11
- import { MatTooltipModule } from '@angular/material/tooltip';
12
6
  import { SearchableSelectorModule } from 'ngx-techlify-core';
7
+ import { MaterialModule } from '../../material.module';
13
8
  import * as i0 from "@angular/core";
14
9
  export class StockIssueFormModule {
15
10
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssueFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16
11
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: StockIssueFormModule, declarations: [StockIssueFormComponent, StockIssueFormButtonComponent], imports: [CommonModule,
17
12
  ReactiveFormsModule,
18
- MatFormFieldModule,
19
- MatInputModule,
20
- MatDatepickerModule,
21
- MatButtonModule,
22
- MatDialogModule,
23
- MatTooltipModule,
13
+ MaterialModule,
24
14
  SearchableSelectorModule], exports: [StockIssueFormButtonComponent] });
25
15
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssueFormModule, imports: [CommonModule,
26
16
  ReactiveFormsModule,
27
- MatFormFieldModule,
28
- MatInputModule,
29
- MatDatepickerModule,
30
- MatButtonModule,
31
- MatDialogModule,
32
- MatTooltipModule,
17
+ MaterialModule,
33
18
  SearchableSelectorModule] });
34
19
  }
35
20
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockIssueFormModule, decorators: [{
@@ -40,14 +25,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
40
25
  imports: [
41
26
  CommonModule,
42
27
  ReactiveFormsModule,
43
- MatFormFieldModule,
44
- MatInputModule,
45
- MatDatepickerModule,
46
- MatButtonModule,
47
- MatDialogModule,
48
- MatTooltipModule,
28
+ MaterialModule,
49
29
  SearchableSelectorModule,
50
30
  ],
51
31
  }]
52
32
  }] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWUtZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay1pc3N1YW5jZXMvc3RvY2staXNzdWUtZm9ybS9zdG9jay1pc3N1ZS1mb3JtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM1RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFpQjdELE1BQU0sT0FBTyxvQkFBb0I7d0dBQXBCLG9CQUFvQjt5R0FBcEIsb0JBQW9CLGlCQWRoQix1QkFBdUIsRUFBRSw2QkFBNkIsYUFHbkUsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsY0FBYztZQUNkLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQix3QkFBd0IsYUFWaEIsNkJBQTZCO3lHQWE1QixvQkFBb0IsWUFYN0IsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsY0FBYztZQUNkLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQix3QkFBd0I7OzRGQUdmLG9CQUFvQjtrQkFmaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSw2QkFBNkIsQ0FBQztvQkFDdEUsT0FBTyxFQUFFLENBQUMsNkJBQTZCLENBQUM7b0JBQ3hDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsd0JBQXdCO3FCQUN6QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3RvY2tJc3N1ZUZvcm1Db21wb25lbnQgfSBmcm9tICcuL3N0b2NrLWlzc3VlLWZvcm0vc3RvY2staXNzdWUtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RvY2tJc3N1ZUZvcm1CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL3N0b2NrLWlzc3VlLWZvcm0tYnV0dG9uL3N0b2NrLWlzc3VlLWZvcm0tYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgU2VhcmNoYWJsZVNlbGVjdG9yTW9kdWxlIH0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTdG9ja0lzc3VlRm9ybUNvbXBvbmVudCwgU3RvY2tJc3N1ZUZvcm1CdXR0b25Db21wb25lbnRdLFxuICBleHBvcnRzOiBbU3RvY2tJc3N1ZUZvcm1CdXR0b25Db21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIFNlYXJjaGFibGVTZWxlY3Rvck1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tJc3N1ZUZvcm1Nb2R1bGUge31cbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWUtZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay1pc3N1YW5jZXMvc3RvY2staXNzdWUtZm9ybS9zdG9jay1pc3N1ZS1mb3JtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM1RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBWXZELE1BQU0sT0FBTyxvQkFBb0I7d0dBQXBCLG9CQUFvQjt5R0FBcEIsb0JBQW9CLGlCQVRoQix1QkFBdUIsRUFBRSw2QkFBNkIsYUFHbkUsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2Qsd0JBQXdCLGFBTGhCLDZCQUE2Qjt5R0FRNUIsb0JBQW9CLFlBTjdCLFlBQVk7WUFDWixtQkFBbUI7WUFDbkIsY0FBYztZQUNkLHdCQUF3Qjs7NEZBR2Ysb0JBQW9CO2tCQVZoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHVCQUF1QixFQUFFLDZCQUE2QixDQUFDO29CQUN0RSxPQUFPLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDeEMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLHdCQUF3QjtxQkFDekI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN0b2NrSXNzdWVGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9zdG9jay1pc3N1ZS1mb3JtL3N0b2NrLWlzc3VlLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IFN0b2NrSXNzdWVGb3JtQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9zdG9jay1pc3N1ZS1mb3JtLWJ1dHRvbi9zdG9jay1pc3N1ZS1mb3JtLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNlYXJjaGFibGVTZWxlY3Rvck1vZHVsZSB9IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi4vLi4vbWF0ZXJpYWwubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU3RvY2tJc3N1ZUZvcm1Db21wb25lbnQsIFN0b2NrSXNzdWVGb3JtQnV0dG9uQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW1N0b2NrSXNzdWVGb3JtQnV0dG9uQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIFNlYXJjaGFibGVTZWxlY3Rvck1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tJc3N1ZUZvcm1Nb2R1bGUge31cbiJdfQ==
@@ -40,7 +40,7 @@ export class StockIssueImportPageComponent {
40
40
  type: 'stock-issue',
41
41
  apiUrl: 'api/import-histories',
42
42
  },
43
- viewRouterLink: '/stock-issuances',
43
+ viewRouterLink: '/inventory/stock-issuances',
44
44
  };
45
45
  constructor() { }
46
46
  ngOnInit() {
@@ -56,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
56
56
  ImportCsvModule
57
57
  ], template: "<app-import-csv [config]=\"importConfig\"></app-import-csv>" }]
58
58
  }], ctorParameters: () => [] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWUtaW1wb3J0LXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2staXNzdWFuY2VzL3N0b2NrLWlzc3VlLWltcG9ydC1wYWdlL3N0b2NrLWlzc3VlLWltcG9ydC1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLWlzc3VhbmNlcy9zdG9jay1pc3N1ZS1pbXBvcnQtcGFnZS9zdG9jay1pc3N1ZS1pbXBvcnQtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFtQixlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBYXJFLE1BQU0sT0FBTyw2QkFBNkI7SUFFeEMsWUFBWSxHQUFvQjtRQUM5QixNQUFNLEVBQUUseUJBQXlCO1FBQ2pDLEtBQUssRUFBRSxjQUFjO1FBQ3JCLFVBQVUsRUFBRSxhQUFhO1FBQ3pCLFVBQVUsRUFBRTtZQUNWO2dCQUNFLEtBQUssRUFBRSxTQUFTO2dCQUNoQixLQUFLLEVBQUUsU0FBUztnQkFDaEIsSUFBSSxFQUFFLE1BQU07YUFDYjtZQUNEO2dCQUNFLEtBQUssRUFBRSxNQUFNO2dCQUNiLEtBQUssRUFBRSxNQUFNO2dCQUNiLElBQUksRUFBRSxNQUFNO2FBQ2I7WUFDRDtnQkFDRSxLQUFLLEVBQUUsVUFBVTtnQkFDakIsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLElBQUksRUFBRSxRQUFRO2FBQ2Y7WUFDRDtnQkFDRSxLQUFLLEVBQUUsYUFBYTtnQkFDcEIsS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLElBQUksRUFBRSxNQUFNO2FBQ2I7U0FDRjtRQUNELFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRSxvQkFBb0I7WUFDMUIsSUFBSSxFQUFFLDJDQUEyQztTQUNsRDtRQUNELGFBQWEsRUFBRTtZQUNiLFNBQVMsRUFBRSxJQUFJO1lBQ2YsSUFBSSxFQUFFLGFBQWE7WUFDbkIsTUFBTSxFQUFFLHNCQUFzQjtTQUMvQjtRQUNELGNBQWMsRUFBRSxrQkFBa0I7S0FDbkMsQ0FBQztJQUVGLGdCQUFnQixDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDO3dHQTNDVSw2QkFBNkI7NEZBQTdCLDZCQUE2Qix1RkNoQjFDLDZEQUF5RCx5RERXckQsWUFBWSw4QkFDWixjQUFjLDhCQUNkLGVBQWU7OzRGQUdOLDZCQUE2QjtrQkFYekMsU0FBUzsrQkFDRSw2QkFBNkIsY0FHM0IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxlQUFlO3FCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi8uLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgSW1wb3J0Q3N2Q29uZmlnLCBJbXBvcnRDc3ZNb2R1bGUgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zdG9jay1pc3N1ZS1pbXBvcnQtcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdG9jay1pc3N1ZS1pbXBvcnQtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0b2NrLWlzc3VlLWltcG9ydC1wYWdlLmNvbXBvbmVudC5jc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICBJbXBvcnRDc3ZNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTdG9ja0lzc3VlSW1wb3J0UGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgaW1wb3J0Q29uZmlnOiBJbXBvcnRDc3ZDb25maWcgPSB7XG4gICAgYXBpVXJsOiAnYXBpL3N0b2NrLWlzc3Vlcy1pbXBvcnQnLFxuICAgIHRpdGxlOiAnU3RvY2sgSXNzdWVzJyxcbiAgICBpbXBvcnRUeXBlOiAnc3RvY2staXNzdWUnLFxuICAgIHByb3BlcnRpZXM6IFtcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdQcm9kdWN0JyxcbiAgICAgICAgdmFsdWU6ICdwcm9kdWN0JyxcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdEYXRlJyxcbiAgICAgICAgdmFsdWU6ICdkYXRlJyxcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdRdWFudGl0eScsXG4gICAgICAgIHZhbHVlOiAncXVhbnRpdHknLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAnUGFydGljdWxhcnMnLFxuICAgICAgICB2YWx1ZTogJ3BhcnRpY3VsYXJzJyxcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHNhbXBsZUZpbGU6IHtcbiAgICAgIG5hbWU6ICdTdG9jayBJc3N1ZSBTYW1wbGUnLFxuICAgICAgcGF0aDogJ2Fzc2V0cy9zdG9jay1pc3N1ZS9zdG9jay1pc3N1ZS1zYW1wbGUuY3N2JyxcbiAgICB9LFxuICAgIGltcG9ydEhpc3Rvcnk6IHtcbiAgICAgIGlzRW5hYmxlZDogdHJ1ZSxcbiAgICAgIHR5cGU6ICdzdG9jay1pc3N1ZScsXG4gICAgICBhcGlVcmw6ICdhcGkvaW1wb3J0LWhpc3RvcmllcycsXG4gICAgfSxcbiAgICB2aWV3Um91dGVyTGluazogJy9zdG9jay1pc3N1YW5jZXMnLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxufVxuIiwiPGFwcC1pbXBvcnQtY3N2IFtjb25maWddPVwiaW1wb3J0Q29uZmlnXCI+PC9hcHAtaW1wb3J0LWNzdj4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2staXNzdWUtaW1wb3J0LXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3RvY2staXNzdWFuY2VzL3N0b2NrLWlzc3VlLWltcG9ydC1wYWdlL3N0b2NrLWlzc3VlLWltcG9ydC1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLWlzc3VhbmNlcy9zdG9jay1pc3N1ZS1pbXBvcnQtcGFnZS9zdG9jay1pc3N1ZS1pbXBvcnQtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFtQixlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBYXJFLE1BQU0sT0FBTyw2QkFBNkI7SUFFeEMsWUFBWSxHQUFvQjtRQUM5QixNQUFNLEVBQUUseUJBQXlCO1FBQ2pDLEtBQUssRUFBRSxjQUFjO1FBQ3JCLFVBQVUsRUFBRSxhQUFhO1FBQ3pCLFVBQVUsRUFBRTtZQUNWO2dCQUNFLEtBQUssRUFBRSxTQUFTO2dCQUNoQixLQUFLLEVBQUUsU0FBUztnQkFDaEIsSUFBSSxFQUFFLE1BQU07YUFDYjtZQUNEO2dCQUNFLEtBQUssRUFBRSxNQUFNO2dCQUNiLEtBQUssRUFBRSxNQUFNO2dCQUNiLElBQUksRUFBRSxNQUFNO2FBQ2I7WUFDRDtnQkFDRSxLQUFLLEVBQUUsVUFBVTtnQkFDakIsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLElBQUksRUFBRSxRQUFRO2FBQ2Y7WUFDRDtnQkFDRSxLQUFLLEVBQUUsYUFBYTtnQkFDcEIsS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLElBQUksRUFBRSxNQUFNO2FBQ2I7U0FDRjtRQUNELFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRSxvQkFBb0I7WUFDMUIsSUFBSSxFQUFFLDJDQUEyQztTQUNsRDtRQUNELGFBQWEsRUFBRTtZQUNiLFNBQVMsRUFBRSxJQUFJO1lBQ2YsSUFBSSxFQUFFLGFBQWE7WUFDbkIsTUFBTSxFQUFFLHNCQUFzQjtTQUMvQjtRQUNELGNBQWMsRUFBRSw0QkFBNEI7S0FDN0MsQ0FBQztJQUVGLGdCQUFnQixDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDO3dHQTNDVSw2QkFBNkI7NEZBQTdCLDZCQUE2Qix1RkNoQjFDLDZEQUF5RCx5RERXckQsWUFBWSw4QkFDWixjQUFjLDhCQUNkLGVBQWU7OzRGQUdOLDZCQUE2QjtrQkFYekMsU0FBUzsrQkFDRSw2QkFBNkIsY0FHM0IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxlQUFlO3FCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi8uLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgSW1wb3J0Q3N2Q29uZmlnLCBJbXBvcnRDc3ZNb2R1bGUgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zdG9jay1pc3N1ZS1pbXBvcnQtcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdG9jay1pc3N1ZS1pbXBvcnQtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0b2NrLWlzc3VlLWltcG9ydC1wYWdlLmNvbXBvbmVudC5jc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICBJbXBvcnRDc3ZNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTdG9ja0lzc3VlSW1wb3J0UGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgaW1wb3J0Q29uZmlnOiBJbXBvcnRDc3ZDb25maWcgPSB7XG4gICAgYXBpVXJsOiAnYXBpL3N0b2NrLWlzc3Vlcy1pbXBvcnQnLFxuICAgIHRpdGxlOiAnU3RvY2sgSXNzdWVzJyxcbiAgICBpbXBvcnRUeXBlOiAnc3RvY2staXNzdWUnLFxuICAgIHByb3BlcnRpZXM6IFtcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdQcm9kdWN0JyxcbiAgICAgICAgdmFsdWU6ICdwcm9kdWN0JyxcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdEYXRlJyxcbiAgICAgICAgdmFsdWU6ICdkYXRlJyxcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdRdWFudGl0eScsXG4gICAgICAgIHZhbHVlOiAncXVhbnRpdHknLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAnUGFydGljdWxhcnMnLFxuICAgICAgICB2YWx1ZTogJ3BhcnRpY3VsYXJzJyxcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHNhbXBsZUZpbGU6IHtcbiAgICAgIG5hbWU6ICdTdG9jayBJc3N1ZSBTYW1wbGUnLFxuICAgICAgcGF0aDogJ2Fzc2V0cy9zdG9jay1pc3N1ZS9zdG9jay1pc3N1ZS1zYW1wbGUuY3N2JyxcbiAgICB9LFxuICAgIGltcG9ydEhpc3Rvcnk6IHtcbiAgICAgIGlzRW5hYmxlZDogdHJ1ZSxcbiAgICAgIHR5cGU6ICdzdG9jay1pc3N1ZScsXG4gICAgICBhcGlVcmw6ICdhcGkvaW1wb3J0LWhpc3RvcmllcycsXG4gICAgfSxcbiAgICB2aWV3Um91dGVyTGluazogJy9pbnZlbnRvcnkvc3RvY2staXNzdWFuY2VzJyxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbn1cbiIsIjxhcHAtaW1wb3J0LWNzdiBbY29uZmlnXT1cImltcG9ydENvbmZpZ1wiPjwvYXBwLWltcG9ydC1jc3Y+Il19
@@ -6,28 +6,33 @@ import * as i0 from "@angular/core";
6
6
  import * as i1 from "ngx-techlify-core";
7
7
  import * as i2 from "@angular/forms";
8
8
  import * as i3 from "../../stock-receipt.service";
9
- import * as i4 from "@angular/common";
10
- import * as i5 from "../../../supplier/payee-selector/payee-selector/payee-selector.component";
11
- import * as i6 from "@angular/material/form-field";
12
- import * as i7 from "@angular/material/input";
9
+ import * as i4 from "../../../location/location.service";
10
+ import * as i5 from "@angular/common";
11
+ import * as i6 from "../../../supplier/payee-selector/payee-selector/payee-selector.component";
12
+ import * as i7 from "@angular/material/button";
13
13
  import * as i8 from "@angular/material/datepicker";
14
- import * as i9 from "@angular/material/button";
14
+ import * as i9 from "@angular/material/form-field";
15
+ import * as i10 from "@angular/material/input";
15
16
  export class StockReceiptFormComponent extends TechlifyFormComponentInterface {
16
17
  formBuilder;
17
18
  stockReceiptService;
18
19
  alertService;
19
20
  dateUtils;
21
+ locationService;
20
22
  product;
21
23
  stockReceipt;
24
+ latestLocationId;
22
25
  saved = new EventEmitter();
23
26
  cancelled = new EventEmitter();
24
27
  isWorking;
25
- constructor(formValidatorService, formBuilder, stockReceiptService, alertService, dateUtils) {
28
+ locationsCountValue = 0;
29
+ constructor(formValidatorService, formBuilder, stockReceiptService, alertService, dateUtils, locationService) {
26
30
  super(formValidatorService);
27
31
  this.formBuilder = formBuilder;
28
32
  this.stockReceiptService = stockReceiptService;
29
33
  this.alertService = alertService;
30
34
  this.dateUtils = dateUtils;
35
+ this.locationService = locationService;
31
36
  this.errorMessages = {
32
37
  date: {
33
38
  required: 'The date field is required.',
@@ -42,6 +47,7 @@ export class StockReceiptFormComponent extends TechlifyFormComponentInterface {
42
47
  this.form = this.formBuilder.group({
43
48
  id: [''],
44
49
  supplier_id: [''],
50
+ location_id: ['', Validators.required],
45
51
  date: [new Date(), Validators.required],
46
52
  quantity: [1, Validators.required],
47
53
  purchase_price: [0, Validators.required],
@@ -50,6 +56,9 @@ export class StockReceiptFormComponent extends TechlifyFormComponentInterface {
50
56
  });
51
57
  }
52
58
  ngOnInit() {
59
+ this.locationService.count().subscribe((count) => {
60
+ this.locationsCountValue = count;
61
+ });
53
62
  this.form
54
63
  .get('quantity')
55
64
  ?.valueChanges.pipe(debounceTime(500))
@@ -68,14 +77,18 @@ export class StockReceiptFormComponent extends TechlifyFormComponentInterface {
68
77
  else {
69
78
  // on create for set default quantity and purchase price from last record
70
79
  if (this.product?.last_stock_receipt) {
71
- const { quantity, purchase_price } = this.product.last_stock_receipt;
80
+ const { quantity, purchase_price, location_id } = this.product.last_stock_receipt;
72
81
  this.form.patchValue({
73
82
  quantity,
74
83
  purchase_price,
84
+ location_id,
75
85
  });
76
86
  }
77
87
  }
78
88
  }
89
+ get locationsCount() {
90
+ return this.locationsCountValue;
91
+ }
79
92
  save() {
80
93
  if (this.form.invalid) {
81
94
  this.alertService.addAlert('Please check the form for errors', 'error');
@@ -107,19 +120,21 @@ export class StockReceiptFormComponent extends TechlifyFormComponentInterface {
107
120
  const amount = parseFloat(purchase_price) * parseFloat(quantity) || 0;
108
121
  this.form.get('amount')?.setValue(amount);
109
122
  }
110
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockReceiptFormComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.FormBuilder }, { token: i3.StockReceiptService }, { token: i1.AlertService }, { token: i1.DateUtils }], target: i0.ɵɵFactoryTarget.Component });
111
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StockReceiptFormComponent, selector: "app-stock-receipt-form", inputs: { product: "product", stockReceipt: "stockReceipt" }, outputs: { saved: "saved", cancelled: "cancelled" }, usesInheritance: true, ngImport: i0, template: "<h3 class=\"text-center\">{{ stockReceipt?.id ? 'Edit' : 'Receive' }} Stock for {{ product?.name }}</h3>\n<form [formGroup]=\"form\" class=\"d-flex flex-column gap-1 justify-content-start\" (submit)=\"save()\">\n <app-payee-selector\n label=\"Supplier\"\n formControlName=\"supplier_id\"\n appearance=\"fill\"\n [showAddButton]=\"true\"\n ></app-payee-selector>\n\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input matInput [matDatepicker]=\"datePicker\" formControlName=\"date\" (focus)=\"datePicker.open()\" />\n <mat-datepicker #datePicker></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('date')\">\n {{ getErrorMessage('date') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Quantity</mat-label>\n <input matInput formControlName=\"quantity\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('quantity')\">\n {{ getErrorMessage('quantity') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Purchase Price</mat-label>\n <input matInput formControlName=\"purchase_price\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('purchase_price')\">\n {{ getErrorMessage('purchase_price') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Total Value</mat-label>\n <input matInput formControlName=\"amount\" readonly type=\"number\" min=\"0\" />\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n <button [disabled]=\"isWorking\" (click)=\"cancelled.emit()\" mat-flat-button type=\"button\">Cancel</button>\n </div>\n</form>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PayeeSelectorComponent, selector: "app-payee-selector", inputs: ["label", "appearance", "required", "showAddButton", "multiple"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i8.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], preserveWhitespaces: true });
123
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockReceiptFormComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.FormBuilder }, { token: i3.StockReceiptService }, { token: i1.AlertService }, { token: i1.DateUtils }, { token: i4.LocationService }], target: i0.ɵɵFactoryTarget.Component });
124
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StockReceiptFormComponent, selector: "app-stock-receipt-form", inputs: { product: "product", stockReceipt: "stockReceipt", latestLocationId: "latestLocationId" }, outputs: { saved: "saved", cancelled: "cancelled" }, usesInheritance: true, ngImport: i0, template: "<h3 class=\"text-center\">{{ stockReceipt?.id ? 'Edit' : 'Receive' }} Stock for {{ product?.name }}</h3>\n<form [formGroup]=\"form\" class=\"d-flex flex-column gap-1 justify-content-start\" (submit)=\"save()\">\n <app-payee-selector label=\"Supplier\" formControlName=\"supplier_id\" appearance=\"fill\"\n [showAddButton]=\"true\"></app-payee-selector>\n\n <mat-form-field *ngIf=\"locationsCount > 1\">\n <mat-label>Location</mat-label>\n <app-searchable-selector required formControlName=\"location_id\" apiUrl=\"api/inventory-locations\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input matInput [matDatepicker]=\"datePicker\" formControlName=\"date\" (focus)=\"datePicker.open()\" />\n <mat-datepicker #datePicker></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('date')\">\n {{ getErrorMessage('date') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Quantity</mat-label>\n <input matInput formControlName=\"quantity\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('quantity')\">\n {{ getErrorMessage('quantity') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Purchase Price</mat-label>\n <input matInput formControlName=\"purchase_price\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('purchase_price')\">\n {{ getErrorMessage('purchase_price') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Total Value</mat-label>\n <input matInput formControlName=\"amount\" readonly type=\"number\" min=\"0\" />\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n <button [disabled]=\"isWorking\" (click)=\"cancelled.emit()\" mat-flat-button type=\"button\">Cancel</button>\n </div>\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.PayeeSelectorComponent, selector: "app-payee-selector", inputs: ["label", "appearance", "required", "showAddButton", "multiple"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i8.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i8.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i1.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }], preserveWhitespaces: true });
112
125
  }
113
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockReceiptFormComponent, decorators: [{
114
127
  type: Component,
115
- args: [{ selector: 'app-stock-receipt-form', template: "<h3 class=\"text-center\">{{ stockReceipt?.id ? 'Edit' : 'Receive' }} Stock for {{ product?.name }}</h3>\n<form [formGroup]=\"form\" class=\"d-flex flex-column gap-1 justify-content-start\" (submit)=\"save()\">\n <app-payee-selector\n label=\"Supplier\"\n formControlName=\"supplier_id\"\n appearance=\"fill\"\n [showAddButton]=\"true\"\n ></app-payee-selector>\n\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input matInput [matDatepicker]=\"datePicker\" formControlName=\"date\" (focus)=\"datePicker.open()\" />\n <mat-datepicker #datePicker></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('date')\">\n {{ getErrorMessage('date') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Quantity</mat-label>\n <input matInput formControlName=\"quantity\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('quantity')\">\n {{ getErrorMessage('quantity') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Purchase Price</mat-label>\n <input matInput formControlName=\"purchase_price\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('purchase_price')\">\n {{ getErrorMessage('purchase_price') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Total Value</mat-label>\n <input matInput formControlName=\"amount\" readonly type=\"number\" min=\"0\" />\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n <button [disabled]=\"isWorking\" (click)=\"cancelled.emit()\" mat-flat-button type=\"button\">Cancel</button>\n </div>\n</form>\n" }]
116
- }], ctorParameters: () => [{ type: i1.FormValidatorService }, { type: i2.FormBuilder }, { type: i3.StockReceiptService }, { type: i1.AlertService }, { type: i1.DateUtils }], propDecorators: { product: [{
128
+ args: [{ selector: 'app-stock-receipt-form', template: "<h3 class=\"text-center\">{{ stockReceipt?.id ? 'Edit' : 'Receive' }} Stock for {{ product?.name }}</h3>\n<form [formGroup]=\"form\" class=\"d-flex flex-column gap-1 justify-content-start\" (submit)=\"save()\">\n <app-payee-selector label=\"Supplier\" formControlName=\"supplier_id\" appearance=\"fill\"\n [showAddButton]=\"true\"></app-payee-selector>\n\n <mat-form-field *ngIf=\"locationsCount > 1\">\n <mat-label>Location</mat-label>\n <app-searchable-selector required formControlName=\"location_id\" apiUrl=\"api/inventory-locations\"></app-searchable-selector>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Date</mat-label>\n <input matInput [matDatepicker]=\"datePicker\" formControlName=\"date\" (focus)=\"datePicker.open()\" />\n <mat-datepicker #datePicker></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('date')\">\n {{ getErrorMessage('date') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Quantity</mat-label>\n <input matInput formControlName=\"quantity\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('quantity')\">\n {{ getErrorMessage('quantity') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Purchase Price</mat-label>\n <input matInput formControlName=\"purchase_price\" type=\"number\" min=\"0\" />\n <mat-error *ngIf=\"isFieldValid('purchase_price')\">\n {{ getErrorMessage('purchase_price') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Total Value</mat-label>\n <input matInput formControlName=\"amount\" readonly type=\"number\" min=\"0\" />\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Particulars</mat-label>\n <textarea matInput formControlName=\"particulars\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n <button [disabled]=\"isWorking\" (click)=\"cancelled.emit()\" mat-flat-button type=\"button\">Cancel</button>\n </div>\n</form>" }]
129
+ }], ctorParameters: () => [{ type: i1.FormValidatorService }, { type: i2.FormBuilder }, { type: i3.StockReceiptService }, { type: i1.AlertService }, { type: i1.DateUtils }, { type: i4.LocationService }], propDecorators: { product: [{
117
130
  type: Input
118
131
  }], stockReceipt: [{
119
132
  type: Input
133
+ }], latestLocationId: [{
134
+ type: Input
120
135
  }], saved: [{
121
136
  type: Output
122
137
  }], cancelled: [{
123
138
  type: Output
124
139
  }] } });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stcmVjZWlwdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLXJlY2VpcHRzL3N0b2NrLXJlY2VpcHQtZm9ybS9zdG9jay1yZWNlaXB0LWZvcm0vc3RvY2stcmVjZWlwdC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLXJlY2VpcHRzL3N0b2NrLXJlY2VpcHQtZm9ybS9zdG9jay1yZWNlaXB0LWZvcm0vc3RvY2stcmVjZWlwdC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFpRCw4QkFBOEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xILE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7OztBQU9oRCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsOEJBQThCO0lBVWpFO0lBQ0E7SUFDQTtJQUNBO0lBWkQsT0FBTyxDQUFNO0lBQ2IsWUFBWSxDQUFNO0lBQ2pCLEtBQUssR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNuRCxTQUFTLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFakUsU0FBUyxDQUFXO0lBRXBCLFlBQ0Usb0JBQTBDLEVBQ2xDLFdBQXdCLEVBQ3hCLG1CQUF3QyxFQUN4QyxZQUEwQixFQUMxQixTQUFvQjtRQUU1QixLQUFLLENBQUMs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bEdVLHlCQUF5Qjs0RkFBekIseUJBQXlCLHdNQ1h0QyxxNERBaURBOzs0RkR0Q2EseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHdCQUF3Qjt3TUFLekIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksS0FBSztzQkFBZCxNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIERhdGVVdGlscywgRm9ybVZhbGlkYXRvclNlcnZpY2UsIFRlY2hsaWZ5Rm9ybUNvbXBvbmVudEludGVyZmFjZSB9IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3RvY2tSZWNlaXB0U2VydmljZSB9IGZyb20gJy4uLy4uL3N0b2NrLXJlY2VpcHQuc2VydmljZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXN0b2NrLXJlY2VpcHQtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdG9jay1yZWNlaXB0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdG9jay1yZWNlaXB0LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tSZWNlaXB0Rm9ybUNvbXBvbmVudCBleHRlbmRzIFRlY2hsaWZ5Rm9ybUNvbXBvbmVudEludGVyZmFjZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHByb2R1Y3Q6IGFueTtcbiAgQElucHV0KCkgc3RvY2tSZWNlaXB0OiBhbnk7XG4gIEBPdXRwdXQoKSBzYXZlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbGxlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBpc1dvcmtpbmchOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGZvcm1WYWxpZGF0b3JTZXJ2aWNlOiBGb3JtVmFsaWRhdG9yU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHN0b2NrUmVjZWlwdFNlcnZpY2U6IFN0b2NrUmVjZWlwdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVVdGlsczogRGF0ZVV0aWxzXG4gICkge1xuICAgIHN1cGVyKGZvcm1WYWxpZGF0b3JTZXJ2aWNlKTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSB7XG4gICAgICBkYXRlOiB7XG4gICAgICAgIHJlcXVpcmVkOiAnVGhlIGRhdGUgZmllbGQgaXMgcmVxdWlyZWQuJyxcbiAgICAgIH0sXG4gICAgICBxdWFudGl0eToge1xuICAgICAgICByZXF1aXJlZDogJ1RoZSBxdWFudGl0eSBmaWVsZCBpcyByZXF1aXJlZC4nLFxuICAgICAgfSxcbiAgICAgIHB1cmNoYXNlX3ByaWNlOiB7XG4gICAgICAgIHJlcXVpcmVkOiAnVGhlIHB1cmNoYXNlIHByaWNlIGZpZWxkIGlzIHJlcXVpcmVkLicsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGlkOiBbJyddLFxuICAgICAgc3VwcGxpZXJfaWQ6IFsnJ10sXG4gICAgICBkYXRlOiBbbmV3IERhdGUoKSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBxdWFudGl0eTogWzEsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcHVyY2hhc2VfcHJpY2U6IFswLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGFtb3VudDogWzBdLFxuICAgICAgcGFydGljdWxhcnM6IFsnJ10sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm1cbiAgICAgIC5nZXQoJ3F1YW50aXR5JylcbiAgICAgID8udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlVG90YWxBbW91bnQoKSk7XG4gICAgdGhpcy5mb3JtXG4gICAgICAuZ2V0KCdwdXJjaGFzZV9wcmljZScpXG4gICAgICA/LnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVRvdGFsQW1vdW50KCkpO1xuXG4gICAgaWYgKHRoaXMuc3RvY2tSZWNlaXB0KSB7XG4gICAgICBsZXQgZGF0YTogYW55ID0geyAuLi50aGlzLnN0b2NrUmVjZWlwdCB9O1xuICAgICAgaWYgKGRhdGEuZGF0ZSkge1xuICAgICAgICBkYXRhLmRhdGUgPSBuZXcgRGF0ZShkYXRhLmRhdGUpO1xuICAgICAgfVxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG9uIGNyZWF0ZSBmb3Igc2V0IGRlZmF1bHQgcXVhbnRpdHkgYW5kIHB1cmNoYXNlIHByaWNlIGZyb20gbGFzdCByZWNvcmRcbiAgICAgIGlmICh0aGlzLnByb2R1Y3Q/Lmxhc3Rfc3RvY2tfcmVjZWlwdCkge1xuICAgICAgICBjb25zdCB7IHF1YW50aXR5LCBwdXJjaGFzZV9wcmljZSB9ID0gdGhpcy5wcm9kdWN0Lmxhc3Rfc3RvY2tfcmVjZWlwdDtcbiAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIHF1YW50aXR5LFxuICAgICAgICAgIHB1cmNoYXNlX3ByaWNlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzYXZlKCkge1xuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkQWxlcnQoJ1BsZWFzZSBjaGVjayB0aGUgZm9ybSBmb3IgZXJyb3JzJywgJ2Vycm9yJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRhdGE6IGFueSA9IHtcbiAgICAgIHByb2R1Y3RfaWQ6IHRoaXMucHJvZHVjdD8uaWQsXG4gICAgICAuLi50aGlzLmZvcm0udmFsdWUsXG4gICAgfTtcbiAgICBpZiAoZGF0YS5kYXRlKSB7XG4gICAgICBkYXRhLmRhdGUgPSB0aGlzLmRhdGVVdGlscy5nZXRZWVlZTU1ERFN0cmluZyhkYXRhLmRhdGUpO1xuICAgIH1cbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgbGV0IHJlcXVlc3Q6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuc3RvY2tSZWNlaXB0U2VydmljZS5zdG9yZShkYXRhKTtcbiAgICBpZiAodGhpcy5zdG9ja1JlY2VpcHQ/LmlkKSB7XG4gICAgICByZXF1ZXN0ID0gdGhpcy5zdG9ja1JlY2VpcHRTZXJ2aWNlLnVwZGF0ZShkYXRhKTtcbiAgICB9XG4gICAgcmVxdWVzdC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zYXZlZC5lbWl0KHJlc3BvbnNlPy5pdGVtKTtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkQWxlcnQoJ1N0b2NrIFJlY2VpcHQgU2F2ZWQgU3VjY2Vzc2Z1bGx5IScsICdzdWNjZXNzJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+ICh0aGlzLmlzV29ya2luZyA9IGZhbHNlKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVG90YWxBbW91bnQoKSB7XG4gICAgY29uc3QgeyBwdXJjaGFzZV9wcmljZSwgcXVhbnRpdHkgfSA9IHRoaXMuZm9ybS52YWx1ZTtcbiAgICBjb25zdCBhbW91bnQ6IGFueSA9IHBhcnNlRmxvYXQocHVyY2hhc2VfcHJpY2UpICogcGFyc2VGbG9hdChxdWFudGl0eSkgfHwgMDtcbiAgICB0aGlzLmZvcm0uZ2V0KCdhbW91bnQnKT8uc2V0VmFsdWUoYW1vdW50KTtcbiAgfVxufVxuIiwiPGgzIGNsYXNzPVwidGV4dC1jZW50ZXJcIj57eyBzdG9ja1JlY2VpcHQ/LmlkID8gJ0VkaXQnIDogJ1JlY2VpdmUnIH19IFN0b2NrIGZvciB7eyBwcm9kdWN0Py5uYW1lIH19PC9oMz5cbjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0xIGp1c3RpZnktY29udGVudC1zdGFydFwiIChzdWJtaXQpPVwic2F2ZSgpXCI+XG4gIDxhcHAtcGF5ZWUtc2VsZWN0b3JcbiAgICBsYWJlbD1cIlN1cHBsaWVyXCJcbiAgICBmb3JtQ29udHJvbE5hbWU9XCJzdXBwbGllcl9pZFwiXG4gICAgYXBwZWFyYW5jZT1cImZpbGxcIlxuICAgIFtzaG93QWRkQnV0dG9uXT1cInRydWVcIlxuICA+PC9hcHAtcGF5ZWUtc2VsZWN0b3I+XG5cbiAgPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+RGF0ZTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJkYXRlUGlja2VyXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZVwiIChmb2N1cyk9XCJkYXRlUGlja2VyLm9wZW4oKVwiIC8+XG4gICAgPG1hdC1kYXRlcGlja2VyICNkYXRlUGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgnZGF0ZScpXCI+XG4gICAgICB7eyBnZXRFcnJvck1lc3NhZ2UoJ2RhdGUnKSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDxtYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWxhYmVsPlF1YW50aXR5PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInF1YW50aXR5XCIgdHlwZT1cIm51bWJlclwiIG1pbj1cIjBcIiAvPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ3F1YW50aXR5JylcIj5cbiAgICAgIHt7IGdldEVycm9yTWVzc2FnZSgncXVhbnRpdHknKSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDxtYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWxhYmVsPlB1cmNoYXNlIFByaWNlPC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInB1cmNoYXNlX3ByaWNlXCIgdHlwZT1cIm51bWJlclwiIG1pbj1cIjBcIiAvPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ3B1cmNoYXNlX3ByaWNlJylcIj5cbiAgICAgIHt7IGdldEVycm9yTWVzc2FnZSgncHVyY2hhc2VfcHJpY2UnKSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDxtYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWxhYmVsPlRvdGFsIFZhbHVlPC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImFtb3VudFwiIHJlYWRvbmx5IHR5cGU9XCJudW1iZXJcIiBtaW49XCIwXCIgLz5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1sYWJlbD5QYXJ0aWN1bGFyczwvbWF0LWxhYmVsPlxuICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwYXJ0aWN1bGFyc1wiIHJvd3M9XCIzXCI+PC90ZXh0YXJlYT5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNXb3JraW5nXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiPlNhdmU8L2J1dHRvbj5cbiAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJpc1dvcmtpbmdcIiAoY2xpY2spPVwiY2FuY2VsbGVkLmVtaXQoKVwiIG1hdC1mbGF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCI+Q2FuY2VsPC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stcmVjZWlwdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLXJlY2VpcHRzL3N0b2NrLXJlY2VpcHQtZm9ybS9zdG9jay1yZWNlaXB0LWZvcm0vc3RvY2stcmVjZWlwdC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLXJlY2VpcHRzL3N0b2NrLXJlY2VpcHQtZm9ybS9zdG9jay1yZWNlaXB0LWZvcm0vc3RvY2stcmVjZWlwdC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFpRCw4QkFBOEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xILE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7QUFRaEQsTUFBTSxPQUFPLHlCQUEwQixTQUFRLDhCQUE4QjtJQVlqRTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBZkQsT0FBTyxDQUFNO0lBQ2IsWUFBWSxDQUFNO0lBQ2xCLGdCQUFnQixDQUFNO0lBQ3JCLEtBQUssR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNuRCxTQUFTLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFakUsU0FBUyxDQUFXO0lBQ1osbUJBQW1CLEdBQVcsQ0FBQyxDQUFDO0lBRXhDLFlBQ0Usb0JBQTBDLEVBQ2xDLFdBQXdCLEVB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LENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUN0QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDckQsTUFBTSxNQUFNLEdBQVEsVUFBVSxDQUFDLGNBQWMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUM7d0dBL0dVLHlCQUF5Qjs0RkFBekIseUJBQXlCLDhPQ1p0QyxrbUVBaURPOzs0RkRyQ00seUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHdCQUF3QjtzT0FLekIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBEYXRlVXRpbHMsIEZvcm1WYWxpZGF0b3JTZXJ2aWNlLCBUZWNobGlmeUZvcm1Db21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN0b2NrUmVjZWlwdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zdG9jay1yZWNlaXB0LnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9sb2NhdGlvbi9sb2NhdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXN0b2NrLXJlY2VpcHQtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdG9jay1yZWNlaXB0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdG9jay1yZWNlaXB0LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tSZWNlaXB0Rm9ybUNvbXBvbmVudCBleHRlbmRzIFRlY2hsaWZ5Rm9ybUNvbXBvbmVudEludGVyZmFjZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHByb2R1Y3Q6IGFueTtcbiAgQElucHV0KCkgc3RvY2tSZWNlaXB0OiBhbnk7XG4gIEBJbnB1dCgpIGxhdGVzdExvY2F0aW9uSWQ6IGFueTtcbiAgQE91dHB1dCgpIHNhdmVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2FuY2VsbGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGlzV29ya2luZyE6IGJvb2xlYW47XG4gIHByaXZhdGUgbG9jYXRpb25zQ291bnRWYWx1ZTogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBmb3JtVmFsaWRhdG9yU2VydmljZTogRm9ybVZhbGlkYXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBzdG9ja1JlY2VpcHRTZXJ2aWNlOiBTdG9ja1JlY2VpcHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlVXRpbHM6IERhdGVVdGlscyxcbiAgICBwcml2YXRlIGxvY2F0aW9uU2VydmljZTogTG9jYXRpb25TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGZvcm1WYWxpZGF0b3JTZXJ2aWNlKTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSB7XG4gICAgICBkYXRlOiB7XG4gICAgICAgIHJlcXVpcmVkOiAnVGhlIGRhdGUgZmllbGQgaXMgcmVxdWlyZWQuJyxcbiAgICAgIH0sXG4gICAgICBxdWFudGl0eToge1xuICAgICAgICByZXF1aXJlZDogJ1RoZSBxdWFudGl0eSBmaWVsZCBpcyByZXF1aXJlZC4nLFxuICAgICAgfSxcbiAgICAgIHB1cmNoYXNlX3ByaWNlOiB7XG4gICAgICAgIHJlcXVpcmVkOiAnVGhlIHB1cmNoYXNlIHByaWNlIGZpZWxkIGlzIHJlcXVpcmVkLicsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGlkOiBbJyddLFxuICAgICAgc3VwcGxpZXJfaWQ6IFsnJ10sXG4gICAgICBsb2NhdGlvbl9pZDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGRhdGU6IFtuZXcgRGF0ZSgpLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHF1YW50aXR5OiBbMSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBwdXJjaGFzZV9wcmljZTogWzAsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgYW1vdW50OiBbMF0sXG4gICAgICBwYXJ0aWN1bGFyczogWycnXSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9jYXRpb25TZXJ2aWNlLmNvdW50KCkuc3Vic2NyaWJlKChjb3VudDogbnVtYmVyKSA9PiB7XG4gICAgICB0aGlzLmxvY2F0aW9uc0NvdW50VmFsdWUgPSBjb3VudDtcbiAgICB9KTtcblxuICAgIHRoaXMuZm9ybVxuICAgICAgLmdldCgncXVhbnRpdHknKVxuICAgICAgPy52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoNTAwKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVUb3RhbEFtb3VudCgpKTtcbiAgICB0aGlzLmZvcm1cbiAgICAgIC5nZXQoJ3B1cmNoYXNlX3ByaWNlJylcbiAgICAgID8udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlVG90YWxBbW91bnQoKSk7XG5cbiAgICBpZiAodGhpcy5zdG9ja1JlY2VpcHQpIHtcbiAgICAgIGxldCBkYXRhOiBhbnkgPSB7IC4uLnRoaXMuc3RvY2tSZWNlaXB0IH07XG4gICAgICBpZiAoZGF0YS5kYXRlKSB7XG4gICAgICAgIGRhdGEuZGF0ZSA9IG5ldyBEYXRlKGRhdGEuZGF0ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShkYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gb24gY3JlYXRlIGZvciBzZXQgZGVmYXVsdCBxdWFudGl0eSBhbmQgcHVyY2hhc2UgcHJpY2UgZnJvbSBsYXN0IHJlY29yZFxuICAgICAgaWYgKHRoaXMucHJvZHVjdD8ubGFzdF9zdG9ja19yZWNlaXB0KSB7XG4gICAgICAgIGNvbnN0IHsgcXVhbnRpdHksIHB1cmNoYXNlX3ByaWNlLCBsb2NhdGlvbl9pZCB9ID0gdGhpcy5wcm9kdWN0Lmxhc3Rfc3RvY2tfcmVjZWlwdDtcbiAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIHF1YW50aXR5LFxuICAgICAgICAgIHB1cmNoYXNlX3ByaWNlLFxuICAgICAgICAgIGxvY2F0aW9uX2lkLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgbG9jYXRpb25zQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5sb2NhdGlvbnNDb3VudFZhbHVlO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdQbGVhc2UgY2hlY2sgdGhlIGZvcm0gZm9yIGVycm9ycycsICdlcnJvcicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkYXRhOiBhbnkgPSB7XG4gICAgICBwcm9kdWN0X2lkOiB0aGlzLnByb2R1Y3Q/LmlkLFxuICAgICAgLi4udGhpcy5mb3JtLnZhbHVlLFxuICAgIH07XG4gICAgaWYgKGRhdGEuZGF0ZSkge1xuICAgICAgZGF0YS5kYXRlID0gdGhpcy5kYXRlVXRpbHMuZ2V0WVlZWU1NRERTdHJpbmcoZGF0YS5kYXRlKTtcbiAgICB9XG4gICAgdGhpcy5pc1dvcmtpbmcgPSB0cnVlO1xuICAgIGxldCByZXF1ZXN0OiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLnN0b2NrUmVjZWlwdFNlcnZpY2Uuc3RvcmUoZGF0YSk7XG4gICAgaWYgKHRoaXMuc3RvY2tSZWNlaXB0Py5pZCkge1xuICAgICAgcmVxdWVzdCA9IHRoaXMuc3RvY2tSZWNlaXB0U2VydmljZS51cGRhdGUoZGF0YSk7XG4gICAgfVxuICAgIHJlcXVlc3Quc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNXb3JraW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2F2ZWQuZW1pdChyZXNwb25zZT8uaXRlbSk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdTdG9jayBSZWNlaXB0IFNhdmVkIFN1Y2Nlc3NmdWxseSEnLCAnc3VjY2VzcycpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5pc1dvcmtpbmcgPSBmYWxzZSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRvdGFsQW1vdW50KCkge1xuICAgIGNvbnN0IHsgcHVyY2hhc2VfcHJpY2UsIHF1YW50aXR5IH0gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAgY29uc3QgYW1vdW50OiBhbnkgPSBwYXJzZUZsb2F0KHB1cmNoYXNlX3ByaWNlKSAqIHBhcnNlRmxvYXQocXVhbnRpdHkpIHx8IDA7XG4gICAgdGhpcy5mb3JtLmdldCgnYW1vdW50Jyk/LnNldFZhbHVlKGFtb3VudCk7XG4gIH1cbn1cbiIsIjxoMyBjbGFzcz1cInRleHQtY2VudGVyXCI+e3sgc3RvY2tSZWNlaXB0Py5pZCA/ICdFZGl0JyA6ICdSZWNlaXZlJyB9fSBTdG9jayBmb3Ige3sgcHJvZHVjdD8ubmFtZSB9fTwvaDM+XG48Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMSBqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcIiAoc3VibWl0KT1cInNhdmUoKVwiPlxuICA8YXBwLXBheWVlLXNlbGVjdG9yIGxhYmVsPVwiU3VwcGxpZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJzdXBwbGllcl9pZFwiIGFwcGVhcmFuY2U9XCJmaWxsXCJcbiAgICBbc2hvd0FkZEJ1dHRvbl09XCJ0cnVlXCI+PC9hcHAtcGF5ZWUtc2VsZWN0b3I+XG5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwibG9jYXRpb25zQ291bnQgPiAxXCI+XG4gICAgPG1hdC1sYWJlbD5Mb2NhdGlvbjwvbWF0LWxhYmVsPlxuICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciByZXF1aXJlZCBmb3JtQ29udHJvbE5hbWU9XCJsb2NhdGlvbl9pZFwiIGFwaVVybD1cImFwaS9pbnZlbnRvcnktbG9jYXRpb25zXCI+PC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1sYWJlbD5EYXRlPC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cImRhdGVQaWNrZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJkYXRlXCIgKGZvY3VzKT1cImRhdGVQaWNrZXIub3BlbigpXCIgLz5cbiAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGVQaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdkYXRlJylcIj5cbiAgICAgIHt7IGdldEVycm9yTWVzc2FnZSgnZGF0ZScpIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+UXVhbnRpdHk8L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicXVhbnRpdHlcIiB0eXBlPVwibnVtYmVyXCIgbWluPVwiMFwiIC8+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgncXVhbnRpdHknKVwiPlxuICAgICAge3sgZ2V0RXJyb3JNZXNzYWdlKCdxdWFudGl0eScpIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+UHVyY2hhc2UgUHJpY2U8L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicHVyY2hhc2VfcHJpY2VcIiB0eXBlPVwibnVtYmVyXCIgbWluPVwiMFwiIC8+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgncHVyY2hhc2VfcHJpY2UnKVwiPlxuICAgICAge3sgZ2V0RXJyb3JNZXNzYWdlKCdwdXJjaGFzZV9wcmljZScpIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+VG90YWwgVmFsdWU8L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiYW1vdW50XCIgcmVhZG9ubHkgdHlwZT1cIm51bWJlclwiIG1pbj1cIjBcIiAvPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDxtYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWxhYmVsPlBhcnRpY3VsYXJzPC9tYXQtbGFiZWw+XG4gICAgPHRleHRhcmVhIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInBhcnRpY3VsYXJzXCIgcm93cz1cIjNcIj48L3RleHRhcmVhPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJpc1dvcmtpbmdcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwic3VibWl0XCI+U2F2ZTwvYnV0dG9uPlxuICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImlzV29ya2luZ1wiIChjbGljayk9XCJjYW5jZWxsZWQuZW1pdCgpXCIgbWF0LWZsYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIj5DYW5jZWw8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+Il19
@@ -7,6 +7,7 @@ export class StockReceiptFormButtonComponent {
7
7
  matDialog;
8
8
  product;
9
9
  stockReceipt;
10
+ latestLocationId;
10
11
  icon;
11
12
  saved = new EventEmitter();
12
13
  matDialogRef;
@@ -21,18 +22,20 @@ export class StockReceiptFormButtonComponent {
21
22
  this.saved.emit(item);
22
23
  }
23
24
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockReceiptFormButtonComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
24
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StockReceiptFormButtonComponent, selector: "app-stock-receipt-form-button", inputs: { product: "product", stockReceipt: "stockReceipt", icon: "icon" }, outputs: { saved: "saved" }, ngImport: i0, template: "<span\n class=\"material-symbols-outlined cursor-pointer\"\n [class.text-primary]=\"icon\"\n matTooltip=\"Stock Receipt\"\n (click)=\"showStockReceiptForm(stockReceiptFormTemplate)\"\n>\n {{ stockReceipt ? 'edit' : icon ?? 'download' }}\n</span>\n\n<ng-template #stockReceiptFormTemplate>\n <app-stock-receipt-form\n mat-dialog-content\n [product]=\"product\"\n [stockReceipt]=\"stockReceipt\"\n (cancelled)=\"matDialogRef.close()\"\n (saved)=\"onStockReceiptSaved($event)\"\n ></app-stock-receipt-form>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i3.StockReceiptFormComponent, selector: "app-stock-receipt-form", inputs: ["product", "stockReceipt"], outputs: ["saved", "cancelled"] }], preserveWhitespaces: true });
25
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StockReceiptFormButtonComponent, selector: "app-stock-receipt-form-button", inputs: { product: "product", stockReceipt: "stockReceipt", latestLocationId: "latestLocationId", icon: "icon" }, outputs: { saved: "saved" }, ngImport: i0, template: "<span\n class=\"material-symbols-outlined cursor-pointer\"\n [class.text-primary]=\"icon\"\n matTooltip=\"Stock Receipt\"\n (click)=\"showStockReceiptForm(stockReceiptFormTemplate)\"\n>\n {{ stockReceipt ? 'edit' : icon ?? 'download' }}\n</span>\n\n<ng-template #stockReceiptFormTemplate>\n <app-stock-receipt-form\n mat-dialog-content\n [latestLocationId]=\"latestLocationId\"\n [product]=\"product\"\n [stockReceipt]=\"stockReceipt\"\n (cancelled)=\"matDialogRef.close()\"\n (saved)=\"onStockReceiptSaved($event)\"\n ></app-stock-receipt-form>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i3.StockReceiptFormComponent, selector: "app-stock-receipt-form", inputs: ["product", "stockReceipt", "latestLocationId"], outputs: ["saved", "cancelled"] }], preserveWhitespaces: true });
25
26
  }
26
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StockReceiptFormButtonComponent, decorators: [{
27
28
  type: Component,
28
- args: [{ selector: 'app-stock-receipt-form-button', template: "<span\n class=\"material-symbols-outlined cursor-pointer\"\n [class.text-primary]=\"icon\"\n matTooltip=\"Stock Receipt\"\n (click)=\"showStockReceiptForm(stockReceiptFormTemplate)\"\n>\n {{ stockReceipt ? 'edit' : icon ?? 'download' }}\n</span>\n\n<ng-template #stockReceiptFormTemplate>\n <app-stock-receipt-form\n mat-dialog-content\n [product]=\"product\"\n [stockReceipt]=\"stockReceipt\"\n (cancelled)=\"matDialogRef.close()\"\n (saved)=\"onStockReceiptSaved($event)\"\n ></app-stock-receipt-form>\n</ng-template>\n" }]
29
+ args: [{ selector: 'app-stock-receipt-form-button', template: "<span\n class=\"material-symbols-outlined cursor-pointer\"\n [class.text-primary]=\"icon\"\n matTooltip=\"Stock Receipt\"\n (click)=\"showStockReceiptForm(stockReceiptFormTemplate)\"\n>\n {{ stockReceipt ? 'edit' : icon ?? 'download' }}\n</span>\n\n<ng-template #stockReceiptFormTemplate>\n <app-stock-receipt-form\n mat-dialog-content\n [latestLocationId]=\"latestLocationId\"\n [product]=\"product\"\n [stockReceipt]=\"stockReceipt\"\n (cancelled)=\"matDialogRef.close()\"\n (saved)=\"onStockReceiptSaved($event)\"\n ></app-stock-receipt-form>\n</ng-template>\n" }]
29
30
  }], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { product: [{
30
31
  type: Input
31
32
  }], stockReceipt: [{
32
33
  type: Input
34
+ }], latestLocationId: [{
35
+ type: Input
33
36
  }], icon: [{
34
37
  type: Input
35
38
  }], saved: [{
36
39
  type: Output
37
40
  }] } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stcmVjZWlwdC1mb3JtLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay1yZWNlaXB0cy9zdG9jay1yZWNlaXB0LWZvcm0vc3RvY2stcmVjZWlwdC1mb3JtLWJ1dHRvbi9zdG9jay1yZWNlaXB0LWZvcm0tYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLXJlY2VpcHRzL3N0b2NrLXJlY2VpcHQtZm9ybS9zdG9jay1yZWNlaXB0LWZvcm0tYnV0dG9uL3N0b2NrLXJlY2VpcHQtZm9ybS1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRcEYsTUFBTSxPQUFPLCtCQUErQjtJQVF0QjtJQVBYLE9BQU8sQ0FBTTtJQUNiLFlBQVksQ0FBTTtJQUNsQixJQUFJLENBQWlCO0lBQ3BCLEtBQUssR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUU3RCxZQUFZLENBQXFCO0lBRWpDLFlBQW9CLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7SUFBRyxDQUFDO0lBRTVDLG9CQUFvQixDQUFDLFdBQTZCO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO3dHQWpCVSwrQkFBK0I7NEZBQS9CLCtCQUErQiw4S0NSNUMsaWlCQWtCQTs7NEZEVmEsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLCtCQUErQjs4RUFLaEMsT0FBTztzQkFBZixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtc3RvY2stcmVjZWlwdC1mb3JtLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdG9jay1yZWNlaXB0LWZvcm0tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3RvY2stcmVjZWlwdC1mb3JtLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTdG9ja1JlY2VpcHRGb3JtQnV0dG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHJvZHVjdDogYW55O1xuICBASW5wdXQoKSBzdG9ja1JlY2VpcHQ6IGFueTtcbiAgQElucHV0KCkgaWNvbiE6IHN0cmluZyB8IG51bGw7XG4gIEBPdXRwdXQoKSBzYXZlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBtYXREaWFsb2dSZWYhOiBNYXREaWFsb2dSZWY8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1hdERpYWxvZzogTWF0RGlhbG9nKSB7fVxuXG4gIHNob3dTdG9ja1JlY2VpcHRGb3JtKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5tYXREaWFsb2dSZWYgPSB0aGlzLm1hdERpYWxvZy5vcGVuKHRlbXBsYXRlUmVmLCB7IHdpZHRoOiAnNTAwcHgnIH0pO1xuICB9XG5cbiAgb25TdG9ja1JlY2VpcHRTYXZlZChpdGVtOiBhbnkpIHtcbiAgICB0aGlzLm1hdERpYWxvZ1JlZi5jbG9zZSgpO1xuICAgIHRoaXMuc2F2ZWQuZW1pdChpdGVtKTtcbiAgfVxufVxuIiwiPHNwYW5cbiAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGN1cnNvci1wb2ludGVyXCJcbiAgW2NsYXNzLnRleHQtcHJpbWFyeV09XCJpY29uXCJcbiAgbWF0VG9vbHRpcD1cIlN0b2NrIFJlY2VpcHRcIlxuICAoY2xpY2spPVwic2hvd1N0b2NrUmVjZWlwdEZvcm0oc3RvY2tSZWNlaXB0Rm9ybVRlbXBsYXRlKVwiXG4+XG4gIHt7IHN0b2NrUmVjZWlwdCA/ICdlZGl0JyA6IGljb24gPz8gJ2Rvd25sb2FkJyB9fVxuPC9zcGFuPlxuXG48bmctdGVtcGxhdGUgI3N0b2NrUmVjZWlwdEZvcm1UZW1wbGF0ZT5cbiAgPGFwcC1zdG9jay1yZWNlaXB0LWZvcm1cbiAgICBtYXQtZGlhbG9nLWNvbnRlbnRcbiAgICBbcHJvZHVjdF09XCJwcm9kdWN0XCJcbiAgICBbc3RvY2tSZWNlaXB0XT1cInN0b2NrUmVjZWlwdFwiXG4gICAgKGNhbmNlbGxlZCk9XCJtYXREaWFsb2dSZWYuY2xvc2UoKVwiXG4gICAgKHNhdmVkKT1cIm9uU3RvY2tSZWNlaXB0U2F2ZWQoJGV2ZW50KVwiXG4gID48L2FwcC1zdG9jay1yZWNlaXB0LWZvcm0+XG48L25nLXRlbXBsYXRlPlxuIl19
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stcmVjZWlwdC1mb3JtLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdG9jay1yZWNlaXB0cy9zdG9jay1yZWNlaXB0LWZvcm0vc3RvY2stcmVjZWlwdC1mb3JtLWJ1dHRvbi9zdG9jay1yZWNlaXB0LWZvcm0tYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N0b2NrLXJlY2VpcHRzL3N0b2NrLXJlY2VpcHQtZm9ybS9zdG9jay1yZWNlaXB0LWZvcm0tYnV0dG9uL3N0b2NrLXJlY2VpcHQtZm9ybS1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRcEYsTUFBTSxPQUFPLCtCQUErQjtJQVN0QjtJQVJYLE9BQU8sQ0FBTTtJQUNiLFlBQVksQ0FBTTtJQUNsQixnQkFBZ0IsQ0FBTTtJQUN0QixJQUFJLENBQWlCO0lBQ3BCLEtBQUssR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUU3RCxZQUFZLENBQXFCO0lBRWpDLFlBQW9CLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7SUFBRyxDQUFDO0lBRTVDLG9CQUFvQixDQUFDLFdBQTZCO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO3dHQWxCVSwrQkFBK0I7NEZBQS9CLCtCQUErQixvTkNSNUMsOGtCQW1CQTs7NEZEWGEsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLCtCQUErQjs4RUFLaEMsT0FBTztzQkFBZixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXN0b2NrLXJlY2VpcHQtZm9ybS1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RvY2stcmVjZWlwdC1mb3JtLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0b2NrLXJlY2VpcHQtZm9ybS1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU3RvY2tSZWNlaXB0Rm9ybUJ1dHRvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHByb2R1Y3Q6IGFueTtcbiAgQElucHV0KCkgc3RvY2tSZWNlaXB0OiBhbnk7XG4gIEBJbnB1dCgpIGxhdGVzdExvY2F0aW9uSWQ6IGFueTtcbiAgQElucHV0KCkgaWNvbiE6IHN0cmluZyB8IG51bGw7XG4gIEBPdXRwdXQoKSBzYXZlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBtYXREaWFsb2dSZWYhOiBNYXREaWFsb2dSZWY8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1hdERpYWxvZzogTWF0RGlhbG9nKSB7fVxuXG4gIHNob3dTdG9ja1JlY2VpcHRGb3JtKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5tYXREaWFsb2dSZWYgPSB0aGlzLm1hdERpYWxvZy5vcGVuKHRlbXBsYXRlUmVmLCB7IHdpZHRoOiAnNTAwcHgnIH0pO1xuICB9XG5cbiAgb25TdG9ja1JlY2VpcHRTYXZlZChpdGVtOiBhbnkpIHtcbiAgICB0aGlzLm1hdERpYWxvZ1JlZi5jbG9zZSgpO1xuICAgIHRoaXMuc2F2ZWQuZW1pdChpdGVtKTtcbiAgfVxufVxuIiwiPHNwYW5cbiAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGN1cnNvci1wb2ludGVyXCJcbiAgW2NsYXNzLnRleHQtcHJpbWFyeV09XCJpY29uXCJcbiAgbWF0VG9vbHRpcD1cIlN0b2NrIFJlY2VpcHRcIlxuICAoY2xpY2spPVwic2hvd1N0b2NrUmVjZWlwdEZvcm0oc3RvY2tSZWNlaXB0Rm9ybVRlbXBsYXRlKVwiXG4+XG4gIHt7IHN0b2NrUmVjZWlwdCA/ICdlZGl0JyA6IGljb24gPz8gJ2Rvd25sb2FkJyB9fVxuPC9zcGFuPlxuXG48bmctdGVtcGxhdGUgI3N0b2NrUmVjZWlwdEZvcm1UZW1wbGF0ZT5cbiAgPGFwcC1zdG9jay1yZWNlaXB0LWZvcm1cbiAgICBtYXQtZGlhbG9nLWNvbnRlbnRcbiAgICBbbGF0ZXN0TG9jYXRpb25JZF09XCJsYXRlc3RMb2NhdGlvbklkXCJcbiAgICBbcHJvZHVjdF09XCJwcm9kdWN0XCJcbiAgICBbc3RvY2tSZWNlaXB0XT1cInN0b2NrUmVjZWlwdFwiXG4gICAgKGNhbmNlbGxlZCk9XCJtYXREaWFsb2dSZWYuY2xvc2UoKVwiXG4gICAgKHNhdmVkKT1cIm9uU3RvY2tSZWNlaXB0U2F2ZWQoJGV2ZW50KVwiXG4gID48L2FwcC1zdG9jay1yZWNlaXB0LWZvcm0+XG48L25nLXRlbXBsYXRlPlxuIl19