@aggdirect/coolmap 2.7.5 → 2.7.6

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.
@@ -71,18 +71,21 @@ export class JobCodeNavComponent {
71
71
  .pipe(takeUntil(this.destroyer$))
72
72
  .subscribe((res) => {
73
73
  if (typeof res['data'] !== 'string') {
74
- if (res['data'].length > 0)
74
+ if (res['data'].length > 0) {
75
75
  this.listData = res['data'].map((ele) => {
76
76
  ele['date'] = value;
77
77
  return ele;
78
78
  });
79
- let projectName = window.location.href.split('project=').pop();
80
- projectName = projectName.toLowerCase();
81
- this.listData = this.listData.filter(ele => {
82
- const project = ele.project.toLowerCase();
83
- let adjustedProject = project.replace(" ", "_");
84
- return adjustedProject === projectName;
85
- });
79
+ }
80
+ if (this.config.repository === 'customer') {
81
+ let projectName = window.location.href.split('project=').pop();
82
+ projectName = projectName.toLowerCase();
83
+ this.listData = this.listData.filter(ele => {
84
+ const project = ele.project.toLowerCase();
85
+ let adjustedProject = project.replace(" ", "_");
86
+ return adjustedProject === projectName;
87
+ });
88
+ }
86
89
  this.listData.forEach((ele) => {
87
90
  this.utils.makeOptions(ele);
88
91
  });
@@ -144,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
144
147
  }], customerRepoDetails: [{
145
148
  type: Input
146
149
  }] } });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWNvZGUtbmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvbmF2L2xheW91dC9qb2ItY29kZS1uYXYvam9iLWNvZGUtbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvbmF2L2xheW91dC9qb2ItY29kZS1uYXYvam9iLWNvZGUtbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFFTixNQUFNLEVBQ04sS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBYTFDLE1BQU0sT0FBTyxtQkFBbUI7SUFlckI7SUFDdUI7SUFmaEMsVUFBVSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFELFFBQVEsR0FBWSxFQUFFLENBQUM7SUFDdkIsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUMzQixTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNOLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzlDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxlQUFlLENBQWlDO0lBQ2hELE9BQU8sR0FBYSxFQUFFLENBQUM7SUFDTixlQUFlLEdBQUcsSUFBSSxZQUFZLEVB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Q0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7dUdBeEhVLG1CQUFtQiw4Q0FnQnBCLFlBQVk7MkZBaEJYLG1CQUFtQiwwTUNoQ2hDLHEyRUFnREE7OzJGRGhCYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0Usa0JBQWtCOzswQkFvQnpCLE1BQU07MkJBQUMsWUFBWTt5Q0FYTCxPQUFPO3NCQUF2QixNQUFNO2dCQUlVLGVBQWU7c0JBQS9CLE1BQU07Z0JBRVMsbUJBQW1CO3NCQUFsQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgT25EZXN0cm95LFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW50ZXJmYWNlIEZpbHRlciB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgdmFsdWU6IGFueTtcbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENvb2xtYXBDb25maWdNb2RlbCxcbiAgQ3VzdG9tZXJSZXBvRGV0YWlsc01vZGVsLFxuICBSb3V0ZSxcbiAgVXRpbHNTZXJ2aWNlLFxufSBmcm9tICdAYWdnZGlyZWN0L2Nvb2xtYXAtc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtam9iLWNvZGUtbmF2JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2pvYi1jb2RlLW5hdi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2pvYi1jb2RlLW5hdi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBKb2JDb2RlTmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBmaWx0ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7IHNlYXJjaDogbmV3IEZvcm1Db250cm9sKCkgfSk7XG4gIGxpc3REYXRhOiBSb3V0ZVtdID0gW107XG4gIGxvYWRlclZhbDogYm9vbGVhbiA9IGZhbHNlO1xuICBkYXRlVmFsdWUgPSBuZXcgRGF0ZSgpO1xuICBAT3V0cHV0KCkgcHVibGljIGpvYmVtaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHZhbHVlID0gJyc7XG4gIGZpbHRlcmVkT3B0aW9ucyE6IE9ic2VydmFibGU8YW55W10+IHwgdW5kZWZpbmVkO1xuICBmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xuICBAT3V0cHV0KCkgcHVibGljIGNsZWFySm9iRGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHVibGljIGRlc3Ryb3llciQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tZXJSZXBvRGV0YWlscyE6IEN1c3RvbWVyUmVwb0RldGFpbHNNb2RlbDtcbiAgc2VsZWN0ZWREYXRlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHV0aWxzOiBVdGlsc1NlcnZpY2UsXG4gICAgQEluamVjdCgnbWVtYmVyRGF0YScpIHByaXZhdGUgY29uZmlnOiBDb29sbWFwQ29uZmlnTW9kZWxcbiAgKSB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSB0aGlzLnV0aWxzLmdldERhdGVGb3JtYXQobmV3IERhdGUoKSk7XG4gICAgdXRpbHMubmF2Q2hhbmdlT2JzZXJ2ZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLmxvYWRlclZhbCA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHRoaXMubG9hZGVyVmFsID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgY2hhbmdlc1snY3VzdG9tZXJSZXBvRGV0YWlscyddICYmXG4gICAgICBjaGFuZ2VzWydjdXN0b21lclJlcG9EZXRhaWxzJ11bJ2N1cnJlbnRWYWx1ZSddXG4gICAgKSB7XG4gICAgICB0aGlzLmxvYWREYXRhKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xuICAgICAgdGhpcy51dGlscy5jbGVhclZpZXdSb3V0ZWZvckpvYkNvZGUubmV4dCh0cnVlKTtcbiAgICB9XG4gIH1cbiAgbG9hZERhdGEodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdmFsdWU7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmZpbHRlckZvcm0uZ2V0KCdzZWFyY2gnKT8udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgbWFwKCh2YWx1ZSkgPT4gdGhpcy51dGlscy5maWx0ZXIodmFsdWUsIHRoaXMuZmlsdGVycykpXG4gICAgKTtcbiAgICB0aGlzLnV0aWxzLnByZXZlbnRuYXZDaGFuZ2UubmV4dChmYWxzZSk7XG4gICAgdGhpcy5sb2FkZXJWYWwgPSB0cnVlO1xuICAgIGxldCBkYXRhU2V0O1xuICAgIGlmICh0aGlzLmNvbmZpZy5yZXBvc2l0b3J5ID09PSAnY3VzdG9tZXInKSB7XG4gICAgICBkYXRhU2V0ID0ge1xuICAgICAgICBkYXRlOiB2YWx1ZSxcbiAgICAgICAgY3VzdG9tZXJfaWQ6IHRoaXMuY3VzdG9tZXJSZXBvRGV0YWlscy5jdXN0b21lci5pZCxcbiAgICAgICAgcHJvamVjdF9pZDogdGhpcy5jdXN0b21lclJlcG9EZXRhaWxzLnByb2plY3RJZCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGFTZXQgPSB7IGRhdGU6IHZhbHVlIH07XG4gICAgfVxuICAgIHRoaXMudXRpbHNcbiAgICAgIC5wb3N0ZGF0YSgnam9ic19yZXBvcnRfdjInLCBkYXRhU2V0KVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlc1snZGF0YSddICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKHJlc1snZGF0YSddLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgIHRoaXMubGlzdERhdGEgPSByZXNbJ2RhdGEnXS5tYXAoKGVsZTogUm91dGUpID0+IHtcbiAgICAgICAgICAgICAgICBlbGVbJ2RhdGUnXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGU7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbGV0IHByb2plY3ROYW1lID0gd2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoJ3Byb2plY3Q9JykucG9wKCk7XG4gICAgICAgICAgICBwcm9qZWN0TmFtZSA9IHByb2plY3ROYW1lLnRvTG93ZXJDYXNlKClcblxuICAgICAgICAgICB0aGlzLmxpc3REYXRhID0gdGhpcy5saXN0RGF0YS5maWx0ZXIoZWxlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb2plY3QgPSBlbGUucHJvamVjdC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IGFkanVzdGVkUHJvamVjdCA9IHByb2plY3QucmVwbGFjZShcIiBcIiwgXCJfXCIpO1xuXG4gICAgICAgICAgICByZXR1cm4gYWRqdXN0ZWRQcm9qZWN0ID09PSBwcm9qZWN0TmFtZVxuICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEuZm9yRWFjaCgoZWxlOiBSb3V0ZSkgPT4ge1xuICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB0aGlzLnV0aWxzLm1ha2VPcHRpb25zKGVsZSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIH0gZWxzZSB0aGlzLmxpc3REYXRhID0gW107XG4gICAgICAgICAgdGhpcy5jbGVhckpvYkRldGFpbHMuZW1pdCh0cnVlKTtcbiAgICAgICAgICB0aGlzLnV0aWxzLmNsZWFyVmlld1JvdXRlZm9ySm9iQ29kZS5uZXh0KHRydWUpO1xuICAgICAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xuICAgICAgICAgIGlmICh0eXBlb2YgcmVzWydkYXRhJ10gPT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgdGhpcy51dGlscy5wcmV2ZW50bmF2Q2hhbmdlLm5leHQodHJ1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB0aGlzLnV0aWxzLnByZXZlbnRuYXZDaGFuZ2UubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFJvdXRlKGpvYjogUm91dGUpIHtcbiAgICBpZiAoam9iWyd0eXBlJ10gPT09ICdqb2Jjb2RlJykge1xuICAgICAgdGhpcy5qb2JlbWl0LmVtaXQoam9iKTtcbiAgICB9XG4gIH1cbiAgZ2V0RGF0ZShldjogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8RGF0ZT4pIHtcbiAgICB0aGlzLmxvYWREYXRhKHRoaXMudXRpbHMuZ2V0RGF0ZUZvcm1hdChldi52YWx1ZSkpO1xuICB9XG5cbiAgZmlsdGVyU2VhcmNoKGU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyRm9ybS5jb250cm9scy5zZWFyY2guc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5maWx0ZXJGb3JtLmNvbnRyb2xzLnNlYXJjaC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5maWx0ZXJzID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiBlLnNvdXJjZS52YWx1ZS5sYWJlbCxcbiAgICAgICAgdHlwZTogZS5zb3VyY2UudmFsdWUudHlwZSxcbiAgICAgICAgdmFsdWU6IGUuc291cmNlLnZhbHVlLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG4gIHJlbW92ZUZyb21GaWx0ZXIoZmlsdGVyOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZmlsdGVycy5pbmRleE9mKGZpbHRlcik7XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xuICAgIH1cbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llciQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3llciQudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm5hdl9ib2R5XCI+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtcGFuZWxcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlclwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPkNob29zZSBhIGRhdGU8L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IHJlYWRvbmx5IG1hdElucHV0IChjbGljayk9XCJwaWNrZXIub3BlbigpXCIgW2Rpc2FibGVkXT1cImxvYWRlclZhbFwiICBbKG5nTW9kZWwpXT1cImRhdGVWYWx1ZVwiIFttYXREYXRlcGlja2VyXT1cInBpY2tlclwiIChkYXRlQ2hhbmdlKT1cImdldERhdGUoJGV2ZW50KVwiPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoXCI+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmdWxsLXdpZHRoXCIgW2NsYXNzLmRpc2FibGVkXT1cImxvYWRlclZhbFwiPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRlclZhbFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCI+XG4gICAgICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeCAqbmdJZj1cIiF1dGlscy5jb252ZXlTZWFyY2hJY29uKGZpbHRlckZvcm0udmFsdWUuc2VhcmNoKVwiPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxuICAgICAgICAgICAgbWF0U3VmZml4IFxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIFxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCIgXG4gICAgICAgICAgICAqbmdJZj1cInV0aWxzLmNvbnZleVNlYXJjaEljb24oZmlsdGVyRm9ybS52YWx1ZS5zZWFyY2gpXCIgKGNsaWNrKT1cImZpbHRlckZvcm0ucmVzZXQoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgY2xhc3M9XCJ3aG9sZV93aWR0aFwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zIHwgYXN5bmNcIiAob25TZWxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyU2VhcmNoKCRldmVudClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAge3tvcHRpb24udHlwZSB8IHRpdGxlY2FzZSB9fToge3tvcHRpb25bJ2xhYmVsJ119fVxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Zvcm0+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY2hpcC1saXN0XCI+XG4gICAgICA8bWF0LWNoaXAtZ3JpZCAjY2hpcExpc3QgYXJpYS1sYWJlbD1cIkZpbHRlciBzZWxlY3Rpb25cIj5cbiAgICAgICAgQGZvciAoZmlsdGVyIG9mIGZpbHRlcnM7IHRyYWNrIGZpbHRlcikge1xuICAgICAgICAgIDxtYXQtY2hpcC1yb3cgY2xhc3M9XCJjaGlwLWdyaWRcIiAocmVtb3ZlZCk9XCJyZW1vdmVGcm9tRmlsdGVyKGZpbHRlcilcIj5cbiAgICAgICAgICAgIHt7ZmlsdGVyLnR5cGUgfCB0aXRsZWNhc2UgfX06IHt7ZmlsdGVyLm5hbWV9fVxuICAgICAgICAgICAgPGJ1dHRvbiBtYXRDaGlwUmVtb3ZlPlxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbWF0LWNoaXAtcm93PlxuICAgICAgICB9XG4gICAgICA8L21hdC1jaGlwLWdyaWQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8YXBwLXJvdXRlLWpvYmNvZGUtbGlzdCBbdHlwZV09XCInam9iY29kZSdcIiBbc2VhcmNoVGVybV09XCJmaWx0ZXJzXCIgW2RhdGFdPVwibGlzdERhdGFcIiBbbG9hZGVyXT1cImxvYWRlclZhbFwiIChjbGVhckpvYkRldGFpbHNGcm9tTGlzdCk9XCJjbGVhckpvYkRldGFpbHMuZW1pdCh0cnVlKVwiIChzaG93QWxsUm91dGUpPVwiZmlsdGVycyA9IFtdOyBjbGVhckpvYkRldGFpbHMuZW1pdCh0cnVlKVwiIChlbWl0cm91dGUpPVwiZ2V0Um91dGUoJGV2ZW50KVwiPjwvYXBwLXJvdXRlLWpvYmNvZGUtbGlzdD5cbjwvZGl2PlxuIl19
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWNvZGUtbmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvbmF2L2xheW91dC9qb2ItY29kZS1uYXYvam9iLWNvZGUtbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvbmF2L2xheW91dC9qb2ItY29kZS1uYXYvam9iLWNvZGUtbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFFTixNQUFNLEVBQ04sS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBYTFDLE1BQU0sT0FBTyxtQkFBbUI7SUFlckI7SUFDdUI7SUFmaEMsVUFBVSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFELFFBQVEsR0FBWSxFQUFFLENBQUM7SUFDdkIsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUMzQixTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNOLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzlDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxlQUFlLENBQWlDO0lBQ2hELE9BQU8sR0FBYSxFQUFFLENBQUM7SUFDTixlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMvQyxVQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUMzQixtQkFBbUIsQ0FBNEI7SUFDL0QsWUFBWSxDQUFTO0lBRXJCLFlBQ1MsS0FBbUIsRUFDSSxNQUEwQjtRQURqRCxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ0ksV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFFeEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDeEUsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN6QixDQUFDOztnQkFBTSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFDRSxPQUFPLENBQUMscUJBQXFCLENBQUM7WUFDOUIsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMsY0FBYyxDQUFDLEVBQzlDLENBQUM7WUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUNELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FDckUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUNiLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUN2RCxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxPQUFPLENBQUM7UUFDWixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzFDLE9BQU8sR0FBRztnQkFDUixJQUFJLEVBQUUsS0FBSztnQkFDWCxXQUFXLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNqRCxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVM7YUFDL0MsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzVCLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSzthQUNQLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUM7YUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDaEMsU0FBUyxDQUNSLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDWCxJQUFJLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVUsRUFBRSxFQUFFO3dCQUM3QyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO3dCQUNwQixPQUFPLEdBQUcsQ0FBQztvQkFDYixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQzFDLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDL0QsV0FBVyxHQUFHLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtvQkFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDekMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQzt3QkFDMUMsSUFBSSxlQUFlLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQ2hELE9BQU8sZUFBZSxLQUFLLFdBQVcsQ0FBQTtvQkFDeEMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVUsRUFBRSxFQUFFO29CQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLENBQUM7WUFDSCxDQUFDOztnQkFBTSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNsQixJQUFJLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVE7Z0JBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUUsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDTixJQUFJLEdBQUc7Z0JBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUNGLENBQUM7SUFDTixDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQVU7UUFDakIsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLENBQUMsRUFBaUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsWUFBWSxDQUFDLENBQU07UUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2I7Z0JBQ0UsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUs7Z0JBQzFCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJO2dCQUN6QixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLO2FBQ3RCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxNQUFXO1FBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxDQUFDO3VHQXRIVSxtQkFBbUIsOENBZ0JwQixZQUFZOzJGQWhCWCxtQkFBbUIsME1DaENoQyxxMkVBZ0RBOzsyRkRoQmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGtCQUFrQjs7MEJBb0J6QixNQUFNOzJCQUFDLFlBQVk7eUNBWEwsT0FBTztzQkFBdkIsTUFBTTtnQkFJVSxlQUFlO3NCQUEvQixNQUFNO2dCQUVTLG1CQUFtQjtzQkFBbEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIE9uRGVzdHJveSxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmludGVyZmFjZSBGaWx0ZXIge1xuICBuYW1lPzogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIHZhbHVlOiBhbnk7XG4gIGxhYmVsPzogc3RyaW5nO1xufVxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDb29sbWFwQ29uZmlnTW9kZWwsXG4gIEN1c3RvbWVyUmVwb0RldGFpbHNNb2RlbCxcbiAgUm91dGUsXG4gIFV0aWxzU2VydmljZSxcbn0gZnJvbSAnQGFnZ2RpcmVjdC9jb29sbWFwLXNlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWpvYi1jb2RlLW5hdicsXG4gIHRlbXBsYXRlVXJsOiAnLi9qb2ItY29kZS1uYXYuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9qb2ItY29kZS1uYXYuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgSm9iQ29kZU5hdkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgZmlsdGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoeyBzZWFyY2g6IG5ldyBGb3JtQ29udHJvbCgpIH0pO1xuICBsaXN0RGF0YTogUm91dGVbXSA9IFtdO1xuICBsb2FkZXJWYWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGF0ZVZhbHVlID0gbmV3IERhdGUoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBqb2JlbWl0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB2YWx1ZSA9ICcnO1xuICBmaWx0ZXJlZE9wdGlvbnMhOiBPYnNlcnZhYmxlPGFueVtdPiB8IHVuZGVmaW5lZDtcbiAgZmlsdGVyczogRmlsdGVyW10gPSBbXTtcbiAgQE91dHB1dCgpIHB1YmxpYyBjbGVhckpvYkRldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHB1YmxpYyBkZXN0cm95ZXIkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbWVyUmVwb0RldGFpbHMhOiBDdXN0b21lclJlcG9EZXRhaWxzTW9kZWw7XG4gIHNlbGVjdGVkRGF0ZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB1dGlsczogVXRpbHNTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ21lbWJlckRhdGEnKSBwcml2YXRlIGNvbmZpZzogQ29vbG1hcENvbmZpZ01vZGVsXG4gICkge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdGhpcy51dGlscy5nZXREYXRlRm9ybWF0KG5ldyBEYXRlKCkpO1xuICAgIHV0aWxzLm5hdkNoYW5nZU9ic2VydmUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5sb2FkZXJWYWwgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB0aGlzLmxvYWRlclZhbCA9IHRydWU7XG4gICAgfSk7XG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGNoYW5nZXNbJ2N1c3RvbWVyUmVwb0RldGFpbHMnXSAmJlxuICAgICAgY2hhbmdlc1snY3VzdG9tZXJSZXBvRGV0YWlscyddWydjdXJyZW50VmFsdWUnXVxuICAgICkge1xuICAgICAgdGhpcy5sb2FkRGF0YSh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgICB0aGlzLmZpbHRlcnMgPSBbXTtcbiAgICAgIHRoaXMudXRpbHMuY2xlYXJWaWV3Um91dGVmb3JKb2JDb2RlLm5leHQodHJ1ZSk7XG4gICAgfVxuICB9XG4gIGxvYWREYXRhKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHZhbHVlO1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5maWx0ZXJGb3JtLmdldCgnc2VhcmNoJyk/LnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgIG1hcCgodmFsdWUpID0+IHRoaXMudXRpbHMuZmlsdGVyKHZhbHVlLCB0aGlzLmZpbHRlcnMpKVxuICAgICk7XG4gICAgdGhpcy51dGlscy5wcmV2ZW50bmF2Q2hhbmdlLm5leHQoZmFsc2UpO1xuICAgIHRoaXMubG9hZGVyVmFsID0gdHJ1ZTtcbiAgICBsZXQgZGF0YVNldDtcbiAgICBpZiAodGhpcy5jb25maWcucmVwb3NpdG9yeSA9PT0gJ2N1c3RvbWVyJykge1xuICAgICAgZGF0YVNldCA9IHtcbiAgICAgICAgZGF0ZTogdmFsdWUsXG4gICAgICAgIGN1c3RvbWVyX2lkOiB0aGlzLmN1c3RvbWVyUmVwb0RldGFpbHMuY3VzdG9tZXIuaWQsXG4gICAgICAgIHByb2plY3RfaWQ6IHRoaXMuY3VzdG9tZXJSZXBvRGV0YWlscy5wcm9qZWN0SWQsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRhU2V0ID0geyBkYXRlOiB2YWx1ZSB9O1xuICAgIH1cbiAgICB0aGlzLnV0aWxzXG4gICAgICAucG9zdGRhdGEoJ2pvYnNfcmVwb3J0X3YyJywgZGF0YVNldClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiByZXNbJ2RhdGEnXSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmIChyZXNbJ2RhdGEnXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHRoaXMubGlzdERhdGEgPSByZXNbJ2RhdGEnXS5tYXAoKGVsZTogUm91dGUpID0+IHtcbiAgICAgICAgICAgICAgICBlbGVbJ2RhdGUnXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGU7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLnJlcG9zaXRvcnkgPT09ICdjdXN0b21lcicpIHtcbiAgICAgICAgICAgICAgbGV0IHByb2plY3ROYW1lID0gd2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoJ3Byb2plY3Q9JykucG9wKCk7XG4gICAgICAgICAgICAgIHByb2plY3ROYW1lID0gcHJvamVjdE5hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICB0aGlzLmxpc3REYXRhID0gdGhpcy5saXN0RGF0YS5maWx0ZXIoZWxlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9qZWN0ID0gZWxlLnByb2plY3QudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBsZXQgYWRqdXN0ZWRQcm9qZWN0ID0gcHJvamVjdC5yZXBsYWNlKFwiIFwiLCBcIl9cIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFkanVzdGVkUHJvamVjdCA9PT0gcHJvamVjdE5hbWVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5saXN0RGF0YS5mb3JFYWNoKChlbGU6IFJvdXRlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudXRpbHMubWFrZU9wdGlvbnMoZWxlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgdGhpcy5saXN0RGF0YSA9IFtdO1xuICAgICAgICAgIHRoaXMuY2xlYXJKb2JEZXRhaWxzLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy51dGlscy5jbGVhclZpZXdSb3V0ZWZvckpvYkNvZGUubmV4dCh0cnVlKTtcbiAgICAgICAgICB0aGlzLmZpbHRlcnMgPSBbXTtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlc1snZGF0YSddID09PSAnc3RyaW5nJykgdGhpcy51dGlscy5wcmV2ZW50bmF2Q2hhbmdlLm5leHQodHJ1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB0aGlzLnV0aWxzLnByZXZlbnRuYXZDaGFuZ2UubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFJvdXRlKGpvYjogUm91dGUpIHtcbiAgICBpZiAoam9iWyd0eXBlJ10gPT09ICdqb2Jjb2RlJykge1xuICAgICAgdGhpcy5qb2JlbWl0LmVtaXQoam9iKTtcbiAgICB9XG4gIH1cbiAgZ2V0RGF0ZShldjogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8RGF0ZT4pIHtcbiAgICB0aGlzLmxvYWREYXRhKHRoaXMudXRpbHMuZ2V0RGF0ZUZvcm1hdChldi52YWx1ZSkpO1xuICB9XG5cbiAgZmlsdGVyU2VhcmNoKGU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyRm9ybS5jb250cm9scy5zZWFyY2guc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5maWx0ZXJGb3JtLmNvbnRyb2xzLnNlYXJjaC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5maWx0ZXJzID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiBlLnNvdXJjZS52YWx1ZS5sYWJlbCxcbiAgICAgICAgdHlwZTogZS5zb3VyY2UudmFsdWUudHlwZSxcbiAgICAgICAgdmFsdWU6IGUuc291cmNlLnZhbHVlLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG4gIHJlbW92ZUZyb21GaWx0ZXIoZmlsdGVyOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZmlsdGVycy5pbmRleE9mKGZpbHRlcik7XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xuICAgIH1cbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llciQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3llciQudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm5hdl9ib2R5XCI+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtcGFuZWxcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlclwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPkNob29zZSBhIGRhdGU8L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IHJlYWRvbmx5IG1hdElucHV0IChjbGljayk9XCJwaWNrZXIub3BlbigpXCIgW2Rpc2FibGVkXT1cImxvYWRlclZhbFwiICBbKG5nTW9kZWwpXT1cImRhdGVWYWx1ZVwiIFttYXREYXRlcGlja2VyXT1cInBpY2tlclwiIChkYXRlQ2hhbmdlKT1cImdldERhdGUoJGV2ZW50KVwiPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoXCI+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmdWxsLXdpZHRoXCIgW2NsYXNzLmRpc2FibGVkXT1cImxvYWRlclZhbFwiPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRlclZhbFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCI+XG4gICAgICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeCAqbmdJZj1cIiF1dGlscy5jb252ZXlTZWFyY2hJY29uKGZpbHRlckZvcm0udmFsdWUuc2VhcmNoKVwiPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFxuICAgICAgICAgICAgbWF0U3VmZml4IFxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIFxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCIgXG4gICAgICAgICAgICAqbmdJZj1cInV0aWxzLmNvbnZleVNlYXJjaEljb24oZmlsdGVyRm9ybS52YWx1ZS5zZWFyY2gpXCIgKGNsaWNrKT1cImZpbHRlckZvcm0ucmVzZXQoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgY2xhc3M9XCJ3aG9sZV93aWR0aFwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zIHwgYXN5bmNcIiAob25TZWxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyU2VhcmNoKCRldmVudClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAge3tvcHRpb24udHlwZSB8IHRpdGxlY2FzZSB9fToge3tvcHRpb25bJ2xhYmVsJ119fVxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Zvcm0+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY2hpcC1saXN0XCI+XG4gICAgICA8bWF0LWNoaXAtZ3JpZCAjY2hpcExpc3QgYXJpYS1sYWJlbD1cIkZpbHRlciBzZWxlY3Rpb25cIj5cbiAgICAgICAgQGZvciAoZmlsdGVyIG9mIGZpbHRlcnM7IHRyYWNrIGZpbHRlcikge1xuICAgICAgICAgIDxtYXQtY2hpcC1yb3cgY2xhc3M9XCJjaGlwLWdyaWRcIiAocmVtb3ZlZCk9XCJyZW1vdmVGcm9tRmlsdGVyKGZpbHRlcilcIj5cbiAgICAgICAgICAgIHt7ZmlsdGVyLnR5cGUgfCB0aXRsZWNhc2UgfX06IHt7ZmlsdGVyLm5hbWV9fVxuICAgICAgICAgICAgPGJ1dHRvbiBtYXRDaGlwUmVtb3ZlPlxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbWF0LWNoaXAtcm93PlxuICAgICAgICB9XG4gICAgICA8L21hdC1jaGlwLWdyaWQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8YXBwLXJvdXRlLWpvYmNvZGUtbGlzdCBbdHlwZV09XCInam9iY29kZSdcIiBbc2VhcmNoVGVybV09XCJmaWx0ZXJzXCIgW2RhdGFdPVwibGlzdERhdGFcIiBbbG9hZGVyXT1cImxvYWRlclZhbFwiIChjbGVhckpvYkRldGFpbHNGcm9tTGlzdCk9XCJjbGVhckpvYkRldGFpbHMuZW1pdCh0cnVlKVwiIChzaG93QWxsUm91dGUpPVwiZmlsdGVycyA9IFtdOyBjbGVhckpvYkRldGFpbHMuZW1pdCh0cnVlKVwiIChlbWl0cm91dGUpPVwiZ2V0Um91dGUoJGV2ZW50KVwiPjwvYXBwLXJvdXRlLWpvYmNvZGUtbGlzdD5cbjwvZGl2PlxuIl19
@@ -294,11 +294,11 @@ export class RouteJobCodeListComponent {
294
294
  }
295
295
  }
296
296
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RouteJobCodeListComponent, deps: [{ token: i1.CoolmapService }, { token: i1.UtilsService }], target: i0.ɵɵFactoryTarget.Component });
297
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: RouteJobCodeListComponent, selector: "app-route-jobcode-list", inputs: { loader: "loader", type: "type", data: "data", currentNav: "currentNav", searchTerm: "searchTerm", clearListSeletion: "clearListSeletion" }, outputs: { emitroute: "emitroute", showAllRoute: "showAllRoute", clearJobDetailsFromList: "clearJobDetailsFromList" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"scrollprt addroutelist\" [class.viewroute]=\"visiblesection('addroute')\"\n [class.jobList]=\"visiblesection('jobcode')\">\n <button (click)=\"showRoute()\" [disabled]=\"loader\" *ngIf=\"selectedRoute.selected.length\" class=\"show_routebtn\">Show all\n route</button>\n <cdk-virtual-scroll-viewport itemSize=\"50\" [class.jobscroll]=\"visiblesection('jobcode')\" class=\"example-viewport\">\n <mat-spinner *ngIf=\"loader\"></mat-spinner>\n <ul *ngIf=\"!loader && data.length > 0\">\n <li [class.active]=\"route['isActive'] && visiblesection('addroute')\" *ngFor=\"let route of data\">\n <app-job-code-list-card *ngIf=\"visiblesection('jobcode')\" (toggleDrivermenu)=\"toggleDrivermenu($event)\"\n (routeSeletion)=\"selectRoute($event)\" [preventCloseDetails]=\"preventDetailsClose\" [emitJobdetails]=\"{emitroute, clearJobDetailsFromList}\" [route]=\"checkroutes(route)\"></app-job-code-list-card>\n <app-view-route-list-card [emitrouteevent]=\"emitroute\" *ngIf=\"visiblesection('addroute')\"\n [route]=\"route\"></app-view-route-list-card>\n </li>\n </ul>\n <p *ngIf=\"!loader && data.length === 0\">{{visiblesection('addroute') ? 'No Route found' : 'No Job code found.'}}</p>\n </cdk-virtual-scroll-viewport>\n</div>\n\n<div class=\"driver_list\" *ngIf=\"isDriverList\">\n <div class=\"driver_headingprt\">\n <h2>Driver List</h2>\n <button *ngIf=\"driverList.driver_list?.length > 0\" (click)=\"isSmsList = true\">SMS</button>\n <div class=\"closebtn\" (click)=\"isDriverList = false; preventMouseout = false; isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <ul class=\"driverList\" *ngIf=\"driverList && driverList.driver_list\">\n <li *ngFor=\"let driver of driverList?.driver_list\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"driver['driver_name']\" />\n <div class=\"driver_detail\">\n <b>{{driver['driver_name']}}</b> <span>{{driver['trucking_company']}}</span>\n <div class=\"cont_del\">\n <small>Driver contact: <b>{{driver['driver_phone'] ? driver['driver_phone'] : 'N/A'}}</b></small>\n <small>Company contact: <b>{{driver['trucking_company_phone'] ? driver['trucking_company_phone'] : 'N/A'}}</b></small>\n </div>\n </div>\n </li>\n <p *ngIf=\"driverList.driver_list?.length === 0\" style=\"font-weight:700; text-align:center;\">\n No Driver found\n </p>\n </ul>\n <div class=\"smslist\" *ngIf=\"isSmsList\">\n <div class=\"heading\">\n <h2>SMS All Drivers</h2>\n <div class=\"closebtn\" (click)=\"isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <div class=\"detailprt\">\n <app-sms-card-details-overview [jobValue]=\"driverList\"></app-sms-card-details-overview>\n <div class=\"form_input\">\n <mat-form-field class=\"example-full-width\">\n <textarea matInput placeholder=\"Text here...\" autocomplete=\"nope\" column=\"10\"\n [formControl]=\"driverMessage\"></textarea>\n <mat-hint>{{driverMessage.value?.length}} / 256</mat-hint>\n </mat-form-field>\n <button *ngIf=\"!messageLoader\" [disabled]=\"!driverMessage.value || driverMessage.invalid\" (click)=\"sendMessage()\">\n Send SMS\n </button>\n </div>\n </div>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"messageLoader\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".driver_iconprt{position:absolute;right:10px;top:12px;z-index:9999}.driver_iconprt img{width:25px;height:25px}.driver_list{background:#fff;position:fixed;width:300px;top:10px;left:360px;border-top-left-radius:20px;border-top-right-radius:20px}.driver_list .driver_headingprt{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.driver_list .driver_headingprt button{background:none;border:1px solid #ccc;border-radius:10px;padding:5px 20px}.driver_list .driver_headingprt button:hover{background:#326ad3;color:#fff}.driver_list h2{font-size:20px}.driver_list .driverList{height:300px;overflow:auto}.driver_list .driverList li{display:flex;padding:10px;align-items:flex-start;cursor:pointer;border-bottom:1px solid white;background:#eee}.driver_list .driverList li img{width:35px;height:35px;border-radius:100%;margin-right:10px}.driver_list .driverList li .driver_detail{width:calc(100% - 45px);display:flex;flex-direction:column;justify-content:flex-start}.driver_list .driverList li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px;font-size:.9rem}.driver_list .driverList li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;font-size:.8rem}.driver_list:after{height:10px;background:#fff;border-bottom-right-radius:20px;border-bottom-left-radius:20px;content:\"\";position:absolute;bottom:-9px;width:100%}.smslist{background:#fff;position:absolute;width:480px;top:0;left:105%;border-radius:20px;padding-bottom:20px}.smslist .heading{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.smslist .detailprt{padding:0 15px}.smslist .detailprt span{display:flex;margin-bottom:12px;font-size:.8rem;align-items:center}.smslist .detailprt span label{font-weight:600;width:37%}.smslist .detailprt .form_input{display:flex;flex-direction:column;font-size:.8rem}.smslist .detailprt .form_input button{background:#326ad3;padding:10px 18px;color:#fff;font-size:.8125rem;border-radius:30px;display:flex;align-self:flex-end}.closebtn{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5}.show_routebtn{font-size:.9rem;margin-bottom:20px;padding:6px 11px;position:absolute;top:8px;right:10px;background-color:transparent;color:#3f51b5;border:1px solid #3f51b5;border-radius:10px;box-shadow:none}.show_routebtn:hover{background-color:#3f51b5;color:#fff}.cont_del{margin-top:10px}.cont_del small{display:block}.jobList ul{margin:0 .93em 0 0;width:100%}.jobList ul li{position:relative;background:#fbfbfb;padding:10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:inherit;width:15.62em}@media (min-width: 2500px){.jobList ul li{height:7.65vh}}@media (min-width: 3300px){.jobList ul li{height:5.61vh}}.viewroute ul{width:100%}.viewroute ul li{position:relative;background:#fbfbfb;padding:7px 10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:16.4vh;width:15.62em}@media (min-width: 1600px){.viewroute ul li{height:12.4vh}}.viewroute ul li.active{border:1px solid #39c471;border-left:3px solid #39c471}.loader{position:absolute;height:100%;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:center;pointer-events:none}.example-viewport{height:900px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i8.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "component", type: i8.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i9.ViewRouteListCardComponent, selector: "app-view-route-list-card", inputs: ["route", "emitrouteevent"] }, { kind: "component", type: i10.SmsCardDetailsOverviewComponent, selector: "app-sms-card-details-overview", inputs: ["jobValue"] }, { kind: "component", type: i11.JobCodeListCardComponent, selector: "app-job-code-list-card", inputs: ["route", "emitJobdetails", "preventCloseDetails"], outputs: ["routeSeletion", "toggleDrivermenu"] }] });
297
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: RouteJobCodeListComponent, selector: "app-route-jobcode-list", inputs: { loader: "loader", type: "type", data: "data", currentNav: "currentNav", searchTerm: "searchTerm", clearListSeletion: "clearListSeletion" }, outputs: { emitroute: "emitroute", showAllRoute: "showAllRoute", clearJobDetailsFromList: "clearJobDetailsFromList" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"scrollprt addroutelist\" [class.viewroute]=\"visiblesection('addroute')\"\n [class.jobList]=\"visiblesection('jobcode')\">\n <button (click)=\"showRoute()\" [disabled]=\"loader\" *ngIf=\"selectedRoute.selected.length\" class=\"show_routebtn\">Show all\n route</button>\n <cdk-virtual-scroll-viewport itemSize=\"50\" [class.jobscroll]=\"visiblesection('jobcode')\" class=\"example-viewport\">\n <mat-spinner *ngIf=\"loader\"></mat-spinner>\n <ul *ngIf=\"!loader && data.length > 0\">\n <li [class.active]=\"route['isActive'] && visiblesection('addroute')\" *ngFor=\"let route of data\">\n <app-job-code-list-card *ngIf=\"visiblesection('jobcode')\" \n (toggleDrivermenu)=\"toggleDrivermenu($event)\"\n (routeSeletion)=\"selectRoute($event)\" \n [preventCloseDetails]=\"preventDetailsClose\" \n [emitJobdetails]=\"{emitroute, clearJobDetailsFromList}\" \n [route]=\"checkroutes(route)\">\n </app-job-code-list-card>\n <app-view-route-list-card *ngIf=\"visiblesection('addroute')\"\n [emitrouteevent]=\"emitroute\" \n [route]=\"route\">\n </app-view-route-list-card>\n </li>\n </ul>\n <p *ngIf=\"!loader && data.length === 0\">{{visiblesection('addroute') ? 'No Route found' : 'No Job code found.'}}</p>\n </cdk-virtual-scroll-viewport>\n</div>\n\n<div class=\"driver_list\" *ngIf=\"isDriverList\">\n <div class=\"driver_headingprt\">\n <h2>Driver List</h2>\n <button *ngIf=\"driverList.driver_list?.length > 0\" (click)=\"isSmsList = true\">SMS</button>\n <div class=\"closebtn\" (click)=\"isDriverList = false; preventMouseout = false; isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <ul class=\"driverList\" *ngIf=\"driverList && driverList.driver_list\">\n <li *ngFor=\"let driver of driverList?.driver_list\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"driver['driver_name']\" />\n <div class=\"driver_detail\">\n <b>{{driver['driver_name']}}</b> <span>{{driver['trucking_company']}}</span>\n <div class=\"cont_del\">\n <small>Driver contact: <b>{{driver['driver_phone'] ? driver['driver_phone'] : 'N/A'}}</b></small>\n <small>Company contact: <b>{{driver['trucking_company_phone'] ? driver['trucking_company_phone'] : 'N/A'}}</b></small>\n </div>\n </div>\n </li>\n <p *ngIf=\"driverList.driver_list?.length === 0\" style=\"font-weight:700; text-align:center;\">\n No Driver found\n </p>\n </ul>\n <div class=\"smslist\" *ngIf=\"isSmsList\">\n <div class=\"heading\">\n <h2>SMS All Drivers</h2>\n <div class=\"closebtn\" (click)=\"isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <div class=\"detailprt\">\n <app-sms-card-details-overview [jobValue]=\"driverList\"></app-sms-card-details-overview>\n <div class=\"form_input\">\n <mat-form-field class=\"example-full-width\">\n <textarea matInput placeholder=\"Text here...\" autocomplete=\"nope\" column=\"10\"\n [formControl]=\"driverMessage\"></textarea>\n <mat-hint>{{driverMessage.value?.length}} / 256</mat-hint>\n </mat-form-field>\n <button *ngIf=\"!messageLoader\" [disabled]=\"!driverMessage.value || driverMessage.invalid\" (click)=\"sendMessage()\">\n Send SMS\n </button>\n </div>\n </div>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"messageLoader\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".driver_iconprt{position:absolute;right:10px;top:12px;z-index:9999}.driver_iconprt img{width:25px;height:25px}.driver_list{background:#fff;position:fixed;width:300px;top:10px;left:360px;border-top-left-radius:20px;border-top-right-radius:20px}.driver_list .driver_headingprt{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.driver_list .driver_headingprt button{background:none;border:1px solid #ccc;border-radius:10px;padding:5px 20px}.driver_list .driver_headingprt button:hover{background:#326ad3;color:#fff}.driver_list h2{font-size:20px}.driver_list .driverList{height:300px;overflow:auto}.driver_list .driverList li{display:flex;padding:10px;align-items:flex-start;cursor:pointer;border-bottom:1px solid white;background:#eee}.driver_list .driverList li img{width:35px;height:35px;border-radius:100%;margin-right:10px}.driver_list .driverList li .driver_detail{width:calc(100% - 45px);display:flex;flex-direction:column;justify-content:flex-start}.driver_list .driverList li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px;font-size:.9rem}.driver_list .driverList li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;font-size:.8rem}.driver_list:after{height:10px;background:#fff;border-bottom-right-radius:20px;border-bottom-left-radius:20px;content:\"\";position:absolute;bottom:-9px;width:100%}.smslist{background:#fff;position:absolute;width:480px;top:0;left:105%;border-radius:20px;padding-bottom:20px}.smslist .heading{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.smslist .detailprt{padding:0 15px}.smslist .detailprt span{display:flex;margin-bottom:12px;font-size:.8rem;align-items:center}.smslist .detailprt span label{font-weight:600;width:37%}.smslist .detailprt .form_input{display:flex;flex-direction:column;font-size:.8rem}.smslist .detailprt .form_input button{background:#326ad3;padding:10px 18px;color:#fff;font-size:.8125rem;border-radius:30px;display:flex;align-self:flex-end}.closebtn{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5}.show_routebtn{font-size:.9rem;margin-bottom:20px;padding:6px 11px;position:absolute;top:8px;right:10px;background-color:transparent;color:#3f51b5;border:1px solid #3f51b5;border-radius:10px;box-shadow:none}.show_routebtn:hover{background-color:#3f51b5;color:#fff}.cont_del{margin-top:10px}.cont_del small{display:block}.jobList ul{margin:0 .93em 0 0;width:100%}.jobList ul li{position:relative;background:#fbfbfb;padding:10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:inherit;width:15.62em}@media (min-width: 2500px){.jobList ul li{height:7.65vh}}@media (min-width: 3300px){.jobList ul li{height:5.61vh}}.viewroute ul{width:100%}.viewroute ul li{position:relative;background:#fbfbfb;padding:7px 10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:16.4vh;width:15.62em}@media (min-width: 1600px){.viewroute ul li{height:12.4vh}}.viewroute ul li.active{border:1px solid #39c471;border-left:3px solid #39c471}.loader{position:absolute;height:100%;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:center;pointer-events:none}.example-viewport{height:900px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i8.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "component", type: i8.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i9.ViewRouteListCardComponent, selector: "app-view-route-list-card", inputs: ["route", "emitrouteevent"] }, { kind: "component", type: i10.SmsCardDetailsOverviewComponent, selector: "app-sms-card-details-overview", inputs: ["jobValue"] }, { kind: "component", type: i11.JobCodeListCardComponent, selector: "app-job-code-list-card", inputs: ["route", "emitJobdetails", "preventCloseDetails"], outputs: ["routeSeletion", "toggleDrivermenu"] }] });
298
298
  }
299
299
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RouteJobCodeListComponent, decorators: [{
300
300
  type: Component,
301
- args: [{ selector: 'app-route-jobcode-list', template: "<div class=\"scrollprt addroutelist\" [class.viewroute]=\"visiblesection('addroute')\"\n [class.jobList]=\"visiblesection('jobcode')\">\n <button (click)=\"showRoute()\" [disabled]=\"loader\" *ngIf=\"selectedRoute.selected.length\" class=\"show_routebtn\">Show all\n route</button>\n <cdk-virtual-scroll-viewport itemSize=\"50\" [class.jobscroll]=\"visiblesection('jobcode')\" class=\"example-viewport\">\n <mat-spinner *ngIf=\"loader\"></mat-spinner>\n <ul *ngIf=\"!loader && data.length > 0\">\n <li [class.active]=\"route['isActive'] && visiblesection('addroute')\" *ngFor=\"let route of data\">\n <app-job-code-list-card *ngIf=\"visiblesection('jobcode')\" (toggleDrivermenu)=\"toggleDrivermenu($event)\"\n (routeSeletion)=\"selectRoute($event)\" [preventCloseDetails]=\"preventDetailsClose\" [emitJobdetails]=\"{emitroute, clearJobDetailsFromList}\" [route]=\"checkroutes(route)\"></app-job-code-list-card>\n <app-view-route-list-card [emitrouteevent]=\"emitroute\" *ngIf=\"visiblesection('addroute')\"\n [route]=\"route\"></app-view-route-list-card>\n </li>\n </ul>\n <p *ngIf=\"!loader && data.length === 0\">{{visiblesection('addroute') ? 'No Route found' : 'No Job code found.'}}</p>\n </cdk-virtual-scroll-viewport>\n</div>\n\n<div class=\"driver_list\" *ngIf=\"isDriverList\">\n <div class=\"driver_headingprt\">\n <h2>Driver List</h2>\n <button *ngIf=\"driverList.driver_list?.length > 0\" (click)=\"isSmsList = true\">SMS</button>\n <div class=\"closebtn\" (click)=\"isDriverList = false; preventMouseout = false; isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <ul class=\"driverList\" *ngIf=\"driverList && driverList.driver_list\">\n <li *ngFor=\"let driver of driverList?.driver_list\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"driver['driver_name']\" />\n <div class=\"driver_detail\">\n <b>{{driver['driver_name']}}</b> <span>{{driver['trucking_company']}}</span>\n <div class=\"cont_del\">\n <small>Driver contact: <b>{{driver['driver_phone'] ? driver['driver_phone'] : 'N/A'}}</b></small>\n <small>Company contact: <b>{{driver['trucking_company_phone'] ? driver['trucking_company_phone'] : 'N/A'}}</b></small>\n </div>\n </div>\n </li>\n <p *ngIf=\"driverList.driver_list?.length === 0\" style=\"font-weight:700; text-align:center;\">\n No Driver found\n </p>\n </ul>\n <div class=\"smslist\" *ngIf=\"isSmsList\">\n <div class=\"heading\">\n <h2>SMS All Drivers</h2>\n <div class=\"closebtn\" (click)=\"isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <div class=\"detailprt\">\n <app-sms-card-details-overview [jobValue]=\"driverList\"></app-sms-card-details-overview>\n <div class=\"form_input\">\n <mat-form-field class=\"example-full-width\">\n <textarea matInput placeholder=\"Text here...\" autocomplete=\"nope\" column=\"10\"\n [formControl]=\"driverMessage\"></textarea>\n <mat-hint>{{driverMessage.value?.length}} / 256</mat-hint>\n </mat-form-field>\n <button *ngIf=\"!messageLoader\" [disabled]=\"!driverMessage.value || driverMessage.invalid\" (click)=\"sendMessage()\">\n Send SMS\n </button>\n </div>\n </div>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"messageLoader\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".driver_iconprt{position:absolute;right:10px;top:12px;z-index:9999}.driver_iconprt img{width:25px;height:25px}.driver_list{background:#fff;position:fixed;width:300px;top:10px;left:360px;border-top-left-radius:20px;border-top-right-radius:20px}.driver_list .driver_headingprt{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.driver_list .driver_headingprt button{background:none;border:1px solid #ccc;border-radius:10px;padding:5px 20px}.driver_list .driver_headingprt button:hover{background:#326ad3;color:#fff}.driver_list h2{font-size:20px}.driver_list .driverList{height:300px;overflow:auto}.driver_list .driverList li{display:flex;padding:10px;align-items:flex-start;cursor:pointer;border-bottom:1px solid white;background:#eee}.driver_list .driverList li img{width:35px;height:35px;border-radius:100%;margin-right:10px}.driver_list .driverList li .driver_detail{width:calc(100% - 45px);display:flex;flex-direction:column;justify-content:flex-start}.driver_list .driverList li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px;font-size:.9rem}.driver_list .driverList li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;font-size:.8rem}.driver_list:after{height:10px;background:#fff;border-bottom-right-radius:20px;border-bottom-left-radius:20px;content:\"\";position:absolute;bottom:-9px;width:100%}.smslist{background:#fff;position:absolute;width:480px;top:0;left:105%;border-radius:20px;padding-bottom:20px}.smslist .heading{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.smslist .detailprt{padding:0 15px}.smslist .detailprt span{display:flex;margin-bottom:12px;font-size:.8rem;align-items:center}.smslist .detailprt span label{font-weight:600;width:37%}.smslist .detailprt .form_input{display:flex;flex-direction:column;font-size:.8rem}.smslist .detailprt .form_input button{background:#326ad3;padding:10px 18px;color:#fff;font-size:.8125rem;border-radius:30px;display:flex;align-self:flex-end}.closebtn{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5}.show_routebtn{font-size:.9rem;margin-bottom:20px;padding:6px 11px;position:absolute;top:8px;right:10px;background-color:transparent;color:#3f51b5;border:1px solid #3f51b5;border-radius:10px;box-shadow:none}.show_routebtn:hover{background-color:#3f51b5;color:#fff}.cont_del{margin-top:10px}.cont_del small{display:block}.jobList ul{margin:0 .93em 0 0;width:100%}.jobList ul li{position:relative;background:#fbfbfb;padding:10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:inherit;width:15.62em}@media (min-width: 2500px){.jobList ul li{height:7.65vh}}@media (min-width: 3300px){.jobList ul li{height:5.61vh}}.viewroute ul{width:100%}.viewroute ul li{position:relative;background:#fbfbfb;padding:7px 10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:16.4vh;width:15.62em}@media (min-width: 1600px){.viewroute ul li{height:12.4vh}}.viewroute ul li.active{border:1px solid #39c471;border-left:3px solid #39c471}.loader{position:absolute;height:100%;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:center;pointer-events:none}.example-viewport{height:900px}\n"] }]
301
+ args: [{ selector: 'app-route-jobcode-list', template: "<div class=\"scrollprt addroutelist\" [class.viewroute]=\"visiblesection('addroute')\"\n [class.jobList]=\"visiblesection('jobcode')\">\n <button (click)=\"showRoute()\" [disabled]=\"loader\" *ngIf=\"selectedRoute.selected.length\" class=\"show_routebtn\">Show all\n route</button>\n <cdk-virtual-scroll-viewport itemSize=\"50\" [class.jobscroll]=\"visiblesection('jobcode')\" class=\"example-viewport\">\n <mat-spinner *ngIf=\"loader\"></mat-spinner>\n <ul *ngIf=\"!loader && data.length > 0\">\n <li [class.active]=\"route['isActive'] && visiblesection('addroute')\" *ngFor=\"let route of data\">\n <app-job-code-list-card *ngIf=\"visiblesection('jobcode')\" \n (toggleDrivermenu)=\"toggleDrivermenu($event)\"\n (routeSeletion)=\"selectRoute($event)\" \n [preventCloseDetails]=\"preventDetailsClose\" \n [emitJobdetails]=\"{emitroute, clearJobDetailsFromList}\" \n [route]=\"checkroutes(route)\">\n </app-job-code-list-card>\n <app-view-route-list-card *ngIf=\"visiblesection('addroute')\"\n [emitrouteevent]=\"emitroute\" \n [route]=\"route\">\n </app-view-route-list-card>\n </li>\n </ul>\n <p *ngIf=\"!loader && data.length === 0\">{{visiblesection('addroute') ? 'No Route found' : 'No Job code found.'}}</p>\n </cdk-virtual-scroll-viewport>\n</div>\n\n<div class=\"driver_list\" *ngIf=\"isDriverList\">\n <div class=\"driver_headingprt\">\n <h2>Driver List</h2>\n <button *ngIf=\"driverList.driver_list?.length > 0\" (click)=\"isSmsList = true\">SMS</button>\n <div class=\"closebtn\" (click)=\"isDriverList = false; preventMouseout = false; isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <ul class=\"driverList\" *ngIf=\"driverList && driverList.driver_list\">\n <li *ngFor=\"let driver of driverList?.driver_list\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"driver['driver_name']\" />\n <div class=\"driver_detail\">\n <b>{{driver['driver_name']}}</b> <span>{{driver['trucking_company']}}</span>\n <div class=\"cont_del\">\n <small>Driver contact: <b>{{driver['driver_phone'] ? driver['driver_phone'] : 'N/A'}}</b></small>\n <small>Company contact: <b>{{driver['trucking_company_phone'] ? driver['trucking_company_phone'] : 'N/A'}}</b></small>\n </div>\n </div>\n </li>\n <p *ngIf=\"driverList.driver_list?.length === 0\" style=\"font-weight:700; text-align:center;\">\n No Driver found\n </p>\n </ul>\n <div class=\"smslist\" *ngIf=\"isSmsList\">\n <div class=\"heading\">\n <h2>SMS All Drivers</h2>\n <div class=\"closebtn\" (click)=\"isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <div class=\"detailprt\">\n <app-sms-card-details-overview [jobValue]=\"driverList\"></app-sms-card-details-overview>\n <div class=\"form_input\">\n <mat-form-field class=\"example-full-width\">\n <textarea matInput placeholder=\"Text here...\" autocomplete=\"nope\" column=\"10\"\n [formControl]=\"driverMessage\"></textarea>\n <mat-hint>{{driverMessage.value?.length}} / 256</mat-hint>\n </mat-form-field>\n <button *ngIf=\"!messageLoader\" [disabled]=\"!driverMessage.value || driverMessage.invalid\" (click)=\"sendMessage()\">\n Send SMS\n </button>\n </div>\n </div>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"messageLoader\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".driver_iconprt{position:absolute;right:10px;top:12px;z-index:9999}.driver_iconprt img{width:25px;height:25px}.driver_list{background:#fff;position:fixed;width:300px;top:10px;left:360px;border-top-left-radius:20px;border-top-right-radius:20px}.driver_list .driver_headingprt{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.driver_list .driver_headingprt button{background:none;border:1px solid #ccc;border-radius:10px;padding:5px 20px}.driver_list .driver_headingprt button:hover{background:#326ad3;color:#fff}.driver_list h2{font-size:20px}.driver_list .driverList{height:300px;overflow:auto}.driver_list .driverList li{display:flex;padding:10px;align-items:flex-start;cursor:pointer;border-bottom:1px solid white;background:#eee}.driver_list .driverList li img{width:35px;height:35px;border-radius:100%;margin-right:10px}.driver_list .driverList li .driver_detail{width:calc(100% - 45px);display:flex;flex-direction:column;justify-content:flex-start}.driver_list .driverList li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px;font-size:.9rem}.driver_list .driverList li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;font-size:.8rem}.driver_list:after{height:10px;background:#fff;border-bottom-right-radius:20px;border-bottom-left-radius:20px;content:\"\";position:absolute;bottom:-9px;width:100%}.smslist{background:#fff;position:absolute;width:480px;top:0;left:105%;border-radius:20px;padding-bottom:20px}.smslist .heading{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.smslist .detailprt{padding:0 15px}.smslist .detailprt span{display:flex;margin-bottom:12px;font-size:.8rem;align-items:center}.smslist .detailprt span label{font-weight:600;width:37%}.smslist .detailprt .form_input{display:flex;flex-direction:column;font-size:.8rem}.smslist .detailprt .form_input button{background:#326ad3;padding:10px 18px;color:#fff;font-size:.8125rem;border-radius:30px;display:flex;align-self:flex-end}.closebtn{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5}.show_routebtn{font-size:.9rem;margin-bottom:20px;padding:6px 11px;position:absolute;top:8px;right:10px;background-color:transparent;color:#3f51b5;border:1px solid #3f51b5;border-radius:10px;box-shadow:none}.show_routebtn:hover{background-color:#3f51b5;color:#fff}.cont_del{margin-top:10px}.cont_del small{display:block}.jobList ul{margin:0 .93em 0 0;width:100%}.jobList ul li{position:relative;background:#fbfbfb;padding:10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:inherit;width:15.62em}@media (min-width: 2500px){.jobList ul li{height:7.65vh}}@media (min-width: 3300px){.jobList ul li{height:5.61vh}}.viewroute ul{width:100%}.viewroute ul li{position:relative;background:#fbfbfb;padding:7px 10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:16.4vh;width:15.62em}@media (min-width: 1600px){.viewroute ul li{height:12.4vh}}.viewroute ul li.active{border:1px solid #39c471;border-left:3px solid #39c471}.loader{position:absolute;height:100%;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:center;pointer-events:none}.example-viewport{height:900px}\n"] }]
302
302
  }], ctorParameters: () => [{ type: i1.CoolmapService }, { type: i1.UtilsService }], propDecorators: { loader: [{
303
303
  type: Input
304
304
  }], type: [{
@@ -318,4 +318,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
318
318
  }], clearListSeletion: [{
319
319
  type: Input
320
320
  }] } });
321
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtam9iY29kZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvcm91dGUtam9iY29kZS1saXN0L3JvdXRlLWpvYmNvZGUtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L3JvdXRlLWpvYmNvZGUtbGlzdC9yb3V0ZS1qb2Jjb2RlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUXpELE1BQU0sT0FBTyx5QkFBeUI7SUFvQmpCO0lBQWdDO0lBbkJuQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ2QsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNsQixJQUFJLEdBQVksRUFBRSxDQUFDO0lBQ25CLFVBQVUsR0FBVyxFQUFFLENBQUE7SUFDdEIsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDL0IsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDbkQsZUFBZSxHQUFZLEtBQUssQ0FBQztJQUNqQyxVQUFVLEdBQVksSUFBSSxDQUFDLElBQUksQ0FBQztJQUNoQixVQUFVLENBQU87SUFDakMsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUN2QixhQUFhLEdBQUcsSUFBSSxjQUFjLENBQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3hELFVBQVUsQ0FBTztJQUNqQixpQkFBaUIs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QyxFQUFFLEdBQUUsSUFBRyxHQUFHLEVBQUUsQ0FBQztnQkFBQSxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQTtZQUFBLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQTtRQUNuRCxDQUFDO0lBQ0osQ0FBQzt1R0E5TlcseUJBQXlCOzJGQUF6Qix5QkFBeUIsZ1dDVnRDLHk3R0FrRUE7OzJGRHhEYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usd0JBQXdCOzhHQUtsQixNQUFNO3NCQUFyQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNXLFNBQVM7c0JBQXpCLE1BQU07Z0JBQ1UsWUFBWTtzQkFBNUIsTUFBTTtnQkFHUyxVQUFVO3NCQUF6QixLQUFLO2dCQUtXLHVCQUF1QjtzQkFBdkMsTUFBTTtnQkFJUyxpQkFBaUI7c0JBQWhDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29vbG1hcFNlcnZpY2UsIFJvdXRlLCBVdGlsc1NlcnZpY2UgfSBmcm9tICdAYWdnZGlyZWN0L2Nvb2xtYXAtc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcm91dGUtam9iY29kZS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JvdXRlLWpvYmNvZGUtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JvdXRlLWpvYmNvZGUtbGlzdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlSm9iQ29kZUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHB1YmxpYyBsb2FkZXIgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgdHlwZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkYXRhOiBSb3V0ZVtdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXJyZW50TmF2OiBzdHJpbmcgPSAnJ1xuICBAT3V0cHV0KCkgcHVibGljIGVtaXRyb3V0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBzaG93QWxsUm91dGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByZXZlbnRNb3VzZW91dDogYm9vbGVhbiA9IGZhbHNlO1xuICBmaWx0ZXJMaXN0OiBSb3V0ZVtdID0gdGhpcy5kYXRhO1xuICBASW5wdXQoKSBwdWJsaWMgc2VhcmNoVGVybSE6IGFueTtcbiAgaXNEcml2ZXJMaXN0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzZWxlY3RlZFJvdXRlID0gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odHJ1ZSwgW10pXG4gIGRyaXZlckxpc3QhOiBhbnk7XG4gIHByZXZlbnRMaXN0U2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2xlYXJKb2JEZXRhaWxzRnJvbUxpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByZXZlbnREZXRhaWxzQ2xvc2UgPSBmYWxzZTtcbiAgbWVzc2FnZUxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBkcml2ZXJNZXNzYWdlID0gbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV0pO1xuICBASW5wdXQoKSBwdWJsaWMgY2xlYXJMaXN0U2VsZXRpb246IGJvb2xlYW47XG4gIGlzU21zTGlzdDogYm9vbGVhbiA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29vbE1hcDogQ29vbG1hcFNlcnZpY2UsIHB1YmxpYyB1dGlsczogVXRpbHNTZXJ2aWNlKSB7IHRoaXMuZHJpdmVyTGlzdCA9IFtdIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51dGlscy5nZXRwcmVWZW50Sm9iZGV0YWlsY2xvc2Uuc3Vic2NyaWJlKHJlcyA9PiB7IHRoaXMucHJldmVudERldGFpbHNDbG9zZSA9IHJlcyB9KTtcbiAgICB0aGlzLnV0aWxzLnJlbW92ZU1hcEVudGl0eVV0aWxpdHkuc3Vic2NyaWJlKChyZXM6IFJvdXRlKSA9PiB7dGhpcy5wYXNzUm91dGUocmVzKX0pO1xuICB9XG4gIHBhc3NSb3V0ZShqb2I6IFJvdXRlKSB7XG4gICAgdGhpcy5kYXRhLmZvckVhY2goKGVhY2gpID0+IHsgaWYgKGVhY2hbJ3JvdXRlX2lkJ10gIT09IGpvYlsncm91dGVfaWQnXSkgeyBlYWNoWydpc0FjdGl2ZSddID0gZmFsc2UgfSBlbHNlIHsgZWFjaFsnaXNBY3RpdmUnXSA9IHRydWUgfSB9KTtcbiAgICBpZiAodGhpcy50eXBlID09ICdhZGRyb3V0ZScpIHRoaXMuZmlsdGVyTGlzdC5mb3JFYWNoKGVsZSA9PiB0aGlzLmNvb2xNYXAuZmlsdGVyUm91dGUoZWxlWydyb3V0ZV9pZCddLCAnbm9uZScpKTtcbiAgfVxuICBzZWxlY3RSb3V0ZShyb3V0ZTogYW55KSB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRMaXN0U2VsZWN0KSB7XG4gICAgICB0aGlzLnByZXZlbnRMaXN0U2VsZWN0ID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS50b2dnbGUocm91dGUpO1xuICAgICAgdGhpcy5jbGVhckpvYkRldGFpbHNGcm9tTGlzdC5lbWl0KHRydWUpO1xuICAgICAgdGhpcy51dGlscy5wcmVWZW50Sm9iZGV0YWlsY2xvc2UubmV4dChmYWxzZSk7XG4gICAgICB0aGlzLmZpbHRlckxpc3QuZm9yRWFjaChlbGUgPT4gdGhpcy5jb29sTWFwLmZpbHRlclJvdXRlKGVsZVsnam9iX2lkJ10sICdub25lJykpO1xuICAgICAgdGhpcy5jbGVhckxpc3QoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZC5mb3JFYWNoKChlbGUsIGluZGV4KSA9PiB7XG4gICAgICAgIHRoaXMuY29vbE1hcC5maWx0ZXJSb3V0ZShlbGVbJ2pvYl9pZCddLCAndmlzaWJsZScsICgodGhpcy5zZWxlY3RlZFJvdXRlLnNlbGVjdGVkLmxlbmd0aCAtIDEpID09PSBpbmRleCkpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMucHJldmVudExpc3RTZWxlY3QgPSBmYWxzZTtcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkUm91dGUuc2VsZWN0ZWQubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMucHJldmVudExpc3RTZWxlY3QgPSBmYWxzZVxuICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaChlbGUgPT4gdGhpcy5jb29sTWFwLmZpbHRlclJvdXRlKGVsZVsnam9iX2lkJ10sICd2aXNpYmxlJykpO1xuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgY2hlY2tyb3V0ZXMocm91dGU6IFJvdXRlKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3V0ZSA9IHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZDtcbiAgICB0aGlzLmZpbHRlckxpc3QgPSB0aGlzLmZpbHRlckxpc3QubWFwKGVsZSA9PiB7IGVsZVsnaXNTZWxlY3RlZCddID0gZmFsc2U7IHJldHVybiBlbGUgfSlcbiAgICBpZiAoc2VsZWN0ZWRSb3V0ZS5sZW5ndGggPiAwKSB7XG4gICAgICBzZWxlY3RlZFJvdXRlLmZvckVhY2goZWxlID0+IHtcbiAgICAgICAgaWYgKHJvdXRlWydvcmRlcl9udW1iZXInXSA9PT0gZWxlWydvcmRlcl9udW1iZXInXSkgeyBlbGVbJ2lzU2VsZWN0ZWQnXSA9IHRydWUgfVxuICAgICAgfSk7XG4gICAgfSByZXR1cm4gcm91dGVcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50TmF2ID09PSAnQWRkcm91dGUnICYmICh0aGlzLmRhdGEubGVuZ3RoIDwgdGhpcy5maWx0ZXJMaXN0Lmxlbmd0aCkpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbHRlckxpc3QuZmluZEluZGV4KGVsZSA9PiBlbGUuaXNBY3RpdmUpO1xuICAgICAgICBpZiAoaW5kZXggPiAwKSB0aGlzLmZpbHRlckxpc3RbaW5kZXhdLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKChlbGU6IFJvdXRlLCBpbmRleEZvckRhdGE6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gKGVsZVsnam9iX2lkJ10gPyBlbGVbJ2pvYl9pZCddIDogZWxlWydyb3V0ZV9pZCddKVxuICAgICAgICAgIHRoaXMuY29vbE1hcC5wbG90Um91dGUoZWxlLCBpZCwgdGhpcy50eXBlLCBmYWxzZSwgKGluZGV4Rm9yRGF0YSA9PT0gKHRoaXMuZGF0YS5sZW5ndGggLSAxKSkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10gJiYgY2hhbmdlc1snZGF0YSddWydjdXJyZW50VmFsdWUnXSkge1xuICAgICAgdGhpcy5maWx0ZXJMaXN0ID0gY2hhbmdlc1snZGF0YSddWydjdXJyZW50VmFsdWUnXTtcbiAgICAgIGlmICh0aGlzLnNlYXJjaFRlcm0pIHtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGVybS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5kYXRhID0gdGhpcy51dGlscy5nZXRTZWFyY2hSZXN1bHRzKGNoYW5nZXNbJ2RhdGEnXVsnY3VycmVudFZhbHVlJ10sIHRoaXMuc2VhcmNoVGVybSk7XG4gICAgICAgICAgdGhpcy5maWx0ZXJMaXN0ID0gdGhpcy5kYXRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmlsdGVyTGlzdCA9IGNoYW5nZXNbJ2RhdGEnXVsnY3VycmVudFZhbHVlJ107XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2pvYmNvZGUnKSB7XG4gICAgICAgIHRoaXMubG9hZGVyID0gdHJ1ZTsgdGhpcy5jbGVhckxpc3QoKTtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyTGlzdC5sZW5ndGggPT09IDApIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgIT09ICdqb2Jjb2RlJykge1xuICAgICAgICBpZiAoY2hhbmdlc1snZGF0YSddWydwcmV2aW91c1ZhbHVlJ10gJiYgdGhpcy5jdXJyZW50TmF2ID09PSAnYWRkRm9ybScpIHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVSb3V0ZSA9IGNoYW5nZXNbJ2RhdGEnXVsncHJldmlvdXNWYWx1ZSddLmZpbmQoKGVsZTogUm91dGUpID0+IGVsZS5pc0FjdGl2ZSk7XG4gICAgICAgICAgaWYgKGFjdGl2ZVJvdXRlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGl0ZW0ucm91dGVfaWQgPT09IGFjdGl2ZVJvdXRlLnJvdXRlX2lkKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hhbmdlc1snZGF0YSddWydwcmV2aW91c1ZhbHVlJ10gJiYgdGhpcy5jdXJyZW50TmF2ICE9PSAnYWRkRm9ybScpIHtcbiAgICAgICAgdGhpcy5jb29sTWFwLnJlbW92ZUpvYkZyb21NYXAoY2hhbmdlc1snZGF0YSddWydwcmV2aW91c1ZhbHVlJ10pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm91dGUuY2xlYXIoKTtcbiAgICAgIH07XG4gICAgICBpZiAodGhpcy5jdXJyZW50TmF2ICE9PSAnYWRkRm9ybScpIHtcbiAgICAgICAgY2hhbmdlc1snZGF0YSddWydjdXJyZW50VmFsdWUnXS5mb3JFYWNoKChlbGU6IFJvdXRlLCBpbmRleEZvckRhdGE6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gKGVsZVsnam9iX2lkJ10gPyBlbGVbJ2pvYl9pZCddIDogZWxlWydyb3V0ZV9pZCddKVxuICAgICAgICAgIGlmKHRoaXMudHlwZSA9PT0gJ2pvYmNvZGUnKSBlbGUubWF0ZXJpYWxMYWJlbCA9IGVsZS5tYXRlcmlhbDtcbiAgICAgICAgICB0aGlzLmNvb2xNYXAucGxvdFJvdXRlKGVsZSwgaWQsIHRoaXMudHlwZSwgZmFsc2UsIChpbmRleEZvckRhdGEgPT09ICh0aGlzLmRhdGEubGVuZ3RoIC0gMSkpKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleEZvckRhdGEgPT09ICh0aGlzLmRhdGEubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy51dGlscy5wcmV2ZW50bmF2Q2hhbmdlLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snc2VhcmNoVGVybSddKSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXJMaXN0KSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZmlsdGVyTGlzdDtcbiAgICAgICAgdGhpcy5jbGVhckxpc3QoKTtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NlYXJjaFRlcm0nXVsnY3VycmVudFZhbHVlJ10ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVSb3V0ZUFuZE1hcmtlcigxKTtcbiAgICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLnV0aWxzLmdldFNlYXJjaFJlc3VsdHModGhpcy5kYXRhLCBjaGFuZ2VzWydzZWFyY2hUZXJtJ11bJ2N1cnJlbnRWYWx1ZSddKTtcbiAgICAgICAgfSBlbHNlIHsgdGhpcy5kYXRhID0gdGhpcy5maWx0ZXJMaXN0OyB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY29vbE1hcC5jbGVhckJvdW5kV2l0aENvcmRpbmF0ZXMoKTtcbiAgICAgICAgICBpZiAodGhpcy5jdXJyZW50TmF2ICE9PSAnYWRkRm9ybScgJiYgIXRoaXMuc2VsZWN0ZWRSb3V0ZVsnc2VsZWN0ZWQnXS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVSb3V0ZUFuZE1hcmtlcigxKTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyUm91dGUodGhpcy5maWx0ZXJMaXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnROYXYgIT09ICdhZGRGb3JtJyAmJiB0aGlzLnNlbGVjdGVkUm91dGVbJ3NlbGVjdGVkJ10ubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhckxpc3QoKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJKb2JEZXRhaWxzRnJvbUxpc3QuZW1pdCh0cnVlKVxuICAgICAgICAgICAgdGhpcy5jb29sTWFwLnJlbW92ZUpvYkZyb21NYXAodGhpcy5zZWxlY3RlZFJvdXRlLnNlbGVjdGVkKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaCgoZWxlLCBpbmRleEZvckRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvb2xNYXAucGxvdFJvdXRlKGVsZSwgZWxlWydqb2JfaWQnXSwgdGhpcy50eXBlLCBmYWxzZSwgKGluZGV4Rm9yRGF0YSA9PT0gKHRoaXMuZGF0YS5sZW5ndGggLSAxKSkpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGluZGV4Rm9yRGF0YSA9PT0gKHRoaXMuZGF0YS5sZW5ndGggLSAxKSkgeyB0aGlzLmxvYWRlciA9IGZhbHNlOyB0aGlzLnV0aWxzLnByZXZlbnRuYXZDaGFuZ2UubmV4dCh0cnVlKSB9XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFJvdXRlWydzZWxlY3RlZCddLmxlbmd0aCAmJiB0aGlzLnNlbGVjdGVkUm91dGVbJ3NlbGVjdGVkJ11bMF1bJ2pvYl9pZCddID09PSBlbGVbJ2pvYl9pZCddKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5jbGVhcigpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBzaG93Um91dGUoKSB7XG4gICAgdGhpcy51dGlscy5wcmV2ZW50bmF2Q2hhbmdlLm5leHQoZmFsc2UpO1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTsgdGhpcy5jbGVhckxpc3QoKTtcbiAgICB0aGlzLnNob3dBbGxSb3V0ZS5lbWl0KHRydWUpO1xuICAgIGlmICh0aGlzLmZpbHRlckxpc3QgJiYgdGhpcy5maWx0ZXJMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVKb2JGcm9tTWFwKHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJMaXN0LmZvckVhY2goKGVsZSwgaW5kZXhGb3JEYXRhKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb29sTWFwLnBsb3RSb3V0ZShlbGUsIGVsZVsnam9iX2lkJ10sIHRoaXMudHlwZSwgZmFsc2UsIChpbmRleEZvckRhdGEgPT09IHRoaXMuZmlsdGVyTGlzdC5sZW5ndGggLSAxKSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXhGb3JEYXRhID09PSB0aGlzLmZpbHRlckxpc3QubGVuZ3RoIC0gMSkgeyB0aGlzLmxvYWRlciA9IGZhbHNlOyB0aGlzLnV0aWxzLnByZXZlbnRuYXZDaGFuZ2UubmV4dCh0cnVlKSB9XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFJvdXRlWydzZWxlY3RlZCddLmxlbmd0aCAmJiB0aGlzLnNlbGVjdGVkUm91dGVbJ3NlbGVjdGVkJ11bMF1bJ2pvYl9pZCddID09PSBlbGVbJ2pvYl9pZCddKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5jbGVhcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgfSwgNTAwKTtcbiAgICB9XG4gIH1cbiAgdG9nZ2xlRHJpdmVybWVudShldmVudDogYW55KSB7XG4gICAgY29uc3QgbW91c2Vldm50VHlwZSA9IGV2ZW50Lm1vdXNlZXZudFR5cGU7IGxldCByb3V0ZSA9IGV2ZW50LnJvdXRlO1xuICAgIGNvbnN0IGlzSG92ZXJPdXQgPSBldmVudC5pc0hvdmVyT3V0O1xuICAgIGlmKHR5cGVvZihtb3VzZWV2bnRUeXBlKSA9PT0gJ3N0cmluZycpIHtpZih0aGlzLnByZXZlbnRNb3VzZW91dCl7dGhpcy5pc0RyaXZlckxpc3QgPSAhdGhpcy5pc0RyaXZlckxpc3R9OyB0aGlzLnByZXZlbnRNb3VzZW91dCA9IHRydWV9XG4gICAgaWYgKHR5cGVvZihtb3VzZWV2bnRUeXBlKSA9PT0gJ2Jvb2xlYW4nICYmIW1vdXNlZXZudFR5cGUgJiYgIXRoaXMucHJldmVudE1vdXNlb3V0KSB7IHRoaXMuaXNEcml2ZXJMaXN0ID0gbW91c2Vldm50VHlwZSB9O1xuICAgIGlmICh0eXBlb2YobW91c2Vldm50VHlwZSkgPT09ICdib29sZWFuJyAmJiBtb3VzZWV2bnRUeXBlICYmICF0aGlzLnByZXZlbnRNb3VzZW91dCkgeyB0aGlzLmlzRHJpdmVyTGlzdCA9IG1vdXNlZXZudFR5cGUgfTtcbiAgICBpZih0aGlzLnByZXZlbnRNb3VzZW91dCAmJiAhdGhpcy5pc0RyaXZlckxpc3QpIHRoaXMucHJldmVudE1vdXNlb3V0ID0gZmFsc2U7XG4gICAgaWYgKGlzSG92ZXJPdXQpIHtcbiAgICAgIGlmICh0aGlzLnByZXZlbnRNb3VzZW91dCkge1xuICAgICAgICByb3V0ZSA9IHRoaXMudXRpbHMuZ2V0ZGljdFZhbHVlKCdkcml2ZXItZGV0YWlscycpO1xuICAgICAgICB0aGlzLmRyaXZlckxpc3QgPSByb3V0ZTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5wcmV2ZW50TW91c2VvdXQpIHtcbiAgICAgICAgdGhpcy5kcml2ZXJMaXN0ID0gcm91dGVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcml2ZXJMaXN0ID0gcm91dGVcbiAgICB9XG4gIH1cbiAgdmlzaWJsZXNlY3Rpb24odmFsdWU6IHN0cmluZykgeyBpZiAodGhpcy50eXBlID09PSB2YWx1ZSkgeyByZXR1cm4gdHJ1ZSB9IGVsc2UgcmV0dXJuIGZhbHNlIH1cbiAgdG9nZ2xlRmlsdGVyUm91dGUoZmlsdGVyTGlzdDogUm91dGVbXSkge1xuICAgIGZpbHRlckxpc3QuZm9yRWFjaCgoZWxlKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJJdGVtID0gKHRoaXMudHlwZSA9PT0gJ2pvYmNvZGUnKSA/ICdqb2JfaWQnIDogJ3JvdXRlX2lkJztcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kYXRhLmZpbmRJbmRleCgoZWxlMSkgPT4geyByZXR1cm4gKGVsZTFbYCR7ZmlsdGVySXRlbX1gXSA9PT0gZWxlW2Ake2ZpbHRlckl0ZW19YF0pIH0pO1xuICAgICAgY29uc3QgaWQgPSAoZWxlWydqb2JfaWQnXSA/IGVsZVsnam9iX2lkJ10gOiBlbGVbJ3JvdXRlX2lkJ10pO1xuICAgICAgaWYgKGlkICYmIGluZGV4IDwgMCkgdGhpcy5jb29sTWFwLmZpbHRlclJvdXRlKGlkLCAnbm9uZScpO1xuICAgICAgaWYgKGlkICYmIGluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5kYXRhW2luZGV4XS5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvb2xNYXAuZmlsdGVyUm91dGUoaWQsICd2aXNpYmxlJyk7XG4gICAgICAgIHRoaXMuY29vbE1hcC5leHRlbmRCb3VuZChlbGVbJ3BhdGgnXSwgKGluZGV4ID09PSAodGhpcy5kYXRhLmxlbmd0aCAtIDEpKSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIGNsZWFyTGlzdCgpIHtcbiAgICB0aGlzLmlzRHJpdmVyTGlzdCA9IGZhbHNlOyB0aGlzLmRyaXZlckxpc3QgPSBudWxsOyB0aGlzLnByZXZlbnRNb3VzZW91dCA9IGZhbHNlOyB0aGlzLmlzU21zTGlzdCA9IGZhbHNlO1xuICB9XG4gIHNlbmRNZXNzYWdlKCkge1xuICAgIHRoaXMubWVzc2FnZUxvYWRlciA9IHRydWVcbiAgICBpZiAodGhpcy5kcml2ZXJNZXNzYWdlLnZhbGlkKSB7XG4gICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICBvcmRlcl9udW1iZXI6IHRoaXMuZHJpdmVyTGlzdFsnb3JkZXJfbnVtYmVyJ10sXG4gICAgICAgIGRhdGU6IHRoaXMuZHJpdmVyTGlzdFsnZGF0ZSddLFxuICAgICAgICBtZXNzYWdlOiB0aGlzLmRyaXZlck1lc3NhZ2UudmFsdWUsXG4gICAgICB9XG4gICAgICB0aGlzLnV0aWxzLnBvc3RkYXRhKCdqb2JzX3JlcG9ydF9jaGF0JywgZGF0YSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzWydkYXRhJ11bJ3N0YXR1cyddID09PSAnU3VjY2Vzcy4nKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5kcml2ZXJNZXNzYWdlLnJlc2V0KCk7XG4gICAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIoJ01lc3NhZ2UgU2VudCcsICdzdWNjZXNzJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIoJ01lc3NhZ2Ugbm90IHNlbnQnLCAnZXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgfSwgZXJyID0+IHtpZihlcnIpIHt0aGlzLm1lc3NhZ2VMb2FkZXIgPSBmYWxzZX19KVxuICAgIH1cbiB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2Nyb2xscHJ0IGFkZHJvdXRlbGlzdFwiIFtjbGFzcy52aWV3cm91dGVdPVwidmlzaWJsZXNlY3Rpb24oJ2FkZHJvdXRlJylcIlxuICBbY2xhc3Muam9iTGlzdF09XCJ2aXNpYmxlc2VjdGlvbignam9iY29kZScpXCI+XG4gIDxidXR0b24gKGNsaWNrKT1cInNob3dSb3V0ZSgpXCIgW2Rpc2FibGVkXT1cImxvYWRlclwiICpuZ0lmPVwic2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZC5sZW5ndGhcIiBjbGFzcz1cInNob3dfcm91dGVidG5cIj5TaG93IGFsbFxuICAgIHJvdXRlPC9idXR0b24+XG4gICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBpdGVtU2l6ZT1cIjUwXCIgW2NsYXNzLmpvYnNjcm9sbF09XCJ2aXNpYmxlc2VjdGlvbignam9iY29kZScpXCIgY2xhc3M9XCJleGFtcGxlLXZpZXdwb3J0XCI+XG4gICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJsb2FkZXJcIj48L21hdC1zcGlubmVyPlxuICAgICAgPHVsICpuZ0lmPVwiIWxvYWRlciAmJiBkYXRhLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGxpIFtjbGFzcy5hY3RpdmVdPVwicm91dGVbJ2lzQWN0aXZlJ10gJiYgdmlzaWJsZXNlY3Rpb24oJ2FkZHJvdXRlJylcIiAqbmdGb3I9XCJsZXQgcm91dGUgb2YgZGF0YVwiPlxuICAgICAgICAgIDxhcHAtam9iLWNvZGUtbGlzdC1jYXJkICpuZ0lmPVwidmlzaWJsZXNlY3Rpb24oJ2pvYmNvZGUnKVwiICh0b2dnbGVEcml2ZXJtZW51KT1cInRvZ2dsZURyaXZlcm1lbnUoJGV2ZW50KVwiXG4gICAgICAgICAgICAocm91dGVTZWxldGlvbik9XCJzZWxlY3RSb3V0ZSgkZXZlbnQpXCIgW3ByZXZlbnRDbG9zZURldGFpbHNdPVwicHJldmVudERldGFpbHNDbG9zZVwiIFtlbWl0Sm9iZGV0YWlsc109XCJ7ZW1pdHJvdXRlLCBjbGVhckpvYkRldGFpbHNGcm9tTGlzdH1cIiBbcm91dGVdPVwiY2hlY2tyb3V0ZXMocm91dGUpXCI+PC9hcHAtam9iLWNvZGUtbGlzdC1jYXJkPlxuICAgICAgICAgIDxhcHAtdmlldy1yb3V0ZS1saXN0LWNhcmQgW2VtaXRyb3V0ZWV2ZW50XT1cImVtaXRyb3V0ZVwiICpuZ0lmPVwidmlzaWJsZXNlY3Rpb24oJ2FkZHJvdXRlJylcIlxuICAgICAgICAgICAgW3JvdXRlXT1cInJvdXRlXCI+PC9hcHAtdmlldy1yb3V0ZS1saXN0LWNhcmQ+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgICAgPHAgKm5nSWY9XCIhbG9hZGVyICYmIGRhdGEubGVuZ3RoID09PSAwXCI+e3t2aXNpYmxlc2VjdGlvbignYWRkcm91dGUnKSA/ICdObyBSb3V0ZSBmb3VuZCcgOiAnTm8gSm9iIGNvZGUgZm91bmQuJ319PC9wPlxuICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJkcml2ZXJfbGlzdFwiICpuZ0lmPVwiaXNEcml2ZXJMaXN0XCI+XG4gIDxkaXYgY2xhc3M9XCJkcml2ZXJfaGVhZGluZ3BydFwiPlxuICAgIDxoMj5Ecml2ZXIgTGlzdDwvaDI+XG4gICAgPGJ1dHRvbiAqbmdJZj1cImRyaXZlckxpc3QuZHJpdmVyX2xpc3Q/Lmxlbmd0aCA+IDBcIiAoY2xpY2spPVwiaXNTbXNMaXN0ID0gdHJ1ZVwiPlNNUzwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJjbG9zZWJ0blwiIChjbGljayk9XCJpc0RyaXZlckxpc3QgPSBmYWxzZTsgcHJldmVudE1vdXNlb3V0ID0gZmFsc2U7IGlzU21zTGlzdCA9IGZhbHNlXCI+XG4gICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPHVsIGNsYXNzPVwiZHJpdmVyTGlzdFwiICpuZ0lmPVwiZHJpdmVyTGlzdCAmJiBkcml2ZXJMaXN0LmRyaXZlcl9saXN0XCI+XG4gICAgPGxpICpuZ0Zvcj1cImxldCBkcml2ZXIgb2YgZHJpdmVyTGlzdD8uZHJpdmVyX2xpc3RcIj5cbiAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9kcml2ZXJfaWNvbi5wbmdcIiBbYWx0XT1cImRyaXZlclsnZHJpdmVyX25hbWUnXVwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHJpdmVyX2RldGFpbFwiPlxuICAgICAgICA8Yj57e2RyaXZlclsnZHJpdmVyX25hbWUnXX19PC9iPiA8c3Bhbj57e2RyaXZlclsndHJ1Y2tpbmdfY29tcGFueSddfX08L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250X2RlbFwiPlxuICAgICAgICAgIDxzbWFsbD5Ecml2ZXIgY29udGFjdDogPGI+e3tkcml2ZXJbJ2RyaXZlcl9waG9uZSddID8gZHJpdmVyWydkcml2ZXJfcGhvbmUnXSA6ICdOL0EnfX08L2I+PC9zbWFsbD5cbiAgICAgICAgICA8c21hbGw+Q29tcGFueSBjb250YWN0OiA8Yj57e2RyaXZlclsndHJ1Y2tpbmdfY29tcGFueV9waG9uZSddID8gZHJpdmVyWyd0cnVja2luZ19jb21wYW55X3Bob25lJ10gOiAnTi9BJ319PC9iPjwvc21hbGw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9saT5cbiAgICA8cCAqbmdJZj1cImRyaXZlckxpc3QuZHJpdmVyX2xpc3Q/Lmxlbmd0aCA9PT0gMFwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6NzAwOyB0ZXh0LWFsaWduOmNlbnRlcjtcIj5cbiAgICAgIE5vIERyaXZlciBmb3VuZFxuICAgIDwvcD5cbiAgPC91bD5cbiAgPGRpdiBjbGFzcz1cInNtc2xpc3RcIiAqbmdJZj1cImlzU21zTGlzdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCI+XG4gICAgICA8aDI+U01TIEFsbCBEcml2ZXJzPC9oMj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZWJ0blwiIChjbGljayk9XCJpc1Ntc0xpc3QgPSBmYWxzZVwiPlxuICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImRldGFpbHBydFwiPlxuICAgICAgPGFwcC1zbXMtY2FyZC1kZXRhaWxzLW92ZXJ2aWV3IFtqb2JWYWx1ZV09XCJkcml2ZXJMaXN0XCI+PC9hcHAtc21zLWNhcmQtZGV0YWlscy1vdmVydmlldz5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtX2lucHV0XCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImV4YW1wbGUtZnVsbC13aWR0aFwiPlxuICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cIlRleHQgaGVyZS4uLlwiIGF1dG9jb21wbGV0ZT1cIm5vcGVcIiBjb2x1bW49XCIxMFwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZHJpdmVyTWVzc2FnZVwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgPG1hdC1oaW50Pnt7ZHJpdmVyTWVzc2FnZS52YWx1ZT8ubGVuZ3RofX0gLyAyNTY8L21hdC1oaW50PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIW1lc3NhZ2VMb2FkZXJcIiBbZGlzYWJsZWRdPVwiIWRyaXZlck1lc3NhZ2UudmFsdWUgfHwgZHJpdmVyTWVzc2FnZS5pbnZhbGlkXCIgKGNsaWNrKT1cInNlbmRNZXNzYWdlKClcIj5cbiAgICAgICAgICBTZW5kIFNNU1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJsb2FkZXJcIj5cbiAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cIm1lc3NhZ2VMb2FkZXJcIj48L21hdC1zcGlubmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
321
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtam9iY29kZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvcm91dGUtam9iY29kZS1saXN0L3JvdXRlLWpvYmNvZGUtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L3JvdXRlLWpvYmNvZGUtbGlzdC9yb3V0ZS1qb2Jjb2RlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUXpELE1BQU0sT0FBTyx5QkFBeUI7SUFvQmpCO0lBQWdDO0lBbkJuQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ2QsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNsQixJQUFJLEdBQVksRUFBRSxDQUFDO0lBQ25CLFVBQVUsR0FBVyxFQUFFLENBQUE7SUFDdEIsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDL0IsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDbkQsZUFBZSxHQUFZLEtBQUssQ0FBQztJQUNqQyxVQUFVLEdBQVksSUFBSSxDQUFDLElBQUksQ0FBQztJQUNoQixVQUFVLENBQU87SUFDakMsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUN2QixhQUFhLEdBQUcsSUFBSSxjQUFjLENBQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3hELFVBQVUsQ0FBTztJQUNqQixpQkFBaUIsR0FBWSxLQUFLLENBQUM7SUFDbEIsdUJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUM5RCxtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDNUIsYUFBYSxHQUFZLEtBQUssQ0FBQztJQUMvQixhQUFhLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsaUJBQWlCLENBQVU7SUFDM0MsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUMzQixZQUFtQixPQUF1QixFQUFTLEtBQW1CO1FBQW5ELFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFBO0lBQUMsQ0FBQztJQUNoRyxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsR0FBRyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFVLEVBQUUsRUFBRSxHQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBQ0QsU0FBUyxDQUFDLEdBQVU7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQTtRQUFDLENBQUM7YUFBTSxDQUFDO1lBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQTtRQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6SSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksVUFBVTtZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNoRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNqSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO2dCQUNqQyxDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFBO2dCQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQy9FLENBQUM7WUFBQSxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFDRCxXQUFXLENBQUMsS0FBWTtRQUN0QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUNsRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdkYsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzFCLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO29CQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUE7Z0JBQUMsQ0FBQztZQUNqRixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEtBQUssQ0FBQTtJQUNoQixDQUFDO0lBQ0QsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNsRixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxLQUFLLEdBQUcsQ0FBQztvQkFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVSxFQUFFLFlBQW9CLEVBQUUsRUFBRTtvQkFDckQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7b0JBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxZQUFZLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQzFHLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNSLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2xELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUM5QixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3BELENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3JDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQztvQkFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN4RCxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUM1QixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUN0RSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBVSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3hGLElBQUksV0FBVyxFQUFFLENBQUM7d0JBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7NEJBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7Z0NBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDOzRCQUN2QixDQUFDO3dCQUNILENBQUMsQ0FBQyxDQUFBO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdCLENBQUM7WUFBQSxDQUFDO1lBQ0YsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVSxFQUFFLFlBQW9CLEVBQUUsRUFBRTtvQkFDM0UsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7b0JBQzVELElBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTO3dCQUFFLEdBQUcsQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztvQkFDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLFlBQVksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTt3QkFDeEcsSUFBSSxZQUFZLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDOzRCQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzs0QkFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3pDLENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUM1RixDQUFDO3FCQUFNLENBQUM7b0JBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUFDLENBQUM7Z0JBQ3ZDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO29CQUN4QyxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDNUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMsQ0FBQztnQkFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ1IsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUMzRSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ3RDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDakIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTt3QkFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUMzRCxVQUFVLENBQUMsR0FBRyxFQUFFOzRCQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFO2dDQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsWUFBWSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7b0NBQ2hILElBQUksWUFBWSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3Q0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzt3Q0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtvQ0FBQyxDQUFDO29DQUM1RyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7d0NBQzNHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUE7b0NBQzVCLENBQUM7Z0NBQ0gsQ0FBQyxDQUFDLENBQUM7NEJBQ0wsQ0FBQyxDQUFDLENBQUE7d0JBQ0osQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUNWLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELFNBQVM7UUFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNELFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUU7b0JBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO3dCQUNwSCxJQUFJLFlBQVksS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzs0QkFBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzs0QkFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTt3QkFBQyxDQUFDO3dCQUNoSCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7NEJBQzNHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQzdCLENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUE7WUFDSixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUNELGdCQUFnQixDQUFDLEtBQVU7UUFDekIsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUFDLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDbkUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNwQyxJQUFHLE9BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUFBLElBQUcsSUFBSSxDQUFDLGVBQWUsRUFBQyxDQUFDO2dCQUFBLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFBO1lBQUEsQ0FBQztZQUFBLENBQUM7WUFBQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQTtRQUFBLENBQUM7UUFDdEksSUFBSSxPQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssU0FBUyxJQUFHLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUE7UUFBQyxDQUFDO1FBQUEsQ0FBQztRQUN6SCxJQUFJLE9BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxTQUFTLElBQUksYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUE7UUFBQyxDQUFDO1FBQUEsQ0FBQztRQUN6SCxJQUFHLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzVFLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDekIsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQzFCLENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtZQUN6QixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUNELGNBQWMsQ0FBQyxLQUFhLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQUMsT0FBTyxJQUFJLENBQUE7SUFBQyxDQUFDOztRQUFNLE9BQU8sS0FBSyxDQUFBLENBQUMsQ0FBQztJQUM1RixpQkFBaUIsQ0FBQyxVQUFtQjtRQUNuQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDekIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUNyRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekcsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDN0QsSUFBSSxFQUFFLElBQUksS0FBSyxHQUFHLENBQUM7Z0JBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzFELElBQUksRUFBRSxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RSxDQUFDO1lBQUEsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFNBQVM7UUFDUCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMxRyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1FBQ3pCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksR0FBRztnQkFDWCxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7Z0JBQzdDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztnQkFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSzthQUNsQyxDQUFBO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ25FLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztvQkFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7b0JBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUN2RCxDQUFDO1lBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUUsSUFBRyxHQUFHLEVBQUUsQ0FBQztnQkFBQSxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQTtZQUFBLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQTtRQUNuRCxDQUFDO0lBQ0osQ0FBQzt1R0E5TlcseUJBQXlCOzJGQUF6Qix5QkFBeUIsZ1dDVnRDLDJzSEF5RUE7OzJGRC9EYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usd0JBQXdCOzhHQUtsQixNQUFNO3NCQUFyQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNXLFNBQVM7c0JBQXpCLE1BQU07Z0JBQ1UsWUFBWTtzQkFBNUIsTUFBTTtnQkFHUyxVQUFVO3NCQUF6QixLQUFLO2dCQUtXLHVCQUF1QjtzQkFBdkMsTUFBTTtnQkFJUyxpQkFBaUI7c0JBQWhDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29vbG1hcFNlcnZpY2UsIFJvdXRlLCBVdGlsc1NlcnZpY2UgfSBmcm9tICdAYWdnZGlyZWN0L2Nvb2xtYXAtc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcm91dGUtam9iY29kZS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JvdXRlLWpvYmNvZGUtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JvdXRlLWpvYmNvZGUtbGlzdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlSm9iQ29kZUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHB1YmxpYyBsb2FkZXIgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgdHlwZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkYXRhOiBSb3V0ZVtdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXJyZW50TmF2OiBzdHJpbmcgPSAnJ1xuICBAT3V0cHV0KCkgcHVibGljIGVtaXRyb3V0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBzaG93QWxsUm91dGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByZXZlbnRNb3VzZW91dDogYm9vbGVhbiA9IGZhbHNlO1xuICBmaWx0ZXJMaXN0OiBSb3V0ZVtdID0gdGhpcy5kYXRhO1xuICBASW5wdXQoKSBwdWJsaWMgc2VhcmNoVGVybSE6IGFueTtcbiAgaXNEcml2ZXJMaXN0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzZWxlY3RlZFJvdXRlID0gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odHJ1ZSwgW10pXG4gIGRyaXZlckxpc3QhOiBhbnk7XG4gIHByZXZlbnRMaXN0U2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2xlYXJKb2JEZXRhaWxzRnJvbUxpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByZXZlbnREZXRhaWxzQ2xvc2UgPSBmYWxzZTtcbiAgbWVzc2FnZUxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBkcml2ZXJNZXNzYWdlID0gbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV0pO1xuICBASW5wdXQoKSBwdWJsaWMgY2xlYXJMaXN0U2VsZXRpb246IGJvb2xlYW47XG4gIGlzU21zTGlzdDogYm9vbGVhbiA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29vbE1hcDogQ29vbG1hcFNlcnZpY2UsIHB1YmxpYyB1dGlsczogVXRpbHNTZXJ2aWNlKSB7IHRoaXMuZHJpdmVyTGlzdCA9IFtdIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51dGlscy5nZXRwcmVWZW50Sm9iZGV0YWlsY2xvc2Uuc3Vic2NyaWJlKHJlcyA9PiB7IHRoaXMucHJldmVudERldGFpbHNDbG9zZSA9IHJlcyB9KTtcbiAgICB0aGlzLnV0aWxzLnJlbW92ZU1hcEVudGl0eVV0aWxpdHkuc3Vic2NyaWJlKChyZXM6IFJvdXRlKSA9PiB7dGhpcy5wYXNzUm91dGUocmVzKX0pO1xuICB9XG4gIHBhc3NSb3V0ZShqb2I6IFJvdXRlKSB7XG4gICAgdGhpcy5kYXRhLmZvckVhY2goKGVhY2gpID0+IHsgaWYgKGVhY2hbJ3JvdXRlX2lkJ10gIT09IGpvYlsncm91dGVfaWQnXSkgeyBlYWNoWydpc0FjdGl2ZSddID0gZmFsc2UgfSBlbHNlIHsgZWFjaFsnaXNBY3RpdmUnXSA9IHRydWUgfSB9KTtcbiAgICBpZiAodGhpcy50eXBlID09ICdhZGRyb3V0ZScpIHRoaXMuZmlsdGVyTGlzdC5mb3JFYWNoKGVsZSA9PiB0aGlzLmNvb2xNYXAuZmlsdGVyUm91dGUoZWxlWydyb3V0ZV9pZCddLCAnbm9uZScpKTtcbiAgfVxuICBzZWxlY3RSb3V0ZShyb3V0ZTogYW55KSB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRMaXN0U2VsZWN0KSB7XG4gICAgICB0aGlzLnByZXZlbnRMaXN0U2VsZWN0ID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS50b2dnbGUocm91dGUpO1xuICAgICAgdGhpcy5jbGVhckpvYkRldGFpbHNGcm9tTGlzdC5lbWl0KHRydWUpO1xuICAgICAgdGhpcy51dGlscy5wcmVWZW50Sm9iZGV0YWlsY2xvc2UubmV4dChmYWxzZSk7XG4gICAgICB0aGlzLmZpbHRlckxpc3QuZm9yRWFjaChlbGUgPT4gdGhpcy5jb29sTWFwLmZpbHRlclJvdXRlKGVsZVsnam9iX2lkJ10sICdub25lJykpO1xuICAgICAgdGhpcy5jbGVhckxpc3QoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZC5mb3JFYWNoKChlbGUsIGluZGV4KSA9PiB7XG4gICAgICAgIHRoaXMuY29vbE1hcC5maWx0ZXJSb3V0ZShlbGVbJ2pvYl9pZCddLCAndmlzaWJsZScsICgodGhpcy5zZWxlY3RlZFJvdXRlLnNlbGVjdGVkLmxlbmd0aCAtIDEpID09PSBpbmRleCkpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMucHJldmVudExpc3RTZWxlY3QgPSBmYWxzZTtcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkUm91dGUuc2VsZWN0ZWQubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMucHJldmVudExpc3RTZWxlY3QgPSBmYWxzZVxuICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaChlbGUgPT4gdGhpcy5jb29sTWFwLmZpbHRlclJvdXRlKGVsZVsnam9iX2lkJ10sICd2aXNpYmxlJykpO1xuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgY2hlY2tyb3V0ZXMocm91dGU6IFJvdXRlKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3V0ZSA9IHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZDtcbiAgICB0aGlzLmZpbHRlckxpc3QgPSB0aGlzLmZpbHRlckxpc3QubWFwKGVsZSA9PiB7IGVsZVsnaXNTZWxlY3RlZCddID0gZmFsc2U7IHJldHVybiBlbGUgfSlcbiAgICBpZiAoc2VsZWN0ZWRSb3V0ZS5sZW5ndGggPiAwKSB7XG4gICAgICBzZWxlY3RlZFJvdXRlLmZvckVhY2goZWxlID0+IHtcbiAgICAgICAgaWYgKHJvdXRlWydvcmRlcl9udW1iZXInXSA9PT0gZWxlWydvcmRlcl9udW1iZXInXSkgeyBlbGVbJ2lzU2VsZWN0ZWQnXSA9IHRydWUgfVxuICAgICAgfSk7XG4gICAgfSByZXR1cm4gcm91dGVcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50TmF2ID09PSAnQWRkcm91dGUnICYmICh0aGlzLmRhdGEubGVuZ3RoIDwgdGhpcy5maWx0ZXJMaXN0Lmxlbmd0aCkpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbHRlckxpc3QuZmluZEluZGV4KGVsZSA9PiBlbGUuaXNBY3RpdmUpO1xuICAgICAgICBpZiAoaW5kZXggPiAwKSB0aGlzLmZpbHRlckxpc3RbaW5kZXhdLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKChlbGU6IFJvdXRlLCBpbmRleEZvckRhdGE6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gKGVsZVsnam9iX2lkJ10gPyBlbGVbJ2pvYl9pZCddIDogZWxlWydyb3V0ZV9pZCddKVxuICAgICAgICAgIHRoaXMuY29vbE1hcC5wbG90Um91dGUoZWxlLCBpZCwgdGhpcy50eXBlLCBmYWxzZSwgKGluZGV4Rm9yRGF0YSA9PT0gKHRoaXMuZGF0YS5sZW5ndGggLSAxKSkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10gJiYgY2hhbmdlc1snZGF0YSddWydjdXJyZW50VmFsdWUnXSkge1xuICAgICAgdGhpcy5maWx0ZXJMaXN0ID0gY2hhbmdlc1snZGF0YSddWydjdXJyZW50VmFsdWUnXTtcbiAgICAgIGlmICh0aGlzLnNlYXJjaFRlcm0pIHtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGVybS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5kYXRhID0gdGhpcy51dGlscy5nZXRTZWFyY2hSZXN1bHRzKGNoYW5nZXNbJ2RhdGEnXVsnY3VycmVudFZhbHVlJ10sIHRoaXMuc2VhcmNoVGVybSk7XG4gICAgICAgICAgdGhpcy5maWx0ZXJMaXN0ID0gdGhpcy5kYXRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmlsdGVyTGlzdCA9IGNoYW5nZXNbJ2RhdGEnXVsnY3VycmVudFZhbHVlJ107XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2pvYmNvZGUnKSB7XG4gICAgICAgIHRoaXMubG9hZGVyID0gdHJ1ZTsgdGhpcy5jbGVhckxpc3QoKTtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyTGlzdC5sZW5ndGggPT09IDApIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgIT09ICdqb2Jjb2RlJykge1xuICAgICAgICBpZiAoY2hhbmdlc1snZGF0YSddWydwcmV2aW91c1ZhbHVlJ10gJiYgdGhpcy5jdXJyZW50TmF2ID09PSAnYWRkRm9ybScpIHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVSb3V0ZSA9IGNoYW5nZXNbJ2RhdGEnXVsncHJldmlvdXNWYWx1ZSddLmZpbmQoKGVsZTogUm91dGUpID0+IGVsZS5pc0FjdGl2ZSk7XG4gICAgICAgICAgaWYgKGFjdGl2ZVJvdXRlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGl0ZW0ucm91dGVfaWQgPT09IGFjdGl2ZVJvdXRlLnJvdXRlX2lkKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hhbmdlc1snZGF0YSddWydwcmV2aW91c1ZhbHVlJ10gJiYgdGhpcy5jdXJyZW50TmF2ICE9PSAnYWRkRm9ybScpIHtcbiAgICAgICAgdGhpcy5jb29sTWFwLnJlbW92ZUpvYkZyb21NYXAoY2hhbmdlc1snZGF0YSddWydwcmV2aW91c1ZhbHVlJ10pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm91dGUuY2xlYXIoKTtcbiAgICAgIH07XG4gICAgICBpZiAodGhpcy5jdXJyZW50TmF2ICE9PSAnYWRkRm9ybScpIHtcbiAgICAgICAgY2hhbmdlc1snZGF0YSddWydjdXJyZW50VmFsdWUnXS5mb3JFYWNoKChlbGU6IFJvdXRlLCBpbmRleEZvckRhdGE6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gKGVsZVsnam9iX2lkJ10gPyBlbGVbJ2pvYl9pZCddIDogZWxlWydyb3V0ZV9pZCddKVxuICAgICAgICAgIGlmKHRoaXMudHlwZSA9PT0gJ2pvYmNvZGUnKSBlbGUubWF0ZXJpYWxMYWJlbCA9IGVsZS5tYXRlcmlhbDtcbiAgICAgICAgICB0aGlzLmNvb2xNYXAucGxvdFJvdXRlKGVsZSwgaWQsIHRoaXMudHlwZSwgZmFsc2UsIChpbmRleEZvckRhdGEgPT09ICh0aGlzLmRhdGEubGVuZ3RoIC0gMSkpKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleEZvckRhdGEgPT09ICh0aGlzLmRhdGEubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy51dGlscy5wcmV2ZW50bmF2Q2hhbmdlLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snc2VhcmNoVGVybSddKSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXJMaXN0KSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZmlsdGVyTGlzdDtcbiAgICAgICAgdGhpcy5jbGVhckxpc3QoKTtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NlYXJjaFRlcm0nXVsnY3VycmVudFZhbHVlJ10ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVSb3V0ZUFuZE1hcmtlcigxKTtcbiAgICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLnV0aWxzLmdldFNlYXJjaFJlc3VsdHModGhpcy5kYXRhLCBjaGFuZ2VzWydzZWFyY2hUZXJtJ11bJ2N1cnJlbnRWYWx1ZSddKTtcbiAgICAgICAgfSBlbHNlIHsgdGhpcy5kYXRhID0gdGhpcy5maWx0ZXJMaXN0OyB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY29vbE1hcC5jbGVhckJvdW5kV2l0aENvcmRpbmF0ZXMoKTtcbiAgICAgICAgICBpZiAodGhpcy5jdXJyZW50TmF2ICE9PSAnYWRkRm9ybScgJiYgIXRoaXMuc2VsZWN0ZWRSb3V0ZVsnc2VsZWN0ZWQnXS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVSb3V0ZUFuZE1hcmtlcigxKTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyUm91dGUodGhpcy5maWx0ZXJMaXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnROYXYgIT09ICdhZGRGb3JtJyAmJiB0aGlzLnNlbGVjdGVkUm91dGVbJ3NlbGVjdGVkJ10ubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhckxpc3QoKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJKb2JEZXRhaWxzRnJvbUxpc3QuZW1pdCh0cnVlKVxuICAgICAgICAgICAgdGhpcy5jb29sTWFwLnJlbW92ZUpvYkZyb21NYXAodGhpcy5zZWxlY3RlZFJvdXRlLnNlbGVjdGVkKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaCgoZWxlLCBpbmRleEZvckRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvb2xNYXAucGxvdFJvdXRlKGVsZSwgZWxlWydqb2JfaWQnXSwgdGhpcy50eXBlLCBmYWxzZSwgKGluZGV4Rm9yRGF0YSA9PT0gKHRoaXMuZGF0YS5sZW5ndGggLSAxKSkpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGluZGV4Rm9yRGF0YSA9PT0gKHRoaXMuZGF0YS5sZW5ndGggLSAxKSkgeyB0aGlzLmxvYWRlciA9IGZhbHNlOyB0aGlzLnV0aWxzLnByZXZlbnRuYXZDaGFuZ2UubmV4dCh0cnVlKSB9XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFJvdXRlWydzZWxlY3RlZCddLmxlbmd0aCAmJiB0aGlzLnNlbGVjdGVkUm91dGVbJ3NlbGVjdGVkJ11bMF1bJ2pvYl9pZCddID09PSBlbGVbJ2pvYl9pZCddKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5jbGVhcigpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBzaG93Um91dGUoKSB7XG4gICAgdGhpcy51dGlscy5wcmV2ZW50bmF2Q2hhbmdlLm5leHQoZmFsc2UpO1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTsgdGhpcy5jbGVhckxpc3QoKTtcbiAgICB0aGlzLnNob3dBbGxSb3V0ZS5lbWl0KHRydWUpO1xuICAgIGlmICh0aGlzLmZpbHRlckxpc3QgJiYgdGhpcy5maWx0ZXJMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVKb2JGcm9tTWFwKHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJMaXN0LmZvckVhY2goKGVsZSwgaW5kZXhGb3JEYXRhKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb29sTWFwLnBsb3RSb3V0ZShlbGUsIGVsZVsnam9iX2lkJ10sIHRoaXMudHlwZSwgZmFsc2UsIChpbmRleEZvckRhdGEgPT09IHRoaXMuZmlsdGVyTGlzdC5sZW5ndGggLSAxKSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXhGb3JEYXRhID09PSB0aGlzLmZpbHRlckxpc3QubGVuZ3RoIC0gMSkgeyB0aGlzLmxvYWRlciA9IGZhbHNlOyB0aGlzLnV0aWxzLnByZXZlbnRuYXZDaGFuZ2UubmV4dCh0cnVlKSB9XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFJvdXRlWydzZWxlY3RlZCddLmxlbmd0aCAmJiB0aGlzLnNlbGVjdGVkUm91dGVbJ3NlbGVjdGVkJ11bMF1bJ2pvYl9pZCddID09PSBlbGVbJ2pvYl9pZCddKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5jbGVhcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgfSwgNTAwKTtcbiAgICB9XG4gIH1cbiAgdG9nZ2xlRHJpdmVybWVudShldmVudDogYW55KSB7XG4gICAgY29uc3QgbW91c2Vldm50VHlwZSA9IGV2ZW50Lm1vdXNlZXZudFR5cGU7IGxldCByb3V0ZSA9IGV2ZW50LnJvdXRlO1xuICAgIGNvbnN0IGlzSG92ZXJPdXQgPSBldmVudC5pc0hvdmVyT3V0O1xuICAgIGlmKHR5cGVvZihtb3VzZWV2bnRUeXBlKSA9PT0gJ3N0cmluZycpIHtpZih0aGlzLnByZXZlbnRNb3VzZW91dCl7dGhpcy5pc0RyaXZlckxpc3QgPSAhdGhpcy5pc0RyaXZlckxpc3R9OyB0aGlzLnByZXZlbnRNb3VzZW91dCA9IHRydWV9XG4gICAgaWYgKHR5cGVvZihtb3VzZWV2bnRUeXBlKSA9PT0gJ2Jvb2xlYW4nICYmIW1vdXNlZXZudFR5cGUgJiYgIXRoaXMucHJldmVudE1vdXNlb3V0KSB7IHRoaXMuaXNEcml2ZXJMaXN0ID0gbW91c2Vldm50VHlwZSB9O1xuICAgIGlmICh0eXBlb2YobW91c2Vldm50VHlwZSkgPT09ICdib29sZWFuJyAmJiBtb3VzZWV2bnRUeXBlICYmICF0aGlzLnByZXZlbnRNb3VzZW91dCkgeyB0aGlzLmlzRHJpdmVyTGlzdCA9IG1vdXNlZXZudFR5cGUgfTtcbiAgICBpZih0aGlzLnByZXZlbnRNb3VzZW91dCAmJiAhdGhpcy5pc0RyaXZlckxpc3QpIHRoaXMucHJldmVudE1vdXNlb3V0ID0gZmFsc2U7XG4gICAgaWYgKGlzSG92ZXJPdXQpIHtcbiAgICAgIGlmICh0aGlzLnByZXZlbnRNb3VzZW91dCkge1xuICAgICAgICByb3V0ZSA9IHRoaXMudXRpbHMuZ2V0ZGljdFZhbHVlKCdkcml2ZXItZGV0YWlscycpO1xuICAgICAgICB0aGlzLmRyaXZlckxpc3QgPSByb3V0ZTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5wcmV2ZW50TW91c2VvdXQpIHtcbiAgICAgICAgdGhpcy5kcml2ZXJMaXN0ID0gcm91dGVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcml2ZXJMaXN0ID0gcm91dGVcbiAgICB9XG4gIH1cbiAgdmlzaWJsZXNlY3Rpb24odmFsdWU6IHN0cmluZykgeyBpZiAodGhpcy50eXBlID09PSB2YWx1ZSkgeyByZXR1cm4gdHJ1ZSB9IGVsc2UgcmV0dXJuIGZhbHNlIH1cbiAgdG9nZ2xlRmlsdGVyUm91dGUoZmlsdGVyTGlzdDogUm91dGVbXSkge1xuICAgIGZpbHRlckxpc3QuZm9yRWFjaCgoZWxlKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJJdGVtID0gKHRoaXMudHlwZSA9PT0gJ2pvYmNvZGUnKSA/ICdqb2JfaWQnIDogJ3JvdXRlX2lkJztcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kYXRhLmZpbmRJbmRleCgoZWxlMSkgPT4geyByZXR1cm4gKGVsZTFbYCR7ZmlsdGVySXRlbX1gXSA9PT0gZWxlW2Ake2ZpbHRlckl0ZW19YF0pIH0pO1xuICAgICAgY29uc3QgaWQgPSAoZWxlWydqb2JfaWQnXSA/IGVsZVsnam9iX2lkJ10gOiBlbGVbJ3JvdXRlX2lkJ10pO1xuICAgICAgaWYgKGlkICYmIGluZGV4IDwgMCkgdGhpcy5jb29sTWFwLmZpbHRlclJvdXRlKGlkLCAnbm9uZScpO1xuICAgICAgaWYgKGlkICYmIGluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5kYXRhW2luZGV4XS5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvb2xNYXAuZmlsdGVyUm91dGUoaWQsICd2aXNpYmxlJyk7XG4gICAgICAgIHRoaXMuY29vbE1hcC5leHRlbmRCb3VuZChlbGVbJ3BhdGgnXSwgKGluZGV4ID09PSAodGhpcy5kYXRhLmxlbmd0aCAtIDEpKSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIGNsZWFyTGlzdCgpIHtcbiAgICB0aGlzLmlzRHJpdmVyTGlzdCA9IGZhbHNlOyB0aGlzLmRyaXZlckxpc3QgPSBudWxsOyB0aGlzLnByZXZlbnRNb3VzZW91dCA9IGZhbHNlOyB0aGlzLmlzU21zTGlzdCA9IGZhbHNlO1xuICB9XG4gIHNlbmRNZXNzYWdlKCkge1xuICAgIHRoaXMubWVzc2FnZUxvYWRlciA9IHRydWVcbiAgICBpZiAodGhpcy5kcml2ZXJNZXNzYWdlLnZhbGlkKSB7XG4gICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICBvcmRlcl9udW1iZXI6IHRoaXMuZHJpdmVyTGlzdFsnb3JkZXJfbnVtYmVyJ10sXG4gICAgICAgIGRhdGU6IHRoaXMuZHJpdmVyTGlzdFsnZGF0ZSddLFxuICAgICAgICBtZXNzYWdlOiB0aGlzLmRyaXZlck1lc3NhZ2UudmFsdWUsXG4gICAgICB9XG4gICAgICB0aGlzLnV0aWxzLnBvc3RkYXRhKCdqb2JzX3JlcG9ydF9jaGF0JywgZGF0YSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzWydkYXRhJ11bJ3N0YXR1cyddID09PSAnU3VjY2Vzcy4nKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5kcml2ZXJNZXNzYWdlLnJlc2V0KCk7XG4gICAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIoJ01lc3NhZ2UgU2VudCcsICdzdWNjZXNzJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIoJ01lc3NhZ2Ugbm90IHNlbnQnLCAnZXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgfSwgZXJyID0+IHtpZihlcnIpIHt0aGlzLm1lc3NhZ2VMb2FkZXIgPSBmYWxzZX19KVxuICAgIH1cbiB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2Nyb2xscHJ0IGFkZHJvdXRlbGlzdFwiIFtjbGFzcy52aWV3cm91dGVdPVwidmlzaWJsZXNlY3Rpb24oJ2FkZHJvdXRlJylcIlxuICBbY2xhc3Muam9iTGlzdF09XCJ2aXNpYmxlc2VjdGlvbignam9iY29kZScpXCI+XG4gIDxidXR0b24gKGNsaWNrKT1cInNob3dSb3V0ZSgpXCIgW2Rpc2FibGVkXT1cImxvYWRlclwiICpuZ0lmPVwic2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZC5sZW5ndGhcIiBjbGFzcz1cInNob3dfcm91dGVidG5cIj5TaG93IGFsbFxuICAgIHJvdXRlPC9idXR0b24+XG4gICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBpdGVtU2l6ZT1cIjUwXCIgW2NsYXNzLmpvYnNjcm9sbF09XCJ2aXNpYmxlc2VjdGlvbignam9iY29kZScpXCIgY2xhc3M9XCJleGFtcGxlLXZpZXdwb3J0XCI+XG4gICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJsb2FkZXJcIj48L21hdC1zcGlubmVyPlxuICAgICAgPHVsICpuZ0lmPVwiIWxvYWRlciAmJiBkYXRhLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGxpIFtjbGFzcy5hY3RpdmVdPVwicm91dGVbJ2lzQWN0aXZlJ10gJiYgdmlzaWJsZXNlY3Rpb24oJ2FkZHJvdXRlJylcIiAqbmdGb3I9XCJsZXQgcm91dGUgb2YgZGF0YVwiPlxuICAgICAgICAgICAgPGFwcC1qb2ItY29kZS1saXN0LWNhcmQgKm5nSWY9XCJ2aXNpYmxlc2VjdGlvbignam9iY29kZScpXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG9nZ2xlRHJpdmVybWVudSk9XCJ0b2dnbGVEcml2ZXJtZW51KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJvdXRlU2VsZXRpb24pPVwic2VsZWN0Um91dGUoJGV2ZW50KVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByZXZlbnRDbG9zZURldGFpbHNdPVwicHJldmVudERldGFpbHNDbG9zZVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VtaXRKb2JkZXRhaWxzXT1cIntlbWl0cm91dGUsIGNsZWFySm9iRGV0YWlsc0Zyb21MaXN0fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlXT1cImNoZWNrcm91dGVzKHJvdXRlKVwiPlxuICAgICAgICAgICAgPC9hcHAtam9iLWNvZGUtbGlzdC1jYXJkPlxuICAgICAgICAgICAgPGFwcC12aWV3LXJvdXRlLWxpc3QtY2FyZCAqbmdJZj1cInZpc2libGVzZWN0aW9uKCdhZGRyb3V0ZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VtaXRyb3V0ZWV2ZW50XT1cImVtaXRyb3V0ZVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVdPVwicm91dGVcIj5cbiAgICAgICAgICAgIDwvYXBwLXZpZXctcm91dGUtbGlzdC1jYXJkPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICAgIDxwICpuZ0lmPVwiIWxvYWRlciAmJiBkYXRhLmxlbmd0aCA9PT0gMFwiPnt7dmlzaWJsZXNlY3Rpb24oJ2FkZHJvdXRlJykgPyAnTm8gUm91dGUgZm91bmQnIDogJ05vIEpvYiBjb2RlIGZvdW5kLid9fTwvcD5cbiAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZHJpdmVyX2xpc3RcIiAqbmdJZj1cImlzRHJpdmVyTGlzdFwiPlxuICA8ZGl2IGNsYXNzPVwiZHJpdmVyX2hlYWRpbmdwcnRcIj5cbiAgICA8aDI+RHJpdmVyIExpc3Q8L2gyPlxuICAgIDxidXR0b24gKm5nSWY9XCJkcml2ZXJMaXN0LmRyaXZlcl9saXN0Py5sZW5ndGggPiAwXCIgKGNsaWNrKT1cImlzU21zTGlzdCA9IHRydWVcIj5TTVM8L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiY2xvc2VidG5cIiAoY2xpY2spPVwiaXNEcml2ZXJMaXN0ID0gZmFsc2U7IHByZXZlbnRNb3VzZW91dCA9IGZhbHNlOyBpc1Ntc0xpc3QgPSBmYWxzZVwiPlxuICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDx1bCBjbGFzcz1cImRyaXZlckxpc3RcIiAqbmdJZj1cImRyaXZlckxpc3QgJiYgZHJpdmVyTGlzdC5kcml2ZXJfbGlzdFwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZHJpdmVyIG9mIGRyaXZlckxpc3Q/LmRyaXZlcl9saXN0XCI+XG4gICAgICA8aW1nIHNyYz1cImFzc2V0cy9pbWFnZXMvZHJpdmVyX2ljb24ucG5nXCIgW2FsdF09XCJkcml2ZXJbJ2RyaXZlcl9uYW1lJ11cIiAvPlxuICAgICAgPGRpdiBjbGFzcz1cImRyaXZlcl9kZXRhaWxcIj5cbiAgICAgICAgPGI+e3tkcml2ZXJbJ2RyaXZlcl9uYW1lJ119fTwvYj4gPHNwYW4+e3tkcml2ZXJbJ3RydWNraW5nX2NvbXBhbnknXX19PC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udF9kZWxcIj5cbiAgICAgICAgICA8c21hbGw+RHJpdmVyIGNvbnRhY3Q6IDxiPnt7ZHJpdmVyWydkcml2ZXJfcGhvbmUnXSA/IGRyaXZlclsnZHJpdmVyX3Bob25lJ10gOiAnTi9BJ319PC9iPjwvc21hbGw+XG4gICAgICAgICAgPHNtYWxsPkNvbXBhbnkgY29udGFjdDogPGI+e3tkcml2ZXJbJ3RydWNraW5nX2NvbXBhbnlfcGhvbmUnXSA/IGRyaXZlclsndHJ1Y2tpbmdfY29tcGFueV9waG9uZSddIDogJ04vQSd9fTwvYj48L3NtYWxsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbGk+XG4gICAgPHAgKm5nSWY9XCJkcml2ZXJMaXN0LmRyaXZlcl9saXN0Py5sZW5ndGggPT09IDBcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OjcwMDsgdGV4dC1hbGlnbjpjZW50ZXI7XCI+XG4gICAgICBObyBEcml2ZXIgZm91bmRcbiAgICA8L3A+XG4gIDwvdWw+XG4gIDxkaXYgY2xhc3M9XCJzbXNsaXN0XCIgKm5nSWY9XCJpc1Ntc0xpc3RcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPlxuICAgICAgPGgyPlNNUyBBbGwgRHJpdmVyczwvaDI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2xvc2VidG5cIiAoY2xpY2spPVwiaXNTbXNMaXN0ID0gZmFsc2VcIj5cbiAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxwcnRcIj5cbiAgICAgIDxhcHAtc21zLWNhcmQtZGV0YWlscy1vdmVydmlldyBbam9iVmFsdWVdPVwiZHJpdmVyTGlzdFwiPjwvYXBwLXNtcy1jYXJkLWRldGFpbHMtb3ZlcnZpZXc+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9pbnB1dFwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJleGFtcGxlLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJUZXh0IGhlcmUuLi5cIiBhdXRvY29tcGxldGU9XCJub3BlXCIgY29sdW1uPVwiMTBcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImRyaXZlck1lc3NhZ2VcIj48L3RleHRhcmVhPlxuICAgICAgICAgIDxtYXQtaGludD57e2RyaXZlck1lc3NhZ2UudmFsdWU/Lmxlbmd0aH19IC8gMjU2PC9tYXQtaGludD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFtZXNzYWdlTG9hZGVyXCIgW2Rpc2FibGVkXT1cIiFkcml2ZXJNZXNzYWdlLnZhbHVlIHx8IGRyaXZlck1lc3NhZ2UuaW52YWxpZFwiIChjbGljayk9XCJzZW5kTWVzc2FnZSgpXCI+XG4gICAgICAgICAgU2VuZCBTTVNcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibG9hZGVyXCI+XG4gICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJtZXNzYWdlTG9hZGVyXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -521,11 +521,11 @@ class RouteJobCodeListComponent {
521
521
  }
522
522
  }
523
523
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RouteJobCodeListComponent, deps: [{ token: i1.CoolmapService }, { token: i1.UtilsService }], target: i0.ɵɵFactoryTarget.Component });
524
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: RouteJobCodeListComponent, selector: "app-route-jobcode-list", inputs: { loader: "loader", type: "type", data: "data", currentNav: "currentNav", searchTerm: "searchTerm", clearListSeletion: "clearListSeletion" }, outputs: { emitroute: "emitroute", showAllRoute: "showAllRoute", clearJobDetailsFromList: "clearJobDetailsFromList" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"scrollprt addroutelist\" [class.viewroute]=\"visiblesection('addroute')\"\n [class.jobList]=\"visiblesection('jobcode')\">\n <button (click)=\"showRoute()\" [disabled]=\"loader\" *ngIf=\"selectedRoute.selected.length\" class=\"show_routebtn\">Show all\n route</button>\n <cdk-virtual-scroll-viewport itemSize=\"50\" [class.jobscroll]=\"visiblesection('jobcode')\" class=\"example-viewport\">\n <mat-spinner *ngIf=\"loader\"></mat-spinner>\n <ul *ngIf=\"!loader && data.length > 0\">\n <li [class.active]=\"route['isActive'] && visiblesection('addroute')\" *ngFor=\"let route of data\">\n <app-job-code-list-card *ngIf=\"visiblesection('jobcode')\" (toggleDrivermenu)=\"toggleDrivermenu($event)\"\n (routeSeletion)=\"selectRoute($event)\" [preventCloseDetails]=\"preventDetailsClose\" [emitJobdetails]=\"{emitroute, clearJobDetailsFromList}\" [route]=\"checkroutes(route)\"></app-job-code-list-card>\n <app-view-route-list-card [emitrouteevent]=\"emitroute\" *ngIf=\"visiblesection('addroute')\"\n [route]=\"route\"></app-view-route-list-card>\n </li>\n </ul>\n <p *ngIf=\"!loader && data.length === 0\">{{visiblesection('addroute') ? 'No Route found' : 'No Job code found.'}}</p>\n </cdk-virtual-scroll-viewport>\n</div>\n\n<div class=\"driver_list\" *ngIf=\"isDriverList\">\n <div class=\"driver_headingprt\">\n <h2>Driver List</h2>\n <button *ngIf=\"driverList.driver_list?.length > 0\" (click)=\"isSmsList = true\">SMS</button>\n <div class=\"closebtn\" (click)=\"isDriverList = false; preventMouseout = false; isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <ul class=\"driverList\" *ngIf=\"driverList && driverList.driver_list\">\n <li *ngFor=\"let driver of driverList?.driver_list\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"driver['driver_name']\" />\n <div class=\"driver_detail\">\n <b>{{driver['driver_name']}}</b> <span>{{driver['trucking_company']}}</span>\n <div class=\"cont_del\">\n <small>Driver contact: <b>{{driver['driver_phone'] ? driver['driver_phone'] : 'N/A'}}</b></small>\n <small>Company contact: <b>{{driver['trucking_company_phone'] ? driver['trucking_company_phone'] : 'N/A'}}</b></small>\n </div>\n </div>\n </li>\n <p *ngIf=\"driverList.driver_list?.length === 0\" style=\"font-weight:700; text-align:center;\">\n No Driver found\n </p>\n </ul>\n <div class=\"smslist\" *ngIf=\"isSmsList\">\n <div class=\"heading\">\n <h2>SMS All Drivers</h2>\n <div class=\"closebtn\" (click)=\"isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <div class=\"detailprt\">\n <app-sms-card-details-overview [jobValue]=\"driverList\"></app-sms-card-details-overview>\n <div class=\"form_input\">\n <mat-form-field class=\"example-full-width\">\n <textarea matInput placeholder=\"Text here...\" autocomplete=\"nope\" column=\"10\"\n [formControl]=\"driverMessage\"></textarea>\n <mat-hint>{{driverMessage.value?.length}} / 256</mat-hint>\n </mat-form-field>\n <button *ngIf=\"!messageLoader\" [disabled]=\"!driverMessage.value || driverMessage.invalid\" (click)=\"sendMessage()\">\n Send SMS\n </button>\n </div>\n </div>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"messageLoader\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".driver_iconprt{position:absolute;right:10px;top:12px;z-index:9999}.driver_iconprt img{width:25px;height:25px}.driver_list{background:#fff;position:fixed;width:300px;top:10px;left:360px;border-top-left-radius:20px;border-top-right-radius:20px}.driver_list .driver_headingprt{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.driver_list .driver_headingprt button{background:none;border:1px solid #ccc;border-radius:10px;padding:5px 20px}.driver_list .driver_headingprt button:hover{background:#326ad3;color:#fff}.driver_list h2{font-size:20px}.driver_list .driverList{height:300px;overflow:auto}.driver_list .driverList li{display:flex;padding:10px;align-items:flex-start;cursor:pointer;border-bottom:1px solid white;background:#eee}.driver_list .driverList li img{width:35px;height:35px;border-radius:100%;margin-right:10px}.driver_list .driverList li .driver_detail{width:calc(100% - 45px);display:flex;flex-direction:column;justify-content:flex-start}.driver_list .driverList li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px;font-size:.9rem}.driver_list .driverList li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;font-size:.8rem}.driver_list:after{height:10px;background:#fff;border-bottom-right-radius:20px;border-bottom-left-radius:20px;content:\"\";position:absolute;bottom:-9px;width:100%}.smslist{background:#fff;position:absolute;width:480px;top:0;left:105%;border-radius:20px;padding-bottom:20px}.smslist .heading{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.smslist .detailprt{padding:0 15px}.smslist .detailprt span{display:flex;margin-bottom:12px;font-size:.8rem;align-items:center}.smslist .detailprt span label{font-weight:600;width:37%}.smslist .detailprt .form_input{display:flex;flex-direction:column;font-size:.8rem}.smslist .detailprt .form_input button{background:#326ad3;padding:10px 18px;color:#fff;font-size:.8125rem;border-radius:30px;display:flex;align-self:flex-end}.closebtn{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5}.show_routebtn{font-size:.9rem;margin-bottom:20px;padding:6px 11px;position:absolute;top:8px;right:10px;background-color:transparent;color:#3f51b5;border:1px solid #3f51b5;border-radius:10px;box-shadow:none}.show_routebtn:hover{background-color:#3f51b5;color:#fff}.cont_del{margin-top:10px}.cont_del small{display:block}.jobList ul{margin:0 .93em 0 0;width:100%}.jobList ul li{position:relative;background:#fbfbfb;padding:10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:inherit;width:15.62em}@media (min-width: 2500px){.jobList ul li{height:7.65vh}}@media (min-width: 3300px){.jobList ul li{height:5.61vh}}.viewroute ul{width:100%}.viewroute ul li{position:relative;background:#fbfbfb;padding:7px 10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:16.4vh;width:15.62em}@media (min-width: 1600px){.viewroute ul li{height:12.4vh}}.viewroute ul li.active{border:1px solid #39c471;border-left:3px solid #39c471}.loader{position:absolute;height:100%;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:center;pointer-events:none}.example-viewport{height:900px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i8.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "component", type: i8.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: ViewRouteListCardComponent, selector: "app-view-route-list-card", inputs: ["route", "emitrouteevent"] }, { kind: "component", type: SmsCardDetailsOverviewComponent, selector: "app-sms-card-details-overview", inputs: ["jobValue"] }, { kind: "component", type: JobCodeListCardComponent, selector: "app-job-code-list-card", inputs: ["route", "emitJobdetails", "preventCloseDetails"], outputs: ["routeSeletion", "toggleDrivermenu"] }] });
524
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: RouteJobCodeListComponent, selector: "app-route-jobcode-list", inputs: { loader: "loader", type: "type", data: "data", currentNav: "currentNav", searchTerm: "searchTerm", clearListSeletion: "clearListSeletion" }, outputs: { emitroute: "emitroute", showAllRoute: "showAllRoute", clearJobDetailsFromList: "clearJobDetailsFromList" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"scrollprt addroutelist\" [class.viewroute]=\"visiblesection('addroute')\"\n [class.jobList]=\"visiblesection('jobcode')\">\n <button (click)=\"showRoute()\" [disabled]=\"loader\" *ngIf=\"selectedRoute.selected.length\" class=\"show_routebtn\">Show all\n route</button>\n <cdk-virtual-scroll-viewport itemSize=\"50\" [class.jobscroll]=\"visiblesection('jobcode')\" class=\"example-viewport\">\n <mat-spinner *ngIf=\"loader\"></mat-spinner>\n <ul *ngIf=\"!loader && data.length > 0\">\n <li [class.active]=\"route['isActive'] && visiblesection('addroute')\" *ngFor=\"let route of data\">\n <app-job-code-list-card *ngIf=\"visiblesection('jobcode')\" \n (toggleDrivermenu)=\"toggleDrivermenu($event)\"\n (routeSeletion)=\"selectRoute($event)\" \n [preventCloseDetails]=\"preventDetailsClose\" \n [emitJobdetails]=\"{emitroute, clearJobDetailsFromList}\" \n [route]=\"checkroutes(route)\">\n </app-job-code-list-card>\n <app-view-route-list-card *ngIf=\"visiblesection('addroute')\"\n [emitrouteevent]=\"emitroute\" \n [route]=\"route\">\n </app-view-route-list-card>\n </li>\n </ul>\n <p *ngIf=\"!loader && data.length === 0\">{{visiblesection('addroute') ? 'No Route found' : 'No Job code found.'}}</p>\n </cdk-virtual-scroll-viewport>\n</div>\n\n<div class=\"driver_list\" *ngIf=\"isDriverList\">\n <div class=\"driver_headingprt\">\n <h2>Driver List</h2>\n <button *ngIf=\"driverList.driver_list?.length > 0\" (click)=\"isSmsList = true\">SMS</button>\n <div class=\"closebtn\" (click)=\"isDriverList = false; preventMouseout = false; isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <ul class=\"driverList\" *ngIf=\"driverList && driverList.driver_list\">\n <li *ngFor=\"let driver of driverList?.driver_list\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"driver['driver_name']\" />\n <div class=\"driver_detail\">\n <b>{{driver['driver_name']}}</b> <span>{{driver['trucking_company']}}</span>\n <div class=\"cont_del\">\n <small>Driver contact: <b>{{driver['driver_phone'] ? driver['driver_phone'] : 'N/A'}}</b></small>\n <small>Company contact: <b>{{driver['trucking_company_phone'] ? driver['trucking_company_phone'] : 'N/A'}}</b></small>\n </div>\n </div>\n </li>\n <p *ngIf=\"driverList.driver_list?.length === 0\" style=\"font-weight:700; text-align:center;\">\n No Driver found\n </p>\n </ul>\n <div class=\"smslist\" *ngIf=\"isSmsList\">\n <div class=\"heading\">\n <h2>SMS All Drivers</h2>\n <div class=\"closebtn\" (click)=\"isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <div class=\"detailprt\">\n <app-sms-card-details-overview [jobValue]=\"driverList\"></app-sms-card-details-overview>\n <div class=\"form_input\">\n <mat-form-field class=\"example-full-width\">\n <textarea matInput placeholder=\"Text here...\" autocomplete=\"nope\" column=\"10\"\n [formControl]=\"driverMessage\"></textarea>\n <mat-hint>{{driverMessage.value?.length}} / 256</mat-hint>\n </mat-form-field>\n <button *ngIf=\"!messageLoader\" [disabled]=\"!driverMessage.value || driverMessage.invalid\" (click)=\"sendMessage()\">\n Send SMS\n </button>\n </div>\n </div>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"messageLoader\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".driver_iconprt{position:absolute;right:10px;top:12px;z-index:9999}.driver_iconprt img{width:25px;height:25px}.driver_list{background:#fff;position:fixed;width:300px;top:10px;left:360px;border-top-left-radius:20px;border-top-right-radius:20px}.driver_list .driver_headingprt{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.driver_list .driver_headingprt button{background:none;border:1px solid #ccc;border-radius:10px;padding:5px 20px}.driver_list .driver_headingprt button:hover{background:#326ad3;color:#fff}.driver_list h2{font-size:20px}.driver_list .driverList{height:300px;overflow:auto}.driver_list .driverList li{display:flex;padding:10px;align-items:flex-start;cursor:pointer;border-bottom:1px solid white;background:#eee}.driver_list .driverList li img{width:35px;height:35px;border-radius:100%;margin-right:10px}.driver_list .driverList li .driver_detail{width:calc(100% - 45px);display:flex;flex-direction:column;justify-content:flex-start}.driver_list .driverList li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px;font-size:.9rem}.driver_list .driverList li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;font-size:.8rem}.driver_list:after{height:10px;background:#fff;border-bottom-right-radius:20px;border-bottom-left-radius:20px;content:\"\";position:absolute;bottom:-9px;width:100%}.smslist{background:#fff;position:absolute;width:480px;top:0;left:105%;border-radius:20px;padding-bottom:20px}.smslist .heading{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.smslist .detailprt{padding:0 15px}.smslist .detailprt span{display:flex;margin-bottom:12px;font-size:.8rem;align-items:center}.smslist .detailprt span label{font-weight:600;width:37%}.smslist .detailprt .form_input{display:flex;flex-direction:column;font-size:.8rem}.smslist .detailprt .form_input button{background:#326ad3;padding:10px 18px;color:#fff;font-size:.8125rem;border-radius:30px;display:flex;align-self:flex-end}.closebtn{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5}.show_routebtn{font-size:.9rem;margin-bottom:20px;padding:6px 11px;position:absolute;top:8px;right:10px;background-color:transparent;color:#3f51b5;border:1px solid #3f51b5;border-radius:10px;box-shadow:none}.show_routebtn:hover{background-color:#3f51b5;color:#fff}.cont_del{margin-top:10px}.cont_del small{display:block}.jobList ul{margin:0 .93em 0 0;width:100%}.jobList ul li{position:relative;background:#fbfbfb;padding:10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:inherit;width:15.62em}@media (min-width: 2500px){.jobList ul li{height:7.65vh}}@media (min-width: 3300px){.jobList ul li{height:5.61vh}}.viewroute ul{width:100%}.viewroute ul li{position:relative;background:#fbfbfb;padding:7px 10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:16.4vh;width:15.62em}@media (min-width: 1600px){.viewroute ul li{height:12.4vh}}.viewroute ul li.active{border:1px solid #39c471;border-left:3px solid #39c471}.loader{position:absolute;height:100%;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:center;pointer-events:none}.example-viewport{height:900px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i8.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "component", type: i8.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: ViewRouteListCardComponent, selector: "app-view-route-list-card", inputs: ["route", "emitrouteevent"] }, { kind: "component", type: SmsCardDetailsOverviewComponent, selector: "app-sms-card-details-overview", inputs: ["jobValue"] }, { kind: "component", type: JobCodeListCardComponent, selector: "app-job-code-list-card", inputs: ["route", "emitJobdetails", "preventCloseDetails"], outputs: ["routeSeletion", "toggleDrivermenu"] }] });
525
525
  }
526
526
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RouteJobCodeListComponent, decorators: [{
527
527
  type: Component,
528
- args: [{ selector: 'app-route-jobcode-list', template: "<div class=\"scrollprt addroutelist\" [class.viewroute]=\"visiblesection('addroute')\"\n [class.jobList]=\"visiblesection('jobcode')\">\n <button (click)=\"showRoute()\" [disabled]=\"loader\" *ngIf=\"selectedRoute.selected.length\" class=\"show_routebtn\">Show all\n route</button>\n <cdk-virtual-scroll-viewport itemSize=\"50\" [class.jobscroll]=\"visiblesection('jobcode')\" class=\"example-viewport\">\n <mat-spinner *ngIf=\"loader\"></mat-spinner>\n <ul *ngIf=\"!loader && data.length > 0\">\n <li [class.active]=\"route['isActive'] && visiblesection('addroute')\" *ngFor=\"let route of data\">\n <app-job-code-list-card *ngIf=\"visiblesection('jobcode')\" (toggleDrivermenu)=\"toggleDrivermenu($event)\"\n (routeSeletion)=\"selectRoute($event)\" [preventCloseDetails]=\"preventDetailsClose\" [emitJobdetails]=\"{emitroute, clearJobDetailsFromList}\" [route]=\"checkroutes(route)\"></app-job-code-list-card>\n <app-view-route-list-card [emitrouteevent]=\"emitroute\" *ngIf=\"visiblesection('addroute')\"\n [route]=\"route\"></app-view-route-list-card>\n </li>\n </ul>\n <p *ngIf=\"!loader && data.length === 0\">{{visiblesection('addroute') ? 'No Route found' : 'No Job code found.'}}</p>\n </cdk-virtual-scroll-viewport>\n</div>\n\n<div class=\"driver_list\" *ngIf=\"isDriverList\">\n <div class=\"driver_headingprt\">\n <h2>Driver List</h2>\n <button *ngIf=\"driverList.driver_list?.length > 0\" (click)=\"isSmsList = true\">SMS</button>\n <div class=\"closebtn\" (click)=\"isDriverList = false; preventMouseout = false; isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <ul class=\"driverList\" *ngIf=\"driverList && driverList.driver_list\">\n <li *ngFor=\"let driver of driverList?.driver_list\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"driver['driver_name']\" />\n <div class=\"driver_detail\">\n <b>{{driver['driver_name']}}</b> <span>{{driver['trucking_company']}}</span>\n <div class=\"cont_del\">\n <small>Driver contact: <b>{{driver['driver_phone'] ? driver['driver_phone'] : 'N/A'}}</b></small>\n <small>Company contact: <b>{{driver['trucking_company_phone'] ? driver['trucking_company_phone'] : 'N/A'}}</b></small>\n </div>\n </div>\n </li>\n <p *ngIf=\"driverList.driver_list?.length === 0\" style=\"font-weight:700; text-align:center;\">\n No Driver found\n </p>\n </ul>\n <div class=\"smslist\" *ngIf=\"isSmsList\">\n <div class=\"heading\">\n <h2>SMS All Drivers</h2>\n <div class=\"closebtn\" (click)=\"isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <div class=\"detailprt\">\n <app-sms-card-details-overview [jobValue]=\"driverList\"></app-sms-card-details-overview>\n <div class=\"form_input\">\n <mat-form-field class=\"example-full-width\">\n <textarea matInput placeholder=\"Text here...\" autocomplete=\"nope\" column=\"10\"\n [formControl]=\"driverMessage\"></textarea>\n <mat-hint>{{driverMessage.value?.length}} / 256</mat-hint>\n </mat-form-field>\n <button *ngIf=\"!messageLoader\" [disabled]=\"!driverMessage.value || driverMessage.invalid\" (click)=\"sendMessage()\">\n Send SMS\n </button>\n </div>\n </div>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"messageLoader\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".driver_iconprt{position:absolute;right:10px;top:12px;z-index:9999}.driver_iconprt img{width:25px;height:25px}.driver_list{background:#fff;position:fixed;width:300px;top:10px;left:360px;border-top-left-radius:20px;border-top-right-radius:20px}.driver_list .driver_headingprt{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.driver_list .driver_headingprt button{background:none;border:1px solid #ccc;border-radius:10px;padding:5px 20px}.driver_list .driver_headingprt button:hover{background:#326ad3;color:#fff}.driver_list h2{font-size:20px}.driver_list .driverList{height:300px;overflow:auto}.driver_list .driverList li{display:flex;padding:10px;align-items:flex-start;cursor:pointer;border-bottom:1px solid white;background:#eee}.driver_list .driverList li img{width:35px;height:35px;border-radius:100%;margin-right:10px}.driver_list .driverList li .driver_detail{width:calc(100% - 45px);display:flex;flex-direction:column;justify-content:flex-start}.driver_list .driverList li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px;font-size:.9rem}.driver_list .driverList li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;font-size:.8rem}.driver_list:after{height:10px;background:#fff;border-bottom-right-radius:20px;border-bottom-left-radius:20px;content:\"\";position:absolute;bottom:-9px;width:100%}.smslist{background:#fff;position:absolute;width:480px;top:0;left:105%;border-radius:20px;padding-bottom:20px}.smslist .heading{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.smslist .detailprt{padding:0 15px}.smslist .detailprt span{display:flex;margin-bottom:12px;font-size:.8rem;align-items:center}.smslist .detailprt span label{font-weight:600;width:37%}.smslist .detailprt .form_input{display:flex;flex-direction:column;font-size:.8rem}.smslist .detailprt .form_input button{background:#326ad3;padding:10px 18px;color:#fff;font-size:.8125rem;border-radius:30px;display:flex;align-self:flex-end}.closebtn{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5}.show_routebtn{font-size:.9rem;margin-bottom:20px;padding:6px 11px;position:absolute;top:8px;right:10px;background-color:transparent;color:#3f51b5;border:1px solid #3f51b5;border-radius:10px;box-shadow:none}.show_routebtn:hover{background-color:#3f51b5;color:#fff}.cont_del{margin-top:10px}.cont_del small{display:block}.jobList ul{margin:0 .93em 0 0;width:100%}.jobList ul li{position:relative;background:#fbfbfb;padding:10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:inherit;width:15.62em}@media (min-width: 2500px){.jobList ul li{height:7.65vh}}@media (min-width: 3300px){.jobList ul li{height:5.61vh}}.viewroute ul{width:100%}.viewroute ul li{position:relative;background:#fbfbfb;padding:7px 10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:16.4vh;width:15.62em}@media (min-width: 1600px){.viewroute ul li{height:12.4vh}}.viewroute ul li.active{border:1px solid #39c471;border-left:3px solid #39c471}.loader{position:absolute;height:100%;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:center;pointer-events:none}.example-viewport{height:900px}\n"] }]
528
+ args: [{ selector: 'app-route-jobcode-list', template: "<div class=\"scrollprt addroutelist\" [class.viewroute]=\"visiblesection('addroute')\"\n [class.jobList]=\"visiblesection('jobcode')\">\n <button (click)=\"showRoute()\" [disabled]=\"loader\" *ngIf=\"selectedRoute.selected.length\" class=\"show_routebtn\">Show all\n route</button>\n <cdk-virtual-scroll-viewport itemSize=\"50\" [class.jobscroll]=\"visiblesection('jobcode')\" class=\"example-viewport\">\n <mat-spinner *ngIf=\"loader\"></mat-spinner>\n <ul *ngIf=\"!loader && data.length > 0\">\n <li [class.active]=\"route['isActive'] && visiblesection('addroute')\" *ngFor=\"let route of data\">\n <app-job-code-list-card *ngIf=\"visiblesection('jobcode')\" \n (toggleDrivermenu)=\"toggleDrivermenu($event)\"\n (routeSeletion)=\"selectRoute($event)\" \n [preventCloseDetails]=\"preventDetailsClose\" \n [emitJobdetails]=\"{emitroute, clearJobDetailsFromList}\" \n [route]=\"checkroutes(route)\">\n </app-job-code-list-card>\n <app-view-route-list-card *ngIf=\"visiblesection('addroute')\"\n [emitrouteevent]=\"emitroute\" \n [route]=\"route\">\n </app-view-route-list-card>\n </li>\n </ul>\n <p *ngIf=\"!loader && data.length === 0\">{{visiblesection('addroute') ? 'No Route found' : 'No Job code found.'}}</p>\n </cdk-virtual-scroll-viewport>\n</div>\n\n<div class=\"driver_list\" *ngIf=\"isDriverList\">\n <div class=\"driver_headingprt\">\n <h2>Driver List</h2>\n <button *ngIf=\"driverList.driver_list?.length > 0\" (click)=\"isSmsList = true\">SMS</button>\n <div class=\"closebtn\" (click)=\"isDriverList = false; preventMouseout = false; isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <ul class=\"driverList\" *ngIf=\"driverList && driverList.driver_list\">\n <li *ngFor=\"let driver of driverList?.driver_list\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"driver['driver_name']\" />\n <div class=\"driver_detail\">\n <b>{{driver['driver_name']}}</b> <span>{{driver['trucking_company']}}</span>\n <div class=\"cont_del\">\n <small>Driver contact: <b>{{driver['driver_phone'] ? driver['driver_phone'] : 'N/A'}}</b></small>\n <small>Company contact: <b>{{driver['trucking_company_phone'] ? driver['trucking_company_phone'] : 'N/A'}}</b></small>\n </div>\n </div>\n </li>\n <p *ngIf=\"driverList.driver_list?.length === 0\" style=\"font-weight:700; text-align:center;\">\n No Driver found\n </p>\n </ul>\n <div class=\"smslist\" *ngIf=\"isSmsList\">\n <div class=\"heading\">\n <h2>SMS All Drivers</h2>\n <div class=\"closebtn\" (click)=\"isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <div class=\"detailprt\">\n <app-sms-card-details-overview [jobValue]=\"driverList\"></app-sms-card-details-overview>\n <div class=\"form_input\">\n <mat-form-field class=\"example-full-width\">\n <textarea matInput placeholder=\"Text here...\" autocomplete=\"nope\" column=\"10\"\n [formControl]=\"driverMessage\"></textarea>\n <mat-hint>{{driverMessage.value?.length}} / 256</mat-hint>\n </mat-form-field>\n <button *ngIf=\"!messageLoader\" [disabled]=\"!driverMessage.value || driverMessage.invalid\" (click)=\"sendMessage()\">\n Send SMS\n </button>\n </div>\n </div>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"messageLoader\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".driver_iconprt{position:absolute;right:10px;top:12px;z-index:9999}.driver_iconprt img{width:25px;height:25px}.driver_list{background:#fff;position:fixed;width:300px;top:10px;left:360px;border-top-left-radius:20px;border-top-right-radius:20px}.driver_list .driver_headingprt{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.driver_list .driver_headingprt button{background:none;border:1px solid #ccc;border-radius:10px;padding:5px 20px}.driver_list .driver_headingprt button:hover{background:#326ad3;color:#fff}.driver_list h2{font-size:20px}.driver_list .driverList{height:300px;overflow:auto}.driver_list .driverList li{display:flex;padding:10px;align-items:flex-start;cursor:pointer;border-bottom:1px solid white;background:#eee}.driver_list .driverList li img{width:35px;height:35px;border-radius:100%;margin-right:10px}.driver_list .driverList li .driver_detail{width:calc(100% - 45px);display:flex;flex-direction:column;justify-content:flex-start}.driver_list .driverList li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px;font-size:.9rem}.driver_list .driverList li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;font-size:.8rem}.driver_list:after{height:10px;background:#fff;border-bottom-right-radius:20px;border-bottom-left-radius:20px;content:\"\";position:absolute;bottom:-9px;width:100%}.smslist{background:#fff;position:absolute;width:480px;top:0;left:105%;border-radius:20px;padding-bottom:20px}.smslist .heading{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.smslist .detailprt{padding:0 15px}.smslist .detailprt span{display:flex;margin-bottom:12px;font-size:.8rem;align-items:center}.smslist .detailprt span label{font-weight:600;width:37%}.smslist .detailprt .form_input{display:flex;flex-direction:column;font-size:.8rem}.smslist .detailprt .form_input button{background:#326ad3;padding:10px 18px;color:#fff;font-size:.8125rem;border-radius:30px;display:flex;align-self:flex-end}.closebtn{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5}.show_routebtn{font-size:.9rem;margin-bottom:20px;padding:6px 11px;position:absolute;top:8px;right:10px;background-color:transparent;color:#3f51b5;border:1px solid #3f51b5;border-radius:10px;box-shadow:none}.show_routebtn:hover{background-color:#3f51b5;color:#fff}.cont_del{margin-top:10px}.cont_del small{display:block}.jobList ul{margin:0 .93em 0 0;width:100%}.jobList ul li{position:relative;background:#fbfbfb;padding:10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:inherit;width:15.62em}@media (min-width: 2500px){.jobList ul li{height:7.65vh}}@media (min-width: 3300px){.jobList ul li{height:5.61vh}}.viewroute ul{width:100%}.viewroute ul li{position:relative;background:#fbfbfb;padding:7px 10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:16.4vh;width:15.62em}@media (min-width: 1600px){.viewroute ul li{height:12.4vh}}.viewroute ul li.active{border:1px solid #39c471;border-left:3px solid #39c471}.loader{position:absolute;height:100%;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:center;pointer-events:none}.example-viewport{height:900px}\n"] }]
529
529
  }], ctorParameters: () => [{ type: i1.CoolmapService }, { type: i1.UtilsService }], propDecorators: { loader: [{
530
530
  type: Input
531
531
  }], type: [{
@@ -738,18 +738,21 @@ class JobCodeNavComponent {
738
738
  .pipe(takeUntil(this.destroyer$))
739
739
  .subscribe((res) => {
740
740
  if (typeof res['data'] !== 'string') {
741
- if (res['data'].length > 0)
741
+ if (res['data'].length > 0) {
742
742
  this.listData = res['data'].map((ele) => {
743
743
  ele['date'] = value;
744
744
  return ele;
745
745
  });
746
- let projectName = window.location.href.split('project=').pop();
747
- projectName = projectName.toLowerCase();
748
- this.listData = this.listData.filter(ele => {
749
- const project = ele.project.toLowerCase();
750
- let adjustedProject = project.replace(" ", "_");
751
- return adjustedProject === projectName;
752
- });
746
+ }
747
+ if (this.config.repository === 'customer') {
748
+ let projectName = window.location.href.split('project=').pop();
749
+ projectName = projectName.toLowerCase();
750
+ this.listData = this.listData.filter(ele => {
751
+ const project = ele.project.toLowerCase();
752
+ let adjustedProject = project.replace(" ", "_");
753
+ return adjustedProject === projectName;
754
+ });
755
+ }
753
756
  this.listData.forEach((ele) => {
754
757
  this.utils.makeOptions(ele);
755
758
  });