@stiunb/unb-lib-components 18.0.26 → 18.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/esm2022/lib/services/unb-auth.service.mjs +4 -4
  2. package/esm2022/lib/unb-mensagem/unb-mensagem.component.mjs +4 -4
  3. package/esm2022/lib/unb-mensagem/unb-mensagem.module.mjs +5 -5
  4. package/esm2022/lib/unb-mensagem/unb-mensagem.service.mjs +4 -4
  5. package/esm2022/lib/unb-nav-bar/unb-nav-bar.component.mjs +4 -4
  6. package/esm2022/lib/unb-nav-bar/unb-nav-bar.module.mjs +5 -5
  7. package/esm2022/lib/unb-pessoa/unb-pessoa-email-form/unb-pessoa-email-form.mjs +4 -4
  8. package/esm2022/lib/unb-pessoa/unb-pessoa-email-form/unb-pessoa-email-list.mjs +4 -4
  9. package/esm2022/lib/unb-pessoa/unb-pessoa-endereco-form/unb-pessoa-endereco-form.mjs +11 -6
  10. package/esm2022/lib/unb-pessoa/unb-pessoa-endereco-form/unb-pessoa-endereco-list.mjs +4 -4
  11. package/esm2022/lib/unb-pessoa/unb-pessoa-form/unb-pessoa-form.component.mjs +5 -5
  12. package/esm2022/lib/unb-pessoa/unb-pessoa-pesquisar/unb-pessoa-pesquisar.component.mjs +4 -4
  13. package/esm2022/lib/unb-pessoa/unb-pessoa-telefone-form/unb-pessoa-telefone-form.mjs +4 -4
  14. package/esm2022/lib/unb-pessoa/unb-pessoa-telefone-form/unb-pessoa-telefone-list.mjs +4 -4
  15. package/esm2022/lib/unb-pessoa/unb-pessoa.module.mjs +5 -5
  16. package/esm2022/lib/unb-pessoa/unb-pessoa.service.mjs +69 -7
  17. package/esm2022/lib/unb-usuario/oidc-decoded-token.mjs +1 -1
  18. package/esm2022/lib/unb-usuario/oidc-user-data.mjs +1 -1
  19. package/esm2022/lib/unb-usuario/unb-usuario.component.mjs +4 -4
  20. package/esm2022/lib/unb-usuario/unb-usuario.module.mjs +5 -5
  21. package/fesm2022/stiunb-unb-lib-components.mjs +131 -65
  22. package/fesm2022/stiunb-unb-lib-components.mjs.map +1 -1
  23. package/lib/unb-pessoa/unb-pessoa-endereco-form/unb-pessoa-endereco-form.d.ts +5 -4
  24. package/lib/unb-pessoa/unb-pessoa.service.d.ts +7 -4
  25. package/package.json +1 -1
@@ -398,10 +398,10 @@ export class UnbPessoaPesquisarComponent {
398
398
  this.pessoa.cnpj = valor;
399
399
  }
400
400
  }
401
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: UnbPessoaPesquisarComponent, deps: [{ token: i1.UnBPessoaService }, { token: i2.MatSnackBar }, { token: i3.UnbMensagemService }], target: i0.ɵɵFactoryTarget.Component }); }
402
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.1.2", type: UnbPessoaPesquisarComponent, selector: "lib-unb-pessoa-pesquisar", inputs: { backendURL: "backendURL", pesquisarPorCPF: ["pesquisarPorCPF", "pesquisarPorCPF", booleanAttribute], pesquisarPorCNPJ: ["pesquisarPorCNPJ", "pesquisarPorCNPJ", booleanAttribute], pesquisarPorEstrangeiro: ["pesquisarPorEstrangeiro", "pesquisarPorEstrangeiro", booleanAttribute], defaultTipoPessoa: "defaultTipoPessoa", campoPesquisaMaxWidth: "campoPesquisaMaxWidth", mostrarPesquisa: ["mostrarPesquisa", "mostrarPesquisa", booleanAttribute], limparAposPesquisa: ["limparAposPesquisa", "limparAposPesquisa", booleanAttribute], label: "label", placeholder: "placeholder", hint: "hint", pessoa: "pessoa" }, outputs: { pessoaEmitted: "pessoaEmitted", isLoadingChange: "isLoadingChange" }, ngImport: i0, template: "<form #pessoaForm=\"ngForm\" class=\"pesquisa-container\" [ngStyle]=\"{'--tamanho-maximo': campoPesquisaMaxWidth}\"\r\n (ngSubmit)=\"pesquisar()\">\r\n <div class=\"mensagem-container\" style=\"width: 100%;\">\r\n <unb-mensagem [identificador]=\"idMensagemService\" class=\"mensagem-form\"></unb-mensagem>\r\n </div>\r\n\r\n <div class=\"form-wrapper\">\r\n <div *ngIf=\"mostrarTipoPessoa\" class=\"radio-container\">\r\n <mat-radio-group aria-label=\"Tipo de Pessoa\" [(ngModel)]=\"pessoa.tipoPessoa\" #tipoPessoa=\"ngModel\"\r\n name=\"tipoPessoa\" (change)=\"onTipoPessoaChange()\">\r\n <mat-radio-button *ngIf=\"pesquisarPorCPF\" value=\"{{ tipoPessoaEnum().FISICA}}\">Pessoa F\u00EDsica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorCNPJ\" value=\"{{tipoPessoaEnum().JURIDICA}}\"> Pessoa\r\n Jur\u00EDdica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorEstrangeiro\"\r\n value=\"{{tipoPessoaEnum().ESTRANGEIRA}}\">Estrangeiro</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"break\"></div>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().FISICA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CPF</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cpf\" name=\"cpf\" #cpf=\"ngModel\" required={{true}}\r\n (input)=\"formatarCpf($event)\" maxlength=\"14\" placeholder=\"000.000.000-00\" />\r\n <button matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" [disabled]=\"isLoading\"\r\n (click)=\"pesquisar()\">\r\n <ng-container *ngIf=\"!isLoading; else loadingIcon\">\r\n <mat-icon>search</mat-icon>\r\n </ng-container>\r\n <ng-template #loadingIcon>\r\n <mat-progress-spinner [diameter]=\"20\" mode=\"indeterminate\" color=\"primary\" class=\"spinner-button\">\r\n </mat-progress-spinner>\r\n </ng-template>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().ESTRANGEIRA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Passaporte</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.passaporte\" name=\"passaporte\" required=\"true\" />\r\n <button matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <ng-container *ngIf=\"!isLoading; else loadingIcon\">\r\n <mat-icon>search</mat-icon>\r\n </ng-container>\r\n <ng-template #loadingIcon>\r\n <mat-progress-spinner [diameter]=\"20\" mode=\"indeterminate\" color=\"primary\" class=\"spinner-button\">\r\n </mat-progress-spinner>\r\n </ng-template>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().JURIDICA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CNPJ</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cnpj\" name=\"cnpj\" required=\"true\"\r\n (input)=\"formatarCnpj($event)\" maxlength=\"18\" placeholder=\"00.000.000/0000-00\" />\r\n <button matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <ng-container *ngIf=\"!isLoading; else loadingIcon\">\r\n <mat-icon>search</mat-icon>\r\n </ng-container>\r\n <ng-template #loadingIcon>\r\n <mat-progress-spinner [diameter]=\"20\" mode=\"indeterminate\" color=\"primary\" class=\"spinner-button\">\r\n </mat-progress-spinner>\r\n </ng-template>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n</form>", styles: [".pesquisa-container{display:flex;flex-direction:column;align-items:flex-start}.form-wrapper{display:flex;flex-direction:column;width:100%;max-width:var(--tamanho-maximo);gap:5px}.mensagem-form{display:block;width:100%}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i8.UnbMensagemComponent, selector: "unb-mensagem", inputs: ["mensagem", "tipo", "identificador"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i12.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i12.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }] }); }
401
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UnbPessoaPesquisarComponent, deps: [{ token: i1.UnBPessoaService }, { token: i2.MatSnackBar }, { token: i3.UnbMensagemService }], target: i0.ɵɵFactoryTarget.Component }); }
402
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: UnbPessoaPesquisarComponent, selector: "lib-unb-pessoa-pesquisar", inputs: { backendURL: "backendURL", pesquisarPorCPF: ["pesquisarPorCPF", "pesquisarPorCPF", booleanAttribute], pesquisarPorCNPJ: ["pesquisarPorCNPJ", "pesquisarPorCNPJ", booleanAttribute], pesquisarPorEstrangeiro: ["pesquisarPorEstrangeiro", "pesquisarPorEstrangeiro", booleanAttribute], defaultTipoPessoa: "defaultTipoPessoa", campoPesquisaMaxWidth: "campoPesquisaMaxWidth", mostrarPesquisa: ["mostrarPesquisa", "mostrarPesquisa", booleanAttribute], limparAposPesquisa: ["limparAposPesquisa", "limparAposPesquisa", booleanAttribute], label: "label", placeholder: "placeholder", hint: "hint", pessoa: "pessoa" }, outputs: { pessoaEmitted: "pessoaEmitted", isLoadingChange: "isLoadingChange" }, ngImport: i0, template: "<form #pessoaForm=\"ngForm\" class=\"pesquisa-container\" [ngStyle]=\"{'--tamanho-maximo': campoPesquisaMaxWidth}\"\r\n (ngSubmit)=\"pesquisar()\">\r\n <div class=\"mensagem-container\" style=\"width: 100%;\">\r\n <unb-mensagem [identificador]=\"idMensagemService\" class=\"mensagem-form\"></unb-mensagem>\r\n </div>\r\n\r\n <div class=\"form-wrapper\">\r\n <div *ngIf=\"mostrarTipoPessoa\" class=\"radio-container\">\r\n <mat-radio-group aria-label=\"Tipo de Pessoa\" [(ngModel)]=\"pessoa.tipoPessoa\" #tipoPessoa=\"ngModel\"\r\n name=\"tipoPessoa\" (change)=\"onTipoPessoaChange()\">\r\n <mat-radio-button *ngIf=\"pesquisarPorCPF\" value=\"{{ tipoPessoaEnum().FISICA}}\">Pessoa F\u00EDsica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorCNPJ\" value=\"{{tipoPessoaEnum().JURIDICA}}\"> Pessoa\r\n Jur\u00EDdica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorEstrangeiro\"\r\n value=\"{{tipoPessoaEnum().ESTRANGEIRA}}\">Estrangeiro</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"break\"></div>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().FISICA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CPF</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cpf\" name=\"cpf\" #cpf=\"ngModel\" required={{true}}\r\n (input)=\"formatarCpf($event)\" maxlength=\"14\" placeholder=\"000.000.000-00\" />\r\n <button matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" [disabled]=\"isLoading\"\r\n (click)=\"pesquisar()\">\r\n <ng-container *ngIf=\"!isLoading; else loadingIcon\">\r\n <mat-icon>search</mat-icon>\r\n </ng-container>\r\n <ng-template #loadingIcon>\r\n <mat-progress-spinner [diameter]=\"20\" mode=\"indeterminate\" color=\"primary\" class=\"spinner-button\">\r\n </mat-progress-spinner>\r\n </ng-template>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().ESTRANGEIRA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Passaporte</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.passaporte\" name=\"passaporte\" required=\"true\" />\r\n <button matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <ng-container *ngIf=\"!isLoading; else loadingIcon\">\r\n <mat-icon>search</mat-icon>\r\n </ng-container>\r\n <ng-template #loadingIcon>\r\n <mat-progress-spinner [diameter]=\"20\" mode=\"indeterminate\" color=\"primary\" class=\"spinner-button\">\r\n </mat-progress-spinner>\r\n </ng-template>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().JURIDICA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CNPJ</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cnpj\" name=\"cnpj\" required=\"true\"\r\n (input)=\"formatarCnpj($event)\" maxlength=\"18\" placeholder=\"00.000.000/0000-00\" />\r\n <button matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <ng-container *ngIf=\"!isLoading; else loadingIcon\">\r\n <mat-icon>search</mat-icon>\r\n </ng-container>\r\n <ng-template #loadingIcon>\r\n <mat-progress-spinner [diameter]=\"20\" mode=\"indeterminate\" color=\"primary\" class=\"spinner-button\">\r\n </mat-progress-spinner>\r\n </ng-template>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n</form>", styles: [".pesquisa-container{display:flex;flex-direction:column;align-items:flex-start}.form-wrapper{display:flex;flex-direction:column;width:100%;max-width:var(--tamanho-maximo);gap:5px}.mensagem-form{display:block;width:100%}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i8.UnbMensagemComponent, selector: "unb-mensagem", inputs: ["mensagem", "tipo", "identificador"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i12.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i12.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }] }); }
403
403
  }
404
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: UnbPessoaPesquisarComponent, decorators: [{
404
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UnbPessoaPesquisarComponent, decorators: [{
405
405
  type: Component,
406
406
  args: [{ selector: 'lib-unb-pessoa-pesquisar', standalone: false, template: "<form #pessoaForm=\"ngForm\" class=\"pesquisa-container\" [ngStyle]=\"{'--tamanho-maximo': campoPesquisaMaxWidth}\"\r\n (ngSubmit)=\"pesquisar()\">\r\n <div class=\"mensagem-container\" style=\"width: 100%;\">\r\n <unb-mensagem [identificador]=\"idMensagemService\" class=\"mensagem-form\"></unb-mensagem>\r\n </div>\r\n\r\n <div class=\"form-wrapper\">\r\n <div *ngIf=\"mostrarTipoPessoa\" class=\"radio-container\">\r\n <mat-radio-group aria-label=\"Tipo de Pessoa\" [(ngModel)]=\"pessoa.tipoPessoa\" #tipoPessoa=\"ngModel\"\r\n name=\"tipoPessoa\" (change)=\"onTipoPessoaChange()\">\r\n <mat-radio-button *ngIf=\"pesquisarPorCPF\" value=\"{{ tipoPessoaEnum().FISICA}}\">Pessoa F\u00EDsica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorCNPJ\" value=\"{{tipoPessoaEnum().JURIDICA}}\"> Pessoa\r\n Jur\u00EDdica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorEstrangeiro\"\r\n value=\"{{tipoPessoaEnum().ESTRANGEIRA}}\">Estrangeiro</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"break\"></div>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().FISICA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CPF</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cpf\" name=\"cpf\" #cpf=\"ngModel\" required={{true}}\r\n (input)=\"formatarCpf($event)\" maxlength=\"14\" placeholder=\"000.000.000-00\" />\r\n <button matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" [disabled]=\"isLoading\"\r\n (click)=\"pesquisar()\">\r\n <ng-container *ngIf=\"!isLoading; else loadingIcon\">\r\n <mat-icon>search</mat-icon>\r\n </ng-container>\r\n <ng-template #loadingIcon>\r\n <mat-progress-spinner [diameter]=\"20\" mode=\"indeterminate\" color=\"primary\" class=\"spinner-button\">\r\n </mat-progress-spinner>\r\n </ng-template>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().ESTRANGEIRA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Passaporte</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.passaporte\" name=\"passaporte\" required=\"true\" />\r\n <button matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <ng-container *ngIf=\"!isLoading; else loadingIcon\">\r\n <mat-icon>search</mat-icon>\r\n </ng-container>\r\n <ng-template #loadingIcon>\r\n <mat-progress-spinner [diameter]=\"20\" mode=\"indeterminate\" color=\"primary\" class=\"spinner-button\">\r\n </mat-progress-spinner>\r\n </ng-template>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().JURIDICA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CNPJ</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cnpj\" name=\"cnpj\" required=\"true\"\r\n (input)=\"formatarCnpj($event)\" maxlength=\"18\" placeholder=\"00.000.000/0000-00\" />\r\n <button matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <ng-container *ngIf=\"!isLoading; else loadingIcon\">\r\n <mat-icon>search</mat-icon>\r\n </ng-container>\r\n <ng-template #loadingIcon>\r\n <mat-progress-spinner [diameter]=\"20\" mode=\"indeterminate\" color=\"primary\" class=\"spinner-button\">\r\n </mat-progress-spinner>\r\n </ng-template>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n</form>", styles: [".pesquisa-container{display:flex;flex-direction:column;align-items:flex-start}.form-wrapper{display:flex;flex-direction:column;width:100%;max-width:var(--tamanho-maximo);gap:5px}.mensagem-form{display:block;width:100%}\n"] }]
407
407
  }], ctorParameters: () => [{ type: i1.UnBPessoaService }, { type: i2.MatSnackBar }, { type: i3.UnbMensagemService }], propDecorators: { backendURL: [{
@@ -439,4 +439,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
439
439
  }], isLoadingChange: [{
440
440
  type: Output
441
441
  }] } });
442
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS1wZXNxdWlzYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5iLWxpYi1jb21wb25lbnRzL3NyYy9saWIvdW5iLXBlc3NvYS91bmItcGVzc29hLXBlc3F1aXNhci91bmItcGVzc29hLXBlc3F1aXNhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmItbGliLWNvbXBvbmVudHMvc3JjL2xpYi91bmItcGVzc29hL3VuYi1wZXNzb2EtcGVzcXVpc2FyL3VuYi1wZXNzb2EtcGVzcXVpc2FyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUUzSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBc0IsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQVE1RCxNQUFNLE9BQU8sMkJBQTJCO0lBMkJ0QyxZQUFvQixhQUErQixFQUFVLFFBQXFCLEVBQVUsWUFBZ0M7UUFBeEcsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQTFCNUgsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixxREFBcUQ7UUFDMUIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUVuRCxzRUFBc0U7UUFDOUIsb0JB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aEIsZ0JBQWdCLG1KQUtoQixnQkFBZ0Isb0VBQ2hCLGdCQUFnQiwwTENqQ3RDLDZ5SEF1RU87OzJGRHJETSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLEtBQUs7Z0pBUVUsVUFBVTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBR2UsZUFBZTtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxnQkFBZ0I7c0JBQXZELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsdUJBQXVCO3NCQUE5RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUc3QixpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNrQyxlQUFlO3NCQUF0RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLGtCQUFrQjtzQkFBekQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFHN0IsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBVbmJNZW5zYWdlbVNlcnZpY2UsIFVuYlRpcG9NZW5zYWdlbUVudW0gfSBmcm9tICcuLi8uLi91bmItbWVuc2FnZW0vdW5iLW1lbnNhZ2VtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVbmJVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3VuYi11dGlscyc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYUVtYWlsVGlwbyB9IGZyb20gJy4uL3VuYi1wZXNzb2EtbW9kZWxzL3VuYi1wZXNzb2EtZW1haWwubW9kZWwnO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FFbmRlcmVjb1RpcG8gfSBmcm9tICcuLi91bmItcGVzc29hLW1vZGVscy91bmItcGVzc29hLWVuZGVyZWNvLm1vZGVsJztcclxuaW1wb3J0IHsgVW5iUGVzc29hVGVsZWZvbmVUaXBvIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS10ZWxlZm9uZS5tb2RlbCc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYU1vZGVsIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS5tb2RlbCc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYUVycm9QYWRyYW8sIFVuQlBlc3NvYVNlcnZpY2UgfSBmcm9tICcuLi91bmItcGVzc29hLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVbmJUaXBvUGVzc29hRW51bSB9IGZyb20gJy4uL3VuYi10aXBvLXBlc3NvYS5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXVuYi1wZXNzb2EtcGVzcXVpc2FyJyxcclxuICBzdGFuZGFsb25lOiBmYWxzZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdW5iLXBlc3NvYS1wZXNxdWlzYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi91bmItcGVzc29hLXBlc3F1aXNhci5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVW5iUGVzc29hUGVzcXVpc2FyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgLy8gQ29uZmlndXJhw6fDo28gZGEgQVBJLiBFeGVtcGxvIFNHSS51bmIuYnIvcGVzc29hLWFwaVxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGJhY2tlbmRVUkw6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIC8vIEZsYWdzIGRlIFBlc3F1aXNhIChjb20gY29udmVyc8OjbyBhdXRvbcOhdGljYSBkZSBzdHJpbmcgcGFyYSBib29sZWFuKVxyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwZXNxdWlzYXJQb3JDUEYgPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwZXNxdWlzYXJQb3JDTlBKID0gdHJ1ZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcGVzcXVpc2FyUG9yRXN0cmFuZ2Vpcm8gPSBmYWxzZTtcclxuXHJcbiAgLy8gQ29uZmlndXJhw6fDtWVzIGRlIFVJIGUgQ29tcG9ydGFtZW50b1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRUaXBvUGVzc29hOiBVbmJUaXBvUGVzc29hRW51bSB8ICdGSVNJQ0EnIHwgJ0pVUklESUNBJyB8ICdFU1RSQU5HRUlSQScgPSBVbmJUaXBvUGVzc29hRW51bS5GSVNJQ0E7XHJcbiAgQElucHV0KCkgY2FtcG9QZXNxdWlzYU1heFdpZHRoOiBzdHJpbmcgPSAnNDAwcHgnO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBtb3N0cmFyUGVzcXVpc2EgPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBsaW1wYXJBcG9zUGVzcXVpc2EgPSBmYWxzZTtcclxuXHJcbiAgLy8gVGV4dG9zIGUgTGFiZWxzXHJcbiAgQElucHV0KCkgbGFiZWwgPSBcIkRpZ2l0ZSBvIENQRi9DTlBKIG91IFBhc3NhcG9ydGVcIjtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgQElucHV0KCkgaGludCA9IFwiXCI7XHJcblxyXG4gIC8vIERhZG9zIGUgRXZlbnRvc1xyXG4gIEBJbnB1dCgpIHBlc3NvYSA9IG5ldyBVbmJQZXNzb2FNb2RlbCgpO1xyXG4gIEBPdXRwdXQoKSBwZXNzb2FFbWl0dGVkID0gbmV3IEV2ZW50RW1pdHRlcjxVbmJQZXNzb2FNb2RlbD4oKTtcclxuICBAT3V0cHV0KCkgaXNMb2FkaW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBlc3NvYVNlcnZpY2U6IFVuQlBlc3NvYVNlcnZpY2UsIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLCBwcml2YXRlIGFsZXJ0U2VydmljZTogVW5iTWVuc2FnZW1TZXJ2aWNlKSB7IH1cclxuXHJcbiAgcGVzc29hRW5jb250cmFkbzogQm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcclxuICBtb3N0cmFyVGlwb1Blc3NvYSE6IGJvb2xlYW47XHJcbiAgbGlzdGFUaXBvRW5kZXJlY286IFVuYlBlc3NvYUVuZGVyZWNvVGlwb1tdID0gW107XHJcbiAgbGlzdGFUaXBvVGVsZWZvbmU6IFVuYlBlc3NvYVRlbGVmb25lVGlwb1tdID0gW107XHJcbiAgbGlzdGFUaXBvRW1haWw6IFVuYlBlc3NvYUVtYWlsVGlwb1tdID0gW107XHJcblxyXG4gIGlkTWVuc2FnZW1TZXJ2aWNlID0gXCJVbmJQZXNzb2FQZXNxdWlzYXJcIjtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyAxLiBWYWxpZGHDp8OjbyBkZSBJbmljaWFsaXphw6fDo28gZGEgQVBJXHJcbiAgICBpZiAoIXRoaXMuYmFja2VuZFVSTCkge1xyXG4gICAgICB0aGlzLmhhbmRsZUVycm9yUHJpbnRDb25zb2xlKFwiW1VuYlBlc3NvYVBlc3F1aXNhckNvbXBvbmVudF0gRVJST1I6IGJhY2tlbmRVUkwgZXN0w6EgbnVsbC5cIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucGVzc29hU2VydmljZS5zZXRCYWNrZW5kVXJsKHRoaXMuYmFja2VuZFVSTCk7XHJcblxyXG4gICAgLy8gMi4gQ2FycmVnYW1lbnRvIGRlIERhZG9zIGRlIEFwb2lvXHJcbiAgICBmb3JrSm9pbih7XHJcbiAgICAgIHRpcG9zRW5kOiB0aGlzLnBlc3NvYVNlcnZpY2UuZ2V0VGlwb0VuZGVyZWNvKCksXHJcbiAgICAgIHRpcG9zVGVsOiB0aGlzLnBlc3NvYVNlcnZpY2UuZ2V0VGlwb1RlbGVmb25lKCksXHJcbiAgICAgIHRpcG9zRW1haWw6IHRoaXMucGVzc29hU2VydmljZS5nZXRUaXBvRW1haWwoKVxyXG4gICAgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHsgdGlwb3NFbmQsIHRpcG9zVGVsLCB0aXBvc0VtYWlsIH0pID0+IHtcclxuICAgICAgICB0aGlzLmxpc3RhVGlwb0VuZGVyZWNvID0gdGlwb3NFbmQ7XHJcbiAgICAgICAgdGhpcy5saXN0YVRpcG9UZWxlZm9uZSA9IHRpcG9zVGVsO1xyXG4gICAgICAgIHRoaXMubGlzdGFUaXBvRW1haWwgPSB0aXBvc0VtYWlsO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoXCJGYWxoYSBhbyBjYXJyZWdhciBkYWRvcyBkZSBhcG9pby4gUmVjYXJyZWd1ZSBhIHDDoWdpbmEuXCIpO1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvIG5vIGZvcmtKb2luOlwiLCBlcnIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyAzLiBEZWZpbmnDp8OjbyBkYSBMw7NnaWNhIGRlIEV4aWJpw6fDo28gZSBUaXBvIFBhZHLDo29cclxuICAgIGNvbnN0IG9wY29lc0F0aXZhcyA9IFt0aGlzLnBlc3F1aXNhclBvckNQRiwgdGhpcy5wZXNxdWlzYXJQb3JDTlBKLCB0aGlzLnBlc3F1aXNhclBvckVzdHJhbmdlaXJvXS5maWx0ZXIodiA9PiB2KS5sZW5ndGg7XHJcblxyXG4gICAgLy8gU8OzIG1vc3RyYSBvIHLDoWRpbyBzZSBob3V2ZXIgZXNjb2xoYSByZWFsIChtYWlzIGRlIHVtYSBvcMOnw6NvIGF0aXZhKVxyXG4gICAgdGhpcy5tb3N0cmFyVGlwb1Blc3NvYSA9IG9wY29lc0F0aXZhcyA+IDE7XHJcblxyXG4gICAgaWYgKG9wY29lc0F0aXZhcyA9PT0gMCkge1xyXG4gICAgICB0aGlzLmhhbmRsZUVycm9yUHJpbnRDb25zb2xlKFwiW1VuYlBlc3NvYVBlc3F1aXNhckNvbXBvbmVudF0gRVJST1I6IE5lbmh1bWEgb3DDp8OjbyBkZSBwZXNxdWlzYSAoQ1BGL0NOUEovRXN0cmFuZ2Vpcm8pIGVzdMOhIGF0aXZhLlwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDQuIEF0cmlidWnDp8OjbyBkbyBUaXBvIEluaWNpYWwgKE9yZGVtIGRlIHByaW9yaWRhZGU6IFZhbG9yIHBhZHLDo28gLT4gT3DDp8OjbyDDmm5pY2EgLT4gQ1BGKVxyXG4gICAgdGhpcy5kZWZpbmlyVGlwb1Blc3NvYUluaWNpYWwoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZSBxdWFsIHRpcG8gZGUgcGVzc29hIGVzdGFyw6Egc2VsZWNpb25hZG8gYW8gY2FycmVnYXIgbyBjb21wb25lbnRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkZWZpbmlyVGlwb1Blc3NvYUluaWNpYWwoKTogdm9pZCB7XHJcbiAgICAvLyBWZXJpZmljYSBzZSBvIHBhZHLDo28gcGFzc2FkbyDDqSBwZXJtaXRpZG8gcGVsYXMgZmxhZ3MgZGUgcGVzcXVpc2FcclxuICAgIGNvbnN0IHBhZHJhb0VoVmFsaWRvID1cclxuICAgICAgICAodGhpcy5kZWZhdWx0VGlwb1Blc3NvYSA9PT0gVW5iVGlwb1Blc3NvYUVudW0uRklTSUNBICYmIHRoaXMucGVzcXVpc2FyUG9yQ1BGKSB8fFxyXG4gICAgICAgICh0aGlzLmRlZmF1bHRUaXBvUGVzc29hID09PSBVbmJUaXBvUGVzc29hRW51bS5KVVJJRElDQSAmJiB0aGlzLnBlc3F1aXNhclBvckNOUEopIHx8XHJcbiAgICAgICAgKHRoaXMuZGVmYXVsdFRpcG9QZXNzb2EgPT09IFVuYlRpcG9QZXNzb2FFbnVtLkVTVFJBTkdFSVJBICYmIHRoaXMucGVzcXVpc2FyUG9yRXN0cmFuZ2Vpcm8pO1xyXG5cclxuICAgIGlmIChwYWRyYW9FaFZhbGlkbykge1xyXG4gICAgICAgIC8vIENvbW8gbyB2YWxvciBkYSBzdHJpbmcgw6kgaWd1YWwgYW8gdmFsb3IgZG8gRW51bSwgYSBhdHJpYnVpw6fDo28gw6kgZGlyZXRhXHJcbiAgICAgICAgdGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9IHRoaXMuZGVmYXVsdFRpcG9QZXNzb2EgYXMgVW5iVGlwb1Blc3NvYUVudW07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRUaXBvUGVzc29hKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgICAgICAgIGBbVW5iUGVzc29hUGVzcXVpc2FyXSBPIHZhbG9yIGRlZmF1bHRUaXBvUGVzc29hPScke3RoaXMuZGVmYXVsdFRpcG9QZXNzb2F9JyDDqSBpbmNvbXBhdMOtdmVsIGNvbSBhcyBvcMOnw7VlcyBkZSBwZXNxdWlzYSBhdGl2YXMuIFNlbGVjaW9uYW5kbyBhIHByaW1laXJhIGRpc3BvbsOtdmVsLmBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEZhbGxiYWNrIHBhcmEgYSBwcmltZWlyYSBvcMOnw6NvIGF0aXZhXHJcbiAgICAgICAgaWYgKHRoaXMucGVzcXVpc2FyUG9yQ1BGKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPSBVbmJUaXBvUGVzc29hRW51bS5GSVNJQ0E7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBlc3F1aXNhclBvckNOUEopIHtcclxuICAgICAgICAgICAgdGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9IFVuYlRpcG9QZXNzb2FFbnVtLkpVUklESUNBO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wZXNxdWlzYXJQb3JFc3RyYW5nZWlybykge1xyXG4gICAgICAgICAgICB0aGlzLnBlc3NvYS50aXBvUGVzc29hID0gVW5iVGlwb1Blc3NvYUVudW0uRVNUUkFOR0VJUkE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25UaXBvUGVzc29hQ2hhbmdlKCkge1xyXG4gICAgLy8gQ3JpYSB1bWEgbm92YSBwZXNzb2EgbGltcGEgY29tIG8gdGlwbyBzZWxlY2lvbmFkb1xyXG4gICAgY29uc3Qgbm92YVBlc3NvYSA9IG5ldyBVbmJQZXNzb2FNb2RlbCgpO1xyXG4gICAgbm92YVBlc3NvYS50aXBvUGVzc29hID0gdGhpcy5wZXNzb2EudGlwb1Blc3NvYTtcclxuXHJcbiAgICAvLyBJbmljaWFsaXphIGFycmF5cyB2YXppb3NcclxuICAgIG5vdmFQZXNzb2EudGVsZWZvbmVzID0gW107XHJcbiAgICBub3ZhUGVzc29hLmVuZGVyZWNvcyA9IFtdO1xyXG4gICAgbm92YVBlc3NvYS5lbWFpbHMgPSBbXTtcclxuXHJcbiAgICAvLyBTdWJzdGl0dWkgYSBwZXNzb2EgYXR1YWxcclxuICAgIHRoaXMucGVzc29hID0gbm92YVBlc3NvYTtcclxuXHJcbiAgICAvLyBFbWl0ZSBhIG5vdmEgcGVzc29hIGxpbXBhIHBhcmEgbyBjb21wb25lbnRlIHBhaSAoZm9ybSlcclxuICAgIHRoaXMucGVzc29hRW1pdHRlZC5lbWl0KHRoaXMucGVzc29hKTtcclxuICB9XHJcblxyXG4gIHBlc3F1aXNhcigpIHtcclxuICAgIGlmICh0aGlzLnZhbGlkYXIoKSA9PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5pc0xvYWRpbmdDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIGxldCByZXN1bHQ7XHJcbiAgICBpZiAodGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9PSBVbmJUaXBvUGVzc29hRW51bS5GSVNJQ0EpIHtcclxuICAgICAgbGV0IGNwZiA9IHRoaXMucGVzc29hLmNwZi5tYXRjaCgvXFxkL2cpPy5qb2luKFwiXCIpOyAvLyByZW1vdmUgY2FyYWN0ZXJlcyBcclxuICAgICAgcmVzdWx0ID0gdGhpcy5wZXNzb2FTZXJ2aWNlLmZpbmRCeUNwZihjcGYpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFVuYlRpcG9QZXNzb2FFbnVtLkpVUklESUNBKSB7XHJcbiAgICAgIGxldCBjbnBqID0gdGhpcy5wZXNzb2EuY25wai5tYXRjaCgvXFxkL2cpPy5qb2luKFwiXCIpOyAvLyByZW1vdmUgY2FyYWN0ZXJlcyBcclxuICAgICAgcmVzdWx0ID0gdGhpcy5wZXNzb2FTZXJ2aWNlLmZpbmRCeUNucGooY25waik7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPT0gVW5iVGlwb1Blc3NvYUVudW0uRVNUUkFOR0VJUkEpIHtcclxuICAgICAgcmVzdWx0ID0gdGhpcy5wZXNzb2FTZXJ2aWNlLmZpbmRCeVBhc3NhcG9ydGUodGhpcy5wZXNzb2EucGFzc2Fwb3J0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICByZXN1bHQuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiB0aGlzLmhhZGxlUmVzdWx0LmJpbmQodGhpcyksXHJcbiAgICAgICAgZXJyb3I6IHRoaXMuaGFuZGxlRXJyb3IuYmluZCh0aGlzKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICB2YWxpZGFyKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuYmFja2VuZFVSTCA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3JQcmludENvbnNvbGUoXCJbVW5iUGVzc29hUGVzcXVpc2FyQ29tcG9uZW50XSBFUlJPUjogYmFja2VuZFVSTC51cmwgZXN0w6EgbnVsbC4gSW5zaXJhIG8gcGFyw6JtZXRybyAoYmFja2VuZFVSTCkgY29tIG8gdmFsb3IgZGEgVVJMIGRvIHNldSBCYWNrZW5kIVwiKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPT0gVW5iVGlwb1Blc3NvYUVudW0uRklTSUNBKSB7XHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS5jcGYgPT0gbnVsbCB8fCAodGhpcy5wZXNzb2EuY3BmICE9IG51bGwgJiYgdGhpcy5wZXNzb2EuY3BmID09IFwiXCIpKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihcIkNQRiDDqSB1bSBjYW1wbyBvYnJpZ2F0w7NyaW8uXCIpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2UgaWYgKCFVbmJVdGlscy52YWxpZGFyQ1BGKHRoaXMucGVzc29hLmNwZikpIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKFwiRGlnaXRlIHVtIHZhbG9yIHbDoWxpZG8gcGFyYSBvIENQRlwiKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFVuYlRpcG9QZXNzb2FFbnVtLkpVUklESUNBKSB7XHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS5jbnBqID09IG51bGwgfHwgKHRoaXMucGVzc29hLmNucGogIT0gbnVsbCAmJiB0aGlzLnBlc3NvYS5jbnBqID09IFwiXCIpKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihcIkNOUEogw6kgdW0gY2FtcG8gb2JyaWdhdMOzcmlvXCIpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2UgaWYgKCFVbmJVdGlscy52YWxpZGFyQ05QSih0aGlzLnBlc3NvYS5jbnBqKSkge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoXCJEaWdpdGUgdW0gdmFsb3IgdsOhbGlkbyBwYXJhIG8gQ05QSiFcIilcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9PSBVbmJUaXBvUGVzc29hRW51bS5FU1RSQU5HRUlSQSkge1xyXG4gICAgICBpZiAodGhpcy5wZXNzb2EucGFzc2Fwb3J0ZSA9PSBudWxsIHx8ICh0aGlzLnBlc3NvYS5wYXNzYXBvcnRlICE9IG51bGwgJiYgdGhpcy5wZXNzb2EucGFzc2Fwb3J0ZSA9PSBcIlwiKSkge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoXCJQYXNzYXBvcnRlIMOpIHVtIGNhbXBvIG9icmlnYXTDs3Jpb1wiKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5oYW5kbGVFcnJvcihcIlNlbGVjaW9uZSB1bSB0aXBvIGRlIHBlc3NvYSFcIilcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gRW0gdW5iLXBlc3NvYS1wZXNxdWlzYXIuY29tcG9uZW50LnRzXHJcbiAgaGFkbGVSZXN1bHQocmVzdWx0YWRvOiBVbmJQZXNzb2FNb2RlbCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNMb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG5cclxuICAgIGlmIChyZXN1bHRhZG8pIHtcclxuICAgICAgcmVzdWx0YWRvLnRpcG9QZXNzb2EgPSB0aGlzLnBlc3NvYS50aXBvUGVzc29hOyAvLyBvIGJhY2tlbmQgbmFvIHJldG9ybmEgbyB0aXBvIHBlc3NvYS4gZW50YW8gdGVuaG8gcXVlIGF0cmlidWlyIGFudGVzXHJcbiAgICAgIHRoaXMucGVzc29hID0gcmVzdWx0YWRvO1xyXG5cclxuICAgICAgdGhpcy5wZXNzb2EuZW5kZXJlY29zID0gdGhpcy5wZXNzb2EuZW5kZXJlY29zIHx8IFtdO1xyXG4gICAgICB0aGlzLnBlc3NvYS50ZWxlZm9uZXMgPSB0aGlzLnBlc3NvYS50ZWxlZm9uZXMgfHwgW107XHJcbiAgICAgIHRoaXMucGVzc29hLmVtYWlscyA9IHRoaXMucGVzc29hLmVtYWlscyB8fCBbXTtcclxuXHJcbiAgICAgIC8vIC0tLSBTRcOHw4NPIERFIExJTVBFWkEgREUgREFET1MgUFJJTkNJUEFJUyAoVk9Dw4ogSsOBIFRJTkhBKSAtLS1cclxuICAgICAgaWYgKHRoaXMucGVzc29hLnNleG8pIHtcclxuICAgICAgICBpZiAodGhpcy5wZXNzb2Euc2V4by50b1VwcGVyQ2FzZSgpLnRyaW0oKSA9PT0gJ0ZFTUlOSU5PJykge1xyXG4gICAgICAgICAgdGhpcy5wZXNzb2EuY29kaWdvU2V4byA9IDI7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS5zZXhvLnRvVXBwZXJDYXNlKCkudHJpbSgpID09PSAnTUFTQ1VMSU5PJykge1xyXG4gICAgICAgICAgdGhpcy5wZXNzb2EuY29kaWdvU2V4byA9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5wZXNzb2EuZGF0YU5hc2NpbWVudG8pIHtcclxuICAgICAgICB0aGlzLnBlc3NvYS5kYXRhTmFzY2ltZW50byA9IHRoaXMucGFyc2VEYXRhKHRoaXMucGVzc29hLmRhdGFOYXNjaW1lbnRvKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMucGVzc29hLmVzdGFkb0NpdmlsKSB7XHJcbiAgICAgICAgdGhpcy5wZXNzb2EuY29kaWdvRXN0YWRvQ2l2aWwgPSB0aGlzLnBhcnNlQ29kaWdvKHRoaXMucGVzc29hLmVzdGFkb0NpdmlsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMucGVzc29hLnBhaXNOYXNjaW1lbnRvKSB7XHJcbiAgICAgICAgdGhpcy5wZXNzb2EuY29kaWdvUGFpc05hc2NpbWVudG8gPSB0aGlzLnBhcnNlQ29kaWdvKHRoaXMucGVzc29hLnBhaXNOYXNjaW1lbnRvKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMucGVzc29hLmVzY29sYXJpZGFkZSkge1xyXG4gICAgICAgIHRoaXMucGVzc29hLmVzY29sYXJpZGFkZSA9IHRoaXMucGFyc2VDb2RpZ28odGhpcy5wZXNzb2EuZXNjb2xhcmlkYWRlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gMS4gUHJvY2Vzc2EgRW5kZXJlw6dvc1xyXG4gICAgICAvLyBPIHBheWxvYWQgJ3NhbHZhcicgZXNwZXJhOiBvcmRlbUVuZGVyZWNvLCB0aXBvRW5kZXJlY29Db2RpZ28sIHBhaXNFbmRlcmVjb0NvZGlnbywgdWZFbmRlcmVjb1xyXG4gICAgICAvLyAxLiBQcm9jZXNzYSBFbmRlcmXDp29zXHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS5lbmRlcmVjb3MgJiYgdGhpcy5saXN0YVRpcG9FbmRlcmVjby5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgLy8gLS0tIENPUlJFw4fDg086IEFkaWNpb25hZG8gJ2knIGFvIGZvckVhY2ggLS0tXHJcbiAgICAgICAgdGhpcy5wZXNzb2EuZW5kZXJlY29zLmZvckVhY2goKGVuZCwgaSkgPT4ge1xyXG4gICAgICAgICAgLy8gVHJhZHV6IG8gJ3RpcG8nIChzdHJpbmcpIHBhcmEgJ3RpcG9FbmRlcmVjb0NvZGlnbycgKG51bWJlcilcclxuICAgICAgICAgIGlmICghZW5kLnRpcG9FbmRlcmVjb0NvZGlnbyAmJiBlbmQudGlwbykge1xyXG4gICAgICAgICAgICBjb25zdCB0aXBvRW5jb250cmFkbyA9IHRoaXMubGlzdGFUaXBvRW5kZXJlY28uZmluZCh0ID0+IHQuZGVub21pbmFjYW8/LnRvTG93ZXJDYXNlKCkgPT09IGVuZC50aXBvPy50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgaWYgKHRpcG9FbmNvbnRyYWRvKSBlbmQudGlwb0VuZGVyZWNvQ29kaWdvID0gdGlwb0VuY29udHJhZG8uY29kaWdvO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gVHJhZHV6ICdwYWlzJyAoc3RyaW5nICcyMiAtIEJSQVNJTCcpIHBhcmEgJ3BhaXNFbmRlcmVjb0NvZGlnbycgKG51bWJlcilcclxuICAgICAgICAgIGlmICghZW5kLnBhaXNFbmRlcmVjb0NvZGlnbyAmJiBlbmQucGFpcykge1xyXG4gICAgICAgICAgICBlbmQucGFpc0VuZGVyZWNvQ29kaWdvID0gdGhpcy5wYXJzZUNvZGlnbyhlbmQucGFpcyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gTWFwZWlhICdvcmRlbScgLT4gJ29yZGVtRW5kZXJlY28nIG91IHVzYSBvIMOtbmRpY2UgKGkgKyAxKVxyXG4gICAgICAgICAgLy8gTyBwYXlsb2FkIGRlIHNhbHZhciAobm8gZm9ybSkgZXNwZXJhICdvcmRlbUVuZGVyZWNvJ1xyXG4gICAgICAgICAgZW5kLm9yZGVtRW5kZXJlY28gPSBlbmQub3JkZW1FbmRlcmVjbyB8fCBlbmQub3JkZW0gfHwgKGkgKyAxKTtcclxuXHJcbiAgICAgICAgICAvLyBNYXBlaWEgJ3VmJyAtPiAndWZFbmRlcmVjbydcclxuICAgICAgICAgIGlmICghZW5kLnVmRW5kZXJlY28gJiYgZW5kLnVmKSB7XHJcbiAgICAgICAgICAgIGVuZC51ZkVuZGVyZWNvID0gZW5kLnVmO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyAyLiBQcm9jZXNzYSBUZWxlZm9uZXNcclxuICAgICAgaWYgKHRoaXMucGVzc29hLnRlbGVmb25lcyAmJiB0aGlzLmxpc3RhVGlwb1RlbGVmb25lLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvLyAtLS0gQ09SUkXDh8ODTzogQWRpY2lvbmFkbyAnaScgYW8gZm9yRWFjaCAtLS1cclxuICAgICAgICB0aGlzLnBlc3NvYS50ZWxlZm9uZXMuZm9yRWFjaCgodGVsLCBpKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRlbC50aXBvVGVsZWZvbmVDb2RpZ28gJiYgdGVsLnRpcG8pIHtcclxuICAgICAgICAgICAgY29uc3QgdGlwb0VuY29udHJhZG8gPSB0aGlzLmxpc3RhVGlwb1RlbGVmb25lLmZpbmQodCA9PiB0LmRlbm9taW5hY2FvPy50b0xvd2VyQ2FzZSgpID09PSB0ZWwudGlwbz8udG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgIGlmICh0aXBvRW5jb250cmFkbykgdGVsLnRpcG9UZWxlZm9uZUNvZGlnbyA9IHRpcG9FbmNvbnRyYWRvLmNvZGlnbztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyAtLS0gQ09SUkXDh8ODTzogTMOzZ2ljYSBkYSBPcmRlbSAtLS1cclxuICAgICAgICAgIC8vIE8gcGF5bG9hZCBkZSBzYWx2YXIgKG5vIGZvcm0pIGzDqiAndGVsLm9yZGVtJ1xyXG4gICAgICAgICAgdGVsLm9yZGVtID0gdGVsLm9yZGVtIHx8IChpICsgMSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIDMuIFByb2Nlc3NhIEVtYWlsc1xyXG4gICAgICBpZiAodGhpcy5wZXNzb2EuZW1haWxzICYmIHRoaXMubGlzdGFUaXBvRW1haWwubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIC8vIC0tLSBDT1JSRcOHw4NPOiBBZGljaW9uYWRvICdpJyBhbyBmb3JFYWNoIC0tLVxyXG4gICAgICAgIHRoaXMucGVzc29hLmVtYWlscy5mb3JFYWNoKChlbWFpbCwgaSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFlbWFpbC50aXBvRW1haWxDb2RpZ28gJiYgZW1haWwudGlwbykge1xyXG4gICAgICAgICAgICBjb25zdCB0aXBvRW5jb250cmFkbyA9IHRoaXMubGlzdGFUaXBvRW1haWwuZmluZCh0ID0+IHQuZGVub21pbmFjYW8/LnRvTG93ZXJDYXNlKCkgPT09IGVtYWlsLnRpcG8/LnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICBpZiAodGlwb0VuY29udHJhZG8pIGVtYWlsLnRpcG9FbWFpbENvZGlnbyA9IHRpcG9FbmNvbnRyYWRvLmNvZGlnbztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyAtLS0gQ09SUkXDh8ODTzogTMOzZ2ljYSBkYSBPcmRlbSAtLS1cclxuICAgICAgICAgIC8vIE8gcGF5bG9hZCBkZSBzYWx2YXIgKG5vIGZvcm0pIGzDqiAnZW1haWwub3JkZW0nXHJcbiAgICAgICAgICBlbWFpbC5vcmRlbSA9IGVtYWlsLm9yZGVtIHx8IChpICsgMSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFVuYlRpcG9QZXNzb2FFbnVtLkZJU0lDQSkge1xyXG4gICAgICAgIHRoaXMucGVzc29hLmNwZiA9IFVuYlV0aWxzLmZvcm1hdGFDcGYocmVzdWx0YWRvLmNwZik7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9PSBVbmJUaXBvUGVzc29hRW51bS5KVVJJRElDQSkge1xyXG4gICAgICAgIHRoaXMucGVzc29hLmNucGogPSBVbmJVdGlscy5mb3JtYXRhQ25waihyZXN1bHRhZG8uY25waik7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9PSBVbmJUaXBvUGVzc29hRW51bS5FU1RSQU5HRUlSQSkge1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBzZSBjaGVnYXIgYWtpIGVoIHBxIG5hbyBlbmNvbnRyb3UuLi4gKGzDs2dpY2EgcXVlIGrDoSBleGlzdGUpXHJcbiAgICAgIGxldCBub3ZhUGVzc29hID0gbmV3IFVuYlBlc3NvYU1vZGVsKCk7XHJcbiAgICAgIG5vdmFQZXNzb2EudGlwb1Blc3NvYSA9IHRoaXMucGVzc29hLnRpcG9QZXNzb2E7XHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFVuYlRpcG9QZXNzb2FFbnVtLkZJU0lDQSkge1xyXG4gICAgICAgIG5vdmFQZXNzb2EuY3BmID0gdGhpcy5wZXNzb2EuY3BmO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPT0gVW5iVGlwb1Blc3NvYUVudW0uSlVSSURJQ0EpIHtcclxuICAgICAgICBub3ZhUGVzc29hLmNucGogPSB0aGlzLnBlc3NvYS5jbnBqO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5vdmFQZXNzb2EucGFzc2Fwb3J0ZSA9IHRoaXMucGVzc29hLnBhc3NhcG9ydGU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wZXNzb2EgPSBub3ZhUGVzc29hO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGVzc29hRW1pdHRlZC5lbWl0KHRoaXMucGVzc29hKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFyc2VDb2RpZ28odmFsb3JTdHJpbmc6IGFueSk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWxvclN0cmluZyA9PT0gJ251bWJlcicpIHtcclxuICAgICAgcmV0dXJuIHZhbG9yU3RyaW5nOyAvLyBKw6Egw6kgdW0gbsO6bWVyb1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB2YWxvclN0cmluZyAhPT0gJ3N0cmluZycgfHwgIXZhbG9yU3RyaW5nLmluY2x1ZGVzKCcgLSAnKSkge1xyXG4gICAgICAvLyBUZW50YSBjb252ZXJ0ZXIgZGlyZXRvLCBjYXNvIG8gYmFja2VuZCBtYW5kZSBzw7MgbyBuw7ptZXJvIGNvbW8gc3RyaW5nXHJcbiAgICAgIGNvbnN0IG51bSA9IHBhcnNlSW50KHZhbG9yU3RyaW5nLCAxMCk7XHJcbiAgICAgIHJldHVybiBpc05hTihudW0pID8gbnVsbCA6IG51bTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXJ0ZXMgPSB2YWxvclN0cmluZy5zcGxpdCgnIC0gJyk7XHJcbiAgICBjb25zdCBjb2RpZ28gPSBwYXJzZUludChwYXJ0ZXNbMF0udHJpbSgpLCAxMCk7XHJcbiAgICByZXR1cm4gaXNOYU4oY29kaWdvKSA/IG51bGwgOiBjb2RpZ287XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0ZSB1bWEgc3RyaW5nIG5vIGZvcm1hdG8gJ2RkL01NL3l5eXknIHBhcmEgdW0gb2JqZXRvIERhdGUuXHJcbiAgICogUmV0b3JuYSBudWxsIHNlIG8gZm9ybWF0byBmb3IgaW52w6FsaWRvLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGFyc2VEYXRhKGRhdGFTdHJpbmc6IGFueSk6IERhdGUgfCBudWxsIHtcclxuICAgIGlmIChkYXRhU3RyaW5nIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICByZXR1cm4gZGF0YVN0cmluZzsgLy8gSsOhIMOpIHVtIG9iamV0byBEYXRlXHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGRhdGFTdHJpbmcgIT09ICdzdHJpbmcnIHx8ICFkYXRhU3RyaW5nLmluY2x1ZGVzKCcvJykpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGFydGVzID0gZGF0YVN0cmluZy5zcGxpdCgnLycpOyAvLyBbZGQsIE1NLCB5eXl5XVxyXG4gICAgaWYgKHBhcnRlcy5sZW5ndGggPT09IDMpIHtcclxuICAgICAgY29uc3QgZGlhID0gcGFyc2VJbnQocGFydGVzWzBdLCAxMCk7XHJcbiAgICAgIGNvbnN0IG1lcyA9IHBhcnNlSW50KHBhcnRlc1sxXSwgMTApIC0gMTsgLy8gTcOqcyBubyBKUyDDqSAwLWluZGV4YWRvXHJcbiAgICAgIGNvbnN0IGFubyA9IHBhcnNlSW50KHBhcnRlc1syXSwgMTApO1xyXG5cclxuICAgICAgLy8gVmVyaWZpY2Egc2UgYSBkYXRhIMOpIHbDoWxpZGFcclxuICAgICAgY29uc3QgZGF0YU9iaiA9IG5ldyBEYXRlKGFubywgbWVzLCBkaWEpO1xyXG4gICAgICBpZiAoZGF0YU9iai5nZXRGdWxsWWVhcigpID09PSBhbm8gJiYgZGF0YU9iai5nZXRNb250aCgpID09PSBtZXMgJiYgZGF0YU9iai5nZXREYXRlKCkgPT09IGRpYSkge1xyXG4gICAgICAgIHJldHVybiBkYXRhT2JqO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDsgLy8gRm9ybWF0byBpbnbDoWxpZG9cclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9yKGVycm86IFVuYlBlc3NvYUVycm9QYWRyYW8gfCBzdHJpbmcpIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgIHRoaXMucGVzc29hRW5jb250cmFkbyA9IGZhbHNlO1xyXG5cclxuICAgIGxldCBlcnJvVHJhdGFkbzogVW5iUGVzc29hRXJyb1BhZHJhbztcclxuXHJcbiAgICAvLyAtLS0gQURBUFRFUjogQ29udmVydGUgc3RyaW5nIHBhcmEgbyBPYmpldG8gUGFkcsOjbyAtLS1cclxuICAgIGlmICh0eXBlb2YgZXJybyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgZXJyb1RyYXRhZG8gPSB7XHJcbiAgICAgICAgc3RhdHVzOiA0MDAsIC8vIEVycm8gZGUgdmFsaWRhw6fDo28gbG9jYWwgZ2VyYWxtZW50ZSDDqSA0MDBcclxuICAgICAgICBtZW5zYWdlbVNpbXBsZXM6IGVycm8sXHJcbiAgICAgICAgbWVuc2FnZW1IdG1sOiBgPHN0cm9uZz4ke2Vycm99PC9zdHJvbmc+YFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gU2UgasOhIHZlaW8gZG8gU2VydmljZSAob3Ugw6kgdW0gb2JqZXRvIG1hbnVhbCksIHVzYSBkaXJldG9cclxuICAgICAgZXJyb1RyYXRhZG8gPSBlcnJvO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIC0tLSBMw5NHSUNBIERFIEVYSUJJw4fDg08gLS0tXHJcblxyXG4gICAgLy8gMS4gU25hY2tCYXIgKE1lbnNhZ2VtIGN1cnRhKVxyXG4gICAgaWYgKGVycm9UcmF0YWRvLm1lbnNhZ2VtU2ltcGxlcykge1xyXG4gICAgICB0aGlzLm9wZW5TbmFja0JhcihlcnJvVHJhdGFkby5tZW5zYWdlbVNpbXBsZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDIuIENvbXBvbmVudGUgZGUgTWVuc2FnZW0gKE1lbnNhZ2VtIEhUTUwpXHJcbiAgICBpZiAodGhpcy5hbGVydFNlcnZpY2UgJiYgZXJyb1RyYXRhZG8ubWVuc2FnZW1IdG1sKSB7XHJcbiAgICAgIC8vIFNlIHZvY8OqIHRpdmVyIGEgdmFyacOhdmVsIGlkTWVuc2FnZW1TZXJ2aWNlIGRlZmluaWRhIG5hIGNsYXNzZTpcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoZXJyb1RyYXRhZG8ubWVuc2FnZW1IdG1sLCBVbmJUaXBvTWVuc2FnZW1FbnVtLkRBTkdFUiwgdGhpcy5pZE1lbnNhZ2VtU2VydmljZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVFcnJvclByaW50Q29uc29sZShlcnJvOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKGVycm8pO1xyXG4gICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvKTtcclxuICB9XHJcblxyXG4gIG9wZW5TbmFja0JhcihtZXNzYWdlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlLCAneCcsIHtcclxuICAgICAgZHVyYXRpb246IDUwMDAsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRpcG9QZXNzb2FFbnVtKCkge1xyXG4gICAgcmV0dXJuIFVuYlRpcG9QZXNzb2FFbnVtO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0YSBvIENQRiBlbnF1YW50byBvIHVzdcOhcmlvIGRpZ2l0YVxyXG4gICAqL1xyXG4gIGZvcm1hdGFyQ3BmKGV2ZW50OiBhbnkpIHtcclxuICAgIGxldCB2YWxvciA9IGV2ZW50LnRhcmdldC52YWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpOyAvLyBSZW1vdmUgdHVkbyBxdWUgbsOjbyDDqSBkw61naXRvXHJcblxyXG4gICAgaWYgKHZhbG9yLmxlbmd0aCA8PSAxMSkge1xyXG4gICAgICAvLyBBcGxpY2EgbcOhc2NhcmE6IDAwMC4wMDAuMDAwLTAwXHJcbiAgICAgIHZhbG9yID0gdmFsb3IucmVwbGFjZSgvKFxcZHszfSkoXFxkKS8sICckMS4kMicpO1xyXG4gICAgICB2YWxvciA9IHZhbG9yLnJlcGxhY2UoLyhcXGR7M30pKFxcZCkvLCAnJDEuJDInKTtcclxuICAgICAgdmFsb3IgPSB2YWxvci5yZXBsYWNlKC8oXFxkezN9KShcXGR7MSwyfSkkLywgJyQxLSQyJyk7XHJcbiAgICAgIHRoaXMucGVzc29hLmNwZiA9IHZhbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0YSBvIENOUEogZW5xdWFudG8gbyB1c3XDoXJpbyBkaWdpdGFcclxuICAgKi9cclxuICBmb3JtYXRhckNucGooZXZlbnQ6IGFueSkge1xyXG4gICAgbGV0IHZhbG9yID0gZXZlbnQudGFyZ2V0LnZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnJyk7IC8vIFJlbW92ZSB0dWRvIHF1ZSBuw6NvIMOpIGTDrWdpdG9cclxuXHJcbiAgICBpZiAodmFsb3IubGVuZ3RoIDw9IDE0KSB7XHJcbiAgICAgIC8vIEFwbGljYSBtw6FzY2FyYTogMDAuMDAwLjAwMC8wMDAwLTAwXHJcbiAgICAgIHZhbG9yID0gdmFsb3IucmVwbGFjZSgvKFxcZHsyfSkoXFxkKS8sICckMS4kMicpO1xyXG4gICAgICB2YWxvciA9IHZhbG9yLnJlcGxhY2UoLyhcXGR7M30pKFxcZCkvLCAnJDEuJDInKTtcclxuICAgICAgdmFsb3IgPSB2YWxvci5yZXBsYWNlKC8oXFxkezN9KShcXGQpLywgJyQxLyQyJyk7XHJcbiAgICAgIHZhbG9yID0gdmFsb3IucmVwbGFjZSgvKFxcZHs0fSkoXFxkezEsMn0pJC8sICckMS0kMicpO1xyXG4gICAgICB0aGlzLnBlc3NvYS5jbnBqID0gdmFsb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGZvcm0gI3Blc3NvYUZvcm09XCJuZ0Zvcm1cIiBjbGFzcz1cInBlc3F1aXNhLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cInsnLS10YW1hbmhvLW1heGltbyc6IGNhbXBvUGVzcXVpc2FNYXhXaWR0aH1cIlxyXG4gIChuZ1N1Ym1pdCk9XCJwZXNxdWlzYXIoKVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtZW5zYWdlbS1jb250YWluZXJcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG4gICAgPHVuYi1tZW5zYWdlbSBbaWRlbnRpZmljYWRvcl09XCJpZE1lbnNhZ2VtU2VydmljZVwiIGNsYXNzPVwibWVuc2FnZW0tZm9ybVwiPjwvdW5iLW1lbnNhZ2VtPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS13cmFwcGVyXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwibW9zdHJhclRpcG9QZXNzb2FcIiBjbGFzcz1cInJhZGlvLWNvbnRhaW5lclwiPlxyXG4gICAgICA8bWF0LXJhZGlvLWdyb3VwIGFyaWEtbGFiZWw9XCJUaXBvIGRlIFBlc3NvYVwiIFsobmdNb2RlbCldPVwicGVzc29hLnRpcG9QZXNzb2FcIiAjdGlwb1Blc3NvYT1cIm5nTW9kZWxcIlxyXG4gICAgICAgIG5hbWU9XCJ0aXBvUGVzc29hXCIgKGNoYW5nZSk9XCJvblRpcG9QZXNzb2FDaGFuZ2UoKVwiPlxyXG4gICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICpuZ0lmPVwicGVzcXVpc2FyUG9yQ1BGXCIgdmFsdWU9XCJ7eyB0aXBvUGVzc29hRW51bSgpLkZJU0lDQX19XCI+UGVzc29hIEbDrXNpY2E8L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nSWY9XCJwZXNxdWlzYXJQb3JDTlBKXCIgdmFsdWU9XCJ7e3RpcG9QZXNzb2FFbnVtKCkuSlVSSURJQ0F9fVwiPiBQZXNzb2FcclxuICAgICAgICAgIEp1csOtZGljYTwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiAqbmdJZj1cInBlc3F1aXNhclBvckVzdHJhbmdlaXJvXCJcclxuICAgICAgICAgIHZhbHVlPVwie3t0aXBvUGVzc29hRW51bSgpLkVTVFJBTkdFSVJBfX1cIj5Fc3RyYW5nZWlybzwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYnJlYWtcIj48L2Rpdj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGVzc29hLnRpcG9QZXNzb2EgPT09IHRpcG9QZXNzb2FFbnVtKCkuRklTSUNBXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+Q1BGPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJwZXNzb2EuY3BmXCIgbmFtZT1cImNwZlwiICNjcGY9XCJuZ01vZGVsXCIgcmVxdWlyZWQ9e3t0cnVlfX1cclxuICAgICAgICAgIChpbnB1dCk9XCJmb3JtYXRhckNwZigkZXZlbnQpXCIgbWF4bGVuZ3RoPVwiMTRcIiBwbGFjZWhvbGRlcj1cIjAwMC4wMDAuMDAwLTAwXCIgLz5cclxuICAgICAgICA8YnV0dG9uIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJQZXNxdWlzYXJcIiBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nXCJcclxuICAgICAgICAgIChjbGljayk9XCJwZXNxdWlzYXIoKVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmc7IGVsc2UgbG9hZGluZ0ljb25cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZ0ljb24+XHJcbiAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiMjBcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwic3Bpbm5lci1idXR0b25cIj5cclxuICAgICAgICAgICAgPC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGVzc29hLnRpcG9QZXNzb2EgPT09IHRpcG9QZXNzb2FFbnVtKCkuRVNUUkFOR0VJUkFcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5QYXNzYXBvcnRlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJwZXNzb2EucGFzc2Fwb3J0ZVwiIG5hbWU9XCJwYXNzYXBvcnRlXCIgcmVxdWlyZWQ9XCJ0cnVlXCIgLz5cclxuICAgICAgICA8YnV0dG9uIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJQZXNxdWlzYXJcIiAoY2xpY2spPVwicGVzcXVpc2FyKClcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nOyBlbHNlIGxvYWRpbmdJY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmdJY29uPlxyXG4gICAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgW2RpYW1ldGVyXT1cIjIwXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cInNwaW5uZXItYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBlc3NvYS50aXBvUGVzc29hID09PSB0aXBvUGVzc29hRW51bSgpLkpVUklESUNBXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+Q05QSjwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLmNucGpcIiBuYW1lPVwiY25walwiIHJlcXVpcmVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwiZm9ybWF0YXJDbnBqKCRldmVudClcIiBtYXhsZW5ndGg9XCIxOFwiIHBsYWNlaG9sZGVyPVwiMDAuMDAwLjAwMC8wMDAwLTAwXCIgLz5cclxuICAgICAgICA8YnV0dG9uIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJQZXNxdWlzYXJcIiAoY2xpY2spPVwicGVzcXVpc2FyKClcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nOyBlbHNlIGxvYWRpbmdJY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmdJY29uPlxyXG4gICAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgW2RpYW1ldGVyXT1cIjIwXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cInNwaW5uZXItYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT4iXX0=
442
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS1wZXNxdWlzYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5iLWxpYi1jb21wb25lbnRzL3NyYy9saWIvdW5iLXBlc3NvYS91bmItcGVzc29hLXBlc3F1aXNhci91bmItcGVzc29hLXBlc3F1aXNhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmItbGliLWNvbXBvbmVudHMvc3JjL2xpYi91bmItcGVzc29hL3VuYi1wZXNzb2EtcGVzcXVpc2FyL3VuYi1wZXNzb2EtcGVzcXVpc2FyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUUzSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBc0IsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQVE1RCxNQUFNLE9BQU8sMkJBQTJCO0lBMkJ0QyxZQUFvQixhQUErQixFQUFVLFFBQXFCLEVBQVUsWUFBZ0M7UUFBeEcsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQTFCNUgsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixxREFBcUQ7UUFDMUIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUVuRCxzRUFBc0U7UUFDOUIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUV4RSxzQ0FBc0M7UUFDN0Isc0JBQWlCLEdBQThELGlCQUFpQixDQUFDLE1BQU0sQ0FBQztRQUN4RywwQkFBcUIsR0FBVyxPQUFPLENBQUM7UUFDVCxvQkFBZSxHQUFHLElBQUksQ0FBQztRQUN2Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFbkUsa0JBQWtCO1FBQ1QsVUFBSyxHQUFHLGlDQUFpQyxDQUFDO1FBQzFDLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFbkIsa0JBQWtCO1FBQ1QsV0FBTSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDN0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUNuRCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFJeEQscUJBQWdCLEdBQW1CLEtBQUssQ0FBQztRQUV6QyxzQkFBaUIsR0FBNEIsRUFBRSxDQUFDO1FBQ2hELHNCQUFpQixHQUE0QixFQUFFLENBQUM7UUFDaEQsbUJBQWMsR0FBeUIsRUFBRSxDQUFDO1FBRTFDLHNCQUFpQixHQUFHLG9CQUFvQixDQUFDO0lBUnVGLENBQUM7SUFVakksUUFBUTtRQUNOLHVDQUF1QztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1lBQzNGLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxELG9DQUFvQztRQUNwQyxRQUFRLENBQUM7WUFDUCxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUU7WUFDOUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFO1lBQzlDLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRTtTQUM5QyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ1gsSUFBSSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDO1lBQ25DLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixJQUFJLENBQUMsV0FBVyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7Z0JBQzNFLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDMUMsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILG1EQUFtRDtRQUNuRCxNQUFNLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUV2SCxxRUFBcUU7UUFDckUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFlBQVksR0FBRyxDQUFDLENBQUM7UUFFMUMsSUFBSSxZQUFZLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLG1HQUFtRyxDQUFDLENBQUM7WUFDbEksT0FBTztRQUNULENBQUM7UUFFRCwwRkFBMEY7UUFDMUYsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssd0JBQXdCO1FBQzlCLG1FQUFtRTtRQUNuRSxNQUFNLGNBQWMsR0FDaEIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEtBQUssaUJBQWlCLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDN0UsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEtBQUssaUJBQWlCLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNoRixDQUFDLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxpQkFBaUIsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFFL0YsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNqQix5RUFBeUU7WUFDekUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFzQyxDQUFDO1FBQ3pFLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxDQUFDLElBQUksQ0FDUixtREFBbUQsSUFBSSxDQUFDLGlCQUFpQix3RkFBd0YsQ0FDcEssQ0FBQztZQUNOLENBQUM7WUFFRCx1Q0FBdUM7WUFDdkMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztZQUN0RCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztZQUN4RCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQztZQUMzRCxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsb0RBQW9EO1FBQ3BELE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDeEMsVUFBVSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUUvQywyQkFBMkI7UUFDM0IsVUFBVSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDMUIsVUFBVSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDMUIsVUFBVSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFdkIsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO1FBRXpCLHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxLQUFLO1lBQUUsT0FBTztRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkQsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtZQUN2RSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtZQUN6RSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkUsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBRUQsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDakMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNuQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBRUgsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLG1JQUFtSSxDQUFDLENBQUE7WUFDakssT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2RCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNsRixJQUFJLENBQUMsV0FBVyxDQUFDLDZCQUE2QixDQUFDLENBQUE7Z0JBQy9DLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztpQkFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsbUNBQW1DLENBQUMsQ0FBQTtnQkFDckQsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDckYsSUFBSSxDQUFDLFdBQVcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO2dCQUMvQyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7aUJBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7Z0JBQ3ZELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25FLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZHLElBQUksQ0FBQyxXQUFXLENBQUMsbUNBQW1DLENBQUMsQ0FBQTtnQkFDckQsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLDhCQUE4QixDQUFDLENBQUE7WUFDaEQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLFdBQVcsQ0FBQyxTQUF5QjtRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLHNFQUFzRTtZQUNySCxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztZQUV4QixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztZQUU5QywrREFBK0Q7WUFDL0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNyQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7Z0JBQzdCLENBQUM7cUJBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQztvQkFDakUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO2dCQUM3QixDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzVFLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2xGLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN4RSxDQUFDO1lBRUQsd0JBQXdCO1lBQ3hCLCtGQUErRjtZQUMvRix3QkFBd0I7WUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMvRCw4Q0FBOEM7Z0JBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDdkMsOERBQThEO29CQUM5RCxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDeEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO3dCQUNsSCxJQUFJLGNBQWM7NEJBQUUsR0FBRyxDQUFDLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7b0JBQ3JFLENBQUM7b0JBQ0QsMEVBQTBFO29CQUMxRSxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDeEMsR0FBRyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN0RCxDQUFDO29CQUVELDREQUE0RDtvQkFDNUQsdURBQXVEO29CQUN2RCxHQUFHLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFFOUQsOEJBQThCO29CQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7d0JBQzlCLEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDMUIsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCx3QkFBd0I7WUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMvRCw4Q0FBOEM7Z0JBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ3hDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQzt3QkFDbEgsSUFBSSxjQUFjOzRCQUFFLEdBQUcsQ0FBQyxrQkFBa0IsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO29CQUNyRSxDQUFDO29CQUVELG9DQUFvQztvQkFDcEMsK0NBQStDO29CQUMvQyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELHFCQUFxQjtZQUNyQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN6RCw4Q0FBOEM7Z0JBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUN6QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO3dCQUNqSCxJQUFJLGNBQWM7NEJBQUUsS0FBSyxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO29CQUNwRSxDQUFDO29CQUVELG9DQUFvQztvQkFDcEMsaURBQWlEO29CQUNqRCxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUQsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JFLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLDhEQUE4RDtZQUM5RCxJQUFJLFVBQVUsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ3RDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDL0MsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkQsVUFBVSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUNuQyxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hFLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDckMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDakQsQ0FBQztZQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVPLFdBQVcsQ0FBQyxXQUFnQjtRQUNsQyxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sV0FBVyxDQUFDLENBQUMsaUJBQWlCO1FBQ3ZDLENBQUM7UUFDRCxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwRSx1RUFBdUU7WUFDdkUsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDakMsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFNBQVMsQ0FBQyxVQUFlO1FBQy9CLElBQUksVUFBVSxZQUFZLElBQUksRUFBRSxDQUFDO1lBQy9CLE9BQU8sVUFBVSxDQUFDLENBQUMsc0JBQXNCO1FBQzNDLENBQUM7UUFDRCxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsaUJBQWlCO1FBQ3ZELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMseUJBQXlCO1lBQ2xFLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFcEMsOEJBQThCO1lBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDeEMsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUM3RixPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLENBQUMsbUJBQW1CO0lBQ2xDLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBa0M7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUU5QixJQUFJLFdBQWdDLENBQUM7UUFFckMsd0RBQXdEO1FBQ3hELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0IsV0FBVyxHQUFHO2dCQUNaLE1BQU0sRUFBRSxHQUFHLEVBQUUsMkNBQTJDO2dCQUN4RCxlQUFlLEVBQUUsSUFBSTtnQkFDckIsWUFBWSxFQUFFLFdBQVcsSUFBSSxXQUFXO2FBQ3pDLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLDREQUE0RDtZQUM1RCxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFFRCw2QkFBNkI7UUFFN0IsK0JBQStCO1FBQy9CLElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCw0Q0FBNEM7UUFDNUMsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsRCxpRUFBaUU7WUFDakUsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDOUcsQ0FBQztJQUNILENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxJQUFTO1FBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWU7UUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUMvQixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsK0JBQStCO1FBRWxGLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN2QixpQ0FBaUM7WUFDakMsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzlDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxLQUFVO1FBQ3JCLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQywrQkFBK0I7UUFFbEYsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLHFDQUFxQztZQUNyQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzlDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7K0dBcmFVLDJCQUEyQjttR0FBM0IsMkJBQTJCLG9JQU9sQixnQkFBZ0IsOERBQ2hCLGdCQUFnQixtRkFDaEIsZ0JBQWdCLG1KQUtoQixnQkFBZ0Isb0VBQ2hCLGdCQUFnQiwwTENqQ3RDLDZ5SEF1RU87OzRGRHJETSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLEtBQUs7Z0pBUVUsVUFBVTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBR2UsZUFBZTtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxnQkFBZ0I7c0JBQXZELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsdUJBQXVCO3NCQUE5RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUc3QixpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNrQyxlQUFlO3NCQUF0RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLGtCQUFrQjtzQkFBekQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFHN0IsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBVbmJNZW5zYWdlbVNlcnZpY2UsIFVuYlRpcG9NZW5zYWdlbUVudW0gfSBmcm9tICcuLi8uLi91bmItbWVuc2FnZW0vdW5iLW1lbnNhZ2VtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVbmJVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3VuYi11dGlscyc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYUVtYWlsVGlwbyB9IGZyb20gJy4uL3VuYi1wZXNzb2EtbW9kZWxzL3VuYi1wZXNzb2EtZW1haWwubW9kZWwnO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FFbmRlcmVjb1RpcG8gfSBmcm9tICcuLi91bmItcGVzc29hLW1vZGVscy91bmItcGVzc29hLWVuZGVyZWNvLm1vZGVsJztcclxuaW1wb3J0IHsgVW5iUGVzc29hVGVsZWZvbmVUaXBvIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS10ZWxlZm9uZS5tb2RlbCc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYU1vZGVsIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS5tb2RlbCc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYUVycm9QYWRyYW8sIFVuQlBlc3NvYVNlcnZpY2UgfSBmcm9tICcuLi91bmItcGVzc29hLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVbmJUaXBvUGVzc29hRW51bSB9IGZyb20gJy4uL3VuYi10aXBvLXBlc3NvYS5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXVuYi1wZXNzb2EtcGVzcXVpc2FyJyxcclxuICBzdGFuZGFsb25lOiBmYWxzZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdW5iLXBlc3NvYS1wZXNxdWlzYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi91bmItcGVzc29hLXBlc3F1aXNhci5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVW5iUGVzc29hUGVzcXVpc2FyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgLy8gQ29uZmlndXJhw6fDo28gZGEgQVBJLiBFeGVtcGxvIFNHSS51bmIuYnIvcGVzc29hLWFwaVxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGJhY2tlbmRVUkw6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIC8vIEZsYWdzIGRlIFBlc3F1aXNhIChjb20gY29udmVyc8OjbyBhdXRvbcOhdGljYSBkZSBzdHJpbmcgcGFyYSBib29sZWFuKVxyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwZXNxdWlzYXJQb3JDUEYgPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwZXNxdWlzYXJQb3JDTlBKID0gdHJ1ZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcGVzcXVpc2FyUG9yRXN0cmFuZ2Vpcm8gPSBmYWxzZTtcclxuXHJcbiAgLy8gQ29uZmlndXJhw6fDtWVzIGRlIFVJIGUgQ29tcG9ydGFtZW50b1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRUaXBvUGVzc29hOiBVbmJUaXBvUGVzc29hRW51bSB8ICdGSVNJQ0EnIHwgJ0pVUklESUNBJyB8ICdFU1RSQU5HRUlSQScgPSBVbmJUaXBvUGVzc29hRW51bS5GSVNJQ0E7XHJcbiAgQElucHV0KCkgY2FtcG9QZXNxdWlzYU1heFdpZHRoOiBzdHJpbmcgPSAnNDAwcHgnO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBtb3N0cmFyUGVzcXVpc2EgPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBsaW1wYXJBcG9zUGVzcXVpc2EgPSBmYWxzZTtcclxuXHJcbiAgLy8gVGV4dG9zIGUgTGFiZWxzXHJcbiAgQElucHV0KCkgbGFiZWwgPSBcIkRpZ2l0ZSBvIENQRi9DTlBKIG91IFBhc3NhcG9ydGVcIjtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgQElucHV0KCkgaGludCA9IFwiXCI7XHJcblxyXG4gIC8vIERhZG9zIGUgRXZlbnRvc1xyXG4gIEBJbnB1dCgpIHBlc3NvYSA9IG5ldyBVbmJQZXNzb2FNb2RlbCgpO1xyXG4gIEBPdXRwdXQoKSBwZXNzb2FFbWl0dGVkID0gbmV3IEV2ZW50RW1pdHRlcjxVbmJQZXNzb2FNb2RlbD4oKTtcclxuICBAT3V0cHV0KCkgaXNMb2FkaW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBlc3NvYVNlcnZpY2U6IFVuQlBlc3NvYVNlcnZpY2UsIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLCBwcml2YXRlIGFsZXJ0U2VydmljZTogVW5iTWVuc2FnZW1TZXJ2aWNlKSB7IH1cclxuXHJcbiAgcGVzc29hRW5jb250cmFkbzogQm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcclxuICBtb3N0cmFyVGlwb1Blc3NvYSE6IGJvb2xlYW47XHJcbiAgbGlzdGFUaXBvRW5kZXJlY286IFVuYlBlc3NvYUVuZGVyZWNvVGlwb1tdID0gW107XHJcbiAgbGlzdGFUaXBvVGVsZWZvbmU6IFVuYlBlc3NvYVRlbGVmb25lVGlwb1tdID0gW107XHJcbiAgbGlzdGFUaXBvRW1haWw6IFVuYlBlc3NvYUVtYWlsVGlwb1tdID0gW107XHJcblxyXG4gIGlkTWVuc2FnZW1TZXJ2aWNlID0gXCJVbmJQZXNzb2FQZXNxdWlzYXJcIjtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyAxLiBWYWxpZGHDp8OjbyBkZSBJbmljaWFsaXphw6fDo28gZGEgQVBJXHJcbiAgICBpZiAoIXRoaXMuYmFja2VuZFVSTCkge1xyXG4gICAgICB0aGlzLmhhbmRsZUVycm9yUHJpbnRDb25zb2xlKFwiW1VuYlBlc3NvYVBlc3F1aXNhckNvbXBvbmVudF0gRVJST1I6IGJhY2tlbmRVUkwgZXN0w6EgbnVsbC5cIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucGVzc29hU2VydmljZS5zZXRCYWNrZW5kVXJsKHRoaXMuYmFja2VuZFVSTCk7XHJcblxyXG4gICAgLy8gMi4gQ2FycmVnYW1lbnRvIGRlIERhZG9zIGRlIEFwb2lvXHJcbiAgICBmb3JrSm9pbih7XHJcbiAgICAgIHRpcG9zRW5kOiB0aGlzLnBlc3NvYVNlcnZpY2UuZ2V0VGlwb0VuZGVyZWNvKCksXHJcbiAgICAgIHRpcG9zVGVsOiB0aGlzLnBlc3NvYVNlcnZpY2UuZ2V0VGlwb1RlbGVmb25lKCksXHJcbiAgICAgIHRpcG9zRW1haWw6IHRoaXMucGVzc29hU2VydmljZS5nZXRUaXBvRW1haWwoKVxyXG4gICAgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHsgdGlwb3NFbmQsIHRpcG9zVGVsLCB0aXBvc0VtYWlsIH0pID0+IHtcclxuICAgICAgICB0aGlzLmxpc3RhVGlwb0VuZGVyZWNvID0gdGlwb3NFbmQ7XHJcbiAgICAgICAgdGhpcy5saXN0YVRpcG9UZWxlZm9uZSA9IHRpcG9zVGVsO1xyXG4gICAgICAgIHRoaXMubGlzdGFUaXBvRW1haWwgPSB0aXBvc0VtYWlsO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoXCJGYWxoYSBhbyBjYXJyZWdhciBkYWRvcyBkZSBhcG9pby4gUmVjYXJyZWd1ZSBhIHDDoWdpbmEuXCIpO1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvIG5vIGZvcmtKb2luOlwiLCBlcnIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyAzLiBEZWZpbmnDp8OjbyBkYSBMw7NnaWNhIGRlIEV4aWJpw6fDo28gZSBUaXBvIFBhZHLDo29cclxuICAgIGNvbnN0IG9wY29lc0F0aXZhcyA9IFt0aGlzLnBlc3F1aXNhclBvckNQRiwgdGhpcy5wZXNxdWlzYXJQb3JDTlBKLCB0aGlzLnBlc3F1aXNhclBvckVzdHJhbmdlaXJvXS5maWx0ZXIodiA9PiB2KS5sZW5ndGg7XHJcblxyXG4gICAgLy8gU8OzIG1vc3RyYSBvIHLDoWRpbyBzZSBob3V2ZXIgZXNjb2xoYSByZWFsIChtYWlzIGRlIHVtYSBvcMOnw6NvIGF0aXZhKVxyXG4gICAgdGhpcy5tb3N0cmFyVGlwb1Blc3NvYSA9IG9wY29lc0F0aXZhcyA+IDE7XHJcblxyXG4gICAgaWYgKG9wY29lc0F0aXZhcyA9PT0gMCkge1xyXG4gICAgICB0aGlzLmhhbmRsZUVycm9yUHJpbnRDb25zb2xlKFwiW1VuYlBlc3NvYVBlc3F1aXNhckNvbXBvbmVudF0gRVJST1I6IE5lbmh1bWEgb3DDp8OjbyBkZSBwZXNxdWlzYSAoQ1BGL0NOUEovRXN0cmFuZ2Vpcm8pIGVzdMOhIGF0aXZhLlwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDQuIEF0cmlidWnDp8OjbyBkbyBUaXBvIEluaWNpYWwgKE9yZGVtIGRlIHByaW9yaWRhZGU6IFZhbG9yIHBhZHLDo28gLT4gT3DDp8OjbyDDmm5pY2EgLT4gQ1BGKVxyXG4gICAgdGhpcy5kZWZpbmlyVGlwb1Blc3NvYUluaWNpYWwoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZSBxdWFsIHRpcG8gZGUgcGVzc29hIGVzdGFyw6Egc2VsZWNpb25hZG8gYW8gY2FycmVnYXIgbyBjb21wb25lbnRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkZWZpbmlyVGlwb1Blc3NvYUluaWNpYWwoKTogdm9pZCB7XHJcbiAgICAvLyBWZXJpZmljYSBzZSBvIHBhZHLDo28gcGFzc2FkbyDDqSBwZXJtaXRpZG8gcGVsYXMgZmxhZ3MgZGUgcGVzcXVpc2FcclxuICAgIGNvbnN0IHBhZHJhb0VoVmFsaWRvID1cclxuICAgICAgICAodGhpcy5kZWZhdWx0VGlwb1Blc3NvYSA9PT0gVW5iVGlwb1Blc3NvYUVudW0uRklTSUNBICYmIHRoaXMucGVzcXVpc2FyUG9yQ1BGKSB8fFxyXG4gICAgICAgICh0aGlzLmRlZmF1bHRUaXBvUGVzc29hID09PSBVbmJUaXBvUGVzc29hRW51bS5KVVJJRElDQSAmJiB0aGlzLnBlc3F1aXNhclBvckNOUEopIHx8XHJcbiAgICAgICAgKHRoaXMuZGVmYXVsdFRpcG9QZXNzb2EgPT09IFVuYlRpcG9QZXNzb2FFbnVtLkVTVFJBTkdFSVJBICYmIHRoaXMucGVzcXVpc2FyUG9yRXN0cmFuZ2Vpcm8pO1xyXG5cclxuICAgIGlmIChwYWRyYW9FaFZhbGlkbykge1xyXG4gICAgICAgIC8vIENvbW8gbyB2YWxvciBkYSBzdHJpbmcgw6kgaWd1YWwgYW8gdmFsb3IgZG8gRW51bSwgYSBhdHJpYnVpw6fDo28gw6kgZGlyZXRhXHJcbiAgICAgICAgdGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9IHRoaXMuZGVmYXVsdFRpcG9QZXNzb2EgYXMgVW5iVGlwb1Blc3NvYUVudW07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRUaXBvUGVzc29hKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgICAgICAgIGBbVW5iUGVzc29hUGVzcXVpc2FyXSBPIHZhbG9yIGRlZmF1bHRUaXBvUGVzc29hPScke3RoaXMuZGVmYXVsdFRpcG9QZXNzb2F9JyDDqSBpbmNvbXBhdMOtdmVsIGNvbSBhcyBvcMOnw7VlcyBkZSBwZXNxdWlzYSBhdGl2YXMuIFNlbGVjaW9uYW5kbyBhIHByaW1laXJhIGRpc3BvbsOtdmVsLmBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEZhbGxiYWNrIHBhcmEgYSBwcmltZWlyYSBvcMOnw6NvIGF0aXZhXHJcbiAgICAgICAgaWYgKHRoaXMucGVzcXVpc2FyUG9yQ1BGKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPSBVbmJUaXBvUGVzc29hRW51bS5GSVNJQ0E7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBlc3F1aXNhclBvckNOUEopIHtcclxuICAgICAgICAgICAgdGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9IFVuYlRpcG9QZXNzb2FFbnVtLkpVUklESUNBO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wZXNxdWlzYXJQb3JFc3RyYW5nZWlybykge1xyXG4gICAgICAgICAgICB0aGlzLnBlc3NvYS50aXBvUGVzc29hID0gVW5iVGlwb1Blc3NvYUVudW0uRVNUUkFOR0VJUkE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25UaXBvUGVzc29hQ2hhbmdlKCkge1xyXG4gICAgLy8gQ3JpYSB1bWEgbm92YSBwZXNzb2EgbGltcGEgY29tIG8gdGlwbyBzZWxlY2lvbmFkb1xyXG4gICAgY29uc3Qgbm92YVBlc3NvYSA9IG5ldyBVbmJQZXNzb2FNb2RlbCgpO1xyXG4gICAgbm92YVBlc3NvYS50aXBvUGVzc29hID0gdGhpcy5wZXNzb2EudGlwb1Blc3NvYTtcclxuXHJcbiAgICAvLyBJbmljaWFsaXphIGFycmF5cyB2YXppb3NcclxuICAgIG5vdmFQZXNzb2EudGVsZWZvbmVzID0gW107XHJcbiAgICBub3ZhUGVzc29hLmVuZGVyZWNvcyA9IFtdO1xyXG4gICAgbm92YVBlc3NvYS5lbWFpbHMgPSBbXTtcclxuXHJcbiAgICAvLyBTdWJzdGl0dWkgYSBwZXNzb2EgYXR1YWxcclxuICAgIHRoaXMucGVzc29hID0gbm92YVBlc3NvYTtcclxuXHJcbiAgICAvLyBFbWl0ZSBhIG5vdmEgcGVzc29hIGxpbXBhIHBhcmEgbyBjb21wb25lbnRlIHBhaSAoZm9ybSlcclxuICAgIHRoaXMucGVzc29hRW1pdHRlZC5lbWl0KHRoaXMucGVzc29hKTtcclxuICB9XHJcblxyXG4gIHBlc3F1aXNhcigpIHtcclxuICAgIGlmICh0aGlzLnZhbGlkYXIoKSA9PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5pc0xvYWRpbmdDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIGxldCByZXN1bHQ7XHJcbiAgICBpZiAodGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9PSBVbmJUaXBvUGVzc29hRW51bS5GSVNJQ0EpIHtcclxuICAgICAgbGV0IGNwZiA9IHRoaXMucGVzc29hLmNwZi5tYXRjaCgvXFxkL2cpPy5qb2luKFwiXCIpOyAvLyByZW1vdmUgY2FyYWN0ZXJlcyBcclxuICAgICAgcmVzdWx0ID0gdGhpcy5wZXNzb2FTZXJ2aWNlLmZpbmRCeUNwZihjcGYpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFVuYlRpcG9QZXNzb2FFbnVtLkpVUklESUNBKSB7XHJcbiAgICAgIGxldCBjbnBqID0gdGhpcy5wZXNzb2EuY25wai5tYXRjaCgvXFxkL2cpPy5qb2luKFwiXCIpOyAvLyByZW1vdmUgY2FyYWN0ZXJlcyBcclxuICAgICAgcmVzdWx0ID0gdGhpcy5wZXNzb2FTZXJ2aWNlLmZpbmRCeUNucGooY25waik7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPT0gVW5iVGlwb1Blc3NvYUVudW0uRVNUUkFOR0VJUkEpIHtcclxuICAgICAgcmVzdWx0ID0gdGhpcy5wZXNzb2FTZXJ2aWNlLmZpbmRCeVBhc3NhcG9ydGUodGhpcy5wZXNzb2EucGFzc2Fwb3J0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICByZXN1bHQuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiB0aGlzLmhhZGxlUmVzdWx0LmJpbmQodGhpcyksXHJcbiAgICAgICAgZXJyb3I6IHRoaXMuaGFuZGxlRXJyb3IuYmluZCh0aGlzKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICB2YWxpZGFyKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuYmFja2VuZFVSTCA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3JQcmludENvbnNvbGUoXCJbVW5iUGVzc29hUGVzcXVpc2FyQ29tcG9uZW50XSBFUlJPUjogYmFja2VuZFVSTC51cmwgZXN0w6EgbnVsbC4gSW5zaXJhIG8gcGFyw6JtZXRybyAoYmFja2VuZFVSTCkgY29tIG8gdmFsb3IgZGEgVVJMIGRvIHNldSBCYWNrZW5kIVwiKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPT0gVW5iVGlwb1Blc3NvYUVudW0uRklTSUNBKSB7XHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS5jcGYgPT0gbnVsbCB8fCAodGhpcy5wZXNzb2EuY3BmICE9IG51bGwgJiYgdGhpcy5wZXNzb2EuY3BmID09IFwiXCIpKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihcIkNQRiDDqSB1bSBjYW1wbyBvYnJpZ2F0w7NyaW8uXCIpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2UgaWYgKCFVbmJVdGlscy52YWxpZGFyQ1BGKHRoaXMucGVzc29hLmNwZikpIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKFwiRGlnaXRlIHVtIHZhbG9yIHbDoWxpZG8gcGFyYSBvIENQRlwiKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFVuYlRpcG9QZXNzb2FFbnVtLkpVUklESUNBKSB7XHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS5jbnBqID09IG51bGwgfHwgKHRoaXMucGVzc29hLmNucGogIT0gbnVsbCAmJiB0aGlzLnBlc3NvYS5jbnBqID09IFwiXCIpKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihcIkNOUEogw6kgdW0gY2FtcG8gb2JyaWdhdMOzcmlvXCIpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2UgaWYgKCFVbmJVdGlscy52YWxpZGFyQ05QSih0aGlzLnBlc3NvYS5jbnBqKSkge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoXCJEaWdpdGUgdW0gdmFsb3IgdsOhbGlkbyBwYXJhIG8gQ05QSiFcIilcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9PSBVbmJUaXBvUGVzc29hRW51bS5FU1RSQU5HRUlSQSkge1xyXG4gICAgICBpZiAodGhpcy5wZXNzb2EucGFzc2Fwb3J0ZSA9PSBudWxsIHx8ICh0aGlzLnBlc3NvYS5wYXNzYXBvcnRlICE9IG51bGwgJiYgdGhpcy5wZXNzb2EucGFzc2Fwb3J0ZSA9PSBcIlwiKSkge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoXCJQYXNzYXBvcnRlIMOpIHVtIGNhbXBvIG9icmlnYXTDs3Jpb1wiKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5oYW5kbGVFcnJvcihcIlNlbGVjaW9uZSB1bSB0aXBvIGRlIHBlc3NvYSFcIilcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gRW0gdW5iLXBlc3NvYS1wZXNxdWlzYXIuY29tcG9uZW50LnRzXHJcbiAgaGFkbGVSZXN1bHQocmVzdWx0YWRvOiBVbmJQZXNzb2FNb2RlbCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNMb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG5cclxuICAgIGlmIChyZXN1bHRhZG8pIHtcclxuICAgICAgcmVzdWx0YWRvLnRpcG9QZXNzb2EgPSB0aGlzLnBlc3NvYS50aXBvUGVzc29hOyAvLyBvIGJhY2tlbmQgbmFvIHJldG9ybmEgbyB0aXBvIHBlc3NvYS4gZW50YW8gdGVuaG8gcXVlIGF0cmlidWlyIGFudGVzXHJcbiAgICAgIHRoaXMucGVzc29hID0gcmVzdWx0YWRvO1xyXG5cclxuICAgICAgdGhpcy5wZXNzb2EuZW5kZXJlY29zID0gdGhpcy5wZXNzb2EuZW5kZXJlY29zIHx8IFtdO1xyXG4gICAgICB0aGlzLnBlc3NvYS50ZWxlZm9uZXMgPSB0aGlzLnBlc3NvYS50ZWxlZm9uZXMgfHwgW107XHJcbiAgICAgIHRoaXMucGVzc29hLmVtYWlscyA9IHRoaXMucGVzc29hLmVtYWlscyB8fCBbXTtcclxuXHJcbiAgICAgIC8vIC0tLSBTRcOHw4NPIERFIExJTVBFWkEgREUgREFET1MgUFJJTkNJUEFJUyAoVk9Dw4ogSsOBIFRJTkhBKSAtLS1cclxuICAgICAgaWYgKHRoaXMucGVzc29hLnNleG8pIHtcclxuICAgICAgICBpZiAodGhpcy5wZXNzb2Euc2V4by50b1VwcGVyQ2FzZSgpLnRyaW0oKSA9PT0gJ0ZFTUlOSU5PJykge1xyXG4gICAgICAgICAgdGhpcy5wZXNzb2EuY29kaWdvU2V4byA9IDI7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS5zZXhvLnRvVXBwZXJDYXNlKCkudHJpbSgpID09PSAnTUFTQ1VMSU5PJykge1xyXG4gICAgICAgICAgdGhpcy5wZXNzb2EuY29kaWdvU2V4byA9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5wZXNzb2EuZGF0YU5hc2NpbWVudG8pIHtcclxuICAgICAgICB0aGlzLnBlc3NvYS5kYXRhTmFzY2ltZW50byA9IHRoaXMucGFyc2VEYXRhKHRoaXMucGVzc29hLmRhdGFOYXNjaW1lbnRvKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMucGVzc29hLmVzdGFkb0NpdmlsKSB7XHJcbiAgICAgICAgdGhpcy5wZXNzb2EuY29kaWdvRXN0YWRvQ2l2aWwgPSB0aGlzLnBhcnNlQ29kaWdvKHRoaXMucGVzc29hLmVzdGFkb0NpdmlsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMucGVzc29hLnBhaXNOYXNjaW1lbnRvKSB7XHJcbiAgICAgICAgdGhpcy5wZXNzb2EuY29kaWdvUGFpc05hc2NpbWVudG8gPSB0aGlzLnBhcnNlQ29kaWdvKHRoaXMucGVzc29hLnBhaXNOYXNjaW1lbnRvKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMucGVzc29hLmVzY29sYXJpZGFkZSkge1xyXG4gICAgICAgIHRoaXMucGVzc29hLmVzY29sYXJpZGFkZSA9IHRoaXMucGFyc2VDb2RpZ28odGhpcy5wZXNzb2EuZXNjb2xhcmlkYWRlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gMS4gUHJvY2Vzc2EgRW5kZXJlw6dvc1xyXG4gICAgICAvLyBPIHBheWxvYWQgJ3NhbHZhcicgZXNwZXJhOiBvcmRlbUVuZGVyZWNvLCB0aXBvRW5kZXJlY29Db2RpZ28sIHBhaXNFbmRlcmVjb0NvZGlnbywgdWZFbmRlcmVjb1xyXG4gICAgICAvLyAxLiBQcm9jZXNzYSBFbmRlcmXDp29zXHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS5lbmRlcmVjb3MgJiYgdGhpcy5saXN0YVRpcG9FbmRlcmVjby5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgLy8gLS0tIENPUlJFw4fDg086IEFkaWNpb25hZG8gJ2knIGFvIGZvckVhY2ggLS0tXHJcbiAgICAgICAgdGhpcy5wZXNzb2EuZW5kZXJlY29zLmZvckVhY2goKGVuZCwgaSkgPT4ge1xyXG4gICAgICAgICAgLy8gVHJhZHV6IG8gJ3RpcG8nIChzdHJpbmcpIHBhcmEgJ3RpcG9FbmRlcmVjb0NvZGlnbycgKG51bWJlcilcclxuICAgICAgICAgIGlmICghZW5kLnRpcG9FbmRlcmVjb0NvZGlnbyAmJiBlbmQudGlwbykge1xyXG4gICAgICAgICAgICBjb25zdCB0aXBvRW5jb250cmFkbyA9IHRoaXMubGlzdGFUaXBvRW5kZXJlY28uZmluZCh0ID0+IHQuZGVub21pbmFjYW8/LnRvTG93ZXJDYXNlKCkgPT09IGVuZC50aXBvPy50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgaWYgKHRpcG9FbmNvbnRyYWRvKSBlbmQudGlwb0VuZGVyZWNvQ29kaWdvID0gdGlwb0VuY29udHJhZG8uY29kaWdvO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gVHJhZHV6ICdwYWlzJyAoc3RyaW5nICcyMiAtIEJSQVNJTCcpIHBhcmEgJ3BhaXNFbmRlcmVjb0NvZGlnbycgKG51bWJlcilcclxuICAgICAgICAgIGlmICghZW5kLnBhaXNFbmRlcmVjb0NvZGlnbyAmJiBlbmQucGFpcykge1xyXG4gICAgICAgICAgICBlbmQucGFpc0VuZGVyZWNvQ29kaWdvID0gdGhpcy5wYXJzZUNvZGlnbyhlbmQucGFpcyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gTWFwZWlhICdvcmRlbScgLT4gJ29yZGVtRW5kZXJlY28nIG91IHVzYSBvIMOtbmRpY2UgKGkgKyAxKVxyXG4gICAgICAgICAgLy8gTyBwYXlsb2FkIGRlIHNhbHZhciAobm8gZm9ybSkgZXNwZXJhICdvcmRlbUVuZGVyZWNvJ1xyXG4gICAgICAgICAgZW5kLm9yZGVtRW5kZXJlY28gPSBlbmQub3JkZW1FbmRlcmVjbyB8fCBlbmQub3JkZW0gfHwgKGkgKyAxKTtcclxuXHJcbiAgICAgICAgICAvLyBNYXBlaWEgJ3VmJyAtPiAndWZFbmRlcmVjbydcclxuICAgICAgICAgIGlmICghZW5kLnVmRW5kZXJlY28gJiYgZW5kLnVmKSB7XHJcbiAgICAgICAgICAgIGVuZC51ZkVuZGVyZWNvID0gZW5kLnVmO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyAyLiBQcm9jZXNzYSBUZWxlZm9uZXNcclxuICAgICAgaWYgKHRoaXMucGVzc29hLnRlbGVmb25lcyAmJiB0aGlzLmxpc3RhVGlwb1RlbGVmb25lLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvLyAtLS0gQ09SUkXDh8ODTzogQWRpY2lvbmFkbyAnaScgYW8gZm9yRWFjaCAtLS1cclxuICAgICAgICB0aGlzLnBlc3NvYS50ZWxlZm9uZXMuZm9yRWFjaCgodGVsLCBpKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRlbC50aXBvVGVsZWZvbmVDb2RpZ28gJiYgdGVsLnRpcG8pIHtcclxuICAgICAgICAgICAgY29uc3QgdGlwb0VuY29udHJhZG8gPSB0aGlzLmxpc3RhVGlwb1RlbGVmb25lLmZpbmQodCA9PiB0LmRlbm9taW5hY2FvPy50b0xvd2VyQ2FzZSgpID09PSB0ZWwudGlwbz8udG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgIGlmICh0aXBvRW5jb250cmFkbykgdGVsLnRpcG9UZWxlZm9uZUNvZGlnbyA9IHRpcG9FbmNvbnRyYWRvLmNvZGlnbztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyAtLS0gQ09SUkXDh8ODTzogTMOzZ2ljYSBkYSBPcmRlbSAtLS1cclxuICAgICAgICAgIC8vIE8gcGF5bG9hZCBkZSBzYWx2YXIgKG5vIGZvcm0pIGzDqiAndGVsLm9yZGVtJ1xyXG4gICAgICAgICAgdGVsLm9yZGVtID0gdGVsLm9yZGVtIHx8IChpICsgMSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIDMuIFByb2Nlc3NhIEVtYWlsc1xyXG4gICAgICBpZiAodGhpcy5wZXNzb2EuZW1haWxzICYmIHRoaXMubGlzdGFUaXBvRW1haWwubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIC8vIC0tLSBDT1JSRcOHw4NPOiBBZGljaW9uYWRvICdpJyBhbyBmb3JFYWNoIC0tLVxyXG4gICAgICAgIHRoaXMucGVzc29hLmVtYWlscy5mb3JFYWNoKChlbWFpbCwgaSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFlbWFpbC50aXBvRW1haWxDb2RpZ28gJiYgZW1haWwudGlwbykge1xyXG4gICAgICAgICAgICBjb25zdCB0aXBvRW5jb250cmFkbyA9IHRoaXMubGlzdGFUaXBvRW1haWwuZmluZCh0ID0+IHQuZGVub21pbmFjYW8/LnRvTG93ZXJDYXNlKCkgPT09IGVtYWlsLnRpcG8/LnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICBpZiAodGlwb0VuY29udHJhZG8pIGVtYWlsLnRpcG9FbWFpbENvZGlnbyA9IHRpcG9FbmNvbnRyYWRvLmNvZGlnbztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyAtLS0gQ09SUkXDh8ODTzogTMOzZ2ljYSBkYSBPcmRlbSAtLS1cclxuICAgICAgICAgIC8vIE8gcGF5bG9hZCBkZSBzYWx2YXIgKG5vIGZvcm0pIGzDqiAnZW1haWwub3JkZW0nXHJcbiAgICAgICAgICBlbWFpbC5vcmRlbSA9IGVtYWlsLm9yZGVtIHx8IChpICsgMSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFVuYlRpcG9QZXNzb2FFbnVtLkZJU0lDQSkge1xyXG4gICAgICAgIHRoaXMucGVzc29hLmNwZiA9IFVuYlV0aWxzLmZvcm1hdGFDcGYocmVzdWx0YWRvLmNwZik7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9PSBVbmJUaXBvUGVzc29hRW51bS5KVVJJRElDQSkge1xyXG4gICAgICAgIHRoaXMucGVzc29hLmNucGogPSBVbmJVdGlscy5mb3JtYXRhQ25waihyZXN1bHRhZG8uY25waik7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9PSBVbmJUaXBvUGVzc29hRW51bS5FU1RSQU5HRUlSQSkge1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBzZSBjaGVnYXIgYWtpIGVoIHBxIG5hbyBlbmNvbnRyb3UuLi4gKGzDs2dpY2EgcXVlIGrDoSBleGlzdGUpXHJcbiAgICAgIGxldCBub3ZhUGVzc29hID0gbmV3IFVuYlBlc3NvYU1vZGVsKCk7XHJcbiAgICAgIG5vdmFQZXNzb2EudGlwb1Blc3NvYSA9IHRoaXMucGVzc29hLnRpcG9QZXNzb2E7XHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFVuYlRpcG9QZXNzb2FFbnVtLkZJU0lDQSkge1xyXG4gICAgICAgIG5vdmFQZXNzb2EuY3BmID0gdGhpcy5wZXNzb2EuY3BmO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPT0gVW5iVGlwb1Blc3NvYUVudW0uSlVSSURJQ0EpIHtcclxuICAgICAgICBub3ZhUGVzc29hLmNucGogPSB0aGlzLnBlc3NvYS5jbnBqO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5vdmFQZXNzb2EucGFzc2Fwb3J0ZSA9IHRoaXMucGVzc29hLnBhc3NhcG9ydGU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wZXNzb2EgPSBub3ZhUGVzc29hO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGVzc29hRW1pdHRlZC5lbWl0KHRoaXMucGVzc29hKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFyc2VDb2RpZ28odmFsb3JTdHJpbmc6IGFueSk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWxvclN0cmluZyA9PT0gJ251bWJlcicpIHtcclxuICAgICAgcmV0dXJuIHZhbG9yU3RyaW5nOyAvLyBKw6Egw6kgdW0gbsO6bWVyb1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB2YWxvclN0cmluZyAhPT0gJ3N0cmluZycgfHwgIXZhbG9yU3RyaW5nLmluY2x1ZGVzKCcgLSAnKSkge1xyXG4gICAgICAvLyBUZW50YSBjb252ZXJ0ZXIgZGlyZXRvLCBjYXNvIG8gYmFja2VuZCBtYW5kZSBzw7MgbyBuw7ptZXJvIGNvbW8gc3RyaW5nXHJcbiAgICAgIGNvbnN0IG51bSA9IHBhcnNlSW50KHZhbG9yU3RyaW5nLCAxMCk7XHJcbiAgICAgIHJldHVybiBpc05hTihudW0pID8gbnVsbCA6IG51bTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXJ0ZXMgPSB2YWxvclN0cmluZy5zcGxpdCgnIC0gJyk7XHJcbiAgICBjb25zdCBjb2RpZ28gPSBwYXJzZUludChwYXJ0ZXNbMF0udHJpbSgpLCAxMCk7XHJcbiAgICByZXR1cm4gaXNOYU4oY29kaWdvKSA/IG51bGwgOiBjb2RpZ287XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0ZSB1bWEgc3RyaW5nIG5vIGZvcm1hdG8gJ2RkL01NL3l5eXknIHBhcmEgdW0gb2JqZXRvIERhdGUuXHJcbiAgICogUmV0b3JuYSBudWxsIHNlIG8gZm9ybWF0byBmb3IgaW52w6FsaWRvLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGFyc2VEYXRhKGRhdGFTdHJpbmc6IGFueSk6IERhdGUgfCBudWxsIHtcclxuICAgIGlmIChkYXRhU3RyaW5nIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICByZXR1cm4gZGF0YVN0cmluZzsgLy8gSsOhIMOpIHVtIG9iamV0byBEYXRlXHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGRhdGFTdHJpbmcgIT09ICdzdHJpbmcnIHx8ICFkYXRhU3RyaW5nLmluY2x1ZGVzKCcvJykpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGFydGVzID0gZGF0YVN0cmluZy5zcGxpdCgnLycpOyAvLyBbZGQsIE1NLCB5eXl5XVxyXG4gICAgaWYgKHBhcnRlcy5sZW5ndGggPT09IDMpIHtcclxuICAgICAgY29uc3QgZGlhID0gcGFyc2VJbnQocGFydGVzWzBdLCAxMCk7XHJcbiAgICAgIGNvbnN0IG1lcyA9IHBhcnNlSW50KHBhcnRlc1sxXSwgMTApIC0gMTsgLy8gTcOqcyBubyBKUyDDqSAwLWluZGV4YWRvXHJcbiAgICAgIGNvbnN0IGFubyA9IHBhcnNlSW50KHBhcnRlc1syXSwgMTApO1xyXG5cclxuICAgICAgLy8gVmVyaWZpY2Egc2UgYSBkYXRhIMOpIHbDoWxpZGFcclxuICAgICAgY29uc3QgZGF0YU9iaiA9IG5ldyBEYXRlKGFubywgbWVzLCBkaWEpO1xyXG4gICAgICBpZiAoZGF0YU9iai5nZXRGdWxsWWVhcigpID09PSBhbm8gJiYgZGF0YU9iai5nZXRNb250aCgpID09PSBtZXMgJiYgZGF0YU9iai5nZXREYXRlKCkgPT09IGRpYSkge1xyXG4gICAgICAgIHJldHVybiBkYXRhT2JqO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDsgLy8gRm9ybWF0byBpbnbDoWxpZG9cclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9yKGVycm86IFVuYlBlc3NvYUVycm9QYWRyYW8gfCBzdHJpbmcpIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgIHRoaXMucGVzc29hRW5jb250cmFkbyA9IGZhbHNlO1xyXG5cclxuICAgIGxldCBlcnJvVHJhdGFkbzogVW5iUGVzc29hRXJyb1BhZHJhbztcclxuXHJcbiAgICAvLyAtLS0gQURBUFRFUjogQ29udmVydGUgc3RyaW5nIHBhcmEgbyBPYmpldG8gUGFkcsOjbyAtLS1cclxuICAgIGlmICh0eXBlb2YgZXJybyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgZXJyb1RyYXRhZG8gPSB7XHJcbiAgICAgICAgc3RhdHVzOiA0MDAsIC8vIEVycm8gZGUgdmFsaWRhw6fDo28gbG9jYWwgZ2VyYWxtZW50ZSDDqSA0MDBcclxuICAgICAgICBtZW5zYWdlbVNpbXBsZXM6IGVycm8sXHJcbiAgICAgICAgbWVuc2FnZW1IdG1sOiBgPHN0cm9uZz4ke2Vycm99PC9zdHJvbmc+YFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gU2UgasOhIHZlaW8gZG8gU2VydmljZSAob3Ugw6kgdW0gb2JqZXRvIG1hbnVhbCksIHVzYSBkaXJldG9cclxuICAgICAgZXJyb1RyYXRhZG8gPSBlcnJvO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIC0tLSBMw5NHSUNBIERFIEVYSUJJw4fDg08gLS0tXHJcblxyXG4gICAgLy8gMS4gU25hY2tCYXIgKE1lbnNhZ2VtIGN1cnRhKVxyXG4gICAgaWYgKGVycm9UcmF0YWRvLm1lbnNhZ2VtU2ltcGxlcykge1xyXG4gICAgICB0aGlzLm9wZW5TbmFja0JhcihlcnJvVHJhdGFkby5tZW5zYWdlbVNpbXBsZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDIuIENvbXBvbmVudGUgZGUgTWVuc2FnZW0gKE1lbnNhZ2VtIEhUTUwpXHJcbiAgICBpZiAodGhpcy5hbGVydFNlcnZpY2UgJiYgZXJyb1RyYXRhZG8ubWVuc2FnZW1IdG1sKSB7XHJcbiAgICAgIC8vIFNlIHZvY8OqIHRpdmVyIGEgdmFyacOhdmVsIGlkTWVuc2FnZW1TZXJ2aWNlIGRlZmluaWRhIG5hIGNsYXNzZTpcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoZXJyb1RyYXRhZG8ubWVuc2FnZW1IdG1sLCBVbmJUaXBvTWVuc2FnZW1FbnVtLkRBTkdFUiwgdGhpcy5pZE1lbnNhZ2VtU2VydmljZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVFcnJvclByaW50Q29uc29sZShlcnJvOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKGVycm8pO1xyXG4gICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvKTtcclxuICB9XHJcblxyXG4gIG9wZW5TbmFja0JhcihtZXNzYWdlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlLCAneCcsIHtcclxuICAgICAgZHVyYXRpb246IDUwMDAsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRpcG9QZXNzb2FFbnVtKCkge1xyXG4gICAgcmV0dXJuIFVuYlRpcG9QZXNzb2FFbnVtO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0YSBvIENQRiBlbnF1YW50byBvIHVzdcOhcmlvIGRpZ2l0YVxyXG4gICAqL1xyXG4gIGZvcm1hdGFyQ3BmKGV2ZW50OiBhbnkpIHtcclxuICAgIGxldCB2YWxvciA9IGV2ZW50LnRhcmdldC52YWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpOyAvLyBSZW1vdmUgdHVkbyBxdWUgbsOjbyDDqSBkw61naXRvXHJcblxyXG4gICAgaWYgKHZhbG9yLmxlbmd0aCA8PSAxMSkge1xyXG4gICAgICAvLyBBcGxpY2EgbcOhc2NhcmE6IDAwMC4wMDAuMDAwLTAwXHJcbiAgICAgIHZhbG9yID0gdmFsb3IucmVwbGFjZSgvKFxcZHszfSkoXFxkKS8sICckMS4kMicpO1xyXG4gICAgICB2YWxvciA9IHZhbG9yLnJlcGxhY2UoLyhcXGR7M30pKFxcZCkvLCAnJDEuJDInKTtcclxuICAgICAgdmFsb3IgPSB2YWxvci5yZXBsYWNlKC8oXFxkezN9KShcXGR7MSwyfSkkLywgJyQxLSQyJyk7XHJcbiAgICAgIHRoaXMucGVzc29hLmNwZiA9IHZhbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0YSBvIENOUEogZW5xdWFudG8gbyB1c3XDoXJpbyBkaWdpdGFcclxuICAgKi9cclxuICBmb3JtYXRhckNucGooZXZlbnQ6IGFueSkge1xyXG4gICAgbGV0IHZhbG9yID0gZXZlbnQudGFyZ2V0LnZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnJyk7IC8vIFJlbW92ZSB0dWRvIHF1ZSBuw6NvIMOpIGTDrWdpdG9cclxuXHJcbiAgICBpZiAodmFsb3IubGVuZ3RoIDw9IDE0KSB7XHJcbiAgICAgIC8vIEFwbGljYSBtw6FzY2FyYTogMDAuMDAwLjAwMC8wMDAwLTAwXHJcbiAgICAgIHZhbG9yID0gdmFsb3IucmVwbGFjZSgvKFxcZHsyfSkoXFxkKS8sICckMS4kMicpO1xyXG4gICAgICB2YWxvciA9IHZhbG9yLnJlcGxhY2UoLyhcXGR7M30pKFxcZCkvLCAnJDEuJDInKTtcclxuICAgICAgdmFsb3IgPSB2YWxvci5yZXBsYWNlKC8oXFxkezN9KShcXGQpLywgJyQxLyQyJyk7XHJcbiAgICAgIHZhbG9yID0gdmFsb3IucmVwbGFjZSgvKFxcZHs0fSkoXFxkezEsMn0pJC8sICckMS0kMicpO1xyXG4gICAgICB0aGlzLnBlc3NvYS5jbnBqID0gdmFsb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGZvcm0gI3Blc3NvYUZvcm09XCJuZ0Zvcm1cIiBjbGFzcz1cInBlc3F1aXNhLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cInsnLS10YW1hbmhvLW1heGltbyc6IGNhbXBvUGVzcXVpc2FNYXhXaWR0aH1cIlxyXG4gIChuZ1N1Ym1pdCk9XCJwZXNxdWlzYXIoKVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtZW5zYWdlbS1jb250YWluZXJcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG4gICAgPHVuYi1tZW5zYWdlbSBbaWRlbnRpZmljYWRvcl09XCJpZE1lbnNhZ2VtU2VydmljZVwiIGNsYXNzPVwibWVuc2FnZW0tZm9ybVwiPjwvdW5iLW1lbnNhZ2VtPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS13cmFwcGVyXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwibW9zdHJhclRpcG9QZXNzb2FcIiBjbGFzcz1cInJhZGlvLWNvbnRhaW5lclwiPlxyXG4gICAgICA8bWF0LXJhZGlvLWdyb3VwIGFyaWEtbGFiZWw9XCJUaXBvIGRlIFBlc3NvYVwiIFsobmdNb2RlbCldPVwicGVzc29hLnRpcG9QZXNzb2FcIiAjdGlwb1Blc3NvYT1cIm5nTW9kZWxcIlxyXG4gICAgICAgIG5hbWU9XCJ0aXBvUGVzc29hXCIgKGNoYW5nZSk9XCJvblRpcG9QZXNzb2FDaGFuZ2UoKVwiPlxyXG4gICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICpuZ0lmPVwicGVzcXVpc2FyUG9yQ1BGXCIgdmFsdWU9XCJ7eyB0aXBvUGVzc29hRW51bSgpLkZJU0lDQX19XCI+UGVzc29hIEbDrXNpY2E8L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nSWY9XCJwZXNxdWlzYXJQb3JDTlBKXCIgdmFsdWU9XCJ7e3RpcG9QZXNzb2FFbnVtKCkuSlVSSURJQ0F9fVwiPiBQZXNzb2FcclxuICAgICAgICAgIEp1csOtZGljYTwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiAqbmdJZj1cInBlc3F1aXNhclBvckVzdHJhbmdlaXJvXCJcclxuICAgICAgICAgIHZhbHVlPVwie3t0aXBvUGVzc29hRW51bSgpLkVTVFJBTkdFSVJBfX1cIj5Fc3RyYW5nZWlybzwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYnJlYWtcIj48L2Rpdj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGVzc29hLnRpcG9QZXNzb2EgPT09IHRpcG9QZXNzb2FFbnVtKCkuRklTSUNBXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+Q1BGPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJwZXNzb2EuY3BmXCIgbmFtZT1cImNwZlwiICNjcGY9XCJuZ01vZGVsXCIgcmVxdWlyZWQ9e3t0cnVlfX1cclxuICAgICAgICAgIChpbnB1dCk9XCJmb3JtYXRhckNwZigkZXZlbnQpXCIgbWF4bGVuZ3RoPVwiMTRcIiBwbGFjZWhvbGRlcj1cIjAwMC4wMDAuMDAwLTAwXCIgLz5cclxuICAgICAgICA8YnV0dG9uIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJQZXNxdWlzYXJcIiBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nXCJcclxuICAgICAgICAgIChjbGljayk9XCJwZXNxdWlzYXIoKVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmc7IGVsc2UgbG9hZGluZ0ljb25cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZ0ljb24+XHJcbiAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiMjBcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwic3Bpbm5lci1idXR0b25cIj5cclxuICAgICAgICAgICAgPC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGVzc29hLnRpcG9QZXNzb2EgPT09IHRpcG9QZXNzb2FFbnVtKCkuRVNUUkFOR0VJUkFcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5QYXNzYXBvcnRlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJwZXNzb2EucGFzc2Fwb3J0ZVwiIG5hbWU9XCJwYXNzYXBvcnRlXCIgcmVxdWlyZWQ9XCJ0cnVlXCIgLz5cclxuICAgICAgICA8YnV0dG9uIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJQZXNxdWlzYXJcIiAoY2xpY2spPVwicGVzcXVpc2FyKClcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nOyBlbHNlIGxvYWRpbmdJY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmdJY29uPlxyXG4gICAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgW2RpYW1ldGVyXT1cIjIwXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cInNwaW5uZXItYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBlc3NvYS50aXBvUGVzc29hID09PSB0aXBvUGVzc29hRW51bSgpLkpVUklESUNBXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+Q05QSjwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLmNucGpcIiBuYW1lPVwiY25walwiIHJlcXVpcmVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwiZm9ybWF0YXJDbnBqKCRldmVudClcIiBtYXhsZW5ndGg9XCIxOFwiIHBsYWNlaG9sZGVyPVwiMDAuMDAwLjAwMC8wMDAwLTAwXCIgLz5cclxuICAgICAgICA8YnV0dG9uIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJQZXNxdWlzYXJcIiAoY2xpY2spPVwicGVzcXVpc2FyKClcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nOyBlbHNlIGxvYWRpbmdJY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmdJY29uPlxyXG4gICAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgW2RpYW1ldGVyXT1cIjIwXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cInNwaW5uZXItYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT4iXX0=
@@ -171,14 +171,14 @@ export class UnbPessoaTelefoneFormComponent {
171
171
  duration: 5000,
172
172
  });
173
173
  }
174
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: UnbPessoaTelefoneFormComponent, deps: [{ token: i1.MatSnackBar }, { token: i2.UnBPessoaService }, { token: i3.UnbMensagemService }, { token: i4.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
175
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: UnbPessoaTelefoneFormComponent, selector: "lib-unb-pessoa-telefone-form", ngImport: i0, template: "<h1 mat-dialog-title>Cadastro de Telefone</h1>\r\n<form (ngSubmit)=\"salvar(form)\" #form=\"ngForm\">\r\n <mat-dialog-content>\r\n <unb-mensagem [identificador]=\"idMensagemService\"></unb-mensagem>\r\n <div class=\"form-container\">\r\n <mat-form-field class=\"form-100\" appearance=\"outline\">\r\n <mat-label>Tipo</mat-label>\r\n <mat-select [(ngModel)]=\"telefone.tipoTelefoneCodigo\" [compareWith]=\"compararTipos\" name=\"tipoTelefoneCodigo\" (selectionChange)=\"onTipoSelecionado($event.value)\" required>\r\n <mat-option *ngFor=\"let tipo of listaTipoTelefone\" [value]=\"tipo.codigo\">\r\n {{tipo.denominacao}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-100\" appearance=\"outline\">\r\n <mat-label>DDD</mat-label>\r\n <input type=\"text\" maxlength=\"3\" required matInput [(ngModel)]=\"telefone.ddd\" name=\"dddValue\" #dddValue=\"ngModel\" />\r\n </mat-form-field> \r\n \r\n <mat-form-field class=\"form-100\" appearance=\"outline\">\r\n <mat-label>N\u00FAmero</mat-label>\r\n <input type=\"text\" required maxlength=\"9\" matInput [(ngModel)]=\"telefone.numero\" name=\"telefoneValue\" #telefoneValue=\"ngModel\" />\r\n </mat-form-field>\r\n </div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions align=\"end\">\r\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"close()\">Fechar</button>\r\n <button mat-flat-button type=\"submit\" color=\"primary\">Salvar</button>\r\n </mat-dialog-actions>\r\n</form>", styles: [".card-actions-buttons{display:flex;gap:5px;flex-wrap:wrap}.form-container{display:flex;flex-wrap:wrap;column-gap:10px;margin:10px}@media (max-width: 1000px){.form-container{flex-direction:column;gap:5px}}.break{flex-basis:100%;height:0}.form-5{flex:1 1 5%}.inline-table-container{display:flex;align-items:center;justify-content:space-between;padding:5px}@media (max-width: 600px){.form-5,.form-10,.form-15{flex:1 1 100%}}.form-10{flex:1 1 10%}.form-15{flex:1 1 15%}.form-20{flex:1 1 20%}.form-25{flex:1 1 25%}.form-30{flex:1 1 30%}.form-35{flex:1 1 35%}.form-40{flex:1 1 40%}.form-45{flex:1 1 45%}.form-50{flex:1 1 50%}.form-100{flex:1 1 100%;min-width:250px}.botoes-container{display:flex;gap:5px}@media (max-width: 600px){.botoes-container{margin-bottom:10px}.botoes-container button{flex:1;max-width:50%}}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i8.UnbMensagemComponent, selector: "unb-mensagem", inputs: ["mensagem", "tipo", "identificador"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i11.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i12.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }] }); }
174
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UnbPessoaTelefoneFormComponent, deps: [{ token: i1.MatSnackBar }, { token: i2.UnBPessoaService }, { token: i3.UnbMensagemService }, { token: i4.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
175
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: UnbPessoaTelefoneFormComponent, selector: "lib-unb-pessoa-telefone-form", ngImport: i0, template: "<h1 mat-dialog-title>Cadastro de Telefone</h1>\r\n<form (ngSubmit)=\"salvar(form)\" #form=\"ngForm\">\r\n <mat-dialog-content>\r\n <unb-mensagem [identificador]=\"idMensagemService\"></unb-mensagem>\r\n <div class=\"form-container\">\r\n <mat-form-field class=\"form-100\" appearance=\"outline\">\r\n <mat-label>Tipo</mat-label>\r\n <mat-select [(ngModel)]=\"telefone.tipoTelefoneCodigo\" [compareWith]=\"compararTipos\" name=\"tipoTelefoneCodigo\" (selectionChange)=\"onTipoSelecionado($event.value)\" required>\r\n <mat-option *ngFor=\"let tipo of listaTipoTelefone\" [value]=\"tipo.codigo\">\r\n {{tipo.denominacao}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-100\" appearance=\"outline\">\r\n <mat-label>DDD</mat-label>\r\n <input type=\"text\" maxlength=\"3\" required matInput [(ngModel)]=\"telefone.ddd\" name=\"dddValue\" #dddValue=\"ngModel\" />\r\n </mat-form-field> \r\n \r\n <mat-form-field class=\"form-100\" appearance=\"outline\">\r\n <mat-label>N\u00FAmero</mat-label>\r\n <input type=\"text\" required maxlength=\"9\" matInput [(ngModel)]=\"telefone.numero\" name=\"telefoneValue\" #telefoneValue=\"ngModel\" />\r\n </mat-form-field>\r\n </div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions align=\"end\">\r\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"close()\">Fechar</button>\r\n <button mat-flat-button type=\"submit\" color=\"primary\">Salvar</button>\r\n </mat-dialog-actions>\r\n</form>", styles: [".card-actions-buttons{display:flex;gap:5px;flex-wrap:wrap}.form-container{display:flex;flex-wrap:wrap;column-gap:10px;margin:10px}@media (max-width: 1000px){.form-container{flex-direction:column;gap:5px}}.break{flex-basis:100%;height:0}.form-5{flex:1 1 5%}.inline-table-container{display:flex;align-items:center;justify-content:space-between;padding:5px}@media (max-width: 600px){.form-5,.form-10,.form-15{flex:1 1 100%}}.form-10{flex:1 1 10%}.form-15{flex:1 1 15%}.form-20{flex:1 1 20%}.form-25{flex:1 1 25%}.form-30{flex:1 1 30%}.form-35{flex:1 1 35%}.form-40{flex:1 1 40%}.form-45{flex:1 1 45%}.form-50{flex:1 1 50%}.form-100{flex:1 1 100%;min-width:250px}.botoes-container{display:flex;gap:5px}@media (max-width: 600px){.botoes-container{margin-bottom:10px}.botoes-container button{flex:1;max-width:50%}}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i8.UnbMensagemComponent, selector: "unb-mensagem", inputs: ["mensagem", "tipo", "identificador"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i11.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i12.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }] }); }
176
176
  }
177
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: UnbPessoaTelefoneFormComponent, decorators: [{
177
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UnbPessoaTelefoneFormComponent, decorators: [{
178
178
  type: Component,
179
179
  args: [{ standalone: false, selector: 'lib-unb-pessoa-telefone-form', template: "<h1 mat-dialog-title>Cadastro de Telefone</h1>\r\n<form (ngSubmit)=\"salvar(form)\" #form=\"ngForm\">\r\n <mat-dialog-content>\r\n <unb-mensagem [identificador]=\"idMensagemService\"></unb-mensagem>\r\n <div class=\"form-container\">\r\n <mat-form-field class=\"form-100\" appearance=\"outline\">\r\n <mat-label>Tipo</mat-label>\r\n <mat-select [(ngModel)]=\"telefone.tipoTelefoneCodigo\" [compareWith]=\"compararTipos\" name=\"tipoTelefoneCodigo\" (selectionChange)=\"onTipoSelecionado($event.value)\" required>\r\n <mat-option *ngFor=\"let tipo of listaTipoTelefone\" [value]=\"tipo.codigo\">\r\n {{tipo.denominacao}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-100\" appearance=\"outline\">\r\n <mat-label>DDD</mat-label>\r\n <input type=\"text\" maxlength=\"3\" required matInput [(ngModel)]=\"telefone.ddd\" name=\"dddValue\" #dddValue=\"ngModel\" />\r\n </mat-form-field> \r\n \r\n <mat-form-field class=\"form-100\" appearance=\"outline\">\r\n <mat-label>N\u00FAmero</mat-label>\r\n <input type=\"text\" required maxlength=\"9\" matInput [(ngModel)]=\"telefone.numero\" name=\"telefoneValue\" #telefoneValue=\"ngModel\" />\r\n </mat-form-field>\r\n </div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions align=\"end\">\r\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"close()\">Fechar</button>\r\n <button mat-flat-button type=\"submit\" color=\"primary\">Salvar</button>\r\n </mat-dialog-actions>\r\n</form>", styles: [".card-actions-buttons{display:flex;gap:5px;flex-wrap:wrap}.form-container{display:flex;flex-wrap:wrap;column-gap:10px;margin:10px}@media (max-width: 1000px){.form-container{flex-direction:column;gap:5px}}.break{flex-basis:100%;height:0}.form-5{flex:1 1 5%}.inline-table-container{display:flex;align-items:center;justify-content:space-between;padding:5px}@media (max-width: 600px){.form-5,.form-10,.form-15{flex:1 1 100%}}.form-10{flex:1 1 10%}.form-15{flex:1 1 15%}.form-20{flex:1 1 20%}.form-25{flex:1 1 25%}.form-30{flex:1 1 30%}.form-35{flex:1 1 35%}.form-40{flex:1 1 40%}.form-45{flex:1 1 45%}.form-50{flex:1 1 50%}.form-100{flex:1 1 100%;min-width:250px}.botoes-container{display:flex;gap:5px}@media (max-width: 600px){.botoes-container{margin-bottom:10px}.botoes-container button{flex:1;max-width:50%}}\n"] }]
180
180
  }], ctorParameters: () => [{ type: i1.MatSnackBar }, { type: i2.UnBPessoaService }, { type: i3.UnbMensagemService }, { type: i4.MatDialogRef }, { type: undefined, decorators: [{
181
181
  type: Inject,
182
182
  args: [MAT_DIALOG_DATA]
183
183
  }] }] });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS10ZWxlZm9uZS1mb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5iLWxpYi1jb21wb25lbnRzL3NyYy9saWIvdW5iLXBlc3NvYS91bmItcGVzc29hLXRlbGVmb25lLWZvcm0vdW5iLXBlc3NvYS10ZWxlZm9uZS1mb3JtLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5iLWxpYi1jb21wb25lbnRzL3NyYy9saWIvdW5iLXBlc3NvYS91bmItcGVzc29hLXRlbGVmb25lLWZvcm0vdW5iLXBlc3NvYS10ZWxlZm9uZS1mb3JtLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUQsT0FBTyxFQUFFLGlCQUFpQixFQUF5QixNQUFNLGdEQUFnRCxDQUFDO0FBRTFHLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFFekUsT0FBTyxFQUFzQixtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVFsRyxNQUFNLE9BQU8sOEJBQThCO0lBT3pDLFlBQW9CLFFBQXFCLEVBQVUsT0FBeUIsRUFBVSxZQUFnQyxFQUFTLFNBQXVELEVBQWtDLElBQVM7UUFBN00sYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQVMsY0FBUyxHQUFULFNBQVMsQ0FBOEM7UUFBa0MsU0FBSSxHQUFKLElBQUksQ0FBSztRQUxqTyxhQUFRLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBRW5DLHNCQUFpQixHQUE0QixFQUFFLENBQUM7UUFDaEQsc0JBQWlCLEdBQUcsdUJBQXVCLENBQUM7UUFHMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFD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QU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5RyxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFlO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDL0IsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQW5MVSw4QkFBOEIsMklBT3VKLGVBQWU7a0dBUHBNLDhCQUE4QixvRUNmM0MsNmxEQThCTzs7MkZEZk0sOEJBQThCO2tCQU4xQyxTQUFTO2lDQUNJLEtBQUssWUFDUCw4QkFBOEI7OzBCQVdpSixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FUZWxlZm9uZSwgVW5iUGVzc29hVGVsZWZvbmVUaXBvIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS10ZWxlZm9uZS5tb2RlbCc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYUVycm9QYWRyYW8sIFVuQlBlc3NvYVNlcnZpY2UgfSBmcm9tICcuLi91bmItcGVzc29hLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVW5iTWVuc2FnZW1TZXJ2aWNlLCBVbmJUaXBvTWVuc2FnZW1FbnVtIH0gZnJvbSAnLi4vLi4vdW5iLW1lbnNhZ2VtL3VuYi1tZW5zYWdlbS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxyXG4gIHNlbGVjdG9yOiAnbGliLXVuYi1wZXNzb2EtdGVsZWZvbmUtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VuYi1wZXNzb2EtdGVsZWZvbmUtZm9ybS5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdW5iLXBlc3NvYS10ZWxlZm9uZS1mb3JtLmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFVuYlBlc3NvYVRlbGVmb25lRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdGVsZWZvbmVTYWx2byE6IFVuYlBlc3NvYVRlbGVmb25lO1xyXG4gIHRlbGVmb25lID0gbmV3IFVuYlBlc3NvYVRlbGVmb25lKCk7XHJcbiAgdGVsZWZvbmVzTGlzdDogVW5iUGVzc29hVGVsZWZvbmVbXTtcclxuICBsaXN0YVRpcG9UZWxlZm9uZTogVW5iUGVzc29hVGVsZWZvbmVUaXBvW10gPSBbXTtcclxuICBpZE1lbnNhZ2VtU2VydmljZSA9IFwiVW5iUGVzc29hVGVsZWZvbmVGb3JtXCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLCBwcml2YXRlIHNlcnZpY2U6IFVuQlBlc3NvYVNlcnZpY2UsIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBVbmJNZW5zYWdlbVNlcnZpY2UsIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxVbmJQZXNzb2FUZWxlZm9uZUZvcm1Db21wb25lbnQ+LCBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy50ZWxlZm9uZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YS50ZWxlZm9uZSkpOyAvLyBPIGUtbWFpbCBlc3BlY8OtZmljbyBwYXJhIGVkacOnw6NvXHJcblxyXG4gICAgLy8gVmVyaWZpcXVlIHNlIGEgbGlzdGEgZGUgZS1tYWlscyBmb2kgcGFzc2FkYSBlIGF0cmlidWEtYVxyXG4gICAgaWYgKGRhdGEudGVsZWZvbmVzTGlzdCkge1xyXG4gICAgICB0aGlzLnRlbGVmb25lc0xpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEudGVsZWZvbmVzTGlzdCkpOyAvLyBGYcOnYSB1bWEgY8OzcGlhIHByb2Z1bmRhIHNlIGZvciBtYW5pcHVsYXJcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGVsZWZvbmVzTGlzdCA9IFtdOyAvLyBJbmljaWFsaXplIGNvbW8gdmF6aW8gc2UgbsOjbyBmb3IgcGFzc2FkYVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy50ZWxlZm9uZSkge1xyXG4gICAgICB0aGlzLnRlbGVmb25lID0gbmV3IFVuYlBlc3NvYVRlbGVmb25lKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5nZXRUaXBvVGVsZWZvbmUoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAobGlzdGEpID0+IHtcclxuICAgICAgdGhpcy5saXN0YVRpcG9UZWxlZm9uZSA9IGxpc3RhO1xyXG5cclxuICAgICAgLy8gU2UgasOhIHRpdmVyIHRpcG9UZWxlZm9uZUNvZGlnbywgcHJlZW5jaGUgbyBub21lIGNvcnJlc3BvbmRlbnRlXHJcbiAgICAgIGlmICh0aGlzLnRlbGVmb25lLnRpcG9UZWxlZm9uZUNvZGlnbyAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgdGlwb0VuY29udHJhZG8gPSBsaXN0YS5maW5kKHQgPT4gdC5jb2RpZ28gPT09IHRoaXMudGVsZWZvbmUudGlwb1RlbGVmb25lQ29kaWdvKTtcclxuICAgICAgICBpZiAodGlwb0VuY29udHJhZG8pIHtcclxuICAgICAgICAgIHRoaXMudGVsZWZvbmUudGlwbyA9IHRpcG9FbmNvbnRyYWRvLmRlbm9taW5hY2FvO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnRlbGVmb25lLnRpcG8pIHtcclxuICAgICAgICBjb25zdCB0aXBvRW5jb250cmFkbyA9IGxpc3RhLmZpbmQoXHJcbiAgICAgICAgICB0ID0+IHQuZGVub21pbmFjYW8/LnRvTG93ZXJDYXNlKCkgPT09IHRoaXMudGVsZWZvbmUudGlwbz8udG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRpcG9FbmNvbnRyYWRvKSB7XHJcbiAgICAgICAgICB0aGlzLnRlbGVmb25lLnRpcG9UZWxlZm9uZUNvZGlnbyA9IHRpcG9FbmNvbnRyYWRvLmNvZGlnbyE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogVW5iUGVzc29hRXJyb1BhZHJhbykgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNhbHZhcihmb3JtOiBOZ0Zvcm0pIHtcclxuICAgIGlmIChmb3JtLmludmFsaWQgKSB7XHJcbiAgICAgIHRoaXMub3BlblNuYWNrQmFyKCdFeGlzdGVtIGVycm9zIG5vIGZvcm11bMOhcmlvLCBwb3IgZmF2b3IsIHZlcmlmaWNhci4nKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gMS4gRGVmaW5lIG8gJ3RpcG8nIHBhZHLDo28gKDEpIHNlIG7Do28gZm9yIHByZWVuY2hpZG8gKENvbmZvcm1lIHN1YSBzb2xpY2l0YcOnw6NvKVxyXG4gICAgaWYgKCF0aGlzLnRlbGVmb25lLnRpcG9UZWxlZm9uZUNvZGlnbykge1xyXG4gICAgICB0aGlzLnRlbGVmb25lLnRpcG9UZWxlZm9uZUNvZGlnbyA9IDE7IC8vIDEgw6kgZ2VyYWxtZW50ZSAnUmVzaWRlbmNpYWwnIG91ICdQcmluY2lwYWwnXHJcbiAgICB9XHJcblxyXG4gICAgLy8gMi4gRGVmaW5lIGEgJ29yZGVtJyAocXVlIG8gYmFjay1lbmQgY2hhbWEgZGUgJ29yZGVtVGVsZWZvbmUnKVxyXG4gICAgaWYgKCF0aGlzLnRlbGVmb25lLm9yZGVtIHx8IHRoaXMudGVsZWZvbmUub3JkZW0gPT09IDApIHtcclxuICAgICAgbGV0IG1heE9yZGVtID0gMDtcclxuXHJcbiAgICAgIC8vIFZlcmlmaWNhIHNlIGEgbGlzdGEgZGUgdGVsZWZvbmVzIGrDoSBleGlzdGUgZSB0ZW0gaXRlbnNcclxuICAgICAgaWYgKHRoaXMudGVsZWZvbmVzTGlzdCAmJiB0aGlzLnRlbGVmb25lc0xpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG1heE9yZGVtID0gTWF0aC5tYXgoLi4udGhpcy50ZWxlZm9uZXNMaXN0Lm1hcCh0ID0+IHQub3JkZW0gfHwgMCkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBEZWZpbmUgYSBvcmRlbSBkbyBub3ZvIHRlbGVmb25lIGNvbW8gYSBtYWlvciBvcmRlbSArIDFcclxuICAgICAgdGhpcy50ZWxlZm9uZS5vcmRlbSA9IG1heE9yZGVtICsgMTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnZhbGlkYXIodGhpcy50ZWxlZm9uZSkgPT0gZmFsc2UpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnRlbGVmb25lU2Fsdm8gPSB0aGlzLnRlbGVmb25lO1xyXG4gICAgdGhpcy5zYWx2YXJjbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgY29tcGFyYXJUaXBvcyh0MTogYW55LCB0MjogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdDEgJiYgdDIgJiYgdDEgPT09IHQyO1xyXG4gIH1cclxuXHJcbiAgb25UaXBvU2VsZWNpb25hZG8oY29kaWdvU2VsZWNpb25hZG86IG51bWJlcikge1xyXG4gICAgY29uc3QgdGlwb1NlbGVjaW9uYWRvID0gdGhpcy5saXN0YVRpcG9UZWxlZm9uZS5maW5kKHQgPT4gdC5jb2RpZ28gPT09IGNvZGlnb1NlbGVjaW9uYWRvKTsgLy8gPC0tLSBSZW5vbWVhZG8gZGUgbGlzdGFUaXBvRW5kZXJlY29cclxuICAgIGlmICh0aXBvU2VsZWNpb25hZG8pIHtcclxuICAgICAgdGhpcy50ZWxlZm9uZS50aXBvID0gdGlwb1NlbGVjaW9uYWRvLmRlbm9taW5hY2FvO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYSBvIG9iamV0byBkZSB0ZWxlZm9uZSBjb20gYmFzZSBuYXMgcmVncmFzIGRvIGJhY2tlbmQuXHJcbiAgICogUmV0b3JuYSB0cnVlIHNlIG8gdGVsZWZvbmUgZm9yIHbDoWxpZG8sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgKi9cclxuICB2YWxpZGFyKHRlbGVmb25lVG9WYWxpZGF0ZTogVW5iUGVzc29hVGVsZWZvbmUpOiBib29sZWFuIHtcclxuICAgIFxyXG4gICAgLy8gMS4gVmFsaWRhw6fDo28gZGUgTsO6bWVybyAoT2JyaWdhdMOzcmlvKVxyXG4gICAgaWYgKCF0ZWxlZm9uZVRvVmFsaWRhdGUubnVtZXJvIHx8IHRlbGVmb25lVG9WYWxpZGF0ZS5udW1lcm8udHJpbSgpID09PSAnJykge1xyXG4gICAgICB0aGlzLm9wZW5TbmFja0JhcihcIk7Dum1lcm8gZG8gdGVsZWZvbmUgw6kgdW0gY2FtcG8gb2JyaWdhdMOzcmlvLlwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDIuIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gKEZvcm1hdG8pXHJcbiAgICAvLyBxdWUgZWxlIGVzcGVyYSA4IG91IDkgZMOtZ2l0b3MgbnVtw6lyaWNvcyAocGFkcsOjbyBCcmFzaWwpLlxyXG4gICAgY29uc3QgbnVtZXJvTGltcG8gPSB0ZWxlZm9uZVRvVmFsaWRhdGUubnVtZXJvLnJlcGxhY2UoL1xcRC9nLCAnJyk7IC8vIFJlbW92ZSBuw6NvLWTDrWdpdG9zXHJcbiAgICBpZiAobnVtZXJvTGltcG8ubGVuZ3RoICE9PSA5KSB7XHJcbiAgICAgIHRoaXMub3BlblNuYWNrQmFyKFwiTsO6bWVybyBkbyB0ZWxlZm9uZSBkZXZlIGNvbnRlciBleGF0YW1lbnRlIDkgZMOtZ2l0b3MuXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIDMuIFZhbGlkYcOnw6NvIGRlIERERCAoT2JyaWdhdMOzcmlvIC0gQm9hIHByw6F0aWNhLCBlbWJvcmEgbyBKYXZhIG7Do28gZXhpamEpXHJcbiAgICBpZiAoIXRlbGVmb25lVG9WYWxpZGF0ZS5kZGQgfHwgdGVsZWZvbmVUb1ZhbGlkYXRlLmRkZC50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMub3BlblNuYWNrQmFyKFwiREREIMOpIHVtIGNhbXBvIG9icmlnYXTDs3Jpby5cIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyA0LiBWYWxpZGHDp8OjbyBkZSBEREQgKFRhbWFuaG8gTcOheGltbylcclxuICAgIGlmICh0ZWxlZm9uZVRvVmFsaWRhdGUuZGRkLnRyaW0oKS5sZW5ndGggPiAzKSB7XHJcbiAgICAgIHRoaXMub3BlblNuYWNrQmFyKFwiREREIGRldmUgdGVyIG5vIG3DoXhpbW8gMyBjYXJhY3RlcmVzLlwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDUuIFZhbGlkYcOnw6NvIGRlIERESSAoVGFtYW5obyBNw6F4aW1vKVxyXG4gICAgLy9cclxuICAgIGlmICh0ZWxlZm9uZVRvVmFsaWRhdGUuZGRpICYmIHRlbGVmb25lVG9WYWxpZGF0ZS5kZGkudHJpbSgpLmxlbmd0aCA+IDUpIHtcclxuICAgICAgdGhpcy5vcGVuU25hY2tCYXIoXCJEREkgZGV2ZSB0ZXIgbm8gbcOheGltbyA1IGNhcmFjdGVyZXMuXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gNi4gVmFsaWRhw6fDo28gZGUgUmFtYWwgKFRhbWFuaG8gTcOheGltbylcclxuICAgIC8vXHJcbiAgICBpZiAodGVsZWZvbmVUb1ZhbGlkYXRlLnJhbWFsICYmIHRlbGVmb25lVG9WYWxpZGF0ZS5yYW1hbC50cmltKCkubGVuZ3RoID4gNikge1xyXG4gICAgICB0aGlzLm9wZW5TbmFja0JhcihcIlJhbWFsIGRldmUgdGVyIG5vIG3DoXhpbW8gNiBjYXJhY3RlcmVzLlwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyA3LiBWYWxpZGHDp8OjbyBkZSBOb21lUmVzcG9uc2F2ZWwgKFRhbWFuaG8gTcOheGltbylcclxuICAgIC8vXHJcbiAgICBpZiAodGVsZWZvbmVUb1ZhbGlkYXRlLm5vbWVSZXNwb25zYXZlbCAmJiB0ZWxlZm9uZVRvVmFsaWRhdGUubm9tZVJlc3BvbnNhdmVsLnRyaW0oKS5sZW5ndGggPiAxMDApIHtcclxuICAgICAgdGhpcy5vcGVuU25hY2tCYXIoXCJOb21lIGRvIFJlc3BvbnPDoXZlbCBkZXZlIHRlciBubyBtw6F4aW1vIDEwMCBjYXJhY3RlcmVzLlwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlOyAvLyBQYXNzb3UgZW0gdG9kYXMgYXMgdmFsaWRhw6fDtWVzIVxyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShudWxsKTtcclxuICB9XHJcblxyXG4gIHNhbHZhcmNsb3NlKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy50ZWxlZm9uZVNhbHZvKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9yKGVycm86IFVuYlBlc3NvYUVycm9QYWRyYW8gfCBzdHJpbmcpIHtcclxuICAgIGxldCBlcnJvVHJhdGFkbzogVW5iUGVzc29hRXJyb1BhZHJhbztcclxuXHJcbiAgICAvLyBDb252ZXJ0ZSBzdHJpbmcgbG9jYWwgZW0gT2JqZXRvIFBhZHLDo29cclxuICAgIGlmICh0eXBlb2YgZXJybyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgZXJyb1RyYXRhZG8gPSB7XHJcbiAgICAgICAgc3RhdHVzOiA0MDAsXHJcbiAgICAgICAgbWVuc2FnZW1TaW1wbGVzOiBlcnJvLFxyXG4gICAgICAgIG1lbnNhZ2VtSHRtbDogYDxzdHJvbmc+JHtlcnJvfTwvc3Ryb25nPmBcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVycm9UcmF0YWRvID0gZXJybztcclxuICAgIH1cclxuXHJcbiAgICAvLyAxLiBTbmFja0JhclxyXG4gICAgaWYgKGVycm9UcmF0YWRvLm1lbnNhZ2VtU2ltcGxlcykge1xyXG4gICAgICB0aGlzLm9wZW5TbmFja0JhcihlcnJvVHJhdGFkby5tZW5zYWdlbVNpbXBsZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDIuIEFsZXJ0U2VydmljZSAoU2UgaG91dmVyIHRhZyA8dW5iLW1lbnNhZ2VtPiBubyBIVE1MIGRvIGRpYWxvZylcclxuICAgIGlmICh0aGlzLmFsZXJ0U2VydmljZSAmJiBlcnJvVHJhdGFkby5tZW5zYWdlbUh0bWwpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoZXJyb1RyYXRhZG8ubWVuc2FnZW1IdG1sLCBVbmJUaXBvTWVuc2FnZW1FbnVtLkRBTkdFUiwgdGhpcy5pZE1lbnNhZ2VtU2VydmljZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuU25hY2tCYXIobWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgJ3gnLCB7XHJcbiAgICAgIGR1cmF0aW9uOiA1MDAwLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufSIsIjxoMSBtYXQtZGlhbG9nLXRpdGxlPkNhZGFzdHJvIGRlIFRlbGVmb25lPC9oMT5cclxuPGZvcm0gKG5nU3VibWl0KT1cInNhbHZhcihmb3JtKVwiICNmb3JtPVwibmdGb3JtXCI+XHJcbiAgPG1hdC1kaWFsb2ctY29udGVudD5cclxuICAgIDx1bmItbWVuc2FnZW0gW2lkZW50aWZpY2Fkb3JdPVwiaWRNZW5zYWdlbVNlcnZpY2VcIj48L3VuYi1tZW5zYWdlbT5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTEwMFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5UaXBvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJ0ZWxlZm9uZS50aXBvVGVsZWZvbmVDb2RpZ29cIiBbY29tcGFyZVdpdGhdPVwiY29tcGFyYXJUaXBvc1wiIG5hbWU9XCJ0aXBvVGVsZWZvbmVDb2RpZ29cIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uVGlwb1NlbGVjaW9uYWRvKCRldmVudC52YWx1ZSlcIiByZXF1aXJlZD5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB0aXBvIG9mIGxpc3RhVGlwb1RlbGVmb25lXCIgW3ZhbHVlXT1cInRpcG8uY29kaWdvXCI+XHJcbiAgICAgICAgICAgIHt7dGlwby5kZW5vbWluYWNhb319XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0xMDBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+REREPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiM1wiIHJlcXVpcmVkIG1hdElucHV0IFsobmdNb2RlbCldPVwidGVsZWZvbmUuZGRkXCIgbmFtZT1cImRkZFZhbHVlXCIgI2RkZFZhbHVlPVwibmdNb2RlbFwiIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+IFxyXG4gICAgICBcclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0xMDBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+TsO6bWVybzwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHJlcXVpcmVkIG1heGxlbmd0aD1cIjlcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInRlbGVmb25lLm51bWVyb1wiIG5hbWU9XCJ0ZWxlZm9uZVZhbHVlXCIgI3RlbGVmb25lVmFsdWU9XCJuZ01vZGVsXCIgLz5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG5cclxuICA8bWF0LWRpYWxvZy1hY3Rpb25zIGFsaWduPVwiZW5kXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cImNsb3NlKClcIj5GZWNoYXI8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjb2xvcj1cInByaW1hcnlcIj5TYWx2YXI8L2J1dHRvbj5cclxuICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuPC9mb3JtPiJdfQ==
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS10ZWxlZm9uZS1mb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5iLWxpYi1jb21wb25lbnRzL3NyYy9saWIvdW5iLXBlc3NvYS91bmItcGVzc29hLXRlbGVmb25lLWZvcm0vdW5iLXBlc3NvYS10ZWxlZm9uZS1mb3JtLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5iLWxpYi1jb21wb25lbnRzL3NyYy9saWIvdW5iLXBlc3NvYS91bmItcGVzc29hLXRlbGVmb25lLWZvcm0vdW5iLXBlc3NvYS10ZWxlZm9uZS1mb3JtLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUQsT0FBTyxFQUFFLGlCQUFpQixFQUF5QixNQUFNLGdEQUFnRCxDQUFDO0FBRTFHLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFFekUsT0FBTyxFQUFzQixtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVFsRyxNQUFNLE9BQU8sOEJBQThCO0lBT3pDLFlBQW9CLFFBQXFCLEVBQVUsT0FBeUIsRUFBVSxZQUFnQyxFQUFTLFNBQXVELEVBQWtDLElBQVM7UUFBN00sYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQVMsY0FBUyxHQUFULFNBQVMsQ0FBOEM7UUFBa0MsU0FBSSxHQUFKLElBQUksQ0FBSztRQUxqTyxhQUFRLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBRW5DLHNCQUFpQixHQUE0QixFQUFFLENBQUM7UUFDaEQsc0JBQWlCLEdBQUcsdUJBQXVCLENBQUM7UUFHMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7UUFFN0YsMERBQTBEO1FBQzFELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsMkNBQTJDO1FBQ2xILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsQ0FBQywyQ0FBMkM7UUFDdEUsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDdkMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7Z0JBRS9CLGlFQUFpRTtnQkFDakUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixJQUFJLElBQUksRUFBRSxDQUFDO29CQUM3QyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQ3RGLElBQUksY0FBYyxFQUFFLENBQUM7d0JBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUM7b0JBQ2xELENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzlCLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQy9CLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FDeEUsQ0FBQztvQkFDRixJQUFJLGNBQWMsRUFBRSxDQUFDO3dCQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxNQUFPLENBQUM7b0JBQzVELENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFDQyxLQUFLLEVBQUUsQ0FBQyxHQUF3QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztTQUMzRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVk7UUFDakIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFHLENBQUM7WUFDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1lBQ3hFLE9BQU87UUFDVCxDQUFDO1FBQ0QsaUZBQWlGO1FBQ2pGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQyw4Q0FBOEM7UUFDdEYsQ0FBQztRQUVELGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEQsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBRWpCLHlEQUF5RDtZQUN6RCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUVELHlEQUF5RDtZQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUs7WUFBRSxPQUFPO1FBRWpELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFPLEVBQUUsRUFBTztRQUM1QixPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsaUJBQXlCO1FBQ3pDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxzQ0FBc0M7UUFDaEksSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDO0lBR0Q7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLGtCQUFxQztRQUUzQyx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDMUUsSUFBSSxDQUFDLFlBQVksQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELG1DQUFtQztRQUNuQywyREFBMkQ7UUFDM0QsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7UUFDdkYsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsc0RBQXNELENBQUMsQ0FBQztZQUMxRSxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCwyRUFBMkU7UUFDM0UsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLFlBQVksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQ2pELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELHVDQUF1QztRQUN2QyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQzFELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELHVDQUF1QztRQUN2QyxFQUFFO1FBQ0YsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2RSxJQUFJLENBQUMsWUFBWSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDMUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQseUNBQXlDO1FBQ3pDLEVBQUU7UUFDRixJQUFJLGtCQUFrQixDQUFDLEtBQUssSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNFLElBQUksQ0FBQyxZQUFZLENBQUMsd0NBQXdDLENBQUMsQ0FBQztZQUM1RCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxtREFBbUQ7UUFDbkQsRUFBRTtRQUNGLElBQUksa0JBQWtCLENBQUMsZUFBZSxJQUFJLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDakcsSUFBSSxDQUFDLFlBQVksQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1lBQzVFLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLENBQUMsaUNBQWlDO0lBQ2hELENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFrQztRQUM1QyxJQUFJLFdBQWdDLENBQUM7UUFFckMseUNBQXlDO1FBQ3pDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0IsV0FBVyxHQUFHO2dCQUNaLE1BQU0sRUFBRSxHQUFHO2dCQUNYLGVBQWUsRUFBRSxJQUFJO2dCQUNyQixZQUFZLEVBQUUsV0FBVyxJQUFJLFdBQVc7YUFDekMsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sV0FBVyxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDO1FBRUQsY0FBYztRQUNkLElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxtRUFBbUU7UUFDbkUsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5RyxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFlO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDL0IsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDOytHQW5MVSw4QkFBOEIsMklBT3VKLGVBQWU7bUdBUHBNLDhCQUE4QixvRUNmM0MsNmxEQThCTzs7NEZEZk0sOEJBQThCO2tCQU4xQyxTQUFTO2lDQUNJLEtBQUssWUFDUCw4QkFBOEI7OzBCQVdpSixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FUZWxlZm9uZSwgVW5iUGVzc29hVGVsZWZvbmVUaXBvIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS10ZWxlZm9uZS5tb2RlbCc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYUVycm9QYWRyYW8sIFVuQlBlc3NvYVNlcnZpY2UgfSBmcm9tICcuLi91bmItcGVzc29hLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVW5iTWVuc2FnZW1TZXJ2aWNlLCBVbmJUaXBvTWVuc2FnZW1FbnVtIH0gZnJvbSAnLi4vLi4vdW5iLW1lbnNhZ2VtL3VuYi1tZW5zYWdlbS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxyXG4gIHNlbGVjdG9yOiAnbGliLXVuYi1wZXNzb2EtdGVsZWZvbmUtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VuYi1wZXNzb2EtdGVsZWZvbmUtZm9ybS5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdW5iLXBlc3NvYS10ZWxlZm9uZS1mb3JtLmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFVuYlBlc3NvYVRlbGVmb25lRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdGVsZWZvbmVTYWx2byE6IFVuYlBlc3NvYVRlbGVmb25lO1xyXG4gIHRlbGVmb25lID0gbmV3IFVuYlBlc3NvYVRlbGVmb25lKCk7XHJcbiAgdGVsZWZvbmVzTGlzdDogVW5iUGVzc29hVGVsZWZvbmVbXTtcclxuICBsaXN0YVRpcG9UZWxlZm9uZTogVW5iUGVzc29hVGVsZWZvbmVUaXBvW10gPSBbXTtcclxuICBpZE1lbnNhZ2VtU2VydmljZSA9IFwiVW5iUGVzc29hVGVsZWZvbmVGb3JtXCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLCBwcml2YXRlIHNlcnZpY2U6IFVuQlBlc3NvYVNlcnZpY2UsIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBVbmJNZW5zYWdlbVNlcnZpY2UsIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxVbmJQZXNzb2FUZWxlZm9uZUZvcm1Db21wb25lbnQ+LCBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy50ZWxlZm9uZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YS50ZWxlZm9uZSkpOyAvLyBPIGUtbWFpbCBlc3BlY8OtZmljbyBwYXJhIGVkacOnw6NvXHJcblxyXG4gICAgLy8gVmVyaWZpcXVlIHNlIGEgbGlzdGEgZGUgZS1tYWlscyBmb2kgcGFzc2FkYSBlIGF0cmlidWEtYVxyXG4gICAgaWYgKGRhdGEudGVsZWZvbmVzTGlzdCkge1xyXG4gICAgICB0aGlzLnRlbGVmb25lc0xpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEudGVsZWZvbmVzTGlzdCkpOyAvLyBGYcOnYSB1bWEgY8OzcGlhIHByb2Z1bmRhIHNlIGZvciBtYW5pcHVsYXJcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGVsZWZvbmVzTGlzdCA9IFtdOyAvLyBJbmljaWFsaXplIGNvbW8gdmF6aW8gc2UgbsOjbyBmb3IgcGFzc2FkYVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy50ZWxlZm9uZSkge1xyXG4gICAgICB0aGlzLnRlbGVmb25lID0gbmV3IFVuYlBlc3NvYVRlbGVmb25lKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5nZXRUaXBvVGVsZWZvbmUoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAobGlzdGEpID0+IHtcclxuICAgICAgdGhpcy5saXN0YVRpcG9UZWxlZm9uZSA9IGxpc3RhO1xyXG5cclxuICAgICAgLy8gU2UgasOhIHRpdmVyIHRpcG9UZWxlZm9uZUNvZGlnbywgcHJlZW5jaGUgbyBub21lIGNvcnJlc3BvbmRlbnRlXHJcbiAgICAgIGlmICh0aGlzLnRlbGVmb25lLnRpcG9UZWxlZm9uZUNvZGlnbyAhPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgdGlwb0VuY29udHJhZG8gPSBsaXN0YS5maW5kKHQgPT4gdC5jb2RpZ28gPT09IHRoaXMudGVsZWZvbmUudGlwb1RlbGVmb25lQ29kaWdvKTtcclxuICAgICAgICBpZiAodGlwb0VuY29udHJhZG8pIHtcclxuICAgICAgICAgIHRoaXMudGVsZWZvbmUudGlwbyA9IHRpcG9FbmNvbnRyYWRvLmRlbm9taW5hY2FvO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnRlbGVmb25lLnRpcG8pIHtcclxuICAgICAgICBjb25zdCB0aXBvRW5jb250cmFkbyA9IGxpc3RhLmZpbmQoXHJcbiAgICAgICAgICB0ID0+IHQuZGVub21pbmFjYW8/LnRvTG93ZXJDYXNlKCkgPT09IHRoaXMudGVsZWZvbmUudGlwbz8udG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRpcG9FbmNvbnRyYWRvKSB7XHJcbiAgICAgICAgICB0aGlzLnRlbGVmb25lLnRpcG9UZWxlZm9uZUNvZGlnbyA9IHRpcG9FbmNvbnRyYWRvLmNvZGlnbyE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogVW5iUGVzc29hRXJyb1BhZHJhbykgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNhbHZhcihmb3JtOiBOZ0Zvcm0pIHtcclxuICAgIGlmIChmb3JtLmludmFsaWQgKSB7XHJcbiAgICAgIHRoaXMub3BlblNuYWNrQmFyKCdFeGlzdGVtIGVycm9zIG5vIGZvcm11bMOhcmlvLCBwb3IgZmF2b3IsIHZlcmlmaWNhci4nKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gMS4gRGVmaW5lIG8gJ3RpcG8nIHBhZHLDo28gKDEpIHNlIG7Do28gZm9yIHByZWVuY2hpZG8gKENvbmZvcm1lIHN1YSBzb2xpY2l0YcOnw6NvKVxyXG4gICAgaWYgKCF0aGlzLnRlbGVmb25lLnRpcG9UZWxlZm9uZUNvZGlnbykge1xyXG4gICAgICB0aGlzLnRlbGVmb25lLnRpcG9UZWxlZm9uZUNvZGlnbyA9IDE7IC8vIDEgw6kgZ2VyYWxtZW50ZSAnUmVzaWRlbmNpYWwnIG91ICdQcmluY2lwYWwnXHJcbiAgICB9XHJcblxyXG4gICAgLy8gMi4gRGVmaW5lIGEgJ29yZGVtJyAocXVlIG8gYmFjay1lbmQgY2hhbWEgZGUgJ29yZGVtVGVsZWZvbmUnKVxyXG4gICAgaWYgKCF0aGlzLnRlbGVmb25lLm9yZGVtIHx8IHRoaXMudGVsZWZvbmUub3JkZW0gPT09IDApIHtcclxuICAgICAgbGV0IG1heE9yZGVtID0gMDtcclxuXHJcbiAgICAgIC8vIFZlcmlmaWNhIHNlIGEgbGlzdGEgZGUgdGVsZWZvbmVzIGrDoSBleGlzdGUgZSB0ZW0gaXRlbnNcclxuICAgICAgaWYgKHRoaXMudGVsZWZvbmVzTGlzdCAmJiB0aGlzLnRlbGVmb25lc0xpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG1heE9yZGVtID0gTWF0aC5tYXgoLi4udGhpcy50ZWxlZm9uZXNMaXN0Lm1hcCh0ID0+IHQub3JkZW0gfHwgMCkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBEZWZpbmUgYSBvcmRlbSBkbyBub3ZvIHRlbGVmb25lIGNvbW8gYSBtYWlvciBvcmRlbSArIDFcclxuICAgICAgdGhpcy50ZWxlZm9uZS5vcmRlbSA9IG1heE9yZGVtICsgMTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnZhbGlkYXIodGhpcy50ZWxlZm9uZSkgPT0gZmFsc2UpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnRlbGVmb25lU2Fsdm8gPSB0aGlzLnRlbGVmb25lO1xyXG4gICAgdGhpcy5zYWx2YXJjbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgY29tcGFyYXJUaXBvcyh0MTogYW55LCB0MjogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdDEgJiYgdDIgJiYgdDEgPT09IHQyO1xyXG4gIH1cclxuXHJcbiAgb25UaXBvU2VsZWNpb25hZG8oY29kaWdvU2VsZWNpb25hZG86IG51bWJlcikge1xyXG4gICAgY29uc3QgdGlwb1NlbGVjaW9uYWRvID0gdGhpcy5saXN0YVRpcG9UZWxlZm9uZS5maW5kKHQgPT4gdC5jb2RpZ28gPT09IGNvZGlnb1NlbGVjaW9uYWRvKTsgLy8gPC0tLSBSZW5vbWVhZG8gZGUgbGlzdGFUaXBvRW5kZXJlY29cclxuICAgIGlmICh0aXBvU2VsZWNpb25hZG8pIHtcclxuICAgICAgdGhpcy50ZWxlZm9uZS50aXBvID0gdGlwb1NlbGVjaW9uYWRvLmRlbm9taW5hY2FvO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYSBvIG9iamV0byBkZSB0ZWxlZm9uZSBjb20gYmFzZSBuYXMgcmVncmFzIGRvIGJhY2tlbmQuXHJcbiAgICogUmV0b3JuYSB0cnVlIHNlIG8gdGVsZWZvbmUgZm9yIHbDoWxpZG8sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgKi9cclxuICB2YWxpZGFyKHRlbGVmb25lVG9WYWxpZGF0ZTogVW5iUGVzc29hVGVsZWZvbmUpOiBib29sZWFuIHtcclxuICAgIFxyXG4gICAgLy8gMS4gVmFsaWRhw6fDo28gZGUgTsO6bWVybyAoT2JyaWdhdMOzcmlvKVxyXG4gICAgaWYgKCF0ZWxlZm9uZVRvVmFsaWRhdGUubnVtZXJvIHx8IHRlbGVmb25lVG9WYWxpZGF0ZS5udW1lcm8udHJpbSgpID09PSAnJykge1xyXG4gICAgICB0aGlzLm9wZW5TbmFja0JhcihcIk7Dum1lcm8gZG8gdGVsZWZvbmUgw6kgdW0gY2FtcG8gb2JyaWdhdMOzcmlvLlwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDIuIFZhbGlkYcOnw6NvIGRlIE7Dum1lcm8gKEZvcm1hdG8pXHJcbiAgICAvLyBxdWUgZWxlIGVzcGVyYSA4IG91IDkgZMOtZ2l0b3MgbnVtw6lyaWNvcyAocGFkcsOjbyBCcmFzaWwpLlxyXG4gICAgY29uc3QgbnVtZXJvTGltcG8gPSB0ZWxlZm9uZVRvVmFsaWRhdGUubnVtZXJvLnJlcGxhY2UoL1xcRC9nLCAnJyk7IC8vIFJlbW92ZSBuw6NvLWTDrWdpdG9zXHJcbiAgICBpZiAobnVtZXJvTGltcG8ubGVuZ3RoICE9PSA5KSB7XHJcbiAgICAgIHRoaXMub3BlblNuYWNrQmFyKFwiTsO6bWVybyBkbyB0ZWxlZm9uZSBkZXZlIGNvbnRlciBleGF0YW1lbnRlIDkgZMOtZ2l0b3MuXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIDMuIFZhbGlkYcOnw6NvIGRlIERERCAoT2JyaWdhdMOzcmlvIC0gQm9hIHByw6F0aWNhLCBlbWJvcmEgbyBKYXZhIG7Do28gZXhpamEpXHJcbiAgICBpZiAoIXRlbGVmb25lVG9WYWxpZGF0ZS5kZGQgfHwgdGVsZWZvbmVUb1ZhbGlkYXRlLmRkZC50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMub3BlblNuYWNrQmFyKFwiREREIMOpIHVtIGNhbXBvIG9icmlnYXTDs3Jpby5cIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyA0LiBWYWxpZGHDp8OjbyBkZSBEREQgKFRhbWFuaG8gTcOheGltbylcclxuICAgIGlmICh0ZWxlZm9uZVRvVmFsaWRhdGUuZGRkLnRyaW0oKS5sZW5ndGggPiAzKSB7XHJcbiAgICAgIHRoaXMub3BlblNuYWNrQmFyKFwiREREIGRldmUgdGVyIG5vIG3DoXhpbW8gMyBjYXJhY3RlcmVzLlwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDUuIFZhbGlkYcOnw6NvIGRlIERESSAoVGFtYW5obyBNw6F4aW1vKVxyXG4gICAgLy9cclxuICAgIGlmICh0ZWxlZm9uZVRvVmFsaWRhdGUuZGRpICYmIHRlbGVmb25lVG9WYWxpZGF0ZS5kZGkudHJpbSgpLmxlbmd0aCA+IDUpIHtcclxuICAgICAgdGhpcy5vcGVuU25hY2tCYXIoXCJEREkgZGV2ZSB0ZXIgbm8gbcOheGltbyA1IGNhcmFjdGVyZXMuXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gNi4gVmFsaWRhw6fDo28gZGUgUmFtYWwgKFRhbWFuaG8gTcOheGltbylcclxuICAgIC8vXHJcbiAgICBpZiAodGVsZWZvbmVUb1ZhbGlkYXRlLnJhbWFsICYmIHRlbGVmb25lVG9WYWxpZGF0ZS5yYW1hbC50cmltKCkubGVuZ3RoID4gNikge1xyXG4gICAgICB0aGlzLm9wZW5TbmFja0JhcihcIlJhbWFsIGRldmUgdGVyIG5vIG3DoXhpbW8gNiBjYXJhY3RlcmVzLlwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyA3LiBWYWxpZGHDp8OjbyBkZSBOb21lUmVzcG9uc2F2ZWwgKFRhbWFuaG8gTcOheGltbylcclxuICAgIC8vXHJcbiAgICBpZiAodGVsZWZvbmVUb1ZhbGlkYXRlLm5vbWVSZXNwb25zYXZlbCAmJiB0ZWxlZm9uZVRvVmFsaWRhdGUubm9tZVJlc3BvbnNhdmVsLnRyaW0oKS5sZW5ndGggPiAxMDApIHtcclxuICAgICAgdGhpcy5vcGVuU25hY2tCYXIoXCJOb21lIGRvIFJlc3BvbnPDoXZlbCBkZXZlIHRlciBubyBtw6F4aW1vIDEwMCBjYXJhY3RlcmVzLlwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlOyAvLyBQYXNzb3UgZW0gdG9kYXMgYXMgdmFsaWRhw6fDtWVzIVxyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShudWxsKTtcclxuICB9XHJcblxyXG4gIHNhbHZhcmNsb3NlKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy50ZWxlZm9uZVNhbHZvKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9yKGVycm86IFVuYlBlc3NvYUVycm9QYWRyYW8gfCBzdHJpbmcpIHtcclxuICAgIGxldCBlcnJvVHJhdGFkbzogVW5iUGVzc29hRXJyb1BhZHJhbztcclxuXHJcbiAgICAvLyBDb252ZXJ0ZSBzdHJpbmcgbG9jYWwgZW0gT2JqZXRvIFBhZHLDo29cclxuICAgIGlmICh0eXBlb2YgZXJybyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgZXJyb1RyYXRhZG8gPSB7XHJcbiAgICAgICAgc3RhdHVzOiA0MDAsXHJcbiAgICAgICAgbWVuc2FnZW1TaW1wbGVzOiBlcnJvLFxyXG4gICAgICAgIG1lbnNhZ2VtSHRtbDogYDxzdHJvbmc+JHtlcnJvfTwvc3Ryb25nPmBcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVycm9UcmF0YWRvID0gZXJybztcclxuICAgIH1cclxuXHJcbiAgICAvLyAxLiBTbmFja0JhclxyXG4gICAgaWYgKGVycm9UcmF0YWRvLm1lbnNhZ2VtU2ltcGxlcykge1xyXG4gICAgICB0aGlzLm9wZW5TbmFja0JhcihlcnJvVHJhdGFkby5tZW5zYWdlbVNpbXBsZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDIuIEFsZXJ0U2VydmljZSAoU2UgaG91dmVyIHRhZyA8dW5iLW1lbnNhZ2VtPiBubyBIVE1MIGRvIGRpYWxvZylcclxuICAgIGlmICh0aGlzLmFsZXJ0U2VydmljZSAmJiBlcnJvVHJhdGFkby5tZW5zYWdlbUh0bWwpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoZXJyb1RyYXRhZG8ubWVuc2FnZW1IdG1sLCBVbmJUaXBvTWVuc2FnZW1FbnVtLkRBTkdFUiwgdGhpcy5pZE1lbnNhZ2VtU2VydmljZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuU25hY2tCYXIobWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgJ3gnLCB7XHJcbiAgICAgIGR1cmF0aW9uOiA1MDAwLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufSIsIjxoMSBtYXQtZGlhbG9nLXRpdGxlPkNhZGFzdHJvIGRlIFRlbGVmb25lPC9oMT5cclxuPGZvcm0gKG5nU3VibWl0KT1cInNhbHZhcihmb3JtKVwiICNmb3JtPVwibmdGb3JtXCI+XHJcbiAgPG1hdC1kaWFsb2ctY29udGVudD5cclxuICAgIDx1bmItbWVuc2FnZW0gW2lkZW50aWZpY2Fkb3JdPVwiaWRNZW5zYWdlbVNlcnZpY2VcIj48L3VuYi1tZW5zYWdlbT5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLTEwMFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5UaXBvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJ0ZWxlZm9uZS50aXBvVGVsZWZvbmVDb2RpZ29cIiBbY29tcGFyZVdpdGhdPVwiY29tcGFyYXJUaXBvc1wiIG5hbWU9XCJ0aXBvVGVsZWZvbmVDb2RpZ29cIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uVGlwb1NlbGVjaW9uYWRvKCRldmVudC52YWx1ZSlcIiByZXF1aXJlZD5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB0aXBvIG9mIGxpc3RhVGlwb1RlbGVmb25lXCIgW3ZhbHVlXT1cInRpcG8uY29kaWdvXCI+XHJcbiAgICAgICAgICAgIHt7dGlwby5kZW5vbWluYWNhb319XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0xMDBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+REREPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiM1wiIHJlcXVpcmVkIG1hdElucHV0IFsobmdNb2RlbCldPVwidGVsZWZvbmUuZGRkXCIgbmFtZT1cImRkZFZhbHVlXCIgI2RkZFZhbHVlPVwibmdNb2RlbFwiIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+IFxyXG4gICAgICBcclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0xMDBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+TsO6bWVybzwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHJlcXVpcmVkIG1heGxlbmd0aD1cIjlcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInRlbGVmb25lLm51bWVyb1wiIG5hbWU9XCJ0ZWxlZm9uZVZhbHVlXCIgI3RlbGVmb25lVmFsdWU9XCJuZ01vZGVsXCIgLz5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG5cclxuICA8bWF0LWRpYWxvZy1hY3Rpb25zIGFsaWduPVwiZW5kXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cImNsb3NlKClcIj5GZWNoYXI8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjb2xvcj1cInByaW1hcnlcIj5TYWx2YXI8L2J1dHRvbj5cclxuICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuPC9mb3JtPiJdfQ==