@dev-tcloud/tcloud-ui 0.0.52 → 0.0.54

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.
@@ -267,10 +267,10 @@ export class TCloudUiDatepickerComponent {
267
267
  }
268
268
  }
269
269
  TCloudUiDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiDatepickerComponent, deps: [{ token: i1.DateBRPipe }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
270
- TCloudUiDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiDatepickerComponent, selector: "tcloud-ui-datepicker", inputs: { multiple: "multiple", maxNumberOfDates: "maxNumberOfDates", daysOfWeekDisabled: "daysOfWeekDisabled", minDate: "minDate", maxDate: "maxDate", datesDisabled: "datesDisabled", modeInput: "modeInput", useBorder: "useBorder", ngModel: "ngModel", code: "code" }, outputs: { onChange: "onChange", ngModelChange: "ngModelChange" }, providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "input_datepicker", first: true, predicate: ["input_datepicker"], descendants: true }], ngImport: i0, template: "<!-- Input mode -->\r\n<ng-container *ngIf=\"modeInput\">\r\n\r\n <div class=\"input-tc-datepicker\" [class.no-border]=\"!useBorder\">\r\n <table class=\"table-box-input\">\r\n <tr>\r\n <td>\r\n <div class=\"delimiter-time-icon\" (click)=\"toClickIn(ID)\" ><i class=\"fas fa-calendar-alt\"></i></div>\r\n </td>\r\n <td>\r\n <input #input_datepicker type=\"text\" name=\"{{ID}}\" id=\"{{ID}}\" class=\"form-control\" >\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n\r\n \r\n \r\n</ng-container>\r\n\r\n<!-- Inline mode -->\r\n<ng-container *ngIf=\"!modeInput\"> \r\n <div #input_datepicker id=\"{{ID}}\" pattern=\"/^\\d{2}\\/\\d{2}\\/\\d{4}$/\"></div>\r\n</ng-container>\r\n\r\n\r\n<!-- EX de uso \r\n <tc-datepicker \r\n [multiple]=\"false\"\r\n [daysOfWeekDisabled]=\"[0,6]\"\r\n [minDate]=\"'18/11/2021'\"\r\n [maxDate]=\"'18/12/2023'\"\r\n [datesDisabled]=\"['12/10/2022','25/12/2022']\"\r\n [modeInput]=\"false\"\r\n [(ngModel)]=\"dateValue\" >\r\n </tc-datepicker>\r\n \r\n // multiple = false\r\n // dateValue - string - pode ser: 12/12/2022 \r\n\r\n // multiple = true\r\n // dateValue - string - pode ser: 11/12/2022,12/12/2022 ... \r\n\r\n <pre>data: {{ dateValue }}</pre>\r\n-->\r\n", styles: [".input_datepicker{width:100%;max-width:290px}.input-tc-datepicker{border:1px solid #ccc;border-radius:3px}.input-tc-datepicker.no-border{border:none!important}.input-tc-datepicker .table-box-input{width:100%}.input-tc-datepicker .table-box-input td:first-child{width:20px}.input-tc-datepicker .table-box-input td:first-child .delimiter-time-icon{text-align:center;cursor:pointer}.input-tc-datepicker .table-box-input input{border:none}\n", ".datepicker{display:none}.datepicker.active{display:block}.datepicker-dropdown{left:0;padding-top:4px;position:absolute;top:0;z-index:20}.datepicker-dropdown.datepicker-orient-top{padding-bottom:4px;padding-top:0}.datepicker-picker{background-color:#fff;border-radius:4px;display:inline-block}.datepicker-dropdown .datepicker-picker{box-shadow:0 2px 3px #0a0a0a1a,0 0 0 1px #0a0a0a1a}.datepicker-picker span{-webkit-touch-callout:none;border:0;border-radius:4px;cursor:default;display:block;flex:1;text-align:center;-webkit-user-select:none;user-select:none}.datepicker-main{padding:2px}.datepicker-footer{background-color:#f5f5f5;box-shadow:inset 0 1px 1px #0a0a0a1a}.datepicker-controls,.datepicker-grid,.datepicker-view,.datepicker-view .days-of-week{display:flex}.datepicker-grid{flex-wrap:wrap}.datepicker-view .days .datepicker-cell,.datepicker-view .dow{flex-basis:14.2857142857%}.datepicker-view.datepicker-grid .datepicker-cell{flex-basis:25%}.datepicker-cell,.datepicker-view .week{height:2.25rem;line-height:2.25rem}.datepicker-title{background-color:#f5f5f5;box-shadow:inset 0 -1px 1px #0a0a0a1a;font-weight:700;padding:.375rem .75rem;text-align:center}.datepicker-header .datepicker-controls{padding:2px 2px 0}.datepicker-controls .button{align-items:center;background-color:#fff;border:1px solid #dbdbdb;border-radius:4px;box-shadow:none;color:#363636;cursor:pointer;display:inline-flex;font-size:1rem;height:2.25em;justify-content:center;line-height:1.5;margin:0;padding:calc(.375em - 1px) .75em;position:relative;text-align:center;vertical-align:top;white-space:nowrap}.datepicker-controls .button:active,.datepicker-controls .button:focus{outline:none}.datepicker-controls .button:hover{border-color:#b5b5b5;color:#363636}.datepicker-controls .button:focus{border-color:#3273dc;color:#363636}.datepicker-controls .button:focus:not(:active){box-shadow:0 0 0 .125em #3273dc40}.datepicker-controls .button:active{border-color:#4a4a4a;color:#363636}.datepicker-controls .button[disabled]{cursor:not-allowed}.datepicker-header .datepicker-controls .button{border-color:transparent;font-weight:700}.datepicker-header .datepicker-controls .button:hover{background-color:#f9f9f9}.datepicker-header .datepicker-controls .button:focus:not(:active){box-shadow:0 0 0 .125em #ffffff40}.datepicker-header .datepicker-controls .button:active{background-color:#f2f2f2}.datepicker-header .datepicker-controls .button[disabled]{box-shadow:none}.datepicker-footer .datepicker-controls .button{border-radius:2px;font-size:.75rem;margin:calc(.375rem - 1px) .375rem;width:100%}.datepicker-controls .view-switch{flex:auto}.datepicker-controls .next-btn,.datepicker-controls .prev-btn{padding-left:.375rem;padding-right:.375rem;width:2.25rem}.datepicker-controls .next-btn.disabled,.datepicker-controls .prev-btn.disabled{visibility:hidden}.datepicker-view .dow{font-size:.875rem;font-weight:700;height:1.5rem;line-height:1.5rem}.datepicker-view .week{color:#b5b5b5;font-size:.75rem;width:2.25rem}@media (max-width:22.5rem){.datepicker-view .week{width:1.96875rem}}.datepicker-grid{width:15.75rem}@media (max-width:22.5rem){.calendar-weeks+.days .datepicker-grid{width:13.78125rem}}.datepicker-cell:not(.disabled):hover{background-color:#f9f9f9;cursor:pointer}.datepicker-cell.focused:not(.selected){background-color:#e8e8e8}.datepicker-cell.selected,.datepicker-cell.selected:hover{background-color:#3273dc;color:#fff;font-weight:600}.datepicker-cell.disabled{color:#dbdbdb}.datepicker-cell.next:not(.disabled),.datepicker-cell.prev:not(.disabled){color:#7a7a7a}.datepicker-cell.next.selected,.datepicker-cell.prev.selected{color:#e6e6e6}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today){background-color:#f5f5f5;border-radius:0}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today):not(.disabled):hover{background-color:#eee}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today).focused{background-color:#e8e8e8}.datepicker-cell.today:not(.selected){background-color:#00d1b2}.datepicker-cell.today:not(.selected):not(.disabled){color:#fff}.datepicker-cell.today.focused:not(.selected){background-color:#00c4a7}.datepicker-cell.range-end:not(.selected),.datepicker-cell.range-start:not(.selected){background-color:#b5b5b5;color:#fff}.datepicker-cell.range-end.focused:not(.selected),.datepicker-cell.range-start.focused:not(.selected){background-color:#afafaf}.datepicker-cell.range-start{border-radius:4px 0 0 4px}.datepicker-cell.range-end{border-radius:0 4px 4px 0}.datepicker-cell.range{background-color:#dbdbdb;border-radius:0}.datepicker-cell.range:not(.disabled):not(.focused):not(.today):hover{background-color:#d5d5d5}.datepicker-cell.range.disabled{color:#c2c2c2}.datepicker-cell.range.focused{background-color:#cfcfcf}.datepicker-view.datepicker-grid .datepicker-cell{height:4.5rem;line-height:4.5rem}.datepicker-input.in-edit{border-color:#2366d1}.datepicker-input.in-edit:active,.datepicker-input.in-edit:focus{box-shadow:0 0 .25em .25em #2366d133}\n", ".datepicker-picker{border:1px solid #ccc;padding:10px 15px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
270
+ TCloudUiDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiDatepickerComponent, selector: "tcloud-ui-datepicker", inputs: { multiple: "multiple", maxNumberOfDates: "maxNumberOfDates", daysOfWeekDisabled: "daysOfWeekDisabled", minDate: "minDate", maxDate: "maxDate", datesDisabled: "datesDisabled", modeInput: "modeInput", useBorder: "useBorder", ngModel: "ngModel", code: "code" }, outputs: { onChange: "onChange", ngModelChange: "ngModelChange" }, providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "input_datepicker", first: true, predicate: ["input_datepicker"], descendants: true }], ngImport: i0, template: "<!-- Input mode -->\r\n<ng-container *ngIf=\"modeInput\">\r\n\r\n <div class=\"input-tc-datepicker\" [class.no-border]=\"!useBorder\">\r\n <table class=\"table-box-input\">\r\n <tr>\r\n <td>\r\n <div class=\"delimiter-time-icon\" (click)=\"toClickIn(ID)\" ><i class=\"fas fa-calendar-alt\"></i></div>\r\n </td>\r\n <td>\r\n <input #input_datepicker type=\"text\" name=\"{{ID}}\" id=\"{{ID}}\" class=\"form-control\" >\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n\r\n \r\n \r\n</ng-container>\r\n\r\n<!-- Inline mode -->\r\n<ng-container *ngIf=\"!modeInput\"> \r\n <div #input_datepicker id=\"{{ID}}\" pattern=\"/^\\d{2}\\/\\d{2}\\/\\d{4}$/\"></div>\r\n</ng-container>\r\n\r\n\r\n<!-- EX de uso \r\n <tc-datepicker \r\n [multiple]=\"false\"\r\n [daysOfWeekDisabled]=\"[0,6]\"\r\n [minDate]=\"'18/11/2021'\"\r\n [maxDate]=\"'18/12/2023'\"\r\n [datesDisabled]=\"['12/10/2022','25/12/2022']\"\r\n [modeInput]=\"false\"\r\n [(ngModel)]=\"dateValue\" >\r\n </tc-datepicker>\r\n \r\n // multiple = false\r\n // dateValue - string - pode ser: 12/12/2022 \r\n\r\n // multiple = true\r\n // dateValue - string - pode ser: 11/12/2022,12/12/2022 ... \r\n\r\n <pre>data: {{ dateValue }}</pre>\r\n-->\r\n", styles: [".input_datepicker{width:100%;max-width:290px}.input-tc-datepicker{background-color:#fff;border:1px solid #ccc;border-radius:3px}.input-tc-datepicker.no-border{border:none!important}.input-tc-datepicker .table-box-input{width:100%}.input-tc-datepicker .table-box-input td:first-child{width:20px}.input-tc-datepicker .table-box-input td:first-child .delimiter-time-icon{text-align:center;cursor:pointer}.input-tc-datepicker .table-box-input input{border:none}\n", ".datepicker{display:none}.datepicker.active{display:block}.datepicker-dropdown{left:0;padding-top:4px;position:absolute;top:0;z-index:20}.datepicker-dropdown.datepicker-orient-top{padding-bottom:4px;padding-top:0}.datepicker-picker{background-color:#fff;border-radius:4px;display:inline-block}.datepicker-dropdown .datepicker-picker{box-shadow:0 2px 3px #0a0a0a1a,0 0 0 1px #0a0a0a1a}.datepicker-picker span{-webkit-touch-callout:none;border:0;border-radius:4px;cursor:default;display:block;flex:1;text-align:center;-webkit-user-select:none;user-select:none}.datepicker-main{padding:2px}.datepicker-footer{background-color:#f5f5f5;box-shadow:inset 0 1px 1px #0a0a0a1a}.datepicker-controls,.datepicker-grid,.datepicker-view,.datepicker-view .days-of-week{display:flex}.datepicker-grid{flex-wrap:wrap}.datepicker-view .days .datepicker-cell,.datepicker-view .dow{flex-basis:14.2857142857%}.datepicker-view.datepicker-grid .datepicker-cell{flex-basis:25%}.datepicker-cell,.datepicker-view .week{height:2.25rem;line-height:2.25rem}.datepicker-title{background-color:#f5f5f5;box-shadow:inset 0 -1px 1px #0a0a0a1a;font-weight:700;padding:.375rem .75rem;text-align:center}.datepicker-header .datepicker-controls{padding:2px 2px 0}.datepicker-controls .button{align-items:center;background-color:#fff;border:1px solid #dbdbdb;border-radius:4px;box-shadow:none;color:#363636;cursor:pointer;display:inline-flex;font-size:1rem;height:2.25em;justify-content:center;line-height:1.5;margin:0;padding:calc(.375em - 1px) .75em;position:relative;text-align:center;vertical-align:top;white-space:nowrap}.datepicker-controls .button:active,.datepicker-controls .button:focus{outline:none}.datepicker-controls .button:hover{border-color:#b5b5b5;color:#363636}.datepicker-controls .button:focus{border-color:#3273dc;color:#363636}.datepicker-controls .button:focus:not(:active){box-shadow:0 0 0 .125em #3273dc40}.datepicker-controls .button:active{border-color:#4a4a4a;color:#363636}.datepicker-controls .button[disabled]{cursor:not-allowed}.datepicker-header .datepicker-controls .button{border-color:transparent;font-weight:700}.datepicker-header .datepicker-controls .button:hover{background-color:#f9f9f9}.datepicker-header .datepicker-controls .button:focus:not(:active){box-shadow:0 0 0 .125em #ffffff40}.datepicker-header .datepicker-controls .button:active{background-color:#f2f2f2}.datepicker-header .datepicker-controls .button[disabled]{box-shadow:none}.datepicker-footer .datepicker-controls .button{border-radius:2px;font-size:.75rem;margin:calc(.375rem - 1px) .375rem;width:100%}.datepicker-controls .view-switch{flex:auto}.datepicker-controls .next-btn,.datepicker-controls .prev-btn{padding-left:.375rem;padding-right:.375rem;width:2.25rem}.datepicker-controls .next-btn.disabled,.datepicker-controls .prev-btn.disabled{visibility:hidden}.datepicker-view .dow{font-size:.875rem;font-weight:700;height:1.5rem;line-height:1.5rem}.datepicker-view .week{color:#b5b5b5;font-size:.75rem;width:2.25rem}@media (max-width:22.5rem){.datepicker-view .week{width:1.96875rem}}.datepicker-grid{width:15.75rem}@media (max-width:22.5rem){.calendar-weeks+.days .datepicker-grid{width:13.78125rem}}.datepicker-cell:not(.disabled):hover{background-color:#f9f9f9;cursor:pointer}.datepicker-cell.focused:not(.selected){background-color:#e8e8e8}.datepicker-cell.selected,.datepicker-cell.selected:hover{background-color:#3273dc;color:#fff;font-weight:600}.datepicker-cell.disabled{color:#dbdbdb}.datepicker-cell.next:not(.disabled),.datepicker-cell.prev:not(.disabled){color:#7a7a7a}.datepicker-cell.next.selected,.datepicker-cell.prev.selected{color:#e6e6e6}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today){background-color:#f5f5f5;border-radius:0}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today):not(.disabled):hover{background-color:#eee}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today).focused{background-color:#e8e8e8}.datepicker-cell.today:not(.selected){background-color:#00d1b2}.datepicker-cell.today:not(.selected):not(.disabled){color:#fff}.datepicker-cell.today.focused:not(.selected){background-color:#00c4a7}.datepicker-cell.range-end:not(.selected),.datepicker-cell.range-start:not(.selected){background-color:#b5b5b5;color:#fff}.datepicker-cell.range-end.focused:not(.selected),.datepicker-cell.range-start.focused:not(.selected){background-color:#afafaf}.datepicker-cell.range-start{border-radius:4px 0 0 4px}.datepicker-cell.range-end{border-radius:0 4px 4px 0}.datepicker-cell.range{background-color:#dbdbdb;border-radius:0}.datepicker-cell.range:not(.disabled):not(.focused):not(.today):hover{background-color:#d5d5d5}.datepicker-cell.range.disabled{color:#c2c2c2}.datepicker-cell.range.focused{background-color:#cfcfcf}.datepicker-view.datepicker-grid .datepicker-cell{height:4.5rem;line-height:4.5rem}.datepicker-input.in-edit{border-color:#2366d1}.datepicker-input.in-edit:active,.datepicker-input.in-edit:focus{box-shadow:0 0 .25em .25em #2366d133}\n", ".datepicker-picker{border:1px solid #ccc;padding:10px 15px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
271
271
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiDatepickerComponent, decorators: [{
272
272
  type: Component,
273
- args: [{ selector: 'tcloud-ui-datepicker', providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, template: "<!-- Input mode -->\r\n<ng-container *ngIf=\"modeInput\">\r\n\r\n <div class=\"input-tc-datepicker\" [class.no-border]=\"!useBorder\">\r\n <table class=\"table-box-input\">\r\n <tr>\r\n <td>\r\n <div class=\"delimiter-time-icon\" (click)=\"toClickIn(ID)\" ><i class=\"fas fa-calendar-alt\"></i></div>\r\n </td>\r\n <td>\r\n <input #input_datepicker type=\"text\" name=\"{{ID}}\" id=\"{{ID}}\" class=\"form-control\" >\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n\r\n \r\n \r\n</ng-container>\r\n\r\n<!-- Inline mode -->\r\n<ng-container *ngIf=\"!modeInput\"> \r\n <div #input_datepicker id=\"{{ID}}\" pattern=\"/^\\d{2}\\/\\d{2}\\/\\d{4}$/\"></div>\r\n</ng-container>\r\n\r\n\r\n<!-- EX de uso \r\n <tc-datepicker \r\n [multiple]=\"false\"\r\n [daysOfWeekDisabled]=\"[0,6]\"\r\n [minDate]=\"'18/11/2021'\"\r\n [maxDate]=\"'18/12/2023'\"\r\n [datesDisabled]=\"['12/10/2022','25/12/2022']\"\r\n [modeInput]=\"false\"\r\n [(ngModel)]=\"dateValue\" >\r\n </tc-datepicker>\r\n \r\n // multiple = false\r\n // dateValue - string - pode ser: 12/12/2022 \r\n\r\n // multiple = true\r\n // dateValue - string - pode ser: 11/12/2022,12/12/2022 ... \r\n\r\n <pre>data: {{ dateValue }}</pre>\r\n-->\r\n", styles: [".input_datepicker{width:100%;max-width:290px}.input-tc-datepicker{border:1px solid #ccc;border-radius:3px}.input-tc-datepicker.no-border{border:none!important}.input-tc-datepicker .table-box-input{width:100%}.input-tc-datepicker .table-box-input td:first-child{width:20px}.input-tc-datepicker .table-box-input td:first-child .delimiter-time-icon{text-align:center;cursor:pointer}.input-tc-datepicker .table-box-input input{border:none}\n", ".datepicker{display:none}.datepicker.active{display:block}.datepicker-dropdown{left:0;padding-top:4px;position:absolute;top:0;z-index:20}.datepicker-dropdown.datepicker-orient-top{padding-bottom:4px;padding-top:0}.datepicker-picker{background-color:#fff;border-radius:4px;display:inline-block}.datepicker-dropdown .datepicker-picker{box-shadow:0 2px 3px #0a0a0a1a,0 0 0 1px #0a0a0a1a}.datepicker-picker span{-webkit-touch-callout:none;border:0;border-radius:4px;cursor:default;display:block;flex:1;text-align:center;-webkit-user-select:none;user-select:none}.datepicker-main{padding:2px}.datepicker-footer{background-color:#f5f5f5;box-shadow:inset 0 1px 1px #0a0a0a1a}.datepicker-controls,.datepicker-grid,.datepicker-view,.datepicker-view .days-of-week{display:flex}.datepicker-grid{flex-wrap:wrap}.datepicker-view .days .datepicker-cell,.datepicker-view .dow{flex-basis:14.2857142857%}.datepicker-view.datepicker-grid .datepicker-cell{flex-basis:25%}.datepicker-cell,.datepicker-view .week{height:2.25rem;line-height:2.25rem}.datepicker-title{background-color:#f5f5f5;box-shadow:inset 0 -1px 1px #0a0a0a1a;font-weight:700;padding:.375rem .75rem;text-align:center}.datepicker-header .datepicker-controls{padding:2px 2px 0}.datepicker-controls .button{align-items:center;background-color:#fff;border:1px solid #dbdbdb;border-radius:4px;box-shadow:none;color:#363636;cursor:pointer;display:inline-flex;font-size:1rem;height:2.25em;justify-content:center;line-height:1.5;margin:0;padding:calc(.375em - 1px) .75em;position:relative;text-align:center;vertical-align:top;white-space:nowrap}.datepicker-controls .button:active,.datepicker-controls .button:focus{outline:none}.datepicker-controls .button:hover{border-color:#b5b5b5;color:#363636}.datepicker-controls .button:focus{border-color:#3273dc;color:#363636}.datepicker-controls .button:focus:not(:active){box-shadow:0 0 0 .125em #3273dc40}.datepicker-controls .button:active{border-color:#4a4a4a;color:#363636}.datepicker-controls .button[disabled]{cursor:not-allowed}.datepicker-header .datepicker-controls .button{border-color:transparent;font-weight:700}.datepicker-header .datepicker-controls .button:hover{background-color:#f9f9f9}.datepicker-header .datepicker-controls .button:focus:not(:active){box-shadow:0 0 0 .125em #ffffff40}.datepicker-header .datepicker-controls .button:active{background-color:#f2f2f2}.datepicker-header .datepicker-controls .button[disabled]{box-shadow:none}.datepicker-footer .datepicker-controls .button{border-radius:2px;font-size:.75rem;margin:calc(.375rem - 1px) .375rem;width:100%}.datepicker-controls .view-switch{flex:auto}.datepicker-controls .next-btn,.datepicker-controls .prev-btn{padding-left:.375rem;padding-right:.375rem;width:2.25rem}.datepicker-controls .next-btn.disabled,.datepicker-controls .prev-btn.disabled{visibility:hidden}.datepicker-view .dow{font-size:.875rem;font-weight:700;height:1.5rem;line-height:1.5rem}.datepicker-view .week{color:#b5b5b5;font-size:.75rem;width:2.25rem}@media (max-width:22.5rem){.datepicker-view .week{width:1.96875rem}}.datepicker-grid{width:15.75rem}@media (max-width:22.5rem){.calendar-weeks+.days .datepicker-grid{width:13.78125rem}}.datepicker-cell:not(.disabled):hover{background-color:#f9f9f9;cursor:pointer}.datepicker-cell.focused:not(.selected){background-color:#e8e8e8}.datepicker-cell.selected,.datepicker-cell.selected:hover{background-color:#3273dc;color:#fff;font-weight:600}.datepicker-cell.disabled{color:#dbdbdb}.datepicker-cell.next:not(.disabled),.datepicker-cell.prev:not(.disabled){color:#7a7a7a}.datepicker-cell.next.selected,.datepicker-cell.prev.selected{color:#e6e6e6}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today){background-color:#f5f5f5;border-radius:0}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today):not(.disabled):hover{background-color:#eee}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today).focused{background-color:#e8e8e8}.datepicker-cell.today:not(.selected){background-color:#00d1b2}.datepicker-cell.today:not(.selected):not(.disabled){color:#fff}.datepicker-cell.today.focused:not(.selected){background-color:#00c4a7}.datepicker-cell.range-end:not(.selected),.datepicker-cell.range-start:not(.selected){background-color:#b5b5b5;color:#fff}.datepicker-cell.range-end.focused:not(.selected),.datepicker-cell.range-start.focused:not(.selected){background-color:#afafaf}.datepicker-cell.range-start{border-radius:4px 0 0 4px}.datepicker-cell.range-end{border-radius:0 4px 4px 0}.datepicker-cell.range{background-color:#dbdbdb;border-radius:0}.datepicker-cell.range:not(.disabled):not(.focused):not(.today):hover{background-color:#d5d5d5}.datepicker-cell.range.disabled{color:#c2c2c2}.datepicker-cell.range.focused{background-color:#cfcfcf}.datepicker-view.datepicker-grid .datepicker-cell{height:4.5rem;line-height:4.5rem}.datepicker-input.in-edit{border-color:#2366d1}.datepicker-input.in-edit:active,.datepicker-input.in-edit:focus{box-shadow:0 0 .25em .25em #2366d133}\n", ".datepicker-picker{border:1px solid #ccc;padding:10px 15px}\n"] }]
273
+ args: [{ selector: 'tcloud-ui-datepicker', providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, template: "<!-- Input mode -->\r\n<ng-container *ngIf=\"modeInput\">\r\n\r\n <div class=\"input-tc-datepicker\" [class.no-border]=\"!useBorder\">\r\n <table class=\"table-box-input\">\r\n <tr>\r\n <td>\r\n <div class=\"delimiter-time-icon\" (click)=\"toClickIn(ID)\" ><i class=\"fas fa-calendar-alt\"></i></div>\r\n </td>\r\n <td>\r\n <input #input_datepicker type=\"text\" name=\"{{ID}}\" id=\"{{ID}}\" class=\"form-control\" >\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n\r\n \r\n \r\n</ng-container>\r\n\r\n<!-- Inline mode -->\r\n<ng-container *ngIf=\"!modeInput\"> \r\n <div #input_datepicker id=\"{{ID}}\" pattern=\"/^\\d{2}\\/\\d{2}\\/\\d{4}$/\"></div>\r\n</ng-container>\r\n\r\n\r\n<!-- EX de uso \r\n <tc-datepicker \r\n [multiple]=\"false\"\r\n [daysOfWeekDisabled]=\"[0,6]\"\r\n [minDate]=\"'18/11/2021'\"\r\n [maxDate]=\"'18/12/2023'\"\r\n [datesDisabled]=\"['12/10/2022','25/12/2022']\"\r\n [modeInput]=\"false\"\r\n [(ngModel)]=\"dateValue\" >\r\n </tc-datepicker>\r\n \r\n // multiple = false\r\n // dateValue - string - pode ser: 12/12/2022 \r\n\r\n // multiple = true\r\n // dateValue - string - pode ser: 11/12/2022,12/12/2022 ... \r\n\r\n <pre>data: {{ dateValue }}</pre>\r\n-->\r\n", styles: [".input_datepicker{width:100%;max-width:290px}.input-tc-datepicker{background-color:#fff;border:1px solid #ccc;border-radius:3px}.input-tc-datepicker.no-border{border:none!important}.input-tc-datepicker .table-box-input{width:100%}.input-tc-datepicker .table-box-input td:first-child{width:20px}.input-tc-datepicker .table-box-input td:first-child .delimiter-time-icon{text-align:center;cursor:pointer}.input-tc-datepicker .table-box-input input{border:none}\n", ".datepicker{display:none}.datepicker.active{display:block}.datepicker-dropdown{left:0;padding-top:4px;position:absolute;top:0;z-index:20}.datepicker-dropdown.datepicker-orient-top{padding-bottom:4px;padding-top:0}.datepicker-picker{background-color:#fff;border-radius:4px;display:inline-block}.datepicker-dropdown .datepicker-picker{box-shadow:0 2px 3px #0a0a0a1a,0 0 0 1px #0a0a0a1a}.datepicker-picker span{-webkit-touch-callout:none;border:0;border-radius:4px;cursor:default;display:block;flex:1;text-align:center;-webkit-user-select:none;user-select:none}.datepicker-main{padding:2px}.datepicker-footer{background-color:#f5f5f5;box-shadow:inset 0 1px 1px #0a0a0a1a}.datepicker-controls,.datepicker-grid,.datepicker-view,.datepicker-view .days-of-week{display:flex}.datepicker-grid{flex-wrap:wrap}.datepicker-view .days .datepicker-cell,.datepicker-view .dow{flex-basis:14.2857142857%}.datepicker-view.datepicker-grid .datepicker-cell{flex-basis:25%}.datepicker-cell,.datepicker-view .week{height:2.25rem;line-height:2.25rem}.datepicker-title{background-color:#f5f5f5;box-shadow:inset 0 -1px 1px #0a0a0a1a;font-weight:700;padding:.375rem .75rem;text-align:center}.datepicker-header .datepicker-controls{padding:2px 2px 0}.datepicker-controls .button{align-items:center;background-color:#fff;border:1px solid #dbdbdb;border-radius:4px;box-shadow:none;color:#363636;cursor:pointer;display:inline-flex;font-size:1rem;height:2.25em;justify-content:center;line-height:1.5;margin:0;padding:calc(.375em - 1px) .75em;position:relative;text-align:center;vertical-align:top;white-space:nowrap}.datepicker-controls .button:active,.datepicker-controls .button:focus{outline:none}.datepicker-controls .button:hover{border-color:#b5b5b5;color:#363636}.datepicker-controls .button:focus{border-color:#3273dc;color:#363636}.datepicker-controls .button:focus:not(:active){box-shadow:0 0 0 .125em #3273dc40}.datepicker-controls .button:active{border-color:#4a4a4a;color:#363636}.datepicker-controls .button[disabled]{cursor:not-allowed}.datepicker-header .datepicker-controls .button{border-color:transparent;font-weight:700}.datepicker-header .datepicker-controls .button:hover{background-color:#f9f9f9}.datepicker-header .datepicker-controls .button:focus:not(:active){box-shadow:0 0 0 .125em #ffffff40}.datepicker-header .datepicker-controls .button:active{background-color:#f2f2f2}.datepicker-header .datepicker-controls .button[disabled]{box-shadow:none}.datepicker-footer .datepicker-controls .button{border-radius:2px;font-size:.75rem;margin:calc(.375rem - 1px) .375rem;width:100%}.datepicker-controls .view-switch{flex:auto}.datepicker-controls .next-btn,.datepicker-controls .prev-btn{padding-left:.375rem;padding-right:.375rem;width:2.25rem}.datepicker-controls .next-btn.disabled,.datepicker-controls .prev-btn.disabled{visibility:hidden}.datepicker-view .dow{font-size:.875rem;font-weight:700;height:1.5rem;line-height:1.5rem}.datepicker-view .week{color:#b5b5b5;font-size:.75rem;width:2.25rem}@media (max-width:22.5rem){.datepicker-view .week{width:1.96875rem}}.datepicker-grid{width:15.75rem}@media (max-width:22.5rem){.calendar-weeks+.days .datepicker-grid{width:13.78125rem}}.datepicker-cell:not(.disabled):hover{background-color:#f9f9f9;cursor:pointer}.datepicker-cell.focused:not(.selected){background-color:#e8e8e8}.datepicker-cell.selected,.datepicker-cell.selected:hover{background-color:#3273dc;color:#fff;font-weight:600}.datepicker-cell.disabled{color:#dbdbdb}.datepicker-cell.next:not(.disabled),.datepicker-cell.prev:not(.disabled){color:#7a7a7a}.datepicker-cell.next.selected,.datepicker-cell.prev.selected{color:#e6e6e6}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today){background-color:#f5f5f5;border-radius:0}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today):not(.disabled):hover{background-color:#eee}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today).focused{background-color:#e8e8e8}.datepicker-cell.today:not(.selected){background-color:#00d1b2}.datepicker-cell.today:not(.selected):not(.disabled){color:#fff}.datepicker-cell.today.focused:not(.selected){background-color:#00c4a7}.datepicker-cell.range-end:not(.selected),.datepicker-cell.range-start:not(.selected){background-color:#b5b5b5;color:#fff}.datepicker-cell.range-end.focused:not(.selected),.datepicker-cell.range-start.focused:not(.selected){background-color:#afafaf}.datepicker-cell.range-start{border-radius:4px 0 0 4px}.datepicker-cell.range-end{border-radius:0 4px 4px 0}.datepicker-cell.range{background-color:#dbdbdb;border-radius:0}.datepicker-cell.range:not(.disabled):not(.focused):not(.today):hover{background-color:#d5d5d5}.datepicker-cell.range.disabled{color:#c2c2c2}.datepicker-cell.range.focused{background-color:#cfcfcf}.datepicker-view.datepicker-grid .datepicker-cell{height:4.5rem;line-height:4.5rem}.datepicker-input.in-edit{border-color:#2366d1}.datepicker-input.in-edit:active,.datepicker-input.in-edit:focus{box-shadow:0 0 .25em .25em #2366d133}\n", ".datepicker-picker{border:1px solid #ccc;padding:10px 15px}\n"] }]
274
274
  }], ctorParameters: function () { return [{ type: i1.DateBRPipe }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { multiple: [{
275
275
  type: Input
276
276
  }], maxNumberOfDates: [{
@@ -190,10 +190,10 @@ export class TCloudUiDatepickerTimeComponent {
190
190
  }
191
191
  }
192
192
  TCloudUiDatepickerTimeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiDatepickerTimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
193
- TCloudUiDatepickerTimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiDatepickerTimeComponent, selector: "tcloud-ui-datepicker-time", inputs: { ngModel: "ngModel" }, outputs: { ngModelChange: "ngModelChange", onChange: "onChange", eventChange: "eventChange" }, providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "datepickertime", first: true, predicate: ["_datepickertime"], descendants: true }], ngImport: i0, template: "<input type=\"hidden\" value=\"{{ innerValue }}\" #_datepickertime >\r\n<form #_formulario=\"ngForm\">\r\n <div class=\"input-control-time\">\r\n <div class=\"form-control-time\">\r\n <table class=\"form-time\">\r\n <tr>\r\n <!-- <td class=\"area-icon\"><div class=\"delimiter-time-icon\" (click)=\"toClickIn(ID)\" ><i class=\"fas fa-calendar-alt\"></i></div></td> -->\r\n <td class=\"area-input-date\"><tcloud-ui-datepicker #_tclouddatepickertime [modeInput]=\"true\" name=\"date\" [useBorder]=\"false\" [(ngModel)]=\"DD_MM_YYYY\" (onChange)=\"toSetDate($event)\" ></tcloud-ui-datepicker></td>\r\n <td class=\"area-delimiter\"><div class=\"delimiter-time\"></div></td>\r\n <td class=\"area-input-hour\"><input type=\"text\" placeholder=\"HH\" (keyup)=\"toSetTime()\" [(ngModel)]=\"HH\" maxlength=\"2\" name=\"hh\" pattern=\"[0][0-9]|[1][0-9]|2[0-3]\"></td>\r\n <td class=\"area-delimiter\"><div class=\"delimiter-time\">:</div></td>\r\n <td class=\"area-input-minute\"><input type=\"text\" placeholder=\"MM\" (keyup)=\"toSetTime()\" [(ngModel)]=\"MM\" maxlength=\"2\" name=\"mm\" pattern=\"[012345][0-9]\"></td>\r\n <td class=\"area-clean\"></td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n</form>", styles: [".input-control-time{border:1px solid #ccc;border-radius:3px;width:100%}.form-control-time{max-width:220px;border:none}.form-control-time input{text-align:center}.form-time{width:100%}.delimiter-time{width:100%;text-align:center}.delimiter-time-icon{border:none;height:35px;width:10px;padding:4px;font-size:17px;text-align:center;opacity:.6}.area-icon{width:25px}.area-input-date{width:105px}.area-delimiter{width:2px;text-align:center}.area-input-hour,.area-input-minute{text-align:center;width:28px}.area-input-hour input,.area-input-minute input{height:35px;width:28px;text-align:center;color:#999;font-weight:600;font-style:italic}.area-input-hour input:focus,.area-input-minute input:focus{outline:none}.area-clean{width:15px}input,.datepicker-input{border:none!important}\n"], dependencies: [{ kind: "component", type: i1.TCloudUiDatepickerComponent, selector: "tcloud-ui-datepicker", inputs: ["multiple", "maxNumberOfDates", "daysOfWeekDisabled", "minDate", "maxDate", "datesDisabled", "modeInput", "useBorder", "ngModel", "code"], outputs: ["onChange", "ngModelChange"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
193
+ TCloudUiDatepickerTimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiDatepickerTimeComponent, selector: "tcloud-ui-datepicker-time", inputs: { ngModel: "ngModel" }, outputs: { ngModelChange: "ngModelChange", onChange: "onChange", eventChange: "eventChange" }, providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "datepickertime", first: true, predicate: ["_datepickertime"], descendants: true }], ngImport: i0, template: "<input type=\"hidden\" value=\"{{ innerValue }}\" #_datepickertime >\r\n<form #_formulario=\"ngForm\">\r\n <div class=\"input-control-time\">\r\n <div class=\"form-control-time\">\r\n <table class=\"form-time\">\r\n <tr>\r\n <!-- <td class=\"area-icon\"><div class=\"delimiter-time-icon\" (click)=\"toClickIn(ID)\" ><i class=\"fas fa-calendar-alt\"></i></div></td> -->\r\n <td class=\"area-input-date\"><tcloud-ui-datepicker #_tclouddatepickertime [modeInput]=\"true\" name=\"date\" [useBorder]=\"false\" [(ngModel)]=\"DD_MM_YYYY\" (onChange)=\"toSetDate($event)\" ></tcloud-ui-datepicker></td>\r\n <td class=\"area-delimiter\"><div class=\"delimiter-time\"></div></td>\r\n <td class=\"area-input-hour\"><input type=\"text\" placeholder=\"HH\" (keyup)=\"toSetTime()\" [(ngModel)]=\"HH\" maxlength=\"2\" name=\"hh\" pattern=\"[0][0-9]|[1][0-9]|2[0-3]\"></td>\r\n <td class=\"area-delimiter\"><div class=\"delimiter-time\">:</div></td>\r\n <td class=\"area-input-minute\"><input type=\"text\" placeholder=\"MM\" (keyup)=\"toSetTime()\" [(ngModel)]=\"MM\" maxlength=\"2\" name=\"mm\" pattern=\"[012345][0-9]\"></td>\r\n <td class=\"area-clean\"></td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n</form>", styles: [".input-control-time{background-color:#fff;border:1px solid #ccc;border-radius:3px;width:100%}.form-control-time{max-width:220px;border:none}.form-control-time input{text-align:center}.form-time{width:100%}.delimiter-time{width:100%;text-align:center}.delimiter-time-icon{border:none;height:35px;width:10px;padding:4px;font-size:17px;text-align:center;opacity:.6}.area-icon{width:25px}.area-input-date{width:105px}.area-delimiter{width:2px;text-align:center}.area-input-hour,.area-input-minute{text-align:center;width:28px}.area-input-hour input,.area-input-minute input{height:35px;width:28px;text-align:center;color:#999;font-weight:600;font-style:italic}.area-input-hour input:focus,.area-input-minute input:focus{outline:none}.area-clean{width:15px}input,.datepicker-input{border:none!important}\n"], dependencies: [{ kind: "component", type: i1.TCloudUiDatepickerComponent, selector: "tcloud-ui-datepicker", inputs: ["multiple", "maxNumberOfDates", "daysOfWeekDisabled", "minDate", "maxDate", "datesDisabled", "modeInput", "useBorder", "ngModel", "code"], outputs: ["onChange", "ngModelChange"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
194
194
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiDatepickerTimeComponent, decorators: [{
195
195
  type: Component,
196
- args: [{ selector: 'tcloud-ui-datepicker-time', providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], template: "<input type=\"hidden\" value=\"{{ innerValue }}\" #_datepickertime >\r\n<form #_formulario=\"ngForm\">\r\n <div class=\"input-control-time\">\r\n <div class=\"form-control-time\">\r\n <table class=\"form-time\">\r\n <tr>\r\n <!-- <td class=\"area-icon\"><div class=\"delimiter-time-icon\" (click)=\"toClickIn(ID)\" ><i class=\"fas fa-calendar-alt\"></i></div></td> -->\r\n <td class=\"area-input-date\"><tcloud-ui-datepicker #_tclouddatepickertime [modeInput]=\"true\" name=\"date\" [useBorder]=\"false\" [(ngModel)]=\"DD_MM_YYYY\" (onChange)=\"toSetDate($event)\" ></tcloud-ui-datepicker></td>\r\n <td class=\"area-delimiter\"><div class=\"delimiter-time\"></div></td>\r\n <td class=\"area-input-hour\"><input type=\"text\" placeholder=\"HH\" (keyup)=\"toSetTime()\" [(ngModel)]=\"HH\" maxlength=\"2\" name=\"hh\" pattern=\"[0][0-9]|[1][0-9]|2[0-3]\"></td>\r\n <td class=\"area-delimiter\"><div class=\"delimiter-time\">:</div></td>\r\n <td class=\"area-input-minute\"><input type=\"text\" placeholder=\"MM\" (keyup)=\"toSetTime()\" [(ngModel)]=\"MM\" maxlength=\"2\" name=\"mm\" pattern=\"[012345][0-9]\"></td>\r\n <td class=\"area-clean\"></td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n</form>", styles: [".input-control-time{border:1px solid #ccc;border-radius:3px;width:100%}.form-control-time{max-width:220px;border:none}.form-control-time input{text-align:center}.form-time{width:100%}.delimiter-time{width:100%;text-align:center}.delimiter-time-icon{border:none;height:35px;width:10px;padding:4px;font-size:17px;text-align:center;opacity:.6}.area-icon{width:25px}.area-input-date{width:105px}.area-delimiter{width:2px;text-align:center}.area-input-hour,.area-input-minute{text-align:center;width:28px}.area-input-hour input,.area-input-minute input{height:35px;width:28px;text-align:center;color:#999;font-weight:600;font-style:italic}.area-input-hour input:focus,.area-input-minute input:focus{outline:none}.area-clean{width:15px}input,.datepicker-input{border:none!important}\n"] }]
196
+ args: [{ selector: 'tcloud-ui-datepicker-time', providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], template: "<input type=\"hidden\" value=\"{{ innerValue }}\" #_datepickertime >\r\n<form #_formulario=\"ngForm\">\r\n <div class=\"input-control-time\">\r\n <div class=\"form-control-time\">\r\n <table class=\"form-time\">\r\n <tr>\r\n <!-- <td class=\"area-icon\"><div class=\"delimiter-time-icon\" (click)=\"toClickIn(ID)\" ><i class=\"fas fa-calendar-alt\"></i></div></td> -->\r\n <td class=\"area-input-date\"><tcloud-ui-datepicker #_tclouddatepickertime [modeInput]=\"true\" name=\"date\" [useBorder]=\"false\" [(ngModel)]=\"DD_MM_YYYY\" (onChange)=\"toSetDate($event)\" ></tcloud-ui-datepicker></td>\r\n <td class=\"area-delimiter\"><div class=\"delimiter-time\"></div></td>\r\n <td class=\"area-input-hour\"><input type=\"text\" placeholder=\"HH\" (keyup)=\"toSetTime()\" [(ngModel)]=\"HH\" maxlength=\"2\" name=\"hh\" pattern=\"[0][0-9]|[1][0-9]|2[0-3]\"></td>\r\n <td class=\"area-delimiter\"><div class=\"delimiter-time\">:</div></td>\r\n <td class=\"area-input-minute\"><input type=\"text\" placeholder=\"MM\" (keyup)=\"toSetTime()\" [(ngModel)]=\"MM\" maxlength=\"2\" name=\"mm\" pattern=\"[012345][0-9]\"></td>\r\n <td class=\"area-clean\"></td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n</form>", styles: [".input-control-time{background-color:#fff;border:1px solid #ccc;border-radius:3px;width:100%}.form-control-time{max-width:220px;border:none}.form-control-time input{text-align:center}.form-time{width:100%}.delimiter-time{width:100%;text-align:center}.delimiter-time-icon{border:none;height:35px;width:10px;padding:4px;font-size:17px;text-align:center;opacity:.6}.area-icon{width:25px}.area-input-date{width:105px}.area-delimiter{width:2px;text-align:center}.area-input-hour,.area-input-minute{text-align:center;width:28px}.area-input-hour input,.area-input-minute input{height:35px;width:28px;text-align:center;color:#999;font-weight:600;font-style:italic}.area-input-hour input:focus,.area-input-minute input:focus{outline:none}.area-clean{width:15px}input,.datepicker-input{border:none!important}\n"] }]
197
197
  }], propDecorators: { ngModel: [{
198
198
  type: Input
199
199
  }], ngModelChange: [{
@@ -363,10 +363,10 @@ export class TCloudUiFiltersComponent {
363
363
  }
364
364
  }
365
365
  TCloudUiFiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiFiltersComponent, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
366
- TCloudUiFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiFiltersComponent, selector: "tcloud-ui-filters", inputs: { data: "data", filters: "filters", submitText: "submitText", useOnChangeSubmit: "useOnChangeSubmit", useButtonSubmit: "useButtonSubmit", useNormalizeCaseSensitive: "useNormalizeCaseSensitive" }, outputs: { result: "result", onFilter: "onFilter", onChange: "onChange", onSubmit: "onSubmit" }, viewQueries: [{ propertyName: "_formulario", first: true, predicate: ["_formulario"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"show_filters\" class=\"area-filter\">\n <ng-container *ngFor=\"let item of filters; let i = index\">\n\n <ng-container *ngIf=\"!item.type || (item.type && item.type !== 'boolean')\">\n \n <div class=\"box-filter-input\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\n\n <ng-container *ngIf=\"item.type === 'datetime-local'\">\n <div class=\"m-description\"><i [class.to-active]=\"(datepickers[i] !== undefined && datepickers[i] !== null && datepickers[i] !== '')\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div>\n <tcloud-ui-datepicker-time #_input [(ngModel)]=\"datepickers[i]\" name=\"input_{{i+1}}\" (eventChange)=\"searchIn(item, _input, 'teste')\" > </tcloud-ui-datepicker-time>\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"!(datepickers[i] !== undefined && datepickers[i] !== null && datepickers[i] !== '')\" (click)=\"searchIn(item, null); item.searchText = undefined; datepickers[i] = ''\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div> \n </ng-container>\n \n <ng-container *ngIf=\"item.type !== 'select' && item.type !== 'datetime-local'\">\n <div class=\"m-description\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div>\n <input \n #_input\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\n name=\"input_{{i+1}}\" \n type=\"{{ (item.type === 'number') ? 'text' : item.type }}\" \n class=\"form-control tc-form-control\" \n (keyup)=\"searchIn(item, $event)\"> \n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"_input.value === ''\" (click)=\"searchIn(item, null); _input.value = ''\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.type === 'select' && item.data && (item.data).length > 0\" >\n <div class=\"m-description\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div>\n <select \n #_input\n name=\"input_{{i+1}}\" \n class=\"form-control tc-form-control\" \n (change)=\"searchIn(item, $event)\">\n <option [ngValue]=\"\"></option>\n <ng-container *ngFor=\"let v of item.data\">\n <option [ngValue]=\"v.value\">{{ v.description }}</option>\n </ng-container>\n </select>\n <!-- <button class=\"btn-clear-filter-text\" [class.to-hide]=\"_input.value === ''\" (click)=\"searchIn(item, null); _input.value = ''\">\n <i class=\"fas fa-times\"></i>\n </button> -->\n </div>\n </ng-container>\n\n </div>\n\n\n \n </ng-container>\n\n <ng-container *ngIf=\"item.type && item.type === 'boolean'\">\n \n <div class=\"box-filter-input\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\n <div class=\"m-description\"><i [class.to-active]=\"_input.checked === true\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div class=\"area-input-checkbox\">\n <div class=\"form-control tc-form-control\">\n <label>\n {{ item.placeholder }}\n <input \n #_input\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\n name=\"input_{{i+1}}\" \n type=\"checkbox\" \n (change)=\"searchIn(item, _input.checked)\"> \n </label>\n </div> \n </div>\n </div>\n\n </ng-container>\n\n\n </ng-container>\n\n <div class=\"text-right mb-1 mr-1\" *ngIf=\"useButtonSubmit\">\n <button type=\"button\" class=\"tc-btn btn-new-grey\" (click)=\"toSubmit()\" >{{ submitText }}&nbsp;<i class=\"fas fa-filter icon-filter\"></i></button>\n </div>\n\n</div>\n\n<!-- <pre>{{ inputs | json }}</pre> -->\n <!-- <pre> {{ data | json }} </pre> -->\n<!-- \n<p>FILTERS</p>\n<pre> {{ filters | json }}</pre> -->", styles: [".box-filter-input{display:inline-grid;padding:10px 5px;position:relative}.area-filter{border:1px solid #eeeeee;border-radius:5px;margin-bottom:5px}.btn-clear-filter-text{position:absolute;right:8px;top:38px;background-color:#fff;border:none;cursor:pointer;color:#aaa}.to-hide{display:none}.icon-filter{color:#ccc}.to-active{color:var(--verde)}.area-input-checkbox label{cursor:pointer;margin-bottom:0;color:#9f9f9f}.m-description{margin-bottom:3px}input{color:#535353}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.TCloudUiDatepickerTimeComponent, selector: "tcloud-ui-datepicker-time", inputs: ["ngModel"], outputs: ["ngModelChange", "onChange", "eventChange"] }] });
366
+ TCloudUiFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiFiltersComponent, selector: "tcloud-ui-filters", inputs: { data: "data", filters: "filters", submitText: "submitText", useOnChangeSubmit: "useOnChangeSubmit", useButtonSubmit: "useButtonSubmit", useNormalizeCaseSensitive: "useNormalizeCaseSensitive" }, outputs: { result: "result", onFilter: "onFilter", onChange: "onChange", onSubmit: "onSubmit" }, viewQueries: [{ propertyName: "_formulario", first: true, predicate: ["_formulario"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"show_filters\" class=\"area-filter\">\n <ng-container *ngFor=\"let item of filters; let i = index\">\n\n <ng-container *ngIf=\"!item.type || (item.type && item.type !== 'boolean')\">\n \n <div class=\"box-filter-input\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\n\n <ng-container *ngIf=\"item.type === 'datetime-local'\">\n <div class=\"m-description\"><i [class.to-active]=\"(datepickers[i] !== undefined && datepickers[i] !== null && datepickers[i] !== '')\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div>\n <tcloud-ui-datepicker-time #_input [(ngModel)]=\"datepickers[i]\" name=\"input_{{i+1}}\" (eventChange)=\"searchIn(item, _input, 'teste')\" > </tcloud-ui-datepicker-time>\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"!(datepickers[i] !== undefined && datepickers[i] !== null && datepickers[i] !== '')\" (click)=\"searchIn(item, null); item.searchText = undefined; datepickers[i] = ''\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div> \n </ng-container>\n \n <ng-container *ngIf=\"item.type !== 'select' && item.type !== 'datetime-local'\">\n <div class=\"m-description\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div>\n <input \n #_input\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\n name=\"input_{{i+1}}\" \n type=\"{{ (item.type === 'number') ? 'text' : item.type }}\" \n class=\"form-control tc-form-control\" \n (keyup)=\"searchIn(item, $event)\"> \n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"_input.value === ''\" (click)=\"searchIn(item, null); _input.value = ''\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.type === 'select' && item.data && (item.data).length > 0\" >\n <div class=\"m-description\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div>\n <select \n #_input\n name=\"input_{{i+1}}\" \n class=\"form-control tc-form-control\" \n (change)=\"searchIn(item, $event)\">\n <option [ngValue]=\"\"></option>\n <ng-container *ngFor=\"let v of item.data\">\n <option [value]=\"v.value\">{{ v.description }}</option>\n </ng-container>\n </select>\n <!-- <button class=\"btn-clear-filter-text\" [class.to-hide]=\"_input.value === ''\" (click)=\"searchIn(item, null); _input.value = ''\">\n <i class=\"fas fa-times\"></i>\n </button> -->\n </div>\n </ng-container>\n\n </div>\n\n\n \n </ng-container>\n\n <ng-container *ngIf=\"item.type && item.type === 'boolean'\">\n \n <div class=\"box-filter-input\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\n <div class=\"m-description\"><i [class.to-active]=\"_input.checked === true\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div class=\"area-input-checkbox\">\n <div class=\"form-control tc-form-control\">\n <label>\n {{ item.placeholder }}\n <input \n #_input\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\n name=\"input_{{i+1}}\" \n type=\"checkbox\" \n (change)=\"searchIn(item, _input.checked)\"> \n </label>\n </div> \n </div>\n </div>\n\n </ng-container>\n\n\n </ng-container>\n\n <div class=\"text-right mb-1 mr-1\" *ngIf=\"useButtonSubmit\">\n <button type=\"button\" class=\"tc-btn btn-new-grey\" (click)=\"toSubmit()\" >{{ submitText }}&nbsp;<i class=\"fas fa-filter icon-filter\"></i></button>\n </div>\n\n</div>\n\n<!-- <pre>{{ inputs | json }}</pre> -->\n <!-- <pre> {{ data | json }} </pre> -->\n<!-- \n<p>FILTERS</p>\n<pre> {{ filters | json }}</pre> -->", styles: [".box-filter-input{display:inline-grid;padding:10px 5px;position:relative}.area-filter{border:1px solid #eeeeee;border-radius:5px;margin-bottom:5px}.btn-clear-filter-text{position:absolute;right:8px;top:38px;background-color:#fff;border:none;cursor:pointer;color:#aaa}.to-hide{display:none}.icon-filter{color:#ccc}.to-active{color:var(--verde)}.area-input-checkbox label{cursor:pointer;margin-bottom:0;color:#9f9f9f}.m-description{margin-bottom:3px}input{color:#535353}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.TCloudUiDatepickerTimeComponent, selector: "tcloud-ui-datepicker-time", inputs: ["ngModel"], outputs: ["ngModelChange", "onChange", "eventChange"] }] });
367
367
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiFiltersComponent, decorators: [{
368
368
  type: Component,
369
- args: [{ selector: 'tcloud-ui-filters', template: "<div *ngIf=\"show_filters\" class=\"area-filter\">\n <ng-container *ngFor=\"let item of filters; let i = index\">\n\n <ng-container *ngIf=\"!item.type || (item.type && item.type !== 'boolean')\">\n \n <div class=\"box-filter-input\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\n\n <ng-container *ngIf=\"item.type === 'datetime-local'\">\n <div class=\"m-description\"><i [class.to-active]=\"(datepickers[i] !== undefined && datepickers[i] !== null && datepickers[i] !== '')\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div>\n <tcloud-ui-datepicker-time #_input [(ngModel)]=\"datepickers[i]\" name=\"input_{{i+1}}\" (eventChange)=\"searchIn(item, _input, 'teste')\" > </tcloud-ui-datepicker-time>\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"!(datepickers[i] !== undefined && datepickers[i] !== null && datepickers[i] !== '')\" (click)=\"searchIn(item, null); item.searchText = undefined; datepickers[i] = ''\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div> \n </ng-container>\n \n <ng-container *ngIf=\"item.type !== 'select' && item.type !== 'datetime-local'\">\n <div class=\"m-description\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div>\n <input \n #_input\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\n name=\"input_{{i+1}}\" \n type=\"{{ (item.type === 'number') ? 'text' : item.type }}\" \n class=\"form-control tc-form-control\" \n (keyup)=\"searchIn(item, $event)\"> \n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"_input.value === ''\" (click)=\"searchIn(item, null); _input.value = ''\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.type === 'select' && item.data && (item.data).length > 0\" >\n <div class=\"m-description\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div>\n <select \n #_input\n name=\"input_{{i+1}}\" \n class=\"form-control tc-form-control\" \n (change)=\"searchIn(item, $event)\">\n <option [ngValue]=\"\"></option>\n <ng-container *ngFor=\"let v of item.data\">\n <option [ngValue]=\"v.value\">{{ v.description }}</option>\n </ng-container>\n </select>\n <!-- <button class=\"btn-clear-filter-text\" [class.to-hide]=\"_input.value === ''\" (click)=\"searchIn(item, null); _input.value = ''\">\n <i class=\"fas fa-times\"></i>\n </button> -->\n </div>\n </ng-container>\n\n </div>\n\n\n \n </ng-container>\n\n <ng-container *ngIf=\"item.type && item.type === 'boolean'\">\n \n <div class=\"box-filter-input\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\n <div class=\"m-description\"><i [class.to-active]=\"_input.checked === true\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div class=\"area-input-checkbox\">\n <div class=\"form-control tc-form-control\">\n <label>\n {{ item.placeholder }}\n <input \n #_input\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\n name=\"input_{{i+1}}\" \n type=\"checkbox\" \n (change)=\"searchIn(item, _input.checked)\"> \n </label>\n </div> \n </div>\n </div>\n\n </ng-container>\n\n\n </ng-container>\n\n <div class=\"text-right mb-1 mr-1\" *ngIf=\"useButtonSubmit\">\n <button type=\"button\" class=\"tc-btn btn-new-grey\" (click)=\"toSubmit()\" >{{ submitText }}&nbsp;<i class=\"fas fa-filter icon-filter\"></i></button>\n </div>\n\n</div>\n\n<!-- <pre>{{ inputs | json }}</pre> -->\n <!-- <pre> {{ data | json }} </pre> -->\n<!-- \n<p>FILTERS</p>\n<pre> {{ filters | json }}</pre> -->", styles: [".box-filter-input{display:inline-grid;padding:10px 5px;position:relative}.area-filter{border:1px solid #eeeeee;border-radius:5px;margin-bottom:5px}.btn-clear-filter-text{position:absolute;right:8px;top:38px;background-color:#fff;border:none;cursor:pointer;color:#aaa}.to-hide{display:none}.icon-filter{color:#ccc}.to-active{color:var(--verde)}.area-input-checkbox label{cursor:pointer;margin-bottom:0;color:#9f9f9f}.m-description{margin-bottom:3px}input{color:#535353}\n"] }]
369
+ args: [{ selector: 'tcloud-ui-filters', template: "<div *ngIf=\"show_filters\" class=\"area-filter\">\n <ng-container *ngFor=\"let item of filters; let i = index\">\n\n <ng-container *ngIf=\"!item.type || (item.type && item.type !== 'boolean')\">\n \n <div class=\"box-filter-input\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\n\n <ng-container *ngIf=\"item.type === 'datetime-local'\">\n <div class=\"m-description\"><i [class.to-active]=\"(datepickers[i] !== undefined && datepickers[i] !== null && datepickers[i] !== '')\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div>\n <tcloud-ui-datepicker-time #_input [(ngModel)]=\"datepickers[i]\" name=\"input_{{i+1}}\" (eventChange)=\"searchIn(item, _input, 'teste')\" > </tcloud-ui-datepicker-time>\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"!(datepickers[i] !== undefined && datepickers[i] !== null && datepickers[i] !== '')\" (click)=\"searchIn(item, null); item.searchText = undefined; datepickers[i] = ''\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div> \n </ng-container>\n \n <ng-container *ngIf=\"item.type !== 'select' && item.type !== 'datetime-local'\">\n <div class=\"m-description\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div>\n <input \n #_input\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\n name=\"input_{{i+1}}\" \n type=\"{{ (item.type === 'number') ? 'text' : item.type }}\" \n class=\"form-control tc-form-control\" \n (keyup)=\"searchIn(item, $event)\"> \n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"_input.value === ''\" (click)=\"searchIn(item, null); _input.value = ''\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"item.type === 'select' && item.data && (item.data).length > 0\" >\n <div class=\"m-description\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div>\n <select \n #_input\n name=\"input_{{i+1}}\" \n class=\"form-control tc-form-control\" \n (change)=\"searchIn(item, $event)\">\n <option [ngValue]=\"\"></option>\n <ng-container *ngFor=\"let v of item.data\">\n <option [value]=\"v.value\">{{ v.description }}</option>\n </ng-container>\n </select>\n <!-- <button class=\"btn-clear-filter-text\" [class.to-hide]=\"_input.value === ''\" (click)=\"searchIn(item, null); _input.value = ''\">\n <i class=\"fas fa-times\"></i>\n </button> -->\n </div>\n </ng-container>\n\n </div>\n\n\n \n </ng-container>\n\n <ng-container *ngIf=\"item.type && item.type === 'boolean'\">\n \n <div class=\"box-filter-input\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\n <div class=\"m-description\"><i [class.to-active]=\"_input.checked === true\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\n <div class=\"area-input-checkbox\">\n <div class=\"form-control tc-form-control\">\n <label>\n {{ item.placeholder }}\n <input \n #_input\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\n name=\"input_{{i+1}}\" \n type=\"checkbox\" \n (change)=\"searchIn(item, _input.checked)\"> \n </label>\n </div> \n </div>\n </div>\n\n </ng-container>\n\n\n </ng-container>\n\n <div class=\"text-right mb-1 mr-1\" *ngIf=\"useButtonSubmit\">\n <button type=\"button\" class=\"tc-btn btn-new-grey\" (click)=\"toSubmit()\" >{{ submitText }}&nbsp;<i class=\"fas fa-filter icon-filter\"></i></button>\n </div>\n\n</div>\n\n<!-- <pre>{{ inputs | json }}</pre> -->\n <!-- <pre> {{ data | json }} </pre> -->\n<!-- \n<p>FILTERS</p>\n<pre> {{ filters | json }}</pre> -->", styles: [".box-filter-input{display:inline-grid;padding:10px 5px;position:relative}.area-filter{border:1px solid #eeeeee;border-radius:5px;margin-bottom:5px}.btn-clear-filter-text{position:absolute;right:8px;top:38px;background-color:#fff;border:none;cursor:pointer;color:#aaa}.to-hide{display:none}.icon-filter{color:#ccc}.to-active{color:var(--verde)}.area-input-checkbox label{cursor:pointer;margin-bottom:0;color:#9f9f9f}.m-description{margin-bottom:3px}input{color:#535353}\n"] }]
370
370
  }], ctorParameters: function () { return [{ type: i1.DatePipe }]; }, propDecorators: { _formulario: [{
371
371
  type: ViewChild,
372
372
  args: ['_formulario']
@@ -391,4 +391,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
391
391
  }], onSubmit: [{
392
392
  type: Output
393
393
  }] } });
394
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwSCxPQUFPLEVBQUUsV0FBVyxFQUFpQixhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFPaEYsTUFBTSxPQUFPLHdCQUF3QjtJQWtDbkMsWUFDVSxRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBakM1QixnQkFBVyxHQUFHLEVBQVMsQ0FBQztRQUl4QixXQUFNLEdBQWEsRUFBRSxDQUFDO1FBRXRCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBZ0JyQixlQUFVLEdBQVcsU0FBUyxDQUFDO1FBQy9CLHNCQUFpQixHQUFZLElBQUksQ0FBQyxDQUFDLDJFQUEyRTtRQUM5RyxvQkFBZSxHQUFZLEtBQUssQ0FBQyxDQUFDLG1GQUFtRjtRQUNySCw4QkFBeUIsR0FBWSxJQUFJLENBQUMsQ0FBQyxvRkFBb0Y7UUFFOUgsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDakMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDbkMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDbkMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFzSTdD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akIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRDQ29uZGl0aW9uLCBUQ0RhdGFGaWx0ZXJzLCBUQ0ZpbHRlcnNUeXBlIH0gZnJvbSAnLi90Y2xvdWQtdWktZmlsdGVycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RjbG91ZC11aS1maWx0ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RjbG91ZC11aS1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUQ2xvdWRVaUZpbHRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgZGF0ZXBpY2tlcnMgPSBbXSBhcyBhbnk7XG5cbiAgQFZpZXdDaGlsZCgnX2Zvcm11bGFyaW8nKSAgX2Zvcm11bGFyaW86IE5nRm9ybSB8IHVuZGVmaW5lZDtcblxuICBpbnB1dHM6IHN0cmluZ1tdID0gW107XG5cbiAgc2hvd19maWx0ZXJzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgc2VhcmNoX2RhdGE6IGFueSB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIF9kYXRhOiBhbnkgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHNldCBkYXRhKGRhdGE6IGFueSl7XG4gICAgLy8gdGhpcy5fZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICB9XG4gIGdldCBkYXRhKCk6IGFueXsgcmV0dXJuIHRoaXMuX2RhdGE7IH1cblxuICBwcml2YXRlIF9maWx0ZXJzOiBUQ0RhdGFGaWx0ZXJzIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBzZXQgZmlsdGVycyhmaWx0ZXJzOiBhbnkpe1xuICAgIC8vdGhpcy5fZmlsdGVycyA9IGZpbHRlcnM7XG4gIH1cbiAgZ2V0IGZpbHRlcnMoKTogYW55eyByZXR1cm4gdGhpcy5fZmlsdGVyczsgfVxuXG4gIEBJbnB1dCgpIHN1Ym1pdFRleHQ6IHN0cmluZyA9ICdGaWx0cmFyJztcbiAgQElucHV0KCkgdXNlT25DaGFuZ2VTdWJtaXQ6IGJvb2xlYW4gPSB0cnVlOyAvLyB1c2VPbkNoYW5nZVN1Ym1pdCAtIFN1Ym1pdCBhdXRvbWF0aWNvIHF1YW5kbyBmb3IgYWx0ZXJhZG8gcXVhbnF1ZXIgaW5wdXRcbiAgQElucHV0KCkgdXNlQnV0dG9uU3VibWl0OiBib29sZWFuID0gZmFsc2U7IC8vIHVzZUJ1dHRvblN1Ym1pdCAtIEV4aWJlIHVtIGJvdMOjbyBkZSBzdWJtaXQgZSBuw6NvIGV4ZWN1dGEgYSBidXNjYSBhdXRvbWF0aWNhbWVudGVcbiAgQElucHV0KCkgdXNlTm9ybWFsaXplQ2FzZVNlbnNpdGl2ZTogYm9vbGVhbiA9IHRydWU7IC8vIHVzZU5vcm1hbGl6ZUNhc2VTZW5zaXRpdmUgLSBOw6NvIHZhbGlkYSBjYWl4YSBhbHRhIG91IGJhaXhhIGUgY2FyYWN0ZXJlcyBlc3BlY2lhaXNcblxuICBAT3V0cHV0KCkgcmVzdWx0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvbkZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRlcGlwZTogRGF0ZVBpcGVcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIC8vIGNoaWxkIGlzIHNldFxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykgeyAgXG4gICAgXG4gICAgaWYoIGNoYW5nZXMgJiYgY2hhbmdlc1snZGF0YSddICl7XG4gICAgICBjb25zdCBkYXRhID0gY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZTtcbiAgICAgIGlmKCB0aGlzLl9kYXRhICE9PSBkYXRhICl7XG4gICAgICAgIHRoaXMuX2RhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgICAgdGhpcy5zZWFyY2hfZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgICB0aGlzLmluaXQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiggY2hhbmdlcyAmJiBjaGFuZ2VzWydmaWx0ZXJzJ10gKXtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBjaGFuZ2VzWydmaWx0ZXJzJ10uY3VycmVudFZhbHVlO1xuICAgICAgaWYoIHRoaXMuX2ZpbHRlcnMgIT09IGZpbHRlcnMgKXtcbiAgICAgICAgdGhpcy5fZmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZmlsdGVycykpO1xuICAgICAgICB0aGlzLmluaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXQoKXtcbiAgICBpZiggdGhpcy5kYXRhICYmIHRoaXMuZmlsdGVycyApe1xuICAgICAgdGhpcy5zaG93X2ZpbHRlcnMgPSB0cnVlO1xuICAgICAgaWYoIHRoaXMuZmlsdGVycyAmJiAodGhpcy5maWx0ZXJzKS5sZW5ndGggPiAwICl7XG4gICAgICAgICh0aGlzLmZpbHRlcnMpLmZvckVhY2goKGZpbHRlcjogVENEYXRhRmlsdGVycykgPT4geyAgXG4gICAgICAgICAgXG4gICAgICAgICAgY29uc29sZS5sb2coJ2luaXQgZmlsdGVyJywgZmlsdGVyKTtcbiAgICAgICAgICBcbiAgICAgICAgICB0aGlzLnNlYXJjaEluKGZpbHRlciwgJ3N5bmMnKTtcbiAgICAgICAgfSk7XG4gICAgICB9IFxuICAgICAgLy8gdGhpcy50b1Jlc3VsdCgpO1xuICAgICAgaWYoICF0aGlzLnVzZU9uQ2hhbmdlU3VibWl0ICl7XG4gICAgICAgIHRoaXMucmVzdWx0LmVtaXQodGhpcy5kYXRhKTtcbiAgICAgIH1cblxuICAgICAgaWYoIHRoaXMudXNlT25DaGFuZ2VTdWJtaXQgfHwgdGhpcy51c2VCdXR0b25TdWJtaXQgKXtcbiAgICAgICAgdGhpcy5zdGFydF9maWx0ZXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZSh0ZXh0OiBhbnkpOiBzdHJpbmd7XG4gICAgaWYoIHRoaXMudXNlTm9ybWFsaXplQ2FzZVNlbnNpdGl2ZSApe1xuICAgICAgY29uc3QgdiA9ICggKCAoYCR7dGV4dH1gKS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csIFwiXCIpICkudHJpbSgpICkudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIHRvU3VibWl0KCl7XG4gICAgaWYoIHRoaXMuZmlsdGVycyAmJiAodGhpcy5maWx0ZXJzKS5sZW5ndGggPiAwICl7XG4gICAgICB0aGlzLmluaXQoKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0U3VibWl0RmlsdGVycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U3VibWl0RmlsdGVycygpe1xuICAgIGxldCBmaWx0ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZpbHRlcnMpKTtcbiAgICBpZiggZmlsdGVycyAmJiAoZmlsdGVycykubGVuZ3RoID4gMCApe1xuICAgICAgKGZpbHRlcnMpLmZvckVhY2goKGZpbHRlcjogVENEYXRhRmlsdGVycywgaTogbnVtYmVyKSA9PiB7XG5cbiAgICAgICAgaWYoIGZpbHRlci53aWR0aCApeyBkZWxldGUoZmlsdGVyc1tpXS53aWR0aCk7IH1cbiAgICAgICAgaWYoIGZpbHRlci5wbGFjZWhvbGRlciApeyBkZWxldGUoZmlsdGVyc1tpXS5wbGFjZWhvbGRlcik7IH1cbiAgICAgICAgaWYoIGZpbHRlci5kZXNjcmlwdGlvbiApeyBkZWxldGUoZmlsdGVyc1tpXS5kZXNjcmlwdGlvbik7IH1cblxuICAgICAgICBpZiggKCFmaWx0ZXIuc2VhcmNoVGV4dCB8fCBmaWx0ZXIuc2VhcmNoVGV4dCAmJiBmaWx0ZXIuc2VhcmNoVGV4dCA9PT0gJycpICYmIGZpbHRlci50eXBlICE9PSBcImJvb2xlYW5cIiApe1xuICAgICAgICAgIGRlbGV0ZShmaWx0ZXJzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLm9uU3VibWl0LmVtaXQoZmlsdGVycyk7XG4gIH1cblxuXG4gIHByaXZhdGUgY29sbGVjdGlvbkZpbmQob2JqOiBhbnksIHBhdGg6IGFueSk6IGFueSB7XG4gICAgY29uc3QgcGF0aEFycmF5ID0gcGF0aC5zcGxpdChcIi5cIik7XG4gICAgbGV0IGN1cnJlbnQgPSBvYmo7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IHBhdGhBcnJheVtpXTtcblxuICAgICAgaWYgKGtleS5pbmNsdWRlcygnWycpICYmIGtleS5pbmNsdWRlcygnXScpKSB7XG4gICAgICAgIGNvbnN0IG5leHRLZXlzID0gcGF0aEFycmF5LnNsaWNlKGkgKyAxKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBrZXkuc3Vic3RyaW5nKGtleS5pbmRleE9mKCdbJykgKyAxLCBrZXkuaW5kZXhPZignXScpKTtcbiAgICAgICAgY29uc3QgYXJyYXlLZXkgPSBrZXkuc3Vic3RyaW5nKDAsIGtleS5pbmRleE9mKCdbJykpO1xuICAgICAgICBpZiggY3VycmVudCAmJiBjdXJyZW50W2FycmF5S2V5XSAmJiBjdXJyZW50W2FycmF5S2V5XVtpbmRleF0gKXtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uRmluZChjdXJyZW50W2FycmF5S2V5XVtpbmRleF0sIG5leHRLZXlzLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG5cbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoXCJbXVwiKSkge1xuICAgICAgICBjb25zdCBhcnJheUtleSA9IGtleS5yZXBsYWNlKFwiW11cIiwgXCJcIik7XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2FycmF5S2V5XSB8fCBbXTtcbiAgICAgICAgY29uc3QgbmV4dEtleXMgPSBwYXRoQXJyYXkuc2xpY2UoaSArIDEpO1xuICAgICAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY3VycmVudC5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmNvbGxlY3Rpb25GaW5kKGN1cnJlbnRbal0sIG5leHRLZXlzLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpOyBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmKCAhY3VycmVudCB8fCAoY3VycmVudCAmJiAhY3VycmVudFtrZXldKSApe1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnRba2V5XTtcbiAgICAgICAgaWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cbiAgICBcbiAgc3RhcnRfZmlsdGVyX2ZjOiBhbnkgPSB1bmRlZmluZWQ7XG5cblxuICBzZWFyY2hJbihpdGVtOiBUQ0RhdGFGaWx0ZXJzLCBldmVudD86IGFueSwgdmFsdWU/OiBhbnkpe1xuXG4gICAgdGhpcy5zdGFydF9maWx0ZXJfZmMgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiggdmFsdWUgKXtcbiAgICAgIGNvbnNvbGUubG9nKCdzZWFyY2hJbiBpdGVtJywgaXRlbSk7XG4gICAgICBjb25zb2xlLmxvZygnc2VhcmNoSW4gZXZlbnQnLCBldmVudCk7XG4gICAgfVxuXG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuXG4gICAgaWYoIGV2ZW50ID09PSAnc3luYycgJiYgaXNWYWxpZCApe1xuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIGlmKCB0eXBlb2YgZXZlbnQgPT09ICdib29sZWFuJyAmJiBpc1ZhbGlkICl7XG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICBpdGVtLnNlYXJjaFRleHQgPSBldmVudDtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBpZiggZXZlbnQgPT09IHVuZGVmaW5lZCB8fCBldmVudCA9PT0gbnVsbCB8fCBldmVudCA9PT0gJycgJiYgaXNWYWxpZCApe1xuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYoIGV2ZW50Py5kYXRlcGlja2VydGltZSAgJiYgaXNWYWxpZCApe1xuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5sb2coJ2lzIGEgZGF0ZScsIGV2ZW50Py5pbm5lclZhbHVlKTtcbiAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9IGV2ZW50Py5pbm5lclZhbHVlO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIGlmKGV2ZW50Py50YXJnZXQ/LnZhbHVlICYmIGlzVmFsaWQgKXtcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9IHRoaXMubm9ybWFsaXplKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYoZXZlbnQ/LnRhcmdldD8udmFsdWUgPT09ICcnICYmIGlzVmFsaWQgKXtcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cbiAgICBcbiAgICBpZiggdGhpcy51c2VPbkNoYW5nZVN1Ym1pdCApeyAgICAgIFxuICAgICAgdGhpcy5zdGFydF9maWx0ZXJfZmMgPSB0aGlzLnN0YXJ0X2ZpbHRlcigpO1xuICAgIH1cblxuICAgIGlmKCAhdGhpcy51c2VCdXR0b25TdWJtaXQgKXtcbiAgICAgIHRoaXMuZW1pdFN1Ym1pdEZpbHRlcnMoKTtcbiAgICB9IFxuICB9XG5cblxuICAvLyBzZWFyY2hJbihpdGVtOiBUQ0RhdGFGaWx0ZXJzLCBldmVudD86IGFueSwgdmFsdWU/OiBhbnkpe1xuXG4gIC8vICAgaWYoIHZhbHVlICl7XG4gIC8vICAgICBjb25zb2xlLmxvZygnc2VhcmNoSW4gaXRlbScsIGl0ZW0pO1xuICAvLyAgICAgY29uc29sZS5sb2coJ3NlYXJjaEluIGV2ZW50JywgZXZlbnQpO1xuICAvLyAgIH1cbiAgICBcbiAgICBcbiAgLy8gICB0aGlzLnN0YXJ0X2ZpbHRlcl9mYyA9IHVuZGVmaW5lZDtcblxuICAvLyAgIGlmKCBldmVudCAhPT0gdW5kZWZpbmVkICl7XG4gIC8vICAgICBpZiggdHlwZW9mIGV2ZW50ID09PSAnYm9vbGVhbicgKXtcbiAgLy8gICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gZXZlbnQ7XG4gIC8vICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgLy8gICAgIH1lbHNle1xuICAvLyAgICAgICBpZiggZXZlbnQgPT09IG51bGwgKXtcbiAgLy8gICAgICAgICBpdGVtLnNlYXJjaFRleHQgPSAnJztcbiAgLy8gICAgICAgfWVsc2V7XG5cbiAgLy8gICAgICAgICBpZiggZXZlbnQuZGVmYXVsdFZhbHVlICl7XG4gIC8vICAgICAgICAgICBpdGVtLnNlYXJjaFRleHQgPSBldmVudC5kZWZhdWx0VmFsdWU7XG4gIC8vICAgICAgICAgfWVsc2UgaWYoIGV2ZW50LnRhcmdldCApe1xuICAvLyAgICAgICAgICAgaWYoIGV2ZW50LnRhcmdldC52YWx1ZUFzRGF0ZSApe1xuICAvLyAgICAgICAgICAgICBpdGVtLnNlYXJjaFRleHQgPSBldmVudD8udGFyZ2V0Py52YWx1ZUFzRGF0ZTtcbiAgLy8gICAgICAgICAgIH1lbHNle1xuICAvLyAgICAgICAgICAgICBpZiggZXZlbnQudGFyZ2V0LnZhbHVlICl7XG4gIC8vICAgICAgICAgICAgICAgLy8gaXRlbS5zZWFyY2hUZXh0ID0gKGV2ZW50LnRhcmdldC52YWx1ZSkudG9VcHBlckNhc2UoKTtcbiAgLy8gICAgICAgICAgICAgICBpdGVtLnNlYXJjaFRleHQgPSB0aGlzLm5vcm1hbGl6ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgICAgIFxuICAvLyAgICAgICAgICAgICB9ICAgICAgICAgICAgXG4gIC8vICAgICAgICAgICB9XG4gIC8vICAgICAgICAgfSBcbiAgLy8gICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cbiAgLy8gICB9XG5cbiAgLy8gICBpZiggdGhpcy51c2VPbkNoYW5nZVN1Ym1pdCApeyAgICAgIFxuICAvLyAgICAgdGhpcy5zdGFydF9maWx0ZXJfZmMgPSB0aGlzLnN0YXJ0X2ZpbHRlcigpO1xuICAvLyAgIH1cblxuICAvLyAgIGlmKCAhdGhpcy51c2VCdXR0b25TdWJtaXQgKXtcbiAgLy8gICAgIHRoaXMuZW1pdFN1Ym1pdEZpbHRlcnMoKTtcbiAgLy8gICB9IFxuICAvLyB9XG4gIFxuICBzdGFydF9maWx0ZXIoKTogdm9pZHtcbiAgICBmb3IoIGxldCBpID0gMDsgaSA8ICh0aGlzLmRhdGEpLmxlbmd0aDsgaSsrICl7XG5cbiAgICAgIHRoaXMuc2V0RGF0YUluZGV4KGksIHRydWUpO1xuXG4gICAgICBmb3IoIGxldCBqID0gMDsgaiA8ICh0aGlzLmZpbHRlcnMpLmxlbmd0aDsgaisrICl7ICAgICAgICBcbiAgICAgICAgY29uc3QgZmlsdGVyX2l0ZW0gPSB0aGlzLmZpbHRlcnNbal07ICAgXG5cbiAgICAgICAgaWYoIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgJiYgdHlwZW9mIChmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gJ3N0cmluZycgJiYgZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCAhPT0gJycgJiYgZmlsdGVyX2l0ZW0udHlwZSAhPT0gVENGaWx0ZXJzVHlwZS5udW1iZXIgKXtcbiAgICAgICAgICBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ID0gdGhpcy5ub3JtYWxpemUoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCk7ICAgICAgICBcbiAgICAgICAgICBsZXQgaXRlbV92YWx1ZSA9IHRoaXMuY29sbGVjdGlvbkZpbmQodGhpcy5kYXRhW2ldLCBmaWx0ZXJfaXRlbS5zZWFyY2hJbik7XG4gICAgICAgICAgaWYoIGl0ZW1fdmFsdWUgKXtcbiAgICAgICAgICAgIGl0ZW1fdmFsdWUgPSB0aGlzLm5vcm1hbGl6ZShpdGVtX3ZhbHVlKTsgICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKCAhKCBpdGVtX3ZhbHVlLmluY2x1ZGVzKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpIHx8IGl0ZW1fdmFsdWUgPT09IGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgKSApe1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IFxuICAgICAgICBcblxuICAgICAgICBpZiggZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCAmJiAgZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKCBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0LnZhbHVlT2YoKSkgJiYgZmlsdGVyX2l0ZW0udHlwZSA9PT0gVENGaWx0ZXJzVHlwZS5kYXRldGltZSApe1xuICAgICAgICAgIGxldCBpdGVtX3ZhbHVlOiBhbnkgPSB0aGlzLmNvbGxlY3Rpb25GaW5kKHRoaXMuZGF0YVtpXSwgZmlsdGVyX2l0ZW0uc2VhcmNoSW4pO1xuXG4gICAgICAgICAgdHJ5IHsgaXRlbV92YWx1ZSA9IG5ldyBEYXRlKGl0ZW1fdmFsdWUpOyB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgICBpZiggaXRlbV92YWx1ZSAmJiAgaXRlbV92YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKCBpdGVtX3ZhbHVlLnZhbHVlT2YoKSkgKXtcbiAgICAgICAgICAgIGxldCBpc19hY2NlcHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGR0X3RhcmdldCAgID0gKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpLmdldFRpbWUoKSArICgzICogNjAgKiA2MCAqIDEwMDApO1xuICAgICAgICAgICAgY29uc3QgZHRfY3VycmVudCAgPSAoaXRlbV92YWx1ZSkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgaWYoIGZpbHRlcl9pdGVtLmNvbmRpdGlvbiApe1xuICAgICAgICAgICAgICBzd2l0Y2ggKGZpbHRlcl9pdGVtLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24uZ3Q6ICAgIGlzX2FjY2VwdCA9ICEoICsoZHRfdGFyZ2V0KSA+ICArKGR0X2N1cnJlbnQpICk7ICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmx0OiAgICBpc19hY2NlcHQgPSAhKCArKGR0X3RhcmdldCkgPCAgKyhkdF9jdXJyZW50KSApOyAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5ndGU6ICAgaXNfYWNjZXB0ID0gISggKyhkdF90YXJnZXQpID49ICsoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24ubHRlOiAgIGlzX2FjY2VwdCA9ICEoICsoZHRfdGFyZ2V0KSA8PSArKGR0X2N1cnJlbnQpICk7ICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmVxdWFsOiBpc19hY2NlcHQgPSAhKCArKGR0X3RhcmdldCkgPT09ICsoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGlzX2FjY2VwdCA9ICEoICsoZHRfdGFyZ2V0KSA9PSArKGR0X2N1cnJlbnQpICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICBpc19hY2NlcHQgPSAhKCArKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpID09PSArKGl0ZW1fdmFsdWUpICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiggIWlzX2FjY2VwdCApe1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgXG5cbiAgICAgICAgaWYoIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgJiYgdHlwZW9mICsoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09ICdudW1iZXInICYmIGZpbHRlcl9pdGVtLnR5cGUgPT09IFRDRmlsdGVyc1R5cGUubnVtYmVyICl7XG5cbiAgICAgICAgICBcblxuICAgICAgICAgIGxldCBpdGVtX3ZhbHVlID0gdGhpcy5jb2xsZWN0aW9uRmluZCh0aGlzLmRhdGFbaV0sIGZpbHRlcl9pdGVtLnNlYXJjaEluKTtcbiAgICAgICAgICBpZiggdHlwZW9mICsoaXRlbV92YWx1ZSkgPT09ICdudW1iZXInICl7ICAgICAgICAgICAgXG4gICAgICAgICAgICBsZXQgaXNfYWNjZXB0ID0gZmFsc2U7XG4gICAgICAgICAgICBpZiggZmlsdGVyX2l0ZW0uY29uZGl0aW9uICl7XG4gICAgICAgICAgICAgIHN3aXRjaCAoZmlsdGVyX2l0ZW0uY29uZGl0aW9uKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5ndDogICAgaXNfYWNjZXB0ID0gISggKyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA+ICArKGl0ZW1fdmFsdWUpICk7ICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmx0OiAgICBpc19hY2NlcHQgPSAhKCArKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpIDwgICsoaXRlbV92YWx1ZSkgKTsgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24uZ3RlOiAgIGlzX2FjY2VwdCA9ICEoICsoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCktMC4xID49ICsoaXRlbV92YWx1ZSkgKTsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5sdGU6ICAgaXNfYWNjZXB0ID0gISggKyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSswLjEgPD0gKyhpdGVtX3ZhbHVlKSApOyAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5lcXVhbDogaXNfYWNjZXB0ID0gISggKyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gKyhpdGVtX3ZhbHVlKSApOyAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogaXNfYWNjZXB0ID0gISggKyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PSArKGl0ZW1fdmFsdWUpICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICBpc19hY2NlcHQgPSAhKCArKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpID09PSArKGl0ZW1fdmFsdWUpICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiggIWlzX2FjY2VwdCApe1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBcbiAgICAgICAgaWYoIHR5cGVvZiAoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09ICdib29sZWFuJyAmJiBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICl7XG4gICAgICAgICAgbGV0IGl0ZW1fdmFsdWU6IGFueSA9IHRoaXMuY29sbGVjdGlvbkZpbmQodGhpcy5kYXRhW2ldLCBmaWx0ZXJfaXRlbS5zZWFyY2hJbik7XG4gICAgICAgICAgXG4gICAgICAgICAgaWYoIGl0ZW1fdmFsdWUgJiYgKGl0ZW1fdmFsdWUpLmxlbmd0aCA+IDAgKXsgIFxuICAgICAgICAgICAgbGV0IHF0ZF9pc190cnVlID0gMDsgICAgICAgICAgXG4gICAgICAgICAgICBmb3IoIGxldCBpID0gMDsgaSA8ICgoaXRlbV92YWx1ZSkubGVuZ3RoKTsgaSsrICl7XG4gICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtX3ZhbHVlW2ldO1xuICAgICAgICAgICAgICBpZiggaXRlbSA9PT0gZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCApe1xuICAgICAgICAgICAgICAgIHF0ZF9pc190cnVlKys7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKCBxdGRfaXNfdHJ1ZSA9PT0gMCApe1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBpZiggISggaXRlbV92YWx1ZSA9PT0gZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCApICl7XG4gICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUluZGV4KGksIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9ICAgICAgICAgIFxuICAgICAgICB9XG4gICAgICBcbiAgICAgIH1cblxuICAgIH0gLy8gZW5kIGZvclxuICAgIFxuICAgIHRoaXMudG9SZXN1bHQoKTtcbiAgICAgIFxuICB9XG5cbiAgcHJpdmF0ZSB0b1Jlc3VsdCgpe1xuXG5cbiAgICBjb25zdCBzZWFyY2hfZGF0YSA9IFtdO1xuXG4gICAgbGV0IGlzX2ZpbHRlciA9IGZhbHNlO1xuICAgIGZvciggbGV0IGkgPSAwOyBpIDwgKHRoaXMuZmlsdGVycykubGVuZ3RoOyBpKysgKXtcbiAgICAgIGlmKCB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCAmJiB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCAhPT0gJycgKXtcbiAgICAgICAgaXNfZmlsdGVyID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiggaXNfZmlsdGVyICl7XG4gICAgICBmb3IoIGxldCBpID0gMDsgaSA8ICh0aGlzLmRhdGEpLmxlbmd0aDsgaSsrICl7XG4gICAgICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhW2ldICYmIHRoaXMuZGF0YVtpXVsndGNfZmlsdGVyX2FjY2VwdCddICl7XG4gICAgICAgICAgKHNlYXJjaF9kYXRhKS5wdXNoKHRoaXMuZGF0YVtpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMucmVzdWx0LmVtaXQoc2VhcmNoX2RhdGEpO1xuICAgICAgdGhpcy5vbkZpbHRlci5lbWl0KHsuLi50aGlzLmZpbHRlcnN9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlc3VsdC5lbWl0KHRoaXMuZGF0YSk7XG4gICAgdGhpcy5vbkZpbHRlci5lbWl0KHsuLi50aGlzLmZpbHRlcnN9KTtcbiAgfVxuXG4gIHNldERhdGFJbmRleChpbmRleDogbnVtYmVyLCB2YWx1ZTogYm9vbGVhbiApe1xuICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhW2luZGV4XSApe1xuICAgICAgdGhpcy5kYXRhW2luZGV4XVsndGNfZmlsdGVyX2FjY2VwdCddID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJzaG93X2ZpbHRlcnNcIiBjbGFzcz1cImFyZWEtZmlsdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJzOyBsZXQgaSA9IGluZGV4XCI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLnR5cGUgfHwgKGl0ZW0udHlwZSAmJiBpdGVtLnR5cGUgIT09ICdib29sZWFuJylcIj5cbiAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LWZpbHRlci1pbnB1dFwiIFtzdHlsZV09XCIoaXRlbS53aWR0aCAhPT0gJycpID8gJ3dpZHRoOicraXRlbS53aWR0aCA6ICcnXCI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlID09PSAnZGF0ZXRpbWUtbG9jYWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWRlc2NyaXB0aW9uXCI+PGkgW2NsYXNzLnRvLWFjdGl2ZV09XCIoZGF0ZXBpY2tlcnNbaV0gIT09IHVuZGVmaW5lZCAmJiBkYXRlcGlja2Vyc1tpXSAhPT0gbnVsbCAmJiBkYXRlcGlja2Vyc1tpXSAhPT0gJycpXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwO3t7IGl0ZW0uZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Y2xvdWQtdWktZGF0ZXBpY2tlci10aW1lICNfaW5wdXQgWyhuZ01vZGVsKV09XCJkYXRlcGlja2Vyc1tpXVwiIG5hbWU9XCJpbnB1dF97e2krMX19XCIgKGV2ZW50Q2hhbmdlKT1cInNlYXJjaEluKGl0ZW0sIF9pbnB1dCwgJ3Rlc3RlJylcIiA+IDwvdGNsb3VkLXVpLWRhdGVwaWNrZXItdGltZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2xlYXItZmlsdGVyLXRleHRcIiBbY2xhc3MudG8taGlkZV09XCIhKGRhdGVwaWNrZXJzW2ldICE9PSB1bmRlZmluZWQgJiYgZGF0ZXBpY2tlcnNbaV0gIT09IG51bGwgJiYgZGF0ZXBpY2tlcnNbaV0gIT09ICcnKVwiIChjbGljayk9XCJzZWFyY2hJbihpdGVtLCBudWxsKTsgaXRlbS5zZWFyY2hUZXh0ID0gdW5kZWZpbmVkOyBkYXRlcGlja2Vyc1tpXSA9ICcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlICE9PSAnc2VsZWN0JyAmJiBpdGVtLnR5cGUgIT09ICdkYXRldGltZS1sb2NhbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb25cIj48aSBbY2xhc3MudG8tYWN0aXZlXT1cIl9pbnB1dC52YWx1ZSAhPT0gJydcIiBjbGFzcz1cImZhcyBmYS1maWx0ZXIgaWNvbi1maWx0ZXJcIj48L2k+Jm5ic3A7e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICNfaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IChpdGVtLnBsYWNlaG9sZGVyICE9PSAnJykgPyBpdGVtLnBsYWNlaG9sZGVyIDogJycgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpbnB1dF97e2krMX19XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInt7IChpdGVtLnR5cGUgPT09ICdudW1iZXInKSA/ICd0ZXh0JyA6IGl0ZW0udHlwZSB9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHRjLWZvcm0tY29udHJvbFwiICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cInNlYXJjaEluKGl0ZW0sICRldmVudClcIj4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jbGVhci1maWx0ZXItdGV4dFwiIFtjbGFzcy50by1oaWRlXT1cIl9pbnB1dC52YWx1ZSA9PT0gJydcIiAoY2xpY2spPVwic2VhcmNoSW4oaXRlbSwgbnVsbCk7IF9pbnB1dC52YWx1ZSA9ICcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlID09PSAnc2VsZWN0JyAmJiBpdGVtLmRhdGEgJiYgKGl0ZW0uZGF0YSkubGVuZ3RoID4gMFwiID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb25cIj48aSBbY2xhc3MudG8tYWN0aXZlXT1cIl9pbnB1dC52YWx1ZSAhPT0gJydcIiBjbGFzcz1cImZhcyBmYS1maWx0ZXIgaWNvbi1maWx0ZXJcIj48L2k+Jm5ic3A7e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjX2lucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlucHV0X3t7aSsxfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB0Yy1mb3JtLWNvbnRyb2xcIiAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VhcmNoSW4oaXRlbSwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiXCI+PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdiBvZiBpdGVtLmRhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJ2LnZhbHVlXCI+e3sgdi5kZXNjcmlwdGlvbiB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJidG4tY2xlYXItZmlsdGVyLXRleHRcIiBbY2xhc3MudG8taGlkZV09XCJfaW5wdXQudmFsdWUgPT09ICcnXCIgKGNsaWNrKT1cInNlYXJjaEluKGl0ZW0sIG51bGwpOyBfaW5wdXQudmFsdWUgPSAnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgIFxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlICYmIGl0ZW0udHlwZSA9PT0gJ2Jvb2xlYW4nXCI+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3gtZmlsdGVyLWlucHV0XCIgW3N0eWxlXT1cIihpdGVtLndpZHRoICE9PSAnJykgPyAnd2lkdGg6JytpdGVtLndpZHRoIDogJydcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1kZXNjcmlwdGlvblwiPjxpIFtjbGFzcy50by1hY3RpdmVdPVwiX2lucHV0LmNoZWNrZWQgPT09IHRydWVcIiBjbGFzcz1cImZhcyBmYS1maWx0ZXIgaWNvbi1maWx0ZXJcIj48L2k+Jm5ic3A7e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmVhLWlucHV0LWNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGMtZm9ybS1jb250cm9sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5wbGFjZWhvbGRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI19pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IChpdGVtLnBsYWNlaG9sZGVyICE9PSAnJykgPyBpdGVtLnBsYWNlaG9sZGVyIDogJycgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWFyY2hJbihpdGVtLCBfaW5wdXQuY2hlY2tlZClcIj4gICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodCBtYi0xIG1yLTFcIiAqbmdJZj1cInVzZUJ1dHRvblN1Ym1pdFwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRjLWJ0biBidG4tbmV3LWdyZXlcIiAoY2xpY2spPVwidG9TdWJtaXQoKVwiID57eyBzdWJtaXRUZXh0IH19Jm5ic3A7PGkgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG48L2Rpdj5cblxuPCEtLSA8cHJlPnt7IGlucHV0cyB8IGpzb24gfX08L3ByZT4gLS0+XG4gICAgPCEtLSA8cHJlPiB7eyBkYXRhIHwganNvbiB9fSA8L3ByZT4gLS0+XG48IS0tIFxuPHA+RklMVEVSUzwvcD5cbjxwcmU+IHt7IGZpbHRlcnMgfCBqc29uIH19PC9wcmU+IC0tPiJdfQ==
394
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwSCxPQUFPLEVBQUUsV0FBVyxFQUFpQixhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFPaEYsTUFBTSxPQUFPLHdCQUF3QjtJQWtDbkMsWUFDVSxRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBakM1QixnQkFBVyxHQUFHLEVBQVMsQ0FBQztRQUl4QixXQUFNLEdBQWEsRUFBRSxDQUFDO1FBRXRCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBZ0JyQixlQUFVLEdBQVcsU0FBUyxDQUFDO1FBQy9CLHNCQUFpQixHQUFZLElBQUksQ0FBQyxDQUFDLDJFQUEyRTtRQUM5RyxvQkFBZSxHQUFZLEtBQUssQ0FBQyxDQUFDLG1GQUFtRjtRQUNySCw4QkFBeUIsR0FBWSxJQUFJLENBQUMsQ0FBQyxvRkFBb0Y7UUFFOUgsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDakMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDbkMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDbkMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFzSTdD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akIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRDQ29uZGl0aW9uLCBUQ0RhdGFGaWx0ZXJzLCBUQ0ZpbHRlcnNUeXBlIH0gZnJvbSAnLi90Y2xvdWQtdWktZmlsdGVycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RjbG91ZC11aS1maWx0ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RjbG91ZC11aS1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUQ2xvdWRVaUZpbHRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgZGF0ZXBpY2tlcnMgPSBbXSBhcyBhbnk7XG5cbiAgQFZpZXdDaGlsZCgnX2Zvcm11bGFyaW8nKSAgX2Zvcm11bGFyaW86IE5nRm9ybSB8IHVuZGVmaW5lZDtcblxuICBpbnB1dHM6IHN0cmluZ1tdID0gW107XG5cbiAgc2hvd19maWx0ZXJzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgc2VhcmNoX2RhdGE6IGFueSB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIF9kYXRhOiBhbnkgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHNldCBkYXRhKGRhdGE6IGFueSl7XG4gICAgLy8gdGhpcy5fZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICB9XG4gIGdldCBkYXRhKCk6IGFueXsgcmV0dXJuIHRoaXMuX2RhdGE7IH1cblxuICBwcml2YXRlIF9maWx0ZXJzOiBUQ0RhdGFGaWx0ZXJzIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBzZXQgZmlsdGVycyhmaWx0ZXJzOiBhbnkpe1xuICAgIC8vdGhpcy5fZmlsdGVycyA9IGZpbHRlcnM7XG4gIH1cbiAgZ2V0IGZpbHRlcnMoKTogYW55eyByZXR1cm4gdGhpcy5fZmlsdGVyczsgfVxuXG4gIEBJbnB1dCgpIHN1Ym1pdFRleHQ6IHN0cmluZyA9ICdGaWx0cmFyJztcbiAgQElucHV0KCkgdXNlT25DaGFuZ2VTdWJtaXQ6IGJvb2xlYW4gPSB0cnVlOyAvLyB1c2VPbkNoYW5nZVN1Ym1pdCAtIFN1Ym1pdCBhdXRvbWF0aWNvIHF1YW5kbyBmb3IgYWx0ZXJhZG8gcXVhbnF1ZXIgaW5wdXRcbiAgQElucHV0KCkgdXNlQnV0dG9uU3VibWl0OiBib29sZWFuID0gZmFsc2U7IC8vIHVzZUJ1dHRvblN1Ym1pdCAtIEV4aWJlIHVtIGJvdMOjbyBkZSBzdWJtaXQgZSBuw6NvIGV4ZWN1dGEgYSBidXNjYSBhdXRvbWF0aWNhbWVudGVcbiAgQElucHV0KCkgdXNlTm9ybWFsaXplQ2FzZVNlbnNpdGl2ZTogYm9vbGVhbiA9IHRydWU7IC8vIHVzZU5vcm1hbGl6ZUNhc2VTZW5zaXRpdmUgLSBOw6NvIHZhbGlkYSBjYWl4YSBhbHRhIG91IGJhaXhhIGUgY2FyYWN0ZXJlcyBlc3BlY2lhaXNcblxuICBAT3V0cHV0KCkgcmVzdWx0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvbkZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRlcGlwZTogRGF0ZVBpcGVcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIC8vIGNoaWxkIGlzIHNldFxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykgeyAgXG4gICAgXG4gICAgaWYoIGNoYW5nZXMgJiYgY2hhbmdlc1snZGF0YSddICl7XG4gICAgICBjb25zdCBkYXRhID0gY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZTtcbiAgICAgIGlmKCB0aGlzLl9kYXRhICE9PSBkYXRhICl7XG4gICAgICAgIHRoaXMuX2RhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgICAgdGhpcy5zZWFyY2hfZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgICB0aGlzLmluaXQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiggY2hhbmdlcyAmJiBjaGFuZ2VzWydmaWx0ZXJzJ10gKXtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBjaGFuZ2VzWydmaWx0ZXJzJ10uY3VycmVudFZhbHVlO1xuICAgICAgaWYoIHRoaXMuX2ZpbHRlcnMgIT09IGZpbHRlcnMgKXtcbiAgICAgICAgdGhpcy5fZmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZmlsdGVycykpO1xuICAgICAgICB0aGlzLmluaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXQoKXtcbiAgICBpZiggdGhpcy5kYXRhICYmIHRoaXMuZmlsdGVycyApe1xuICAgICAgdGhpcy5zaG93X2ZpbHRlcnMgPSB0cnVlO1xuICAgICAgaWYoIHRoaXMuZmlsdGVycyAmJiAodGhpcy5maWx0ZXJzKS5sZW5ndGggPiAwICl7XG4gICAgICAgICh0aGlzLmZpbHRlcnMpLmZvckVhY2goKGZpbHRlcjogVENEYXRhRmlsdGVycykgPT4geyAgXG4gICAgICAgICAgXG4gICAgICAgICAgY29uc29sZS5sb2coJ2luaXQgZmlsdGVyJywgZmlsdGVyKTtcbiAgICAgICAgICBcbiAgICAgICAgICB0aGlzLnNlYXJjaEluKGZpbHRlciwgJ3N5bmMnKTtcbiAgICAgICAgfSk7XG4gICAgICB9IFxuICAgICAgLy8gdGhpcy50b1Jlc3VsdCgpO1xuICAgICAgaWYoICF0aGlzLnVzZU9uQ2hhbmdlU3VibWl0ICl7XG4gICAgICAgIHRoaXMucmVzdWx0LmVtaXQodGhpcy5kYXRhKTtcbiAgICAgIH1cblxuICAgICAgaWYoIHRoaXMudXNlT25DaGFuZ2VTdWJtaXQgfHwgdGhpcy51c2VCdXR0b25TdWJtaXQgKXtcbiAgICAgICAgdGhpcy5zdGFydF9maWx0ZXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZSh0ZXh0OiBhbnkpOiBzdHJpbmd7XG4gICAgaWYoIHRoaXMudXNlTm9ybWFsaXplQ2FzZVNlbnNpdGl2ZSApe1xuICAgICAgY29uc3QgdiA9ICggKCAoYCR7dGV4dH1gKS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csIFwiXCIpICkudHJpbSgpICkudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIHRvU3VibWl0KCl7XG4gICAgaWYoIHRoaXMuZmlsdGVycyAmJiAodGhpcy5maWx0ZXJzKS5sZW5ndGggPiAwICl7XG4gICAgICB0aGlzLmluaXQoKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0U3VibWl0RmlsdGVycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U3VibWl0RmlsdGVycygpe1xuICAgIGxldCBmaWx0ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZpbHRlcnMpKTtcbiAgICBpZiggZmlsdGVycyAmJiAoZmlsdGVycykubGVuZ3RoID4gMCApe1xuICAgICAgKGZpbHRlcnMpLmZvckVhY2goKGZpbHRlcjogVENEYXRhRmlsdGVycywgaTogbnVtYmVyKSA9PiB7XG5cbiAgICAgICAgaWYoIGZpbHRlci53aWR0aCApeyBkZWxldGUoZmlsdGVyc1tpXS53aWR0aCk7IH1cbiAgICAgICAgaWYoIGZpbHRlci5wbGFjZWhvbGRlciApeyBkZWxldGUoZmlsdGVyc1tpXS5wbGFjZWhvbGRlcik7IH1cbiAgICAgICAgaWYoIGZpbHRlci5kZXNjcmlwdGlvbiApeyBkZWxldGUoZmlsdGVyc1tpXS5kZXNjcmlwdGlvbik7IH1cblxuICAgICAgICBpZiggKCFmaWx0ZXIuc2VhcmNoVGV4dCB8fCBmaWx0ZXIuc2VhcmNoVGV4dCAmJiBmaWx0ZXIuc2VhcmNoVGV4dCA9PT0gJycpICYmIGZpbHRlci50eXBlICE9PSBcImJvb2xlYW5cIiApe1xuICAgICAgICAgIGRlbGV0ZShmaWx0ZXJzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLm9uU3VibWl0LmVtaXQoZmlsdGVycyk7XG4gIH1cblxuXG4gIHByaXZhdGUgY29sbGVjdGlvbkZpbmQob2JqOiBhbnksIHBhdGg6IGFueSk6IGFueSB7XG4gICAgY29uc3QgcGF0aEFycmF5ID0gcGF0aC5zcGxpdChcIi5cIik7XG4gICAgbGV0IGN1cnJlbnQgPSBvYmo7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IHBhdGhBcnJheVtpXTtcblxuICAgICAgaWYgKGtleS5pbmNsdWRlcygnWycpICYmIGtleS5pbmNsdWRlcygnXScpKSB7XG4gICAgICAgIGNvbnN0IG5leHRLZXlzID0gcGF0aEFycmF5LnNsaWNlKGkgKyAxKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBrZXkuc3Vic3RyaW5nKGtleS5pbmRleE9mKCdbJykgKyAxLCBrZXkuaW5kZXhPZignXScpKTtcbiAgICAgICAgY29uc3QgYXJyYXlLZXkgPSBrZXkuc3Vic3RyaW5nKDAsIGtleS5pbmRleE9mKCdbJykpO1xuICAgICAgICBpZiggY3VycmVudCAmJiBjdXJyZW50W2FycmF5S2V5XSAmJiBjdXJyZW50W2FycmF5S2V5XVtpbmRleF0gKXtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uRmluZChjdXJyZW50W2FycmF5S2V5XVtpbmRleF0sIG5leHRLZXlzLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG5cbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoXCJbXVwiKSkge1xuICAgICAgICBjb25zdCBhcnJheUtleSA9IGtleS5yZXBsYWNlKFwiW11cIiwgXCJcIik7XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2FycmF5S2V5XSB8fCBbXTtcbiAgICAgICAgY29uc3QgbmV4dEtleXMgPSBwYXRoQXJyYXkuc2xpY2UoaSArIDEpO1xuICAgICAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY3VycmVudC5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmNvbGxlY3Rpb25GaW5kKGN1cnJlbnRbal0sIG5leHRLZXlzLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpOyBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmKCAhY3VycmVudCB8fCAoY3VycmVudCAmJiAhY3VycmVudFtrZXldKSApe1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnRba2V5XTtcbiAgICAgICAgaWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cbiAgICBcbiAgc3RhcnRfZmlsdGVyX2ZjOiBhbnkgPSB1bmRlZmluZWQ7XG5cblxuICBzZWFyY2hJbihpdGVtOiBUQ0RhdGFGaWx0ZXJzLCBldmVudD86IGFueSwgdmFsdWU/OiBhbnkpe1xuXG4gICAgdGhpcy5zdGFydF9maWx0ZXJfZmMgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiggdmFsdWUgKXtcbiAgICAgIGNvbnNvbGUubG9nKCdzZWFyY2hJbiBpdGVtJywgaXRlbSk7XG4gICAgICBjb25zb2xlLmxvZygnc2VhcmNoSW4gZXZlbnQnLCBldmVudCk7XG4gICAgfVxuXG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuXG4gICAgaWYoIGV2ZW50ID09PSAnc3luYycgJiYgaXNWYWxpZCApe1xuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIGlmKCB0eXBlb2YgZXZlbnQgPT09ICdib29sZWFuJyAmJiBpc1ZhbGlkICl7XG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICBpdGVtLnNlYXJjaFRleHQgPSBldmVudDtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBpZiggZXZlbnQgPT09IHVuZGVmaW5lZCB8fCBldmVudCA9PT0gbnVsbCB8fCBldmVudCA9PT0gJycgJiYgaXNWYWxpZCApe1xuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYoIGV2ZW50Py5kYXRlcGlja2VydGltZSAgJiYgaXNWYWxpZCApe1xuICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgY29uc29sZS5sb2coJ2lzIGEgZGF0ZScsIGV2ZW50Py5pbm5lclZhbHVlKTtcbiAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9IGV2ZW50Py5pbm5lclZhbHVlO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIGlmKGV2ZW50Py50YXJnZXQ/LnZhbHVlICYmIGlzVmFsaWQgKXtcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9IHRoaXMubm9ybWFsaXplKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYoZXZlbnQ/LnRhcmdldD8udmFsdWUgPT09ICcnICYmIGlzVmFsaWQgKXtcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cbiAgICBcbiAgICBpZiggdGhpcy51c2VPbkNoYW5nZVN1Ym1pdCApeyAgICAgIFxuICAgICAgdGhpcy5zdGFydF9maWx0ZXJfZmMgPSB0aGlzLnN0YXJ0X2ZpbHRlcigpO1xuICAgIH1cblxuICAgIGlmKCAhdGhpcy51c2VCdXR0b25TdWJtaXQgKXtcbiAgICAgIHRoaXMuZW1pdFN1Ym1pdEZpbHRlcnMoKTtcbiAgICB9IFxuICB9XG5cblxuICAvLyBzZWFyY2hJbihpdGVtOiBUQ0RhdGFGaWx0ZXJzLCBldmVudD86IGFueSwgdmFsdWU/OiBhbnkpe1xuXG4gIC8vICAgaWYoIHZhbHVlICl7XG4gIC8vICAgICBjb25zb2xlLmxvZygnc2VhcmNoSW4gaXRlbScsIGl0ZW0pO1xuICAvLyAgICAgY29uc29sZS5sb2coJ3NlYXJjaEluIGV2ZW50JywgZXZlbnQpO1xuICAvLyAgIH1cbiAgICBcbiAgICBcbiAgLy8gICB0aGlzLnN0YXJ0X2ZpbHRlcl9mYyA9IHVuZGVmaW5lZDtcblxuICAvLyAgIGlmKCBldmVudCAhPT0gdW5kZWZpbmVkICl7XG4gIC8vICAgICBpZiggdHlwZW9mIGV2ZW50ID09PSAnYm9vbGVhbicgKXtcbiAgLy8gICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gZXZlbnQ7XG4gIC8vICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgLy8gICAgIH1lbHNle1xuICAvLyAgICAgICBpZiggZXZlbnQgPT09IG51bGwgKXtcbiAgLy8gICAgICAgICBpdGVtLnNlYXJjaFRleHQgPSAnJztcbiAgLy8gICAgICAgfWVsc2V7XG5cbiAgLy8gICAgICAgICBpZiggZXZlbnQuZGVmYXVsdFZhbHVlICl7XG4gIC8vICAgICAgICAgICBpdGVtLnNlYXJjaFRleHQgPSBldmVudC5kZWZhdWx0VmFsdWU7XG4gIC8vICAgICAgICAgfWVsc2UgaWYoIGV2ZW50LnRhcmdldCApe1xuICAvLyAgICAgICAgICAgaWYoIGV2ZW50LnRhcmdldC52YWx1ZUFzRGF0ZSApe1xuICAvLyAgICAgICAgICAgICBpdGVtLnNlYXJjaFRleHQgPSBldmVudD8udGFyZ2V0Py52YWx1ZUFzRGF0ZTtcbiAgLy8gICAgICAgICAgIH1lbHNle1xuICAvLyAgICAgICAgICAgICBpZiggZXZlbnQudGFyZ2V0LnZhbHVlICl7XG4gIC8vICAgICAgICAgICAgICAgLy8gaXRlbS5zZWFyY2hUZXh0ID0gKGV2ZW50LnRhcmdldC52YWx1ZSkudG9VcHBlckNhc2UoKTtcbiAgLy8gICAgICAgICAgICAgICBpdGVtLnNlYXJjaFRleHQgPSB0aGlzLm5vcm1hbGl6ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgICAgIFxuICAvLyAgICAgICAgICAgICB9ICAgICAgICAgICAgXG4gIC8vICAgICAgICAgICB9XG4gIC8vICAgICAgICAgfSBcbiAgLy8gICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cbiAgLy8gICB9XG5cbiAgLy8gICBpZiggdGhpcy51c2VPbkNoYW5nZVN1Ym1pdCApeyAgICAgIFxuICAvLyAgICAgdGhpcy5zdGFydF9maWx0ZXJfZmMgPSB0aGlzLnN0YXJ0X2ZpbHRlcigpO1xuICAvLyAgIH1cblxuICAvLyAgIGlmKCAhdGhpcy51c2VCdXR0b25TdWJtaXQgKXtcbiAgLy8gICAgIHRoaXMuZW1pdFN1Ym1pdEZpbHRlcnMoKTtcbiAgLy8gICB9IFxuICAvLyB9XG4gIFxuICBzdGFydF9maWx0ZXIoKTogdm9pZHtcbiAgICBmb3IoIGxldCBpID0gMDsgaSA8ICh0aGlzLmRhdGEpLmxlbmd0aDsgaSsrICl7XG5cbiAgICAgIHRoaXMuc2V0RGF0YUluZGV4KGksIHRydWUpO1xuXG4gICAgICBmb3IoIGxldCBqID0gMDsgaiA8ICh0aGlzLmZpbHRlcnMpLmxlbmd0aDsgaisrICl7ICAgICAgICBcbiAgICAgICAgY29uc3QgZmlsdGVyX2l0ZW0gPSB0aGlzLmZpbHRlcnNbal07ICAgXG5cbiAgICAgICAgaWYoIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgJiYgdHlwZW9mIChmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gJ3N0cmluZycgJiYgZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCAhPT0gJycgJiYgZmlsdGVyX2l0ZW0udHlwZSAhPT0gVENGaWx0ZXJzVHlwZS5udW1iZXIgKXtcbiAgICAgICAgICBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ID0gdGhpcy5ub3JtYWxpemUoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCk7ICAgICAgICBcbiAgICAgICAgICBsZXQgaXRlbV92YWx1ZSA9IHRoaXMuY29sbGVjdGlvbkZpbmQodGhpcy5kYXRhW2ldLCBmaWx0ZXJfaXRlbS5zZWFyY2hJbik7XG4gICAgICAgICAgaWYoIGl0ZW1fdmFsdWUgKXtcbiAgICAgICAgICAgIGl0ZW1fdmFsdWUgPSB0aGlzLm5vcm1hbGl6ZShpdGVtX3ZhbHVlKTsgICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKCAhKCBpdGVtX3ZhbHVlLmluY2x1ZGVzKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpIHx8IGl0ZW1fdmFsdWUgPT09IGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgKSApe1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IFxuICAgICAgICBcblxuICAgICAgICBpZiggZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCAmJiAgZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKCBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0LnZhbHVlT2YoKSkgJiYgZmlsdGVyX2l0ZW0udHlwZSA9PT0gVENGaWx0ZXJzVHlwZS5kYXRldGltZSApe1xuICAgICAgICAgIGxldCBpdGVtX3ZhbHVlOiBhbnkgPSB0aGlzLmNvbGxlY3Rpb25GaW5kKHRoaXMuZGF0YVtpXSwgZmlsdGVyX2l0ZW0uc2VhcmNoSW4pO1xuXG4gICAgICAgICAgdHJ5IHsgaXRlbV92YWx1ZSA9IG5ldyBEYXRlKGl0ZW1fdmFsdWUpOyB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgICBpZiggaXRlbV92YWx1ZSAmJiAgaXRlbV92YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKCBpdGVtX3ZhbHVlLnZhbHVlT2YoKSkgKXtcbiAgICAgICAgICAgIGxldCBpc19hY2NlcHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGR0X3RhcmdldCAgID0gKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpLmdldFRpbWUoKSArICgzICogNjAgKiA2MCAqIDEwMDApO1xuICAgICAgICAgICAgY29uc3QgZHRfY3VycmVudCAgPSAoaXRlbV92YWx1ZSkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgaWYoIGZpbHRlcl9pdGVtLmNvbmRpdGlvbiApe1xuICAgICAgICAgICAgICBzd2l0Y2ggKGZpbHRlcl9pdGVtLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24uZ3Q6ICAgIGlzX2FjY2VwdCA9ICEoICsoZHRfdGFyZ2V0KSA+ICArKGR0X2N1cnJlbnQpICk7ICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmx0OiAgICBpc19hY2NlcHQgPSAhKCArKGR0X3RhcmdldCkgPCAgKyhkdF9jdXJyZW50KSApOyAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5ndGU6ICAgaXNfYWNjZXB0ID0gISggKyhkdF90YXJnZXQpID49ICsoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24ubHRlOiAgIGlzX2FjY2VwdCA9ICEoICsoZHRfdGFyZ2V0KSA8PSArKGR0X2N1cnJlbnQpICk7ICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmVxdWFsOiBpc19hY2NlcHQgPSAhKCArKGR0X3RhcmdldCkgPT09ICsoZHRfY3VycmVudCkgKTsgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGlzX2FjY2VwdCA9ICEoICsoZHRfdGFyZ2V0KSA9PSArKGR0X2N1cnJlbnQpICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICBpc19hY2NlcHQgPSAhKCArKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpID09PSArKGl0ZW1fdmFsdWUpICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiggIWlzX2FjY2VwdCApe1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgXG5cbiAgICAgICAgaWYoIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgJiYgdHlwZW9mICsoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09ICdudW1iZXInICYmIGZpbHRlcl9pdGVtLnR5cGUgPT09IFRDRmlsdGVyc1R5cGUubnVtYmVyICl7XG5cbiAgICAgICAgICBcblxuICAgICAgICAgIGxldCBpdGVtX3ZhbHVlID0gdGhpcy5jb2xsZWN0aW9uRmluZCh0aGlzLmRhdGFbaV0sIGZpbHRlcl9pdGVtLnNlYXJjaEluKTtcbiAgICAgICAgICBpZiggdHlwZW9mICsoaXRlbV92YWx1ZSkgPT09ICdudW1iZXInICl7ICAgICAgICAgICAgXG4gICAgICAgICAgICBsZXQgaXNfYWNjZXB0ID0gZmFsc2U7XG4gICAgICAgICAgICBpZiggZmlsdGVyX2l0ZW0uY29uZGl0aW9uICl7XG4gICAgICAgICAgICAgIHN3aXRjaCAoZmlsdGVyX2l0ZW0uY29uZGl0aW9uKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5ndDogICAgaXNfYWNjZXB0ID0gISggKyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA+ICArKGl0ZW1fdmFsdWUpICk7ICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFRDQ29uZGl0aW9uLmx0OiAgICBpc19hY2NlcHQgPSAhKCArKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpIDwgICsoaXRlbV92YWx1ZSkgKTsgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgVENDb25kaXRpb24uZ3RlOiAgIGlzX2FjY2VwdCA9ICEoICsoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCktMC4xID49ICsoaXRlbV92YWx1ZSkgKTsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5sdGU6ICAgaXNfYWNjZXB0ID0gISggKyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSswLjEgPD0gKyhpdGVtX3ZhbHVlKSApOyAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBUQ0NvbmRpdGlvbi5lcXVhbDogaXNfYWNjZXB0ID0gISggKyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gKyhpdGVtX3ZhbHVlKSApOyAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogaXNfYWNjZXB0ID0gISggKyhmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PSArKGl0ZW1fdmFsdWUpICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICBpc19hY2NlcHQgPSAhKCArKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpID09PSArKGl0ZW1fdmFsdWUpICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiggIWlzX2FjY2VwdCApe1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBcbiAgICAgICAgaWYoIHR5cGVvZiAoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09ICdib29sZWFuJyAmJiBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICl7XG4gICAgICAgICAgbGV0IGl0ZW1fdmFsdWU6IGFueSA9IHRoaXMuY29sbGVjdGlvbkZpbmQodGhpcy5kYXRhW2ldLCBmaWx0ZXJfaXRlbS5zZWFyY2hJbik7XG4gICAgICAgICAgXG4gICAgICAgICAgaWYoIGl0ZW1fdmFsdWUgJiYgKGl0ZW1fdmFsdWUpLmxlbmd0aCA+IDAgKXsgIFxuICAgICAgICAgICAgbGV0IHF0ZF9pc190cnVlID0gMDsgICAgICAgICAgXG4gICAgICAgICAgICBmb3IoIGxldCBpID0gMDsgaSA8ICgoaXRlbV92YWx1ZSkubGVuZ3RoKTsgaSsrICl7XG4gICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtX3ZhbHVlW2ldO1xuICAgICAgICAgICAgICBpZiggaXRlbSA9PT0gZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCApe1xuICAgICAgICAgICAgICAgIHF0ZF9pc190cnVlKys7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKCBxdGRfaXNfdHJ1ZSA9PT0gMCApe1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGFJbmRleChpLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBpZiggISggaXRlbV92YWx1ZSA9PT0gZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCApICl7XG4gICAgICAgICAgICAgIHRoaXMuc2V0RGF0YUluZGV4KGksIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9ICAgICAgICAgIFxuICAgICAgICB9XG4gICAgICBcbiAgICAgIH1cblxuICAgIH0gLy8gZW5kIGZvclxuICAgIFxuICAgIHRoaXMudG9SZXN1bHQoKTtcbiAgICAgIFxuICB9XG5cbiAgcHJpdmF0ZSB0b1Jlc3VsdCgpe1xuXG5cbiAgICBjb25zdCBzZWFyY2hfZGF0YSA9IFtdO1xuXG4gICAgbGV0IGlzX2ZpbHRlciA9IGZhbHNlO1xuICAgIGZvciggbGV0IGkgPSAwOyBpIDwgKHRoaXMuZmlsdGVycykubGVuZ3RoOyBpKysgKXtcbiAgICAgIGlmKCB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCAmJiB0aGlzLmZpbHRlcnNbaV0uc2VhcmNoVGV4dCAhPT0gJycgKXtcbiAgICAgICAgaXNfZmlsdGVyID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiggaXNfZmlsdGVyICl7XG4gICAgICBmb3IoIGxldCBpID0gMDsgaSA8ICh0aGlzLmRhdGEpLmxlbmd0aDsgaSsrICl7XG4gICAgICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhW2ldICYmIHRoaXMuZGF0YVtpXVsndGNfZmlsdGVyX2FjY2VwdCddICl7XG4gICAgICAgICAgKHNlYXJjaF9kYXRhKS5wdXNoKHRoaXMuZGF0YVtpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMucmVzdWx0LmVtaXQoc2VhcmNoX2RhdGEpO1xuICAgICAgdGhpcy5vbkZpbHRlci5lbWl0KHsuLi50aGlzLmZpbHRlcnN9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlc3VsdC5lbWl0KHRoaXMuZGF0YSk7XG4gICAgdGhpcy5vbkZpbHRlci5lbWl0KHsuLi50aGlzLmZpbHRlcnN9KTtcbiAgfVxuXG4gIHNldERhdGFJbmRleChpbmRleDogbnVtYmVyLCB2YWx1ZTogYm9vbGVhbiApe1xuICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhW2luZGV4XSApe1xuICAgICAgdGhpcy5kYXRhW2luZGV4XVsndGNfZmlsdGVyX2FjY2VwdCddID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJzaG93X2ZpbHRlcnNcIiBjbGFzcz1cImFyZWEtZmlsdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJzOyBsZXQgaSA9IGluZGV4XCI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLnR5cGUgfHwgKGl0ZW0udHlwZSAmJiBpdGVtLnR5cGUgIT09ICdib29sZWFuJylcIj5cbiAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LWZpbHRlci1pbnB1dFwiIFtzdHlsZV09XCIoaXRlbS53aWR0aCAhPT0gJycpID8gJ3dpZHRoOicraXRlbS53aWR0aCA6ICcnXCI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlID09PSAnZGF0ZXRpbWUtbG9jYWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWRlc2NyaXB0aW9uXCI+PGkgW2NsYXNzLnRvLWFjdGl2ZV09XCIoZGF0ZXBpY2tlcnNbaV0gIT09IHVuZGVmaW5lZCAmJiBkYXRlcGlja2Vyc1tpXSAhPT0gbnVsbCAmJiBkYXRlcGlja2Vyc1tpXSAhPT0gJycpXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwO3t7IGl0ZW0uZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Y2xvdWQtdWktZGF0ZXBpY2tlci10aW1lICNfaW5wdXQgWyhuZ01vZGVsKV09XCJkYXRlcGlja2Vyc1tpXVwiIG5hbWU9XCJpbnB1dF97e2krMX19XCIgKGV2ZW50Q2hhbmdlKT1cInNlYXJjaEluKGl0ZW0sIF9pbnB1dCwgJ3Rlc3RlJylcIiA+IDwvdGNsb3VkLXVpLWRhdGVwaWNrZXItdGltZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2xlYXItZmlsdGVyLXRleHRcIiBbY2xhc3MudG8taGlkZV09XCIhKGRhdGVwaWNrZXJzW2ldICE9PSB1bmRlZmluZWQgJiYgZGF0ZXBpY2tlcnNbaV0gIT09IG51bGwgJiYgZGF0ZXBpY2tlcnNbaV0gIT09ICcnKVwiIChjbGljayk9XCJzZWFyY2hJbihpdGVtLCBudWxsKTsgaXRlbS5zZWFyY2hUZXh0ID0gdW5kZWZpbmVkOyBkYXRlcGlja2Vyc1tpXSA9ICcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlICE9PSAnc2VsZWN0JyAmJiBpdGVtLnR5cGUgIT09ICdkYXRldGltZS1sb2NhbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb25cIj48aSBbY2xhc3MudG8tYWN0aXZlXT1cIl9pbnB1dC52YWx1ZSAhPT0gJydcIiBjbGFzcz1cImZhcyBmYS1maWx0ZXIgaWNvbi1maWx0ZXJcIj48L2k+Jm5ic3A7e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICNfaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IChpdGVtLnBsYWNlaG9sZGVyICE9PSAnJykgPyBpdGVtLnBsYWNlaG9sZGVyIDogJycgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpbnB1dF97e2krMX19XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInt7IChpdGVtLnR5cGUgPT09ICdudW1iZXInKSA/ICd0ZXh0JyA6IGl0ZW0udHlwZSB9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHRjLWZvcm0tY29udHJvbFwiICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cInNlYXJjaEluKGl0ZW0sICRldmVudClcIj4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jbGVhci1maWx0ZXItdGV4dFwiIFtjbGFzcy50by1oaWRlXT1cIl9pbnB1dC52YWx1ZSA9PT0gJydcIiAoY2xpY2spPVwic2VhcmNoSW4oaXRlbSwgbnVsbCk7IF9pbnB1dC52YWx1ZSA9ICcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlID09PSAnc2VsZWN0JyAmJiBpdGVtLmRhdGEgJiYgKGl0ZW0uZGF0YSkubGVuZ3RoID4gMFwiID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb25cIj48aSBbY2xhc3MudG8tYWN0aXZlXT1cIl9pbnB1dC52YWx1ZSAhPT0gJydcIiBjbGFzcz1cImZhcyBmYS1maWx0ZXIgaWNvbi1maWx0ZXJcIj48L2k+Jm5ic3A7e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjX2lucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlucHV0X3t7aSsxfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB0Yy1mb3JtLWNvbnRyb2xcIiAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VhcmNoSW4oaXRlbSwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiXCI+PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdiBvZiBpdGVtLmRhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwidi52YWx1ZVwiPnt7IHYuZGVzY3JpcHRpb24gfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiYnRuLWNsZWFyLWZpbHRlci10ZXh0XCIgW2NsYXNzLnRvLWhpZGVdPVwiX2lucHV0LnZhbHVlID09PSAnJ1wiIChjbGljayk9XCJzZWFyY2hJbihpdGVtLCBudWxsKTsgX2lucHV0LnZhbHVlID0gJydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10aW1lc1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICBcbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSAmJiBpdGVtLnR5cGUgPT09ICdib29sZWFuJ1wiPlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LWZpbHRlci1pbnB1dFwiIFtzdHlsZV09XCIoaXRlbS53aWR0aCAhPT0gJycpID8gJ3dpZHRoOicraXRlbS53aWR0aCA6ICcnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb25cIj48aSBbY2xhc3MudG8tYWN0aXZlXT1cIl9pbnB1dC5jaGVja2VkID09PSB0cnVlXCIgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIGljb24tZmlsdGVyXCI+PC9pPiZuYnNwO3t7IGl0ZW0uZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJlYS1pbnB1dC1jaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250cm9sIHRjLWZvcm0tY29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ucGxhY2Vob2xkZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNfaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAoaXRlbS5wbGFjZWhvbGRlciAhPT0gJycpID8gaXRlbS5wbGFjZWhvbGRlciA6ICcnIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlucHV0X3t7aSsxfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VhcmNoSW4oaXRlbSwgX2lucHV0LmNoZWNrZWQpXCI+ICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cInRleHQtcmlnaHQgbWItMSBtci0xXCIgKm5nSWY9XCJ1c2VCdXR0b25TdWJtaXRcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0Yy1idG4gYnRuLW5ldy1ncmV5XCIgKGNsaWNrKT1cInRvU3VibWl0KClcIiA+e3sgc3VibWl0VGV4dCB9fSZuYnNwOzxpIGNsYXNzPVwiZmFzIGZhLWZpbHRlciBpY29uLWZpbHRlclwiPjwvaT48L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuPC9kaXY+XG5cbjwhLS0gPHByZT57eyBpbnB1dHMgfCBqc29uIH19PC9wcmU+IC0tPlxuICAgIDwhLS0gPHByZT4ge3sgZGF0YSB8IGpzb24gfX0gPC9wcmU+IC0tPlxuPCEtLSBcbjxwPkZJTFRFUlM8L3A+XG48cHJlPiB7eyBmaWx0ZXJzIHwganNvbiB9fTwvcHJlPiAtLT4iXX0=
@@ -3,7 +3,7 @@ import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
4
  export class TCloudUiLinhaLogoComponent {
5
5
  constructor() {
6
- this.server = 'https://ateleia-email.s3-sa-east-1.amazonaws.com/';
6
+ this.url = `h` + `t` + `t` + `p` + `s` + `:` + `/` + `/` + `ateleia` + `-` + `email` + `.s3` + `-` + `sa` + `-` + `east` + `-` + `1` + `.` + `amazonaws` + `.` + `com` + `/`;
7
7
  this.product = '';
8
8
  this.logo_name = '';
9
9
  this.product_name = '';
@@ -53,11 +53,13 @@ export class TCloudUiLinhaLogoComponent {
53
53
  }
54
54
  }
55
55
  TCloudUiLinhaLogoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiLinhaLogoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
56
- TCloudUiLinhaLogoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiLinhaLogoComponent, selector: "tcloud-ui-linha-logo", inputs: { product: "product" }, ngImport: i0, template: "<!-- <div class=\"logo-product\" *ngIf=\"product !== ''\">\r\n <img class=\"img-logo\" src=\"/assets/img/logo-totvs.svg\" alt=\"{{ alt_product_name }}\">\r\n <p class=\"text-small\">Linha</p>\r\n <p class=\"text-product\" [style]=\"'font-size:'+font_size+';'\" >{{ product_name }}</p>\r\n</div> -->\r\n\r\n<div class=\"logo-product\" *ngIf=\"product !== ''\">\r\n <img class=\"img-logo\" [attr.data-name-image]=\"logo_name\" [attr.src]=\"server+logo_name+'.svg'\" alt=\"{{ alt_product_name }}\">\r\n</div>", styles: [".logo-product{display:flex;color:var(--cinza);flex-flow:column;width:150px}.logo-product .img-logo{width:100%;margin-bottom:13px}.logo-product .text-small{font-size:13px;margin:0;padding:0;text-align:left}.logo-product .text-product{text-align:left;font-size:22px;font-weight:700;line-height:1;margin:0;padding:0;text-transform:uppercase;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
56
+ TCloudUiLinhaLogoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiLinhaLogoComponent, selector: "tcloud-ui-linha-logo", inputs: { url: "url", product: "product" }, ngImport: i0, template: "<!-- <div class=\"logo-product\" *ngIf=\"product !== ''\">\r\n <img class=\"img-logo\" src=\"/assets/img/logo-totvs.svg\" alt=\"{{ alt_product_name }}\">\r\n <p class=\"text-small\">Linha</p>\r\n <p class=\"text-product\" [style]=\"'font-size:'+font_size+';'\" >{{ product_name }}</p>\r\n</div> -->\r\n\r\n<div class=\"logo-product\" *ngIf=\"product !== ''\">\r\n <img class=\"img-logo\" [attr.data-name-image]=\"logo_name\" [attr.src]=\"url+logo_name+'.svg'\" alt=\"{{ alt_product_name }}\">\r\n</div>", styles: [".logo-product{display:flex;color:var(--cinza);flex-flow:column;width:150px}.logo-product .img-logo{width:100%;margin-bottom:13px}.logo-product .text-small{font-size:13px;margin:0;padding:0;text-align:left}.logo-product .text-product{text-align:left;font-size:22px;font-weight:700;line-height:1;margin:0;padding:0;text-transform:uppercase;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
57
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiLinhaLogoComponent, decorators: [{
58
58
  type: Component,
59
- args: [{ selector: 'tcloud-ui-linha-logo', template: "<!-- <div class=\"logo-product\" *ngIf=\"product !== ''\">\r\n <img class=\"img-logo\" src=\"/assets/img/logo-totvs.svg\" alt=\"{{ alt_product_name }}\">\r\n <p class=\"text-small\">Linha</p>\r\n <p class=\"text-product\" [style]=\"'font-size:'+font_size+';'\" >{{ product_name }}</p>\r\n</div> -->\r\n\r\n<div class=\"logo-product\" *ngIf=\"product !== ''\">\r\n <img class=\"img-logo\" [attr.data-name-image]=\"logo_name\" [attr.src]=\"server+logo_name+'.svg'\" alt=\"{{ alt_product_name }}\">\r\n</div>", styles: [".logo-product{display:flex;color:var(--cinza);flex-flow:column;width:150px}.logo-product .img-logo{width:100%;margin-bottom:13px}.logo-product .text-small{font-size:13px;margin:0;padding:0;text-align:left}.logo-product .text-product{text-align:left;font-size:22px;font-weight:700;line-height:1;margin:0;padding:0;text-transform:uppercase;white-space:nowrap}\n"] }]
60
- }], ctorParameters: function () { return []; }, propDecorators: { product: [{
59
+ args: [{ selector: 'tcloud-ui-linha-logo', template: "<!-- <div class=\"logo-product\" *ngIf=\"product !== ''\">\r\n <img class=\"img-logo\" src=\"/assets/img/logo-totvs.svg\" alt=\"{{ alt_product_name }}\">\r\n <p class=\"text-small\">Linha</p>\r\n <p class=\"text-product\" [style]=\"'font-size:'+font_size+';'\" >{{ product_name }}</p>\r\n</div> -->\r\n\r\n<div class=\"logo-product\" *ngIf=\"product !== ''\">\r\n <img class=\"img-logo\" [attr.data-name-image]=\"logo_name\" [attr.src]=\"url+logo_name+'.svg'\" alt=\"{{ alt_product_name }}\">\r\n</div>", styles: [".logo-product{display:flex;color:var(--cinza);flex-flow:column;width:150px}.logo-product .img-logo{width:100%;margin-bottom:13px}.logo-product .text-small{font-size:13px;margin:0;padding:0;text-align:left}.logo-product .text-product{text-align:left;font-size:22px;font-weight:700;line-height:1;margin:0;padding:0;text-transform:uppercase;white-space:nowrap}\n"] }]
60
+ }], ctorParameters: function () { return []; }, propDecorators: { url: [{
61
+ type: Input
62
+ }], product: [{
61
63
  type: Input
62
64
  }] } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLWxpbmhhLWxvZ28uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWxpbmhhLWxvZ28vdGNsb3VkLXVpLWxpbmhhLWxvZ28uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWxpbmhhLWxvZ28vdGNsb3VkLXVpLWxpbmhhLWxvZ28uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU96RCxNQUFNLE9BQU8sMEJBQTBCO0lBV3JDO1FBVEEsV0FBTSxHQUFRLG1EQUFtRCxDQUFDO1FBRXpELFlBQU8sR0FBVyxFQUFFLENBQUM7UUFFOUIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUMxQixxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFDOUIsY0FBUyxHQUFXLEVBQUUsQ0FBQztJQUVQLENBQUM7SUFFakIsUUFBUTtRQUVOLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRTFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUUxRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEVBQUUsRUFBRztZQUN4QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3hCLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0IsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssRUFBRSxFQUFHO1lBQ3hCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDeEIsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QixPQUFPLGFBQWEsR0FBQyxJQUFJLENBQUM7U0FDM0I7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDcEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBRXpDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNiLFFBQVEsR0FBRyxFQUFFLENBQUM7U0FDZjtRQUVELElBQUksS0FBSyxHQUFHLEVBQUUsRUFBRTtZQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFDLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUUsR0FBRyxHQUFHLENBQUM7WUFDeEMsUUFBUSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFO1lBQ2QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxHQUFHLEdBQUcsQ0FBQztZQUN6QyxRQUFRLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDdkI7UUFJRCxPQUFPLEdBQUcsUUFBUSxJQUFJLENBQUM7SUFDekIsQ0FBQzs7d0hBakVVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLDRGQ1B2QywrZkFRTTs0RkRETywwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0Usc0JBQXNCOzBFQVF2QixPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGNsb3VkLXVpLWxpbmhhLWxvZ28nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90Y2xvdWQtdWktbGluaGEtbG9nby5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGNsb3VkLXVpLWxpbmhhLWxvZ28uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVENsb3VkVWlMaW5oYUxvZ29Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBzZXJ2ZXI6IGFueSA9ICdodHRwczovL2F0ZWxlaWEtZW1haWwuczMtc2EtZWFzdC0xLmFtYXpvbmF3cy5jb20vJztcclxuIFxyXG4gIEBJbnB1dCgpIHByb2R1Y3Q6IHN0cmluZyA9ICcnO1xyXG5cclxuICBsb2dvX25hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHByb2R1Y3RfbmFtZTogc3RyaW5nID0gJyc7XHJcbiAgYWx0X3Byb2R1Y3RfbmFtZTogc3RyaW5nID0gJyc7XHJcbiAgZm9udF9zaXplOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5sb2dvX25hbWUgPSB0aGlzLmdldExvZ29OYW1lKCk7XHJcbiAgICB0aGlzLnByb2R1Y3RfbmFtZSA9IHRoaXMuZ2V0UHJvZHVjdE5hbWUoKTtcclxuICAgIFxyXG4gICAgdGhpcy5hbHRfcHJvZHVjdF9uYW1lID0gKHRoaXMucHJvZHVjdF9uYW1lKS50b1VwcGVyQ2FzZSgpO1xyXG5cclxuICAgIHRoaXMuZm9udF9zaXplID0gdGhpcy5nZXRXaWR0aEZvbnRTaXplKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm9kdWN0TmFtZSgpe1xyXG4gICAgaWYoIHRoaXMucHJvZHVjdCAhPT0gJycgICl7XHJcbiAgICAgIGxldCBuYW1lID0gdGhpcy5wcm9kdWN0O1xyXG4gICAgICBuYW1lID0gKG5hbWUpLnJlcGxhY2UoJ18nLCcgJyk7XHJcbiAgICAgIG5hbWUgPSAobmFtZSkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgcmV0dXJuIG5hbWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBnZXRMb2dvTmFtZSgpe1xyXG4gICAgaWYoIHRoaXMucHJvZHVjdCAhPT0gJycgICl7XHJcbiAgICAgIGxldCBuYW1lID0gdGhpcy5wcm9kdWN0O1xyXG4gICAgICBuYW1lID0gKG5hbWUpLnJlcGxhY2UoJ18nLCctJyk7XHJcbiAgICAgIG5hbWUgPSAobmFtZSkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgcmV0dXJuICdsb2dvLWxpbmhhLScrbmFtZTtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGdldFdpZHRoRm9udFNpemUoKXtcclxuICAgIGxldCBzaXplID0gMjg7XHJcbiAgICBsZXQgbmV3X3NpemUgPSBzaXplO1xyXG4gICAgY29uc3QgY291bnQgPSAodGhpcy5wcm9kdWN0X25hbWUpLmxlbmd0aDsgXHJcblxyXG4gICAgaWYoIGNvdW50ID4gOCApe1xyXG4gICAgICBuZXdfc2l6ZSA9IDI4O1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCBjb3VudCA+IDEyICl7XHJcbiAgICAgIGNvbnN0IHAgPSAoc2l6ZSAqICg1Kyhjb3VudCoyKSkgKSAvIDEwMDtcclxuICAgICAgbmV3X3NpemUgPSAoc2l6ZSAtIHApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCBjb3VudCA+IDE1ICl7XHJcbiAgICAgIGNvbnN0IHAgPSAoc2l6ZSAqICgxMCsoY291bnQqMikpICkgLyAxMDA7XHJcbiAgICAgIG5ld19zaXplID0gKHNpemUgLSBwKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHJldHVybiBgJHtuZXdfc2l6ZX1weGA7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8IS0tIDxkaXYgY2xhc3M9XCJsb2dvLXByb2R1Y3RcIiAqbmdJZj1cInByb2R1Y3QgIT09ICcnXCI+XHJcbiAgPGltZyBjbGFzcz1cImltZy1sb2dvXCIgc3JjPVwiL2Fzc2V0cy9pbWcvbG9nby10b3R2cy5zdmdcIiBhbHQ9XCJ7eyBhbHRfcHJvZHVjdF9uYW1lIH19XCI+XHJcbiAgPHAgY2xhc3M9XCJ0ZXh0LXNtYWxsXCI+TGluaGE8L3A+XHJcbiAgPHAgY2xhc3M9XCJ0ZXh0LXByb2R1Y3RcIiBbc3R5bGVdPVwiJ2ZvbnQtc2l6ZTonK2ZvbnRfc2l6ZSsnOydcIiA+e3sgcHJvZHVjdF9uYW1lIH19PC9wPlxyXG48L2Rpdj4gLS0+XHJcblxyXG48ZGl2IGNsYXNzPVwibG9nby1wcm9kdWN0XCIgKm5nSWY9XCJwcm9kdWN0ICE9PSAnJ1wiPlxyXG4gIDxpbWcgY2xhc3M9XCJpbWctbG9nb1wiIFthdHRyLmRhdGEtbmFtZS1pbWFnZV09XCJsb2dvX25hbWVcIiBbYXR0ci5zcmNdPVwic2VydmVyK2xvZ29fbmFtZSsnLnN2ZydcIiBhbHQ9XCJ7eyBhbHRfcHJvZHVjdF9uYW1lIH19XCI+XHJcbjwvZGl2PiJdfQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLWxpbmhhLWxvZ28uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWxpbmhhLWxvZ28vdGNsb3VkLXVpLWxpbmhhLWxvZ28uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWxpbmhhLWxvZ28vdGNsb3VkLXVpLWxpbmhhLWxvZ28uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU96RCxNQUFNLE9BQU8sMEJBQTBCO0lBVXJDO1FBUlMsUUFBRyxHQUFRLEdBQUcsR0FBQyxHQUFHLEdBQUMsR0FBRyxHQUFDLEdBQUcsR0FBQyxHQUFHLEdBQUMsR0FBRyxHQUFDLEdBQUcsR0FBQyxHQUFHLEdBQUMsU0FBUyxHQUFDLEdBQUcsR0FBQyxPQUFPLEdBQUMsS0FBSyxHQUFDLEdBQUcsR0FBQyxJQUFJLEdBQUMsR0FBRyxHQUFDLE1BQU0sR0FBQyxHQUFHLEdBQUMsR0FBRyxHQUFDLEdBQUcsR0FBQyxXQUFXLEdBQUMsR0FBRyxHQUFDLEtBQUssR0FBQyxHQUFHLENBQUM7UUFDakksWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUU5QixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixjQUFTLEdBQVcsRUFBRSxDQUFDO0lBRVAsQ0FBQztJQUVqQixRQUFRO1FBRU4sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTFELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssRUFBRSxFQUFHO1lBQ3hCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDeEIsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxFQUFFLEVBQUc7WUFDeEIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUN4QixJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLE9BQU8sYUFBYSxHQUFDLElBQUksQ0FBQztTQUMzQjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQztRQUNwQixNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFekMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ2IsUUFBUSxHQUFHLEVBQUUsQ0FBQztTQUNmO1FBRUQsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFO1lBQ2QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxHQUFHLEdBQUcsQ0FBQztZQUN4QyxRQUFRLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDdkI7UUFFRCxJQUFJLEtBQUssR0FBRyxFQUFFLEVBQUU7WUFDZCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBQyxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFLEdBQUcsR0FBRyxDQUFDO1lBQ3pDLFFBQVEsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN2QjtRQUlELE9BQU8sR0FBRyxRQUFRLElBQUksQ0FBQztJQUN6QixDQUFDOzt3SEFoRVUsMEJBQTBCOzRHQUExQiwwQkFBMEIsd0dDUHZDLDRmQVFNOzRGRERPLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSxzQkFBc0I7MEVBTXZCLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGNsb3VkLXVpLWxpbmhhLWxvZ28nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90Y2xvdWQtdWktbGluaGEtbG9nby5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGNsb3VkLXVpLWxpbmhhLWxvZ28uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVENsb3VkVWlMaW5oYUxvZ29Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSB1cmw6IGFueSA9IGBoYCtgdGArYHRgK2BwYCtgc2ArYDpgK2AvYCtgL2ArYGF0ZWxlaWFgK2AtYCtgZW1haWxgK2AuczNgK2AtYCtgc2FgK2AtYCtgZWFzdGArYC1gK2AxYCtgLmArYGFtYXpvbmF3c2ArYC5gK2Bjb21gK2AvYDsgXHJcbiAgQElucHV0KCkgcHJvZHVjdDogc3RyaW5nID0gJyc7XHJcblxyXG4gIGxvZ29fbmFtZTogc3RyaW5nID0gJyc7XHJcbiAgcHJvZHVjdF9uYW1lOiBzdHJpbmcgPSAnJztcclxuICBhbHRfcHJvZHVjdF9uYW1lOiBzdHJpbmcgPSAnJztcclxuICBmb250X3NpemU6IHN0cmluZyA9ICcnO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmxvZ29fbmFtZSA9IHRoaXMuZ2V0TG9nb05hbWUoKTtcclxuICAgIHRoaXMucHJvZHVjdF9uYW1lID0gdGhpcy5nZXRQcm9kdWN0TmFtZSgpO1xyXG4gICAgXHJcbiAgICB0aGlzLmFsdF9wcm9kdWN0X25hbWUgPSAodGhpcy5wcm9kdWN0X25hbWUpLnRvVXBwZXJDYXNlKCk7XHJcblxyXG4gICAgdGhpcy5mb250X3NpemUgPSB0aGlzLmdldFdpZHRoRm9udFNpemUoKTtcclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3ROYW1lKCl7XHJcbiAgICBpZiggdGhpcy5wcm9kdWN0ICE9PSAnJyAgKXtcclxuICAgICAgbGV0IG5hbWUgPSB0aGlzLnByb2R1Y3Q7XHJcbiAgICAgIG5hbWUgPSAobmFtZSkucmVwbGFjZSgnXycsJyAnKTtcclxuICAgICAgbmFtZSA9IChuYW1lKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICByZXR1cm4gbmFtZTtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGdldExvZ29OYW1lKCl7XHJcbiAgICBpZiggdGhpcy5wcm9kdWN0ICE9PSAnJyAgKXtcclxuICAgICAgbGV0IG5hbWUgPSB0aGlzLnByb2R1Y3Q7XHJcbiAgICAgIG5hbWUgPSAobmFtZSkucmVwbGFjZSgnXycsJy0nKTtcclxuICAgICAgbmFtZSA9IChuYW1lKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICByZXR1cm4gJ2xvZ28tbGluaGEtJytuYW1lO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0V2lkdGhGb250U2l6ZSgpe1xyXG4gICAgbGV0IHNpemUgPSAyODtcclxuICAgIGxldCBuZXdfc2l6ZSA9IHNpemU7XHJcbiAgICBjb25zdCBjb3VudCA9ICh0aGlzLnByb2R1Y3RfbmFtZSkubGVuZ3RoOyBcclxuXHJcbiAgICBpZiggY291bnQgPiA4ICl7XHJcbiAgICAgIG5ld19zaXplID0gMjg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIGNvdW50ID4gMTIgKXtcclxuICAgICAgY29uc3QgcCA9IChzaXplICogKDUrKGNvdW50KjIpKSApIC8gMTAwO1xyXG4gICAgICBuZXdfc2l6ZSA9IChzaXplIC0gcCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIGNvdW50ID4gMTUgKXtcclxuICAgICAgY29uc3QgcCA9IChzaXplICogKDEwKyhjb3VudCoyKSkgKSAvIDEwMDtcclxuICAgICAgbmV3X3NpemUgPSAoc2l6ZSAtIHApO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgcmV0dXJuIGAke25ld19zaXplfXB4YDtcclxuICB9XHJcblxyXG59XHJcbiIsIjwhLS0gPGRpdiBjbGFzcz1cImxvZ28tcHJvZHVjdFwiICpuZ0lmPVwicHJvZHVjdCAhPT0gJydcIj5cclxuICA8aW1nIGNsYXNzPVwiaW1nLWxvZ29cIiBzcmM9XCIvYXNzZXRzL2ltZy9sb2dvLXRvdHZzLnN2Z1wiIGFsdD1cInt7IGFsdF9wcm9kdWN0X25hbWUgfX1cIj5cclxuICA8cCBjbGFzcz1cInRleHQtc21hbGxcIj5MaW5oYTwvcD5cclxuICA8cCBjbGFzcz1cInRleHQtcHJvZHVjdFwiIFtzdHlsZV09XCInZm9udC1zaXplOicrZm9udF9zaXplKyc7J1wiID57eyBwcm9kdWN0X25hbWUgfX08L3A+XHJcbjwvZGl2PiAtLT5cclxuXHJcbjxkaXYgY2xhc3M9XCJsb2dvLXByb2R1Y3RcIiAqbmdJZj1cInByb2R1Y3QgIT09ICcnXCI+XHJcbiAgPGltZyBjbGFzcz1cImltZy1sb2dvXCIgW2F0dHIuZGF0YS1uYW1lLWltYWdlXT1cImxvZ29fbmFtZVwiIFthdHRyLnNyY109XCJ1cmwrbG9nb19uYW1lKycuc3ZnJ1wiIGFsdD1cInt7IGFsdF9wcm9kdWN0X25hbWUgfX1cIj5cclxuPC9kaXY+Il19
@@ -81,10 +81,10 @@ export class TCloudUiNumberStepComponent {
81
81
  }
82
82
  }
83
83
  TCloudUiNumberStepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiNumberStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
84
- TCloudUiNumberStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiNumberStepComponent, selector: "tcloud-ui-number-step", inputs: { step: "step", useIconCheck: "useIconCheck", active: "active", inactives: "inactives", complete: "complete" }, ngImport: i0, template: "<table class=\"table-trilha\" cellspacing=\"0\" cellpadding=\"0\">\n <tr>\n <ng-container *ngFor=\"let fase of trilha; let i = index\" >\n <td class=\"area-circle\">\n <div class=\"circle icon-{{ fase.class }} {{ fase.second_class }} \">\n\n <ng-container *ngIf=\"useIconCheck\">\n <ng-container *ngIf=\"i < active && fase.second_class !== 'step-inactive'\">\n <div class=\"area-index\"><i class=\"fas fa-check\"></i></div>\n </ng-container>\n\n <ng-container *ngIf=\"i < active && fase.second_class === 'step-inactive'\">\n <div class=\"area-index\"><i class=\"far fa-circle\"></i></div>\n </ng-container>\n\n <ng-container *ngIf=\"i >= active\">\n <div class=\"area-index\">{{ i + 1 }}</div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!useIconCheck\">\n <div class=\"area-index\">{{ i + 1 }}</div>\n </ng-container>\n \n </div>\n </td>\n <td class=\"area-line\" *ngIf=\"(i+1) < (trilha).length\">\n <div class=\"step-line {{ fase.class }}\"></div> \n </td>\n </ng-container>\n </tr>\n</table>", styles: [".table-trilha{width:100%;border-collapse:collapse;margin-top:3px;margin-bottom:2px}.table-trilha td{border:none}.table-trilha .area-circle{width:0px}.table-trilha .area-circle i{font-size:18px}.table-trilha .area-index{font-size:16px;position:relative;top:50%;transform:translateY(-50%)}.table-trilha .step-line{width:100%;height:2px;background-color:#ccc;padding:0;margin-left:-1px;width:calc(100% + 2px)}table tr{background-color:transparent!important}table th,table td{vertical-align:middle}.circle{display:block;border:1px solid #ccc;height:48px;width:48px;border-radius:50%;text-align:center;font-size:14px}.step-progress{background-color:var(--verde)!important}.icon-step-progress{border-color:var(--verde);background-color:var(--verde)!important}.icon-step-progress .area-index{color:#fff}.icon-step-active{border-color:var(--verde);background-color:var(--verde)!important;color:#fff!important}.step-inactive{background-color:#fbfbfb!important}.step-inactive .area-index{color:#ccc!important}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
84
+ TCloudUiNumberStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiNumberStepComponent, selector: "tcloud-ui-number-step", inputs: { step: "step", useIconCheck: "useIconCheck", active: "active", inactives: "inactives", complete: "complete" }, ngImport: i0, template: "<table class=\"table-trilha\" cellspacing=\"0\" cellpadding=\"0\">\n <tr>\n <ng-container *ngFor=\"let fase of trilha; let i = index\" >\n <td class=\"area-circle\">\n <div class=\"circle icon-{{ fase.class }} {{ fase.second_class }} \">\n\n <ng-container *ngIf=\"useIconCheck\">\n <ng-container *ngIf=\"i < active && fase.second_class !== 'step-inactive'\">\n <div class=\"area-index\" *ngIf=\"(active-1) === i\">{{ active }}</div>\n <div class=\"area-index\" *ngIf=\"(active-1) > i\"><i class=\"fas fa-check\"></i></div>\n </ng-container>\n\n <ng-container *ngIf=\"i < active && fase.second_class === 'step-inactive'\">\n <div class=\"area-index\"><i class=\"far fa-circle\"></i></div>\n </ng-container>\n\n <ng-container *ngIf=\"i >= active\">\n <div class=\"area-index\">{{ i + 1 }}</div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!useIconCheck\">\n <div class=\"area-index\">{{ i + 1 }}</div>\n </ng-container>\n \n </div>\n </td>\n <td class=\"area-line\" *ngIf=\"(i+1) < (trilha).length\">\n <div class=\"step-line {{ fase.class }}\"></div> \n </td>\n </ng-container>\n </tr>\n</table>", styles: [".table-trilha{width:100%;border-collapse:collapse;margin-top:3px;margin-bottom:2px}.table-trilha td{border:none}.table-trilha .area-circle{width:0px}.table-trilha .area-circle i{font-size:18px}.table-trilha .area-index{font-size:16px;position:relative;top:50%;transform:translateY(-50%)}.table-trilha .step-line{width:100%;height:2px;background-color:#ccc;padding:0;margin-left:-1px;width:calc(100% + 2px)}table tr{background-color:transparent!important}table th,table td{vertical-align:middle}.circle{display:block;border:1px solid #ccc;height:48px;width:48px;border-radius:50%;text-align:center;font-size:14px}.step-progress{background-color:var(--verde)!important}.icon-step-progress{border-color:var(--verde);background-color:var(--verde)!important}.icon-step-progress .area-index{color:#fff}.icon-step-active{border-color:var(--verde);background-color:var(--verde)!important;color:#fff!important}.step-inactive{background-color:#fbfbfb!important}.step-inactive .area-index{color:#ccc!important}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
85
85
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiNumberStepComponent, decorators: [{
86
86
  type: Component,
87
- args: [{ selector: 'tcloud-ui-number-step', template: "<table class=\"table-trilha\" cellspacing=\"0\" cellpadding=\"0\">\n <tr>\n <ng-container *ngFor=\"let fase of trilha; let i = index\" >\n <td class=\"area-circle\">\n <div class=\"circle icon-{{ fase.class }} {{ fase.second_class }} \">\n\n <ng-container *ngIf=\"useIconCheck\">\n <ng-container *ngIf=\"i < active && fase.second_class !== 'step-inactive'\">\n <div class=\"area-index\"><i class=\"fas fa-check\"></i></div>\n </ng-container>\n\n <ng-container *ngIf=\"i < active && fase.second_class === 'step-inactive'\">\n <div class=\"area-index\"><i class=\"far fa-circle\"></i></div>\n </ng-container>\n\n <ng-container *ngIf=\"i >= active\">\n <div class=\"area-index\">{{ i + 1 }}</div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!useIconCheck\">\n <div class=\"area-index\">{{ i + 1 }}</div>\n </ng-container>\n \n </div>\n </td>\n <td class=\"area-line\" *ngIf=\"(i+1) < (trilha).length\">\n <div class=\"step-line {{ fase.class }}\"></div> \n </td>\n </ng-container>\n </tr>\n</table>", styles: [".table-trilha{width:100%;border-collapse:collapse;margin-top:3px;margin-bottom:2px}.table-trilha td{border:none}.table-trilha .area-circle{width:0px}.table-trilha .area-circle i{font-size:18px}.table-trilha .area-index{font-size:16px;position:relative;top:50%;transform:translateY(-50%)}.table-trilha .step-line{width:100%;height:2px;background-color:#ccc;padding:0;margin-left:-1px;width:calc(100% + 2px)}table tr{background-color:transparent!important}table th,table td{vertical-align:middle}.circle{display:block;border:1px solid #ccc;height:48px;width:48px;border-radius:50%;text-align:center;font-size:14px}.step-progress{background-color:var(--verde)!important}.icon-step-progress{border-color:var(--verde);background-color:var(--verde)!important}.icon-step-progress .area-index{color:#fff}.icon-step-active{border-color:var(--verde);background-color:var(--verde)!important;color:#fff!important}.step-inactive{background-color:#fbfbfb!important}.step-inactive .area-index{color:#ccc!important}\n"] }]
87
+ args: [{ selector: 'tcloud-ui-number-step', template: "<table class=\"table-trilha\" cellspacing=\"0\" cellpadding=\"0\">\n <tr>\n <ng-container *ngFor=\"let fase of trilha; let i = index\" >\n <td class=\"area-circle\">\n <div class=\"circle icon-{{ fase.class }} {{ fase.second_class }} \">\n\n <ng-container *ngIf=\"useIconCheck\">\n <ng-container *ngIf=\"i < active && fase.second_class !== 'step-inactive'\">\n <div class=\"area-index\" *ngIf=\"(active-1) === i\">{{ active }}</div>\n <div class=\"area-index\" *ngIf=\"(active-1) > i\"><i class=\"fas fa-check\"></i></div>\n </ng-container>\n\n <ng-container *ngIf=\"i < active && fase.second_class === 'step-inactive'\">\n <div class=\"area-index\"><i class=\"far fa-circle\"></i></div>\n </ng-container>\n\n <ng-container *ngIf=\"i >= active\">\n <div class=\"area-index\">{{ i + 1 }}</div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!useIconCheck\">\n <div class=\"area-index\">{{ i + 1 }}</div>\n </ng-container>\n \n </div>\n </td>\n <td class=\"area-line\" *ngIf=\"(i+1) < (trilha).length\">\n <div class=\"step-line {{ fase.class }}\"></div> \n </td>\n </ng-container>\n </tr>\n</table>", styles: [".table-trilha{width:100%;border-collapse:collapse;margin-top:3px;margin-bottom:2px}.table-trilha td{border:none}.table-trilha .area-circle{width:0px}.table-trilha .area-circle i{font-size:18px}.table-trilha .area-index{font-size:16px;position:relative;top:50%;transform:translateY(-50%)}.table-trilha .step-line{width:100%;height:2px;background-color:#ccc;padding:0;margin-left:-1px;width:calc(100% + 2px)}table tr{background-color:transparent!important}table th,table td{vertical-align:middle}.circle{display:block;border:1px solid #ccc;height:48px;width:48px;border-radius:50%;text-align:center;font-size:14px}.step-progress{background-color:var(--verde)!important}.icon-step-progress{border-color:var(--verde);background-color:var(--verde)!important}.icon-step-progress .area-index{color:#fff}.icon-step-active{border-color:var(--verde);background-color:var(--verde)!important;color:#fff!important}.step-inactive{background-color:#fbfbfb!important}.step-inactive .area-index{color:#ccc!important}\n"] }]
88
88
  }], ctorParameters: function () { return []; }, propDecorators: { step: [{
89
89
  type: Input
90
90
  }], useIconCheck: [{
@@ -96,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
96
96
  }], complete: [{
97
97
  type: Input
98
98
  }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLW51bWJlci1zdGVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RjbG91ZC11aS9zcmMvbGliL19tb2R1bGVzL3RjbG91ZC11aS1udW1iZXItc3RlcC90Y2xvdWQtdWktbnVtYmVyLXN0ZXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLW51bWJlci1zdGVwL3RjbG91ZC11aS1udW1iZXItc3RlcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7O0FBRXpELE1BQU0sSUFBSTtJQUVSO1FBQ0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0NBTUY7QUFPRCxNQUFNLE9BQU8sMkJBQTJCO0lBbUN0QztRQWpDUyxTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ2pCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRS9CLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFTcEIsZUFBVSxHQUFHLEVBQTBCLENBQUM7UUFVeEMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQVNuQyxXQUFNLEdBQUcsSUFBSSxLQUFLLEVBQVEsQ0FBQztJQUVYLENBQUM7SUE3QmpCLElBQWEsTUFBTSxDQUFFLE1BQWM7UUFDakMsSUFBSSxNQUFNLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDdEIsSUFBSSxD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SUFBSSxHQUFHLENBQUMsRUFBRTtvQkFDcEIsTUFBTSxDQUFDLENBQUMsSUFBSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQztpQkFDakQ7YUFDRjtTQUNGO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQzs7eUhBbEZVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLHFMQ3RCeEMsZ3RDQStCUTs0RkRUSywyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsdUJBQXVCOzBFQU14QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFHTyxNQUFNO3NCQUFsQixLQUFLO2dCQVNPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBVU8sUUFBUTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jbGFzcyBTdGVwIHtcblxuICBjb25zdHJ1Y3Rvcigpe1xuICAgIHRoaXMuc3RhdHVzID0gJyc7XG4gICAgdGhpcy5pbmRleCA9IDA7XG4gICAgdGhpcy5jbGFzcyA9ICcnO1xuICAgIHRoaXMuc2Vjb25kX2NsYXNzID0gJyc7XG4gIH1cblxuICBzdGF0dXM6IHN0cmluZztcbiAgaW5kZXg6IG51bWJlcjtcbiAgY2xhc3M6IHN0cmluZztcbiAgc2Vjb25kX2NsYXNzOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RjbG91ZC11aS1udW1iZXItc3RlcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90Y2xvdWQtdWktbnVtYmVyLXN0ZXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90Y2xvdWQtdWktbnVtYmVyLXN0ZXAuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUQ2xvdWRVaU51bWJlclN0ZXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHN0ZXA6IG51bWJlciA9IDc7XG4gIEBJbnB1dCgpIHVzZUljb25DaGVjazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2FjdGl2ZTogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgc2V0IGFjdGl2ZSggYWN0aXZlOiBudW1iZXIgKXtcbiAgICBpZiggYWN0aXZlICYmIGFjdGl2ZSAhPT0gdGhpcy5fYWN0aXZlICl7XG4gICAgICB0aGlzLl9hY3RpdmUgPSBhY3RpdmU7XG4gICAgICB0aGlzLmJ1aWxkX3N0ZXBzKCk7XG4gICAgfSAgICBcbiAgfVxuICBnZXQgYWN0aXZlKCk6IG51bWJlcnsgcmV0dXJuIHRoaXMuX2FjdGl2ZTsgfVxuXG4gIHByaXZhdGUgX2luYWN0aXZlcyA9IFtdIGFzIG51bWJlcltdIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBzZXQgaW5hY3RpdmVzKCBpbmFjdGl2ZXM6IG51bWJlcltdIHwgdW5kZWZpbmVkKXtcbiAgICBpZiggaW5hY3RpdmVzICYmIGluYWN0aXZlcyAhPT0gdGhpcy5faW5hY3RpdmVzICl7XG4gICAgICB0aGlzLl9pbmFjdGl2ZXMgPSBpbmFjdGl2ZXM7XG4gICAgICB0aGlzLmJ1aWxkX3N0ZXBzKCk7XG4gICAgfVxuICB9XG4gIGdldCBpbmFjdGl2ZXMoKTogbnVtYmVyW10gfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5faW5hY3RpdmVzOyB9XG5cblxuICBwcml2YXRlIF9jb21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgY29tcGxldGUoIGNvbXBsZXRlOiBib29sZWFuICl7XG4gICAgaWYoIGNvbXBsZXRlICYmIGNvbXBsZXRlICE9PSB0aGlzLl9jb21wbGV0ZSApe1xuICAgICAgdGhpcy5fY29tcGxldGUgPSBjb21wbGV0ZTtcbiAgICAgIHRoaXMuYnVpbGRfc3RlcHMoKTtcbiAgICB9ICAgIFxuICB9XG4gIGdldCBjb21wbGV0ZSgpOiBib29sZWFueyByZXR1cm4gdGhpcy5fY29tcGxldGU7IH1cblxuICB0cmlsaGEgPSBuZXcgQXJyYXk8U3RlcD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLmJ1aWxkX3N0ZXBzKCk7IH0pO1xuICB9XG5cbiAgYnVpbGRfc3RlcHMoKXtcbiAgICBsZXQgdHJpbGhhID0gbmV3IEFycmF5PFN0ZXA+KCk7XG4gICAgaWYoIHRoaXMuc3RlcCAmJiB0aGlzLnN0ZXAgPiAwICl7XG4gICAgICBmb3IoIGxldCBpID0gMDsgaSA8IHRoaXMuc3RlcDsgaSsrICl7XG4gICAgICAgICh0cmlsaGEpLnB1c2goe1xuICAgICAgICAgIHN0YXR1czogJycsXG4gICAgICAgICAgaW5kZXg6IGkrMSxcbiAgICAgICAgICBjbGFzczogJ3N0ZXAtZGVmYXVsdCcsXG4gICAgICAgICAgc2Vjb25kX2NsYXNzOiAnJyxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiggdGhpcy5hY3RpdmUgPiB0aGlzLnN0ZXAgKXtcbiAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5zdGVwO1xuICAgICAgdGhpcy5jb21wbGV0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYoIHRoaXMuY29tcGxldGUgKXtcbiAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5zdGVwO1xuICAgIH1cblxuICAgIGlmKCB0aGlzLmFjdGl2ZSAmJiB0aGlzLmFjdGl2ZSA+IDAgKXtcbiAgICAgIGZvciggbGV0IGkgPSAwOyBpIDwgdGhpcy5hY3RpdmU7IGkrKyApeyAgICAgICAgXG4gICAgICAgIHRyaWxoYVtpXS5jbGFzcyA9IFwic3RlcC1wcm9ncmVzc1wiOyAgICAgICAgXG4gICAgICAgIGlmKCAoaSsxKSA9PT0gdGhpcy5hY3RpdmUgJiYgIXRoaXMuY29tcGxldGUgKXtcbiAgICAgICAgICB0cmlsaGFbaV0uY2xhc3MgPSBcInN0ZXAtYWN0aXZlXCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgaWYoIHRoaXMuaW5hY3RpdmVzICYmICh0aGlzLmluYWN0aXZlcykubGVuZ3RoID4gMCApe1xuICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5pbmFjdGl2ZXMpLmxlbmd0aDsgaSsrICl7XG4gICAgICAgIGNvbnN0IGljb24gPSB0aGlzLmluYWN0aXZlc1tpXTtcbiAgICAgICAgaWYoIGljb24gJiYgaWNvbiA+IDAgKXtcbiAgICAgICAgICB0cmlsaGFbKGljb24tMSldLnNlY29uZF9jbGFzcyA9IFwic3RlcC1pbmFjdGl2ZVwiOyAgICAgXG4gICAgICAgIH0gICAgXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50cmlsaGEgPSB0cmlsaGE7ICAgIFxuICB9XG59XG4iLCI8dGFibGUgY2xhc3M9XCJ0YWJsZS10cmlsaGFcIiBjZWxsc3BhY2luZz1cIjBcIiBjZWxscGFkZGluZz1cIjBcIj5cbiAgPHRyPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZhc2Ugb2YgdHJpbGhhOyBsZXQgaSA9IGluZGV4XCIgPlxuICAgICAgPHRkIGNsYXNzPVwiYXJlYS1jaXJjbGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZSBpY29uLXt7IGZhc2UuY2xhc3MgfX0ge3sgZmFzZS5zZWNvbmRfY2xhc3MgfX0gXCI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlSWNvbkNoZWNrXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaSA8IGFjdGl2ZSAmJiBmYXNlLnNlY29uZF9jbGFzcyAhPT0gJ3N0ZXAtaW5hY3RpdmUnXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmVhLWluZGV4XCI+PGkgY2xhc3M9XCJmYXMgZmEtY2hlY2tcIj48L2k+PC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImkgPCBhY3RpdmUgJiYgZmFzZS5zZWNvbmRfY2xhc3MgPT09ICdzdGVwLWluYWN0aXZlJ1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJlYS1pbmRleFwiPjxpIGNsYXNzPVwiZmFyIGZhLWNpcmNsZVwiPjwvaT48L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaSA+PSBhY3RpdmVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFyZWEtaW5kZXhcIj57eyBpICsgMSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXVzZUljb25DaGVja1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFyZWEtaW5kZXhcIj57eyBpICsgMSB9fTwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdGQ+XG4gICAgICA8dGQgY2xhc3M9XCJhcmVhLWxpbmVcIiAqbmdJZj1cIihpKzEpIDwgKHRyaWxoYSkubGVuZ3RoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLWxpbmUge3sgZmFzZS5jbGFzcyB9fVwiPjwvZGl2PiAgICAgICAgXG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3RyPlxuPC90YWJsZT4iXX0=
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLW51bWJlci1zdGVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RjbG91ZC11aS9zcmMvbGliL19tb2R1bGVzL3RjbG91ZC11aS1udW1iZXItc3RlcC90Y2xvdWQtdWktbnVtYmVyLXN0ZXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLW51bWJlci1zdGVwL3RjbG91ZC11aS1udW1iZXItc3RlcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7O0FBRXpELE1BQU0sSUFBSTtJQUVSO1FBQ0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0NBTUY7QUFPRCxNQUFNLE9BQU8sMkJBQTJCO0lBbUN0QztRQWpDUyxTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ2pCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRS9CLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFTcEIsZUFBVSxHQUFHLEVBQTBCLENBQUM7UUFVeEMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQVNuQyxXQUFNLEdBQUcsSUFBSSxLQUFLLEVBQVEsQ0FBQztJQUVYLENBQUM7SUE3QmpCLElBQWEsTUFBTSxDQUFFLE1BQWM7UUFDakMsSUFBSSxNQUFNLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDdEIsSUFBSSxD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SUFBSSxHQUFHLENBQUMsRUFBRTtvQkFDcEIsTUFBTSxDQUFDLENBQUMsSUFBSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQztpQkFDakQ7YUFDRjtTQUNGO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQzs7eUhBbEZVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLHFMQ3RCeEMsZzBDQWdDUTs0RkRWSywyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsdUJBQXVCOzBFQU14QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFHTyxNQUFNO3NCQUFsQixLQUFLO2dCQVNPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBVU8sUUFBUTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jbGFzcyBTdGVwIHtcblxuICBjb25zdHJ1Y3Rvcigpe1xuICAgIHRoaXMuc3RhdHVzID0gJyc7XG4gICAgdGhpcy5pbmRleCA9IDA7XG4gICAgdGhpcy5jbGFzcyA9ICcnO1xuICAgIHRoaXMuc2Vjb25kX2NsYXNzID0gJyc7XG4gIH1cblxuICBzdGF0dXM6IHN0cmluZztcbiAgaW5kZXg6IG51bWJlcjtcbiAgY2xhc3M6IHN0cmluZztcbiAgc2Vjb25kX2NsYXNzOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RjbG91ZC11aS1udW1iZXItc3RlcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90Y2xvdWQtdWktbnVtYmVyLXN0ZXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90Y2xvdWQtdWktbnVtYmVyLXN0ZXAuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUQ2xvdWRVaU51bWJlclN0ZXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHN0ZXA6IG51bWJlciA9IDc7XG4gIEBJbnB1dCgpIHVzZUljb25DaGVjazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2FjdGl2ZTogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgc2V0IGFjdGl2ZSggYWN0aXZlOiBudW1iZXIgKXtcbiAgICBpZiggYWN0aXZlICYmIGFjdGl2ZSAhPT0gdGhpcy5fYWN0aXZlICl7XG4gICAgICB0aGlzLl9hY3RpdmUgPSBhY3RpdmU7XG4gICAgICB0aGlzLmJ1aWxkX3N0ZXBzKCk7XG4gICAgfSAgICBcbiAgfVxuICBnZXQgYWN0aXZlKCk6IG51bWJlcnsgcmV0dXJuIHRoaXMuX2FjdGl2ZTsgfVxuXG4gIHByaXZhdGUgX2luYWN0aXZlcyA9IFtdIGFzIG51bWJlcltdIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBzZXQgaW5hY3RpdmVzKCBpbmFjdGl2ZXM6IG51bWJlcltdIHwgdW5kZWZpbmVkKXtcbiAgICBpZiggaW5hY3RpdmVzICYmIGluYWN0aXZlcyAhPT0gdGhpcy5faW5hY3RpdmVzICl7XG4gICAgICB0aGlzLl9pbmFjdGl2ZXMgPSBpbmFjdGl2ZXM7XG4gICAgICB0aGlzLmJ1aWxkX3N0ZXBzKCk7XG4gICAgfVxuICB9XG4gIGdldCBpbmFjdGl2ZXMoKTogbnVtYmVyW10gfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5faW5hY3RpdmVzOyB9XG5cblxuICBwcml2YXRlIF9jb21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgY29tcGxldGUoIGNvbXBsZXRlOiBib29sZWFuICl7XG4gICAgaWYoIGNvbXBsZXRlICYmIGNvbXBsZXRlICE9PSB0aGlzLl9jb21wbGV0ZSApe1xuICAgICAgdGhpcy5fY29tcGxldGUgPSBjb21wbGV0ZTtcbiAgICAgIHRoaXMuYnVpbGRfc3RlcHMoKTtcbiAgICB9ICAgIFxuICB9XG4gIGdldCBjb21wbGV0ZSgpOiBib29sZWFueyByZXR1cm4gdGhpcy5fY29tcGxldGU7IH1cblxuICB0cmlsaGEgPSBuZXcgQXJyYXk8U3RlcD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLmJ1aWxkX3N0ZXBzKCk7IH0pO1xuICB9XG5cbiAgYnVpbGRfc3RlcHMoKXtcbiAgICBsZXQgdHJpbGhhID0gbmV3IEFycmF5PFN0ZXA+KCk7XG4gICAgaWYoIHRoaXMuc3RlcCAmJiB0aGlzLnN0ZXAgPiAwICl7XG4gICAgICBmb3IoIGxldCBpID0gMDsgaSA8IHRoaXMuc3RlcDsgaSsrICl7XG4gICAgICAgICh0cmlsaGEpLnB1c2goe1xuICAgICAgICAgIHN0YXR1czogJycsXG4gICAgICAgICAgaW5kZXg6IGkrMSxcbiAgICAgICAgICBjbGFzczogJ3N0ZXAtZGVmYXVsdCcsXG4gICAgICAgICAgc2Vjb25kX2NsYXNzOiAnJyxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiggdGhpcy5hY3RpdmUgPiB0aGlzLnN0ZXAgKXtcbiAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5zdGVwO1xuICAgICAgdGhpcy5jb21wbGV0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYoIHRoaXMuY29tcGxldGUgKXtcbiAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5zdGVwO1xuICAgIH1cblxuICAgIGlmKCB0aGlzLmFjdGl2ZSAmJiB0aGlzLmFjdGl2ZSA+IDAgKXtcbiAgICAgIGZvciggbGV0IGkgPSAwOyBpIDwgdGhpcy5hY3RpdmU7IGkrKyApeyAgICAgICAgXG4gICAgICAgIHRyaWxoYVtpXS5jbGFzcyA9IFwic3RlcC1wcm9ncmVzc1wiOyAgICAgICAgXG4gICAgICAgIGlmKCAoaSsxKSA9PT0gdGhpcy5hY3RpdmUgJiYgIXRoaXMuY29tcGxldGUgKXtcbiAgICAgICAgICB0cmlsaGFbaV0uY2xhc3MgPSBcInN0ZXAtYWN0aXZlXCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgaWYoIHRoaXMuaW5hY3RpdmVzICYmICh0aGlzLmluYWN0aXZlcykubGVuZ3RoID4gMCApe1xuICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5pbmFjdGl2ZXMpLmxlbmd0aDsgaSsrICl7XG4gICAgICAgIGNvbnN0IGljb24gPSB0aGlzLmluYWN0aXZlc1tpXTtcbiAgICAgICAgaWYoIGljb24gJiYgaWNvbiA+IDAgKXtcbiAgICAgICAgICB0cmlsaGFbKGljb24tMSldLnNlY29uZF9jbGFzcyA9IFwic3RlcC1pbmFjdGl2ZVwiOyAgICAgXG4gICAgICAgIH0gICAgXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50cmlsaGEgPSB0cmlsaGE7ICAgIFxuICB9XG59XG4iLCI8dGFibGUgY2xhc3M9XCJ0YWJsZS10cmlsaGFcIiBjZWxsc3BhY2luZz1cIjBcIiBjZWxscGFkZGluZz1cIjBcIj5cbiAgPHRyPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZhc2Ugb2YgdHJpbGhhOyBsZXQgaSA9IGluZGV4XCIgPlxuICAgICAgPHRkIGNsYXNzPVwiYXJlYS1jaXJjbGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZSBpY29uLXt7IGZhc2UuY2xhc3MgfX0ge3sgZmFzZS5zZWNvbmRfY2xhc3MgfX0gXCI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlSWNvbkNoZWNrXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaSA8IGFjdGl2ZSAmJiBmYXNlLnNlY29uZF9jbGFzcyAhPT0gJ3N0ZXAtaW5hY3RpdmUnXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmVhLWluZGV4XCIgKm5nSWY9XCIoYWN0aXZlLTEpID09PSBpXCI+e3sgYWN0aXZlIH19PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmVhLWluZGV4XCIgKm5nSWY9XCIoYWN0aXZlLTEpID4gaVwiPjxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrXCI+PC9pPjwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpIDwgYWN0aXZlICYmIGZhc2Uuc2Vjb25kX2NsYXNzID09PSAnc3RlcC1pbmFjdGl2ZSdcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFyZWEtaW5kZXhcIj48aSBjbGFzcz1cImZhciBmYS1jaXJjbGVcIj48L2k+PC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImkgPj0gYWN0aXZlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmVhLWluZGV4XCI+e3sgaSArIDEgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF1c2VJY29uQ2hlY2tcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcmVhLWluZGV4XCI+e3sgaSArIDEgfX08L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RkPlxuICAgICAgPHRkIGNsYXNzPVwiYXJlYS1saW5lXCIgKm5nSWY9XCIoaSsxKSA8ICh0cmlsaGEpLmxlbmd0aFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1saW5lIHt7IGZhc2UuY2xhc3MgfX1cIj48L2Rpdj4gICAgICAgIFxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC90cj5cbjwvdGFibGU+Il19