@dealpos-npm/ng-dealpos-library 4.4.9 → 4.4.11

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.
@@ -76,7 +76,6 @@ export class UppyComponent {
76
76
  this.showSubtitle = false;
77
77
  console.log(_, uppyFiles, file);
78
78
  this.fileUploaded.emit(file);
79
- this.onResetUppy();
80
79
  this.file.set(uppyFiles[0].data);
81
80
  Papa.parse(file, {
82
81
  skipEmptyLines: 'greedy',
@@ -178,4 +177,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
178
177
  }], multipleFilesUploaded: [{
179
178
  type: Output
180
179
  }] } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBweS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZWFscG9zLW5wbS9uZy1kZWFscG9zLWxpYnJhcnkvY29tcG9uZW50cy91cHB5LWZpbGUtdXBsb2FkL3NyYy91cHB5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RlYWxwb3MtbnBtL25nLWRlYWxwb3MtbGlicmFyeS9jb21wb25lbnRzL3VwcHktZmlsZS11cGxvYWQvc3JjL3VwcHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsQyxPQUFPLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sb0NBQW9DLENBQUM7QUFLNUMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDOzs7O0FBUzdCLE1BQU0sT0FBTyxhQUFhO2FBK0JULFVBQUssR0FBRztRQUNyQixPQUFPO1FBQ1AsSUFBSTtRQUNKLElBQUk7UUFDSixJQUFJO1FBQ0osSUFBSTtRQUNKLElBQUk7UUFDSixJQUFJO1FBQ0osSUFBSTtRQUNKLElBQUk7S0FDSSxBQVZVLENBVVQ7YUFDSSxh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QUMsS0FBYSxFQUFFLGFBQWEsR0FBRyxDQUFDO1FBQzdDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN6RSxNQUFNLElBQUksR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNwRSxDQUFDOzhHQXhLVSxhQUFhO2tHQUFiLGFBQWEsZ25DQy9CMUIsZzlCQWlCTSw2V0RVTSwwQkFBMEIseUlBQUUsWUFBWTs7MkZBSXZDLGFBQWE7a0JBUHpCLFNBQVM7K0JBQ0UsVUFBVSxjQUNSLElBQUksV0FDUCxDQUFDLDBCQUEwQixFQUFFLFlBQVksQ0FBQzt3REFLMUMsU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVOLFVBQVU7c0JBRFQsS0FBSztnQkFTSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgZWZmZWN0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBpbmplY3QsXHJcbiAgaW5wdXQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIHNpZ25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udmVydENzdlNlcnZpY2UgfSBmcm9tICdAZGVhbHBvcy1ucG0vbmctZGVhbHBvcy1saWJyYXJ5L3NlcnZpY2VzL2Nzdi1wYXJzZXInO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJ0BkZWFscG9zLW5wbS9uZy1kZWFscG9zLWxpYnJhcnkvc2VydmljZXMvaHR0cCc7XHJcbmltcG9ydCB7IFVwcHlBbmd1bGFyRGFzaGJvYXJkTW9kdWxlIH0gZnJvbSAnQHVwcHkvYW5ndWxhcic7XHJcbmltcG9ydCBDb21wcmVzc29yIGZyb20gJ0B1cHB5L2NvbXByZXNzb3InO1xyXG5pbXBvcnQgeyBVcHB5IH0gZnJvbSAnQHVwcHkvY29yZSc7XHJcbmltcG9ydCAnQHVwcHkvY29yZS9kaXN0L3N0eWxlLm1pbi5jc3MnO1xyXG5pbXBvcnQgJ0B1cHB5L2Rhc2hib2FyZC9kaXN0L3N0eWxlLm1pbi5jc3MnO1xyXG5pbXBvcnQgVHJhbnNsb2FkaXQsIHtcclxuICBDT01QQU5JT05fQUxMT1dFRF9IT1NUUyxcclxuICBDT01QQU5JT05fVVJMLFxyXG59IGZyb20gJ0B1cHB5L3RyYW5zbG9hZGl0JztcclxuaW1wb3J0IFBhcGEgZnJvbSAncGFwYXBhcnNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnUE9TLXVwcHknLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1VwcHlBbmd1bGFyRGFzaGJvYXJkTW9kdWxlLCBDb21tb25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91cHB5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdXBweS5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVcHB5Q29tcG9uZW50IHtcclxuICBASW5wdXQoKSBzYW1wbGVVcmw6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHN1YnRpdGxlOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKVxyXG4gIHNob3dTYW1wbGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIEZvciBtYW51YWxseSByZXNldHRpbmcgVXBweSBhZnRlciBhIHN1Y2Nlc3NmdWwgdXBsb2FkXHJcbiAgICovXHJcbiAgY2xlYXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgc2hvd1N1YnRpdGxlOiBib29sZWFuID0gdHJ1ZTtcclxuICB1cHB5Q29yZUNvbmZpZ3VyYXRpb24gPSBpbnB1dDxhbnk+KCk7XHJcbiAgZGFzaGJvYXJkUHJvcHNDb25maWd1cmF0aW9uID0gaW5wdXQ8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBmaWxlVXBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEJsb2IgfCBGaWxlPigpO1xyXG4gIEBPdXRwdXQoKSBmaWxlVXBsb2FkQ29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPEJsb2IgfCBGaWxlPigpO1xyXG4gIEBPdXRwdXQoKSBmaWxlUmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBvblBhcnNlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBtdWx0aXBsZUZpbGVzVXBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFxyXG4gICAgeyBmaWxlOiBCbG9iIHwgRmlsZTsgaWQ6IHN0cmluZyB9W11cclxuICA+KCk7XHJcblxyXG4gIGh0dHAgPSBpbmplY3QoSHR0cFNlcnZpY2UpO1xyXG4gIGNzdlBhcnNlciA9IGluamVjdChDb252ZXJ0Q3N2U2VydmljZSk7XHJcblxyXG4gIHJvd1N1bW1hcnkgPSBzaWduYWw8eyByb3dDb3VudDogbnVtYmVyOyByb3dFbXB0eTogbnVtYmVyIH0+KHtcclxuICAgIHJvd0NvdW50OiAwLFxyXG4gICAgcm93RW1wdHk6IDAsXHJcbiAgfSk7XHJcblxyXG4gIGZpbGUgPSBzaWduYWw8RmlsZSB8IG51bGw+KG51bGwpO1xyXG4gIG11bHRpcGxlRmlsZXMgPSBzaWduYWw8eyBmaWxlOiBCbG9iIHwgRmlsZTsgaWQ6IHN0cmluZyB9W10+KFtdKTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgc2l6ZXMgPSBbXHJcbiAgICAnQnl0ZXMnLFxyXG4gICAgJ0tCJyxcclxuICAgICdNQicsXHJcbiAgICAnR0InLFxyXG4gICAgJ1RCJyxcclxuICAgICdQQicsXHJcbiAgICAnRUInLFxyXG4gICAgJ1pCJyxcclxuICAgICdZQicsXHJcbiAgXSBhcyBjb25zdDtcclxuICBwcml2YXRlIHN0YXRpYyBraWxvYnl0ZSA9IDEwMjQ7XHJcblxyXG4gIHVwcHk6IFVwcHkgPSBuZXcgVXBweSh7XHJcbiAgICBkZWJ1ZzogdHJ1ZSxcclxuICAgIGF1dG9Qcm9jZWVkOiB0cnVlLFxyXG4gICAgYWxsb3dNdWx0aXBsZVVwbG9hZEJhdGNoZXM6IGZhbHNlLFxyXG4gICAgcmVzdHJpY3Rpb25zOiB7XHJcbiAgICAgIGFsbG93ZWRGaWxlVHlwZXM6IFsnLmNzdiddLFxyXG4gICAgICBtYXhUb3RhbEZpbGVTaXplOiAxMDAwMDAwLFxyXG4gICAgfSxcclxuICB9KS51c2UoQ29tcHJlc3Nvciwge1xyXG4gICAgbWltZVR5cGU6ICdpbWFnZS9qcGVnJyxcclxuICAgIGNvbnZlcnRTaXplOiBJbmZpbml0eSxcclxuICAgIGNvbnZlcnRUeXBlczogWydpbWFnZS9wbmcnXSxcclxuICB9KTtcclxuXHJcbiAgZGFzaGJvYXJkUHJvcHMgPSB7XHJcbiAgICBoaWRlVXBsb2FkQnV0dG9uOiB0cnVlLFxyXG4gICAgaGVpZ2h0OiAzNTAsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBlZmZlY3QoKCkgPT4gdGhpcy51cHB5LnNldE9wdGlvbnMoeyAuLi50aGlzLnVwcHlDb3JlQ29uZmlndXJhdGlvbigpIH0pKTtcclxuICAgIGVmZmVjdChcclxuICAgICAgKCkgPT5cclxuICAgICAgICAodGhpcy5kYXNoYm9hcmRQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLnRoaXMuZGFzaGJvYXJkUHJvcHMsXHJcbiAgICAgICAgICAuLi50aGlzLmRhc2hib2FyZFByb3BzQ29uZmlndXJhdGlvbigpLFxyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMudXBweS5vbigndXBsb2FkJywgKF8sIHVwcHlGaWxlcykgPT4ge1xyXG4gICAgICBjb25zdCBmaWxlID0gdXBweUZpbGVzWzBdPy5kYXRhIGFzIEZpbGU7XHJcbiAgICAgIHRoaXMuc2hvd1NhbXBsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dTdWJ0aXRsZSA9IGZhbHNlO1xyXG5cclxuICAgICAgY29uc29sZS5sb2coXywgdXBweUZpbGVzLCBmaWxlKTtcclxuICAgICAgdGhpcy5maWxlVXBsb2FkZWQuZW1pdChmaWxlKTtcclxuICAgICAgdGhpcy5vblJlc2V0VXBweSgpO1xyXG4gICAgICB0aGlzLmZpbGUuc2V0KHVwcHlGaWxlc1swXS5kYXRhIGFzIEZpbGUpO1xyXG5cclxuICAgICAgUGFwYS5wYXJzZShmaWxlLCB7XHJcbiAgICAgICAgc2tpcEVtcHR5TGluZXM6ICdncmVlZHknLFxyXG4gICAgICAgIGhlYWRlcjogdHJ1ZSxcclxuICAgICAgICBiZWZvcmVGaXJzdENodW5rOiAoX2NodW5rKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB3aXRoT3V0SGVhZGVyID0gX2NodW5rLnNwbGl0KC9cXHI/XFxuLykuc2xpY2UoMSk7XHJcbiAgICAgICAgICBpZiAod2l0aE91dEhlYWRlclt3aXRoT3V0SGVhZGVyLmxlbmd0aCAtIDFdID09PSAnJylcclxuICAgICAgICAgICAgd2l0aE91dEhlYWRlci5wb3AoKTtcclxuICAgICAgICAgIHRoaXMucm93U3VtbWFyeS51cGRhdGUoKHJlcykgPT4gKHtcclxuICAgICAgICAgICAgLi4ucmVzLFxyXG4gICAgICAgICAgICByb3dDb3VudDogd2l0aE91dEhlYWRlci5sZW5ndGgsXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICB3aXRoT3V0SGVhZGVyLmZvckVhY2goKHJvdykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBlbXB0eVJvdyA9IHJvdy5zcGxpdCgnLCcpLmV2ZXJ5KChyb3cpID0+IHJvdyA9PT0gJycpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGVtcHR5Um93KVxyXG4gICAgICAgICAgICAgIHRoaXMucm93U3VtbWFyeS51cGRhdGUoKHJlcykgPT4gKHtcclxuICAgICAgICAgICAgICAgIC4uLnJlcyxcclxuICAgICAgICAgICAgICAgIHJvd0VtcHR5OiByZXMucm93RW1wdHkgKyAxLFxyXG4gICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIF9jaHVuazsgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBjaHVuayB0byBjb250aW51ZSBwYXJzaW5nXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcihlcnJvciwgZmlsZSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0VSUk9SJywgZXJyb3IsIGZpbGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6IChyZXN1bHRzLCBfZmlsZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vblBhcnNlci5lbWl0KHJlc3VsdHMuZGF0YSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnVwcHkub24oJ2NvbXBsZXRlJywgKHVwcHlGaWxlcykgPT4ge1xyXG4gICAgICBjb25zdCBtdWx0aXBsZUZpbGVzID1cclxuICAgICAgICB1cHB5RmlsZXMuc3VjY2Vzc2Z1bD8ubWFwKChkKSA9PiAoeyBmaWxlOiBkLmRhdGEsIGlkOiBkLmlkIH0pKSA/PyBbXTtcclxuICAgICAgY29uc3QgZmlsZSA9IHVwcHlGaWxlcy5zdWNjZXNzZnVsIVswXT8uZGF0YTtcclxuICAgICAgdGhpcy5zaG93U2FtcGxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd1N1YnRpdGxlID0gZmFsc2U7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhmaWxlKTtcclxuICAgICAgdGhpcy5maWxlVXBsb2FkQ29tcGxldGUuZW1pdChmaWxlKTtcclxuICAgICAgdGhpcy5tdWx0aXBsZUZpbGVzVXBsb2FkZWQuZW1pdChtdWx0aXBsZUZpbGVzKTtcclxuICAgICAgdGhpcy5vblJlc2V0VXBweSgpO1xyXG4gICAgICB0aGlzLmZpbGUuc2V0KGZpbGUgYXMgRmlsZSk7XHJcbiAgICAgIHRoaXMubXVsdGlwbGVGaWxlcy5zZXQobXVsdGlwbGVGaWxlcyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnVwcHkub24oJ3RyYW5zbG9hZGl0OnVwbG9hZCcsICh4LCB5KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKHgsIHkpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnVwcHkub24oJ3RyYW5zbG9hZGl0OnJlc3VsdCcsIChzdGVwTmFtZSwgcmVzdWx0KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKHN0ZXBOYW1lLCByZXN1bHQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy51cHB5Lm9uKCdmaWxlLXJlbW92ZWQnLCAoZikgPT4ge1xyXG4gICAgICB0aGlzLnNob3dTYW1wbGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dTdWJ0aXRsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuZmlsZS5zZXQobnVsbCk7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRGaWxlcyA9IHRoaXMubXVsdGlwbGVGaWxlcygpO1xyXG4gICAgICBjb25zdCB1cGRhdGVkRmlsZXMgPSBjdXJyZW50RmlsZXMuZmlsdGVyKChyKSA9PiByLmlkICE9IGYuaWQpO1xyXG4gICAgICB0aGlzLm11bHRpcGxlRmlsZXMuc2V0KHVwZGF0ZWRGaWxlcyk7XHJcbiAgICAgIHRoaXMuZmlsZVJlbW92ZWQuZW1pdChmLmlkKTtcclxuICAgICAgdGhpcy5yb3dTdW1tYXJ5LnNldCh7IHJvd0NvdW50OiAwLCByb3dFbXB0eTogMCB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblJlc2V0VXBweSgpIHtcclxuICAgIGlmICh0aGlzLmNsZWFyKCkpIHtcclxuICAgICAgdGhpcy51cHB5LmNsZWFyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0cyBhIGdpdmVuIG51bWJlciBvZiBieXRlcyBpbnRvIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nLlxyXG4gICAqIEBwYXJhbSBieXRlcyBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGNvbnZlcnQuXHJcbiAgICogQHBhcmFtIGRlY2ltYWxQb2ludHMgVGhlIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyB0byBkaXNwbGF5LiBEZWZhdWx0cyB0byAyLlxyXG4gICAqIEByZXR1cm5zIEEgc3RyaW5nIGluIHRoZSBmb3JtIG9mIFwiWC5YWCBbdW5pdF1cIiB3aGVyZSBYIGlzIHRoZSBudW1lcmljYWwgdmFsdWUgYW5kIHVuaXQgaXMgdGhlIGFwcHJvcHJpYXRlIHVuaXQgb2YgbWVhc3VyZW1lbnQgKEJ5dGVzLCBLQiwgTUIsIEdCLCBldGMuKS5cclxuICAgKi9cclxuICBmb3JtYXRGaWxlU2l6ZShieXRlczogbnVtYmVyLCBkZWNpbWFsUG9pbnRzID0gMik6IHN0cmluZyB7XHJcbiAgICBpZiAoYnl0ZXMgPT09IDApIHtcclxuICAgICAgcmV0dXJuIGAwIGJ5dGVzYDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZyhVcHB5Q29tcG9uZW50LmtpbG9ieXRlKSk7XHJcbiAgICBjb25zdCBzaXplID0gYnl0ZXMgLyBNYXRoLnBvdyhVcHB5Q29tcG9uZW50LmtpbG9ieXRlLCBpKTtcclxuICAgIHJldHVybiBgJHtzaXplLnRvRml4ZWQoZGVjaW1hbFBvaW50cyl9ICR7VXBweUNvbXBvbmVudC5zaXplc1tpXX1gO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgIDx1cHB5LWRhc2hib2FyZCBbdXBweV09XCJ1cHB5XCIgW3Byb3BzXT1cImRhc2hib2FyZFByb3BzXCI+IDwvdXBweS1kYXNoYm9hcmQ+XHJcbiAgICA8c21hbGwgKm5nSWY9XCJzdWJ0aXRsZSAmJiBzaG93U3VidGl0bGVcIiBjbGFzcz1cInN1YnRpdGxlIHBvc2l0aW9uLWFic29sdXRlXCI+e3tzdWJ0aXRsZX19PC9zbWFsbD5cclxuICAgIDxhICpuZ0lmPVwic2FtcGxlVXJsICYmIHNob3dTYW1wbGVcIiBjbGFzcz1cInNhbXBsZSBwb3NpdGlvbi1hYnNvbHV0ZVwiIFtjbGFzcy50b3AtNThdPVwic3VidGl0bGVcIiByb2xlPVwiYnV0dG9uXCJcclxuICAgICAgICBbaHJlZl09XCJzYW1wbGVVcmxcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWRvd25sb2FkIG1zLTNcIj48L2k+IERvd25sb2FkIFRlbXBsYXRlXHJcbiAgICA8L2E+XHJcblxyXG4gICAgQGlmIChmaWxlKCkgJiYgZmlsZSgpPy50eXBlID09PSAndGV4dC9jc3YnKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTJcIiBzdHlsZT1cIm1hcmdpbjogMXJlbSAwIDAgMDtcIiByb2xlPVwiYWxlcnRcIj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJhbGVydC1oZWFkaW5nXCI+Q1NWIEZpbGUgQ29udGVudCBTdW1tYXJ5PC9oND5cclxuICAgICAgICA8aHI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJmcy02IG0tMFwiPnt7cm93U3VtbWFyeSgpLnJvd0NvdW50fX0gcm93cyBmb3VuZCA8bmctY29udGFpbmVyICpuZ0lmPVwicm93U3VtbWFyeSgpLnJvd0VtcHR5ID4gMFwiPi1cclxuICAgICAgICAgICAgICAgIHt7cm93U3VtbWFyeSgpLnJvd0VtcHR5fX0gZW1wdHkgaW4gdGhlIENTViB5b3UgdXBsb2FkZWQ8L25nLWNvbnRhaW5lcj48L3A+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICB9XHJcbjwvZGl2PiJdfQ==
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBweS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZWFscG9zLW5wbS9uZy1kZWFscG9zLWxpYnJhcnkvY29tcG9uZW50cy91cHB5LWZpbGUtdXBsb2FkL3NyYy91cHB5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RlYWxwb3MtbnBtL25nLWRlYWxwb3MtbGlicmFyeS9jb21wb25lbnRzL3VwcHktZmlsZS11cGxvYWQvc3JjL3VwcHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsQyxPQUFPLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sb0NBQW9DLENBQUM7QUFLNUMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDOzs7O0FBUzdCLE1BQU0sT0FBTyxhQUFhO2FBK0JULFVBQUssR0FBRztRQUNyQixPQUFPO1FBQ1AsSUFBSTtRQUNKLElBQUk7UUFDSixJQUFJO1FBQ0osSUFBSTtRQUNKLElBQUk7UUFDSixJQUFJO1FBQ0osSUFBSTtRQUNKLElBQUk7S0FDSSxBQVZVLENBVVQ7YUFDSSxh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N0MsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekQsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BFLENBQUM7OEdBdktVLGFBQWE7a0dBQWIsYUFBYSxnbkNDL0IxQixnOUJBaUJNLDZXRFVNLDBCQUEwQix5SUFBRSxZQUFZOzsyRkFJdkMsYUFBYTtrQkFQekIsU0FBUzsrQkFDRSxVQUFVLGNBQ1IsSUFBSSxXQUNQLENBQUMsMEJBQTBCLEVBQUUsWUFBWSxDQUFDO3dEQUsxQyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRU4sVUFBVTtzQkFEVCxLQUFLO2dCQVNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBlZmZlY3QsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgc2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb252ZXJ0Q3N2U2VydmljZSB9IGZyb20gJ0BkZWFscG9zLW5wbS9uZy1kZWFscG9zLWxpYnJhcnkvc2VydmljZXMvY3N2LXBhcnNlcic7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnQGRlYWxwb3MtbnBtL25nLWRlYWxwb3MtbGlicmFyeS9zZXJ2aWNlcy9odHRwJztcclxuaW1wb3J0IHsgVXBweUFuZ3VsYXJEYXNoYm9hcmRNb2R1bGUgfSBmcm9tICdAdXBweS9hbmd1bGFyJztcclxuaW1wb3J0IENvbXByZXNzb3IgZnJvbSAnQHVwcHkvY29tcHJlc3Nvcic7XHJcbmltcG9ydCB7IFVwcHkgfSBmcm9tICdAdXBweS9jb3JlJztcclxuaW1wb3J0ICdAdXBweS9jb3JlL2Rpc3Qvc3R5bGUubWluLmNzcyc7XHJcbmltcG9ydCAnQHVwcHkvZGFzaGJvYXJkL2Rpc3Qvc3R5bGUubWluLmNzcyc7XHJcbmltcG9ydCBUcmFuc2xvYWRpdCwge1xyXG4gIENPTVBBTklPTl9BTExPV0VEX0hPU1RTLFxyXG4gIENPTVBBTklPTl9VUkwsXHJcbn0gZnJvbSAnQHVwcHkvdHJhbnNsb2FkaXQnO1xyXG5pbXBvcnQgUGFwYSBmcm9tICdwYXBhcGFyc2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdQT1MtdXBweScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbVXBweUFuZ3VsYXJEYXNoYm9hcmRNb2R1bGUsIENvbW1vbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VwcHkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi91cHB5LmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVwcHlDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHNhbXBsZVVybDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2hvd1NhbXBsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogRm9yIG1hbnVhbGx5IHJlc2V0dGluZyBVcHB5IGFmdGVyIGEgc3VjY2Vzc2Z1bCB1cGxvYWRcclxuICAgKi9cclxuICBjbGVhciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBzaG93U3VidGl0bGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHVwcHlDb3JlQ29uZmlndXJhdGlvbiA9IGlucHV0PGFueT4oKTtcclxuICBkYXNoYm9hcmRQcm9wc0NvbmZpZ3VyYXRpb24gPSBpbnB1dDxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGZpbGVVcGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QmxvYiB8IEZpbGU+KCk7XHJcbiAgQE91dHB1dCgpIGZpbGVVcGxvYWRDb21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8QmxvYiB8IEZpbGU+KCk7XHJcbiAgQE91dHB1dCgpIGZpbGVSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIG9uUGFyc2VyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG11bHRpcGxlRmlsZXNVcGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8XHJcbiAgICB7IGZpbGU6IEJsb2IgfCBGaWxlOyBpZDogc3RyaW5nIH1bXVxyXG4gID4oKTtcclxuXHJcbiAgaHR0cCA9IGluamVjdChIdHRwU2VydmljZSk7XHJcbiAgY3N2UGFyc2VyID0gaW5qZWN0KENvbnZlcnRDc3ZTZXJ2aWNlKTtcclxuXHJcbiAgcm93U3VtbWFyeSA9IHNpZ25hbDx7IHJvd0NvdW50OiBudW1iZXI7IHJvd0VtcHR5OiBudW1iZXIgfT4oe1xyXG4gICAgcm93Q291bnQ6IDAsXHJcbiAgICByb3dFbXB0eTogMCxcclxuICB9KTtcclxuXHJcbiAgZmlsZSA9IHNpZ25hbDxGaWxlIHwgbnVsbD4obnVsbCk7XHJcbiAgbXVsdGlwbGVGaWxlcyA9IHNpZ25hbDx7IGZpbGU6IEJsb2IgfCBGaWxlOyBpZDogc3RyaW5nIH1bXT4oW10pO1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBzaXplcyA9IFtcclxuICAgICdCeXRlcycsXHJcbiAgICAnS0InLFxyXG4gICAgJ01CJyxcclxuICAgICdHQicsXHJcbiAgICAnVEInLFxyXG4gICAgJ1BCJyxcclxuICAgICdFQicsXHJcbiAgICAnWkInLFxyXG4gICAgJ1lCJyxcclxuICBdIGFzIGNvbnN0O1xyXG4gIHByaXZhdGUgc3RhdGljIGtpbG9ieXRlID0gMTAyNDtcclxuXHJcbiAgdXBweTogVXBweSA9IG5ldyBVcHB5KHtcclxuICAgIGRlYnVnOiB0cnVlLFxyXG4gICAgYXV0b1Byb2NlZWQ6IHRydWUsXHJcbiAgICBhbGxvd011bHRpcGxlVXBsb2FkQmF0Y2hlczogZmFsc2UsXHJcbiAgICByZXN0cmljdGlvbnM6IHtcclxuICAgICAgYWxsb3dlZEZpbGVUeXBlczogWycuY3N2J10sXHJcbiAgICAgIG1heFRvdGFsRmlsZVNpemU6IDEwMDAwMDAsXHJcbiAgICB9LFxyXG4gIH0pLnVzZShDb21wcmVzc29yLCB7XHJcbiAgICBtaW1lVHlwZTogJ2ltYWdlL2pwZWcnLFxyXG4gICAgY29udmVydFNpemU6IEluZmluaXR5LFxyXG4gICAgY29udmVydFR5cGVzOiBbJ2ltYWdlL3BuZyddLFxyXG4gIH0pO1xyXG5cclxuICBkYXNoYm9hcmRQcm9wcyA9IHtcclxuICAgIGhpZGVVcGxvYWRCdXR0b246IHRydWUsXHJcbiAgICBoZWlnaHQ6IDM1MCxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGVmZmVjdCgoKSA9PiB0aGlzLnVwcHkuc2V0T3B0aW9ucyh7IC4uLnRoaXMudXBweUNvcmVDb25maWd1cmF0aW9uKCkgfSkpO1xyXG4gICAgZWZmZWN0KFxyXG4gICAgICAoKSA9PlxyXG4gICAgICAgICh0aGlzLmRhc2hib2FyZFByb3BzID0ge1xyXG4gICAgICAgICAgLi4udGhpcy5kYXNoYm9hcmRQcm9wcyxcclxuICAgICAgICAgIC4uLnRoaXMuZGFzaGJvYXJkUHJvcHNDb25maWd1cmF0aW9uKCksXHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy51cHB5Lm9uKCd1cGxvYWQnLCAoXywgdXBweUZpbGVzKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSB1cHB5RmlsZXNbMF0/LmRhdGEgYXMgRmlsZTtcclxuICAgICAgdGhpcy5zaG93U2FtcGxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd1N1YnRpdGxlID0gZmFsc2U7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhfLCB1cHB5RmlsZXMsIGZpbGUpO1xyXG4gICAgICB0aGlzLmZpbGVVcGxvYWRlZC5lbWl0KGZpbGUpO1xyXG4gICAgICB0aGlzLmZpbGUuc2V0KHVwcHlGaWxlc1swXS5kYXRhIGFzIEZpbGUpO1xyXG5cclxuICAgICAgUGFwYS5wYXJzZShmaWxlLCB7XHJcbiAgICAgICAgc2tpcEVtcHR5TGluZXM6ICdncmVlZHknLFxyXG4gICAgICAgIGhlYWRlcjogdHJ1ZSxcclxuICAgICAgICBiZWZvcmVGaXJzdENodW5rOiAoX2NodW5rKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB3aXRoT3V0SGVhZGVyID0gX2NodW5rLnNwbGl0KC9cXHI/XFxuLykuc2xpY2UoMSk7XHJcbiAgICAgICAgICBpZiAod2l0aE91dEhlYWRlclt3aXRoT3V0SGVhZGVyLmxlbmd0aCAtIDFdID09PSAnJylcclxuICAgICAgICAgICAgd2l0aE91dEhlYWRlci5wb3AoKTtcclxuICAgICAgICAgIHRoaXMucm93U3VtbWFyeS51cGRhdGUoKHJlcykgPT4gKHtcclxuICAgICAgICAgICAgLi4ucmVzLFxyXG4gICAgICAgICAgICByb3dDb3VudDogd2l0aE91dEhlYWRlci5sZW5ndGgsXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICB3aXRoT3V0SGVhZGVyLmZvckVhY2goKHJvdykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBlbXB0eVJvdyA9IHJvdy5zcGxpdCgnLCcpLmV2ZXJ5KChyb3cpID0+IHJvdyA9PT0gJycpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGVtcHR5Um93KVxyXG4gICAgICAgICAgICAgIHRoaXMucm93U3VtbWFyeS51cGRhdGUoKHJlcykgPT4gKHtcclxuICAgICAgICAgICAgICAgIC4uLnJlcyxcclxuICAgICAgICAgICAgICAgIHJvd0VtcHR5OiByZXMucm93RW1wdHkgKyAxLFxyXG4gICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIF9jaHVuazsgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBjaHVuayB0byBjb250aW51ZSBwYXJzaW5nXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcihlcnJvciwgZmlsZSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0VSUk9SJywgZXJyb3IsIGZpbGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6IChyZXN1bHRzLCBfZmlsZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vblBhcnNlci5lbWl0KHJlc3VsdHMuZGF0YSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnVwcHkub24oJ2NvbXBsZXRlJywgKHVwcHlGaWxlcykgPT4ge1xyXG4gICAgICBjb25zdCBtdWx0aXBsZUZpbGVzID1cclxuICAgICAgICB1cHB5RmlsZXMuc3VjY2Vzc2Z1bD8ubWFwKChkKSA9PiAoeyBmaWxlOiBkLmRhdGEsIGlkOiBkLmlkIH0pKSA/PyBbXTtcclxuICAgICAgY29uc3QgZmlsZSA9IHVwcHlGaWxlcy5zdWNjZXNzZnVsIVswXT8uZGF0YTtcclxuICAgICAgdGhpcy5zaG93U2FtcGxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd1N1YnRpdGxlID0gZmFsc2U7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhmaWxlKTtcclxuICAgICAgdGhpcy5maWxlVXBsb2FkQ29tcGxldGUuZW1pdChmaWxlKTtcclxuICAgICAgdGhpcy5tdWx0aXBsZUZpbGVzVXBsb2FkZWQuZW1pdChtdWx0aXBsZUZpbGVzKTtcclxuICAgICAgdGhpcy5vblJlc2V0VXBweSgpO1xyXG4gICAgICB0aGlzLmZpbGUuc2V0KGZpbGUgYXMgRmlsZSk7XHJcbiAgICAgIHRoaXMubXVsdGlwbGVGaWxlcy5zZXQobXVsdGlwbGVGaWxlcyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnVwcHkub24oJ3RyYW5zbG9hZGl0OnVwbG9hZCcsICh4LCB5KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKHgsIHkpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnVwcHkub24oJ3RyYW5zbG9hZGl0OnJlc3VsdCcsIChzdGVwTmFtZSwgcmVzdWx0KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKHN0ZXBOYW1lLCByZXN1bHQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy51cHB5Lm9uKCdmaWxlLXJlbW92ZWQnLCAoZikgPT4ge1xyXG4gICAgICB0aGlzLnNob3dTYW1wbGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dTdWJ0aXRsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuZmlsZS5zZXQobnVsbCk7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRGaWxlcyA9IHRoaXMubXVsdGlwbGVGaWxlcygpO1xyXG4gICAgICBjb25zdCB1cGRhdGVkRmlsZXMgPSBjdXJyZW50RmlsZXMuZmlsdGVyKChyKSA9PiByLmlkICE9IGYuaWQpO1xyXG4gICAgICB0aGlzLm11bHRpcGxlRmlsZXMuc2V0KHVwZGF0ZWRGaWxlcyk7XHJcbiAgICAgIHRoaXMuZmlsZVJlbW92ZWQuZW1pdChmLmlkKTtcclxuICAgICAgdGhpcy5yb3dTdW1tYXJ5LnNldCh7IHJvd0NvdW50OiAwLCByb3dFbXB0eTogMCB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblJlc2V0VXBweSgpIHtcclxuICAgIGlmICh0aGlzLmNsZWFyKCkpIHtcclxuICAgICAgdGhpcy51cHB5LmNsZWFyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0cyBhIGdpdmVuIG51bWJlciBvZiBieXRlcyBpbnRvIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nLlxyXG4gICAqIEBwYXJhbSBieXRlcyBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGNvbnZlcnQuXHJcbiAgICogQHBhcmFtIGRlY2ltYWxQb2ludHMgVGhlIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyB0byBkaXNwbGF5LiBEZWZhdWx0cyB0byAyLlxyXG4gICAqIEByZXR1cm5zIEEgc3RyaW5nIGluIHRoZSBmb3JtIG9mIFwiWC5YWCBbdW5pdF1cIiB3aGVyZSBYIGlzIHRoZSBudW1lcmljYWwgdmFsdWUgYW5kIHVuaXQgaXMgdGhlIGFwcHJvcHJpYXRlIHVuaXQgb2YgbWVhc3VyZW1lbnQgKEJ5dGVzLCBLQiwgTUIsIEdCLCBldGMuKS5cclxuICAgKi9cclxuICBmb3JtYXRGaWxlU2l6ZShieXRlczogbnVtYmVyLCBkZWNpbWFsUG9pbnRzID0gMik6IHN0cmluZyB7XHJcbiAgICBpZiAoYnl0ZXMgPT09IDApIHtcclxuICAgICAgcmV0dXJuIGAwIGJ5dGVzYDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZyhVcHB5Q29tcG9uZW50LmtpbG9ieXRlKSk7XHJcbiAgICBjb25zdCBzaXplID0gYnl0ZXMgLyBNYXRoLnBvdyhVcHB5Q29tcG9uZW50LmtpbG9ieXRlLCBpKTtcclxuICAgIHJldHVybiBgJHtzaXplLnRvRml4ZWQoZGVjaW1hbFBvaW50cyl9ICR7VXBweUNvbXBvbmVudC5zaXplc1tpXX1gO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgIDx1cHB5LWRhc2hib2FyZCBbdXBweV09XCJ1cHB5XCIgW3Byb3BzXT1cImRhc2hib2FyZFByb3BzXCI+IDwvdXBweS1kYXNoYm9hcmQ+XHJcbiAgICA8c21hbGwgKm5nSWY9XCJzdWJ0aXRsZSAmJiBzaG93U3VidGl0bGVcIiBjbGFzcz1cInN1YnRpdGxlIHBvc2l0aW9uLWFic29sdXRlXCI+e3tzdWJ0aXRsZX19PC9zbWFsbD5cclxuICAgIDxhICpuZ0lmPVwic2FtcGxlVXJsICYmIHNob3dTYW1wbGVcIiBjbGFzcz1cInNhbXBsZSBwb3NpdGlvbi1hYnNvbHV0ZVwiIFtjbGFzcy50b3AtNThdPVwic3VidGl0bGVcIiByb2xlPVwiYnV0dG9uXCJcclxuICAgICAgICBbaHJlZl09XCJzYW1wbGVVcmxcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWRvd25sb2FkIG1zLTNcIj48L2k+IERvd25sb2FkIFRlbXBsYXRlXHJcbiAgICA8L2E+XHJcblxyXG4gICAgQGlmIChmaWxlKCkgJiYgZmlsZSgpPy50eXBlID09PSAndGV4dC9jc3YnKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTJcIiBzdHlsZT1cIm1hcmdpbjogMXJlbSAwIDAgMDtcIiByb2xlPVwiYWxlcnRcIj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJhbGVydC1oZWFkaW5nXCI+Q1NWIEZpbGUgQ29udGVudCBTdW1tYXJ5PC9oND5cclxuICAgICAgICA8aHI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJmcy02IG0tMFwiPnt7cm93U3VtbWFyeSgpLnJvd0NvdW50fX0gcm93cyBmb3VuZCA8bmctY29udGFpbmVyICpuZ0lmPVwicm93U3VtbWFyeSgpLnJvd0VtcHR5ID4gMFwiPi1cclxuICAgICAgICAgICAgICAgIHt7cm93U3VtbWFyeSgpLnJvd0VtcHR5fX0gZW1wdHkgaW4gdGhlIENTViB5b3UgdXBsb2FkZWQ8L25nLWNvbnRhaW5lcj48L3A+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICB9XHJcbjwvZGl2PiJdfQ==
@@ -199,6 +199,7 @@ export class Constants {
199
199
  if (date) {
200
200
  const now = new Date();
201
201
  now.setHours(0, 0, 0, 0);
202
+ date.setHours(0, 0, 0, 0);
202
203
  return now.getTime() == date.getTime();
203
204
  }
204
205
  return false;
@@ -425,4 +426,4 @@ export class LocalDataKey {
425
426
  static { this.ForecastData = "Inventory/Daystozero"; }
426
427
  static { this.ForecastLoader = "InventoryLoader/Daystozero"; }
427
428
  }
428
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVhbHBvcy1ucG0vbmctZGVhbHBvcy1saWJyYXJ5L2NvbnN0YW50cy9zcmMvQ29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxTQUFTO2FBQ1gsZUFBVSxHQUFHLGtEQUFrRCxDQUFBO2FBQy9ELHFCQUFnQixHQUFHLE9BQU8sQ0FBQTthQUMxQixjQUFTLEdBQUcsc0NBQXNDLENBQUM7YUFDbkQsb0JBQWUsR0FBRyx3QkFBd0IsQ0FBQzthQUMzQyxzQkFBaUIsR0FBRyxHQUFHLENBQUM7YUFDeEIsWUFBTyxHQUFHLHFCQUFxQixDQUFDO2FBQ2hDLFlBQU8sR0FBRyxVQUFVLENBQUM7YUFDckIsZUFBVSxHQUFHLGdDQUFnQyxDQUFBO0lBQ3BELE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBVyxFQUFFLEdBQUcsSUFBYztRQUM5QyxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzthQUNNLG1CQUFjLEdBQUcsQ0FBQyxnRUFBZ0UsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFFckgsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFVO1FBQ3hCLElBQ0ksS0FBSyxJQUFJLEVBQUU7WUFDWCxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7WUFDcEMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxTQUFTO1lBQzVCLEtBQUssSUFBSSxTQUFTO1lBQ2xC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LEdBQUcsNkJBQTZCLENBQUM7YUFDbkQsd0JBQW1CLEdBQUcsOENBQThDLENBQUM7YUFDckUsdUJBQWtCLEdBQUcsa0NBQWtDLENBQUM7YUFDeEQsbUJBQWMsR0FBRyw2QkFBNkIsQ0FBQztJQUV0RCxVQUFVO2FBQ0gscUJBQWdCLEdBQUcsbUNBQW1DLENBQUM7YUFDdkQsMkJBQXNCLEdBQUcsbUNBQW1DLENBQUM7YUFDN0Qsc0JBQWlCLEdBQUcsc0NBQXNDLENBQUM7YUFDM0QseUJBQW9CLEdBQUcsZ0NBQWdDLENBQUM7YUFDeEQsZ0JBQVcsR0FBRyxnQ0FBZ0MsQ0FBQzthQUMvQyx1QkFBa0IsR0FBRyw4QkFBOEIsQ0FBQTthQUNuRCxtQkFBYyxHQUFHLG9CQUFvQixDQUFBO0lBRTVDLFdBQVc7YUFDSixxQkFBZ0IsR0FBRyx3QkFBd0IsQ0FBQzthQUM1QywyQkFBc0IsR0FBRyw4QkFBOEIsQ0FBQzthQUN4RCxtQkFBYyxHQUFHLDJCQUEyQixDQUFDO0lBRXBELGFBQWE7YUFDTix1QkFBa0IsR0FBRywwQkFBMEIsQ0FBQzthQUNoRCw2QkFBd0IsR0FBRyxnQ0FBZ0MsQ0FBQzthQUM1RCxxQkFBZ0IsR0FBRyw2QkFBNkIsQ0FBQztJQUV4RCxZQUFZO2FBQ0wsaUJBQVksR0FBRyxzQkFBc0IsQ0FBQzthQUN0QyxtQkFBYyxHQUFHLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIENvbnN0YW50cyB7XHJcbiAgICBzdGF0aWMgZW1haWxSZWdleCA9IC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kL1xyXG4gICAgc3RhdGljIHBob25lTnVtYmVyUmVnZXggPSAvXlxcZCskL1xyXG4gICAgc3RhdGljIEd1aWRFbXB0eSA9IFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCI7XHJcbiAgICBzdGF0aWMgRGVjaW1hbE1pblZhbHVlID0gXCItNy45MjI4MTYyNTE0MjY0MzRlKzI4XCI7XHJcbiAgICBzdGF0aWMgSW5wdXRMb2NrVGltZVNwYW4gPSA1MDA7XHJcbiAgICBzdGF0aWMgTWluRGF0ZSA9IFwiMDAwMS0wMS0wMVQwMDowMDowMFwiO1xyXG4gICAgc3RhdGljIE1pblRpbWUgPSBcIjAwOjAwOjAwXCI7XHJcbiAgICBzdGF0aWMgTWluRGVjaW1hbCA9IFwiLTc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM1XCJcclxuICAgIHN0YXRpYyBTdHJpbmdGb3JtYXQobXNnOiBzdHJpbmcsIC4uLmFyZ3M6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgICAgICBmb3IgKGxldCBfaSA9IDA7IF9pIDwgYXJncy5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICAgICAgbXNnID0gbXNnLnJlcGxhY2UoYHske19pfX1gLCBhcmdzW19pXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtc2c7XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgaXNNb2JpbGVEZXZpY2UgPSAoL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKTtcclxuXHJcbiAgICBzdGF0aWMgSXNOb3RFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB2YWx1ZSAhPSBcIlwiICYmXHJcbiAgICAgICAgICAgICFDb25zdGFudHMuY29udGFpbnNPbmx5U3BhY2VzKHZhbHVlKSAmJlxyXG4gICAgICAgICAgICB2YWx1ZSAhPSBDb25zdGFudHMuR3VpZEVtcHR5ICYmXHJcbiAgICAgICAgICAgIHZhbHVlICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICB2YWx1ZSAhPSBudWxsXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIElzRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdmFsdWUgPT0gXCJcIiB8fFxyXG4gICAgICAgICAgICBDb25zdGFudHMuY29udGFpbnNPbmx5U3BhY2VzKHZhbHVlKSB8fFxyXG4gICAgICAgICAgICB2YWx1ZSA9PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgICAgdmFsdWUgPT0gbnVsbCB8fFxyXG4gICAgICAgICAgICB2YWx1ZSA9PSBDb25zdGFudHMuR3VpZEVtcHR5XHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiBhIHN0cmluZyBpcyBhIHZhbGlkIEdVSUQuXHJcbiAgICAgKiBAcGFyYW0gZ3VpZCAtIFRoZSBzdHJpbmcgdG8gYmUgY2hlY2tlZC5cclxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIEdVSUQsIGZhbHNlIG90aGVyd2lzZS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzR3VpZChndWlkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCByZWdleEV4cCA9IC9eWzAtOWEtZkEtRl17OH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17MTJ9JC9naTtcclxuICAgICAgICBsZXQgaXNHdWlkID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGd1aWQpIHtcclxuICAgICAgICAgICAgaXNHdWlkID0gcmVnZXhFeHAudGVzdChndWlkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGlzR3VpZDtcclxuICAgIH1cclxuICAgIC8vIGNoZWNrIHdoZXRoZXIgc3RyaW5nIG9ubHkgY29udGFpbnMgYmxhbmsgc3BhY2VcclxuICAgIHN0YXRpYyBjb250YWluc09ubHlTcGFjZXMoc3RyOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gL15cXHMqJC8udGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBGaWx0ZXJCeUlEKGFycmF5OiBhbnlbXSwgaWQ6IGFueSk6IGFueSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IGFycmF5LmZpbHRlcigoeCkgPT4geC5JRCA9PSBpZCk7XHJcbiAgICAgICAgICAgIGlmIChsaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBsaXN0WzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXgpIHsgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBNb250aHM6IHsgSUQ6IG51bWJlciwgTGFiZWw6IHN0cmluZyB9W10gPSBbXHJcbiAgICAgICAgeyBJRDogMSwgTGFiZWw6IFwiSmFudWFyeVwiIH0sXHJcbiAgICAgICAgeyBJRDogMiwgTGFiZWw6IFwiRmVicnVhcnlcIiB9LFxyXG4gICAgICAgIHsgSUQ6IDMsIExhYmVsOiBcIk1hcmNoXCIgfSxcclxuICAgICAgICB7IElEOiA0LCBMYWJlbDogXCJBcHJpbFwiIH0sXHJcbiAgICAgICAgeyBJRDogNSwgTGFiZWw6IFwiTWF5XCIgfSxcclxuICAgICAgICB7IElEOiA2LCBMYWJlbDogXCJKdW5lXCIgfSxcclxuICAgICAgICB7IElEOiA3LCBMYWJlbDogXCJKdWx5XCIgfSxcclxuICAgICAgICB7IElEOiA4LCBMYWJlbDogXCJBdWd1c3RcIiB9LFxyXG4gICAgICAgIHsgSUQ6IDksIExhYmVsOiBcIlNlcHRlbWJlclwiIH0sXHJcbiAgICAgICAgeyBJRDogMTAsIExhYmVsOiBcIk9jdG9iZXJcIiB9LFxyXG4gICAgICAgIHsgSUQ6IDExLCBMYWJlbDogXCJOb3ZlbWJlclwiIH0sXHJcbiAgICAgICAgeyBJRDogMTIsIExhYmVsOiBcIkRlY2VtYmVyXCIgfSxcclxuICAgIF07XHJcblxyXG4gICAgc3RhdGljIEdlbmVyYXRlWWVhcnMoY3VyclllYXI6IGFueSwgbGVuZ3RoOiBhbnksIElzUHJldmlvdXM6IGFueSk6IGFueVtdIHtcclxuICAgICAgICBsZXQgbXVsdGlwbGllciA9IC0xO1xyXG4gICAgICAgIGlmIChsZW5ndGggPT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA9PSBudWxsKSBsZW5ndGggPSAxMTtcclxuICAgICAgICBpZiAoSXNQcmV2aW91cyA9PSB1bmRlZmluZWQgfHwgSXNQcmV2aW91cyA9PSBudWxsIHx8ICFJc1ByZXZpb3VzKVxyXG4gICAgICAgICAgICBtdWx0aXBsaWVyID0gMTtcclxuXHJcbiAgICAgICAgY29uc3QgeWVhcnMgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHllYXJzLnB1c2goY3VyclllYXIgKyBpICogbXVsdGlwbGllcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB5ZWFycztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlZmFjdG9yIGZ1bmN0aW9uXHJcbiAgICAgKiBAcGFyYW0gZGF0ZVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgRGF0ZU9ubHkoZGF0ZT86IERhdGUpOiBEYXRlIHtcclxuICAgICAgICBpZiAoZGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUobmV3IERhdGUoZGF0ZSkudG9EYXRlU3RyaW5nKCkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBqYXZhc2NyaXB0IGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXMgaW4gZGF5c1xyXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSBcclxuICAgICAqIEBwYXJhbSBlbmREYXRlIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZGlmZmVyZW50SW5EYXlzKFxyXG4gICAgICAgIHN0YXJ0RGF0ZTogRGF0ZSxcclxuICAgICAgICBlbmREYXRlOiBEYXRlXHJcbiAgICApOiBudW1iZXIge1xyXG4gICAgICAgIC8vIFRvIGNhbGN1bGF0ZSB0aGUgdGltZSBkaWZmZXJlbmNlIG9mIHR3byBkYXRlc1xyXG4gICAgICAgIGxldCBEaWZmZXJlbmNlX0luX1RpbWUgPSBlbmREYXRlLmdldFRpbWUoKSAtIHN0YXJ0RGF0ZS5nZXRUaW1lKCk7XHJcblxyXG4gICAgICAgIC8vIFRvIGNhbGN1bGF0ZSB0aGUgbm8uIG9mIGRheXMgYmV0d2VlbiB0d28gZGF0ZXNcclxuICAgICAgICBsZXQgRGlmZmVyZW5jZV9Jbl9EYXlzID0gTWF0aC5mbG9vcihcclxuICAgICAgICAgICAgRGlmZmVyZW5jZV9Jbl9UaW1lIC8gKDEwMDAgKiAzNjAwICogMjQpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIERpZmZlcmVuY2VfSW5fRGF5cztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqICBqYXZhc2NyaXB0IGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXMgaW4gbWludXRlc1xyXG4gICAgICogQHBhcmFtIGR0MSBcclxuICAgICAqIEBwYXJhbSBkdDIgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBtaW51dGVzRGlmZihkdDE6IERhdGUsIGR0MjogRGF0ZSkge1xyXG5cclxuICAgICAgICBsZXQgZGlmZk1pbiA9IChkdDIuZ2V0VGltZSgpIC0gZHQxLmdldFRpbWUoKSkgLyA2MDAwMDtcclxuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKGRpZmZNaW4pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGRhdGVzIGluIGhvdXJzIGphdmFzY3JpcHRcclxuICAgICAqIEBwYXJhbSBkdDEgXHJcbiAgICAgKiBAcGFyYW0gZHQyIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgaG91cnNEaWZmKGR0MTogRGF0ZSwgZHQyOiBEYXRlKSB7XHJcbiAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSB0aW1lIGRpZmZlcmVuY2Ugb2YgdHdvIGRhdGVzIEphdmFTY3JpcHRcclxuICAgICAgICBsZXQgZGlmZlRpbWUgPSAoZHQyLmdldFRpbWUoKSAtIGR0MS5nZXRUaW1lKCkpO1xyXG5cclxuICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBkYXlzIGJldHdlZW4gaG91cnMgZGF0ZXMgamF2YXNjcmlwdFxyXG4gICAgICAgIGxldCBob3Vyc0RpZmYgPSBkaWZmVGltZSAvICgxMDAwICogMzYwMCk7XHJcblxyXG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KGhvdXJzRGlmZi50b0ZpeGVkKDEpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZSBVbmlxdWUgSWRlbnRpZmllciBpbiB0aGUgQ2xpZW50IFNpZGUgZXF1aXZhbGVudCB0byBDIyBOZXdHdWlkKClcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgR3VpZF9OZXdHdWlkKCk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IGR0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgbGV0IHV1aWQgPSBcInh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eFwiLnJlcGxhY2UoXHJcbiAgICAgICAgICAgIC9beHldL2csXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgciA9IChkdCArIE1hdGgucmFuZG9tKCkgKiAxNikgJSAxNiB8IDA7XHJcbiAgICAgICAgICAgICAgICBkdCA9IE1hdGguZmxvb3IoZHQgLyAxNik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKGMgPT0gXCJ4XCIgPyByIDogKHIgJiAweDMpIHwgMHg4KS50b1N0cmluZygxNik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiB1dWlkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcGFyc2VKd3QodG9rZW46IHN0cmluZykge1xyXG4gICAgICAgIHZhciBiYXNlNjRVcmwgPSB0b2tlbi5zcGxpdChcIi5cIilbMV07XHJcbiAgICAgICAgdmFyIGJhc2U2NCA9IGJhc2U2NFVybC5yZXBsYWNlKC8tL2csIFwiK1wiKS5yZXBsYWNlKC9fL2csIFwiL1wiKTtcclxuICAgICAgICB2YXIganNvblBheWxvYWQgPSBkZWNvZGVVUklDb21wb25lbnQoXHJcbiAgICAgICAgICAgIGF0b2IoYmFzZTY0KVxyXG4gICAgICAgICAgICAgICAgLnNwbGl0KFwiXCIpXHJcbiAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiJVwiICsgKFwiMDBcIiArIGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuam9pbihcIlwiKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGpzb25QYXlsb2FkKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIG51bWJlck9ubHkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBjaGFyQ29kZSA9IChldmVudC53aGljaCkgPyBldmVudC53aGljaCA6IGV2ZW50LmtleUNvZGU7XHJcbiAgICAgICAgaWYgKGNoYXJDb2RlID4gMzEgJiYgKGNoYXJDb2RlIDwgNDggfHwgY2hhckNvZGUgPiA1NykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGZvcm1hdCBudW1iZXIgdG8gdW5pdFxyXG4gICAgICogQHBhcmFtIHRvdGFsIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZm9ybWF0TnVtYmVyKHRvdGFsOiBudW1iZXIpIHtcclxuICAgICAgICBsZXQgdmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gICAgICAgIGxldCB1bml0ID0gXCJcIjtcclxuICAgICAgICBsZXQgYWJzTnVtYmVyID0gTWF0aC5hYnModG90YWwpO1xyXG4gICAgICAgIGlmIChhYnNOdW1iZXIgPiA5OTkgJiYgYWJzTnVtYmVyIDwgMTAwMDAwMCkge1xyXG4gICAgICAgICAgICB1bml0ID0gXCJLXCI7XHJcbiAgICAgICAgICAgIHZhbHVlID0gKGFic051bWJlciAvIDEwMDApLnRvRml4ZWQoMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChhYnNOdW1iZXIgPj0gMTAwMDAwMCkge1xyXG4gICAgICAgICAgICB1bml0ID0gXCJNXCI7XHJcbiAgICAgICAgICAgIHZhbHVlID0gKGFic051bWJlciAvIDEwMDAwMDApLnRvRml4ZWQoMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChhYnNOdW1iZXIgPCA5OTkpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBhYnNOdW1iZXIudG9TdHJpbmcoKTsgLy9cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRvdGFsIDwgMCkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IFwiLVwiICsgdmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvXFxCKD89KFxcZHszfSkrKD8hXFxkKSkvZywgXCIsXCIpICsgdW5pdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzVG9EYXkoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChkYXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgIG5vdy5zZXRIb3VycygwLCAwLCAwLCAwKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5vdy5nZXRUaW1lKCkgPT0gZGF0ZS5nZXRUaW1lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXQgZGF0ZSB0aW1lIHRvIGxhdGVzdCB0aW1lIGRheVxyXG4gICAgICogQHBhcmFtIGRhdGUgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBzZXRUb0xhdGVzdFRpbWUoZGF0ZTogRGF0ZSk6IERhdGUge1xyXG4gICAgICAgIGNvbnN0IGRhdGVMYXN0VGltZSA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgICAgIGRhdGVMYXN0VGltZS5zZXRIb3VycygyMywgNTksIDU5KTtcclxuICAgICAgICByZXR1cm4gZGF0ZUxhc3RUaW1lO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2V0IGRhdGUgdGltZSB0byBmaXJzdCB0aW1lIGRheVxyXG4gICAgICogQHBhcmFtIGRhdGUgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBzZXRUb0ZpcnN0VGltZShkYXRlOiBEYXRlKTogRGF0ZSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZUZpcnN0VGltZSA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgICAgIGRhdGVGaXJzdFRpbWUuc2V0SG91cnMoMCwgMCwgMCk7XHJcbiAgICAgICAgcmV0dXJuIGRhdGVGaXJzdFRpbWU7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc3RhdGljIGNvbXBhcmUoYTogbnVtYmVyIHwgc3RyaW5nLCBiOiBudW1iZXIgfCBzdHJpbmcsIGlzQXNjOiBib29sZWFuKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gKGEgPCBiID8gLTEgOiAxKSAqIChpc0FzYyA/IDEgOiAtMSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBnZW5lcmF0ZSBzZXJpYWwgYXMgbm90ZSB3aXRoIGZvcm1hdCBbJ3NlcmlhbCcqUXVhbnRpdHldXHJcbiAgICAgKiBleDogWzAwQVMzMio2LCAwMDg5QV1cclxuICAgICAqIEBwYXJhbSBzZXJpYWxzIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2VuZXJhdGVTZXJpYWxhc05vdGUoc2VyaWFsczogYW55W10gPSBbXSkge1xyXG4gICAgICAgIGxldCBzZXJpYWxOb3RlOiBzdHJpbmcgPSAnJztcclxuICAgICAgICBpZiAoc2VyaWFscyAmJiBzZXJpYWxzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgbGV0IHNlcmlhbEFTU3RyaW5nID0gc2VyaWFscy5tYXAoKHNlcmlhbCwgaSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2kgPiAwID8gXCIgXCIgOiBcIlwifSR7c2VyaWFsLk51bWJlcn0keyhzZXJpYWwuUXVhbnRpdHkgPiAxIHx8IHNlcmlhbC5RdWFudGl0eSA8IDApID8gXCIqXCIgKyBzZXJpYWwuUXVhbnRpdHkgOiBcIlwifWA7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBzZXJpYWxOb3RlID0gYFske3NlcmlhbEFTU3RyaW5nfV1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc2VyaWFsTm90ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldERhdGVzSW5SYW5nZShzdGFydERhdGU6IERhdGUsIGVuZERhdGU6IERhdGUpOiBEYXRlW10ge1xyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShzdGFydERhdGUuZ2V0VGltZSgpKTtcclxuXHJcbiAgICAgICAgY29uc3QgZGF0ZXMgPSBbXTtcclxuXHJcbiAgICAgICAgd2hpbGUgKGRhdGUgPD0gZW5kRGF0ZSkge1xyXG4gICAgICAgICAgICBkYXRlcy5wdXNoKG5ldyBEYXRlKGRhdGUpKTtcclxuICAgICAgICAgICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZGF0ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcGFyYW0gZGF0ZSBcclxuICAgICAqIEBwYXJhbSBkYXlzQmVmb3JlIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGF5c0JlZm9yZShkYXRlOiBEYXRlLCBkYXlzQmVmb3JlOiBudW1iZXIpOiBEYXRlIHtcclxuICAgICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5zZXREYXRlKG5ldyBEYXRlKCkuZ2V0RGF0ZSgpIC0gZGF5c0JlZm9yZSkpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBnZXQgZmlyc3QgYW5kIGxhc3QgZGF5IGJ5IG1vbnRoIGFuZCB5ZWFyXHJcbiAgICAgKiBAcGFyYW0gbW9udGggXHJcbiAgICAgKiBAcGFyYW0geWVhciBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFJhbmdlRGF0ZShtb250aDogbnVtYmVyLCB5ZWFyOiBudW1iZXIpIHtcclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICBkYXRlLnNldE1vbnRoKG1vbnRoKTtcclxuICAgICAgICBkYXRlLnNldEZ1bGxZZWFyKHllYXIpO1xyXG4gICAgICAgIGxldCBmaXJzdERheSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpIC0gMSwgMSk7XHJcbiAgICAgICAgbGV0IGxhc3REYXkgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgMCk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmlyc3REYXk6IGZpcnN0RGF5LFxyXG4gICAgICAgICAgICBsYXN0RGF5OiBsYXN0RGF5XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgc2V0RGF0ZVRpbWUodGltZTogc3RyaW5nLCBkYXRlOiBEYXRlKTogRGF0ZSB7XHJcbiAgICAgICAgbGV0IG5ld0RhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGlmIChkYXRlKSB7XHJcbiAgICAgICAgICAgIG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHRpbWVzID0gdGltZS5zcGxpdChcIjpcIik7XHJcbiAgICAgICAgbmV3RGF0ZS5zZXRIb3VycyhwYXJzZUludCh0aW1lc1swXSkpO1xyXG4gICAgICAgIG5ld0RhdGUuc2V0TWludXRlcyhwYXJzZUludCh0aW1lc1sxXSkpO1xyXG4gICAgICAgIHJldHVybiBuZXdEYXRlO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHN0YXRpYyBpc01hc2tpbmdGaWVsZCh2YWx1ZSA9IFwiXCIpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBoYXNRdWVzdGlvbk1hcmsgPSAodmFsdWUgYXMgc3RyaW5nKS5pbmNsdWRlcyhcIj9cIik7XHJcbiAgICAgICAgcmV0dXJuIGhhc1F1ZXN0aW9uTWFyaztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlTWFza2luZ0ZpZWxkKGNvbmZpZ01hc2tpbmdGaWVsZDogc3RyaW5nW10gPSBbXSkge1xyXG4gICAgICAgIGxldCBtYXNraW5nRmllbGRzID0ge307XHJcbiAgICAgICAgY29uZmlnTWFza2luZ0ZpZWxkXHJcbiAgICAgICAgICAgIC5mb3JFYWNoKChmaWVsZCwgaSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZmllbGQgPSBmaWVsZC5zcGxpdCgnICcpPy5qb2luKCcnKTtcclxuICAgICAgICAgICAgICAgIG1hc2tpbmdGaWVsZHMgPSB7IC4uLm1hc2tpbmdGaWVsZHMsIFtmaWVsZF06IHRydWUgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gbWFza2luZ0ZpZWxkcztcclxuICAgIH1cclxuICAgIC8qKlxyXG4gKiBDaGVjayBpZiBKUyBBUEkgZnVuY3Rpb24gaXMgc3VwcG9ydGVkIGluIGEgY3VycmVudCBicm93c2VyXHJcbiAqIEBwYXJhbSBhcGkgZXg6IHN0cnVjdHVyZWRDbG9uZVxyXG4gKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgY2hlY2tKU0FwaVN1cHBvcnRlZChhcGk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBpc1N1cHBvcnRlZDogYm9vbGVhbjtcclxuICAgICAgICBpZiAoYXBpIGluIHdpbmRvdykge1xyXG4gICAgICAgICAgICBpc1N1cHBvcnRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpc1N1cHBvcnRlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjb3B5IG9mIGFsbCBlbGVtZW50cyBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0LiBcclxuICAgICAqIENoYW5nZXMgbWFkZSB0byB0aGUgb3JpZ2luYWwgb2JqZWN0IHdpbGwgbm90IGJlIHJlZmxlY3RlZCBpbiB0aGUgY29weVxyXG4gICAgICogQHBhcmFtIG9iamVjdCBcclxuICAgICAqIEBwYXJhbSB0eXBlIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGNsb25lT2JqZWN0KG9iamVjdDogYW55KTogYW55IHtcclxuICAgICAgICBsZXQgbmV3T2JqZWN0OiBhbnk7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tKU0FwaVN1cHBvcnRlZCgnc3RydWN0dXJlZENsb25lJykpIHtcclxuICAgICAgICAgICAgbmV3T2JqZWN0ID0gc3RydWN0dXJlZENsb25lKG9iamVjdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBuZXdPYmplY3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iamVjdCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3T2JqZWN0O1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAqIGZvcm1hdCB0aXRsZSBmb3IgZnJvbSBmaWx0ZXIgdG8gc2hvd2luZyBpbiB0aXRsZVxyXG4gKiBAcGFyYW0gc3RhcnREYXRlXHJcbiAqIEBwYXJhbSBlbmREYXRlXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG4gICAgc3RhdGljIGZvcm1hdFRpdGxlRnJvbURhdGUoc3RhcnREYXRlOiBEYXRlLCBlbmREYXRlOiBEYXRlKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IGZvcm1hdCA9IG51bGw7XHJcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlT2JqID0gbmV3IERhdGUoc3RhcnREYXRlKTtcclxuICAgICAgICBjb25zdCBlbmREYXRlT2JqID0gbmV3IERhdGUoZW5kRGF0ZSk7XHJcblxyXG4gICAgICAgIGlmIChzdGFydERhdGVPYmouZ2V0RGF0ZSgpICE9IGVuZERhdGVPYmouZ2V0RGF0ZSgpKSB7XHJcbiAgICAgICAgICAgIGZvcm1hdCA9IFwiZFwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gc2V0IGZvcm1hdCBvbmx5IGRheXMgb24gc2FtZSBtb250aFxyXG4gICAgICAgIGlmIChzdGFydERhdGVPYmouZ2V0TW9udGgoKSAhPSBlbmREYXRlT2JqLmdldE1vbnRoKCkpIHtcclxuICAgICAgICAgICAgZm9ybWF0ID0gXCJkIE1NTVwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gc2V0IGZ1bGwgZm9ybWF0IHdoZW4gZGlmZmVyZW50IHllYXJcclxuICAgICAgICBpZiAoc3RhcnREYXRlT2JqLmdldEZ1bGxZZWFyKCkgIT0gZW5kRGF0ZU9iai5nZXRGdWxsWWVhcigpKSB7XHJcbiAgICAgICAgICAgIGZvcm1hdCA9IFwiZCBNTU0geXl5eVwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEltYWdlSW5mbyhzcmM6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICBsZXQgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgICBpbWFnZS5zcmMgPSBzcmM7XHJcbiAgICAgICAgaW1hZ2VcclxuICAgICAgICAgICAgLmRlY29kZSgpXHJcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIGltZzogc3JjLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaW1hZ2UuaGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBpbWFnZS53aWR0aFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBJbWFnZSBsb2FkIGVycm9yIGZvciAke3NyY31gKSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIExvY2FsRGF0YUtleSB7XHJcbiAgICBzdGF0aWMgT2ZmbGluZVF1ZXJ5TW9kZSA9IFwiT2ZmbGluZVF1ZXJ5TW9kZVwiO1xyXG4gICAgc3RhdGljIFBPU1N0b3JhZ2UgPSBcIlBPU1N0b3JhZ2VcIjtcclxuICAgIHN0YXRpYyBQcm9kdWN0cyA9IFwiUHJvZHVjdHNcIjtcclxuICAgIHN0YXRpYyBDdXN0b21lcnMgPSBcIkN1c3RvbWVyc1wiO1xyXG4gICAgc3RhdGljIE91dGxldFByaWNlcyA9IFwiT3V0bGV0UHJpY2VzXCI7XHJcbiAgICBzdGF0aWMgT3V0bGV0ID0gXCJPdXRsZXRcIjtcclxuICAgIHN0YXRpYyBQYXJrcyA9IFwiUGFya3NcIjtcclxuICAgIHN0YXRpYyBPcmRlcnMgPSBcIk9yZGVyc1wiO1xyXG4gICAgc3RhdGljIEZhaWxlZE9yZGVycyA9IFwiRmFpbGVkT3JkZXJzXCI7XHJcbiAgICBzdGF0aWMgQ29tcGxldGVkT3JkZXJzID0gXCJDb21wbGV0ZWRPcmRlcnNcIjtcclxuICAgIHN0YXRpYyBOZXdDdXN0b21lcnMgPSBcIk5ld0N1c3RvbWVyc1wiO1xyXG5cclxuICAgIHN0YXRpYyBHZXRSZXdhcmRCeVByb21vdGlvbklEID0gXCIvQVBJL1BPUy9HZXRSZXdhcmRCeVByb21vdGlvbklEXCI7XHJcbiAgICBzdGF0aWMgR2V0TGlzdFByb21vdGlvbiA9IFwiL0FQSS9QT1MvUHJvbW90aW9uXCI7XHJcblxyXG4gICAgc3RhdGljIEdlbmVyYXRlR29wYXlRckNvZGUgPSBcIi9BUEkvUE9TL0dlbmVyYXRlR29QYXlRckNvZGVcIjtcclxuICAgIHN0YXRpYyBHZW5lcmF0ZUVtcGF0S2FsaVFyQ29kZSA9IFwiL0FQSS9QT1MvR2VuZXJhdGVFbXBhdEthbGlRckNvZGVcIjtcclxuXHJcbiAgICBzdGF0aWMgVmVyaWZ5UGF5bWVudCA9IFwiL0FQSS9QYXltZW50Tm90aWZpY2F0aW9uL1ZlcmlmeVBheW1lbnRcIjtcclxuICAgIHN0YXRpYyBQYXlXaXRoT3ZvID0gXCIvQVBJL1BPUy9QYXlXaXRoT3ZvXCI7XHJcblxyXG4gICAgc3RhdGljIEludm9pY2VBNCA9IFwiL0FQSS9QcmludC9JbnZvaWNlXCI7XHJcbiAgICBzdGF0aWMgVXBsb2FkQ3N2ID0gXCIvQVBJL1BPUy9VcGxvYWRDc3ZcIjtcclxuICAgIHN0YXRpYyBVcGxvYWRDc3ZCdXkgPSBcIi9BUEkvQnV5L1VwbG9hZENzdlwiO1xyXG5cclxuICAgIHN0YXRpYyBHZW5lcmF0ZUNvbW1pc3Npb24gPSBcIi9BUEkvVHJhbnNhY3Rpb24vR2V0Q29tbWlzc2lvblwiO1xyXG5cclxuICAgIHN0YXRpYyBJbnZvaWNlSW5mbyA9IFwiL2FwaS9JbnZvaWNlL0ludm9pY2VJbmZvXCI7XHJcbiAgICBzdGF0aWMgR2VuZXJhdGVMaW5rID0gXCIvQVBJL1BheU5vdy9HZW5lcmF0ZUxpbmtcIjtcclxuXHJcbiAgICAvL0J1eVxyXG4gICAgc3RhdGljIExvYWRGb3JtQnV5ID0gXCIvQVBJL0J1eTIvTG9hZFwiO1xyXG4gICAgc3RhdGljIEJ1eUdldE91dGxldEluZm8gPSBcIi9BUEkvQnV5Mi9HZXRPdXRsZXRJbmZvXCI7XHJcbiAgICBzdGF0aWMgQnV5R2VuZXJhdGVOdW1iZXIgPSBcIi9BUEkvQnV5L0dlbmVyYXRlTnVtYmVyXCI7XHJcbiAgICBzdGF0aWMgQnV5R2V0RGF0YUJ5SUQgPSBcIi9BUEkvQnV5Mi9HZXREYXRhQnlJRFwiO1xyXG4gICAgc3RhdGljIEdldFF1aWNrS2V5ID0gXCIvQVBJL2NhdGFsb2cvcHJvZHVjdC9HZXRRdWlja0tleVwiO1xyXG4gICAgc3RhdGljIEdldFByaW50VGVtcGxhdGVJRCA9IFwiL0FQSS9CdXkvR2V0UHJpbnRUZW1wbGF0ZUlEXCI7XHJcbiAgICBzdGF0aWMgR2V0VmFyaWFudFN0b2NrQnlJRCA9IFwiL0FQSS9jYXRhbG9nL3ZhcmlhbnQvR2V0SW52ZW50b3J5QnlWYXJpYW50SURcIjtcclxuICAgIHN0YXRpYyBHZXRTdXBwbGllckludm9pY2UgPSBcIi9BUEkvQnV5L0dldFN1cHBsaWVySW52b2ljZVJldHVyXCI7XHJcbiAgICBzdGF0aWMgR2V0U3VwcGxpZXJEVE8gPSBcIi9BUEkvQ29udGFjdC9HZXRTdXBwbGllckRUT1wiO1xyXG5cclxuICAgIC8vREVMSVZFUllcclxuICAgIHN0YXRpYyBMb2FkRm9ybURlbGl2ZXJ5ID0gXCIvQVBJL1RyYW5zZmVyT3JkZXJMb2FkZXIvTG9hZEZvcm1cIjtcclxuICAgIHN0YXRpYyBEZWxpdmVyeUdlbmVyYXRlTnVtYmVyID0gXCIvQVBJL1RyYW5zZmVyT3JkZXIvR2VuZXJhdGVOdW1iZXJcIjtcclxuICAgIHN0YXRpYyBVcGRhdGVDb3VyaWVyTGlzdCA9IFwiL0FQSS9UcmFuc2Zlck9yZGVyL1VwZGF0ZUNvdXJpZXJMaXN0XCI7XHJcbiAgICBzdGF0aWMgU3VibWl0T3V0bGV0RGVsaXZlcnkgPSBcIi9BUEkvVHJhbnNmZXJPcmRlci9TdWJtaXRPcmRlclwiO1xyXG4gICAgc3RhdGljIENsZWFyT3V0bGV0ID0gXCIvQVBJL1RyYW5zZmVyT3JkZXIvQ2xlYXJPdXRsZXRcIjtcclxuICAgIHN0YXRpYyBQYXltZW50TGlzdFNvcnRpbmcgPSBcIi9BUEkvU2V0dXAvU29ydFBheW1lbnRNZXRob2RcIlxyXG4gICAgc3RhdGljIFRheExpc3RTb3J0aW5nID0gXCIvQVBJL1NldHVwL1NvcnRUYXhcIlxyXG5cclxuICAgIC8vIEVTVElNQVRFXHJcbiAgICBzdGF0aWMgTG9hZEZvcm1Fc3RpbWF0ZSA9IFwiL0FQSS9Fc3RpbWF0ZS9Mb2FkRm9ybVwiO1xyXG4gICAgc3RhdGljIEVzdGltYXRlR2VuZXJhdGVOdW1iZXIgPSBcIi9BUEkvRXN0aW1hdGUvR2VuZXJhdGVOdW1iZXJcIjtcclxuICAgIHN0YXRpYyBTdWJtaXRFc3RpbWF0ZSA9IFwiL0FQSS9Fc3RpbWF0ZS9TdWJtaXRPcmRlclwiO1xyXG5cclxuICAgIC8vIEFESlVTVE1FTlRcclxuICAgIHN0YXRpYyBMb2FkRm9ybUFkanVzdG1lbnQgPSBcIi9BUEkvQWRqdXN0bWVudC9Mb2FkRm9ybVwiO1xyXG4gICAgc3RhdGljIEFkanVzdG1lbnRHZW5lcmF0ZU51bWJlciA9IFwiL0FQSS9BZGp1c3RtZW50L0dlbmVyYXRlTnVtYmVyXCI7XHJcbiAgICBzdGF0aWMgU3VibWl0QWRqdXN0bWVudCA9IFwiL0FQSS9BZGp1c3RtZW50L1N1Ym1pdE9yZGVyXCI7XHJcblxyXG4gICAgLy8gSU5WRU5UT1JZXHJcbiAgICBzdGF0aWMgRm9yZWNhc3REYXRhID0gXCJJbnZlbnRvcnkvRGF5c3RvemVyb1wiO1xyXG4gICAgc3RhdGljIEZvcmVjYXN0TG9hZGVyID0gXCJJbnZlbnRvcnlMb2FkZXIvRGF5c3RvemVyb1wiO1xyXG59XHJcbiJdfQ==
429
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVhbHBvcy1ucG0vbmctZGVhbHBvcy1saWJyYXJ5L2NvbnN0YW50cy9zcmMvQ29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxTQUFTO2FBQ1gsZUFBVSxHQUFHLGtEQUFrRCxDQUFBO2FBQy9ELHFCQUFnQixHQUFHLE9BQU8sQ0FBQTthQUMxQixjQUFTLEdBQUcsc0NBQXNDLENBQUM7YUFDbkQsb0JBQWUsR0FBRyx3QkFBd0IsQ0FBQzthQUMzQyxzQkFBaUIsR0FBRyxHQUFHLENBQUM7YUFDeEIsWUFBTyxHQUFHLHFCQUFxQixDQUFDO2FBQ2hDLFlBQU8sR0FBRyxVQUFVLENBQUM7YUFDckIsZUFBVSxHQUFHLGdDQUFnQyxDQUFBO0lBQ3BELE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBVyxFQUFFLEdBQUcsSUFBYztRQUM5QyxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzthQUNNLG1CQUFjLEdBQUcsQ0FBQyxnRUFBZ0UsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFFckgsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFVO1FBQ3hCLElBQ0ksS0FBSyxJQUFJLEVBQUU7WUFDWCxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7WUFDcEMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxTQUFTO1lBQzVCLEtBQUssSUFBSSxTQUFTO1lBQ2xCLEtBQUssSUFBSSxJQUFJLEVBQ2YsQ0FBQztZQUNDLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQVU7UUFDckIsSUFDSSxLQUFLLElBQUksRUFBRTtZQUNYLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7WUFDbkMsS0FBSyxJQUFJLFNBQVM7WUFDbEIsS0FBSyxJQUFJLElBQUk7WUFDYixLQUFLLElBQUksU0FBUyxDQUFDLFNBQVMsRUFDOUIsQ0FBQztZQUNDLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztJQUNMLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFZO1FBQ3RCLE1BQU0sUUFBUSxHQUFHLHlGQUF5RixDQUFDO1FBQzNHLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1AsTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxpREFBaUQ7SUFDakQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQVc7UUFDakMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQVksRUFBRSxFQUFPO1FBQ25DLElBQUksQ0FBQztZQUNELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDN0MsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNsQixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQixDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7YUFFTSxXQUFNLEdBQW9DO1FBQzdDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1FBQzNCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO1FBQzVCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1FBQ3pCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1FBQ3pCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1FBQ3ZCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQ3hCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQ3hCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO1FBQzFCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO1FBQzdCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1FBQzVCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO1FBQzdCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO0tBQ2hDLENBQUM7SUFFRixNQUFNLENBQUMsYUFBYSxDQUFDLFFBQWEsRUFBRSxNQUFXLEVBQUUsVUFBZTtRQUM1RCxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLE1BQU0sSUFBSSxTQUFTLElBQUksTUFBTSxJQUFJLElBQUk7WUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ3ZELElBQUksVUFBVSxJQUFJLFNBQVMsSUFBSSxVQUFVLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVTtZQUM1RCxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRW5CLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNqQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDOUIsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFXO1FBQ3ZCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FDekIsU0FBZSxFQUNmLE9BQWE7UUFFYixnREFBZ0Q7UUFDaEQsSUFBSSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWpFLGlEQUFpRDtRQUNqRCxJQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQy9CLGtCQUFrQixHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUMsQ0FDMUMsQ0FBQztRQUVGLE9BQU8sa0JBQWtCLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFTLEVBQUUsR0FBUztRQUUxQyxJQUFJLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBUyxFQUFFLEdBQVM7UUFDeEMsd0RBQXdEO1FBQ3hELElBQUksUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRS9DLDhEQUE4RDtRQUM5RCxJQUFJLFNBQVMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFekMsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsWUFBWTtRQUN0QixJQUFJLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLElBQUksSUFBSSxHQUFHLHNDQUFzQyxDQUFDLE9BQU8sQ0FDckQsT0FBTyxFQUNQLFVBQVUsQ0FBQztZQUNQLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN6QixPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUNKLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFhO1FBQ2hDLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM3RCxJQUFJLFdBQVcsR0FBRyxrQkFBa0IsQ0FDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUNQLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDVCxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ1osT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQ2hCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBb0I7UUFDekMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDN0QsSUFBSSxRQUFRLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNwRCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQWE7UUFDcEMsSUFBSSxLQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxTQUFTLEdBQUcsR0FBRyxJQUFJLFNBQVMsR0FBRyxPQUFPLEVBQUUsQ0FBQztZQUN6QyxJQUFJLEdBQUcsR0FBRyxDQUFDO1lBQ1gsS0FBSyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDO2FBQU0sSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLENBQUM7WUFDOUIsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUNYLEtBQUssR0FBRyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsQ0FBQzthQUFNLElBQUksU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLEtBQUssR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ3BDLENBQUM7UUFDRCxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNaLEtBQUssR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzlELENBQUM7SUFFTSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQVU7UUFDNUIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdkIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQztJQUNEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVU7UUFDcEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFVO1FBQ25DLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoQyxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0lBQ00sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFrQixFQUFFLENBQWtCLEVBQUUsS0FBYztRQUN4RSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLFVBQWlCLEVBQUU7UUFDbEQsSUFBSSxVQUFVLEdBQVcsRUFBRSxDQUFDO1FBQzVCLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxjQUFjLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDM0MsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDN0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxVQUFVLEdBQUcsSUFBSSxjQUFjLEdBQUcsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxlQUFlLENBQUMsU0FBZSxFQUFFLE9BQWE7UUFDeEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFM0MsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWpCLE9BQU8sSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQVUsRUFBRSxVQUFrQjtRQUN0RCxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBQ3BFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBYSxFQUFFLElBQVk7UUFDbEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsSUFBSSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvRCxPQUFPO1lBQ0gsUUFBUSxFQUFFLFFBQVE7WUFDbEIsT0FBTyxFQUFFLE9BQU87U0FDbkIsQ0FBQTtJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQVksRUFBRSxJQUFVO1FBQzlDLElBQUksT0FBTyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNNLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHLEVBQUU7UUFDbkMsTUFBTSxlQUFlLEdBQUksS0FBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEQsT0FBTyxlQUFlLENBQUM7SUFDM0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBK0IsRUFBRTtRQUNoRSxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDdkIsa0JBQWtCO2FBQ2IsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xCLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQyxhQUFhLEdBQUcsRUFBRSxHQUFHLGFBQWEsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFBO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBQ1AsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUNEOzs7R0FHRDtJQUNRLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFXO1FBQ3pDLElBQUksV0FBb0IsQ0FBQztRQUN6QixJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNoQixXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7YUFDSSxDQUFDO1lBQ0YsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFXO1FBQ2pDLElBQUksU0FBYyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUM5QyxTQUFTLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7YUFDSSxDQUFDO1lBQ0YsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBQ0Q7Ozs7O0dBS0Q7SUFDQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsU0FBZSxFQUFFLE9BQWE7UUFDckQsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE1BQU0sWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXJDLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ2pELE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDakIsQ0FBQztRQUVELHFDQUFxQztRQUNyQyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNuRCxNQUFNLEdBQUcsT0FBTyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxzQ0FBc0M7UUFDdEMsSUFBSSxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDekQsTUFBTSxHQUFHLFlBQVksQ0FBQztRQUMxQixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQzs7QUFHTCxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQVc7SUFDcEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNuQyxJQUFJLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLEtBQUs7YUFDQSxNQUFNLEVBQUU7YUFDUixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1AsT0FBTyxDQUFDO2dCQUNKLEdBQUcsRUFBRSxHQUFHO2dCQUNSLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtnQkFDcEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2FBQ3JCLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDUixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUlELE1BQU0sT0FBTyxZQUFZO2FBQ2QscUJBQWdCLEdBQUcsa0JBQWtCLENBQUM7YUFDdEMsZUFBVSxHQUFHLFlBQVksQ0FBQzthQUMxQixhQUFRLEdBQUcsVUFBVSxDQUFDO2FBQ3RCLGNBQVMsR0FBRyxXQUFXLENBQUM7YUFDeEIsaUJBQVksR0FBRyxjQUFjLENBQUM7YUFDOUIsV0FBTSxHQUFHLFFBQVEsQ0FBQzthQUNsQixVQUFLLEdBQUcsT0FBTyxDQUFDO2FBQ2hCLFdBQU0sR0FBRyxRQUFRLENBQUM7YUFDbEIsaUJBQVksR0FBRyxjQUFjLENBQUM7YUFDOUIsb0JBQWUsR0FBRyxpQkFBaUIsQ0FBQzthQUNwQyxpQkFBWSxHQUFHLGNBQWMsQ0FBQzthQUU5QiwyQkFBc0IsR0FBRyxpQ0FBaUMsQ0FBQzthQUMzRCxxQkFBZ0IsR0FBRyxvQkFBb0IsQ0FBQzthQUV4Qyx3QkFBbUIsR0FBRyw4QkFBOEIsQ0FBQzthQUNyRCw0QkFBdUIsR0FBRyxrQ0FBa0MsQ0FBQzthQUU3RCxrQkFBYSxHQUFHLHdDQUF3QyxDQUFDO2FBQ3pELGVBQVUsR0FBRyxxQkFBcUIsQ0FBQzthQUVuQyxjQUFTLEdBQUcsb0JBQW9CLENBQUM7YUFDakMsY0FBUyxHQUFHLG9CQUFvQixDQUFDO2FBQ2pDLGlCQUFZLEdBQUcsb0JBQW9CLENBQUM7YUFFcEMsdUJBQWtCLEdBQUcsZ0NBQWdDLENBQUM7YUFFdEQsZ0JBQVcsR0FBRywwQkFBMEIsQ0FBQzthQUN6QyxpQkFBWSxHQUFHLDBCQUEwQixDQUFDO0lBRWpELEtBQUs7YUFDRSxnQkFBVyxHQUFHLGdCQUFnQixDQUFDO2FBQy9CLHFCQUFnQixHQUFHLHlCQUF5QixDQUFDO2FBQzdDLHNCQUFpQixHQUFHLHlCQUF5QixDQUFDO2FBQzlDLG1CQUFjLEdBQUcsdUJBQXVCLENBQUM7YUFDekMsZ0JBQVcsR0FBRyxrQ0FBa0MsQ0FBQzthQUNqRCx1QkFBa0IsR0FBRyw2QkFBNkIsQ0FBQzthQUNuRCx3QkFBbUIsR0FBRyw4Q0FBOEMsQ0FBQzthQUNyRSx1QkFBa0IsR0FBRyxrQ0FBa0MsQ0FBQzthQUN4RCxtQkFBYyxHQUFHLDZCQUE2QixDQUFDO0lBRXRELFVBQVU7YUFDSCxxQkFBZ0IsR0FBRyxtQ0FBbUMsQ0FBQzthQUN2RCwyQkFBc0IsR0FBRyxtQ0FBbUMsQ0FBQzthQUM3RCxzQkFBaUIsR0FBRyxzQ0FBc0MsQ0FBQzthQUMzRCx5QkFBb0IsR0FBRyxnQ0FBZ0MsQ0FBQzthQUN4RCxnQkFBVyxHQUFHLGdDQUFnQyxDQUFDO2FBQy9DLHVCQUFrQixHQUFHLDhCQUE4QixDQUFBO2FBQ25ELG1CQUFjLEdBQUcsb0JBQW9CLENBQUE7SUFFNUMsV0FBVzthQUNKLHFCQUFnQixHQUFHLHdCQUF3QixDQUFDO2FBQzVDLDJCQUFzQixHQUFHLDhCQUE4QixDQUFDO2FBQ3hELG1CQUFjLEdBQUcsMkJBQTJCLENBQUM7SUFFcEQsYUFBYTthQUNOLHVCQUFrQixHQUFHLDBCQUEwQixDQUFDO2FBQ2hELDZCQUF3QixHQUFHLGdDQUFnQyxDQUFDO2FBQzVELHFCQUFnQixHQUFHLDZCQUE2QixDQUFDO0lBRXhELFlBQVk7YUFDTCxpQkFBWSxHQUFHLHNCQUFzQixDQUFDO2FBQ3RDLG1CQUFjLEdBQUcsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ29uc3RhbnRzIHtcclxuICAgIHN0YXRpYyBlbWFpbFJlZ2V4ID0gL15bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsfSQvXHJcbiAgICBzdGF0aWMgcGhvbmVOdW1iZXJSZWdleCA9IC9eXFxkKyQvXHJcbiAgICBzdGF0aWMgR3VpZEVtcHR5ID0gXCIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIjtcclxuICAgIHN0YXRpYyBEZWNpbWFsTWluVmFsdWUgPSBcIi03LjkyMjgxNjI1MTQyNjQzNGUrMjhcIjtcclxuICAgIHN0YXRpYyBJbnB1dExvY2tUaW1lU3BhbiA9IDUwMDtcclxuICAgIHN0YXRpYyBNaW5EYXRlID0gXCIwMDAxLTAxLTAxVDAwOjAwOjAwXCI7XHJcbiAgICBzdGF0aWMgTWluVGltZSA9IFwiMDA6MDA6MDBcIjtcclxuICAgIHN0YXRpYyBNaW5EZWNpbWFsID0gXCItNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzVcIlxyXG4gICAgc3RhdGljIFN0cmluZ0Zvcm1hdChtc2c6IHN0cmluZywgLi4uYXJnczogc3RyaW5nW10pOiBzdHJpbmcge1xyXG4gICAgICAgIGZvciAobGV0IF9pID0gMDsgX2kgPCBhcmdzLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgICAgICBtc2cgPSBtc2cucmVwbGFjZShgeyR7X2l9fWAsIGFyZ3NbX2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1zZztcclxuICAgIH1cclxuICAgIHN0YXRpYyBpc01vYmlsZURldmljZSA9ICgvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8SUVNb2JpbGV8T3BlcmEgTWluaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpO1xyXG5cclxuICAgIHN0YXRpYyBJc05vdEVtcHR5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHZhbHVlICE9IFwiXCIgJiZcclxuICAgICAgICAgICAgIUNvbnN0YW50cy5jb250YWluc09ubHlTcGFjZXModmFsdWUpICYmXHJcbiAgICAgICAgICAgIHZhbHVlICE9IENvbnN0YW50cy5HdWlkRW1wdHkgJiZcclxuICAgICAgICAgICAgdmFsdWUgIT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAgIHZhbHVlICE9IG51bGxcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgSXNFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB2YWx1ZSA9PSBcIlwiIHx8XHJcbiAgICAgICAgICAgIENvbnN0YW50cy5jb250YWluc09ubHlTcGFjZXModmFsdWUpIHx8XHJcbiAgICAgICAgICAgIHZhbHVlID09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICAgICB2YWx1ZSA9PSBudWxsIHx8XHJcbiAgICAgICAgICAgIHZhbHVlID09IENvbnN0YW50cy5HdWlkRW1wdHlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIGlmIGEgc3RyaW5nIGlzIGEgdmFsaWQgR1VJRC5cclxuICAgICAqIEBwYXJhbSBndWlkIC0gVGhlIHN0cmluZyB0byBiZSBjaGVja2VkLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgR1VJRCwgZmFsc2Ugb3RoZXJ3aXNlLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNHdWlkKGd1aWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHJlZ2V4RXhwID0gL15bMC05YS1mQS1GXXs4fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXs0fVxcYi1bMC05YS1mQS1GXXsxMn0kL2dpO1xyXG4gICAgICAgIGxldCBpc0d1aWQgPSBmYWxzZTtcclxuICAgICAgICBpZiAoZ3VpZCkge1xyXG4gICAgICAgICAgICBpc0d1aWQgPSByZWdleEV4cC50ZXN0KGd1aWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXNHdWlkO1xyXG4gICAgfVxyXG4gICAgLy8gY2hlY2sgd2hldGhlciBzdHJpbmcgb25seSBjb250YWlucyBibGFuayBzcGFjZVxyXG4gICAgc3RhdGljIGNvbnRhaW5zT25seVNwYWNlcyhzdHI6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiAvXlxccyokLy50ZXN0KHN0cik7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIEZpbHRlckJ5SUQoYXJyYXk6IGFueVtdLCBpZDogYW55KTogYW55IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBsaXN0ID0gYXJyYXkuZmlsdGVyKCh4KSA9PiB4LklEID09IGlkKTtcclxuICAgICAgICAgICAgaWYgKGxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGxpc3RbMF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChleCkgeyB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIE1vbnRoczogeyBJRDogbnVtYmVyLCBMYWJlbDogc3RyaW5nIH1bXSA9IFtcclxuICAgICAgICB7IElEOiAxLCBMYWJlbDogXCJKYW51YXJ5XCIgfSxcclxuICAgICAgICB7IElEOiAyLCBMYWJlbDogXCJGZWJydWFyeVwiIH0sXHJcbiAgICAgICAgeyBJRDogMywgTGFiZWw6IFwiTWFyY2hcIiB9LFxyXG4gICAgICAgIHsgSUQ6IDQsIExhYmVsOiBcIkFwcmlsXCIgfSxcclxuICAgICAgICB7IElEOiA1LCBMYWJlbDogXCJNYXlcIiB9LFxyXG4gICAgICAgIHsgSUQ6IDYsIExhYmVsOiBcIkp1bmVcIiB9LFxyXG4gICAgICAgIHsgSUQ6IDcsIExhYmVsOiBcIkp1bHlcIiB9LFxyXG4gICAgICAgIHsgSUQ6IDgsIExhYmVsOiBcIkF1Z3VzdFwiIH0sXHJcbiAgICAgICAgeyBJRDogOSwgTGFiZWw6IFwiU2VwdGVtYmVyXCIgfSxcclxuICAgICAgICB7IElEOiAxMCwgTGFiZWw6IFwiT2N0b2JlclwiIH0sXHJcbiAgICAgICAgeyBJRDogMTEsIExhYmVsOiBcIk5vdmVtYmVyXCIgfSxcclxuICAgICAgICB7IElEOiAxMiwgTGFiZWw6IFwiRGVjZW1iZXJcIiB9LFxyXG4gICAgXTtcclxuXHJcbiAgICBzdGF0aWMgR2VuZXJhdGVZZWFycyhjdXJyWWVhcjogYW55LCBsZW5ndGg6IGFueSwgSXNQcmV2aW91czogYW55KTogYW55W10ge1xyXG4gICAgICAgIGxldCBtdWx0aXBsaWVyID0gLTE7XHJcbiAgICAgICAgaWYgKGxlbmd0aCA9PSB1bmRlZmluZWQgfHwgbGVuZ3RoID09IG51bGwpIGxlbmd0aCA9IDExO1xyXG4gICAgICAgIGlmIChJc1ByZXZpb3VzID09IHVuZGVmaW5lZCB8fCBJc1ByZXZpb3VzID09IG51bGwgfHwgIUlzUHJldmlvdXMpXHJcbiAgICAgICAgICAgIG11bHRpcGxpZXIgPSAxO1xyXG5cclxuICAgICAgICBjb25zdCB5ZWFycyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgeWVhcnMucHVzaChjdXJyWWVhciArIGkgKiBtdWx0aXBsaWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHllYXJzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVmYWN0b3IgZnVuY3Rpb25cclxuICAgICAqIEBwYXJhbSBkYXRlXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBEYXRlT25seShkYXRlPzogRGF0ZSk6IERhdGUge1xyXG4gICAgICAgIGlmIChkYXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShuZXcgRGF0ZShkYXRlKS50b0RhdGVTdHJpbmcoKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKG5ldyBEYXRlKCkudG9EYXRlU3RyaW5nKCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGphdmFzY3JpcHQgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBkYXRlcyBpbiBkYXlzXHJcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIFxyXG4gICAgICogQHBhcmFtIGVuZERhdGUgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBkaWZmZXJlbnRJbkRheXMoXHJcbiAgICAgICAgc3RhcnREYXRlOiBEYXRlLFxyXG4gICAgICAgIGVuZERhdGU6IERhdGVcclxuICAgICk6IG51bWJlciB7XHJcbiAgICAgICAgLy8gVG8gY2FsY3VsYXRlIHRoZSB0aW1lIGRpZmZlcmVuY2Ugb2YgdHdvIGRhdGVzXHJcbiAgICAgICAgbGV0IERpZmZlcmVuY2VfSW5fVGltZSA9IGVuZERhdGUuZ2V0VGltZSgpIC0gc3RhcnREYXRlLmdldFRpbWUoKTtcclxuXHJcbiAgICAgICAgLy8gVG8gY2FsY3VsYXRlIHRoZSBuby4gb2YgZGF5cyBiZXR3ZWVuIHR3byBkYXRlc1xyXG4gICAgICAgIGxldCBEaWZmZXJlbmNlX0luX0RheXMgPSBNYXRoLmZsb29yKFxyXG4gICAgICAgICAgICBEaWZmZXJlbmNlX0luX1RpbWUgLyAoMTAwMCAqIDM2MDAgKiAyNClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByZXR1cm4gRGlmZmVyZW5jZV9Jbl9EYXlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIGphdmFzY3JpcHQgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBkYXRlcyBpbiBtaW51dGVzXHJcbiAgICAgKiBAcGFyYW0gZHQxIFxyXG4gICAgICogQHBhcmFtIGR0MiBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIG1pbnV0ZXNEaWZmKGR0MTogRGF0ZSwgZHQyOiBEYXRlKSB7XHJcblxyXG4gICAgICAgIGxldCBkaWZmTWluID0gKGR0Mi5nZXRUaW1lKCkgLSBkdDEuZ2V0VGltZSgpKSAvIDYwMDAwO1xyXG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwoZGlmZk1pbik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXMgaW4gaG91cnMgamF2YXNjcmlwdFxyXG4gICAgICogQHBhcmFtIGR0MSBcclxuICAgICAqIEBwYXJhbSBkdDIgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBob3Vyc0RpZmYoZHQxOiBEYXRlLCBkdDI6IERhdGUpIHtcclxuICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIHRpbWUgZGlmZmVyZW5jZSBvZiB0d28gZGF0ZXMgSmF2YVNjcmlwdFxyXG4gICAgICAgIGxldCBkaWZmVGltZSA9IChkdDIuZ2V0VGltZSgpIC0gZHQxLmdldFRpbWUoKSk7XHJcblxyXG4gICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGRheXMgYmV0d2VlbiBob3VycyBkYXRlcyBqYXZhc2NyaXB0XHJcbiAgICAgICAgbGV0IGhvdXJzRGlmZiA9IGRpZmZUaW1lIC8gKDEwMDAgKiAzNjAwKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoaG91cnNEaWZmLnRvRml4ZWQoMSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlIFVuaXF1ZSBJZGVudGlmaWVyIGluIHRoZSBDbGllbnQgU2lkZSBlcXVpdmFsZW50IHRvIEMjIE5ld0d1aWQoKVxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBHdWlkX05ld0d1aWQoKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgZHQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICBsZXQgdXVpZCA9IFwieHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4XCIucmVwbGFjZShcclxuICAgICAgICAgICAgL1t4eV0vZyxcclxuICAgICAgICAgICAgZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICAgICAgICAgIHZhciByID0gKGR0ICsgTWF0aC5yYW5kb20oKSAqIDE2KSAlIDE2IHwgMDtcclxuICAgICAgICAgICAgICAgIGR0ID0gTWF0aC5mbG9vcihkdCAvIDE2KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoYyA9PSBcInhcIiA/IHIgOiAociAmIDB4MykgfCAweDgpLnRvU3RyaW5nKDE2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHV1aWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBwYXJzZUp3dCh0b2tlbjogc3RyaW5nKSB7XHJcbiAgICAgICAgdmFyIGJhc2U2NFVybCA9IHRva2VuLnNwbGl0KFwiLlwiKVsxXTtcclxuICAgICAgICB2YXIgYmFzZTY0ID0gYmFzZTY0VXJsLnJlcGxhY2UoLy0vZywgXCIrXCIpLnJlcGxhY2UoL18vZywgXCIvXCIpO1xyXG4gICAgICAgIHZhciBqc29uUGF5bG9hZCA9IGRlY29kZVVSSUNvbXBvbmVudChcclxuICAgICAgICAgICAgYXRvYihiYXNlNjQpXHJcbiAgICAgICAgICAgICAgICAuc3BsaXQoXCJcIilcclxuICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCIlXCIgKyAoXCIwMFwiICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5qb2luKFwiXCIpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoanNvblBheWxvYWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgbnVtYmVyT25seShldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGNoYXJDb2RlID0gKGV2ZW50LndoaWNoKSA/IGV2ZW50LndoaWNoIDogZXZlbnQua2V5Q29kZTtcclxuICAgICAgICBpZiAoY2hhckNvZGUgPiAzMSAmJiAoY2hhckNvZGUgPCA0OCB8fCBjaGFyQ29kZSA+IDU3KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZm9ybWF0IG51bWJlciB0byB1bml0XHJcbiAgICAgKiBAcGFyYW0gdG90YWwgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBmb3JtYXROdW1iZXIodG90YWw6IG51bWJlcikge1xyXG4gICAgICAgIGxldCB2YWx1ZTogc3RyaW5nID0gJyc7XHJcbiAgICAgICAgbGV0IHVuaXQgPSBcIlwiO1xyXG4gICAgICAgIGxldCBhYnNOdW1iZXIgPSBNYXRoLmFicyh0b3RhbCk7XHJcbiAgICAgICAgaWYgKGFic051bWJlciA+IDk5OSAmJiBhYnNOdW1iZXIgPCAxMDAwMDAwKSB7XHJcbiAgICAgICAgICAgIHVuaXQgPSBcIktcIjtcclxuICAgICAgICAgICAgdmFsdWUgPSAoYWJzTnVtYmVyIC8gMTAwMCkudG9GaXhlZCgwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGFic051bWJlciA+PSAxMDAwMDAwKSB7XHJcbiAgICAgICAgICAgIHVuaXQgPSBcIk1cIjtcclxuICAgICAgICAgICAgdmFsdWUgPSAoYWJzTnVtYmVyIC8gMTAwMDAwMCkudG9GaXhlZCgwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGFic051bWJlciA8IDk5OSkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGFic051bWJlci50b1N0cmluZygpOyAvL1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodG90YWwgPCAwKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gXCItXCIgKyB2YWx1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIikgKyB1bml0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNUb0RheShkYXRlOiBEYXRlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKGRhdGUpIHtcclxuICAgICAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgbm93LnNldEhvdXJzKDAsIDAsIDAsIDApO1xyXG4gICAgICAgICAgICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xyXG4gICAgICAgICAgICByZXR1cm4gbm93LmdldFRpbWUoKSA9PSBkYXRlLmdldFRpbWUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIHNldCBkYXRlIHRpbWUgdG8gbGF0ZXN0IHRpbWUgZGF5XHJcbiAgICAgKiBAcGFyYW0gZGF0ZSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHNldFRvTGF0ZXN0VGltZShkYXRlOiBEYXRlKTogRGF0ZSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZUxhc3RUaW1lID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICAgICAgZGF0ZUxhc3RUaW1lLnNldEhvdXJzKDIzLCA1OSwgNTkpO1xyXG4gICAgICAgIHJldHVybiBkYXRlTGFzdFRpbWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXQgZGF0ZSB0aW1lIHRvIGZpcnN0IHRpbWUgZGF5XHJcbiAgICAgKiBAcGFyYW0gZGF0ZSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHNldFRvRmlyc3RUaW1lKGRhdGU6IERhdGUpOiBEYXRlIHtcclxuICAgICAgICBjb25zdCBkYXRlRmlyc3RUaW1lID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICAgICAgZGF0ZUZpcnN0VGltZS5zZXRIb3VycygwLCAwLCAwKTtcclxuICAgICAgICByZXR1cm4gZGF0ZUZpcnN0VGltZTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzdGF0aWMgY29tcGFyZShhOiBudW1iZXIgfCBzdHJpbmcsIGI6IG51bWJlciB8IHN0cmluZywgaXNBc2M6IGJvb2xlYW4pOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiAoYSA8IGIgPyAtMSA6IDEpICogKGlzQXNjID8gMSA6IC0xKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGdlbmVyYXRlIHNlcmlhbCBhcyBub3RlIHdpdGggZm9ybWF0IFsnc2VyaWFsJypRdWFudGl0eV1cclxuICAgICAqIGV4OiBbMDBBUzMyKjYsIDAwODlBXVxyXG4gICAgICogQHBhcmFtIHNlcmlhbHMgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBnZW5lcmF0ZVNlcmlhbGFzTm90ZShzZXJpYWxzOiBhbnlbXSA9IFtdKSB7XHJcbiAgICAgICAgbGV0IHNlcmlhbE5vdGU6IHN0cmluZyA9ICcnO1xyXG4gICAgICAgIGlmIChzZXJpYWxzICYmIHNlcmlhbHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgc2VyaWFsQVNTdHJpbmcgPSBzZXJpYWxzLm1hcCgoc2VyaWFsLCBpKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aSA+IDAgPyBcIiBcIiA6IFwiXCJ9JHtzZXJpYWwuTnVtYmVyfSR7KHNlcmlhbC5RdWFudGl0eSA+IDEgfHwgc2VyaWFsLlF1YW50aXR5IDwgMCkgPyBcIipcIiArIHNlcmlhbC5RdWFudGl0eSA6IFwiXCJ9YDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHNlcmlhbE5vdGUgPSBgWyR7c2VyaWFsQVNTdHJpbmd9XWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzZXJpYWxOb3RlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGF0ZXNJblJhbmdlKHN0YXJ0RGF0ZTogRGF0ZSwgZW5kRGF0ZTogRGF0ZSk6IERhdGVbXSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHN0YXJ0RGF0ZS5nZXRUaW1lKCkpO1xyXG5cclxuICAgICAgICBjb25zdCBkYXRlcyA9IFtdO1xyXG5cclxuICAgICAgICB3aGlsZSAoZGF0ZSA8PSBlbmREYXRlKSB7XHJcbiAgICAgICAgICAgIGRhdGVzLnB1c2gobmV3IERhdGUoZGF0ZSkpO1xyXG4gICAgICAgICAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyAxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBkYXRlcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwYXJhbSBkYXRlIFxyXG4gICAgICogQHBhcmFtIGRheXNCZWZvcmUgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBnZXREYXlzQmVmb3JlKGRhdGU6IERhdGUsIGRheXNCZWZvcmU6IG51bWJlcik6IERhdGUge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLnNldERhdGUobmV3IERhdGUoKS5nZXREYXRlKCkgLSBkYXlzQmVmb3JlKSlcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGdldCBmaXJzdCBhbmQgbGFzdCBkYXkgYnkgbW9udGggYW5kIHllYXJcclxuICAgICAqIEBwYXJhbSBtb250aCBcclxuICAgICAqIEBwYXJhbSB5ZWFyIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UmFuZ2VEYXRlKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcikge1xyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGRhdGUuc2V0TW9udGgobW9udGgpO1xyXG4gICAgICAgIGRhdGUuc2V0RnVsbFllYXIoeWVhcik7XHJcbiAgICAgICAgbGV0IGZpcnN0RGF5ID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCkgLSAxLCAxKTtcclxuICAgICAgICBsZXQgbGFzdERheSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAwKTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBmaXJzdERheTogZmlyc3REYXksXHJcbiAgICAgICAgICAgIGxhc3REYXk6IGxhc3REYXlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBzZXREYXRlVGltZSh0aW1lOiBzdHJpbmcsIGRhdGU6IERhdGUpOiBEYXRlIHtcclxuICAgICAgICBsZXQgbmV3RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgaWYgKGRhdGUpIHtcclxuICAgICAgICAgICAgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdGltZXMgPSB0aW1lLnNwbGl0KFwiOlwiKTtcclxuICAgICAgICBuZXdEYXRlLnNldEhvdXJzKHBhcnNlSW50KHRpbWVzWzBdKSk7XHJcbiAgICAgICAgbmV3RGF0ZS5zZXRNaW51dGVzKHBhcnNlSW50KHRpbWVzWzFdKSk7XHJcbiAgICAgICAgcmV0dXJuIG5ld0RhdGU7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc3RhdGljIGlzTWFza2luZ0ZpZWxkKHZhbHVlID0gXCJcIik6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGhhc1F1ZXN0aW9uTWFyayA9ICh2YWx1ZSBhcyBzdHJpbmcpLmluY2x1ZGVzKFwiP1wiKTtcclxuICAgICAgICByZXR1cm4gaGFzUXVlc3Rpb25NYXJrO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2VuZXJhdGVNYXNraW5nRmllbGQoY29uZmlnTWFza2luZ0ZpZWxkOiBzdHJpbmdbXSA9IFtdKSB7XHJcbiAgICAgICAgbGV0IG1hc2tpbmdGaWVsZHMgPSB7fTtcclxuICAgICAgICBjb25maWdNYXNraW5nRmllbGRcclxuICAgICAgICAgICAgLmZvckVhY2goKGZpZWxkLCBpKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBmaWVsZCA9IGZpZWxkLnNwbGl0KCcgJyk/LmpvaW4oJycpO1xyXG4gICAgICAgICAgICAgICAgbWFza2luZ0ZpZWxkcyA9IHsgLi4ubWFza2luZ0ZpZWxkcywgW2ZpZWxkXTogdHJ1ZSB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBtYXNraW5nRmllbGRzO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAqIENoZWNrIGlmIEpTIEFQSSBmdW5jdGlvbiBpcyBzdXBwb3J0ZWQgaW4gYSBjdXJyZW50IGJyb3dzZXJcclxuICogQHBhcmFtIGFwaSBleDogc3RydWN0dXJlZENsb25lXHJcbiAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBjaGVja0pTQXBpU3VwcG9ydGVkKGFwaTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IGlzU3VwcG9ydGVkOiBib29sZWFuO1xyXG4gICAgICAgIGlmIChhcGkgaW4gd2luZG93KSB7XHJcbiAgICAgICAgICAgIGlzU3VwcG9ydGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlzU3VwcG9ydGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpc1N1cHBvcnRlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGNvcHkgb2YgYWxsIGVsZW1lbnRzIG9mIHRoZSBvcmlnaW5hbCBvYmplY3QuIFxyXG4gICAgICogQ2hhbmdlcyBtYWRlIHRvIHRoZSBvcmlnaW5hbCBvYmplY3Qgd2lsbCBub3QgYmUgcmVmbGVjdGVkIGluIHRoZSBjb3B5XHJcbiAgICAgKiBAcGFyYW0gb2JqZWN0IFxyXG4gICAgICogQHBhcmFtIHR5cGUgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgY2xvbmVPYmplY3Qob2JqZWN0OiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGxldCBuZXdPYmplY3Q6IGFueTtcclxuICAgICAgICBpZiAodGhpcy5jaGVja0pTQXBpU3VwcG9ydGVkKCdzdHJ1Y3R1cmVkQ2xvbmUnKSkge1xyXG4gICAgICAgICAgICBuZXdPYmplY3QgPSBzdHJ1Y3R1cmVkQ2xvbmUob2JqZWN0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5ld09iamVjdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdPYmplY3Q7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICogZm9ybWF0IHRpdGxlIGZvciBmcm9tIGZpbHRlciB0byBzaG93aW5nIGluIHRpdGxlXHJcbiAqIEBwYXJhbSBzdGFydERhdGVcclxuICogQHBhcmFtIGVuZERhdGVcclxuICogQHJldHVybnNcclxuICovXHJcbiAgICBzdGF0aWMgZm9ybWF0VGl0bGVGcm9tRGF0ZShzdGFydERhdGU6IERhdGUsIGVuZERhdGU6IERhdGUpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBsZXQgZm9ybWF0ID0gbnVsbDtcclxuICAgICAgICBjb25zdCBzdGFydERhdGVPYmogPSBuZXcgRGF0ZShzdGFydERhdGUpO1xyXG4gICAgICAgIGNvbnN0IGVuZERhdGVPYmogPSBuZXcgRGF0ZShlbmREYXRlKTtcclxuXHJcbiAgICAgICAgaWYgKHN0YXJ0RGF0ZU9iai5nZXREYXRlKCkgIT0gZW5kRGF0ZU9iai5nZXREYXRlKCkpIHtcclxuICAgICAgICAgICAgZm9ybWF0ID0gXCJkXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBzZXQgZm9ybWF0IG9ubHkgZGF5cyBvbiBzYW1lIG1vbnRoXHJcbiAgICAgICAgaWYgKHN0YXJ0RGF0ZU9iai5nZXRNb250aCgpICE9IGVuZERhdGVPYmouZ2V0TW9udGgoKSkge1xyXG4gICAgICAgICAgICBmb3JtYXQgPSBcImQgTU1NXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBzZXQgZnVsbCBmb3JtYXQgd2hlbiBkaWZmZXJlbnQgeWVhclxyXG4gICAgICAgIGlmIChzdGFydERhdGVPYmouZ2V0RnVsbFllYXIoKSAhPSBlbmREYXRlT2JqLmdldEZ1bGxZZWFyKCkpIHtcclxuICAgICAgICAgICAgZm9ybWF0ID0gXCJkIE1NTSB5eXl5XCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZm9ybWF0O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VJbmZvKHNyYzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIGxldCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICAgIGltYWdlLnNyYyA9IHNyYztcclxuICAgICAgICBpbWFnZVxyXG4gICAgICAgICAgICAuZGVjb2RlKClcclxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBzcmMsXHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpbWFnZS5oZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGltYWdlLndpZHRoXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYEltYWdlIGxvYWQgZXJyb3IgZm9yICR7c3JjfWApKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgTG9jYWxEYXRhS2V5IHtcclxuICAgIHN0YXRpYyBPZmZsaW5lUXVlcnlNb2RlID0gXCJPZmZsaW5lUXVlcnlNb2RlXCI7XHJcbiAgICBzdGF0aWMgUE9TU3RvcmFnZSA9IFwiUE9TU3RvcmFnZVwiO1xyXG4gICAgc3RhdGljIFByb2R1Y3RzID0gXCJQcm9kdWN0c1wiO1xyXG4gICAgc3RhdGljIEN1c3RvbWVycyA9IFwiQ3VzdG9tZXJzXCI7XHJcbiAgICBzdGF0aWMgT3V0bGV0UHJpY2VzID0gXCJPdXRsZXRQcmljZXNcIjtcclxuICAgIHN0YXRpYyBPdXRsZXQgPSBcIk91dGxldFwiO1xyXG4gICAgc3RhdGljIFBhcmtzID0gXCJQYXJrc1wiO1xyXG4gICAgc3RhdGljIE9yZGVycyA9IFwiT3JkZXJzXCI7XHJcbiAgICBzdGF0aWMgRmFpbGVkT3JkZXJzID0gXCJGYWlsZWRPcmRlcnNcIjtcclxuICAgIHN0YXRpYyBDb21wbGV0ZWRPcmRlcnMgPSBcIkNvbXBsZXRlZE9yZGVyc1wiO1xyXG4gICAgc3RhdGljIE5ld0N1c3RvbWVycyA9IFwiTmV3Q3VzdG9tZXJzXCI7XHJcblxyXG4gICAgc3RhdGljIEdldFJld2FyZEJ5UHJvbW90aW9uSUQgPSBcIi9BUEkvUE9TL0dldFJld2FyZEJ5UHJvbW90aW9uSURcIjtcclxuICAgIHN0YXRpYyBHZXRMaXN0UHJvbW90aW9uID0gXCIvQVBJL1BPUy9Qcm9tb3Rpb25cIjtcclxuXHJcbiAgICBzdGF0aWMgR2VuZXJhdGVHb3BheVFyQ29kZSA9IFwiL0FQSS9QT1MvR2VuZXJhdGVHb1BheVFyQ29kZVwiO1xyXG4gICAgc3RhdGljIEdlbmVyYXRlRW1wYXRLYWxpUXJDb2RlID0gXCIvQVBJL1BPUy9HZW5lcmF0ZUVtcGF0S2FsaVFyQ29kZVwiO1xyXG5cclxuICAgIHN0YXRpYyBWZXJpZnlQYXltZW50ID0gXCIvQVBJL1BheW1lbnROb3RpZmljYXRpb24vVmVyaWZ5UGF5bWVudFwiO1xyXG4gICAgc3RhdGljIFBheVdpdGhPdm8gPSBcIi9BUEkvUE9TL1BheVdpdGhPdm9cIjtcclxuXHJcbiAgICBzdGF0aWMgSW52b2ljZUE0ID0gXCIvQVBJL1ByaW50L0ludm9pY2VcIjtcclxuICAgIHN0YXRpYyBVcGxvYWRDc3YgPSBcIi9BUEkvUE9TL1VwbG9hZENzdlwiO1xyXG4gICAgc3RhdGljIFVwbG9hZENzdkJ1eSA9IFwiL0FQSS9CdXkvVXBsb2FkQ3N2XCI7XHJcblxyXG4gICAgc3RhdGljIEdlbmVyYXRlQ29tbWlzc2lvbiA9IFwiL0FQSS9UcmFuc2FjdGlvbi9HZXRDb21taXNzaW9uXCI7XHJcblxyXG4gICAgc3RhdGljIEludm9pY2VJbmZvID0gXCIvYXBpL0ludm9pY2UvSW52b2ljZUluZm9cIjtcclxuICAgIHN0YXRpYyBHZW5lcmF0ZUxpbmsgPSBcIi9BUEkvUGF5Tm93L0dlbmVyYXRlTGlua1wiO1xyXG5cclxuICAgIC8vQnV5XHJcbiAgICBzdGF0aWMgTG9hZEZvcm1CdXkgPSBcIi9BUEkvQnV5Mi9Mb2FkXCI7XHJcbiAgICBzdGF0aWMgQnV5R2V0T3V0bGV0SW5mbyA9IFwiL0FQSS9CdXkyL0dldE91dGxldEluZm9cIjtcclxuICAgIHN0YXRpYyBCdXlHZW5lcmF0ZU51bWJlciA9IFwiL0FQSS9CdXkvR2VuZXJhdGVOdW1iZXJcIjtcclxuICAgIHN0YXRpYyBCdXlHZXREYXRhQnlJRCA9IFwiL0FQSS9CdXkyL0dldERhdGFCeUlEXCI7XHJcbiAgICBzdGF0aWMgR2V0UXVpY2tLZXkgPSBcIi9BUEkvY2F0YWxvZy9wcm9kdWN0L0dldFF1aWNrS2V5XCI7XHJcbiAgICBzdGF0aWMgR2V0UHJpbnRUZW1wbGF0ZUlEID0gXCIvQVBJL0J1eS9HZXRQcmludFRlbXBsYXRlSURcIjtcclxuICAgIHN0YXRpYyBHZXRWYXJpYW50U3RvY2tCeUlEID0gXCIvQVBJL2NhdGFsb2cvdmFyaWFudC9HZXRJbnZlbnRvcnlCeVZhcmlhbnRJRFwiO1xyXG4gICAgc3RhdGljIEdldFN1cHBsaWVySW52b2ljZSA9IFwiL0FQSS9CdXkvR2V0U3VwcGxpZXJJbnZvaWNlUmV0dXJcIjtcclxuICAgIHN0YXRpYyBHZXRTdXBwbGllckRUTyA9IFwiL0FQSS9Db250YWN0L0dldFN1cHBsaWVyRFRPXCI7XHJcblxyXG4gICAgLy9ERUxJVkVSWVxyXG4gICAgc3RhdGljIExvYWRGb3JtRGVsaXZlcnkgPSBcIi9BUEkvVHJhbnNmZXJPcmRlckxvYWRlci9Mb2FkRm9ybVwiO1xyXG4gICAgc3RhdGljIERlbGl2ZXJ5R2VuZXJhdGVOdW1iZXIgPSBcIi9BUEkvVHJhbnNmZXJPcmRlci9HZW5lcmF0ZU51bWJlclwiO1xyXG4gICAgc3RhdGljIFVwZGF0ZUNvdXJpZXJMaXN0ID0gXCIvQVBJL1RyYW5zZmVyT3JkZXIvVXBkYXRlQ291cmllckxpc3RcIjtcclxuICAgIHN0YXRpYyBTdWJtaXRPdXRsZXREZWxpdmVyeSA9IFwiL0FQSS9UcmFuc2Zlck9yZGVyL1N1Ym1pdE9yZGVyXCI7XHJcbiAgICBzdGF0aWMgQ2xlYXJPdXRsZXQgPSBcIi9BUEkvVHJhbnNmZXJPcmRlci9DbGVhck91dGxldFwiO1xyXG4gICAgc3RhdGljIFBheW1lbnRMaXN0U29ydGluZyA9IFwiL0FQSS9TZXR1cC9Tb3J0UGF5bWVudE1ldGhvZFwiXHJcbiAgICBzdGF0aWMgVGF4TGlzdFNvcnRpbmcgPSBcIi9BUEkvU2V0dXAvU29ydFRheFwiXHJcblxyXG4gICAgLy8gRVNUSU1BVEVcclxuICAgIHN0YXRpYyBMb2FkRm9ybUVzdGltYXRlID0gXCIvQVBJL0VzdGltYXRlL0xvYWRGb3JtXCI7XHJcbiAgICBzdGF0aWMgRXN0aW1hdGVHZW5lcmF0ZU51bWJlciA9IFwiL0FQSS9Fc3RpbWF0ZS9HZW5lcmF0ZU51bWJlclwiO1xyXG4gICAgc3RhdGljIFN1Ym1pdEVzdGltYXRlID0gXCIvQVBJL0VzdGltYXRlL1N1Ym1pdE9yZGVyXCI7XHJcblxyXG4gICAgLy8gQURKVVNUTUVOVFxyXG4gICAgc3RhdGljIExvYWRGb3JtQWRqdXN0bWVudCA9IFwiL0FQSS9BZGp1c3RtZW50L0xvYWRGb3JtXCI7XHJcbiAgICBzdGF0aWMgQWRqdXN0bWVudEdlbmVyYXRlTnVtYmVyID0gXCIvQVBJL0FkanVzdG1lbnQvR2VuZXJhdGVOdW1iZXJcIjtcclxuICAgIHN0YXRpYyBTdWJtaXRBZGp1c3RtZW50ID0gXCIvQVBJL0FkanVzdG1lbnQvU3VibWl0T3JkZXJcIjtcclxuXHJcbiAgICAvLyBJTlZFTlRPUllcclxuICAgIHN0YXRpYyBGb3JlY2FzdERhdGEgPSBcIkludmVudG9yeS9EYXlzdG96ZXJvXCI7XHJcbiAgICBzdGF0aWMgRm9yZWNhc3RMb2FkZXIgPSBcIkludmVudG9yeUxvYWRlci9EYXlzdG96ZXJvXCI7XHJcbn1cclxuIl19
@@ -77,7 +77,6 @@ class UppyComponent {
77
77
  this.showSubtitle = false;
78
78
  console.log(_, uppyFiles, file);
79
79
  this.fileUploaded.emit(file);
80
- this.onResetUppy();
81
80
  this.file.set(uppyFiles[0].data);
82
81
  Papa.parse(file, {
83
82
  skipEmptyLines: 'greedy',
@@ -1 +1 @@
1
- {"version":3,"file":"dealpos-npm-ng-dealpos-library-components-uppy-file-upload.mjs","sources":["../../../projects/dealpos-npm/ng-dealpos-library/components/uppy-file-upload/src/uppy.component.ts","../../../projects/dealpos-npm/ng-dealpos-library/components/uppy-file-upload/src/uppy.component.html","../../../projects/dealpos-npm/ng-dealpos-library/components/uppy-file-upload/dealpos-npm-ng-dealpos-library-components-uppy-file-upload.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n effect,\r\n EventEmitter,\r\n inject,\r\n input,\r\n Input,\r\n Output,\r\n signal,\r\n} from '@angular/core';\r\nimport { ConvertCsvService } from '@dealpos-npm/ng-dealpos-library/services/csv-parser';\r\nimport { HttpService } from '@dealpos-npm/ng-dealpos-library/services/http';\r\nimport { UppyAngularDashboardModule } from '@uppy/angular';\r\nimport Compressor from '@uppy/compressor';\r\nimport { Uppy } from '@uppy/core';\r\nimport '@uppy/core/dist/style.min.css';\r\nimport '@uppy/dashboard/dist/style.min.css';\r\nimport Transloadit, {\r\n COMPANION_ALLOWED_HOSTS,\r\n COMPANION_URL,\r\n} from '@uppy/transloadit';\r\nimport Papa from 'papaparse';\r\n\r\n@Component({\r\n selector: 'POS-uppy',\r\n standalone: true,\r\n imports: [UppyAngularDashboardModule, CommonModule],\r\n templateUrl: './uppy.component.html',\r\n styleUrl: './uppy.component.scss',\r\n})\r\nexport class UppyComponent {\r\n @Input() sampleUrl: string = '';\r\n @Input() subtitle: string = '';\r\n @Input()\r\n showSample: boolean = true;\r\n /**\r\n * For manually resetting Uppy after a successful upload\r\n */\r\n clear = input<boolean>(false);\r\n showSubtitle: boolean = true;\r\n uppyCoreConfiguration = input<any>();\r\n dashboardPropsConfiguration = input<any>();\r\n @Output() fileUploaded = new EventEmitter<Blob | File>();\r\n @Output() fileUploadComplete = new EventEmitter<Blob | File>();\r\n @Output() fileRemoved = new EventEmitter<string>();\r\n @Output() onParser = new EventEmitter<any>();\r\n @Output() multipleFilesUploaded = new EventEmitter<\r\n { file: Blob | File; id: string }[]\r\n >();\r\n\r\n http = inject(HttpService);\r\n csvParser = inject(ConvertCsvService);\r\n\r\n rowSummary = signal<{ rowCount: number; rowEmpty: number }>({\r\n rowCount: 0,\r\n rowEmpty: 0,\r\n });\r\n\r\n file = signal<File | null>(null);\r\n multipleFiles = signal<{ file: Blob | File; id: string }[]>([]);\r\n\r\n private static sizes = [\r\n 'Bytes',\r\n 'KB',\r\n 'MB',\r\n 'GB',\r\n 'TB',\r\n 'PB',\r\n 'EB',\r\n 'ZB',\r\n 'YB',\r\n ] as const;\r\n private static kilobyte = 1024;\r\n\r\n uppy: Uppy = new Uppy({\r\n debug: true,\r\n autoProceed: true,\r\n allowMultipleUploadBatches: false,\r\n restrictions: {\r\n allowedFileTypes: ['.csv'],\r\n maxTotalFileSize: 1000000,\r\n },\r\n }).use(Compressor, {\r\n mimeType: 'image/jpeg',\r\n convertSize: Infinity,\r\n convertTypes: ['image/png'],\r\n });\r\n\r\n dashboardProps = {\r\n hideUploadButton: true,\r\n height: 350,\r\n };\r\n\r\n constructor() {\r\n effect(() => this.uppy.setOptions({ ...this.uppyCoreConfiguration() }));\r\n effect(\r\n () =>\r\n (this.dashboardProps = {\r\n ...this.dashboardProps,\r\n ...this.dashboardPropsConfiguration(),\r\n })\r\n );\r\n\r\n this.uppy.on('upload', (_, uppyFiles) => {\r\n const file = uppyFiles[0]?.data as File;\r\n this.showSample = false;\r\n this.showSubtitle = false;\r\n\r\n console.log(_, uppyFiles, file);\r\n this.fileUploaded.emit(file);\r\n this.onResetUppy();\r\n this.file.set(uppyFiles[0].data as File);\r\n\r\n Papa.parse(file, {\r\n skipEmptyLines: 'greedy',\r\n header: true,\r\n beforeFirstChunk: (_chunk) => {\r\n const withOutHeader = _chunk.split(/\\r?\\n/).slice(1);\r\n if (withOutHeader[withOutHeader.length - 1] === '')\r\n withOutHeader.pop();\r\n this.rowSummary.update((res) => ({\r\n ...res,\r\n rowCount: withOutHeader.length,\r\n }));\r\n withOutHeader.forEach((row) => {\r\n const emptyRow = row.split(',').every((row) => row === '');\r\n\r\n if (emptyRow)\r\n this.rowSummary.update((res) => ({\r\n ...res,\r\n rowEmpty: res.rowEmpty + 1,\r\n }));\r\n });\r\n return _chunk; // Return the original chunk to continue parsing\r\n },\r\n error(error, file) {\r\n console.log('ERROR', error, file);\r\n },\r\n complete: (results, _file) => {\r\n this.onParser.emit(results.data);\r\n },\r\n });\r\n });\r\n\r\n this.uppy.on('complete', (uppyFiles) => {\r\n const multipleFiles =\r\n uppyFiles.successful?.map((d) => ({ file: d.data, id: d.id })) ?? [];\r\n const file = uppyFiles.successful![0]?.data;\r\n this.showSample = false;\r\n this.showSubtitle = false;\r\n\r\n console.log(file);\r\n this.fileUploadComplete.emit(file);\r\n this.multipleFilesUploaded.emit(multipleFiles);\r\n this.onResetUppy();\r\n this.file.set(file as File);\r\n this.multipleFiles.set(multipleFiles);\r\n });\r\n\r\n this.uppy.on('transloadit:upload', (x, y) => {\r\n console.log(x, y);\r\n });\r\n this.uppy.on('transloadit:result', (stepName, result) => {\r\n console.log(stepName, result);\r\n });\r\n\r\n this.uppy.on('file-removed', (f) => {\r\n this.showSample = true;\r\n this.showSubtitle = true;\r\n this.file.set(null);\r\n const currentFiles = this.multipleFiles();\r\n const updatedFiles = currentFiles.filter((r) => r.id != f.id);\r\n this.multipleFiles.set(updatedFiles);\r\n this.fileRemoved.emit(f.id);\r\n this.rowSummary.set({ rowCount: 0, rowEmpty: 0 });\r\n });\r\n }\r\n\r\n private onResetUppy() {\r\n if (this.clear()) {\r\n this.uppy.clear();\r\n }\r\n }\r\n\r\n /**\r\n * Converts a given number of bytes into a human-readable string.\r\n * @param bytes The number of bytes to convert.\r\n * @param decimalPoints The number of decimal places to display. Defaults to 2.\r\n * @returns A string in the form of \"X.XX [unit]\" where X is the numerical value and unit is the appropriate unit of measurement (Bytes, KB, MB, GB, etc.).\r\n */\r\n formatFileSize(bytes: number, decimalPoints = 2): string {\r\n if (bytes === 0) {\r\n return `0 bytes`;\r\n }\r\n\r\n const i = Math.floor(Math.log(bytes) / Math.log(UppyComponent.kilobyte));\r\n const size = bytes / Math.pow(UppyComponent.kilobyte, i);\r\n return `${size.toFixed(decimalPoints)} ${UppyComponent.sizes[i]}`;\r\n }\r\n}\r\n","<div class=\"position-relative\">\r\n <uppy-dashboard [uppy]=\"uppy\" [props]=\"dashboardProps\"> </uppy-dashboard>\r\n <small *ngIf=\"subtitle && showSubtitle\" class=\"subtitle position-absolute\">{{subtitle}}</small>\r\n <a *ngIf=\"sampleUrl && showSample\" class=\"sample position-absolute\" [class.top-58]=\"subtitle\" role=\"button\"\r\n [href]=\"sampleUrl\">\r\n <i class=\"fa-solid fa-download ms-3\"></i> Download Template\r\n </a>\r\n\r\n @if (file() && file()?.type === 'text/csv') {\r\n <div class=\"alert alert-warning d-flex flex-column gap-2\" style=\"margin: 1rem 0 0 0;\" role=\"alert\">\r\n <h4 class=\"alert-heading\">CSV File Content Summary</h4>\r\n <hr>\r\n <p class=\"fs-6 m-0\">{{rowSummary().rowCount}} rows found <ng-container *ngIf=\"rowSummary().rowEmpty > 0\">-\r\n {{rowSummary().rowEmpty}} empty in the CSV you uploaded</ng-container></p>\r\n </div>\r\n\r\n }\r\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dealpos-npm-ng-dealpos-library-components-uppy-file-upload.mjs","sources":["../../../projects/dealpos-npm/ng-dealpos-library/components/uppy-file-upload/src/uppy.component.ts","../../../projects/dealpos-npm/ng-dealpos-library/components/uppy-file-upload/src/uppy.component.html","../../../projects/dealpos-npm/ng-dealpos-library/components/uppy-file-upload/dealpos-npm-ng-dealpos-library-components-uppy-file-upload.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n effect,\r\n EventEmitter,\r\n inject,\r\n input,\r\n Input,\r\n Output,\r\n signal,\r\n} from '@angular/core';\r\nimport { ConvertCsvService } from '@dealpos-npm/ng-dealpos-library/services/csv-parser';\r\nimport { HttpService } from '@dealpos-npm/ng-dealpos-library/services/http';\r\nimport { UppyAngularDashboardModule } from '@uppy/angular';\r\nimport Compressor from '@uppy/compressor';\r\nimport { Uppy } from '@uppy/core';\r\nimport '@uppy/core/dist/style.min.css';\r\nimport '@uppy/dashboard/dist/style.min.css';\r\nimport Transloadit, {\r\n COMPANION_ALLOWED_HOSTS,\r\n COMPANION_URL,\r\n} from '@uppy/transloadit';\r\nimport Papa from 'papaparse';\r\n\r\n@Component({\r\n selector: 'POS-uppy',\r\n standalone: true,\r\n imports: [UppyAngularDashboardModule, CommonModule],\r\n templateUrl: './uppy.component.html',\r\n styleUrl: './uppy.component.scss',\r\n})\r\nexport class UppyComponent {\r\n @Input() sampleUrl: string = '';\r\n @Input() subtitle: string = '';\r\n @Input()\r\n showSample: boolean = true;\r\n /**\r\n * For manually resetting Uppy after a successful upload\r\n */\r\n clear = input<boolean>(false);\r\n showSubtitle: boolean = true;\r\n uppyCoreConfiguration = input<any>();\r\n dashboardPropsConfiguration = input<any>();\r\n @Output() fileUploaded = new EventEmitter<Blob | File>();\r\n @Output() fileUploadComplete = new EventEmitter<Blob | File>();\r\n @Output() fileRemoved = new EventEmitter<string>();\r\n @Output() onParser = new EventEmitter<any>();\r\n @Output() multipleFilesUploaded = new EventEmitter<\r\n { file: Blob | File; id: string }[]\r\n >();\r\n\r\n http = inject(HttpService);\r\n csvParser = inject(ConvertCsvService);\r\n\r\n rowSummary = signal<{ rowCount: number; rowEmpty: number }>({\r\n rowCount: 0,\r\n rowEmpty: 0,\r\n });\r\n\r\n file = signal<File | null>(null);\r\n multipleFiles = signal<{ file: Blob | File; id: string }[]>([]);\r\n\r\n private static sizes = [\r\n 'Bytes',\r\n 'KB',\r\n 'MB',\r\n 'GB',\r\n 'TB',\r\n 'PB',\r\n 'EB',\r\n 'ZB',\r\n 'YB',\r\n ] as const;\r\n private static kilobyte = 1024;\r\n\r\n uppy: Uppy = new Uppy({\r\n debug: true,\r\n autoProceed: true,\r\n allowMultipleUploadBatches: false,\r\n restrictions: {\r\n allowedFileTypes: ['.csv'],\r\n maxTotalFileSize: 1000000,\r\n },\r\n }).use(Compressor, {\r\n mimeType: 'image/jpeg',\r\n convertSize: Infinity,\r\n convertTypes: ['image/png'],\r\n });\r\n\r\n dashboardProps = {\r\n hideUploadButton: true,\r\n height: 350,\r\n };\r\n\r\n constructor() {\r\n effect(() => this.uppy.setOptions({ ...this.uppyCoreConfiguration() }));\r\n effect(\r\n () =>\r\n (this.dashboardProps = {\r\n ...this.dashboardProps,\r\n ...this.dashboardPropsConfiguration(),\r\n })\r\n );\r\n\r\n this.uppy.on('upload', (_, uppyFiles) => {\r\n const file = uppyFiles[0]?.data as File;\r\n this.showSample = false;\r\n this.showSubtitle = false;\r\n\r\n console.log(_, uppyFiles, file);\r\n this.fileUploaded.emit(file);\r\n this.file.set(uppyFiles[0].data as File);\r\n\r\n Papa.parse(file, {\r\n skipEmptyLines: 'greedy',\r\n header: true,\r\n beforeFirstChunk: (_chunk) => {\r\n const withOutHeader = _chunk.split(/\\r?\\n/).slice(1);\r\n if (withOutHeader[withOutHeader.length - 1] === '')\r\n withOutHeader.pop();\r\n this.rowSummary.update((res) => ({\r\n ...res,\r\n rowCount: withOutHeader.length,\r\n }));\r\n withOutHeader.forEach((row) => {\r\n const emptyRow = row.split(',').every((row) => row === '');\r\n\r\n if (emptyRow)\r\n this.rowSummary.update((res) => ({\r\n ...res,\r\n rowEmpty: res.rowEmpty + 1,\r\n }));\r\n });\r\n return _chunk; // Return the original chunk to continue parsing\r\n },\r\n error(error, file) {\r\n console.log('ERROR', error, file);\r\n },\r\n complete: (results, _file) => {\r\n this.onParser.emit(results.data);\r\n },\r\n });\r\n });\r\n\r\n this.uppy.on('complete', (uppyFiles) => {\r\n const multipleFiles =\r\n uppyFiles.successful?.map((d) => ({ file: d.data, id: d.id })) ?? [];\r\n const file = uppyFiles.successful![0]?.data;\r\n this.showSample = false;\r\n this.showSubtitle = false;\r\n\r\n console.log(file);\r\n this.fileUploadComplete.emit(file);\r\n this.multipleFilesUploaded.emit(multipleFiles);\r\n this.onResetUppy();\r\n this.file.set(file as File);\r\n this.multipleFiles.set(multipleFiles);\r\n });\r\n\r\n this.uppy.on('transloadit:upload', (x, y) => {\r\n console.log(x, y);\r\n });\r\n this.uppy.on('transloadit:result', (stepName, result) => {\r\n console.log(stepName, result);\r\n });\r\n\r\n this.uppy.on('file-removed', (f) => {\r\n this.showSample = true;\r\n this.showSubtitle = true;\r\n this.file.set(null);\r\n const currentFiles = this.multipleFiles();\r\n const updatedFiles = currentFiles.filter((r) => r.id != f.id);\r\n this.multipleFiles.set(updatedFiles);\r\n this.fileRemoved.emit(f.id);\r\n this.rowSummary.set({ rowCount: 0, rowEmpty: 0 });\r\n });\r\n }\r\n\r\n private onResetUppy() {\r\n if (this.clear()) {\r\n this.uppy.clear();\r\n }\r\n }\r\n\r\n /**\r\n * Converts a given number of bytes into a human-readable string.\r\n * @param bytes The number of bytes to convert.\r\n * @param decimalPoints The number of decimal places to display. Defaults to 2.\r\n * @returns A string in the form of \"X.XX [unit]\" where X is the numerical value and unit is the appropriate unit of measurement (Bytes, KB, MB, GB, etc.).\r\n */\r\n formatFileSize(bytes: number, decimalPoints = 2): string {\r\n if (bytes === 0) {\r\n return `0 bytes`;\r\n }\r\n\r\n const i = Math.floor(Math.log(bytes) / Math.log(UppyComponent.kilobyte));\r\n const size = bytes / Math.pow(UppyComponent.kilobyte, i);\r\n return `${size.toFixed(decimalPoints)} ${UppyComponent.sizes[i]}`;\r\n }\r\n}\r\n","<div class=\"position-relative\">\r\n <uppy-dashboard [uppy]=\"uppy\" [props]=\"dashboardProps\"> </uppy-dashboard>\r\n <small *ngIf=\"subtitle && showSubtitle\" class=\"subtitle position-absolute\">{{subtitle}}</small>\r\n <a *ngIf=\"sampleUrl && showSample\" class=\"sample position-absolute\" [class.top-58]=\"subtitle\" role=\"button\"\r\n [href]=\"sampleUrl\">\r\n <i class=\"fa-solid fa-download ms-3\"></i> Download Template\r\n </a>\r\n\r\n @if (file() && file()?.type === 'text/csv') {\r\n <div class=\"alert alert-warning d-flex flex-column gap-2\" style=\"margin: 1rem 0 0 0;\" role=\"alert\">\r\n <h4 class=\"alert-heading\">CSV File Content Summary</h4>\r\n <hr>\r\n <p class=\"fs-6 m-0\">{{rowSummary().rowCount}} rows found <ng-container *ngIf=\"rowSummary().rowEmpty > 0\">-\r\n {{rowSummary().rowEmpty}} empty in the CSV you uploaded</ng-container></p>\r\n </div>\r\n\r\n }\r\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -199,6 +199,7 @@ class Constants {
199
199
  if (date) {
200
200
  const now = new Date();
201
201
  now.setHours(0, 0, 0, 0);
202
+ date.setHours(0, 0, 0, 0);
202
203
  return now.getTime() == date.getTime();
203
204
  }
204
205
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"dealpos-npm-ng-dealpos-library-constants.mjs","sources":["../../../projects/dealpos-npm/ng-dealpos-library/constants/src/Constants.ts","../../../projects/dealpos-npm/ng-dealpos-library/constants/dealpos-npm-ng-dealpos-library-constants.ts"],"sourcesContent":["export class Constants {\r\n static emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/\r\n static phoneNumberRegex = /^\\d+$/\r\n static GuidEmpty = \"00000000-0000-0000-0000-000000000000\";\r\n static DecimalMinValue = \"-7.922816251426434e+28\";\r\n static InputLockTimeSpan = 500;\r\n static MinDate = \"0001-01-01T00:00:00\";\r\n static MinTime = \"00:00:00\";\r\n static MinDecimal = \"-79228162514264337593543950335\"\r\n static StringFormat(msg: string, ...args: string[]): string {\r\n for (let _i = 0; _i < args.length; _i++) {\r\n msg = msg.replace(`{${_i}}`, args[_i]);\r\n }\r\n return msg;\r\n }\r\n static isMobileDevice = (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));\r\n\r\n static IsNotEmpty(value: any): boolean {\r\n if (\r\n value != \"\" &&\r\n !Constants.containsOnlySpaces(value) &&\r\n value != Constants.GuidEmpty &&\r\n value != undefined &&\r\n value != null\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n static IsEmpty(value: any): boolean {\r\n if (\r\n value == \"\" ||\r\n Constants.containsOnlySpaces(value) ||\r\n value == undefined ||\r\n value == null ||\r\n value == Constants.GuidEmpty\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n /**\r\n * Checks if a string is a valid GUID.\r\n * @param guid - The string to be checked.\r\n * @returns True if the string is a valid GUID, false otherwise.\r\n */\r\n static isGuid(guid: string): boolean {\r\n const regexExp = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/gi;\r\n let isGuid = false;\r\n if (guid) {\r\n isGuid = regexExp.test(guid);\r\n }\r\n return isGuid;\r\n }\r\n // check whether string only contains blank space\r\n static containsOnlySpaces(str: string) {\r\n return /^\\s*$/.test(str);\r\n }\r\n\r\n static FilterByID(array: any[], id: any): any {\r\n try {\r\n const list = array.filter((x) => x.ID == id);\r\n if (list.length > 0) {\r\n return list[0];\r\n }\r\n } catch (ex) { }\r\n return null;\r\n }\r\n\r\n static Months: { ID: number, Label: string }[] = [\r\n { ID: 1, Label: \"January\" },\r\n { ID: 2, Label: \"February\" },\r\n { ID: 3, Label: \"March\" },\r\n { ID: 4, Label: \"April\" },\r\n { ID: 5, Label: \"May\" },\r\n { ID: 6, Label: \"June\" },\r\n { ID: 7, Label: \"July\" },\r\n { ID: 8, Label: \"August\" },\r\n { ID: 9, Label: \"September\" },\r\n { ID: 10, Label: \"October\" },\r\n { ID: 11, Label: \"November\" },\r\n { ID: 12, Label: \"December\" },\r\n ];\r\n\r\n static GenerateYears(currYear: any, length: any, IsPrevious: any): any[] {\r\n let multiplier = -1;\r\n if (length == undefined || length == null) length = 11;\r\n if (IsPrevious == undefined || IsPrevious == null || !IsPrevious)\r\n multiplier = 1;\r\n\r\n const years = [];\r\n for (let i = 0; i < length; i++) {\r\n years.push(currYear + i * multiplier);\r\n }\r\n return years;\r\n }\r\n\r\n /**\r\n * Refactor function\r\n * @param date\r\n */\r\n static DateOnly(date?: Date): Date {\r\n if (date) {\r\n return new Date(new Date(date).toDateString());\r\n } else {\r\n return new Date(new Date().toDateString());\r\n }\r\n }\r\n\r\n /**\r\n * javascript difference between two dates in days\r\n * @param startDate \r\n * @param endDate \r\n * @returns \r\n */\r\n public static differentInDays(\r\n startDate: Date,\r\n endDate: Date\r\n ): number {\r\n // To calculate the time difference of two dates\r\n let Difference_In_Time = endDate.getTime() - startDate.getTime();\r\n\r\n // To calculate the no. of days between two dates\r\n let Difference_In_Days = Math.floor(\r\n Difference_In_Time / (1000 * 3600 * 24)\r\n );\r\n\r\n return Difference_In_Days;\r\n }\r\n\r\n /**\r\n * javascript difference between two dates in minutes\r\n * @param dt1 \r\n * @param dt2 \r\n * @returns \r\n */\r\n public static minutesDiff(dt1: Date, dt2: Date) {\r\n\r\n let diffMin = (dt2.getTime() - dt1.getTime()) / 60000;\r\n return Math.ceil(diffMin);\r\n }\r\n\r\n /**\r\n * Calculate the difference between two dates in hours javascript\r\n * @param dt1 \r\n * @param dt2 \r\n * @returns \r\n */\r\n public static hoursDiff(dt1: Date, dt2: Date) {\r\n // calculate the time difference of two dates JavaScript\r\n let diffTime = (dt2.getTime() - dt1.getTime());\r\n\r\n // calculate the number of days between hours dates javascript\r\n let hoursDiff = diffTime / (1000 * 3600);\r\n\r\n return parseFloat(hoursDiff.toFixed(1));\r\n }\r\n\r\n /**\r\n * Create Unique Identifier in the Client Side equivalent to C# NewGuid()\r\n * @returns\r\n */\r\n public static Guid_NewGuid(): string {\r\n let dt = new Date().getTime();\r\n let uuid = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(\r\n /[xy]/g,\r\n function (c) {\r\n var r = (dt + Math.random() * 16) % 16 | 0;\r\n dt = Math.floor(dt / 16);\r\n return (c == \"x\" ? r : (r & 0x3) | 0x8).toString(16);\r\n }\r\n );\r\n return uuid;\r\n }\r\n\r\n public static parseJwt(token: string) {\r\n var base64Url = token.split(\".\")[1];\r\n var base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n var jsonPayload = decodeURIComponent(\r\n atob(base64)\r\n .split(\"\")\r\n .map(function (c) {\r\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\r\n })\r\n .join(\"\")\r\n );\r\n\r\n return JSON.parse(jsonPayload);\r\n }\r\n\r\n public static numberOnly(event: KeyboardEvent): boolean {\r\n const charCode = (event.which) ? event.which : event.keyCode;\r\n if (charCode > 31 && (charCode < 48 || charCode > 57)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * format number to unit\r\n * @param total \r\n * @returns \r\n */\r\n public static formatNumber(total: number) {\r\n let value: string = '';\r\n let unit = \"\";\r\n let absNumber = Math.abs(total);\r\n if (absNumber > 999 && absNumber < 1000000) {\r\n unit = \"K\";\r\n value = (absNumber / 1000).toFixed(0);\r\n } else if (absNumber >= 1000000) {\r\n unit = \"M\";\r\n value = (absNumber / 1000000).toFixed(0);\r\n } else if (absNumber < 999) {\r\n value = absNumber.toString(); //\r\n }\r\n if (total < 0) {\r\n value = \"-\" + value;\r\n }\r\n\r\n return value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") + unit;\r\n }\r\n\r\n public static isToDay(date: Date): boolean {\r\n if (date) {\r\n const now = new Date();\r\n now.setHours(0, 0, 0, 0);\r\n return now.getTime() == date.getTime();\r\n }\r\n return false\r\n }\r\n /**\r\n * set date time to latest time day\r\n * @param date \r\n * @returns \r\n */\r\n public static setToLatestTime(date: Date): Date {\r\n const dateLastTime = new Date(date);\r\n dateLastTime.setHours(23, 59, 59);\r\n return dateLastTime;\r\n }\r\n\r\n /**\r\n * set date time to first time day\r\n * @param date \r\n * @returns \r\n */\r\n public static setToFirstTime(date: Date): Date {\r\n const dateFirstTime = new Date(date);\r\n dateFirstTime.setHours(0, 0, 0);\r\n return dateFirstTime;\r\n }\r\n public static compare(a: number | string, b: number | string, isAsc: boolean): number {\r\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\r\n }\r\n\r\n /**\r\n * generate serial as note with format ['serial'*Quantity]\r\n * ex: [00AS32*6, 0089A]\r\n * @param serials \r\n * @returns \r\n */\r\n public static generateSerialasNote(serials: any[] = []) {\r\n let serialNote: string = '';\r\n if (serials && serials.length > 0) {\r\n let serialASString = serials.map((serial, i) => {\r\n return `${i > 0 ? \" \" : \"\"}${serial.Number}${(serial.Quantity > 1 || serial.Quantity < 0) ? \"*\" + serial.Quantity : \"\"}`;\r\n });\r\n serialNote = `[${serialASString}]`;\r\n }\r\n return serialNote;\r\n }\r\n\r\n public static getDatesInRange(startDate: Date, endDate: Date): Date[] {\r\n const date = new Date(startDate.getTime());\r\n\r\n const dates = [];\r\n\r\n while (date <= endDate) {\r\n dates.push(new Date(date));\r\n date.setDate(date.getDate() + 1);\r\n }\r\n\r\n return dates;\r\n }\r\n\r\n /**\r\n * @param date \r\n * @param daysBefore \r\n * @returns \r\n */\r\n public static getDaysBefore(date: Date, daysBefore: number): Date {\r\n return new Date(date.setDate(new Date().getDate() - daysBefore))\r\n }\r\n\r\n /**\r\n * get first and last day by month and year\r\n * @param month \r\n * @param year \r\n * @returns \r\n */\r\n public static getRangeDate(month: number, year: number) {\r\n const date = new Date();\r\n date.setMonth(month);\r\n date.setFullYear(year);\r\n let firstDay = new Date(date.getFullYear(), date.getMonth() - 1, 1);\r\n let lastDay = new Date(date.getFullYear(), date.getMonth(), 0);\r\n return {\r\n firstDay: firstDay,\r\n lastDay: lastDay\r\n }\r\n }\r\n\r\n public static setDateTime(time: string, date: Date): Date {\r\n let newDate = new Date();\r\n if (date) {\r\n newDate = new Date(date);\r\n }\r\n let times = time.split(\":\");\r\n newDate.setHours(parseInt(times[0]));\r\n newDate.setMinutes(parseInt(times[1]));\r\n return newDate;\r\n }\r\n public static isMaskingField(value = \"\"): boolean {\r\n const hasQuestionMark = (value as string).includes(\"?\");\r\n return hasQuestionMark;\r\n }\r\n\r\n public static generateMaskingField(configMaskingField: string[] = []) {\r\n let maskingFields = {};\r\n configMaskingField\r\n .forEach((field, i) => {\r\n field = field.split(' ')?.join('');\r\n maskingFields = { ...maskingFields, [field]: true }\r\n });\r\n return maskingFields;\r\n }\r\n /**\r\n * Check if JS API function is supported in a current browser\r\n * @param api ex: structuredClone\r\n */\r\n public static checkJSApiSupported(api: string): boolean {\r\n let isSupported: boolean;\r\n if (api in window) {\r\n isSupported = true;\r\n }\r\n else {\r\n isSupported = false;\r\n }\r\n return isSupported;\r\n }\r\n\r\n /**\r\n * copy of all elements of the original object. \r\n * Changes made to the original object will not be reflected in the copy\r\n * @param object \r\n * @param type \r\n */\r\n public static cloneObject(object: any): any {\r\n let newObject: any;\r\n if (this.checkJSApiSupported('structuredClone')) {\r\n newObject = structuredClone(object);\r\n }\r\n else {\r\n newObject = JSON.parse(JSON.stringify(object));\r\n }\r\n return newObject;\r\n }\r\n /**\r\n * format title for from filter to showing in title\r\n * @param startDate\r\n * @param endDate\r\n * @returns\r\n */\r\n static formatTitleFromDate(startDate: Date, endDate: Date): string | null {\r\n let format = null;\r\n const startDateObj = new Date(startDate);\r\n const endDateObj = new Date(endDate);\r\n\r\n if (startDateObj.getDate() != endDateObj.getDate()) {\r\n format = \"d\";\r\n }\r\n\r\n // set format only days on same month\r\n if (startDateObj.getMonth() != endDateObj.getMonth()) {\r\n format = \"d MMM\";\r\n }\r\n\r\n // set full format when different year\r\n if (startDateObj.getFullYear() != endDateObj.getFullYear()) {\r\n format = \"d MMM yyyy\";\r\n }\r\n\r\n return format;\r\n }\r\n}\r\n\r\nexport function getImageInfo(src: string) {\r\n return new Promise((resolve, reject) => {\r\n let image = new Image();\r\n image.src = src;\r\n image\r\n .decode()\r\n .then(() => {\r\n resolve({\r\n img: src,\r\n height: image.height,\r\n width: image.width\r\n });\r\n })\r\n .catch(() => {\r\n reject(new Error(`Image load error for ${src}`));\r\n });\r\n });\r\n}\r\n\r\n\r\n\r\nexport class LocalDataKey {\r\n static OfflineQueryMode = \"OfflineQueryMode\";\r\n static POSStorage = \"POSStorage\";\r\n static Products = \"Products\";\r\n static Customers = \"Customers\";\r\n static OutletPrices = \"OutletPrices\";\r\n static Outlet = \"Outlet\";\r\n static Parks = \"Parks\";\r\n static Orders = \"Orders\";\r\n static FailedOrders = \"FailedOrders\";\r\n static CompletedOrders = \"CompletedOrders\";\r\n static NewCustomers = \"NewCustomers\";\r\n\r\n static GetRewardByPromotionID = \"/API/POS/GetRewardByPromotionID\";\r\n static GetListPromotion = \"/API/POS/Promotion\";\r\n\r\n static GenerateGopayQrCode = \"/API/POS/GenerateGoPayQrCode\";\r\n static GenerateEmpatKaliQrCode = \"/API/POS/GenerateEmpatKaliQrCode\";\r\n\r\n static VerifyPayment = \"/API/PaymentNotification/VerifyPayment\";\r\n static PayWithOvo = \"/API/POS/PayWithOvo\";\r\n\r\n static InvoiceA4 = \"/API/Print/Invoice\";\r\n static UploadCsv = \"/API/POS/UploadCsv\";\r\n static UploadCsvBuy = \"/API/Buy/UploadCsv\";\r\n\r\n static GenerateCommission = \"/API/Transaction/GetCommission\";\r\n\r\n static InvoiceInfo = \"/api/Invoice/InvoiceInfo\";\r\n static GenerateLink = \"/API/PayNow/GenerateLink\";\r\n\r\n //Buy\r\n static LoadFormBuy = \"/API/Buy2/Load\";\r\n static BuyGetOutletInfo = \"/API/Buy2/GetOutletInfo\";\r\n static BuyGenerateNumber = \"/API/Buy/GenerateNumber\";\r\n static BuyGetDataByID = \"/API/Buy2/GetDataByID\";\r\n static GetQuickKey = \"/API/catalog/product/GetQuickKey\";\r\n static GetPrintTemplateID = \"/API/Buy/GetPrintTemplateID\";\r\n static GetVariantStockByID = \"/API/catalog/variant/GetInventoryByVariantID\";\r\n static GetSupplierInvoice = \"/API/Buy/GetSupplierInvoiceRetur\";\r\n static GetSupplierDTO = \"/API/Contact/GetSupplierDTO\";\r\n\r\n //DELIVERY\r\n static LoadFormDelivery = \"/API/TransferOrderLoader/LoadForm\";\r\n static DeliveryGenerateNumber = \"/API/TransferOrder/GenerateNumber\";\r\n static UpdateCourierList = \"/API/TransferOrder/UpdateCourierList\";\r\n static SubmitOutletDelivery = \"/API/TransferOrder/SubmitOrder\";\r\n static ClearOutlet = \"/API/TransferOrder/ClearOutlet\";\r\n static PaymentListSorting = \"/API/Setup/SortPaymentMethod\"\r\n static TaxListSorting = \"/API/Setup/SortTax\"\r\n\r\n // ESTIMATE\r\n static LoadFormEstimate = \"/API/Estimate/LoadForm\";\r\n static EstimateGenerateNumber = \"/API/Estimate/GenerateNumber\";\r\n static SubmitEstimate = \"/API/Estimate/SubmitOrder\";\r\n\r\n // ADJUSTMENT\r\n static LoadFormAdjustment = \"/API/Adjustment/LoadForm\";\r\n static AdjustmentGenerateNumber = \"/API/Adjustment/GenerateNumber\";\r\n static SubmitAdjustment = \"/API/Adjustment/SubmitOrder\";\r\n\r\n // INVENTORY\r\n static ForecastData = \"Inventory/Daystozero\";\r\n static ForecastLoader = \"InventoryLoader/Daystozero\";\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dealpos-npm-ng-dealpos-library-constants.mjs","sources":["../../../projects/dealpos-npm/ng-dealpos-library/constants/src/Constants.ts","../../../projects/dealpos-npm/ng-dealpos-library/constants/dealpos-npm-ng-dealpos-library-constants.ts"],"sourcesContent":["export class Constants {\r\n static emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/\r\n static phoneNumberRegex = /^\\d+$/\r\n static GuidEmpty = \"00000000-0000-0000-0000-000000000000\";\r\n static DecimalMinValue = \"-7.922816251426434e+28\";\r\n static InputLockTimeSpan = 500;\r\n static MinDate = \"0001-01-01T00:00:00\";\r\n static MinTime = \"00:00:00\";\r\n static MinDecimal = \"-79228162514264337593543950335\"\r\n static StringFormat(msg: string, ...args: string[]): string {\r\n for (let _i = 0; _i < args.length; _i++) {\r\n msg = msg.replace(`{${_i}}`, args[_i]);\r\n }\r\n return msg;\r\n }\r\n static isMobileDevice = (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));\r\n\r\n static IsNotEmpty(value: any): boolean {\r\n if (\r\n value != \"\" &&\r\n !Constants.containsOnlySpaces(value) &&\r\n value != Constants.GuidEmpty &&\r\n value != undefined &&\r\n value != null\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n static IsEmpty(value: any): boolean {\r\n if (\r\n value == \"\" ||\r\n Constants.containsOnlySpaces(value) ||\r\n value == undefined ||\r\n value == null ||\r\n value == Constants.GuidEmpty\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n /**\r\n * Checks if a string is a valid GUID.\r\n * @param guid - The string to be checked.\r\n * @returns True if the string is a valid GUID, false otherwise.\r\n */\r\n static isGuid(guid: string): boolean {\r\n const regexExp = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/gi;\r\n let isGuid = false;\r\n if (guid) {\r\n isGuid = regexExp.test(guid);\r\n }\r\n return isGuid;\r\n }\r\n // check whether string only contains blank space\r\n static containsOnlySpaces(str: string) {\r\n return /^\\s*$/.test(str);\r\n }\r\n\r\n static FilterByID(array: any[], id: any): any {\r\n try {\r\n const list = array.filter((x) => x.ID == id);\r\n if (list.length > 0) {\r\n return list[0];\r\n }\r\n } catch (ex) { }\r\n return null;\r\n }\r\n\r\n static Months: { ID: number, Label: string }[] = [\r\n { ID: 1, Label: \"January\" },\r\n { ID: 2, Label: \"February\" },\r\n { ID: 3, Label: \"March\" },\r\n { ID: 4, Label: \"April\" },\r\n { ID: 5, Label: \"May\" },\r\n { ID: 6, Label: \"June\" },\r\n { ID: 7, Label: \"July\" },\r\n { ID: 8, Label: \"August\" },\r\n { ID: 9, Label: \"September\" },\r\n { ID: 10, Label: \"October\" },\r\n { ID: 11, Label: \"November\" },\r\n { ID: 12, Label: \"December\" },\r\n ];\r\n\r\n static GenerateYears(currYear: any, length: any, IsPrevious: any): any[] {\r\n let multiplier = -1;\r\n if (length == undefined || length == null) length = 11;\r\n if (IsPrevious == undefined || IsPrevious == null || !IsPrevious)\r\n multiplier = 1;\r\n\r\n const years = [];\r\n for (let i = 0; i < length; i++) {\r\n years.push(currYear + i * multiplier);\r\n }\r\n return years;\r\n }\r\n\r\n /**\r\n * Refactor function\r\n * @param date\r\n */\r\n static DateOnly(date?: Date): Date {\r\n if (date) {\r\n return new Date(new Date(date).toDateString());\r\n } else {\r\n return new Date(new Date().toDateString());\r\n }\r\n }\r\n\r\n /**\r\n * javascript difference between two dates in days\r\n * @param startDate \r\n * @param endDate \r\n * @returns \r\n */\r\n public static differentInDays(\r\n startDate: Date,\r\n endDate: Date\r\n ): number {\r\n // To calculate the time difference of two dates\r\n let Difference_In_Time = endDate.getTime() - startDate.getTime();\r\n\r\n // To calculate the no. of days between two dates\r\n let Difference_In_Days = Math.floor(\r\n Difference_In_Time / (1000 * 3600 * 24)\r\n );\r\n\r\n return Difference_In_Days;\r\n }\r\n\r\n /**\r\n * javascript difference between two dates in minutes\r\n * @param dt1 \r\n * @param dt2 \r\n * @returns \r\n */\r\n public static minutesDiff(dt1: Date, dt2: Date) {\r\n\r\n let diffMin = (dt2.getTime() - dt1.getTime()) / 60000;\r\n return Math.ceil(diffMin);\r\n }\r\n\r\n /**\r\n * Calculate the difference between two dates in hours javascript\r\n * @param dt1 \r\n * @param dt2 \r\n * @returns \r\n */\r\n public static hoursDiff(dt1: Date, dt2: Date) {\r\n // calculate the time difference of two dates JavaScript\r\n let diffTime = (dt2.getTime() - dt1.getTime());\r\n\r\n // calculate the number of days between hours dates javascript\r\n let hoursDiff = diffTime / (1000 * 3600);\r\n\r\n return parseFloat(hoursDiff.toFixed(1));\r\n }\r\n\r\n /**\r\n * Create Unique Identifier in the Client Side equivalent to C# NewGuid()\r\n * @returns\r\n */\r\n public static Guid_NewGuid(): string {\r\n let dt = new Date().getTime();\r\n let uuid = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(\r\n /[xy]/g,\r\n function (c) {\r\n var r = (dt + Math.random() * 16) % 16 | 0;\r\n dt = Math.floor(dt / 16);\r\n return (c == \"x\" ? r : (r & 0x3) | 0x8).toString(16);\r\n }\r\n );\r\n return uuid;\r\n }\r\n\r\n public static parseJwt(token: string) {\r\n var base64Url = token.split(\".\")[1];\r\n var base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n var jsonPayload = decodeURIComponent(\r\n atob(base64)\r\n .split(\"\")\r\n .map(function (c) {\r\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\r\n })\r\n .join(\"\")\r\n );\r\n\r\n return JSON.parse(jsonPayload);\r\n }\r\n\r\n public static numberOnly(event: KeyboardEvent): boolean {\r\n const charCode = (event.which) ? event.which : event.keyCode;\r\n if (charCode > 31 && (charCode < 48 || charCode > 57)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * format number to unit\r\n * @param total \r\n * @returns \r\n */\r\n public static formatNumber(total: number) {\r\n let value: string = '';\r\n let unit = \"\";\r\n let absNumber = Math.abs(total);\r\n if (absNumber > 999 && absNumber < 1000000) {\r\n unit = \"K\";\r\n value = (absNumber / 1000).toFixed(0);\r\n } else if (absNumber >= 1000000) {\r\n unit = \"M\";\r\n value = (absNumber / 1000000).toFixed(0);\r\n } else if (absNumber < 999) {\r\n value = absNumber.toString(); //\r\n }\r\n if (total < 0) {\r\n value = \"-\" + value;\r\n }\r\n\r\n return value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") + unit;\r\n }\r\n\r\n public static isToDay(date: Date): boolean {\r\n if (date) {\r\n const now = new Date();\r\n now.setHours(0, 0, 0, 0);\r\n date.setHours(0, 0, 0, 0);\r\n return now.getTime() == date.getTime();\r\n }\r\n return false\r\n }\r\n /**\r\n * set date time to latest time day\r\n * @param date \r\n * @returns \r\n */\r\n public static setToLatestTime(date: Date): Date {\r\n const dateLastTime = new Date(date);\r\n dateLastTime.setHours(23, 59, 59);\r\n return dateLastTime;\r\n }\r\n\r\n /**\r\n * set date time to first time day\r\n * @param date \r\n * @returns \r\n */\r\n public static setToFirstTime(date: Date): Date {\r\n const dateFirstTime = new Date(date);\r\n dateFirstTime.setHours(0, 0, 0);\r\n return dateFirstTime;\r\n }\r\n public static compare(a: number | string, b: number | string, isAsc: boolean): number {\r\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\r\n }\r\n\r\n /**\r\n * generate serial as note with format ['serial'*Quantity]\r\n * ex: [00AS32*6, 0089A]\r\n * @param serials \r\n * @returns \r\n */\r\n public static generateSerialasNote(serials: any[] = []) {\r\n let serialNote: string = '';\r\n if (serials && serials.length > 0) {\r\n let serialASString = serials.map((serial, i) => {\r\n return `${i > 0 ? \" \" : \"\"}${serial.Number}${(serial.Quantity > 1 || serial.Quantity < 0) ? \"*\" + serial.Quantity : \"\"}`;\r\n });\r\n serialNote = `[${serialASString}]`;\r\n }\r\n return serialNote;\r\n }\r\n\r\n public static getDatesInRange(startDate: Date, endDate: Date): Date[] {\r\n const date = new Date(startDate.getTime());\r\n\r\n const dates = [];\r\n\r\n while (date <= endDate) {\r\n dates.push(new Date(date));\r\n date.setDate(date.getDate() + 1);\r\n }\r\n\r\n return dates;\r\n }\r\n\r\n /**\r\n * @param date \r\n * @param daysBefore \r\n * @returns \r\n */\r\n public static getDaysBefore(date: Date, daysBefore: number): Date {\r\n return new Date(date.setDate(new Date().getDate() - daysBefore))\r\n }\r\n\r\n /**\r\n * get first and last day by month and year\r\n * @param month \r\n * @param year \r\n * @returns \r\n */\r\n public static getRangeDate(month: number, year: number) {\r\n const date = new Date();\r\n date.setMonth(month);\r\n date.setFullYear(year);\r\n let firstDay = new Date(date.getFullYear(), date.getMonth() - 1, 1);\r\n let lastDay = new Date(date.getFullYear(), date.getMonth(), 0);\r\n return {\r\n firstDay: firstDay,\r\n lastDay: lastDay\r\n }\r\n }\r\n\r\n public static setDateTime(time: string, date: Date): Date {\r\n let newDate = new Date();\r\n if (date) {\r\n newDate = new Date(date);\r\n }\r\n let times = time.split(\":\");\r\n newDate.setHours(parseInt(times[0]));\r\n newDate.setMinutes(parseInt(times[1]));\r\n return newDate;\r\n }\r\n public static isMaskingField(value = \"\"): boolean {\r\n const hasQuestionMark = (value as string).includes(\"?\");\r\n return hasQuestionMark;\r\n }\r\n\r\n public static generateMaskingField(configMaskingField: string[] = []) {\r\n let maskingFields = {};\r\n configMaskingField\r\n .forEach((field, i) => {\r\n field = field.split(' ')?.join('');\r\n maskingFields = { ...maskingFields, [field]: true }\r\n });\r\n return maskingFields;\r\n }\r\n /**\r\n * Check if JS API function is supported in a current browser\r\n * @param api ex: structuredClone\r\n */\r\n public static checkJSApiSupported(api: string): boolean {\r\n let isSupported: boolean;\r\n if (api in window) {\r\n isSupported = true;\r\n }\r\n else {\r\n isSupported = false;\r\n }\r\n return isSupported;\r\n }\r\n\r\n /**\r\n * copy of all elements of the original object. \r\n * Changes made to the original object will not be reflected in the copy\r\n * @param object \r\n * @param type \r\n */\r\n public static cloneObject(object: any): any {\r\n let newObject: any;\r\n if (this.checkJSApiSupported('structuredClone')) {\r\n newObject = structuredClone(object);\r\n }\r\n else {\r\n newObject = JSON.parse(JSON.stringify(object));\r\n }\r\n return newObject;\r\n }\r\n /**\r\n * format title for from filter to showing in title\r\n * @param startDate\r\n * @param endDate\r\n * @returns\r\n */\r\n static formatTitleFromDate(startDate: Date, endDate: Date): string | null {\r\n let format = null;\r\n const startDateObj = new Date(startDate);\r\n const endDateObj = new Date(endDate);\r\n\r\n if (startDateObj.getDate() != endDateObj.getDate()) {\r\n format = \"d\";\r\n }\r\n\r\n // set format only days on same month\r\n if (startDateObj.getMonth() != endDateObj.getMonth()) {\r\n format = \"d MMM\";\r\n }\r\n\r\n // set full format when different year\r\n if (startDateObj.getFullYear() != endDateObj.getFullYear()) {\r\n format = \"d MMM yyyy\";\r\n }\r\n\r\n return format;\r\n }\r\n}\r\n\r\nexport function getImageInfo(src: string) {\r\n return new Promise((resolve, reject) => {\r\n let image = new Image();\r\n image.src = src;\r\n image\r\n .decode()\r\n .then(() => {\r\n resolve({\r\n img: src,\r\n height: image.height,\r\n width: image.width\r\n });\r\n })\r\n .catch(() => {\r\n reject(new Error(`Image load error for ${src}`));\r\n });\r\n });\r\n}\r\n\r\n\r\n\r\nexport class LocalDataKey {\r\n static OfflineQueryMode = \"OfflineQueryMode\";\r\n static POSStorage = \"POSStorage\";\r\n static Products = \"Products\";\r\n static Customers = \"Customers\";\r\n static OutletPrices = \"OutletPrices\";\r\n static Outlet = \"Outlet\";\r\n static Parks = \"Parks\";\r\n static Orders = \"Orders\";\r\n static FailedOrders = \"FailedOrders\";\r\n static CompletedOrders = \"CompletedOrders\";\r\n static NewCustomers = \"NewCustomers\";\r\n\r\n static GetRewardByPromotionID = \"/API/POS/GetRewardByPromotionID\";\r\n static GetListPromotion = \"/API/POS/Promotion\";\r\n\r\n static GenerateGopayQrCode = \"/API/POS/GenerateGoPayQrCode\";\r\n static GenerateEmpatKaliQrCode = \"/API/POS/GenerateEmpatKaliQrCode\";\r\n\r\n static VerifyPayment = \"/API/PaymentNotification/VerifyPayment\";\r\n static PayWithOvo = \"/API/POS/PayWithOvo\";\r\n\r\n static InvoiceA4 = \"/API/Print/Invoice\";\r\n static UploadCsv = \"/API/POS/UploadCsv\";\r\n static UploadCsvBuy = \"/API/Buy/UploadCsv\";\r\n\r\n static GenerateCommission = \"/API/Transaction/GetCommission\";\r\n\r\n static InvoiceInfo = \"/api/Invoice/InvoiceInfo\";\r\n static GenerateLink = \"/API/PayNow/GenerateLink\";\r\n\r\n //Buy\r\n static LoadFormBuy = \"/API/Buy2/Load\";\r\n static BuyGetOutletInfo = \"/API/Buy2/GetOutletInfo\";\r\n static BuyGenerateNumber = \"/API/Buy/GenerateNumber\";\r\n static BuyGetDataByID = \"/API/Buy2/GetDataByID\";\r\n static GetQuickKey = \"/API/catalog/product/GetQuickKey\";\r\n static GetPrintTemplateID = \"/API/Buy/GetPrintTemplateID\";\r\n static GetVariantStockByID = \"/API/catalog/variant/GetInventoryByVariantID\";\r\n static GetSupplierInvoice = \"/API/Buy/GetSupplierInvoiceRetur\";\r\n static GetSupplierDTO = \"/API/Contact/GetSupplierDTO\";\r\n\r\n //DELIVERY\r\n static LoadFormDelivery = \"/API/TransferOrderLoader/LoadForm\";\r\n static DeliveryGenerateNumber = \"/API/TransferOrder/GenerateNumber\";\r\n static UpdateCourierList = \"/API/TransferOrder/UpdateCourierList\";\r\n static SubmitOutletDelivery = \"/API/TransferOrder/SubmitOrder\";\r\n static ClearOutlet = \"/API/TransferOrder/ClearOutlet\";\r\n static PaymentListSorting = \"/API/Setup/SortPaymentMethod\"\r\n static TaxListSorting = \"/API/Setup/SortTax\"\r\n\r\n // ESTIMATE\r\n static LoadFormEstimate = \"/API/Estimate/LoadForm\";\r\n static EstimateGenerateNumber = \"/API/Estimate/GenerateNumber\";\r\n static SubmitEstimate = \"/API/Estimate/SubmitOrder\";\r\n\r\n // ADJUSTMENT\r\n static LoadFormAdjustment = \"/API/Adjustment/LoadForm\";\r\n static AdjustmentGenerateNumber = \"/API/Adjustment/GenerateNumber\";\r\n static SubmitAdjustment = \"/API/Adjustment/SubmitOrder\";\r\n\r\n // INVENTORY\r\n static ForecastData = \"Inventory/Daystozero\";\r\n static ForecastLoader = \"InventoryLoader/Daystozero\";\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dealpos-npm/ng-dealpos-library",
3
- "version": "4.4.9",
3
+ "version": "4.4.11",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0",