@sd-angular/core 1.3.68 → 1.3.70

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.
@@ -12,5 +12,5 @@
12
12
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
- ***************************************************************************** */function y(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{s(n.next(e))}catch(e){a(e)}}function l(e){try{s(n.throw(e))}catch(e){a(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,l)}s((n=n.apply(e,t||[])).next())}))}function v(e,t){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(a){return function(l){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;i;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,n=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=t.call(e,i)}catch(e){a=[6,e],n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,l])}}}Object.create;Object.create;function C(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)}function I(e,t,r,n,o){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?o.call(e,r):o?o.value=r:t.set(e,r),r}var w,x,M,E,k,T,O,P,q,F,S=function(e){this.templateRef=e};S.decorators=[{type:t.Directive,args:[{selector:"[sdInputSuffix]"}]}],S.ctorParameters=function(){return[{type:t.TemplateRef}]};var V=function(){function e(e,r,n){var o=this;this.ref=e,this.formConfig=r,this.utilityService=n,this.id="I"+i.v4(),w.set(this,i.v4()),x.set(this,void 0),this.type="text",this.disableErrorMessage=!1,M.set(this,!1),E.set(this,void 0),this.modelChange=new t.EventEmitter,this.isRequired=!1,this.isReadonly=!1,k.set(this,void 0),T.set(this,void 0),this.icon="search",this.hideIcon=!1,this.sdClickIcon=new t.EventEmitter,this.sdChange=new t.EventEmitter,this.sdFocus=new t.EventEmitter,this.sdFocusForceBlur=new t.EventEmitter,this.keyupEnter=new t.EventEmitter,this.formControl=new u.SdFormControl,O.set(this,new s.Subscription),this.isFocused=!1,this.copyable=!1,this.reValidate=function(){o.formControl.updateValueAndValidity()},P.set(this,(function(){o.formControl.clearValidators(),o.formControl.clearAsyncValidators();var e=[],t=[];o.isRequired&&e.push(a.Validators.required),o.minlength>0&&e.push(a.Validators.minLength(o.minlength)),o.maxlength>0&&e.push(a.Validators.maxLength(o.maxlength)),C(o,k)&&e.push(a.Validators.pattern(C(o,k))),C(o,T)&&t.push(C(o,F).call(o,C(o,T))),o.formControl.setValidators(e),o.formControl.setAsyncValidators(t),o.formControl.updateValueAndValidity()})),q.set(this,(function(e){o.modelChange.emit(o.formControl.value),o.sdChange.emit(o.formControl.value)})),this.onKeyupEnter=function(){var e,t=(null!==(e=o.formControl.value)&&void 0!==e?e:"").toString();t.length>t.trim().length&&o.formControl.setValue(t.trim()),o.keyupEnter.emit(o.formControl.value),C(o,M)&&o.blur()},this.onClickIcon=function(e){null==e||e.preventDefault(),null==e||e.stopPropagation(),o.sdClickIcon.emit(o.formControl.value)},this.onFocus=function(){var e;o.isFocused=!0,o.sdFocus.emit(),(null===(e=o.sdFocusForceBlur.observers)||void 0===e?void 0:e.length)>0&&(o.blur(),o.sdFocusForceBlur.emit())},this.onBlur=function(){var e;o.isFocused=!1;var t=(null!==(e=o.formControl.value)&&void 0!==e?e:"").toString();t.length>t.trim().length&&o.formControl.setValue(t.trim())},this.onClick=function(){var e;(null===(e=o.sdView)||void 0===e?void 0:e.templateRef)&&(o.formControl.disabled||o.isFocused||o.focus())},this.blur=function(){var e,t;o.isFocused=!1,null===(t=null===(e=o.control)||void 0===e?void 0:e.nativeElement)||void 0===t||t.blur()},this.focus=function(){o.isFocused=!0,setTimeout((function(){var e,t;null===(t=null===(e=o.control)||void 0===e?void 0:e.nativeElement)||void 0===t||t.focus()}),100)},F.set(this,(function(e){return function(t){return y(o,void 0,void 0,(function(){var r,n,o;return v(this,(function(a){switch(a.label){case 0:return r=t.value||null,e&&"function"==typeof e?(n=e(r))instanceof Promise?[4,n]:[3,2]:[3,3];case 1:return(o=a.sent())?[2,{customValidator:o}]:[2,null];case 2:return n?[2,{customValidator:n}]:[2,null];case 3:return[2,null]}}))}))}}))}return Object.defineProperty(e.prototype,"name",{set:function(e){e&&I(this,w,e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"form",{set:function(e){e&&(e instanceof a.NgForm?I(this,x,e.form):I(this,x,e))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_label",{set:function(e){this.label=e,this.qcId=b.default({selector:"sd-input",label:e})},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_disableErrorMessage",{set:function(e){this.disableErrorMessage=""===e||e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_blurOnEnter",{set:function(e){I(this,M,""===e||e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"model",{set:function(e){C(this,E)!==e&&(I(this,E,e),this.formControl.setValue(e,{emitEvent:!1}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"required",{set:function(e){this.isRequired=""===e||e,C(this,P).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"readonly",{set:function(e){this.isReadonly=""===e||e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pMinlength",{set:function(e){this.minlength=+e,C(this,P).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pMaxlength",{set:function(e){this.maxlength=+e,C(this,P).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pattern",{set:function(e){I(this,k,e),C(this,P).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"validator",{set:function(e){I(this,T,e),C(this,P).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{set:function(e){(e=""===e||e)?this.formControl.disable():this.formControl.enable()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_hideIcon",{set:function(e){this.hideIcon=""===e||e,e=""===e||e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_copyable",{set:function(e){this.copyable=""===e||e},enumerable:!1,configurable:!0}),e.prototype.ngOnInit=function(){var e,t=this;this.appearance=this.appearance||(null===(e=this.formConfig)||void 0===e?void 0:e.appearance),C(this,O).add(this.formControl.sdChanges.subscribe((function(){t.ref.markForCheck()})))},e.prototype.ngAfterViewInit=function(){var e;C(this,O).add(this.formControl.valueChanges.subscribe(C(this,q))),null===(e=C(this,x))||void 0===e||e.addControl(C(this,w),this.formControl),this.ref.detectChanges()},e.prototype.ngOnDestroy=function(){var e;null===(e=C(this,x))||void 0===e||e.removeControl(C(this,w)),C(this,O).unsubscribe()},e.prototype.copyText=function(){var e=this;this.utilityService.copyToClipboard(C(this,E)),this.btnCopy.nativeElement.innerText="Copied",this.btnCopy.nativeElement.setAttribute("style","color: #4caf50;"),setTimeout((function(){e.btnCopy.nativeElement.innerText="Copy",e.btnCopy.nativeElement.removeAttribute("style")}),2e3)},e}();w=new WeakMap,x=new WeakMap,M=new WeakMap,E=new WeakMap,k=new WeakMap,T=new WeakMap,O=new WeakMap,P=new WeakMap,q=new WeakMap,F=new WeakMap,V.decorators=[{type:t.Component,args:[{selector:"sd-input",template:'<label *ngIf="!appearance && label && !sdLabelDef?.templateRef" class="d-block mb-0 T14M">{{label}} <span class="text-danger mb-2"\r\n *ngIf="isRequired">*</span></label>\r\n<ng-container *ngIf="sdLabelDef?.templateRef" matSuffix>\r\n <ng-container *ngTemplateOutlet="sdLabelDef.templateRef">\r\n </ng-container>\r\n</ng-container>\r\n<div class="d-flex align-items-center" [class.sd-view]="sdView?.templateRef" [class.c-focused]="isFocused"\r\n [class.c-disabled]="formControl.disabled" (click)="onClick()">\r\n <ng-container *ngIf="sdView?.templateRef && !isFocused; else default">\r\n <ng-container *ngTemplateOutlet="sdView.templateRef;context: { value: formControl.value }">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class="sd-md"\r\n [ngClass]="{\'sd-form-tooltip\':tooltip, \'sd-sm\': size === \'sm\', \'no-padding-wrapper\': disableErrorMessage}"\r\n [appearance]="appearance || \'outline\'">\r\n <mat-label *ngIf="appearance && label">{{label}}</mat-label>\r\n <input [id]="id" [formControl]="formControl" [type]="type" #control matInput\r\n [placeholder]="placeholder || (appearance ? label : \'\')" (keyup.enter)="onKeyupEnter()" (focus)="onFocus()"\r\n (blur)="onBlur()" [required]="isRequired" [readonly]="isReadonly" [autocomplete]="id" autocorrect="off"\r\n [step]="1" [attr.data-qclabel]="label" [attr.data-qcid]="qcId" [sdPopoverTriggerFor]="null"\r\n [sdPopoverDisabled]="!disableErrorMessage || formControl.valid">\r\n <button #btnCopy *ngIf="copyable" matSuffix mat-flat-button aria-label="Clear" class="btn-copy"\r\n (click)="copyText()">\r\n Copy\r\n </button>\r\n <span class="mr-1" *ngIf="maxlength" matSuffix>{{formControl.value?.length || 0}}/{{maxlength}}</span>\r\n <ng-container *ngIf="sdInputSuffix?.templateRef" matSuffix>\r\n <ng-container *ngTemplateOutlet="sdInputSuffix.templateRef">\r\n </ng-container>\r\n </ng-container>\r\n <mat-icon *ngIf="!hideIcon && sdClickIcon?.observers?.length" (click)="onClickIcon($event)"\r\n class="pointer sd-suffix-icon" matSuffix>\r\n {{icon}}\r\n </mat-icon>\r\n <mat-error *ngIf="formControl.errors?.required">\r\n <ng-container *ngIf="!disableErrorMessage">{{ "This field is required" | sdTranslate }}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf=" formControl.errors?.maxlength">\r\n <ng-container *ngIf="!disableErrorMessage">{{\'Max length\' | sdTranslate}} {{maxlength}}\r\n </ng-container>\r\n </mat-error>\r\n <mat-error *ngIf="formControl.errors?.pattern">\r\n <ng-container *ngIf="!disableErrorMessage">{{\'Pattern error\' | sdTranslate}}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf="formControl.errors?.customValidator">\r\n <ng-container *ngIf="!disableErrorMessage">{{formControl.errors?.customValidator}}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <div *ngIf="tooltip" class="sd-tooltip">\r\n <mat-icon (click)="sdTooltip.toggle()" [matTooltip]="formControl.value | sdInputTooltipPipe:tooltip" matSuffix\r\n #sdTooltip="matTooltip">info</mat-icon>\r\n </div>\r\n </ng-template>\r\n</div>\r\n\x3c!-- <sd-popover #error="sdPopover" type="danger" width="300px">\r\n <span *ngIf="formControl.errors?.required">\r\n {{ "This field is required" | sdTranslate }}\r\n </span>\r\n <span *ngIf="formControl.errors?.maxlength">\r\n {{\'Max length\' | sdTranslate}} <strong>{{maxlength}}</strong>\r\n </span>\r\n <span *ngIf="formControl.errors?.pattern">\r\n {{\'Pattern error\' | sdTranslate}}\r\n </span>\r\n <span *ngIf="formControl.errors?.customValidator">\r\n {{formControl.errors?.customValidator}}\r\n </span>\r\n</sd-popover> --\x3e',changeDetection:t.ChangeDetectionStrategy.OnPush,styles:[":host ::ng-deep .mat-form-field.sd-form-tooltip{width:calc(100% - 30px)}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field input.mat-input-element:disabled{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}.sd-tooltip{display:inline-block;margin:auto;text-align:center;width:30px}:host{display:block;padding-top:5px}.sd-md:hover .btn-copy{visibility:visible}.btn-copy{background:#e9e9e9!important;font-size:12px;line-height:26px!important;margin-bottom:3px;visibility:hidden}"]}]}],V.ctorParameters=function(){return[{type:t.ChangeDetectorRef},{type:void 0,decorators:[{type:t.Inject,args:[u.FORM_CONFIG]},{type:t.Optional}]},{type:c.SdUtilityService}]},V.propDecorators={name:[{type:t.Input}],appearance:[{type:t.Input}],size:[{type:t.Input}],form:[{type:t.Input}],_label:[{type:t.Input,args:["label"]}],placeholder:[{type:t.Input}],type:[{type:t.Input}],_disableErrorMessage:[{type:t.Input,args:["disableErrorMessage"]}],_blurOnEnter:[{type:t.Input,args:["blurOnEnter"]}],model:[{type:t.Input}],modelChange:[{type:t.Output}],required:[{type:t.Input}],readonly:[{type:t.Input}],pMinlength:[{type:t.Input,args:["minlength"]}],pMaxlength:[{type:t.Input,args:["maxlength"]}],pattern:[{type:t.Input}],validator:[{type:t.Input}],disabled:[{type:t.Input}],icon:[{type:t.Input}],_hideIcon:[{type:t.Input,args:["hideIcon"]}],sdClickIcon:[{type:t.Output}],tooltip:[{type:t.Input}],sdChange:[{type:t.Output}],sdFocus:[{type:t.Output}],sdFocusForceBlur:[{type:t.Output}],keyupEnter:[{type:t.Output}],control:[{type:t.ViewChild,args:["control"]}],sdInputSuffix:[{type:t.ContentChild,args:[S]}],sdLabelDef:[{type:t.ContentChild,args:[u.SdLabelDefDirective]}],sdView:[{type:t.ContentChild,args:[u.SdViewDefDirective]}],btnCopy:[{type:t.ViewChild,args:["btnCopy",{read:t.ElementRef}]}],_copyable:[{type:t.Input,args:["copyable"]}]};var j=function(){function e(){}return e.prototype.transform=function(e,t){return"string"==typeof t?t:t(e)},e}();j.decorators=[{type:t.Pipe,args:[{name:"sdInputTooltipPipe"}]}];var R=function(){function e(){}return e.prototype.ngOnChanges=function(e){console.log(e),e.touch&&this.ref.markForCheck()},e}();R.decorators=[{type:t.Directive,args:[{selector:"[touch]"}]}],R.propDecorators={touch:[{type:t.Input}],ref:[{type:t.Input}]};var D=function(){};D.decorators=[{type:t.NgModule,args:[{imports:[r.CommonModule,a.FormsModule,a.ReactiveFormsModule,d.MatFormFieldModule,p.MatInputModule,n.MatIconModule,o.MatTooltipModule,f.SdTranslateModule,u.SdCommonModule,g.SdPopoverModule,m.MatButtonModule],declarations:[V,j,S,R],exports:[V,j,S,u.SdCommonModule]}]}],e.SdInput=V,e.SdInputModule=D,e.SdInputSuffixDirective=S,e.SdInputTooltipPipe=j,e.ɵa=R,Object.defineProperty(e,"__esModule",{value:!0})}));
15
+ ***************************************************************************** */function y(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{s(n.next(e))}catch(e){a(e)}}function l(e){try{s(n.throw(e))}catch(e){a(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,l)}s((n=n.apply(e,t||[])).next())}))}function v(e,t){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(a){return function(l){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;i;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,n=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=t.call(e,i)}catch(e){a=[6,e],n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,l])}}}Object.create;Object.create;function C(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)}function I(e,t,r,n,o){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?o.call(e,r):o?o.value=r:t.set(e,r),r}var w,x,M,E,k,O,T,P,q,F,S=function(e){this.templateRef=e};S.decorators=[{type:t.Directive,args:[{selector:"[sdInputSuffix]"}]}],S.ctorParameters=function(){return[{type:t.TemplateRef}]};var V=function(){function e(e,r,n){var o=this;this.ref=e,this.formConfig=r,this.utilityService=n,this.id="I"+i.v4(),w.set(this,i.v4()),x.set(this,void 0),this.type="text",this.disableErrorMessage=!1,M.set(this,!1),E.set(this,void 0),this.modelChange=new t.EventEmitter,this.isRequired=!1,this.isReadonly=!1,k.set(this,void 0),O.set(this,void 0),this.icon="search",this.hideIcon=!1,this.sdClickIcon=new t.EventEmitter,this.sdChange=new t.EventEmitter,this.sdFocus=new t.EventEmitter,this.sdBlur=new t.EventEmitter,this.sdFocusForceBlur=new t.EventEmitter,this.keyupEnter=new t.EventEmitter,this.formControl=new u.SdFormControl,T.set(this,new s.Subscription),this.isFocused=!1,this.copyable=!1,this.reValidate=function(){o.formControl.updateValueAndValidity()},P.set(this,(function(){o.formControl.clearValidators(),o.formControl.clearAsyncValidators();var e=[],t=[];o.isRequired&&e.push(a.Validators.required),o.minlength>0&&e.push(a.Validators.minLength(o.minlength)),o.maxlength>0&&e.push(a.Validators.maxLength(o.maxlength)),C(o,k)&&e.push(a.Validators.pattern(C(o,k))),C(o,O)&&t.push(C(o,F).call(o,C(o,O))),o.formControl.setValidators(e),o.formControl.setAsyncValidators(t),o.formControl.updateValueAndValidity()})),q.set(this,(function(e){o.modelChange.emit(o.formControl.value),o.sdChange.emit(o.formControl.value)})),this.onKeyupEnter=function(){var e,t=(null!==(e=o.formControl.value)&&void 0!==e?e:"").toString();t.length>t.trim().length&&o.formControl.setValue(t.trim()),o.keyupEnter.emit(o.formControl.value),C(o,M)&&o.blur()},this.onClickIcon=function(e){null==e||e.preventDefault(),null==e||e.stopPropagation(),o.sdClickIcon.emit(o.formControl.value)},this.onFocus=function(){var e;o.isFocused=!0,o.sdFocus.emit(),(null===(e=o.sdFocusForceBlur.observers)||void 0===e?void 0:e.length)>0&&(o.blur(),o.sdFocusForceBlur.emit())},this.onBlur=function(){var e;o.isFocused=!1;var t=(null!==(e=o.formControl.value)&&void 0!==e?e:"").toString();t.length>t.trim().length&&o.formControl.setValue(t.trim()),o.sdBlur.emit(o.formControl.value)},this.onClick=function(){var e;(null===(e=o.sdView)||void 0===e?void 0:e.templateRef)&&(o.formControl.disabled||o.isFocused||o.focus())},this.blur=function(){var e,t;o.isFocused=!1,null===(t=null===(e=o.control)||void 0===e?void 0:e.nativeElement)||void 0===t||t.blur()},this.focus=function(){o.isFocused=!0,setTimeout((function(){var e,t;null===(t=null===(e=o.control)||void 0===e?void 0:e.nativeElement)||void 0===t||t.focus()}),100)},F.set(this,(function(e){return function(t){return y(o,void 0,void 0,(function(){var r,n,o;return v(this,(function(a){switch(a.label){case 0:return r=t.value||null,e&&"function"==typeof e?(n=e(r))instanceof Promise?[4,n]:[3,2]:[3,3];case 1:return(o=a.sent())?[2,{customValidator:o}]:[2,null];case 2:return n?[2,{customValidator:n}]:[2,null];case 3:return[2,null]}}))}))}}))}return Object.defineProperty(e.prototype,"name",{set:function(e){e&&I(this,w,e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"form",{set:function(e){e&&(e instanceof a.NgForm?I(this,x,e.form):I(this,x,e))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_label",{set:function(e){this.label=e,this.qcId=b.default({selector:"sd-input",label:e})},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_disableErrorMessage",{set:function(e){this.disableErrorMessage=""===e||e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_blurOnEnter",{set:function(e){I(this,M,""===e||e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"model",{set:function(e){C(this,E)!==e&&(I(this,E,e),this.formControl.setValue(e,{emitEvent:!1}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"required",{set:function(e){this.isRequired=""===e||e,C(this,P).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"readonly",{set:function(e){this.isReadonly=""===e||e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pMinlength",{set:function(e){this.minlength=+e,C(this,P).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pMaxlength",{set:function(e){this.maxlength=+e,C(this,P).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pattern",{set:function(e){I(this,k,e),C(this,P).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"validator",{set:function(e){I(this,O,e),C(this,P).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{set:function(e){(e=""===e||e)?this.formControl.disable():this.formControl.enable()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_hideIcon",{set:function(e){this.hideIcon=""===e||e,e=""===e||e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_copyable",{set:function(e){this.copyable=""===e||e},enumerable:!1,configurable:!0}),e.prototype.ngOnInit=function(){var e,t=this;this.appearance=this.appearance||(null===(e=this.formConfig)||void 0===e?void 0:e.appearance),C(this,T).add(this.formControl.sdChanges.subscribe((function(){t.ref.markForCheck()})))},e.prototype.ngAfterViewInit=function(){var e;C(this,T).add(this.formControl.valueChanges.subscribe(C(this,q))),null===(e=C(this,x))||void 0===e||e.addControl(C(this,w),this.formControl),this.ref.detectChanges()},e.prototype.ngOnDestroy=function(){var e;null===(e=C(this,x))||void 0===e||e.removeControl(C(this,w)),C(this,T).unsubscribe()},e.prototype.copyText=function(){var e=this;this.utilityService.copyToClipboard(C(this,E)),this.btnCopy.nativeElement.innerText="Copied",this.btnCopy.nativeElement.setAttribute("style","color: #4caf50;"),setTimeout((function(){e.btnCopy.nativeElement.innerText="Copy",e.btnCopy.nativeElement.removeAttribute("style")}),2e3)},e}();w=new WeakMap,x=new WeakMap,M=new WeakMap,E=new WeakMap,k=new WeakMap,O=new WeakMap,T=new WeakMap,P=new WeakMap,q=new WeakMap,F=new WeakMap,V.decorators=[{type:t.Component,args:[{selector:"sd-input",template:'<label *ngIf="!appearance && label && !sdLabelDef?.templateRef" class="d-block mb-0 T14M">{{label}} <span class="text-danger mb-2"\r\n *ngIf="isRequired">*</span></label>\r\n<ng-container *ngIf="sdLabelDef?.templateRef" matSuffix>\r\n <ng-container *ngTemplateOutlet="sdLabelDef.templateRef">\r\n </ng-container>\r\n</ng-container>\r\n<div class="d-flex align-items-center" [class.sd-view]="sdView?.templateRef" [class.c-focused]="isFocused"\r\n [class.c-disabled]="formControl.disabled" (click)="onClick()">\r\n <ng-container *ngIf="sdView?.templateRef && !isFocused; else default">\r\n <ng-container *ngTemplateOutlet="sdView.templateRef;context: { value: formControl.value }">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class="sd-md"\r\n [ngClass]="{\'sd-form-tooltip\':tooltip, \'sd-sm\': size === \'sm\', \'no-padding-wrapper\': disableErrorMessage}"\r\n [appearance]="appearance || \'outline\'">\r\n <mat-label *ngIf="appearance && label">{{label}}</mat-label>\r\n <input [id]="id" [formControl]="formControl" [type]="type" #control matInput\r\n [placeholder]="placeholder || (appearance ? label : \'\')" (keyup.enter)="onKeyupEnter()" (focus)="onFocus()"\r\n (blur)="onBlur()" [required]="isRequired" [readonly]="isReadonly" [autocomplete]="id" autocorrect="off"\r\n [step]="1" [attr.data-qclabel]="label" [attr.data-qcid]="qcId" [sdPopoverTriggerFor]="null"\r\n [sdPopoverDisabled]="!disableErrorMessage || formControl.valid">\r\n <button #btnCopy *ngIf="copyable" matSuffix mat-flat-button aria-label="Clear" class="btn-copy"\r\n (click)="copyText()">\r\n Copy\r\n </button>\r\n <span class="mr-1" *ngIf="maxlength" matSuffix>{{formControl.value?.length || 0}}/{{maxlength}}</span>\r\n <ng-container *ngIf="sdInputSuffix?.templateRef" matSuffix>\r\n <ng-container *ngTemplateOutlet="sdInputSuffix.templateRef">\r\n </ng-container>\r\n </ng-container>\r\n <mat-icon *ngIf="!hideIcon && sdClickIcon?.observers?.length" (click)="onClickIcon($event)"\r\n class="pointer sd-suffix-icon" matSuffix>\r\n {{icon}}\r\n </mat-icon>\r\n <mat-error *ngIf="formControl.errors?.required">\r\n <ng-container *ngIf="!disableErrorMessage">{{ "This field is required" | sdTranslate }}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf=" formControl.errors?.maxlength">\r\n <ng-container *ngIf="!disableErrorMessage">{{\'Max length\' | sdTranslate}} {{maxlength}}\r\n </ng-container>\r\n </mat-error>\r\n <mat-error *ngIf="formControl.errors?.pattern">\r\n <ng-container *ngIf="!disableErrorMessage">{{\'Pattern error\' | sdTranslate}}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf="formControl.errors?.customValidator">\r\n <ng-container *ngIf="!disableErrorMessage">{{formControl.errors?.customValidator}}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <div *ngIf="tooltip" class="sd-tooltip">\r\n <mat-icon (click)="sdTooltip.toggle()" [matTooltip]="formControl.value | sdInputTooltipPipe:tooltip" matSuffix\r\n #sdTooltip="matTooltip">info</mat-icon>\r\n </div>\r\n </ng-template>\r\n</div>\r\n\x3c!-- <sd-popover #error="sdPopover" type="danger" width="300px">\r\n <span *ngIf="formControl.errors?.required">\r\n {{ "This field is required" | sdTranslate }}\r\n </span>\r\n <span *ngIf="formControl.errors?.maxlength">\r\n {{\'Max length\' | sdTranslate}} <strong>{{maxlength}}</strong>\r\n </span>\r\n <span *ngIf="formControl.errors?.pattern">\r\n {{\'Pattern error\' | sdTranslate}}\r\n </span>\r\n <span *ngIf="formControl.errors?.customValidator">\r\n {{formControl.errors?.customValidator}}\r\n </span>\r\n</sd-popover> --\x3e',changeDetection:t.ChangeDetectionStrategy.OnPush,styles:[":host ::ng-deep .mat-form-field.sd-form-tooltip{width:calc(100% - 30px)}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field input.mat-input-element:disabled{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}.sd-tooltip{display:inline-block;margin:auto;text-align:center;width:30px}:host{display:block;padding-top:5px}.sd-md:hover .btn-copy{visibility:visible}.btn-copy{background:#e9e9e9!important;font-size:12px;line-height:26px!important;margin-bottom:3px;visibility:hidden}"]}]}],V.ctorParameters=function(){return[{type:t.ChangeDetectorRef},{type:void 0,decorators:[{type:t.Inject,args:[u.FORM_CONFIG]},{type:t.Optional}]},{type:c.SdUtilityService}]},V.propDecorators={name:[{type:t.Input}],appearance:[{type:t.Input}],size:[{type:t.Input}],form:[{type:t.Input}],_label:[{type:t.Input,args:["label"]}],placeholder:[{type:t.Input}],type:[{type:t.Input}],_disableErrorMessage:[{type:t.Input,args:["disableErrorMessage"]}],_blurOnEnter:[{type:t.Input,args:["blurOnEnter"]}],model:[{type:t.Input}],modelChange:[{type:t.Output}],required:[{type:t.Input}],readonly:[{type:t.Input}],pMinlength:[{type:t.Input,args:["minlength"]}],pMaxlength:[{type:t.Input,args:["maxlength"]}],pattern:[{type:t.Input}],validator:[{type:t.Input}],disabled:[{type:t.Input}],icon:[{type:t.Input}],_hideIcon:[{type:t.Input,args:["hideIcon"]}],sdClickIcon:[{type:t.Output}],tooltip:[{type:t.Input}],sdChange:[{type:t.Output}],sdFocus:[{type:t.Output}],sdBlur:[{type:t.Output}],sdFocusForceBlur:[{type:t.Output}],keyupEnter:[{type:t.Output}],control:[{type:t.ViewChild,args:["control"]}],sdInputSuffix:[{type:t.ContentChild,args:[S]}],sdLabelDef:[{type:t.ContentChild,args:[u.SdLabelDefDirective]}],sdView:[{type:t.ContentChild,args:[u.SdViewDefDirective]}],btnCopy:[{type:t.ViewChild,args:["btnCopy",{read:t.ElementRef}]}],_copyable:[{type:t.Input,args:["copyable"]}]};var j=function(){function e(){}return e.prototype.transform=function(e,t){return"string"==typeof t?t:t(e)},e}();j.decorators=[{type:t.Pipe,args:[{name:"sdInputTooltipPipe"}]}];var R=function(){function e(){}return e.prototype.ngOnChanges=function(e){console.log(e),e.touch&&this.ref.markForCheck()},e}();R.decorators=[{type:t.Directive,args:[{selector:"[touch]"}]}],R.propDecorators={touch:[{type:t.Input}],ref:[{type:t.Input}]};var D=function(){};D.decorators=[{type:t.NgModule,args:[{imports:[r.CommonModule,a.FormsModule,a.ReactiveFormsModule,d.MatFormFieldModule,p.MatInputModule,n.MatIconModule,o.MatTooltipModule,f.SdTranslateModule,u.SdCommonModule,g.SdPopoverModule,m.MatButtonModule],declarations:[V,j,S,R],exports:[V,j,S,u.SdCommonModule]}]}],e.SdInput=V,e.SdInputModule=D,e.SdInputSuffixDirective=S,e.SdInputTooltipPipe=j,e.ɵa=R,Object.defineProperty(e,"__esModule",{value:!0})}));
16
16
  //# sourceMappingURL=sd-angular-core-input.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/input/src/lib/directives/input-suffix.directive.ts","../../../../projects/sd-core/input/src/lib/input.component.ts","../../../../projects/sd-core/input/src/lib/input-tooltip.pipe.ts","../../../../projects/sd-core/input/src/lib/directives/touch.directive.ts","../../../../projects/sd-core/input/src/lib/input.module.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","Object","create","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","templateRef","Directive","args","selector","TemplateRef","SdInput","ref","formConfig","utilityService","_this","id","uuid.v4","_name","_form","type","disableErrorMessage","_blurOnEnter_1","_model","modelChange","EventEmitter","isRequired","isReadonly","_pattern","_validator","icon","hideIcon","sdClickIcon","sdChange","sdFocus","sdFocusForceBlur","keyupEnter","formControl","SdFormControl","_subscription","Subscription","isFocused","copyable","reValidate","updateValueAndValidity","_updateValidator","clearValidators","clearAsyncValidators","validators","asyncValidators","Validators","required","minlength","minLength","maxlength","maxLength","pattern","_customValidator","setValidators","setAsyncValidators","_onChange","emit","onKeyupEnter","val","_a","toString","trim","setValue","blur","onClickIcon","event","preventDefault","stopPropagation","onFocus","observers","onBlur","onClick","sdView","disabled","focus","_b","control","nativeElement","setTimeout","func","c","message","_c","customValidator","defineProperty","prototype","NgForm","form","qcId","hash","emitEvent","validator","disable","enable","ngOnInit","appearance","add","sdChanges","subscribe","markForCheck","ngAfterViewInit","valueChanges","addControl","detectChanges","ngOnDestroy","removeControl","unsubscribe","copyText","copyToClipboard","btnCopy","innerText","setAttribute","removeAttribute","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","Inject","FORM_CONFIG","Optional","SdUtilityService","Input","Output","ViewChild","ContentChild","SdInputSuffixDirective","SdLabelDefDirective","SdViewDefDirective","read","ElementRef","SdInputTooltipPipe","transform","tooltip","Pipe","name","TouchDirective","ngOnChanges","changes","console","log","touch","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatFormFieldModule","MatInputModule","MatIconModule","MatTooltipModule","SdTranslateModule","SdCommonModule","SdPopoverModule","MatButtonModule","declarations","exports"],"mappings":";;;;;;;;;;;;;;6FAqEgBA,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOG,GAAKL,EAAOK,IACpF,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOG,GAAKL,EAAOK,IACvF,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,OAITO,KAAKR,EAAWK,GAClGH,GAAMN,EAAYA,EAAUa,MAAMhB,EAASC,GAAc,KAAKS,oBAItDO,EAAYjB,EAASkB,GACjC,IAAsGC,EAAGC,EAAGC,EAAGC,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOK,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEZ,KAAMkB,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BT,EAAES,OAAOC,UAAY,WAAa,OAAOC,OAAUX,EACvJ,SAASM,EAAKM,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIjB,EAAG,MAAM,IAAIkB,UAAU,mCAC3B,KAAOd,OACH,GAAIJ,EAAI,EAAGC,IAAMC,EAAY,EAARe,EAAG,GAAShB,EAAU,OAAIgB,EAAG,GAAKhB,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAEiB,KAAKlB,GAAI,GAAKA,EAAEV,SAAWW,EAAIA,EAAEiB,KAAKlB,EAAGgB,EAAG,KAAKtB,KAAM,OAAOO,EAE3J,OADID,EAAI,EAAGC,IAAGe,EAAK,CAAS,EAARA,EAAG,GAAQf,EAAEb,QACzB4B,EAAG,IACP,KAAK,EAAG,KAAK,EAAGf,EAAIe,EAAI,MACxB,KAAK,EAAc,OAAXb,EAAEC,QAAgB,CAAEhB,MAAO4B,EAAG,GAAItB,MAAM,GAChD,KAAK,EAAGS,EAAEC,QAASJ,EAAIgB,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKb,EAAEI,IAAIY,MAAOhB,EAAEG,KAAKa,MAAO,SACxC,QACI,KAAMlB,EAAIE,EAAEG,MAAML,EAAIA,EAAEmB,OAAS,GAAKnB,EAAEA,EAAEmB,OAAS,KAAkB,IAAVJ,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEb,EAAI,EAAG,SACjG,GAAc,IAAVa,EAAG,MAAcf,GAAMe,EAAG,GAAKf,EAAE,IAAMe,EAAG,GAAKf,EAAE,IAAM,CAAEE,EAAEC,MAAQY,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYb,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIA,EAAIe,EAAI,MAC7D,GAAIf,GAAKE,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIE,EAAEI,IAAIc,KAAKL,GAAK,MACvDf,EAAE,IAAIE,EAAEI,IAAIY,MAChBhB,EAAEG,KAAKa,MAAO,SAEtBH,EAAKlB,EAAKoB,KAAKtC,EAASuB,GAC1B,MAAOZ,GAAKyB,EAAK,CAAC,EAAGzB,GAAIS,EAAI,UAAeD,EAAIE,EAAI,EACtD,GAAY,EAARe,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE5B,MAAO4B,EAAG,GAAKA,EAAG,QAAK,EAAQtB,MAAM,GArB9BL,CAAK,CAACyB,EAAGC,MAyBhCO,OAAOC,OAsGXD,OAAOC,gBAkBhBC,EAAuBC,EAAUC,EAAOC,EAAM5B,GAC1D,GAAa,MAAT4B,IAAiB5B,EAAG,MAAM,IAAIkB,UAAU,iDAC5C,GAAqB,mBAAVS,EAAuBD,IAAaC,IAAU3B,GAAK2B,EAAME,IAAIH,GAAW,MAAM,IAAIR,UAAU,4EACvG,MAAgB,MAATU,EAAe5B,EAAa,MAAT4B,EAAe5B,EAAEmB,KAAKO,GAAY1B,EAAIA,EAAEX,MAAQsC,EAAMG,IAAIJ,YAGxEK,EAAuBL,EAAUC,EAAOtC,EAAOuC,EAAM5B,GACjE,GAAa,MAAT4B,EAAc,MAAM,IAAIV,UAAU,kCACtC,GAAa,MAATU,IAAiB5B,EAAG,MAAM,IAAIkB,UAAU,iDAC5C,GAAqB,mBAAVS,EAAuBD,IAAaC,IAAU3B,GAAK2B,EAAME,IAAIH,GAAW,MAAM,IAAIR,UAAU,2EACvG,MAAiB,MAATU,EAAe5B,EAAEmB,KAAKO,EAAUrC,GAASW,EAAIA,EAAEX,MAAQA,EAAQsC,EAAMK,IAAIN,EAAUrC,GAASA,4BCvOtG,SAAmB4C,GAAAnB,KAAAmB,YAAAA,uBAJpBC,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,+DAHQC,EAAAA,gCCyJlB,SAAAC,EACUC,EACiCC,EACjCC,GAHV,IAAAC,EAAA5B,KACUA,KAAAyB,IAAAA,EACiCzB,KAAA0B,WAAAA,EACjC1B,KAAA2B,eAAAA,EAxHV3B,KAAA6B,GAAK,IAAIC,EAAAA,KACTC,EAAAb,IAAAlB,KAAQ8B,EAAAA,MAQRE,EAAAd,IAAAlB,UAAA,GAoBSA,KAAAiC,KAA8E,OACvFjC,KAAAkC,qBAAsB,EAItBC,EAAAjB,IAAAlB,MAAe,GAIfoC,EAAAlB,IAAAlB,UAAA,GASUA,KAAAqC,YAAc,IAAIC,EAAAA,aAG5BtC,KAAAuC,YAAa,EAMbvC,KAAAwC,YAAa,EAebC,EAAAvB,IAAAlB,UAAA,GAKA0C,EAAAxB,IAAAlB,UAAA,GAeSA,KAAA2C,KAAO,SAChB3C,KAAA4C,UAAW,EAKD5C,KAAA6C,YAAc,IAAIP,EAAAA,aAElBtC,KAAA8C,SAAW,IAAIR,EAAAA,aACftC,KAAA+C,QAAU,IAAIT,EAAAA,aACdtC,KAAAgD,iBAAmB,IAAIV,EAAAA,aACvBtC,KAAAiD,WAAa,IAAIX,EAAAA,aAM3BtC,KAAAkD,YAAc,IAAIC,EAAAA,cAClBC,EAAAlC,IAAAlB,KAAgB,IAAIqD,EAAAA,cAEpBrD,KAAAsD,WAAY,EAEZtD,KAAAuD,UAAW,EA4BXvD,KAAAwD,WAAa,WACX5B,EAAKsB,YAAYO,0BAGnBC,EAAAxC,IAAAlB,MAAmB,WACjB4B,EAAKsB,YAAYS,kBACjB/B,EAAKsB,YAAYU,uBACjB,IAAMC,EAA4B,GAC5BC,EAAsC,GACxClC,EAAKW,YACPsB,EAAWrD,KAAKuD,EAAAA,WAAWC,UAEzBpC,EAAKqC,UAAY,GACnBJ,EAAWrD,KAAKuD,EAAAA,WAAWG,UAAUtC,EAAKqC,YAExCrC,EAAKuC,UAAY,GACnBN,EAAWrD,KAAKuD,EAAAA,WAAWK,UAAUxC,EAAKuC,YAE5CxD,EAAAiB,EAAAa,IACEoB,EAAWrD,KAAKuD,EAAAA,WAAWM,QAAO1D,EAAAiB,EAAAa,KAEpC9B,EAAAiB,EAAAc,IACEoB,EAAgBtD,KAAKG,EAAAiB,EAAA0C,GAAAjE,KAAAuB,EAAIjB,EAAAiB,EAAAc,KAE3Bd,EAAKsB,YAAYqB,cAAcV,GAC/BjC,EAAKsB,YAAYsB,mBAAmBV,GACpClC,EAAKsB,YAAYO,4BAGnBgB,EAAAvD,IAAAlB,MAAY,SAACzB,GACXqD,EAAKS,YAAYqC,KAAK9C,EAAKsB,YAAY3E,OACvCqD,EAAKkB,SAAS4B,KAAK9C,EAAKsB,YAAY3E,UAGtCyB,KAAA2E,aAAe,iBACPC,GAAqC,QAAvBC,EAACjD,EAAKsB,YAAY3E,aAAK,IAAAsG,EAAAA,EAAI,IAAIC,WAC/CF,EAAIrE,OAASqE,EAAIG,OAAOxE,QAC1BqB,EAAKsB,YAAY8B,SAASJ,EAAIG,QAEhCnD,EAAKqB,WAAWyB,KAAK9C,EAAKsB,YAAY3E,OACtCoC,EAAAiB,EAAAO,IACEP,EAAKqD,QAITjF,KAAAkF,YAAc,SAACC,GACbA,MAAAA,GAAAA,EAAOC,iBACPD,MAAAA,GAAAA,EAAOE,kBACPzD,EAAKiB,YAAY6B,KAAK9C,EAAKsB,YAAY3E,QAGzCyB,KAAAsF,QAAU,iBACR1D,EAAK0B,WAAY,EACjB1B,EAAKmB,QAAQ2B,QACsB,QAA/BG,EAAAjD,EAAKoB,iBAAiBuC,iBAAS,IAAAV,OAAA,EAAAA,EAAEtE,QAAS,IAC5CqB,EAAKqD,OACLrD,EAAKoB,iBAAiB0B,SAI1B1E,KAAAwF,OAAS,iBACP5D,EAAK0B,WAAY,EACjB,IAAMsB,GAAqC,QAAvBC,EAACjD,EAAKsB,YAAY3E,aAAK,IAAAsG,EAAAA,EAAI,IAAIC,WAC/CF,EAAIrE,OAASqE,EAAIG,OAAOxE,QAC1BqB,EAAKsB,YAAY8B,SAASJ,EAAIG,SAIlC/E,KAAAyF,QAAU,kBACO,QAAfZ,EAAIjD,EAAK8D,cAAM,IAAAb,OAAA,EAAAA,EAAE1D,eACVS,EAAKsB,YAAYyC,UAAa/D,EAAK0B,WACtC1B,EAAKgE,UAKX5F,KAAAiF,KAAO,mBACLrD,EAAK0B,WAAY,EACU,QAA3BuC,EAAY,QAAZhB,EAAAjD,EAAKkE,eAAO,IAAAjB,OAAA,EAAAA,EAAEkB,qBAAa,IAAAF,GAAAA,EAAEZ,QAG/BjF,KAAA4F,MAAQ,WACNhE,EAAK0B,WAAY,EACjB0C,YAAW,mBACkB,QAA3BH,EAAY,QAAZhB,EAAAjD,EAAKkE,eAAO,IAAAjB,OAAA,EAAAA,EAAEkB,qBAAa,IAAAF,GAAAA,EAAED,UAC5B,MAGLtB,EAAApD,IAAAlB,MAAmB,SAACiG,GAClB,OAAO,SAAOC,GAAkB,OAAApI,EAAA8D,OAAA,OAAA,GAAA,8EACxBrD,EAAQ2H,EAAE3H,OAAS,KACrB0H,GAA0B,mBAAlB,GACJrH,EAASqH,EAAK1H,cACEJ,QACJ,CAAA,EAAMS,GADpB,CAAA,EAAA,GAFF,CAAA,EAAA,UAIA,OADMuH,EAAUC,EAAA5G,QAEd,CAAA,EAAO,CACL6G,gBAAiBF,IAGrB,CAAA,EAAO,aAET,OAAIvH,EACF,CAAA,EAAO,CACLyH,gBAAiBzH,IAGrB,CAAA,EAAO,aAET,MAAA,CAAA,EAAO,wBAxPX6B,OAAA6F,eAAa9E,EAAA+E,UAAA,OAAI,KAAjB,SAAkB3B,GACZA,GACF3D,EAAAjB,KAAI+B,EAAS6C,oCAMjBnE,OAAA6F,eAAa9E,EAAA+E,UAAA,OAAI,KAAjB,SAAkB3B,GACZA,IACEA,aAAe4B,EAAAA,OACjBvF,EAAAjB,KAAIgC,EAAS4C,EAAI6B,MAEjBxF,EAAAjB,KAAIgC,EAAS4C,qCAMnBnE,OAAA6F,eAAoB9E,EAAA+E,UAAA,SAAM,KAA1B,SAA2B3B,GACzB5E,KAAKT,MAAQqF,EACb5E,KAAK0G,KAAOC,EAAAA,QAAK,CACfrF,SAAU,WACV/B,MAAOqF,qCAMXnE,OAAA6F,eAAkC9E,EAAA+E,UAAA,uBAAoB,KAAtD,SAAuD3B,GACrD5E,KAAKkC,oBAA+B,KAAR0C,GAAeA,mCAG7CnE,OAAA6F,eAA0B9E,EAAA+E,UAAA,eAAY,KAAtC,SAAuC3B,GACrC3D,EAAAjB,KAAImC,EAAyB,KAARyC,GAAeA,oCAGtCnE,OAAA6F,eAAa9E,EAAA+E,UAAA,QAAK,KAAlB,SAAmBhI,GACboC,EAAAX,KAAAoC,KAAgB7D,IAClB0C,EAAAjB,KAAIoC,EAAU7D,GACdyB,KAAKkD,YAAY8B,SAASzG,EAAO,CAC/BqI,WAAW,sCAQjBnG,OAAA6F,eAAa9E,EAAA+E,UAAA,WAAQ,KAArB,SAAsB3B,GACpB5E,KAAKuC,WAAsB,KAARqC,GAAeA,EAClCjE,EAAAX,KAAA0D,GAAArD,KAAAL,uCAIFS,OAAA6F,eAAa9E,EAAA+E,UAAA,WAAQ,KAArB,SAAsB3B,GACpB5E,KAAKwC,WAAsB,KAARoC,GAAeA,mCAIpCnE,OAAA6F,eAAwB9E,EAAA+E,UAAA,aAAU,KAAlC,SAAmC3B,GACjC5E,KAAKiE,WAAaW,EAClBjE,EAAAX,KAAA0D,GAAArD,KAAAL,uCAGFS,OAAA6F,eAAwB9E,EAAA+E,UAAA,aAAU,KAAlC,SAAmC3B,GACjC5E,KAAKmE,WAAaS,EAClBjE,EAAAX,KAAA0D,GAAArD,KAAAL,uCAGFS,OAAA6F,eAAa9E,EAAA+E,UAAA,UAAO,KAApB,SAAqB3B,GACnB3D,EAAAjB,KAAIyC,EAAYmC,GAChBjE,EAAAX,KAAA0D,GAAArD,KAAAL,uCAGFS,OAAA6F,eAAa9E,EAAA+E,UAAA,YAAS,KAAtB,SAAuBM,GACrB5F,EAAAjB,KAAI0C,EAAcmE,GAClBlG,EAAAX,KAAA0D,GAAArD,KAAAL,uCAIFS,OAAA6F,eAAa9E,EAAA+E,UAAA,WAAQ,KAArB,SAAsB3B,IACpBA,EAAe,KAARA,GAAeA,GAEpB5E,KAAKkD,YAAY4D,UAEjB9G,KAAKkD,YAAY6D,0CAKrBtG,OAAA6F,eAAuB9E,EAAA+E,UAAA,YAAS,KAAhC,SAAiC3B,GAC/B5E,KAAK4C,SAAoB,KAARgC,GAAeA,EAChCA,EAAe,KAARA,GAAeA,mCAmBxBnE,OAAA6F,eAAuB9E,EAAA+E,UAAA,YAAS,KAAhC,SAAiC3B,GAC/B5E,KAAKuD,SAAoB,KAARqB,GAAeA,mCAQlCpD,EAAA+E,UAAAS,SAAA,WAAA,MAAApF,EAAA5B,KACEA,KAAKiH,WAAajH,KAAKiH,aAA6B,QAAnBpC,EAAI7E,KAAK0B,kBAAU,IAAAmD,OAAA,EAAAA,EAAEoC,YACtDtG,EAAAX,KAAAoD,GAAmB8D,IAAIlH,KAAKkD,YAAYiE,UAAUC,WAAU,WAC1DxF,EAAKH,IAAI4F,oBAIb7F,EAAA+E,UAAAe,gBAAA,iBACE3G,EAAAX,KAAAoD,GAAmB8D,IAAIlH,KAAKkD,YAAYqE,aAAaH,UAASzG,EAAAX,KAAAyE,KAC9D,QAAAI,EAAAlE,EAAAX,KAAAgC,UAAA,IAAA6C,GAAAA,EAAY2C,WAAU7G,EAAAX,KAAA+B,GAAa/B,KAAKkD,aACxClD,KAAKyB,IAAIgG,iBAGXjG,EAAA+E,UAAAmB,YAAA,iBACE,QAAA7C,EAAAlE,EAAAX,KAAAgC,UAAA,IAAA6C,GAAAA,EAAY8C,cAAahH,EAAAX,KAAA+B,IACzBpB,EAAAX,KAAAoD,GAAmBwE,eAoHrBpG,EAAA+E,UAAAsB,SAAA,WAAA,IAAAjG,EAAA5B,KACEA,KAAK2B,eAAemG,gBAAenH,EAAAX,KAAAoC,IACnCpC,KAAK+H,QAAQhC,cAAciC,UAAY,SACvChI,KAAK+H,QAAQhC,cAAckC,aAAa,QAAS,mBACjDjC,YAAW,WACTpE,EAAKmG,QAAQhC,cAAciC,UAAY,OACvCpG,EAAKmG,QAAQhC,cAAcmC,gBAAgB,WAC1C,2KA5QNC,EAAAA,UAAS9G,KAAA,CAAC,CACTC,SAAU,WACV8G,SAAA,+wHAEAC,gBAAiBC,EAAAA,wBAAwBC,82BA3BzCC,EAAAA,kDAqJGC,EAAAA,OAAMpH,KAAA,CAACqH,EAAAA,cAAW,CAAAzG,KAAG0G,EAAAA,kBAlIjBC,EAAAA,kDAaNC,EAAAA,0BAKAA,EAAAA,oBACAA,EAAAA,oBAEAA,EAAAA,sBAWAA,EAAAA,MAAKxH,KAAA,CAAC,8BAONwH,EAAAA,oBACAA,EAAAA,oCAEAA,EAAAA,MAAKxH,KAAA,CAAC,6CAINwH,EAAAA,MAAKxH,KAAA,CAAC,8BAINwH,EAAAA,2BAQAC,EAAAA,yBAIAD,EAAAA,wBAMAA,EAAAA,0BAKAA,EAAAA,MAAKxH,KAAA,CAAC,iCAKNwH,EAAAA,MAAKxH,KAAA,CAAC,8BAKNwH,EAAAA,yBAKAA,EAAAA,wBAMAA,EAAAA,oBAQAA,EAAAA,yBAEAA,EAAAA,MAAKxH,KAAA,CAAC,iCAINyH,EAAAA,wBACAD,EAAAA,wBACAC,EAAAA,wBACAA,EAAAA,iCACAA,EAAAA,2BACAA,EAAAA,wBAEAC,EAAAA,UAAS1H,KAAA,CAAC,kCACV2H,EAAAA,aAAY3H,KAAA,CAAC4H,uBACbD,EAAAA,aAAY3H,KAAA,CAAC6H,EAAAA,qCAIbF,EAAAA,aAAY3H,KAAA,CAAC8H,EAAAA,qCAEbJ,EAAAA,UAAS1H,KAAA,CAAC,UAAW,CAAE+H,KAAMC,EAAAA,gCAE7BR,EAAAA,MAAKxH,KAAA,CAAC,gCClJT,SAAAiI,YACEA,EAAA/C,UAAAgD,UAAA,SAAUhL,EAAYiL,GACpB,MAAyB,iBAArB,EACKA,EAEFA,EAAQjL,6BARlBkL,EAAAA,KAAIpI,KAAA,CAAC,CACJqI,KAAM,0CCGR,SAAAC,YAIEA,EAAApD,UAAAqD,YAAA,SAAYC,GACVC,QAAQC,IAAIF,GACTA,EAAQG,OACThK,KAAKyB,IAAI4F,yCAVdjG,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,6CAGTuH,EAAAA,mBACAA,EAAAA,eCoCH,iCA3BCoB,EAAAA,SAAQ5I,KAAA,CAAC,CACR6I,QAAS,CACPC,EAAAA,aACAC,EAAAA,YACAC,EAAAA,oBACAC,EAAAA,mBACAC,EAAAA,eACAC,EAAAA,cACAC,EAAAA,iBACAC,EAAAA,kBACAC,EAAAA,eACAC,EAAAA,gBACAC,EAAAA,iBAEFC,aAAc,CACZtJ,EACA8H,EACAL,EACAU,GAEFoB,QAAS,CACPvJ,EACA8H,EACAL,EACA0B,EAAAA","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdInputSuffix]'\r\n})\r\nexport class SdInputSuffixDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n AfterViewInit,\r\n ElementRef,\r\n OnInit,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n HostListener,\r\n Inject,\r\n Optional\r\n} from '@angular/core';\r\nimport { AbstractControl, NgForm, ValidatorFn, Validators, AsyncValidatorFn, FormGroup } from '@angular/forms';\r\nimport * as uuid from 'uuid';\r\nimport hash from 'object-hash';\r\nimport { debounceTime, filter } from 'rxjs/operators';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdInputSuffixDirective } from './directives/input-suffix.directive';\r\nimport { SdFormControl } from '@sd-angular/core/common';\r\nimport { SdViewDefDirective, SdLabelDefDirective } from '@sd-angular/core/common';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { FORM_CONFIG } from '@sd-angular/core/common';\r\nimport { IFormConfiguration } from '@sd-angular/core/common';\r\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\r\n@Component({\r\n selector: 'sd-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdInput implements OnDestroy, OnInit, AfterViewInit {\r\n id = `I${uuid.v4()}`;\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() appearance: MatFormFieldAppearance;\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n qcId: string;\r\n label: string;\r\n @Input('label') set _label(val: string) {\r\n this.label = val;\r\n this.qcId = hash({\r\n selector: 'sd-input',\r\n label: val\r\n });\r\n };\r\n @Input() placeholder: string;\r\n @Input() type: 'text' | 'number' | 'password' | 'email' | 'datetime-local' | 'month' = 'text';\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n }\r\n #blurOnEnter = false;\r\n @Input('blurOnEnter') set _blurOnEnter(val: boolean | '') {\r\n this.#blurOnEnter = (val === '') || val;\r\n }\r\n #model: any;\r\n @Input() set model(value: any) {\r\n if (this.#model !== value) {\r\n this.#model = value;\r\n this.formControl.setValue(value, {\r\n emitEvent: false\r\n });\r\n }\r\n }\r\n @Output() modelChange = new EventEmitter();\r\n\r\n // Validator\r\n isRequired = false;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n\r\n isReadonly = false;\r\n @Input() set readonly(val: boolean | '') {\r\n this.isReadonly = (val === '') || val;\r\n }\r\n\r\n minlength: number;\r\n @Input('minlength') set pMinlength(val: number) {\r\n this.minlength = +val;\r\n this.#updateValidator();\r\n }\r\n maxlength: number;\r\n @Input('maxlength') set pMaxlength(val: number) {\r\n this.maxlength = +val;\r\n this.#updateValidator();\r\n }\r\n #pattern: string;\r\n @Input() set pattern(val: string) {\r\n this.#pattern = val;\r\n this.#updateValidator();\r\n }\r\n #validator: (value: any) => string | Promise<string>;\r\n @Input() set validator(validator: (value: any) => string | Promise<string>) {\r\n this.#validator = validator;\r\n this.#updateValidator();\r\n }\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n @Input() icon = 'search';\r\n hideIcon = false;\r\n @Input('hideIcon') set _hideIcon(val: boolean | '') {\r\n this.hideIcon = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n @Output() sdClickIcon = new EventEmitter<any>();\r\n @Input() tooltip: string | ((inputValue: string) => string);\r\n @Output() sdChange = new EventEmitter<any>();\r\n @Output() sdFocus = new EventEmitter<any>();\r\n @Output() sdFocusForceBlur = new EventEmitter<any>();\r\n @Output() keyupEnter = new EventEmitter();\r\n\r\n @ViewChild('control') control: ElementRef;\r\n @ContentChild(SdInputSuffixDirective) sdInputSuffix: SdInputSuffixDirective;\r\n @ContentChild(SdLabelDefDirective) sdLabelDef: SdLabelDefDirective;\r\n\r\n formControl = new SdFormControl();\r\n #subscription = new Subscription();\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n @ViewChild('btnCopy', { read: ElementRef }) btnCopy: ElementRef;\r\n copyable = false;\r\n @Input('copyable') set _copyable(val: boolean | '') {\r\n this.copyable = (val === '') || val;\r\n }\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(FORM_CONFIG) @Optional() private formConfig: IFormConfiguration,\r\n private utilityService: SdUtilityService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.appearance = this.appearance || this.formConfig?.appearance;\r\n this.#subscription.add(this.formControl.sdChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.valueChanges.subscribe(this.#onChange));\r\n this.#form?.addControl(this.#name, this.formControl);\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n reValidate = () => {\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.minlength > 0) {\r\n validators.push(Validators.minLength(this.minlength));\r\n }\r\n if (this.maxlength > 0) {\r\n validators.push(Validators.maxLength(this.maxlength));\r\n }\r\n if (this.#pattern) {\r\n validators.push(Validators.pattern(this.#pattern));\r\n }\r\n if (this.#validator) {\r\n asyncValidators.push(this.#customValidator(this.#validator));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #onChange = (value: any) => {\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n }\r\n\r\n onKeyupEnter = () => {\r\n const val: string = (this.formControl.value ?? '').toString();\r\n if (val.length > val.trim().length) {\r\n this.formControl.setValue(val.trim());\r\n }\r\n this.keyupEnter.emit(this.formControl.value);\r\n if (this.#blurOnEnter) {\r\n this.blur();\r\n }\r\n }\r\n\r\n onClickIcon = (event: Event) => {\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n this.sdClickIcon.emit(this.formControl.value);\r\n }\r\n\r\n onFocus = () => {\r\n this.isFocused = true;\r\n this.sdFocus.emit();\r\n if (this.sdFocusForceBlur.observers?.length > 0) {\r\n this.blur();\r\n this.sdFocusForceBlur.emit();\r\n }\r\n }\r\n\r\n onBlur = () => {\r\n this.isFocused = false;\r\n const val: string = (this.formControl.value ?? '').toString();\r\n if (val.length > val.trim().length) {\r\n this.formControl.setValue(val.trim());\r\n }\r\n }\r\n\r\n onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n blur = () => {\r\n this.isFocused = false;\r\n this.control?.nativeElement?.blur();\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.control?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n #customValidator = (func: (value: any) => string | Promise<string>): AsyncValidatorFn => {\r\n return async (c: AbstractControl): Promise<{ [key: string]: any } | null> => {\r\n const value = c.value || null;\r\n if (func && typeof (func) === 'function') {\r\n const result = func(value);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n return {\r\n customValidator: message\r\n };\r\n }\r\n return null;\r\n }\r\n if (result) {\r\n return {\r\n customValidator: result\r\n };\r\n }\r\n return null;\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n copyText() {\r\n this.utilityService.copyToClipboard(this.#model);\r\n this.btnCopy.nativeElement.innerText = 'Copied';\r\n this.btnCopy.nativeElement.setAttribute('style', 'color: #4caf50;');\r\n setTimeout(() => {\r\n this.btnCopy.nativeElement.innerText = 'Copy';\r\n this.btnCopy.nativeElement.removeAttribute('style');\r\n }, 2000);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'sdInputTooltipPipe'\r\n})\r\nexport class SdInputTooltipPipe implements PipeTransform {\r\n transform(value: any, tooltip: string | ((inputValue: string) => string)): string {\r\n if (typeof (tooltip) === 'string') {\r\n return tooltip;\r\n }\r\n return tooltip(value);\r\n }\r\n}\r\n","import { ChangeDetectorRef, Directive, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: '[touch]'\r\n})\r\nexport class TouchDirective implements OnChanges {\r\n @Input() public touch: any;\r\n @Input() public ref: ChangeDetectorRef;\r\n\r\n ngOnChanges(changes: SimpleChanges){\r\n console.log(changes);\r\n if(changes.touch){\r\n this.ref.markForCheck();\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SdInput } from './input.component';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SdInputTooltipPipe } from './input-tooltip.pipe';\r\nimport { SdInputSuffixDirective } from './directives/input-suffix.directive';\r\nimport { TouchDirective } from './directives/touch.directive';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdPopoverModule } from '@sd-angular/core/popover';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n SdTranslateModule,\r\n SdCommonModule,\r\n SdPopoverModule,\r\n MatButtonModule\r\n ],\r\n declarations: [\r\n SdInput,\r\n SdInputTooltipPipe,\r\n SdInputSuffixDirective,\r\n TouchDirective\r\n ],\r\n exports: [\r\n SdInput,\r\n SdInputTooltipPipe,\r\n SdInputSuffixDirective,\r\n SdCommonModule\r\n ]\r\n})\r\nexport class SdInputModule { }\r\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/input/src/lib/directives/input-suffix.directive.ts","../../../../projects/sd-core/input/src/lib/input.component.ts","../../../../projects/sd-core/input/src/lib/input-tooltip.pipe.ts","../../../../projects/sd-core/input/src/lib/directives/touch.directive.ts","../../../../projects/sd-core/input/src/lib/input.module.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","Object","create","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","templateRef","Directive","args","selector","TemplateRef","SdInput","ref","formConfig","utilityService","_this","id","uuid.v4","_name","_form","type","disableErrorMessage","_blurOnEnter_1","_model","modelChange","EventEmitter","isRequired","isReadonly","_pattern","_validator","icon","hideIcon","sdClickIcon","sdChange","sdFocus","sdBlur","sdFocusForceBlur","keyupEnter","formControl","SdFormControl","_subscription","Subscription","isFocused","copyable","reValidate","updateValueAndValidity","_updateValidator","clearValidators","clearAsyncValidators","validators","asyncValidators","Validators","required","minlength","minLength","maxlength","maxLength","pattern","_customValidator","setValidators","setAsyncValidators","_onChange","emit","onKeyupEnter","val","_a","toString","trim","setValue","blur","onClickIcon","event","preventDefault","stopPropagation","onFocus","observers","onBlur","onClick","sdView","disabled","focus","_b","control","nativeElement","setTimeout","func","c","message","_c","customValidator","defineProperty","prototype","NgForm","form","qcId","hash","emitEvent","validator","disable","enable","ngOnInit","appearance","add","sdChanges","subscribe","markForCheck","ngAfterViewInit","valueChanges","addControl","detectChanges","ngOnDestroy","removeControl","unsubscribe","copyText","copyToClipboard","btnCopy","innerText","setAttribute","removeAttribute","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","Inject","FORM_CONFIG","Optional","SdUtilityService","Input","Output","ViewChild","ContentChild","SdInputSuffixDirective","SdLabelDefDirective","SdViewDefDirective","read","ElementRef","SdInputTooltipPipe","transform","tooltip","Pipe","name","TouchDirective","ngOnChanges","changes","console","log","touch","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatFormFieldModule","MatInputModule","MatIconModule","MatTooltipModule","SdTranslateModule","SdCommonModule","SdPopoverModule","MatButtonModule","declarations","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdInputSuffix]'\r\n})\r\nexport class SdInputSuffixDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n AfterViewInit,\r\n ElementRef,\r\n OnInit,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n HostListener,\r\n Inject,\r\n Optional\r\n} from '@angular/core';\r\nimport { AbstractControl, NgForm, ValidatorFn, Validators, AsyncValidatorFn, FormGroup } from '@angular/forms';\r\nimport * as uuid from 'uuid';\r\nimport hash from 'object-hash';\r\nimport { debounceTime, filter } from 'rxjs/operators';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdInputSuffixDirective } from './directives/input-suffix.directive';\r\nimport { SdFormControl } from '@sd-angular/core/common';\r\nimport { SdViewDefDirective, SdLabelDefDirective } from '@sd-angular/core/common';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { FORM_CONFIG } from '@sd-angular/core/common';\r\nimport { IFormConfiguration } from '@sd-angular/core/common';\r\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\r\n@Component({\r\n selector: 'sd-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdInput implements OnDestroy, OnInit, AfterViewInit {\r\n id = `I${uuid.v4()}`;\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() appearance: MatFormFieldAppearance;\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n qcId: string;\r\n label: string;\r\n @Input('label') set _label(val: string) {\r\n this.label = val;\r\n this.qcId = hash({\r\n selector: 'sd-input',\r\n label: val\r\n });\r\n };\r\n @Input() placeholder: string;\r\n @Input() type: 'text' | 'number' | 'password' | 'email' | 'datetime-local' | 'month' = 'text';\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n }\r\n #blurOnEnter = false;\r\n @Input('blurOnEnter') set _blurOnEnter(val: boolean | '') {\r\n this.#blurOnEnter = (val === '') || val;\r\n }\r\n #model: any;\r\n @Input() set model(value: any) {\r\n if (this.#model !== value) {\r\n this.#model = value;\r\n this.formControl.setValue(value, {\r\n emitEvent: false\r\n });\r\n }\r\n }\r\n @Output() modelChange = new EventEmitter();\r\n\r\n // Validator\r\n isRequired = false;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n\r\n isReadonly = false;\r\n @Input() set readonly(val: boolean | '') {\r\n this.isReadonly = (val === '') || val;\r\n }\r\n\r\n minlength: number;\r\n @Input('minlength') set pMinlength(val: number) {\r\n this.minlength = +val;\r\n this.#updateValidator();\r\n }\r\n maxlength: number;\r\n @Input('maxlength') set pMaxlength(val: number) {\r\n this.maxlength = +val;\r\n this.#updateValidator();\r\n }\r\n #pattern: string;\r\n @Input() set pattern(val: string) {\r\n this.#pattern = val;\r\n this.#updateValidator();\r\n }\r\n #validator: (value: any) => string | Promise<string>;\r\n @Input() set validator(validator: (value: any) => string | Promise<string>) {\r\n this.#validator = validator;\r\n this.#updateValidator();\r\n }\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n @Input() icon = 'search';\r\n hideIcon = false;\r\n @Input('hideIcon') set _hideIcon(val: boolean | '') {\r\n this.hideIcon = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n @Output() sdClickIcon = new EventEmitter<any>();\r\n @Input() tooltip: string | ((inputValue: string) => string);\r\n @Output() sdChange = new EventEmitter<any>();\r\n @Output() sdFocus = new EventEmitter<any>();\r\n @Output() sdBlur = new EventEmitter<any>();\r\n @Output() sdFocusForceBlur = new EventEmitter<any>();\r\n @Output() keyupEnter = new EventEmitter();\r\n\r\n @ViewChild('control') control: ElementRef;\r\n @ContentChild(SdInputSuffixDirective) sdInputSuffix: SdInputSuffixDirective;\r\n @ContentChild(SdLabelDefDirective) sdLabelDef: SdLabelDefDirective;\r\n\r\n formControl = new SdFormControl();\r\n #subscription = new Subscription();\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n @ViewChild('btnCopy', { read: ElementRef }) btnCopy: ElementRef;\r\n copyable = false;\r\n @Input('copyable') set _copyable(val: boolean | '') {\r\n this.copyable = (val === '') || val;\r\n }\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(FORM_CONFIG) @Optional() private formConfig: IFormConfiguration,\r\n private utilityService: SdUtilityService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.appearance = this.appearance || this.formConfig?.appearance;\r\n this.#subscription.add(this.formControl.sdChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.valueChanges.subscribe(this.#onChange));\r\n this.#form?.addControl(this.#name, this.formControl);\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n reValidate = () => {\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.minlength > 0) {\r\n validators.push(Validators.minLength(this.minlength));\r\n }\r\n if (this.maxlength > 0) {\r\n validators.push(Validators.maxLength(this.maxlength));\r\n }\r\n if (this.#pattern) {\r\n validators.push(Validators.pattern(this.#pattern));\r\n }\r\n if (this.#validator) {\r\n asyncValidators.push(this.#customValidator(this.#validator));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #onChange = (value: any) => {\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n }\r\n\r\n onKeyupEnter = () => {\r\n const val: string = (this.formControl.value ?? '').toString();\r\n if (val.length > val.trim().length) {\r\n this.formControl.setValue(val.trim());\r\n }\r\n this.keyupEnter.emit(this.formControl.value);\r\n if (this.#blurOnEnter) {\r\n this.blur();\r\n }\r\n }\r\n\r\n onClickIcon = (event: Event) => {\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n this.sdClickIcon.emit(this.formControl.value);\r\n }\r\n\r\n onFocus = () => {\r\n this.isFocused = true;\r\n this.sdFocus.emit();\r\n if (this.sdFocusForceBlur.observers?.length > 0) {\r\n this.blur();\r\n this.sdFocusForceBlur.emit();\r\n }\r\n }\r\n\r\n onBlur = () => {\r\n this.isFocused = false;\r\n const val: string = (this.formControl.value ?? '').toString();\r\n if (val.length > val.trim().length) {\r\n this.formControl.setValue(val.trim());\r\n }\r\n this.sdBlur.emit(this.formControl.value);\r\n }\r\n\r\n onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n blur = () => {\r\n this.isFocused = false;\r\n this.control?.nativeElement?.blur();\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.control?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n #customValidator = (func: (value: any) => string | Promise<string>): AsyncValidatorFn => {\r\n return async (c: AbstractControl): Promise<{ [key: string]: any } | null> => {\r\n const value = c.value || null;\r\n if (func && typeof (func) === 'function') {\r\n const result = func(value);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n return {\r\n customValidator: message\r\n };\r\n }\r\n return null;\r\n }\r\n if (result) {\r\n return {\r\n customValidator: result\r\n };\r\n }\r\n return null;\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n copyText() {\r\n this.utilityService.copyToClipboard(this.#model);\r\n this.btnCopy.nativeElement.innerText = 'Copied';\r\n this.btnCopy.nativeElement.setAttribute('style', 'color: #4caf50;');\r\n setTimeout(() => {\r\n this.btnCopy.nativeElement.innerText = 'Copy';\r\n this.btnCopy.nativeElement.removeAttribute('style');\r\n }, 2000);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'sdInputTooltipPipe'\r\n})\r\nexport class SdInputTooltipPipe implements PipeTransform {\r\n transform(value: any, tooltip: string | ((inputValue: string) => string)): string {\r\n if (typeof (tooltip) === 'string') {\r\n return tooltip;\r\n }\r\n return tooltip(value);\r\n }\r\n}\r\n","import { ChangeDetectorRef, Directive, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: '[touch]'\r\n})\r\nexport class TouchDirective implements OnChanges {\r\n @Input() public touch: any;\r\n @Input() public ref: ChangeDetectorRef;\r\n\r\n ngOnChanges(changes: SimpleChanges){\r\n console.log(changes);\r\n if(changes.touch){\r\n this.ref.markForCheck();\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SdInput } from './input.component';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SdInputTooltipPipe } from './input-tooltip.pipe';\r\nimport { SdInputSuffixDirective } from './directives/input-suffix.directive';\r\nimport { TouchDirective } from './directives/touch.directive';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdPopoverModule } from '@sd-angular/core/popover';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n SdTranslateModule,\r\n SdCommonModule,\r\n SdPopoverModule,\r\n MatButtonModule\r\n ],\r\n declarations: [\r\n SdInput,\r\n SdInputTooltipPipe,\r\n SdInputSuffixDirective,\r\n TouchDirective\r\n ],\r\n exports: [\r\n SdInput,\r\n SdInputTooltipPipe,\r\n SdInputSuffixDirective,\r\n SdCommonModule\r\n ]\r\n})\r\nexport class SdInputModule { }\r\n"]}
@@ -347,7 +347,13 @@ export class SdExportService {
347
347
  const fromRow = hasDescription ? 4 : 3;
348
348
  items.forEach((e, idx1) => {
349
349
  columns.forEach((column, idx2) => {
350
- firstSheet.getCell(fromRow + idx1, 1 + idx2).value = e[column.field];
350
+ if (Number.isNumber(e[column.field])) {
351
+ firstSheet.getCell(fromRow + idx1, 1 + idx2).value = +e[column.field];
352
+ firstSheet.getCell(fromRow + idx1, 1 + idx2).numFmt = '#';
353
+ }
354
+ else {
355
+ firstSheet.getCell(fromRow + idx1, 1 + idx2).value = e[column.field];
356
+ }
351
357
  firstSheet.getCell(fromRow + idx1, 1 + idx2).style = __classPrivateFieldGet(this, _cellStyle);
352
358
  });
353
359
  });
@@ -419,4 +425,4 @@ SdExportService.ctorParameters = () => [
419
425
  { type: SdNotifyService },
420
426
  { type: undefined, decorators: [{ type: Inject, args: [FIREBASE_CONFIG,] }, { type: Optional }] }
421
427
  ];
422
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2V4cG9ydC8iLCJzb3VyY2VzIjpbInNyYy9saWIvZXhwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFTLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBbUMsR0FBRyxFQUFzQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUEwQixNQUFNLHlCQUF5QixDQUFDOzs7OztBQUtsRixNQUFNLE9BQU8sZUFBZTtJQStIMUIsWUFDVSxVQUF3QixFQUN4QixhQUE4QixFQUNPLHFCQUE2QztRQUZsRixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUNPLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBd0I7UUE3RzVGLHNCQUE4QjtZQUM1QixNQUFNLEVBQUU7Z0JBQ04sTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDekIsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDdkIsS0FBSyxFQUFFLEVBQUUsS0FB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RSxDQUFDO1lBQy9DLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUM3QyxJQUFJO2FBQ0wsRUFBRSxJQUFJLEVBQUU7Z0JBQ1AsWUFBWSxFQUFFLGFBQWE7YUFDNUIsQ0FBQyxDQUFDO1lBQ0gsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQSxDQUFBO0lBdlRELENBQUM7SUFsSUQsSUFBWSxXQUFXOztRQUNyQixhQUFPLElBQUksQ0FBQyxxQkFBcUIsMENBQUUsV0FBVyxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFZLE1BQU07UUFDaEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDcEQsT0FBTyxHQUFHLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBWSxVQUFVO1FBQ3BCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDOUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU87U0FDUjtRQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUNoQyxPQUFPLE1BQU0sQ0FBQztTQUNmO1FBQ0QsT0FBTyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDOzs7OztZQXRCRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVhRLFlBQVk7WUFNWixlQUFlOzRDQXdJbkIsTUFBTSxTQUFDLGVBQWUsY0FBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkQXBpU2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvYXBpJztcclxuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcclxuaW1wb3J0IGhhc2ggZnJvbSAnb2JqZWN0LWhhc2gnO1xyXG5pbXBvcnQgeyBFeHBvcnRUb0NzdiB9IGZyb20gJ2V4cG9ydC10by1jc3YnO1xyXG5pbXBvcnQgeyBXb3JrYm9vaywgU3R5bGUgfSBmcm9tICdleGNlbGpzJztcclxuaW1wb3J0IHsgU2RFeHBvcnRUZW1wbGF0ZSwgSUV4cG9ydE9wdGlvbiwgQVBJLCBTZEV4cG9ydEZpbGUsIFNkRXhwb3J0Q3VzdG9tT3B0aW9uIH0gZnJvbSAnLi9leHBvcnQubW9kZWwnO1xyXG5pbXBvcnQgeyBTZE5vdGlmeVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL25vdGlmeSc7XHJcbmltcG9ydCB7IEZJUkVCQVNFX0NPTkZJRywgSUZpcmViYXNlQ29uZmlndXJhdGlvbiB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvY29tbW9uJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkRXhwb3J0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBnZXQgZnVuY3Rpb25VcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maXJlYmFzZUNvbmZpZ3VyYXRpb24/LmZ1bmN0aW9uVXJsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgZm9sZGVyKCkge1xyXG4gICAgY29uc3QgeyBwcm9qZWN0LCBlbnYgfSA9IHRoaXMuZmlyZWJhc2VDb25maWd1cmF0aW9uO1xyXG4gICAgcmV0dXJuIGAke3Byb2plY3R9LSR7ZW52fWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCB1c2VyRm9sZGVyKCkge1xyXG4gICAgY29uc3QgeyBmb2xkZXIgfSA9IHRoaXMuZmlyZWJhc2VDb25maWd1cmF0aW9uO1xyXG4gICAgaWYgKCFmb2xkZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiAoZm9sZGVyKSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgcmV0dXJuIGZvbGRlcjtcclxuICAgIH1cclxuICAgIHJldHVybiBmb2xkZXIoKTtcclxuICB9XHJcblxyXG4gICNmaWVsZFN0eWxlOiBQYXJ0aWFsPFN0eWxlPiA9IHtcclxuICAgIGJvcmRlcjoge1xyXG4gICAgICBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9XHJcbiAgICB9LFxyXG4gICAgYWxpZ25tZW50OiB7XHJcbiAgICAgIHZlcnRpY2FsOiAnbWlkZGxlJyxcclxuICAgICAgaG9yaXpvbnRhbDogJ2NlbnRlcicsXHJcbiAgICAgIHdyYXBUZXh0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZm9udDoge1xyXG4gICAgICBib2xkOiB0cnVlLFxyXG4gICAgICBzaXplOiAxMSxcclxuICAgICAgY29sb3I6IHsgYXJnYjogJzAwMDAwMCcgfSxcclxuICAgIH0sXHJcbiAgICBmaWxsOiB7XHJcbiAgICAgIHR5cGU6ICdwYXR0ZXJuJyxcclxuICAgICAgcGF0dGVybjogJ3NvbGlkJyxcclxuICAgICAgZmdDb2xvcjoge1xyXG4gICAgICAgIGFyZ2I6ICdGQUZBRkEnXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgI3RpdGxlQ29sb3IgPSAnRkZGRkZGJztcclxuICAjdGl0bGVGZ0NvbG9yID0gJzE0MzE4MCc7XHJcbiAgI3RpdGxlU3R5bGU6IFBhcnRpYWw8U3R5bGU+ID0ge1xyXG4gICAgYm9yZGVyOiB7XHJcbiAgICAgIGJvdHRvbTogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICAgIGxlZnQ6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICByaWdodDogeyBzdHlsZTogJ3RoaW4nIH1cclxuICAgIH0sXHJcbiAgICBhbGlnbm1lbnQ6IHtcclxuICAgICAgdmVydGljYWw6ICdtaWRkbGUnLFxyXG4gICAgICBob3Jpem9udGFsOiAnY2VudGVyJyxcclxuICAgICAgd3JhcFRleHQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBmb250OiB7XHJcbiAgICAgIGJvbGQ6IHRydWUsXHJcbiAgICAgIHNpemU6IDExLFxyXG4gICAgICBjb2xvcjogeyBhcmdiOiB0aGlzLiN0aXRsZUNvbG9yIH0sXHJcbiAgICB9LFxyXG4gICAgZmlsbDoge1xyXG4gICAgICB0eXBlOiAncGF0dGVybicsXHJcbiAgICAgIHBhdHRlcm46ICdzb2xpZCcsXHJcbiAgICAgIGZnQ29sb3I6IHtcclxuICAgICAgICBhcmdiOiB0aGlzLiN0aXRsZUZnQ29sb3IsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICNyZXF1aXJlZFN0eWxlOiBQYXJ0aWFsPFN0eWxlPiA9IHtcclxuICAgIGJvcmRlcjoge1xyXG4gICAgICBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9XHJcbiAgICB9LFxyXG4gICAgYWxpZ25tZW50OiB7XHJcbiAgICAgIHZlcnRpY2FsOiAnbWlkZGxlJyxcclxuICAgICAgaG9yaXpvbnRhbDogJ2NlbnRlcicsXHJcbiAgICAgIHdyYXBUZXh0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZm9udDoge1xyXG4gICAgICBpdGFsaWM6IHRydWUsXHJcbiAgICAgIHNpemU6IDExLFxyXG4gICAgICBjb2xvcjogeyBhcmdiOiAnRkZGRkZGJyB9LFxyXG4gICAgfSxcclxuICAgIGZpbGw6IHtcclxuICAgICAgdHlwZTogJ3BhdHRlcm4nLFxyXG4gICAgICBwYXR0ZXJuOiAnc29saWQnLFxyXG4gICAgICBmZ0NvbG9yOiB7XHJcbiAgICAgICAgYXJnYjogJ0ZGMTc0NCdcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgI2Rlc2NyaXB0aW9uU3R5bGU6IFBhcnRpYWw8U3R5bGU+ID0ge1xyXG4gICAgYm9yZGVyOiB7XHJcbiAgICAgIGJvdHRvbTogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICAgIGxlZnQ6IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICByaWdodDogeyBzdHlsZTogJ3RoaW4nIH1cclxuICAgIH0sXHJcbiAgICBhbGlnbm1lbnQ6IHtcclxuICAgICAgd3JhcFRleHQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBmb250OiB7XHJcbiAgICAgIGl0YWxpYzogdHJ1ZSxcclxuICAgICAgc2l6ZTogOSxcclxuICAgICAgY29sb3I6IHsgYXJnYjogJzAwMDAwMCcgfSxcclxuICAgIH0sXHJcbiAgICBmaWxsOiB7XHJcbiAgICAgIHR5cGU6ICdwYXR0ZXJuJyxcclxuICAgICAgcGF0dGVybjogJ3NvbGlkJyxcclxuICAgICAgZmdDb2xvcjoge1xyXG4gICAgICAgIGFyZ2I6ICdDRkQ4REMnXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICNjZWxsU3R5bGU6IFBhcnRpYWw8U3R5bGU+ID0ge1xyXG4gICAgYWxpZ25tZW50OiB7XHJcbiAgICAgIHZlcnRpY2FsOiAnbWlkZGxlJyxcclxuICAgICAgd3JhcFRleHQ6IHRydWVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBTZEFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmeVNlcnZpY2U6IFNkTm90aWZ5U2VydmljZSxcclxuICAgIEBJbmplY3QoRklSRUJBU0VfQ09ORklHKSBAT3B0aW9uYWwoKSBwcml2YXRlIGZpcmViYXNlQ29uZmlndXJhdGlvbjogSUZpcmViYXNlQ29uZmlndXJhdGlvbikge1xyXG4gIH1cclxuXHJcbiAgI2RpcmVjdG9yeSA9IChrZXk6IHN0cmluZywgZ3JvdXA6IHN0cmluZykgPT4ge1xyXG4gICAgbGV0IGhhc2hlZEZvbGRlciA9IGhhc2goe1xyXG4gICAgICBmb2xkZXI6IHRoaXMuZm9sZGVyLFxyXG4gICAgICB1c2VyRm9sZGVyOiB0aGlzLnVzZXJGb2xkZXJcclxuICAgIH0pO1xyXG4gICAgaWYgKCFncm91cCkge1xyXG4gICAgICByZXR1cm4gYGRpcjE9JHt0aGlzLmZvbGRlcn0mZGlyMj1VLSR7aGFzaGVkRm9sZGVyfSZkaXIzPSR7a2V5IHx8ICcnfWA7XHJcbiAgICB9XHJcbiAgICBoYXNoZWRGb2xkZXIgPSBoYXNoKHtcclxuICAgICAgZm9sZGVyOiB0aGlzLmZvbGRlcixcclxuICAgICAgZ3JvdXBcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGBkaXIxPSR7dGhpcy5mb2xkZXJ9JmRpcjI9Ry0ke2hhc2hlZEZvbGRlcn0mZGlyMz0ke2tleSB8fCAnJ31gO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVUZW1wbGF0ZSA9IGFzeW5jICh0ZW1wbGF0ZTogU2RFeHBvcnRUZW1wbGF0ZSkgPT4ge1xyXG4gICAgY29uc3QgeyBmaWxlTmFtZSwgY29sdW1ucywgc2hlZXRzIH0gPSB0ZW1wbGF0ZTtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheShjb2x1bW5zKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4Y2VsIHRlbXBsYXRlIGNvbHVtbnMgbXVzdCBiZSBhbiBhcnJheScpO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBbaWR4LCBjb2x1bW5dIG9mIGNvbHVtbnMuZW50cmllcygpKSB7XHJcbiAgICAgIGlmICghY29sdW1uLmZpZWxkKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb2x1bW4gJHtpZHggKyAxfTogRmllbGQgaXMgcmVxdWlyZWRgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWNvbHVtbi50aXRsZSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29sdW1uICR7aWR4ICsgMX06IFRpdGxlIGlzIHJlcXVpcmVkYCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGhhc0Rlc2NyaXB0aW9uID0gY29sdW1ucy5zb21lKGNvbHVtbiA9PiBjb2x1bW4uZGVzY3JpcHRpb24pO1xyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBuZXcgV29ya2Jvb2soKTsgLy9hd2FpdCBYbHN4UG9wdWxhdGUuZnJvbUJsYW5rQXN5bmMoKTsgLy8gxJDhu41jIGZpbGUgc2F1IGtoaSDEkcOjIGRvd25sb2FkXHJcbiAgICBjb25zdCBmaXJzdFNoZWV0ID0gd29ya2Jvb2suYWRkV29ya3NoZWV0KCd0ZW1wbGF0ZScpOyAvLyBM4bqleSByYSBzaGVldCDEkeG6p3UgdGnDqm5cclxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xyXG4gICAgICBjb25zdCB7IHJlcXVpcmVkLCBmaWxsLCBmb250Q29sb3IgfSA9IGNvbHVtbjtcclxuICAgICAgY29uc3QgY2VsbEZpZWxkID0gZmlyc3RTaGVldC5nZXRDZWxsKDEsIGluZGV4ICsgMSk7XHJcbiAgICAgIGNvbnN0IGNlbGxUaXRsZSA9IGZpcnN0U2hlZXQuZ2V0Q2VsbCgyLCBpbmRleCArIDEpO1xyXG4gICAgICBjb25zdCBjZWxsRGVzY3JpcHRpb24gPSBmaXJzdFNoZWV0LmdldENlbGwoMywgaW5kZXggKyAxKTtcclxuICAgICAgbGV0IHdpZHRoID0gMTIwO1xyXG4gICAgICBpZiAoY29sdW1uLndpZHRoICYmIGNvbHVtbi53aWR0aC5lbmRzV2l0aCgncHgnKSkge1xyXG4gICAgICAgIHdpZHRoID0gK2NvbHVtbi53aWR0aC5yZXBsYWNlKCdweCcsICcnKTtcclxuICAgICAgfVxyXG4gICAgICBmaXJzdFNoZWV0LmdldENvbHVtbihpbmRleCArIDEpLndpZHRoID0gd2lkdGggLyA3IHx8IDIwO1xyXG4gICAgICBjZWxsRmllbGQuc3R5bGUgPSB0aGlzLiNmaWVsZFN0eWxlO1xyXG4gICAgICBpZihyZXF1aXJlZCkge1xyXG4gICAgICAgIGNlbGxGaWVsZC5zdHlsZSA9IHRoaXMuI3JlcXVpcmVkU3R5bGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY2VsbEZpZWxkLnN0eWxlID0gdGhpcy4jZmllbGRTdHlsZTtcclxuICAgICAgfVxyXG4gICAgICBjZWxsVGl0bGUuc3R5bGUgPSB7XHJcbiAgICAgICAgLi4udGhpcy4jdGl0bGVTdHlsZSxcclxuICAgICAgICBmb250OiB7XHJcbiAgICAgICAgICAuLi50aGlzLiN0aXRsZVN0eWxlPy5mb250LFxyXG4gICAgICAgICAgY29sb3I6IHtcclxuICAgICAgICAgICAgLi4udGhpcy4jdGl0bGVTdHlsZT8uZm9udD8uY29sb3IsXHJcbiAgICAgICAgICAgIGFyZ2I6IGZvbnRDb2xvciB8fCB0aGlzLiN0aXRsZVN0eWxlPy5mb250Py5jb2xvcj8uYXJnYlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmlsbDoge1xyXG4gICAgICAgICAgdHlwZTogJ3BhdHRlcm4nLFxyXG4gICAgICAgICAgcGF0dGVybjogJ3NvbGlkJyxcclxuICAgICAgICAgIGZnQ29sb3I6IHtcclxuICAgICAgICAgICAgYXJnYjogIGZpbGwgfHwgdGhpcy4jdGl0bGVGZ0NvbG9yXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICBjZWxsRmllbGQudmFsdWUgPSBjb2x1bW4uZmllbGQ7XHJcbiAgICAgIGNlbGxUaXRsZS52YWx1ZSA9IGNvbHVtbi50aXRsZTtcclxuICAgICAgaWYgKGhhc0Rlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgY2VsbERlc2NyaXB0aW9uLnN0eWxlID0gdGhpcy4jZGVzY3JpcHRpb25TdHlsZTtcclxuICAgICAgICBjZWxsRGVzY3JpcHRpb24udmFsdWUgPSBjb2x1bW4uZGVzY3JpcHRpb24gfHwgJyc7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHNoZWV0cz8ubGVuZ3RoKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgc2hlZXQgb2Ygc2hlZXRzKSB7XHJcbiAgICAgICAgaWYgKHNoZWV0Lm5hbWUgJiYgQXJyYXkuaXNBcnJheShzaGVldC5pdGVtcykgJiYgQXJyYXkuaXNBcnJheShzaGVldC5maWVsZHMpKSB7XHJcbiAgICAgICAgICBjb25zdCBuZXdTaGVldCA9IHdvcmtib29rLmFkZFdvcmtzaGVldChzaGVldC5uYW1lKTtcclxuICAgICAgICAgIHNoZWV0LmZpZWxkcy5mb3JFYWNoKChmaWVsZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgbmV3U2hlZXQuZ2V0Q29sdW1uKGluZGV4ICsgMSkud2lkdGggPSAzMDtcclxuICAgICAgICAgICAgbmV3U2hlZXQuZ2V0Q2VsbCgxLCBpbmRleCArIDEpLnN0eWxlID0gdGhpcy4jdGl0bGVTdHlsZTtcclxuICAgICAgICAgICAgbmV3U2hlZXQuZ2V0Q2VsbCgxLCBpbmRleCArIDEpLnZhbHVlID0gZmllbGQ7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHNoZWV0Lml0ZW1zLmZvckVhY2goKGl0ZW0sIGlkeDEpID0+IHtcclxuICAgICAgICAgICAgc2hlZXQuZmllbGRzLmZvckVhY2goKGZpZWxkLCBpZHgyKSA9PiB7XHJcbiAgICAgICAgICAgICAgbmV3U2hlZXQuZ2V0Q2VsbCgyICsgaWR4MSwgMSArIGlkeDIpLnZhbHVlID0gaXRlbVtmaWVsZF07XHJcbiAgICAgICAgICAgICAgbmV3U2hlZXQuZ2V0Q2VsbCgyICsgaWR4MSwgMSArIGlkeDIpLnN0eWxlID0gdGhpcy4jY2VsbFN0eWxlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgZmlsZSA9IGF3YWl0IHdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKTtcclxuICAgIFNkVXRpbGl0eS5kb3dubG9hZEJsb2IobmV3IEJsb2IoW2ZpbGVdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcgfSksIGZpbGVOYW1lKTtcclxuICB9XHJcblxyXG4gIHVwbG9hZFRlbXBsYXRlID0gYXN5bmMgKGFyZ3M6IHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgZ3JvdXA/OiBzdHJpbmc7XHJcbiAgICB2YWxpZGF0b3I/OiAoZmlsZU5hbWU6IHN0cmluZykgPT4gc3RyaW5nXHJcbiAgfSk6IFByb21pc2U8U2RFeHBvcnRGaWxlPiA9PiB7XHJcbiAgICBjb25zdCB7IGtleSwgZ3JvdXAsIHZhbGlkYXRvciB9ID0gYXJncztcclxuICAgIGNvbnN0IHsgdXBsb2FkVGVtcGxhdGUgfSA9IEFQSTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZnVuY3Rpb25Vcmx9JHt1cGxvYWRUZW1wbGF0ZX0/JHt0aGlzLiNkaXJlY3Rvcnkoa2V5LCBncm91cCl9YDtcclxuICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBTZFV0aWxpdHkudXBsb2FkKHtcclxuICAgICAgZXh0ZW5zaW9uczogWyd4bHN4J10sXHJcbiAgICAgIG1heFNpemVJbk1iOiAwLjEsXHJcbiAgICAgIHZhbGlkYXRvclxyXG4gICAgfSk7XHJcbiAgICBpZiAoZmlsZSkge1xyXG4gICAgICBjb25zdCB7IGZpbGVQYXRoLCBmaWxlTmFtZSB9ID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnVwbG9hZCh1cmwsIGZpbGUpLmNhdGNoKChlcnI6IEVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKGVycj8ubWVzc2FnZSk7XHJcbiAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWxlUGF0aCxcclxuICAgICAgICBmaWxlTmFtZSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVVcGxvYWRUZW1wbGF0ZSA9IGFzeW5jIChhcmdzOiB7XHJcbiAgICBrZXk6IHN0cmluZztcclxuICAgIHRlbXBsYXRlOiBTZEV4cG9ydFRlbXBsYXRlO1xyXG4gICAgZ3JvdXA/OiBzdHJpbmc7XHJcbiAgfSkgPT4ge1xyXG4gICAgY29uc3QgeyBrZXksIHRlbXBsYXRlLCBncm91cCB9ID0gYXJncztcclxuICAgIGNvbnN0IHsgZ2VuZXJhdGVVcGxvYWRUZW1wbGF0ZSB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5mdW5jdGlvblVybH0ke2dlbmVyYXRlVXBsb2FkVGVtcGxhdGV9PyR7dGhpcy4jZGlyZWN0b3J5KGtleSwgZ3JvdXApfWA7XHJcbiAgICBjb25zdCB7IGZpbGVQYXRoLCBmaWxlTmFtZSB9ID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCB0ZW1wbGF0ZSk7XHJcbiAgICByZXR1cm4geyBmaWxlUGF0aCwgZmlsZU5hbWUgfTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZpbGUgPSBhc3luYyAoYXJnczoge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICBncm91cD86IHN0cmluZztcclxuICAgIGZpbGVOYW1lPzogc3RyaW5nO1xyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IHsga2V5LCBncm91cCwgZmlsZU5hbWUgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCB7IHJlbW92ZUZpbGUgfSA9IEFQSTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZnVuY3Rpb25Vcmx9JHtyZW1vdmVGaWxlfT8ke3RoaXMuI2RpcmVjdG9yeShrZXksIGdyb3VwKX0mbmFtZT0ke2ZpbGVOYW1lfWA7XHJcbiAgICBhd2FpdCB0aGlzLmFwaVNlcnZpY2UucG9zdCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgZmlsZXNJbkZvbGRlciA9IGFzeW5jIChhcmdzOiB7XHJcbiAgICBrZXk6IHN0cmluZztcclxuICAgIGdyb3VwPzogc3RyaW5nO1xyXG4gIH0pOiBQcm9taXNlPFNkRXhwb3J0RmlsZVtdPiA9PiB7XHJcbiAgICBpbnRlcmZhY2UgRmlsZXNJbkZvbGRlclJlcyB7XHJcbiAgICAgIGRpcmVjdG9yeTogc3RyaW5nO1xyXG4gICAgICBmaWxlczoge1xyXG4gICAgICAgIHB1YmxpY1VybDogc3RyaW5nLCBmdWxsUGF0aDogc3RyaW5nLCBuYW1lOiBzdHJpbmdcclxuICAgICAgfVtdO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBrZXksIGdyb3VwIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgeyBmaWxlc0luRm9sZGVyIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmZ1bmN0aW9uVXJsfSR7ZmlsZXNJbkZvbGRlcn0/JHt0aGlzLiNkaXJlY3Rvcnkoa2V5LCBncm91cCl9YDtcclxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5nZXQ8RmlsZXNJbkZvbGRlclJlcz4odXJsKTtcclxuICAgIHJldHVybiByZXMuZmlsZXM/Lm1hcChlID0+ICh7XHJcbiAgICAgIGZpbGVQYXRoOiBlLnB1YmxpY1VybCxcclxuICAgICAgZmlsZU5hbWU6IGUubmFtZVxyXG4gICAgfSkpIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWQgPSAoZmlsZVBhdGg6IHN0cmluZywgZmlsZU5hbWU/OiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IGxpbms6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuZG93bmxvYWQgPSBgJHtmaWxlTmFtZSB8fCB1dWlkLnY0KCl9Lnhsc3hgO1xyXG4gICAgbGluay5ocmVmID0gZmlsZVBhdGg7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydEJ5VGVtcGxhdGUgPSBhc3luYyAoYXJnczoge1xyXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcclxuICAgIGNvbHVtbnM6IGFueVtdLFxyXG4gICAgaXRlbXM6IGFueVtdLFxyXG4gICAgZmlsZU5hbWU/OiBzdHJpbmdcclxuICB9KSA9PiB7XHJcbiAgICBjb25zdCB7IGZpbGVQYXRoLCBjb2x1bW5zLCBpdGVtcywgZmlsZU5hbWUgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCB7IHNkRXhwb3J0QnlUZW1wbGF0ZSB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5mdW5jdGlvblVybH0ke3NkRXhwb3J0QnlUZW1wbGF0ZX1gO1xyXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCB7XHJcbiAgICAgIGZpbGVQYXRoLFxyXG4gICAgICBjb2x1bW5zLFxyXG4gICAgICBpdGVtcyxcclxuICAgICAgZmlsZU5hbWVcclxuICAgIH0sIG51bGwsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7YmFzZTY0LCcgfSk7XHJcbiAgICBTZFV0aWxpdHkuZG93bmxvYWRCbG9iKGJsb2IsIGZpbGVOYW1lKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydENTViA9IGFzeW5jIChvcHRpb246IElFeHBvcnRPcHRpb24pID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1ucywgaXRlbXMsIGZpbGVOYW1lIH0gPSBvcHRpb247XHJcbiAgICBjb25zdCBoZWFkZXJDU1YgPSB7fTtcclxuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgaGVhZGVyQ1NWW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4udGl0bGU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjc3ZFeHBvcnRlciA9IG5ldyBFeHBvcnRUb0Nzdih7XHJcbiAgICAgIGZpbGVuYW1lOiBgJHtmaWxlTmFtZSB8fCAnQ1NWJ31fJHtEYXRlLnRvRm9ybWF0KG5ldyBEYXRlKCksICd5eXl5LU1NLWRkLUhILW1tLXNzJyl9YCxcclxuICAgICAgZmllbGRTZXBhcmF0b3I6ICcsJyxcclxuICAgICAgcXVvdGVTdHJpbmdzOiAnXCInLFxyXG4gICAgICBkZWNpbWFsU2VwYXJhdG9yOiAnLicsXHJcbiAgICAgIHNob3dMYWJlbHM6IHRydWUsXHJcbiAgICAgIHNob3dUaXRsZTogZmFsc2UsXHJcbiAgICAgIHRpdGxlOiBmaWxlTmFtZSB8fCAnQ1NWJyxcclxuICAgICAgdXNlQm9tOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBjc3ZFeHBvcnRlci5nZW5lcmF0ZUNzdihbaGVhZGVyQ1NWLCAuLi5pdGVtc10pO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0ID0gYXN5bmMgKG9wdGlvbjogSUV4cG9ydE9wdGlvbikgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBpdGVtcywgZmlsZU5hbWUsIHNoZWV0cyB9ID0gb3B0aW9uO1xyXG4gICAgbGV0IGhhc0Rlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICBmb3IgKGNvbnN0IFtpZHgsIGNvbHVtbl0gb2YgY29sdW1ucy5lbnRyaWVzKCkpIHtcclxuICAgICAgaWYgKCFjb2x1bW4uZmllbGQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbHVtbiAke2lkeCArIDF9OiBGaWVsZCBpcyByZXF1aXJlZGApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghY29sdW1uLnRpdGxlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb2x1bW4gJHtpZHggKyAxfTogVGl0bGUgaXMgcmVxdWlyZWRgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sdW1uLmRlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgaGFzRGVzY3JpcHRpb24gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCB3b3JrYm9vayA9IG5ldyBXb3JrYm9vaygpOyAvL2F3YWl0IFhsc3hQb3B1bGF0ZS5mcm9tQmxhbmtBc3luYygpOyAvLyDEkOG7jWMgZmlsZSBzYXUga2hpIMSRw6MgZG93bmxvYWRcclxuICAgIGNvbnN0IGZpcnN0U2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQoJ2RhdGEnKTsgLy8gTOG6pXkgcmEgc2hlZXQgxJHhuqd1IHRpw6puXHJcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcclxuICAgICAgbGV0IHdpZHRoID0gMTIwO1xyXG4gICAgICBpZiAoY29sdW1uLndpZHRoICYmIGNvbHVtbi53aWR0aC5lbmRzV2l0aCgncHgnKSkge1xyXG4gICAgICAgIHdpZHRoID0gK2NvbHVtbi53aWR0aC5yZXBsYWNlKCdweCcsICcnKTtcclxuICAgICAgfVxyXG4gICAgICBmaXJzdFNoZWV0LmdldENvbHVtbihpbmRleCArIDEpLndpZHRoID0gd2lkdGggLyA3IHx8IDIwO1xyXG4gICAgICBmaXJzdFNoZWV0LmdldENlbGwoMSwgaW5kZXggKyAxKS5zdHlsZSA9IHRoaXMuI2ZpZWxkU3R5bGVcclxuICAgICAgaWYgKGNvbHVtbi5yZXF1aXJlZCkge1xyXG4gICAgICAgIGZpcnN0U2hlZXQuZ2V0Q2VsbCgyLCBpbmRleCArIDEpLnN0eWxlID0gdGhpcy4jcmVxdWlyZWRTdHlsZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmaXJzdFNoZWV0LmdldENlbGwoMiwgaW5kZXggKyAxKS5zdHlsZSA9IHRoaXMuI3RpdGxlU3R5bGU7XHJcbiAgICAgIH1cclxuICAgICAgZmlyc3RTaGVldC5nZXRDZWxsKDEsIGluZGV4ICsgMSkudmFsdWUgPSBjb2x1bW4uZmllbGQ7XHJcbiAgICAgIGZpcnN0U2hlZXQuZ2V0Q2VsbCgyLCBpbmRleCArIDEpLnZhbHVlID0gY29sdW1uLnRpdGxlO1xyXG4gICAgICBpZiAoaGFzRGVzY3JpcHRpb24pIHtcclxuICAgICAgICBmaXJzdFNoZWV0LmdldENlbGwoMywgaW5kZXggKyAxKS5zdHlsZSA9IHRoaXMuI2Rlc2NyaXB0aW9uU3R5bGU7XHJcbiAgICAgICAgZmlyc3RTaGVldC5nZXRDZWxsKDMsIGluZGV4ICsgMSkudmFsdWUgPSBjb2x1bW4uZGVzY3JpcHRpb24gfHwgJyc7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHNoZWV0cz8ubGVuZ3RoKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgc2hlZXQgb2Ygc2hlZXRzKSB7XHJcbiAgICAgICAgaWYgKHNoZWV0Lm5hbWUgJiYgQXJyYXkuaXNBcnJheShzaGVldC5pdGVtcykgJiYgQXJyYXkuaXNBcnJheShzaGVldC5maWVsZHMpKSB7XHJcbiAgICAgICAgICBjb25zdCBuZXdTaGVldCA9IHdvcmtib29rLmFkZFdvcmtzaGVldChzaGVldC5uYW1lKTtcclxuICAgICAgICAgIHNoZWV0LmZpZWxkcy5mb3JFYWNoKChmaWVsZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgbmV3U2hlZXQuZ2V0Q29sdW1uKGluZGV4ICsgMSkud2lkdGggPSAzMDtcclxuICAgICAgICAgICAgbmV3U2hlZXQuZ2V0Q2VsbCgxLCBpbmRleCArIDEpLnN0eWxlID0gdGhpcy4jdGl0bGVTdHlsZTtcclxuICAgICAgICAgICAgbmV3U2hlZXQuZ2V0Q2VsbCgxLCBpbmRleCArIDEpLnZhbHVlID0gZmllbGQ7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHNoZWV0Lml0ZW1zLmZvckVhY2goKGl0ZW0sIGlkeDEpID0+IHtcclxuICAgICAgICAgICAgc2hlZXQuZmllbGRzLmZvckVhY2goKGZpZWxkLCBpZHgyKSA9PiB7XHJcbiAgICAgICAgICAgICAgbmV3U2hlZXQuZ2V0Q2VsbCgyICsgaWR4MSwgMSArIGlkeDIpLnZhbHVlID0gaXRlbVtmaWVsZF07XHJcbiAgICAgICAgICAgICAgbmV3U2hlZXQuZ2V0Q2VsbCgyICsgaWR4MSwgMSArIGlkeDIpLnN0eWxlID0gdGhpcy4jY2VsbFN0eWxlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZyb21Sb3cgPSBoYXNEZXNjcmlwdGlvbiA/IDQgOiAzO1xyXG4gICAgaXRlbXMuZm9yRWFjaCgoZSwgaWR4MSkgPT4ge1xyXG4gICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgaWR4MikgPT4ge1xyXG4gICAgICAgIGZpcnN0U2hlZXQuZ2V0Q2VsbChmcm9tUm93ICsgaWR4MSwgMSArIGlkeDIpLnZhbHVlID0gZVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgIGZpcnN0U2hlZXQuZ2V0Q2VsbChmcm9tUm93ICsgaWR4MSwgMSArIGlkeDIpLnN0eWxlID0gdGhpcy4jY2VsbFN0eWxlO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgZmlsZSA9IGF3YWl0IHdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKTtcclxuICAgIFNkVXRpbGl0eS5kb3dubG9hZEJsb2IobmV3IEJsb2IoW2ZpbGVdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcgfSksIGZpbGVOYW1lKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydEN1c3RvbSA9IGFzeW5jIChvcHRpb246IFNkRXhwb3J0Q3VzdG9tT3B0aW9uKSA9PiB7XHJcbiAgICBjb25zdCB7IGZpbGVOYW1lLCBzaGVldHMgfSA9IG9wdGlvbjtcclxuICAgIGlmICghc2hlZXRzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKCdQaOG6o2kgY8OzIMOtdCBuaOG6pXQgMSBzaGVldCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB3b3JrYm9vayA9IG5ldyBXb3JrYm9vaygpO1xyXG4gICAgZm9yIChjb25zdCBbaWR4LCBzaGVldF0gb2Ygc2hlZXRzLmVudHJpZXMoKSkge1xyXG4gICAgICBjb25zdCB7IG5hbWUsIGNvbHVtbnMsIGNlbGxzIH0gPSBzaGVldFxyXG4gICAgICBjb25zdCB3b3Jrc2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQobmFtZSB8fCBgU2hlZXQgJHtpZHggKyAxfWApO1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiAoY29sdW1ucyB8fCBbXSkpIHtcclxuICAgICAgICB3b3Jrc2hlZXQuZ2V0Q29sdW1uKGNvbHVtbi5pbmRleCkuc3R5bGUgPSBjb2x1bW4uc3R5bGU7XHJcbiAgICAgICAgd29ya3NoZWV0LmdldENvbHVtbihjb2x1bW4uaW5kZXgpLndpZHRoID0gY29sdW1uLndpZHRoO1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAoY29uc3QgY2VsbCBvZiBjZWxscykge1xyXG4gICAgICAgIGNvbnN0IHsgcm93LCBjb2x1bW4sIHZhbHVlLCBzdHlsZSB9ID0gY2VsbDtcclxuICAgICAgICB3b3Jrc2hlZXQuZ2V0Q2VsbChyb3csIGNvbHVtbikuc3R5bGUgPSBzdHlsZSB8fCB3b3Jrc2hlZXQuZ2V0Q29sdW1uKGNvbHVtbikuc3R5bGU7XHJcbiAgICAgICAgd29ya3NoZWV0LmdldENlbGwocm93LCBjb2x1bW4pLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGZpbGUgPSBhd2FpdCB3b3JrYm9vay54bHN4LndyaXRlQnVmZmVyKCk7XHJcbiAgICBTZFV0aWxpdHkuZG93bmxvYWRCbG9iKG5ldyBCbG9iKFtmaWxlXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnIH0pLCBmaWxlTmFtZSk7XHJcbiAgfVxyXG5cclxuICBtZXJnZVBERiA9IGFzeW5jICh1cmxzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgY29uc3QgeyBzZE1lcmdlUERGIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmZ1bmN0aW9uVXJsfSR7c2RNZXJnZVBERn1gO1xyXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCB7XHJcbiAgICAgIHVybHNcclxuICAgIH0sIG51bGwsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInXHJcbiAgICB9KTtcclxuICAgIFNkVXRpbGl0eS5kb3dubG9hZEJsb2IobmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSkpO1xyXG4gIH1cclxufSJdfQ==
428
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2V4cG9ydC8iLCJzb3VyY2VzIjpbInNyYy9saWIvZXhwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFTLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBbUMsR0FBRyxFQUFzQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUEwQixNQUFNLHlCQUF5QixDQUFDOzs7OztBQUtsRixNQUFNLE9BQU8sZUFBZTtJQStIMUIsWUFDVSxVQUF3QixFQUN4QixhQUE4QixFQUNPLHFCQUE2QztRQUZsRixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUNPLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBd0I7UUE3RzVGLHNCQUE4QjtZQUM1QixNQUFNLEVBQUU7Z0JBQ04sTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDekIsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDdkIsS0FBSyxFQUFFLEVBQUUsS0FB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LE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDaEMsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUNELE9BQU8sTUFBTSxFQUFFLENBQUM7SUFDbEIsQ0FBQzs7Ozs7WUF0QkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFYUSxZQUFZO1lBTVosZUFBZTs0Q0F3SW5CLE1BQU0sU0FBQyxlQUFlLGNBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZEFwaVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2FwaSc7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcbmltcG9ydCBoYXNoIGZyb20gJ29iamVjdC1oYXNoJztcclxuaW1wb3J0IHsgRXhwb3J0VG9Dc3YgfSBmcm9tICdleHBvcnQtdG8tY3N2JztcclxuaW1wb3J0IHsgV29ya2Jvb2ssIFN0eWxlIH0gZnJvbSAnZXhjZWxqcyc7XHJcbmltcG9ydCB7IFNkRXhwb3J0VGVtcGxhdGUsIElFeHBvcnRPcHRpb24sIEFQSSwgU2RFeHBvcnRGaWxlLCBTZEV4cG9ydEN1c3RvbU9wdGlvbiB9IGZyb20gJy4vZXhwb3J0Lm1vZGVsJztcclxuaW1wb3J0IHsgU2ROb3RpZnlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5pbXBvcnQgeyBGSVJFQkFTRV9DT05GSUcsIElGaXJlYmFzZUNvbmZpZ3VyYXRpb24gfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2NvbW1vbic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZEV4cG9ydFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgZ2V0IGZ1bmN0aW9uVXJsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlyZWJhc2VDb25maWd1cmF0aW9uPy5mdW5jdGlvblVybDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGZvbGRlcigpIHtcclxuICAgIGNvbnN0IHsgcHJvamVjdCwgZW52IH0gPSB0aGlzLmZpcmViYXNlQ29uZmlndXJhdGlvbjtcclxuICAgIHJldHVybiBgJHtwcm9qZWN0fS0ke2Vudn1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgdXNlckZvbGRlcigpIHtcclxuICAgIGNvbnN0IHsgZm9sZGVyIH0gPSB0aGlzLmZpcmViYXNlQ29uZmlndXJhdGlvbjtcclxuICAgIGlmICghZm9sZGVyKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgKGZvbGRlcikgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiBmb2xkZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9sZGVyKCk7XHJcbiAgfVxyXG5cclxuICAjZmllbGRTdHlsZTogUGFydGlhbDxTdHlsZT4gPSB7XHJcbiAgICBib3JkZXI6IHtcclxuICAgICAgYm90dG9tOiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICAgIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfVxyXG4gICAgfSxcclxuICAgIGFsaWdubWVudDoge1xyXG4gICAgICB2ZXJ0aWNhbDogJ21pZGRsZScsXHJcbiAgICAgIGhvcml6b250YWw6ICdjZW50ZXInLFxyXG4gICAgICB3cmFwVGV4dDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGZvbnQ6IHtcclxuICAgICAgYm9sZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogMTEsXHJcbiAgICAgIGNvbG9yOiB7IGFyZ2I6ICcwMDAwMDAnIH0sXHJcbiAgICB9LFxyXG4gICAgZmlsbDoge1xyXG4gICAgICB0eXBlOiAncGF0dGVybicsXHJcbiAgICAgIHBhdHRlcm46ICdzb2xpZCcsXHJcbiAgICAgIGZnQ29sb3I6IHtcclxuICAgICAgICBhcmdiOiAnRkFGQUZBJ1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gICN0aXRsZUNvbG9yID0gJ0ZGRkZGRic7XHJcbiAgI3RpdGxlRmdDb2xvciA9ICcxNDMxODAnO1xyXG4gICN0aXRsZVN0eWxlOiBQYXJ0aWFsPFN0eWxlPiA9IHtcclxuICAgIGJvcmRlcjoge1xyXG4gICAgICBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9XHJcbiAgICB9LFxyXG4gICAgYWxpZ25tZW50OiB7XHJcbiAgICAgIHZlcnRpY2FsOiAnbWlkZGxlJyxcclxuICAgICAgaG9yaXpvbnRhbDogJ2NlbnRlcicsXHJcbiAgICAgIHdyYXBUZXh0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZm9udDoge1xyXG4gICAgICBib2xkOiB0cnVlLFxyXG4gICAgICBzaXplOiAxMSxcclxuICAgICAgY29sb3I6IHsgYXJnYjogdGhpcy4jdGl0bGVDb2xvciB9LFxyXG4gICAgfSxcclxuICAgIGZpbGw6IHtcclxuICAgICAgdHlwZTogJ3BhdHRlcm4nLFxyXG4gICAgICBwYXR0ZXJuOiAnc29saWQnLFxyXG4gICAgICBmZ0NvbG9yOiB7XHJcbiAgICAgICAgYXJnYjogdGhpcy4jdGl0bGVGZ0NvbG9yLFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAjcmVxdWlyZWRTdHlsZTogUGFydGlhbDxTdHlsZT4gPSB7XHJcbiAgICBib3JkZXI6IHtcclxuICAgICAgYm90dG9tOiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH0sXHJcbiAgICAgIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfVxyXG4gICAgfSxcclxuICAgIGFsaWdubWVudDoge1xyXG4gICAgICB2ZXJ0aWNhbDogJ21pZGRsZScsXHJcbiAgICAgIGhvcml6b250YWw6ICdjZW50ZXInLFxyXG4gICAgICB3cmFwVGV4dDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGZvbnQ6IHtcclxuICAgICAgaXRhbGljOiB0cnVlLFxyXG4gICAgICBzaXplOiAxMSxcclxuICAgICAgY29sb3I6IHsgYXJnYjogJ0ZGRkZGRicgfSxcclxuICAgIH0sXHJcbiAgICBmaWxsOiB7XHJcbiAgICAgIHR5cGU6ICdwYXR0ZXJuJyxcclxuICAgICAgcGF0dGVybjogJ3NvbGlkJyxcclxuICAgICAgZmdDb2xvcjoge1xyXG4gICAgICAgIGFyZ2I6ICdGRjE3NDQnXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICNkZXNjcmlwdGlvblN0eWxlOiBQYXJ0aWFsPFN0eWxlPiA9IHtcclxuICAgIGJvcmRlcjoge1xyXG4gICAgICBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LFxyXG4gICAgICBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSxcclxuICAgICAgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9XHJcbiAgICB9LFxyXG4gICAgYWxpZ25tZW50OiB7XHJcbiAgICAgIHdyYXBUZXh0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZm9udDoge1xyXG4gICAgICBpdGFsaWM6IHRydWUsXHJcbiAgICAgIHNpemU6IDksXHJcbiAgICAgIGNvbG9yOiB7IGFyZ2I6ICcwMDAwMDAnIH0sXHJcbiAgICB9LFxyXG4gICAgZmlsbDoge1xyXG4gICAgICB0eXBlOiAncGF0dGVybicsXHJcbiAgICAgIHBhdHRlcm46ICdzb2xpZCcsXHJcbiAgICAgIGZnQ29sb3I6IHtcclxuICAgICAgICBhcmdiOiAnQ0ZEOERDJ1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAjY2VsbFN0eWxlOiBQYXJ0aWFsPFN0eWxlPiA9IHtcclxuICAgIGFsaWdubWVudDoge1xyXG4gICAgICB2ZXJ0aWNhbDogJ21pZGRsZScsXHJcbiAgICAgIHdyYXBUZXh0OiB0cnVlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogU2RBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KEZJUkVCQVNFX0NPTkZJRykgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmaXJlYmFzZUNvbmZpZ3VyYXRpb246IElGaXJlYmFzZUNvbmZpZ3VyYXRpb24pIHtcclxuICB9XHJcblxyXG4gICNkaXJlY3RvcnkgPSAoa2V5OiBzdHJpbmcsIGdyb3VwOiBzdHJpbmcpID0+IHtcclxuICAgIGxldCBoYXNoZWRGb2xkZXIgPSBoYXNoKHtcclxuICAgICAgZm9sZGVyOiB0aGlzLmZvbGRlcixcclxuICAgICAgdXNlckZvbGRlcjogdGhpcy51c2VyRm9sZGVyXHJcbiAgICB9KTtcclxuICAgIGlmICghZ3JvdXApIHtcclxuICAgICAgcmV0dXJuIGBkaXIxPSR7dGhpcy5mb2xkZXJ9JmRpcjI9VS0ke2hhc2hlZEZvbGRlcn0mZGlyMz0ke2tleSB8fCAnJ31gO1xyXG4gICAgfVxyXG4gICAgaGFzaGVkRm9sZGVyID0gaGFzaCh7XHJcbiAgICAgIGZvbGRlcjogdGhpcy5mb2xkZXIsXHJcbiAgICAgIGdyb3VwXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBgZGlyMT0ke3RoaXMuZm9sZGVyfSZkaXIyPUctJHtoYXNoZWRGb2xkZXJ9JmRpcjM9JHtrZXkgfHwgJyd9YDtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVGVtcGxhdGUgPSBhc3luYyAodGVtcGxhdGU6IFNkRXhwb3J0VGVtcGxhdGUpID0+IHtcclxuICAgIGNvbnN0IHsgZmlsZU5hbWUsIGNvbHVtbnMsIHNoZWV0cyB9ID0gdGVtcGxhdGU7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29sdW1ucykpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeGNlbCB0ZW1wbGF0ZSBjb2x1bW5zIG11c3QgYmUgYW4gYXJyYXknKTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3QgW2lkeCwgY29sdW1uXSBvZiBjb2x1bW5zLmVudHJpZXMoKSkge1xyXG4gICAgICBpZiAoIWNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29sdW1uICR7aWR4ICsgMX06IEZpZWxkIGlzIHJlcXVpcmVkYCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFjb2x1bW4udGl0bGUpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbHVtbiAke2lkeCArIDF9OiBUaXRsZSBpcyByZXF1aXJlZGApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBoYXNEZXNjcmlwdGlvbiA9IGNvbHVtbnMuc29tZShjb2x1bW4gPT4gY29sdW1uLmRlc2NyaXB0aW9uKTtcclxuICAgIGNvbnN0IHdvcmtib29rID0gbmV3IFdvcmtib29rKCk7IC8vYXdhaXQgWGxzeFBvcHVsYXRlLmZyb21CbGFua0FzeW5jKCk7IC8vIMSQ4buNYyBmaWxlIHNhdSBraGkgxJHDoyBkb3dubG9hZFxyXG4gICAgY29uc3QgZmlyc3RTaGVldCA9IHdvcmtib29rLmFkZFdvcmtzaGVldCgndGVtcGxhdGUnKTsgLy8gTOG6pXkgcmEgc2hlZXQgxJHhuqd1IHRpw6puXHJcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcclxuICAgICAgY29uc3QgeyByZXF1aXJlZCwgZmlsbCwgZm9udENvbG9yIH0gPSBjb2x1bW47XHJcbiAgICAgIGNvbnN0IGNlbGxGaWVsZCA9IGZpcnN0U2hlZXQuZ2V0Q2VsbCgxLCBpbmRleCArIDEpO1xyXG4gICAgICBjb25zdCBjZWxsVGl0bGUgPSBmaXJzdFNoZWV0LmdldENlbGwoMiwgaW5kZXggKyAxKTtcclxuICAgICAgY29uc3QgY2VsbERlc2NyaXB0aW9uID0gZmlyc3RTaGVldC5nZXRDZWxsKDMsIGluZGV4ICsgMSk7XHJcbiAgICAgIGxldCB3aWR0aCA9IDEyMDtcclxuICAgICAgaWYgKGNvbHVtbi53aWR0aCAmJiBjb2x1bW4ud2lkdGguZW5kc1dpdGgoJ3B4JykpIHtcclxuICAgICAgICB3aWR0aCA9ICtjb2x1bW4ud2lkdGgucmVwbGFjZSgncHgnLCAnJyk7XHJcbiAgICAgIH1cclxuICAgICAgZmlyc3RTaGVldC5nZXRDb2x1bW4oaW5kZXggKyAxKS53aWR0aCA9IHdpZHRoIC8gNyB8fCAyMDtcclxuICAgICAgY2VsbEZpZWxkLnN0eWxlID0gdGhpcy4jZmllbGRTdHlsZTtcclxuICAgICAgaWYgKHJlcXVpcmVkKSB7XHJcbiAgICAgICAgY2VsbEZpZWxkLnN0eWxlID0gdGhpcy4jcmVxdWlyZWRTdHlsZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjZWxsRmllbGQuc3R5bGUgPSB0aGlzLiNmaWVsZFN0eWxlO1xyXG4gICAgICB9XHJcbiAgICAgIGNlbGxUaXRsZS5zdHlsZSA9IHtcclxuICAgICAgICAuLi50aGlzLiN0aXRsZVN0eWxlLFxyXG4gICAgICAgIGZvbnQ6IHtcclxuICAgICAgICAgIC4uLnRoaXMuI3RpdGxlU3R5bGU/LmZvbnQsXHJcbiAgICAgICAgICBjb2xvcjoge1xyXG4gICAgICAgICAgICAuLi50aGlzLiN0aXRsZVN0eWxlPy5mb250Py5jb2xvcixcclxuICAgICAgICAgICAgYXJnYjogZm9udENvbG9yIHx8IHRoaXMuI3RpdGxlU3R5bGU/LmZvbnQ/LmNvbG9yPy5hcmdiXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBmaWxsOiB7XHJcbiAgICAgICAgICB0eXBlOiAncGF0dGVybicsXHJcbiAgICAgICAgICBwYXR0ZXJuOiAnc29saWQnLFxyXG4gICAgICAgICAgZmdDb2xvcjoge1xyXG4gICAgICAgICAgICBhcmdiOiBmaWxsIHx8IHRoaXMuI3RpdGxlRmdDb2xvclxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgY2VsbEZpZWxkLnZhbHVlID0gY29sdW1uLmZpZWxkO1xyXG4gICAgICBjZWxsVGl0bGUudmFsdWUgPSBjb2x1bW4udGl0bGU7XHJcbiAgICAgIGlmIChoYXNEZXNjcmlwdGlvbikge1xyXG4gICAgICAgIGNlbGxEZXNjcmlwdGlvbi5zdHlsZSA9IHRoaXMuI2Rlc2NyaXB0aW9uU3R5bGU7XHJcbiAgICAgICAgY2VsbERlc2NyaXB0aW9uLnZhbHVlID0gY29sdW1uLmRlc2NyaXB0aW9uIHx8ICcnO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChzaGVldHM/Lmxlbmd0aCkge1xyXG4gICAgICBmb3IgKGNvbnN0IHNoZWV0IG9mIHNoZWV0cykge1xyXG4gICAgICAgIGlmIChzaGVldC5uYW1lICYmIEFycmF5LmlzQXJyYXkoc2hlZXQuaXRlbXMpICYmIEFycmF5LmlzQXJyYXkoc2hlZXQuZmllbGRzKSkge1xyXG4gICAgICAgICAgY29uc3QgbmV3U2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQoc2hlZXQubmFtZSk7XHJcbiAgICAgICAgICBzaGVldC5maWVsZHMuZm9yRWFjaCgoZmllbGQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIG5ld1NoZWV0LmdldENvbHVtbihpbmRleCArIDEpLndpZHRoID0gMzA7XHJcbiAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMSwgaW5kZXggKyAxKS5zdHlsZSA9IHRoaXMuI3RpdGxlU3R5bGU7XHJcbiAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMSwgaW5kZXggKyAxKS52YWx1ZSA9IGZpZWxkO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBzaGVldC5pdGVtcy5mb3JFYWNoKChpdGVtLCBpZHgxKSA9PiB7XHJcbiAgICAgICAgICAgIHNoZWV0LmZpZWxkcy5mb3JFYWNoKChmaWVsZCwgaWR4MikgPT4ge1xyXG4gICAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMiArIGlkeDEsIDEgKyBpZHgyKS52YWx1ZSA9IGl0ZW1bZmllbGRdO1xyXG4gICAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMiArIGlkeDEsIDEgKyBpZHgyKS5zdHlsZSA9IHRoaXMuI2NlbGxTdHlsZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGZpbGUgPSBhd2FpdCB3b3JrYm9vay54bHN4LndyaXRlQnVmZmVyKCk7XHJcbiAgICBTZFV0aWxpdHkuZG93bmxvYWRCbG9iKG5ldyBCbG9iKFtmaWxlXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnIH0pLCBmaWxlTmFtZSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRUZW1wbGF0ZSA9IGFzeW5jIChhcmdzOiB7XHJcbiAgICBrZXk6IHN0cmluZztcclxuICAgIGdyb3VwPzogc3RyaW5nO1xyXG4gICAgdmFsaWRhdG9yPzogKGZpbGVOYW1lOiBzdHJpbmcpID0+IHN0cmluZ1xyXG4gIH0pOiBQcm9taXNlPFNkRXhwb3J0RmlsZT4gPT4ge1xyXG4gICAgY29uc3QgeyBrZXksIGdyb3VwLCB2YWxpZGF0b3IgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCB7IHVwbG9hZFRlbXBsYXRlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmZ1bmN0aW9uVXJsfSR7dXBsb2FkVGVtcGxhdGV9PyR7dGhpcy4jZGlyZWN0b3J5KGtleSwgZ3JvdXApfWA7XHJcbiAgICBjb25zdCBmaWxlID0gYXdhaXQgU2RVdGlsaXR5LnVwbG9hZCh7XHJcbiAgICAgIGV4dGVuc2lvbnM6IFsneGxzeCddLFxyXG4gICAgICBtYXhTaXplSW5NYjogMC4xLFxyXG4gICAgICB2YWxpZGF0b3JcclxuICAgIH0pO1xyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgY29uc3QgeyBmaWxlUGF0aCwgZmlsZU5hbWUgfSA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS51cGxvYWQodXJsLCBmaWxlKS5jYXRjaCgoZXJyOiBFcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyhlcnI/Lm1lc3NhZ2UpO1xyXG4gICAgICAgIHRocm93IGVycjtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZmlsZVBhdGgsXHJcbiAgICAgICAgZmlsZU5hbWUsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVXBsb2FkVGVtcGxhdGUgPSBhc3luYyAoYXJnczoge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICB0ZW1wbGF0ZTogU2RFeHBvcnRUZW1wbGF0ZTtcclxuICAgIGdyb3VwPzogc3RyaW5nO1xyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IHsga2V5LCB0ZW1wbGF0ZSwgZ3JvdXAgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCB7IGdlbmVyYXRlVXBsb2FkVGVtcGxhdGUgfSA9IEFQSTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZnVuY3Rpb25Vcmx9JHtnZW5lcmF0ZVVwbG9hZFRlbXBsYXRlfT8ke3RoaXMuI2RpcmVjdG9yeShrZXksIGdyb3VwKX1gO1xyXG4gICAgY29uc3QgeyBmaWxlUGF0aCwgZmlsZU5hbWUgfSA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KHVybCwgdGVtcGxhdGUpO1xyXG4gICAgcmV0dXJuIHsgZmlsZVBhdGgsIGZpbGVOYW1lIH07XHJcbiAgfVxyXG5cclxuICByZW1vdmVGaWxlID0gYXN5bmMgKGFyZ3M6IHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgZ3JvdXA/OiBzdHJpbmc7XHJcbiAgICBmaWxlTmFtZT86IHN0cmluZztcclxuICB9KSA9PiB7XHJcbiAgICBjb25zdCB7IGtleSwgZ3JvdXAsIGZpbGVOYW1lIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgeyByZW1vdmVGaWxlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmZ1bmN0aW9uVXJsfSR7cmVtb3ZlRmlsZX0/JHt0aGlzLiNkaXJlY3Rvcnkoa2V5LCBncm91cCl9Jm5hbWU9JHtmaWxlTmFtZX1gO1xyXG4gICAgYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsKTtcclxuICB9XHJcblxyXG4gIGZpbGVzSW5Gb2xkZXIgPSBhc3luYyAoYXJnczoge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICBncm91cD86IHN0cmluZztcclxuICB9KTogUHJvbWlzZTxTZEV4cG9ydEZpbGVbXT4gPT4ge1xyXG4gICAgaW50ZXJmYWNlIEZpbGVzSW5Gb2xkZXJSZXMge1xyXG4gICAgICBkaXJlY3Rvcnk6IHN0cmluZztcclxuICAgICAgZmlsZXM6IHtcclxuICAgICAgICBwdWJsaWNVcmw6IHN0cmluZywgZnVsbFBhdGg6IHN0cmluZywgbmFtZTogc3RyaW5nXHJcbiAgICAgIH1bXTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsga2V5LCBncm91cCB9ID0gYXJncztcclxuICAgIGNvbnN0IHsgZmlsZXNJbkZvbGRlciB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5mdW5jdGlvblVybH0ke2ZpbGVzSW5Gb2xkZXJ9PyR7dGhpcy4jZGlyZWN0b3J5KGtleSwgZ3JvdXApfWA7XHJcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2UuZ2V0PEZpbGVzSW5Gb2xkZXJSZXM+KHVybCk7XHJcbiAgICByZXR1cm4gcmVzLmZpbGVzPy5tYXAoZSA9PiAoe1xyXG4gICAgICBmaWxlUGF0aDogZS5wdWJsaWNVcmwsXHJcbiAgICAgIGZpbGVOYW1lOiBlLm5hbWVcclxuICAgIH0pKSB8fCBbXTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkID0gKGZpbGVQYXRoOiBzdHJpbmcsIGZpbGVOYW1lPzogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBsaW5rOiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICBsaW5rLmRvd25sb2FkID0gYCR7ZmlsZU5hbWUgfHwgdXVpZC52NCgpfS54bHN4YDtcclxuICAgIGxpbmsuaHJlZiA9IGZpbGVQYXRoO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRCeVRlbXBsYXRlID0gYXN5bmMgKGFyZ3M6IHtcclxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXHJcbiAgICBjb2x1bW5zOiBhbnlbXSxcclxuICAgIGl0ZW1zOiBhbnlbXSxcclxuICAgIGZpbGVOYW1lPzogc3RyaW5nXHJcbiAgfSkgPT4ge1xyXG4gICAgY29uc3QgeyBmaWxlUGF0aCwgY29sdW1ucywgaXRlbXMsIGZpbGVOYW1lIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgeyBzZEV4cG9ydEJ5VGVtcGxhdGUgfSA9IEFQSTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZnVuY3Rpb25Vcmx9JHtzZEV4cG9ydEJ5VGVtcGxhdGV9YDtcclxuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KHVybCwge1xyXG4gICAgICBmaWxlUGF0aCxcclxuICAgICAgY29sdW1ucyxcclxuICAgICAgaXRlbXMsXHJcbiAgICAgIGZpbGVOYW1lXHJcbiAgICB9LCBudWxsLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2Jhc2U2NCwnIH0pO1xyXG4gICAgU2RVdGlsaXR5LmRvd25sb2FkQmxvYihibG9iLCBmaWxlTmFtZSk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRDU1YgPSBhc3luYyAob3B0aW9uOiBJRXhwb3J0T3B0aW9uKSA9PiB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIGl0ZW1zLCBmaWxlTmFtZSB9ID0gb3B0aW9uO1xyXG4gICAgY29uc3QgaGVhZGVyQ1NWID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGhlYWRlckNTVltjb2x1bW4uZmllbGRdID0gY29sdW1uLnRpdGxlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY3N2RXhwb3J0ZXIgPSBuZXcgRXhwb3J0VG9Dc3Yoe1xyXG4gICAgICBmaWxlbmFtZTogYCR7ZmlsZU5hbWUgfHwgJ0NTVid9XyR7RGF0ZS50b0Zvcm1hdChuZXcgRGF0ZSgpLCAneXl5eS1NTS1kZC1ISC1tbS1zcycpfWAsXHJcbiAgICAgIGZpZWxkU2VwYXJhdG9yOiAnLCcsXHJcbiAgICAgIHF1b3RlU3RyaW5nczogJ1wiJyxcclxuICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJy4nLFxyXG4gICAgICBzaG93TGFiZWxzOiB0cnVlLFxyXG4gICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICB0aXRsZTogZmlsZU5hbWUgfHwgJ0NTVicsXHJcbiAgICAgIHVzZUJvbTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgY3N2RXhwb3J0ZXIuZ2VuZXJhdGVDc3YoW2hlYWRlckNTViwgLi4uaXRlbXNdKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydCA9IGFzeW5jIChvcHRpb246IElFeHBvcnRPcHRpb24pID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1ucywgaXRlbXMsIGZpbGVOYW1lLCBzaGVldHMgfSA9IG9wdGlvbjtcclxuICAgIGxldCBoYXNEZXNjcmlwdGlvbiA9IGZhbHNlO1xyXG4gICAgZm9yIChjb25zdCBbaWR4LCBjb2x1bW5dIG9mIGNvbHVtbnMuZW50cmllcygpKSB7XHJcbiAgICAgIGlmICghY29sdW1uLmZpZWxkKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb2x1bW4gJHtpZHggKyAxfTogRmllbGQgaXMgcmVxdWlyZWRgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWNvbHVtbi50aXRsZSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29sdW1uICR7aWR4ICsgMX06IFRpdGxlIGlzIHJlcXVpcmVkYCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbHVtbi5kZXNjcmlwdGlvbikge1xyXG4gICAgICAgIGhhc0Rlc2NyaXB0aW9uID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBuZXcgV29ya2Jvb2soKTsgLy9hd2FpdCBYbHN4UG9wdWxhdGUuZnJvbUJsYW5rQXN5bmMoKTsgLy8gxJDhu41jIGZpbGUgc2F1IGtoaSDEkcOjIGRvd25sb2FkXHJcbiAgICBjb25zdCBmaXJzdFNoZWV0ID0gd29ya2Jvb2suYWRkV29ya3NoZWV0KCdkYXRhJyk7IC8vIEzhuqV5IHJhIHNoZWV0IMSR4bqndSB0acOqblxyXG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiB7XHJcbiAgICAgIGxldCB3aWR0aCA9IDEyMDtcclxuICAgICAgaWYgKGNvbHVtbi53aWR0aCAmJiBjb2x1bW4ud2lkdGguZW5kc1dpdGgoJ3B4JykpIHtcclxuICAgICAgICB3aWR0aCA9ICtjb2x1bW4ud2lkdGgucmVwbGFjZSgncHgnLCAnJyk7XHJcbiAgICAgIH1cclxuICAgICAgZmlyc3RTaGVldC5nZXRDb2x1bW4oaW5kZXggKyAxKS53aWR0aCA9IHdpZHRoIC8gNyB8fCAyMDtcclxuICAgICAgZmlyc3RTaGVldC5nZXRDZWxsKDEsIGluZGV4ICsgMSkuc3R5bGUgPSB0aGlzLiNmaWVsZFN0eWxlXHJcbiAgICAgIGlmIChjb2x1bW4ucmVxdWlyZWQpIHtcclxuICAgICAgICBmaXJzdFNoZWV0LmdldENlbGwoMiwgaW5kZXggKyAxKS5zdHlsZSA9IHRoaXMuI3JlcXVpcmVkU3R5bGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmlyc3RTaGVldC5nZXRDZWxsKDIsIGluZGV4ICsgMSkuc3R5bGUgPSB0aGlzLiN0aXRsZVN0eWxlO1xyXG4gICAgICB9XHJcbiAgICAgIGZpcnN0U2hlZXQuZ2V0Q2VsbCgxLCBpbmRleCArIDEpLnZhbHVlID0gY29sdW1uLmZpZWxkO1xyXG4gICAgICBmaXJzdFNoZWV0LmdldENlbGwoMiwgaW5kZXggKyAxKS52YWx1ZSA9IGNvbHVtbi50aXRsZTtcclxuICAgICAgaWYgKGhhc0Rlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgZmlyc3RTaGVldC5nZXRDZWxsKDMsIGluZGV4ICsgMSkuc3R5bGUgPSB0aGlzLiNkZXNjcmlwdGlvblN0eWxlO1xyXG4gICAgICAgIGZpcnN0U2hlZXQuZ2V0Q2VsbCgzLCBpbmRleCArIDEpLnZhbHVlID0gY29sdW1uLmRlc2NyaXB0aW9uIHx8ICcnO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChzaGVldHM/Lmxlbmd0aCkge1xyXG4gICAgICBmb3IgKGNvbnN0IHNoZWV0IG9mIHNoZWV0cykge1xyXG4gICAgICAgIGlmIChzaGVldC5uYW1lICYmIEFycmF5LmlzQXJyYXkoc2hlZXQuaXRlbXMpICYmIEFycmF5LmlzQXJyYXkoc2hlZXQuZmllbGRzKSkge1xyXG4gICAgICAgICAgY29uc3QgbmV3U2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQoc2hlZXQubmFtZSk7XHJcbiAgICAgICAgICBzaGVldC5maWVsZHMuZm9yRWFjaCgoZmllbGQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIG5ld1NoZWV0LmdldENvbHVtbihpbmRleCArIDEpLndpZHRoID0gMzA7XHJcbiAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMSwgaW5kZXggKyAxKS5zdHlsZSA9IHRoaXMuI3RpdGxlU3R5bGU7XHJcbiAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMSwgaW5kZXggKyAxKS52YWx1ZSA9IGZpZWxkO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBzaGVldC5pdGVtcy5mb3JFYWNoKChpdGVtLCBpZHgxKSA9PiB7XHJcbiAgICAgICAgICAgIHNoZWV0LmZpZWxkcy5mb3JFYWNoKChmaWVsZCwgaWR4MikgPT4ge1xyXG4gICAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMiArIGlkeDEsIDEgKyBpZHgyKS52YWx1ZSA9IGl0ZW1bZmllbGRdO1xyXG4gICAgICAgICAgICAgIG5ld1NoZWV0LmdldENlbGwoMiArIGlkeDEsIDEgKyBpZHgyKS5zdHlsZSA9IHRoaXMuI2NlbGxTdHlsZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmcm9tUm93ID0gaGFzRGVzY3JpcHRpb24gPyA0IDogMztcclxuICAgIGl0ZW1zLmZvckVhY2goKGUsIGlkeDEpID0+IHtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4sIGlkeDIpID0+IHtcclxuICAgICAgICBpZiAoTnVtYmVyLmlzTnVtYmVyKGVbY29sdW1uLmZpZWxkXSkpIHtcclxuICAgICAgICAgIGZpcnN0U2hlZXQuZ2V0Q2VsbChmcm9tUm93ICsgaWR4MSwgMSArIGlkeDIpLnZhbHVlID0gK2VbY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgIGZpcnN0U2hlZXQuZ2V0Q2VsbChmcm9tUm93ICsgaWR4MSwgMSArIGlkeDIpLm51bUZtdCA9ICcjJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmlyc3RTaGVldC5nZXRDZWxsKGZyb21Sb3cgKyBpZHgxLCAxICsgaWR4MikudmFsdWUgPSBlW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpcnN0U2hlZXQuZ2V0Q2VsbChmcm9tUm93ICsgaWR4MSwgMSArIGlkeDIpLnN0eWxlID0gdGhpcy4jY2VsbFN0eWxlO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgZmlsZSA9IGF3YWl0IHdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKTtcclxuICAgIFNkVXRpbGl0eS5kb3dubG9hZEJsb2IobmV3IEJsb2IoW2ZpbGVdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcgfSksIGZpbGVOYW1lKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydEN1c3RvbSA9IGFzeW5jIChvcHRpb246IFNkRXhwb3J0Q3VzdG9tT3B0aW9uKSA9PiB7XHJcbiAgICBjb25zdCB7IGZpbGVOYW1lLCBzaGVldHMgfSA9IG9wdGlvbjtcclxuICAgIGlmICghc2hlZXRzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKCdQaOG6o2kgY8OzIMOtdCBuaOG6pXQgMSBzaGVldCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB3b3JrYm9vayA9IG5ldyBXb3JrYm9vaygpO1xyXG4gICAgZm9yIChjb25zdCBbaWR4LCBzaGVldF0gb2Ygc2hlZXRzLmVudHJpZXMoKSkge1xyXG4gICAgICBjb25zdCB7IG5hbWUsIGNvbHVtbnMsIGNlbGxzIH0gPSBzaGVldFxyXG4gICAgICBjb25zdCB3b3Jrc2hlZXQgPSB3b3JrYm9vay5hZGRXb3Jrc2hlZXQobmFtZSB8fCBgU2hlZXQgJHtpZHggKyAxfWApO1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiAoY29sdW1ucyB8fCBbXSkpIHtcclxuICAgICAgICB3b3Jrc2hlZXQuZ2V0Q29sdW1uKGNvbHVtbi5pbmRleCkuc3R5bGUgPSBjb2x1bW4uc3R5bGU7XHJcbiAgICAgICAgd29ya3NoZWV0LmdldENvbHVtbihjb2x1bW4uaW5kZXgpLndpZHRoID0gY29sdW1uLndpZHRoO1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAoY29uc3QgY2VsbCBvZiBjZWxscykge1xyXG4gICAgICAgIGNvbnN0IHsgcm93LCBjb2x1bW4sIHZhbHVlLCBzdHlsZSB9ID0gY2VsbDtcclxuICAgICAgICB3b3Jrc2hlZXQuZ2V0Q2VsbChyb3csIGNvbHVtbikuc3R5bGUgPSBzdHlsZSB8fCB3b3Jrc2hlZXQuZ2V0Q29sdW1uKGNvbHVtbikuc3R5bGU7XHJcbiAgICAgICAgd29ya3NoZWV0LmdldENlbGwocm93LCBjb2x1bW4pLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGZpbGUgPSBhd2FpdCB3b3JrYm9vay54bHN4LndyaXRlQnVmZmVyKCk7XHJcbiAgICBTZFV0aWxpdHkuZG93bmxvYWRCbG9iKG5ldyBCbG9iKFtmaWxlXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnIH0pLCBmaWxlTmFtZSk7XHJcbiAgfVxyXG5cclxuICBtZXJnZVBERiA9IGFzeW5jICh1cmxzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgY29uc3QgeyBzZE1lcmdlUERGIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmZ1bmN0aW9uVXJsfSR7c2RNZXJnZVBERn1gO1xyXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCB7XHJcbiAgICAgIHVybHNcclxuICAgIH0sIG51bGwsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInXHJcbiAgICB9KTtcclxuICAgIFNkVXRpbGl0eS5kb3dubG9hZEJsb2IobmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSkpO1xyXG4gIH1cclxufSJdfQ==